diff --git a/Bugzilla.pm b/Bugzilla.pm
index 0deb6e16e56e1ac328f6008c21e05df1275d9e85..99e5c3add52d276029c1fd05e5bc456e7157ce10 100644
--- a/Bugzilla.pm
+++ b/Bugzilla.pm
@@ -33,6 +33,66 @@ use Bugzilla::Constants;
 use Bugzilla::DB;
 use Bugzilla::Template;
 use Bugzilla::User;
+use Bugzilla::Error;
+use Bugzilla::Util;
+
+use File::Basename;
+
+#####################################################################
+# Constants
+#####################################################################
+
+# Scripts that are not stopped by shutdownhtml being in effect.
+use constant SHUTDOWNHTML_EXEMPT => [
+    'doeditparams.cgi',
+    'editparams.cgi',
+    'checksetup.pl',
+];
+
+#####################################################################
+# Global Code
+#####################################################################
+
+# If Bugzilla is shut down, do not allow anything to run, just display a
+# message to the user about the downtime and log out.  Scripts listed in 
+# SHUTDOWNHTML_EXEMPT are exempt from this message.
+#
+# This code must go here. It cannot go anywhere in Bugzilla::CGI, because
+# it uses Template, and that causes various dependency loops.
+if (Param("shutdownhtml") 
+    && lsearch(SHUTDOWNHTML_EXEMPT, basename($0)) == -1) 
+{
+    # For security reasons, log out users when Bugzilla is down.
+    # Bugzilla->login() is required to catch the logincookie, if any.
+    my $user = Bugzilla->login(LOGIN_OPTIONAL);
+    my $userid = $user->id;
+    Bugzilla->logout();
+
+    my $template = Bugzilla->template;
+    my $vars = {};
+    $vars->{'message'} = 'shutdown';
+    $vars->{'userid'} = $userid;
+    # Generate and return a message about the downtime, appropriately
+    # for if we're a command-line script or a CGI sript.
+    my $extension;
+    if (i_am_cgi() && (!Bugzilla->cgi->param('format') 
+                       || Bugzilla->cgi->param('format') eq 'html')) {
+        $extension = 'html';
+    }
+    else {
+        $extension = 'txt';
+    }
+    print Bugzilla->cgi->header() if i_am_cgi();
+    my $t_output;
+    $template->process("global/message.$extension.tmpl", $vars, \$t_output)
+        || ThrowTemplateError($template->error);
+    print $t_output . "\n";
+    exit;
+}
+
+#####################################################################
+# Subroutines and Methods
+#####################################################################
 
 my $_template;
 sub template {
diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm
index 4d223d633880ceee11875e297a121e38fa17fcb2..4a61154b78d069eb89f0572cb40a29b0284483f0 100644
--- a/Bugzilla/Attachment.pm
+++ b/Bugzilla/Attachment.pm
@@ -20,91 +20,384 @@
 # Contributor(s): Terry Weissman <terry@mozilla.org>
 #                 Myk Melez <myk@mozilla.org>
 
-############################################################################
-# Module Initialization
-############################################################################
-
 use strict;
 
 package Bugzilla::Attachment;
 
-# This module requires that its caller have said "require CGI.pl" to import
-# relevant functions from that script and its companion globals.pl.
+=head1 NAME
+
+Bugzilla::Attachment - a file related to a bug that a user has uploaded
+                       to the Bugzilla server
+
+=head1 SYNOPSIS
+
+  use Bugzilla::Attachment;
+
+  # Get the attachment with the given ID.
+  my $attachment = Bugzilla::Attachment->get($attach_id);
+
+  # Get the attachments with the given IDs.
+  my $attachments = Bugzilla::Attachment->get_list($attach_ids);
+
+=head1 DESCRIPTION
+
+This module defines attachment objects, which represent files related to bugs
+that users upload to the Bugzilla server.
+
+=cut
+
+# This module requires that its caller have said "require globals.pl"
+# to import relevant functions from that script.
 
-# Use the Flag module to handle flags.
 use Bugzilla::Flag;
 use Bugzilla::Config qw(:locations);
 use Bugzilla::User;
 
-############################################################################
-# Functions
-############################################################################
-
-sub new {
-    # Returns a hash of information about the attachment with the given ID.
+sub get {
+    my $invocant = shift;
+    my $id = shift;
 
-    my ($invocant, $id) = @_;
-    return undef if !$id;
-    my $self = { 'id' => $id };
-    my $class = ref($invocant) || $invocant;
-    bless($self, $class);
-    
-    &::PushGlobalSQLState();
-    &::SendSQL("SELECT 1, description, bug_id, isprivate FROM attachments " . 
-               "WHERE attach_id = $id");
-    ($self->{'exists'},
-     $self->{'summary'},
-     $self->{'bug_id'},
-     $self->{'isprivate'}) = &::FetchSQLData();
-    &::PopGlobalSQLState();
+    my $attachments = _retrieve([$id]);
+    my $self = $attachments->[0];
+    bless($self, ref($invocant) || $invocant) if $self;
 
     return $self;
 }
 
-sub query
-{
-  # Retrieves and returns an array of attachment records for a given bug. 
-  # This data should be given to attachment/list.html.tmpl in an
-  # "attachments" variable.
-  my ($bugid) = @_;
-
-  my $dbh = Bugzilla->dbh;
-
-  # Retrieve a list of attachments for this bug and write them into an array
-  # of hashes in which each hash represents a single attachment.
-  my $list = $dbh->selectall_arrayref("SELECT attach_id, " .
-                                      $dbh->sql_date_format('creation_ts', '%Y.%m.%d %H:%i') .
-                                      ", mimetype, description, ispatch,
-                                      isobsolete, isprivate, LENGTH(thedata)
-                                      FROM attachments
-                                      WHERE bug_id = ? ORDER BY attach_id",
-                                      undef, $bugid);
-
-  my @attachments = ();
-  foreach my $row (@$list) {
-    my %a;
-    ($a{'attachid'}, $a{'date'}, $a{'contenttype'},
-     $a{'description'}, $a{'ispatch'}, $a{'isobsolete'},
-     $a{'isprivate'}, $a{'datasize'}) = @$row;
-
-    # Retrieve a list of flags for this attachment.
-    $a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'},
-                                          'is_active' => 1 });
-
-    # A zero size indicates that the attachment is stored locally.
-    if ($a{'datasize'} == 0) {
-        my $attachid = $a{'attachid'};
-        my $hash = ($attachid % 100) + 100;
-        $hash =~ s/.*(\d\d)$/group.$1/;
-        if (open(AH, "$attachdir/$hash/attachment.$attachid")) {
-            $a{'datasize'} = (stat(AH))[7];
+sub get_list {
+    my $invocant = shift;
+    my $ids = shift;
+
+    my $attachments = _retrieve($ids);
+    foreach my $attachment (@$attachments) {
+        bless($attachment, ref($invocant) || $invocant);
+    }
+
+    return $attachments;
+}
+
+sub _retrieve {
+    my ($ids) = @_;
+
+    return [] if scalar(@$ids) == 0;
+
+    my @columns = (
+        'attachments.attach_id AS id',
+        'attachments.bug_id AS bug_id',
+        'attachments.description AS description',
+        'attachments.mimetype AS contenttype',
+        'attachments.submitter_id AS _attacher_id',
+        Bugzilla->dbh->sql_date_format('attachments.creation_ts',
+                                       '%Y.%m.%d %H:%i') . " AS attached",
+        'attachments.filename AS filename',
+        'attachments.ispatch AS ispatch',
+        'attachments.isobsolete AS isobsolete',
+        'attachments.isprivate AS isprivate'
+    );
+    my $columns = join(", ", @columns);
+
+    my $records = Bugzilla->dbh->selectall_arrayref("SELECT $columns
+                                                     FROM attachments
+                                                     WHERE attach_id IN (" .
+                                                     join(",", @$ids) . ")",
+                                                    { Slice => {} });
+    return $records;
+}
+
+=pod
+
+=head2 Instance Properties
+
+=over
+
+=item C<id>
+
+the unique identifier for the attachment
+
+=back
+
+=cut
+
+sub id {
+    my $self = shift;
+    return $self->{id};
+}
+
+=over
+
+=item C<bug_id>
+
+the ID of the bug to which the attachment is attached
+
+=back
+
+=cut
+
+# XXX Once Bug.pm slims down sufficiently this should become a reference
+# to a bug object.
+sub bug_id {
+    my $self = shift;
+    return $self->{bug_id};
+}
+
+=over
+
+=item C<description>
+
+user-provided text describing the attachment
+
+=back
+
+=cut
+
+sub description {
+    my $self = shift;
+    return $self->{description};
+}
+
+=over
+
+=item C<contenttype>
+
+the attachment's MIME media type
+
+=back
+
+=cut
+
+sub contenttype {
+    my $self = shift;
+    return $self->{contenttype};
+}
+
+=over
+
+=item C<attacher>
+
+the user who attached the attachment
+
+=back
+
+=cut
+
+sub attacher {
+    my $self = shift;
+    return $self->{attacher} if exists $self->{attacher};
+    $self->{attacher} = new Bugzilla::User($self->{_attacher_id});
+    return $self->{attacher};
+}
+
+=over
+
+=item C<attached>
+
+the date and time on which the attacher attached the attachment
+
+=back
+
+=cut
+
+sub attached {
+    my $self = shift;
+    return $self->{attached};
+}
+
+=over
+
+=item C<filename>
+
+the name of the file the attacher attached
+
+=back
+
+=cut
+
+sub filename {
+    my $self = shift;
+    return $self->{filename};
+}
+
+=over
+
+=item C<ispatch>
+
+whether or not the attachment is a patch
+
+=back
+
+=cut
+
+sub ispatch {
+    my $self = shift;
+    return $self->{ispatch};
+}
+
+=over
+
+=item C<isobsolete>
+
+whether or not the attachment is obsolete
+
+=back
+
+=cut
+
+sub isobsolete {
+    my $self = shift;
+    return $self->{isobsolete};
+}
+
+=over
+
+=item C<isprivate>
+
+whether or not the attachment is private
+
+=back
+
+=cut
+
+sub isprivate {
+    my $self = shift;
+    return $self->{isprivate};
+}
+
+=over
+
+=item C<data>
+
+the content of the attachment
+
+=back
+
+=cut
+
+sub data {
+    my $self = shift;
+    return $self->{data} if exists $self->{data};
+
+    # First try to get the attachment data from the database.
+    ($self->{data}) = Bugzilla->dbh->selectrow_array("SELECT thedata
+                                                      FROM attach_data
+                                                      WHERE id = ?",
+                                                     undef,
+                                                     $self->{id});
+
+    # If there's no attachment data in the database, the attachment is stored
+    # in a local file, so retrieve it from there.
+    if (length($self->{data}) == 0) {
+        if (open(AH, $self->_get_local_filename())) {
+            binmode AH;
+            $self->{data} = <AH>;
             close(AH);
         }
     }
-    push @attachments, \%a;
-  }
+    
+    return $self->{data};
+}
+
+=over
+
+=item C<datasize>
+
+the length (in characters) of the attachment content
+
+=back
+
+=cut
+
+# datasize is a property of the data itself, and it's unclear whether we should
+# expose it at all, since you can easily derive it from the data itself: in TT,
+# attachment.data.size; in Perl, length($attachment->{data}).  But perhaps
+# it makes sense for performance reasons, since accessing the data forces it
+# to get retrieved from the database/filesystem and loaded into memory,
+# while datasize avoids loading the attachment into memory, calling SQL's
+# LENGTH() function or stat()ing the file instead.  I've left it in for now.
+
+sub datasize {
+    my $self = shift;
+    return $self->{datasize} if exists $self->{datasize};
+
+    # If we have already retrieved the data, return its size.
+    return length($self->{data}) if exists $self->{data};
+
+    ($self->{datasize}) =
+        Bugzilla->dbh->selectrow_array("SELECT LENGTH(thedata)
+                                        FROM attach_data
+                                        WHERE id = ?",
+                                       undef,
+                                       $self->{id});
+
+    # If there's no attachment data in the database, the attachment
+    # is stored in a local file, so retrieve its size from the file.
+    if ($self->{datasize} == 0) {
+        if (open(AH, $self->_get_local_filename())) {
+            binmode AH;
+            $self->{datasize} = (stat(AH))[7];
+            close(AH);
+        }
+    }
+
+    return $self->{datasize};
+}
+
+=over
+
+=item C<flags>
+
+flags that have been set on the attachment
+
+=back
+
+=cut
+
+sub flags {
+    my $self = shift;
+    return $self->{flags} if exists $self->{flags};
+
+    $self->{flags} = Bugzilla::Flag::match({ attach_id => $self->id,
+                                             is_active => 1 });
+    return $self->{flags};
+}
+
+# Instance methods; no POD documentation here yet because the only one so far
+# is private.
+
+sub _get_local_filename {
+    my $self = shift;
+    my $hash = ($self->id % 100) + 100;
+    $hash =~ s/.*(\d\d)$/group.$1/;
+    return "$attachdir/$hash/attachment." . $self->id;
+}
+
+=pod
+
+=head2 Class Methods
+
+=over
+
+=item C<get_attachments_by_bug($bug_id)>
+
+Description: retrieves and returns the attachments for the given bug.
+
+Params:     C<$bug_id> - integer - the ID of the bug for which
+            to retrieve and return attachments.
+
+Returns:    a reference to an array of attachment objects.
+
+=back
+
+=cut
 
-  return \@attachments;  
+sub get_attachments_by_bug {
+    my ($class, $bug_id) = @_;
+    my $attach_ids = Bugzilla->dbh->selectcol_arrayref("SELECT attach_id
+                                                        FROM attachments
+                                                        WHERE bug_id = ?
+                                                        ORDER BY attach_id",
+                                                       undef, $bug_id);
+    my $attachments = Bugzilla::Attachment->get_list($attach_ids);
+    return $attachments;
 }
 
 1;
diff --git a/Bugzilla/Auth/CVS/Entries b/Bugzilla/Auth/CVS/Entries
index 51770adbdf4f572e6d8ba35af2db82e2b9deaa75..f00cee7e9cd43e337842baaf7167a12e411d1108 100644
--- a/Bugzilla/Auth/CVS/Entries
+++ b/Bugzilla/Auth/CVS/Entries
@@ -1,3 +1,3 @@
-/README/1.2/Thu Jul 29 02:45:38 2004//TBUGZILLA-2_20
+/README/1.2/Thu Jul 29 02:45:38 2004//TBUGZILLA-2_21_1
 D/Login////
 D/Verify////
diff --git a/Bugzilla/Auth/CVS/Tag b/Bugzilla/Auth/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/Auth/CVS/Tag
+++ b/Bugzilla/Auth/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Auth/Login/CVS/Entries b/Bugzilla/Auth/Login/CVS/Entries
index baffa44b2df277554878034818337449e1194e39..64dfd200611f6d6527c4c0376cc9cc4a12172b0a 100644
--- a/Bugzilla/Auth/Login/CVS/Entries
+++ b/Bugzilla/Auth/Login/CVS/Entries
@@ -1,2 +1,2 @@
-/WWW.pm/1.6.4.1/Wed Jul 27 19:08:42 2005//TBUGZILLA-2_20
+/WWW.pm/1.7/Tue Jul 26 14:09:47 2005//TBUGZILLA-2_21_1
 D/WWW////
diff --git a/Bugzilla/Auth/Login/CVS/Tag b/Bugzilla/Auth/Login/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/Auth/Login/CVS/Tag
+++ b/Bugzilla/Auth/Login/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries b/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries
index 2fee5f9ab8d472d6742804eeb0c8ef0940f8ebe5..648020efdacf6a81eb4f2531189ce8f33b4fbd9f 100644
--- a/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries
+++ b/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries
@@ -1,2 +1,2 @@
-/Cookie.pm/1.3/Tue Mar 22 22:41:07 2005//TBUGZILLA-2_20
+/Cookie.pm/1.3/Tue Mar 22 22:41:07 2005//TBUGZILLA-2_21_1
 D
diff --git a/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag b/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag
+++ b/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Auth/Login/WWW/CVS/Entries b/Bugzilla/Auth/Login/WWW/CVS/Entries
index 278027edc4932f96e7f39d445a224e9fdbcd7c36..13cf37503b72311909fbf01350d169e2d9b9830d 100644
--- a/Bugzilla/Auth/Login/WWW/CVS/Entries
+++ b/Bugzilla/Auth/Login/WWW/CVS/Entries
@@ -1,3 +1,3 @@
-/CGI.pm/1.12/Fri Jul  8 04:48:47 2005//TBUGZILLA-2_20
-/Env.pm/1.4.2.1/Tue Jul 26 14:57:04 2005//TBUGZILLA-2_20
+/CGI.pm/1.12/Fri Jul  8 04:48:47 2005//TBUGZILLA-2_21_1
+/Env.pm/1.6/Thu Aug 18 20:09:37 2005//TBUGZILLA-2_21_1
 D/CGI////
diff --git a/Bugzilla/Auth/Login/WWW/CVS/Tag b/Bugzilla/Auth/Login/WWW/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/Auth/Login/WWW/CVS/Tag
+++ b/Bugzilla/Auth/Login/WWW/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Auth/Login/WWW/Env.pm b/Bugzilla/Auth/Login/WWW/Env.pm
index 39bea28dfd7b0976d1133b5e444523b4c057e80e..64487884c0753cdb22d68eaddc1ed92368c0eaac 100644
--- a/Bugzilla/Auth/Login/WWW/Env.pm
+++ b/Bugzilla/Auth/Login/WWW/Env.pm
@@ -38,6 +38,7 @@ sub login {
     my $matched_userid    = '';
     my $matched_extern_id = '';
     my $disabledtext      = '';
+    my $new_login_name = 0;
 
     my $dbh = Bugzilla->dbh;
     my $sth;
@@ -122,6 +123,7 @@ sub login {
                                      ") VALUES ( ?, ?, ?, '' )");
                 $sth->execute($env_email, '*', $env_realname);
                 $matched_userid = $dbh->bz_last_key('profiles', 'userid');
+                $new_login_name = $matched_userid;
             }
         }
     }
@@ -147,9 +149,16 @@ sub login {
                           ($env_realname || $this_realname),
                           $matched_userid);
             $sth->execute;
+            $new_login_name = $matched_userid;
         }
     }
 
+    # If the login name may be new, make sure the regexp groups are current
+    if ($new_login_name) {
+        my $userprofile = new Bugzilla::User($matched_userid);
+        $userprofile->derive_regexp_groups;
+    }
+
     # Now we throw an error if the user has been disabled
     if ($disabledtext) {
         ThrowUserError("account_disabled",
diff --git a/Bugzilla/Auth/Verify/CVS/Entries b/Bugzilla/Auth/Verify/CVS/Entries
index 4eb3d7ce7c7fded0f8f4727bde69d4d92d58aaff..dfded72f5856a0e80f6315c8ded7f5b78e44a502 100644
--- a/Bugzilla/Auth/Verify/CVS/Entries
+++ b/Bugzilla/Auth/Verify/CVS/Entries
@@ -1,3 +1,3 @@
-/DB.pm/1.5.2.1/Wed Jul 13 04:02:21 2005//TBUGZILLA-2_20
-/LDAP.pm/1.6/Fri Jul  8 02:31:42 2005//TBUGZILLA-2_20
+/DB.pm/1.6/Wed Jul 13 03:57:02 2005//TBUGZILLA-2_21_1
+/LDAP.pm/1.6/Fri Jul  8 02:31:42 2005//TBUGZILLA-2_21_1
 D
diff --git a/Bugzilla/Auth/Verify/CVS/Tag b/Bugzilla/Auth/Verify/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/Auth/Verify/CVS/Tag
+++ b/Bugzilla/Auth/Verify/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index 3a9a64ddc021b0ed0dfc0295920da33d94c33966..b9206b9a045bc3dc6771d56625db3d2f8c401969 100755
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -36,11 +36,11 @@ use vars qw($legal_keywords @legal_platform
 
 use CGI::Carp qw(fatalsToBrowser);
 
-use Bugzilla;
 use Bugzilla::Attachment;
 use Bugzilla::BugMail;
 use Bugzilla::Config;
 use Bugzilla::Constants;
+use Bugzilla::Field;
 use Bugzilla::Flag;
 use Bugzilla::FlagType;
 use Bugzilla::User;
@@ -50,12 +50,24 @@ use Bugzilla::Error;
 use base qw(Exporter);
 @Bugzilla::Bug::EXPORT = qw(
     AppendComment ValidateComment
-    bug_alias_to_id ValidateBugAlias
+    bug_alias_to_id ValidateBugAlias ValidateBugID
     RemoveVotes CheckIfVotedConfirmed
+    LogActivityEntry
 );
 
+#####################################################################
+# Constants
+#####################################################################
+
+# Used in LogActivityEntry(). Gives the max length of lines in the
+# activity table.
+use constant MAX_LINE_LENGTH => 254;
+
+# Used in ValidateComment(). Gives the max length allowed for a comment.
 use constant MAX_COMMENT_LENGTH => 65535;
 
+#####################################################################
+
 sub fields {
     # Keep this ordering in sync with bugzilla.dtd
     my @fields = qw(bug_id alias creation_ts short_desc delta_ts
@@ -327,7 +339,7 @@ sub actual_time {
     return $self->{'actual_time'};
 }
 
-sub any_flags_requesteeble () {
+sub any_flags_requesteeble {
     my ($self) = @_;
     return $self->{'any_flags_requesteeble'} 
         if exists $self->{'any_flags_requesteeble'};
@@ -339,15 +351,17 @@ sub any_flags_requesteeble () {
     return $self->{'any_flags_requesteeble'};
 }
 
-sub attachments () {
+sub attachments {
     my ($self) = @_;
     return $self->{'attachments'} if exists $self->{'attachments'};
     return [] if $self->{'error'};
-    $self->{'attachments'} = Bugzilla::Attachment::query($self->{bug_id});
+
+    $self->{'attachments'} =
+        Bugzilla::Attachment->get_attachments_by_bug($self->bug_id);
     return $self->{'attachments'};
 }
 
-sub assigned_to () {
+sub assigned_to {
     my ($self) = @_;
     return $self->{'assigned_to'} if exists $self->{'assigned_to'};
     $self->{'assigned_to_id'} = 0 if $self->{'error'};
@@ -355,7 +369,7 @@ sub assigned_to () {
     return $self->{'assigned_to'};
 }
 
-sub blocked () {
+sub blocked {
     my ($self) = @_;
     return $self->{'blocked'} if exists $self->{'blocked'};
     return [] if $self->{'error'};
@@ -366,7 +380,7 @@ sub blocked () {
 # Even bugs in an error state always have a bug_id.
 sub bug_id { $_[0]->{'bug_id'}; }
 
-sub cc () {
+sub cc {
     my ($self) = @_;
     return $self->{'cc'} if exists $self->{'cc'};
     return [] if $self->{'error'};
@@ -384,7 +398,7 @@ sub cc () {
     return $self->{'cc'};
 }
 
-sub dependson () {
+sub dependson {
     my ($self) = @_;
     return $self->{'dependson'} if exists $self->{'dependson'};
     return [] if $self->{'error'};
@@ -393,7 +407,7 @@ sub dependson () {
     return $self->{'dependson'};
 }
 
-sub flag_types () {
+sub flag_types {
     my ($self) = @_;
     return $self->{'flag_types'} if exists $self->{'flag_types'};
     return [] if $self->{'error'};
@@ -418,7 +432,7 @@ sub flag_types () {
     return $self->{'flag_types'};
 }
 
-sub keywords () {
+sub keywords {
     my ($self) = @_;
     return $self->{'keywords'} if exists $self->{'keywords'};
     return () if $self->{'error'};
@@ -444,7 +458,7 @@ sub longdescs {
     return $self->{'longdescs'};
 }
 
-sub milestoneurl () {
+sub milestoneurl {
     my ($self) = @_;
     return $self->{'milestoneurl'} if exists $self->{'milestoneurl'};
     return '' if $self->{'error'};
@@ -452,7 +466,7 @@ sub milestoneurl () {
     return $self->{'milestoneurl'};
 }
 
-sub qa_contact () {
+sub qa_contact {
     my ($self) = @_;
     return $self->{'qa_contact'} if exists $self->{'qa_contact'};
     return undef if $self->{'error'};
@@ -468,7 +482,7 @@ sub qa_contact () {
     return $self->{'qa_contact'};
 }
 
-sub reporter () {
+sub reporter {
     my ($self) = @_;
     return $self->{'reporter'} if exists $self->{'reporter'};
     $self->{'reporter_id'} = 0 if $self->{'error'};
@@ -477,7 +491,7 @@ sub reporter () {
 }
 
 
-sub show_attachment_flags () {
+sub show_attachment_flags {
     my ($self) = @_;
     return $self->{'show_attachment_flags'} 
         if exists $self->{'show_attachment_flags'};
@@ -530,25 +544,22 @@ sub groups {
     # user_group_map record putting the user in that group.
     # The LEFT JOINs are checking for record existence.
     #
+    my $grouplist = Bugzilla->user->groups_as_string;
     my $sth = $dbh->prepare(
              "SELECT DISTINCT groups.id, name, description," .
              " bug_group_map.group_id IS NOT NULL," .
-             " user_group_map.group_id IS NOT NULL," .
+             " CASE WHEN groups.id IN($grouplist) THEN 1 ELSE 0 END," .
              " isactive, membercontrol, othercontrol" .
              " FROM groups" . 
              " LEFT JOIN bug_group_map" .
              " ON bug_group_map.group_id = groups.id" .
              " AND bug_id = ?" .
-             " LEFT JOIN user_group_map" .
-             " ON user_group_map.group_id = groups.id" .
-             " AND user_id = ?" .
-             " AND isbless = 0" .
              " LEFT JOIN group_control_map" .
              " ON group_control_map.group_id = groups.id" .
              " AND group_control_map.product_id = ? " .
              " WHERE isbuggroup = 1" .
              " ORDER BY description");
-    $sth->execute($self->{'bug_id'}, Bugzilla->user->id,
+    $sth->execute($self->{'bug_id'},
                   $self->{'product_id'});
 
     while (my ($groupid, $name, $description, $ison, $ingroup, $isactive,
@@ -681,7 +692,7 @@ sub choices {
 # the alias.
 # Queries the database for the bug with a given alias, and returns
 # the ID of the bug if it exists or the undefined value if it doesn't.
-sub bug_alias_to_id ($) {
+sub bug_alias_to_id {
     my ($alias) = @_;
     return undef unless Param("usebugaliases");
     my $dbh = Bugzilla->dbh;
@@ -694,7 +705,7 @@ sub bug_alias_to_id ($) {
 # Subroutines
 #####################################################################
 
-sub AppendComment ($$$;$$$) {
+sub AppendComment {
     my ($bugid, $whoid, $comment, $isprivate, $timestamp, $work_time) = @_;
     $work_time ||= 0;
     my $dbh = Bugzilla->dbh;
@@ -804,6 +815,155 @@ sub GetComments {
     return \@comments;
 }
 
+# Get the activity of a bug, starting from $starttime (if given).
+# This routine assumes ValidateBugID has been previously called.
+sub GetBugActivity {
+    my ($id, $starttime) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    # Arguments passed to the SQL query.
+    my @args = ($id);
+
+    # Only consider changes since $starttime, if given.
+    my $datepart = "";
+    if (defined $starttime) {
+        trick_taint($starttime);
+        push (@args, $starttime);
+        $datepart = "AND bugs_activity.bug_when > ?";
+    }
+
+    # Only includes attachments the user is allowed to see.
+    my $suppjoins = "";
+    my $suppwhere = "";
+    if (Param("insidergroup") && !UserInGroup(Param('insidergroup'))) {
+        $suppjoins = "LEFT JOIN attachments 
+                   ON attachments.attach_id = bugs_activity.attach_id";
+        $suppwhere = "AND COALESCE(attachments.isprivate, 0) = 0";
+    }
+
+    my $query = "
+        SELECT COALESCE(fielddefs.description, " 
+               # This is a hack - PostgreSQL requires both COALESCE
+               # arguments to be of the same type, and this is the only
+               # way supported by both MySQL 3 and PostgreSQL to convert
+               # an integer to a string. MySQL 4 supports CAST.
+               . $dbh->sql_string_concat('bugs_activity.fieldid', q{''}) .
+               "), fielddefs.name, bugs_activity.attach_id, " .
+        $dbh->sql_date_format('bugs_activity.bug_when', '%Y.%m.%d %H:%i:%s') .
+            ", bugs_activity.removed, bugs_activity.added, profiles.login_name
+          FROM bugs_activity
+               $suppjoins
+     LEFT JOIN fielddefs
+            ON bugs_activity.fieldid = fielddefs.fieldid
+    INNER JOIN profiles
+            ON profiles.userid = bugs_activity.who
+         WHERE bugs_activity.bug_id = ?
+               $datepart
+               $suppwhere
+      ORDER BY bugs_activity.bug_when";
+
+    my $list = $dbh->selectall_arrayref($query, undef, @args);
+
+    my @operations;
+    my $operation = {};
+    my $changes = [];
+    my $incomplete_data = 0;
+
+    foreach my $entry (@$list) {
+        my ($field, $fieldname, $attachid, $when, $removed, $added, $who) = @$entry;
+        my %change;
+        my $activity_visible = 1;
+
+        # check if the user should see this field's activity
+        if ($fieldname eq 'remaining_time'
+            || $fieldname eq 'estimated_time'
+            || $fieldname eq 'work_time'
+            || $fieldname eq 'deadline')
+        {
+            $activity_visible = UserInGroup(Param('timetrackinggroup')) ? 1 : 0;
+        } else {
+            $activity_visible = 1;
+        }
+
+        if ($activity_visible) {
+            # This gets replaced with a hyperlink in the template.
+            $field =~ s/^Attachment// if $attachid;
+
+            # Check for the results of an old Bugzilla data corruption bug
+            $incomplete_data = 1 if ($added =~ /^\?/ || $removed =~ /^\?/);
+
+            # An operation, done by 'who' at time 'when', has a number of
+            # 'changes' associated with it.
+            # If this is the start of a new operation, store the data from the
+            # previous one, and set up the new one.
+            if ($operation->{'who'}
+                && ($who ne $operation->{'who'}
+                    || $when ne $operation->{'when'}))
+            {
+                $operation->{'changes'} = $changes;
+                push (@operations, $operation);
+
+                # Create new empty anonymous data structures.
+                $operation = {};
+                $changes = [];
+            }
+
+            $operation->{'who'} = $who;
+            $operation->{'when'} = $when;
+
+            $change{'field'} = $field;
+            $change{'fieldname'} = $fieldname;
+            $change{'attachid'} = $attachid;
+            $change{'removed'} = $removed;
+            $change{'added'} = $added;
+            push (@$changes, \%change);
+        }
+    }
+
+    if ($operation->{'who'}) {
+        $operation->{'changes'} = $changes;
+        push (@operations, $operation);
+    }
+
+    return(\@operations, $incomplete_data);
+}
+
+# Update the bugs_activity table to reflect changes made in bugs.
+sub LogActivityEntry {
+    my ($i, $col, $removed, $added, $whoid, $timestamp) = @_;
+    my $dbh = Bugzilla->dbh;
+    # in the case of CCs, deps, and keywords, there's a possibility that someone
+    # might try to add or remove a lot of them at once, which might take more
+    # space than the activity table allows.  We'll solve this by splitting it
+    # into multiple entries if it's too long.
+    while ($removed || $added) {
+        my ($removestr, $addstr) = ($removed, $added);
+        if (length($removestr) > MAX_LINE_LENGTH) {
+            my $commaposition = find_wrap_point($removed, MAX_LINE_LENGTH);
+            $removestr = substr($removed, 0, $commaposition);
+            $removed = substr($removed, $commaposition);
+            $removed =~ s/^[,\s]+//; # remove any comma or space
+        } else {
+            $removed = ""; # no more entries
+        }
+        if (length($addstr) > MAX_LINE_LENGTH) {
+            my $commaposition = find_wrap_point($added, MAX_LINE_LENGTH);
+            $addstr = substr($added, 0, $commaposition);
+            $added = substr($added, $commaposition);
+            $added =~ s/^[,\s]+//; # remove any comma or space
+        } else {
+            $added = ""; # no more entries
+        }
+        trick_taint($addstr);
+        trick_taint($removestr);
+        my $fieldid = get_field_id($col);
+        $dbh->do("INSERT INTO bugs_activity
+                  (bug_id, who, bug_when, fieldid, removed, added)
+                  VALUES (?, ?, ?, ?, ?, ?)",
+                  undef, ($i, $whoid, $timestamp, $fieldid, $removestr, $addstr));
+    }
+}
+
 # CountOpenDependencies counts the number of open dependent bugs for a
 # list of bugs and returns a list of bug_id's and their dependency count
 # It takes one parameter:
@@ -830,7 +990,7 @@ sub CountOpenDependencies {
     return @dependencies;
 }
 
-sub ValidateComment ($) {
+sub ValidateComment {
     my ($comment) = @_;
 
     if (defined($comment) && length($comment) > MAX_COMMENT_LENGTH) {
@@ -918,7 +1078,7 @@ sub RemoveVotes {
 
             $substs{"count"} = $removedvotes . "\n    " . $newvotestext;
 
-            my $msg = PerformSubsts(Param("voteremovedmail"), \%substs);
+            my $msg = perform_substs(Param("voteremovedmail"), \%substs);
             Bugzilla::BugMail::MessageToMTA($msg);
         }
         my $votes = $dbh->selectrow_array("SELECT SUM(vote_count) " .
@@ -946,7 +1106,7 @@ sub CheckIfVotedConfirmed {
     my $ret = 0;
     if ($votes >= $votestoconfirm && !$everconfirmed) {
         if ($status eq 'UNCONFIRMED') {
-            my $fieldid = &::GetFieldID("bug_status");
+            my $fieldid = get_field_id("bug_status");
             $dbh->do("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1, " .
                      "delta_ts = ? WHERE bug_id = ?",
                      undef, ($timestamp, $id));
@@ -960,7 +1120,7 @@ sub CheckIfVotedConfirmed {
                      "WHERE bug_id = ?", undef, ($timestamp, $id));
         }
 
-        my $fieldid = &::GetFieldID("everconfirmed");
+        my $fieldid = get_field_id("everconfirmed");
         $dbh->do("INSERT INTO bugs_activity " .
                  "(bug_id, who, bug_when, fieldid, removed, added) " .
                  "VALUES (?, ?, ?, ?, ?, ?)",
@@ -979,6 +1139,50 @@ sub CheckIfVotedConfirmed {
 # Field Validation
 #
 
+# Validates and verifies a bug ID, making sure the number is a 
+# positive integer, that it represents an existing bug in the
+# database, and that the user is authorized to access that bug.
+# We detaint the number here, too.
+sub ValidateBugID {
+    my ($id, $field) = @_;
+    my $dbh = Bugzilla->dbh;
+    my $user = Bugzilla->user;
+
+    # Get rid of white-space around the ID.
+    $id = trim($id);
+    
+    # If the ID isn't a number, it might be an alias, so try to convert it.
+    my $alias = $id;
+    if (!detaint_natural($id)) {
+        $id = bug_alias_to_id($alias);
+        $id || ThrowUserError("invalid_bug_id_or_alias",
+                              {'bug_id' => $alias,
+                               'field'  => $field });
+    }
+    
+    # Modify the calling code's original variable to contain the trimmed,
+    # converted-from-alias ID.
+    $_[0] = $id;
+    
+    # First check that the bug exists
+    $dbh->selectrow_array("SELECT bug_id FROM bugs WHERE bug_id = ?", undef, $id)
+      || ThrowUserError("invalid_bug_id_non_existent", {'bug_id' => $id});
+
+    return if (defined $field && ($field eq "dependson" || $field eq "blocked"));
+    
+    return if $user->can_see_bug($id);
+
+    # The user did not pass any of the authorization tests, which means they
+    # are not authorized to see the bug.  Display an error and stop execution.
+    # The error the user sees depends on whether or not they are logged in
+    # (i.e. $user->id contains the user's positive integer ID).
+    if ($user->id) {
+        ThrowUserError("bug_access_denied", {'bug_id' => $id});
+    } else {
+        ThrowUserError("bug_access_query", {'bug_id' => $id});
+    }
+}
+
 # ValidateBugAlias:
 #   Check that the bug alias is valid and not used by another bug.  If 
 #   curr_id is specified, verify the alias is not used for any other
@@ -1027,7 +1231,7 @@ sub ValidateBugAlias {
 }
 
 # Validate and return a hash of dependencies
-sub ValidateDependencies($$$) {
+sub ValidateDependencies {
     my $fields = {};
     $fields->{'dependson'} = shift;
     $fields->{'blocked'} = shift;
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index c0fc7d882953ba1212bfdf2faafb921b8fdb1320..f1a47a3a3321d656870be1c5dda4aa7dd927c16f 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -26,23 +26,26 @@
 #                 Bradley Baetz <bbaetz@student.usyd.edu.au>
 #                 J. Paul Reed <preed@sigkill.com>
 #                 Gervase Markham <gerv@gerv.net>
+#                 Byron Jones <bugzilla@glob.com.au>
 
 use strict;
 
 package Bugzilla::BugMail;
 
-use base qw(Exporter);
-@Bugzilla::BugMail::EXPORT = qw(
-    PerformSubsts
-);
-
+use Bugzilla::DB qw(:deprecated);
+use Bugzilla::User;
 use Bugzilla::Constants;
 use Bugzilla::Config qw(:DEFAULT $datadir);
 use Bugzilla::Util;
-use Bugzilla::User;
 
+use Date::Parse;
+use Date::Format;
 use Mail::Mailer;
 use Mail::Header;
+use MIME::Base64;
+use MIME::QuotedPrint;
+use MIME::Parser;
+use Mail::Address;
 
 # We need these strings for the X-Bugzilla-Reasons header
 # Note: this hash uses "," rather than "=>" to avoid auto-quoting of the LHS.
@@ -64,20 +67,6 @@ if ($2) {
     $sitespec = "-$2$sitespec"; # Put the port number back in, before the '@'
 }
 
-# I got sick of adding &:: to everything.
-# However, 'Yuck!'
-# I can't require, cause that pulls it in only once, so it won't then be
-# in the global package, and these aren't modules, so I can't use globals.pl
-# Remove this evilness once our stuff uses real packages.
-sub AUTOLOAD {
-    no strict 'refs';
-    use vars qw($AUTOLOAD);
-    my $subName = $AUTOLOAD;
-    $subName =~ s/.*::/::/; # remove package name
-    *$AUTOLOAD = \&$subName;
-    goto &$AUTOLOAD;
-}
-
 # This is run when we load the package
 if (open(NOMAIL, '<', "$datadir/nomail")) {
     while (<NOMAIL>) {
@@ -117,17 +106,17 @@ END
 # All the names are email addresses, not userids
 # values are scalars, except for cc, which is a list
 # This hash usually comes from the "mailrecipients" var in a template call.
-sub Send($;$) {
+sub Send {
     my ($id, $forced) = (@_);
 
     # This only works in a sub. Probably something to do with the
     # require abuse we do.
-    GetVersionTable();
+    &::GetVersionTable();
 
     return ProcessOneBug($id, $forced);
 }
 
-sub ProcessOneBug($$) {
+sub ProcessOneBug {
     my ($id, $forced) = (@_);
 
     my @headerlist;
@@ -153,8 +142,8 @@ sub ProcessOneBug($$) {
     foreach my $i (@::log_columns) {
         $values{$i} = shift(@row);
     }
-    $values{product} = get_product_name($values{product_id});
-    $values{component} = get_component_name($values{component_id});
+    $values{product} = &::get_product_name($values{product_id});
+    $values{component} = &::get_component_name($values{component_id});
 
     my ($start, $end) = (@row);
 
@@ -171,24 +160,24 @@ sub ProcessOneBug($$) {
     # At this point, we don't care if there are duplicates in these arrays.
     my $changer = $forced->{'changer'};
     if ($forced->{'owner'}) {
-        push (@assignees, DBNameToIdAndCheck($forced->{'owner'}));
+        push (@assignees, &::DBNameToIdAndCheck($forced->{'owner'}));
     }
     
     if ($forced->{'qacontact'}) {
-        push (@qa_contacts, DBNameToIdAndCheck($forced->{'qacontact'}));
+        push (@qa_contacts, &::DBNameToIdAndCheck($forced->{'qacontact'}));
     }
     
     if ($forced->{'cc'}) {
         foreach my $cc (@{$forced->{'cc'}}) {
-            push(@ccs, DBNameToIdAndCheck($cc));
+            push(@ccs, &::DBNameToIdAndCheck($cc));
         }
     }
     
     # Convert to names, for later display
-    $values{'assigned_to'} = DBID_to_name($values{'assigned_to'});
-    $values{'reporter'} = DBID_to_name($values{'reporter'});
+    $values{'assigned_to'} = &::DBID_to_name($values{'assigned_to'});
+    $values{'reporter'} = &::DBID_to_name($values{'reporter'});
     if ($values{'qa_contact'}) {
-        $values{'qa_contact'} = DBID_to_name($values{'qa_contact'});
+        $values{'qa_contact'} = &::DBID_to_name($values{'qa_contact'});
     }
     $values{'estimated_time'} = format_time_decimal($values{'estimated_time'});
 
@@ -300,7 +289,7 @@ sub ProcessOneBug($$) {
             $interestingchange = 0;
         }
         $thisdiff .= FormatTriple($fielddescription{$what}, $old, $new);
-        if ($what eq 'bug_status' && IsOpenedState($old) ne IsOpenedState($new)) {
+        if ($what eq 'bug_status' && &::IsOpenedState($old) ne &::IsOpenedState($new)) {
             $interestingchange = 1;
         }
         
@@ -320,7 +309,7 @@ sub ProcessOneBug($$) {
     }
 
 
-    my ($newcomments, $anyprivate) = GetLongDescriptionAsText($id, $start, $end);
+    my ($newcomments, $anyprivate) = get_comments_by_bug($id, $start, $end);
 
     ###########################################################################
     # Start of email filtering code
@@ -482,7 +471,7 @@ sub ProcessOneBug($$) {
     return {'sent' => \@sent, 'excluded' => \@excluded};
 }
 
-sub sendMail($$$$$$$$$$$$) {
+sub sendMail {
     my ($user, $hlRef, $relRef, $valueRef, $dmhRef, $fdRef,  
         $diffRef, $newcomments, $anyprivate, $start, 
         $id) = @_;
@@ -609,14 +598,14 @@ sub sendMail($$$$$$$$$$$$) {
     
     my $template = Param("newchangedmail");
     
-    my $msg = PerformSubsts($template, \%substs);
+    my $msg = perform_substs($template, \%substs);
 
     MessageToMTA($msg);
 
     return 1;
 }
 
-sub MessageToMTA ($) {
+sub MessageToMTA {
     my ($msg) = (@_);
     return if (Param('mail_delivery_method') eq "none");
 
@@ -640,35 +629,162 @@ sub MessageToMTA ($) {
         $Mail::Mailer::testfile::config{outfile} = "$datadir/mailer.testfile";
     }
     
-    $msg =~ /(.*?)\n\n(.*)/ms;
-    my @header_lines = split(/\n/, $1);
-    my $body = $2;
+    my ($header, $body) = $msg =~ /(.*?\n)\n(.*)/s ? ($1, $2) : ('', $msg);
+    my $headers;
+
+    if (Param('utf8') and (!is_7bit_clean($header) or !is_7bit_clean($body))) {
+        ($headers, $body) = encode_message($header, $body);
+    } else {
+        my @header_lines = split(/\n/, $header);
+        $headers = new Mail::Header \@header_lines, Modify => 0;
+    }
 
-    my $headers = new Mail::Header \@header_lines, Modify => 0;
     $mailer->open($headers->header_hashref);
     print $mailer $body;
     $mailer->close;
 }
 
-# Performs substitutions for sending out email with variables in it,
-# or for inserting a parameter into some other string.
-#
-# Takes a string and a reference to a hash containing substitution 
-# variables and their values.
-#
-# If the hash is not specified, or if we need to substitute something
-# that's not in the hash, then we will use parameters to do the 
-# substitution instead.
-#
-# Substitutions are always enclosed with '%' symbols. So they look like:
-# %some_variable_name%. If "some_variable_name" is a key in the hash, then
-# its value will be placed into the string. If it's not a key in the hash,
-# then the value of the parameter called "some_variable_name" will be placed
-# into the string.
-sub PerformSubsts ($;$) {
-    my ($str, $substs) = (@_);
-    $str =~ s/%([a-z]*)%/(defined $substs->{$1} ? $substs->{$1} : Param($1))/eg;
-    return $str;
+sub encode_qp_words {
+    my ($line) = (@_);
+    my @encoded;
+    foreach my $word (split / /, $line) {
+        if (!is_7bit_clean($word)) {
+            push @encoded, '=?UTF-8?Q?_' . encode_qp($word, '') . '?=';
+        } else {
+            push @encoded, $word;
+        }
+    }
+    return join(' ', @encoded);
+}
+
+sub encode_message {
+    my ($header, $body) = @_;
+
+    # read header into MIME::Entity
+
+    my $parser = MIME::Parser->new;
+    $parser->output_to_core(1);
+    $parser->tmp_to_core(1);
+    my $entity = $parser->parse_data($header);
+    my $head = $entity->head;
+
+    # set charset to UTF-8
+
+    $head->mime_attr('Content-Type' => 'text/plain')
+        unless defined $head->mime_attr('content-type');
+    $head->mime_attr('Content-Type.charset' => 'UTF-8');
+
+    # encode the subject
+
+    my $subject = $head->get('subject');
+    if (defined $subject && !is_7bit_clean($subject)) {
+        $subject =~ s/[\r\n]+$//;
+        $head->replace('subject', encode_qp_words($subject));
+    }
+
+    # encode addresses
+
+    foreach my $field (qw(from to cc reply-to sender errors-to)) {
+        my $high = $head->count($field) - 1;
+        foreach my $index (0..$high) {
+            my $value = $head->get($field, $index);
+            my @addresses;
+            my $changed = 0;
+            foreach my $addr (Mail::Address->parse($value)) {
+                my $phrase = $addr->phrase;
+                if (is_7bit_clean($phrase)) {
+                    push @addresses, $addr->format;
+                } else {
+                    push @addresses, encode_qp_phrase($phrase) . 
+                        ' <' . $addr->address . '>';
+                    $changed = 1;
+                }
+            }
+            $changed && $head->replace($field, join(', ', @addresses), $index);
+        }
+    }
+
+    # process the body
+
+    if (!is_7bit_clean($body)) {
+        # count number of 7-bit chars, and use quoted-printable if more
+        # than half the message is 7-bit clean
+        my $count = ($body =~ tr/\x20-\x7E\x0A\x0D//);
+        if ($count > length($body) / 2) {
+            $head->mime_attr('Content-Transfer-Encoding' => 'quoted-printable');
+            $body = encode_qp($body);
+        } else {
+            $head->mime_attr('Content-Transfer-Encoding' => 'base64');
+            $body = encode_base64($body);
+        }
+    }
+
+    # done
+    
+    $head->fold(75);
+    return ($head, $body);
+}
+
+# Send the login name and password of the newly created account to the user.
+sub MailPassword {
+    my ($login, $password) = (@_);
+    my $template = Param("passwordmail");
+    my $msg = perform_substs($template,
+                            {"mailaddress" => $login . Param('emailsuffix'),
+                             "login" => $login,
+                             "password" => $password});
+    MessageToMTA($msg);
+}
+
+# Get bug comments for the given period and format them to be used in emails.
+sub get_comments_by_bug {
+    my ($id, $start, $end) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    my $result = "";
+    my $count = 0;
+    my $anyprivate = 0;
+
+    my $query = 'SELECT profiles.login_name, ' .
+                        $dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i') . ',
+                        longdescs.thetext, longdescs.isprivate,
+                        longdescs.already_wrapped
+                   FROM longdescs
+             INNER JOIN profiles ON profiles.userid = longdescs.who
+                  WHERE longdescs.bug_id = ? ';
+
+    my @args = ($id);
+
+    # $start will be undef for new bugs, and defined for pre-existing bugs.
+    if ($start) {
+        # If $start is not NULL, obtain the count-index
+        # of this comment for the leading "Comment #xxx" line.
+        $count = $dbh->selectrow_array('SELECT COUNT(*) FROM longdescs
+                                        WHERE bug_id = ? AND bug_when <= ?',
+                                        undef, ($id, $start));
+
+        $query .= ' AND longdescs.bug_when > ?
+                    AND longdescs.bug_when <= ? ';
+        push @args, ($start, $end);
+    }
+
+    $query .= ' ORDER BY longdescs.bug_when';
+    my $comments = $dbh->selectall_arrayref($query, undef, @args);
+
+    foreach (@$comments) {
+        my ($who, $when, $text, $isprivate, $already_wrapped) = @$_;
+        if ($count) {
+            $result .= "\n\n------- Comment #$count from $who" .
+                       Param('emailsuffix'). "  " . format_time($when) .
+                       " -------\n";
+        }
+        if ($isprivate > 0 && Param('insidergroup')) {
+            $anyprivate = 1;
+        }
+        $result .= ($already_wrapped ? $text : wrap_comment($text));
+        $count++;
+    }
+    return ($result, $anyprivate);
 }
 
 1;
diff --git a/Bugzilla/CGI.pm b/Bugzilla/CGI.pm
index 3e86af033f2b5c0d6c6d1d07629cf1110a1f605f..8db65eedad6e6eed5fdf5993a824220ea404ac82 100644
--- a/Bugzilla/CGI.pm
+++ b/Bugzilla/CGI.pm
@@ -25,9 +25,18 @@ use strict;
 
 package Bugzilla::CGI;
 
+BEGIN {
+    if ($^O =~ /MSWin32/i) {
+        # Help CGI find the correct temp directory as the default list
+        # isn't Windows friendly (Bug 248988)
+        $ENV{'TMPDIR'} = $ENV{'TEMP'} || $ENV{'TMP'} || "$ENV{'WINDIR'}\\TEMP";
+    }
+}
+
 use CGI qw(-no_xhtml -oldstyle_urls :private_tempfiles :unique_headers SERVER_PUSH);
 
 use base qw(CGI);
+use CGI::Carp qw(fatalsToBrowser);
 
 use Bugzilla::Error;
 use Bugzilla::Util;
@@ -51,8 +60,8 @@ sub new {
     # Make sure our outgoing cookie list is empty on each invocation
     $self->{Bugzilla_cookie_list} = [];
 
-    # Make sure that we don't send any charset headers
-    $self->charset('');
+    # Send appropriate charset
+    $self->charset(Param('utf8') ? 'UTF-8' : '');
 
     # Redirect to SSL if required
     if (Param('sslbase') ne '' and Param('ssl') eq 'always' and i_am_cgi()) {
diff --git a/Bugzilla/CVS/Entries b/Bugzilla/CVS/Entries
index 46e7dfe706a4b5f6b53097c6a3d53bae4f301f29..e47b3ffe05db82989d8f63b4cc1da37fa5755345 100644
--- a/Bugzilla/CVS/Entries
+++ b/Bugzilla/CVS/Entries
@@ -1,24 +1,31 @@
-/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-2_20
-/Attachment.pm/1.21/Thu Apr 28 02:14:26 2005//TBUGZILLA-2_20
-/Auth.pm/1.10.2.2/Wed Jul 27 19:08:41 2005//TBUGZILLA-2_20
-/Bug.pm/1.81.2.3/Thu Sep  8 23:45:15 2005//TBUGZILLA-2_20
-/BugMail.pm/1.39.4.2/Sat Aug 13 15:04:29 2005//TBUGZILLA-2_20
-/CGI.pm/1.16.2.1/Thu Sep 22 16:57:59 2005//TBUGZILLA-2_20
-/Chart.pm/1.8/Mon Apr 11 22:39:11 2005//TBUGZILLA-2_20
-/Config.pm/1.43.2.4/Fri Sep 30 22:38:03 2005//TBUGZILLA-2_20
-/Constants.pm/1.25.2.1/Sat Aug 13 15:04:29 2005//TBUGZILLA-2_20
-/DB.pm/1.56.2.3/Fri Sep  2 23:32:47 2005//TBUGZILLA-2_20
-/Error.pm/1.13.4.1/Wed Jul 27 19:08:41 2005//TBUGZILLA-2_20
-/Flag.pm/1.45.2.1/Wed Jul 27 19:08:41 2005//TBUGZILLA-2_20
-/FlagType.pm/1.19.2.1/Wed Jul 27 19:08:41 2005//TBUGZILLA-2_20
-/Group.pm/1.1/Fri Feb 18 22:42:07 2005//TBUGZILLA-2_20
-/Search.pm/1.99.2.5/Fri Sep 16 15:02:56 2005//TBUGZILLA-2_20
-/Series.pm/1.9/Wed Mar 16 00:27:15 2005//TBUGZILLA-2_20
-/Template.pm/1.26/Wed Jun 15 03:54:58 2005//TBUGZILLA-2_20
-/Token.pm/1.31/Fri Jul  8 02:31:41 2005//TBUGZILLA-2_20
-/User.pm/1.61.2.10/Fri Sep 30 22:28:04 2005//TBUGZILLA-2_20
-/Util.pm/1.28.2.3/Thu Sep 22 16:57:59 2005//TBUGZILLA-2_20
+/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-2_21_1
+/Attachment.pm/1.26/Wed Sep 21 04:30:30 2005//TBUGZILLA-2_21_1
+/Auth.pm/1.12/Tue Jul 26 14:09:47 2005//TBUGZILLA-2_21_1
+/Bug.pm/1.95/Thu Sep  8 23:40:09 2005//TBUGZILLA-2_21_1
+/BugMail.pm/1.51/Tue Aug 30 16:54:07 2005//TBUGZILLA-2_21_1
+/CGI.pm/1.19/Thu Sep 22 16:53:15 2005//TBUGZILLA-2_21_1
+/Chart.pm/1.8/Mon Apr 11 22:39:11 2005//TBUGZILLA-2_21_1
+/Classification.pm/1.6/Sun Aug 14 22:34:32 2005//TBUGZILLA-2_21_1
+/Component.pm/1.7/Tue Sep  6 23:53:58 2005//TBUGZILLA-2_21_1
+/Config.pm/1.47/Fri Sep 30 22:35:52 2005//TBUGZILLA-2_21_1
+/Constants.pm/1.28/Thu Aug 18 20:09:37 2005//TBUGZILLA-2_21_1
+/DB.pm/1.65/Fri Sep  2 23:30:11 2005//TBUGZILLA-2_21_1
+/Error.pm/1.14/Tue Jul 26 14:09:47 2005//TBUGZILLA-2_21_1
+/Field.pm/1.7/Mon Sep  5 20:41:20 2005//TBUGZILLA-2_21_1
+/Flag.pm/1.54/Mon Sep  5 20:41:20 2005//TBUGZILLA-2_21_1
+/FlagType.pm/1.22/Tue Aug 30 22:41:18 2005//TBUGZILLA-2_21_1
+/Group.pm/1.8/Tue Aug 30 16:39:06 2005//TBUGZILLA-2_21_1
+/Milestone.pm/1.6/Sun Aug 14 22:34:32 2005//TBUGZILLA-2_21_1
+/Product.pm/1.9/Fri Sep  2 21:12:08 2005//TBUGZILLA-2_21_1
+/Search.pm/1.113/Fri Sep 16 14:57:00 2005//TBUGZILLA-2_21_1
+/Series.pm/1.11/Fri Sep 23 14:24:35 2005//TBUGZILLA-2_21_1
+/Template.pm/1.34/Thu Sep 15 22:16:53 2005//TBUGZILLA-2_21_1
+/Token.pm/1.36/Thu Sep  1 21:39:21 2005//TBUGZILLA-2_21_1
+/User.pm/1.86/Fri Sep 30 22:25:49 2005//TBUGZILLA-2_21_1
+/Util.pm/1.40/Thu Sep  1 21:39:21 2005//TBUGZILLA-2_21_1
+/Version.pm/1.6/Sun Aug 14 22:34:32 2005//TBUGZILLA-2_21_1
 D/Auth////
 D/DB////
+D/Search////
 D/Template////
 D/User////
diff --git a/Bugzilla/CVS/Entries.Log b/Bugzilla/CVS/Entries.Log
deleted file mode 100644
index 1b9c529ed6cc3fa2a0c356a402c2ef2b6cfd6cdd..0000000000000000000000000000000000000000
--- a/Bugzilla/CVS/Entries.Log
+++ /dev/null
@@ -1,2 +0,0 @@
-A D/Search////
-R D/Search////
diff --git a/Bugzilla/CVS/Tag b/Bugzilla/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/CVS/Tag
+++ b/Bugzilla/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Classification.pm b/Bugzilla/Classification.pm
new file mode 100644
index 0000000000000000000000000000000000000000..50094df0ab2cd8abcd88e4d13831b4a3998d4a9e
--- /dev/null
+++ b/Bugzilla/Classification.pm
@@ -0,0 +1,222 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# Contributor(s): Tiago R. Mello <timello@async.com.br>
+#
+
+use strict;
+
+package Bugzilla::Classification;
+
+use Bugzilla::Util;
+use Bugzilla::Error;
+
+###############################
+####    Initialization     ####
+###############################
+
+use constant DB_COLUMNS => qw(
+    classifications.id
+    classifications.name
+    classifications.description
+);
+
+our $columns = join(", ", DB_COLUMNS);
+
+###############################
+####       Methods         ####
+###############################
+
+sub new {
+    my $invocant = shift;
+    my $class = ref($invocant) || $invocant;
+    my $self = {};
+    bless($self, $class);
+    return $self->_init(@_);
+}
+
+sub _init {
+    my $self = shift;
+    my ($param) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    my $id = $param unless (ref $param eq 'HASH');
+    my $classification;
+
+    if (defined $id && detaint_natural($id)) {
+
+        $classification = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM classifications
+            WHERE id = ?}, undef, $id);
+
+    } elsif (defined $param->{'name'}) {
+
+        trick_taint($param->{'name'});
+        $classification = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM classifications
+            WHERE name = ?}, undef, $param->{'name'});
+    } else {
+        ThrowCodeError('bad_arg',
+            {argument => 'param',
+             function => 'Bugzilla::Classification::_init'});
+    }
+
+    return undef unless (defined $classification);
+
+    foreach my $field (keys %$classification) {
+        $self->{$field} = $classification->{$field};
+    }
+    return $self;
+}
+
+sub product_count {
+    my $self = shift;
+    my $dbh = Bugzilla->dbh;
+
+    if (!defined $self->{'product_count'}) {
+        $self->{'product_count'} = $dbh->selectrow_array(q{
+            SELECT COUNT(*) FROM products
+            WHERE classification_id = ?}, undef, $self->id) || 0;
+    }
+    return $self->{'product_count'};
+}
+
+###############################
+####      Accessors        ####
+###############################
+
+sub id          { return $_[0]->{'id'};          }
+sub name        { return $_[0]->{'name'};        }
+sub description { return $_[0]->{'description'}; }
+
+###############################
+####      Subroutines      ####
+###############################
+
+sub get_all_classifications {
+    my $dbh = Bugzilla->dbh;
+
+    my $ids = $dbh->selectcol_arrayref(q{
+        SELECT id FROM classifications ORDER BY name});
+
+    my @classifications;
+    foreach my $id (@$ids) {
+        push @classifications, new Bugzilla::Classification($id);
+    }
+    return @classifications;
+}
+
+sub check_classification {
+    my ($class_name) = @_;
+
+    unless ($class_name) {
+        ThrowUserError("classification_not_specified");
+    }
+
+    my $classification =
+        new Bugzilla::Classification({name => $class_name});
+
+    unless ($classification) {
+        ThrowUserError("classification_doesnt_exist",
+                       { name => $class_name });
+    }
+    
+    return $classification;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Bugzilla::Classification - Bugzilla classification class.
+
+=head1 SYNOPSIS
+
+    use Bugzilla::Classification;
+
+    my $classification = new Bugzilla::Classification(1);
+    my $classification = new Bugzilla::Classification({name => 'Acme'});
+
+    my $id = $classification->id;
+    my $name = $classification->name;
+    my $description = $classification->description;
+    my $product_count = $classification->product_count;
+
+    my $hash_ref = Bugzilla::Classification::get_all_classifications();
+    my $classification = $hash_ref->{1};
+
+    my $classification =
+        Bugzilla::Classification::check_classification('AcmeClass');
+
+=head1 DESCRIPTION
+
+Classification.pm represents a Classification object.
+
+A Classification is a higher-level grouping of Products.
+
+=head1 METHODS
+
+=over
+
+=item C<new($param)>
+
+ Description: The constructor is used to load an existing
+              classification by passing a classification
+              id or classification name using a hash.
+
+ Params:      $param - If you pass an integer, the integer is the
+                      classification_id from the database that we
+                      want to read in. If you pass in a hash with
+                      'name' key, then the value of the name key
+                      is the name of a classification from the DB.
+
+ Returns:     A Bugzilla::Classification object.
+
+=item C<product_count()>
+
+ Description: Returns the total number of products that belong to
+              the classification.
+
+ Params:      none.
+
+ Returns:     Integer - The total of products inside the classification.
+
+=back
+
+=head1 SUBROUTINES
+
+=over
+
+=item C<get_all_classifications()>
+
+ Description: Returns all classifications.
+
+ Params:      none.
+
+ Returns:     Bugzilla::Classification object list.
+
+=item C<check_classification($classification_name)>
+
+ Description: Checks if the classification name passed in is a
+              valid classification.
+
+ Params:      $classification_name - String with a classification name.
+
+ Returns:     Bugzilla::Classification object.
+
+=back
+
+=cut
diff --git a/Bugzilla/Component.pm b/Bugzilla/Component.pm
new file mode 100644
index 0000000000000000000000000000000000000000..cd6722993912727459414bcf64a8c2e7c07d1c58
--- /dev/null
+++ b/Bugzilla/Component.pm
@@ -0,0 +1,306 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# Contributor(s): Tiago R. Mello <timello@async.com.br>
+#
+
+use strict;
+
+package Bugzilla::Component;
+
+use Bugzilla::Util;
+use Bugzilla::Error;
+use Bugzilla::User;
+
+###############################
+####    Initialization     ####
+###############################
+
+use constant DB_COLUMNS => qw(
+    components.id
+    components.name
+    components.product_id
+    components.initialowner
+    components.initialqacontact
+    components.description
+);
+
+our $columns = join(", ", DB_COLUMNS);
+
+###############################
+####       Methods         ####
+###############################
+
+sub new {
+    my $invocant = shift;
+    my $class = ref($invocant) || $invocant;
+    my $self = {};
+    bless($self, $class);
+    return $self->_init(@_);
+}
+
+sub _init {
+    my $self = shift;
+    my ($param) = (@_);
+    my $dbh = Bugzilla->dbh;
+
+    my $id = $param unless (ref $param eq 'HASH');
+    my $component;
+
+    if (defined $id && detaint_natural($id)) {
+
+        $component = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM components
+            WHERE id = ?}, undef, $id);
+
+    } elsif (defined $param->{'product_id'}
+        && detaint_natural($param->{'product_id'})
+        && defined $param->{'name'}) {
+
+        trick_taint($param->{'name'});
+
+        $component = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM components
+            WHERE name = ? AND product_id = ?}, undef,
+            ($param->{'name'}, $param->{'product_id'}));
+    } else {
+        ThrowCodeError('bad_arg',
+            {argument => 'param',
+             function => 'Bugzilla::Component::_init'});
+    }
+
+    return undef unless (defined $component);
+
+    foreach my $field (keys %$component) {
+        $self->{$field} = $component->{$field};
+    }
+    return $self;
+}
+
+sub bug_count {
+    my $self = shift;
+    my $dbh = Bugzilla->dbh;
+
+    if (!defined $self->{'bug_count'}) {
+        $self->{'bug_count'} = $dbh->selectrow_array(q{
+            SELECT COUNT(*) FROM bugs
+            WHERE component_id = ?}, undef, $self->id) || 0;
+    }
+    return $self->{'bug_count'};
+}
+
+sub bug_ids {
+    my $self = shift;
+    my $dbh = Bugzilla->dbh;
+
+    if (!defined $self->{'bugs_ids'}) {
+        $self->{'bugs_ids'} = $dbh->selectcol_arrayref(q{
+            SELECT bug_id FROM bugs
+            WHERE component_id = ?}, undef, $self->id);
+    }
+    return $self->{'bugs_ids'};
+}
+
+sub default_assignee {
+    my $self = shift;
+
+    if (!defined $self->{'default_assignee'}) {
+        $self->{'default_assignee'} =
+            new Bugzilla::User($self->{'initialowner'});
+    }
+    return $self->{'default_assignee'};
+}
+
+sub default_qa_contact {
+    my $self = shift;
+
+    if (!defined $self->{'default_qa_contact'}) {
+        $self->{'default_qa_contact'} =
+            new Bugzilla::User($self->{'initialqacontact'});
+    }
+    return $self->{'default_qa_contact'};
+}
+
+###############################
+####      Accessors        ####
+###############################
+
+sub id          { return $_[0]->{'id'};          }
+sub name        { return $_[0]->{'name'};        }
+sub description { return $_[0]->{'description'}; }
+sub product_id  { return $_[0]->{'product_id'};  }
+
+###############################
+####      Subroutines      ####
+###############################
+
+sub get_components_by_product {
+    my ($product_id) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    my $stored_product_id = $product_id;
+    unless (detaint_natural($product_id)) {
+        ThrowCodeError(
+            'invalid_numeric_argument',
+            {argument => 'product_id',
+             value    => $stored_product_id,
+             function =>
+                'Bugzilla::Component::get_components_by_product'}
+        );
+    }
+
+    my $ids = $dbh->selectcol_arrayref(q{
+        SELECT id FROM components
+        WHERE product_id = ?}, undef, $product_id);
+
+    my @components;
+    foreach my $id (@$ids) {
+        push @components, new Bugzilla::Component($id);
+    }
+    return @components;
+}
+
+sub check_component {
+    my ($product, $comp_name) = @_;
+
+    $comp_name || ThrowUserError('component_blank_name');
+
+    if (length($comp_name) > 64) {
+        ThrowUserError('component_name_too_long',
+                       {'name' => $comp_name});
+    }
+
+    my $component =
+        new Bugzilla::Component({product_id => $product->id,
+                                 name       => $comp_name});
+    unless ($component) {
+        ThrowUserError('component_not_valid',
+                       {'product' => $product->name,
+                        'name' => $comp_name});
+    }
+    return $component;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Bugzilla::Component - Bugzilla product component class.
+
+=head1 SYNOPSIS
+
+    use Bugzilla::Component;
+
+    my $component = new Bugzilla::Component(1);
+    my $component = new Bugzilla::Component({product_id => 1,
+                                             name       => 'AcmeComp'});
+
+    my $bug_count          = $component->bug_count();
+    my $bug_ids            = $component->bug_ids();
+    my $id                 = $component->id;
+    my $name               = $component->name;
+    my $description        = $component->description;
+    my $product_id         = $component->product_id;
+    my $default_assignee   = $component->default_assignee;
+    my $default_qa_contact = $component->default_qa_contact;
+
+    my @components = Bugzilla::Component::get_components_by_product($id);
+    my $component  = Bugzilla::Component::check_component($product, 'AcmeComp');
+
+=head1 DESCRIPTION
+
+Component.pm represents a Product Component object.
+
+=head1 METHODS
+
+=over
+
+=item C<new($param)>
+
+ Description: The constructor is used to load an existing component
+              by passing a component id or a hash with the product
+              id and the component name.
+
+ Params:      $param - If you pass an integer, the integer is the
+                       component id from the database that we want to
+                       read in. If you pass in a hash with 'name' key,
+                       then the value of the name key is the name of a
+                       component from the DB.
+
+ Returns:     A Bugzilla::Component object.
+
+=item C<bug_count()>
+
+ Description: Returns the total of bugs that belong to the component.
+
+ Params:      none.
+
+ Returns:     Integer with the number of bugs.
+
+=item C<bugs_ids()>
+
+ Description: Returns all bug IDs that belong to the component.
+ 
+ Params:      none.
+
+ Returns:     A reference to an array of bug IDs.
+
+=item C<default_assignee()>
+
+ Description: Returns a user object that represents the default assignee for
+              the component.
+
+ Params:      none.
+
+ Returns:     A Bugzilla::User object.
+
+=item C<default_qa_contact()>
+
+ Description: Returns a user object that represents the default QA contact for
+              the component.
+
+ Params:      none.
+
+ Returns:     A Bugzilla::User object.
+
+=back
+
+=head1 SUBROUTINES
+
+=over
+
+=item C<get_components_by_product($product_id)>
+
+ Description: Returns all components that belong to the supplied product.
+
+ Params:      $product_id - Integer with a Bugzilla product id.
+
+ Returns:     An array of Bugzilla::Component objects.
+ 
+
+=item C<check_component($product, $comp_name)>
+
+ Description: Checks if the component name was passed in and if it is a valid
+              component.
+
+ Params:      $product - A Bugzilla::Product object.
+              $comp_name - String with a component name.
+
+ Returns:     Bugzilla::Component object.
+             
+=back
+
+=cut
diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm
index 4579e0cd67c67a1eed574c9b5e9084a2b041f91a..7723e5b04a621830be3c6ae8a8cc9dc8a111e4f2 100644
--- a/Bugzilla/Config.pm
+++ b/Bugzilla/Config.pm
@@ -50,11 +50,23 @@ use base qw(Exporter);
 # graphs (since the path will be wrong in the HTML). This will be fixed at
 # some point.
 
+# constant paths
 our $libpath = '.';
-our $localconfig = "$libpath/localconfig";
-our $datadir = "$libpath/data";
-our $attachdir = "$datadir/attachments";
 our $templatedir = "$libpath/template";
+
+# variable paths
+our $project;
+our $localconfig;
+our $datadir;
+if ($ENV{'PROJECT'} && $ENV{'PROJECT'} =~ /^(\w+)$/) {
+    $project = $1;
+    $localconfig = "$libpath/localconfig.$project";
+    $datadir = "$libpath/data/$project";
+} else {
+    $localconfig = "$libpath/localconfig";
+    $datadir = "$libpath/data";
+}
+our $attachdir = "$datadir/attachments";
 our $webdotdir = "$datadir/webdot";
 
 # Module stuff
@@ -71,13 +83,13 @@ our $webdotdir = "$datadir/webdot";
   (
    admin => [qw(GetParamList UpdateParams SetParam WriteParams)],
    db => [qw($db_driver $db_host $db_port $db_name $db_user $db_pass $db_sock)],
-   locations => [qw($libpath $localconfig $attachdir
-                    $datadir $templatedir $webdotdir)],
+   locations => [qw($libpath $localconfig $attachdir $datadir $templatedir
+                    $webdotdir $project)],
   );
 Exporter::export_ok_tags('admin', 'db', 'locations');
 
 # Bugzilla version
-$Bugzilla::Config::VERSION = "2.20";
+$Bugzilla::Config::VERSION = "2.21.1";
 
 use Safe;
 
diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm
index ce4801b9328b346d2bf6c8d83da245fd13fd10eb..078c988b6fe9d1a249d6c0b0d0f5a88f200d82e9 100644
--- a/Bugzilla/Constants.pm
+++ b/Bugzilla/Constants.pm
@@ -53,7 +53,6 @@ use base qw(Exporter);
     LOGOUT_KEEP_CURRENT
 
     GRANT_DIRECT
-    GRANT_DERIVED
     GRANT_REGEXP
 
     GROUP_MEMBERSHIP
@@ -68,8 +67,6 @@ use base qw(Exporter);
 
     COMMENT_COLS
 
-    DERIVE_GROUPS_TABLES_ALREADY_LOCKED
-
     UNLOCK_ABORT
     
     RELATIONSHIPS
@@ -88,6 +85,8 @@ use base qw(Exporter);
 
     FULLTEXT_BUGLIST_LIMIT
 
+    ADMIN_GROUP_NAME
+
     SENDMAIL_EXE
 );
 
@@ -155,7 +154,6 @@ use constant contenttypes =>
   };
 
 use constant GRANT_DIRECT => 0;
-use constant GRANT_DERIVED => 1;
 use constant GRANT_REGEXP => 2;
 
 use constant GROUP_MEMBERSHIP => 0;
@@ -178,10 +176,6 @@ use constant DEFAULT_QUERY_NAME => '(Default query)';
 # The column length for displayed (and wrapped) bug comments.
 use constant COMMENT_COLS => 80;
 
-# Used to indicate to User::new and User::new_from_login calls
-# that the derive_groups tables are already locked
-use constant DERIVE_GROUPS_TABLES_ALREADY_LOCKED => 1;
-
 # used by Bugzilla::DB to indicate that tables are being unlocked
 # because of error
 use constant UNLOCK_ABORT => 1;
@@ -235,6 +229,9 @@ use constant GLOBAL_EVENTS => EVT_FLAG_REQUESTED, EVT_REQUESTED_FLAG;
 #  a fulltext search.
 use constant FULLTEXT_BUGLIST_LIMIT => 200;
 
+# Default administration group name.
+use constant ADMIN_GROUP_NAME => 'admin';
+
 # Path to sendmail.exe (Windows only)
 use constant SENDMAIL_EXE => '/usr/lib/sendmail.exe';
 
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index c5f38d17bcf3b743814653b66af041e238a33123..c67fd4bae52dd7db2a6c9362b89c5cddaf31a31b 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -24,6 +24,7 @@
 #                 Christopher Aillon <christopher@aillon.com>
 #                 Tomas Kopal <Tomas.Kopal@altap.cz>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Lance Larsh <lance.larsh@oracle.com>
 
 package Bugzilla::DB;
 
@@ -50,7 +51,6 @@ use Bugzilla::Config qw(:DEFAULT :db);
 use Bugzilla::Util;
 use Bugzilla::Error;
 use Bugzilla::DB::Schema;
-use Bugzilla::User;
 
 #####################################################################
 # Constants
@@ -128,12 +128,12 @@ sub FetchOneColumn {
     return $row[0];
 }
 
-sub PushGlobalSQLState() {
+sub PushGlobalSQLState {
     push @SQLStateStack, $_current_sth;
     push @SQLStateStack, $_fetchahead;
 }
 
-sub PopGlobalSQLState() {
+sub PopGlobalSQLState {
     die ("PopGlobalSQLState: stack underflow") if ( scalar(@SQLStateStack) < 1 );
     $_fetchahead = pop @SQLStateStack;
     $_current_sth = pop @SQLStateStack;
@@ -153,7 +153,7 @@ sub connect_shadow {
                     Param("shadowdbsock"), $db_user, $db_pass);
 }
 
-sub connect_main (;$) {
+sub connect_main {
     my ($no_db_name) = @_;
     my $connect_to_db = $db_name;
     $connect_to_db = "" if $no_db_name;
@@ -260,22 +260,23 @@ sub sql_fulltext_search {
 
     # This is as close as we can get to doing full text search using
     # standard ANSI SQL, without real full text search support. DB specific
-    # modules shoud override this, as this will be always much slower.
-
-    # the text is already sql-quoted, so we need to remove the quotes first
-    my $quote = substr($self->quote(''), 0, 1);
-    $text = $1 if ($text =~ /^$quote(.*)$quote$/);
+    # modules should override this, as this will be always much slower.
 
     # make the string lowercase to do case insensitive search
     my $lower_text = lc($text);
 
-    # split the text we search for to separate words
+    # split the text we search for into separate words
     my @words = split(/\s+/, $lower_text);
 
-    # search for occurence of all specified words in the column
-    return "CASE WHEN (LOWER($column) LIKE ${quote}%" .
-           join("%${quote} AND LOWER($column) LIKE ${quote}%", @words) .
-           "%${quote}) THEN 1 ELSE 0 END";
+    # surround the words with wildcards and SQL quotes so we can use them
+    # in LIKE search clauses
+    @words = map($self->quote("%$_%"), @words);
+
+    # turn the words into a set of LIKE search clauses
+    @words = map("LOWER($column) LIKE $_", @words);
+
+    # search for occurrences of all specified words in the column
+    return "CASE WHEN (" . join(" AND ", @words) . ") THEN 1 ELSE 0 END";
 }
 
 #####################################################################
@@ -298,7 +299,7 @@ sub bz_get_field_defs {
     my ($self) = @_;
 
     my $extra = "";
-    if (!UserInGroup(Param('timetrackinggroup'))) {
+    if (!Bugzilla->user->in_group(Param('timetrackinggroup'))) {
         $extra = "AND name NOT IN ('estimated_time', 'remaining_time', " .
                  "'work_time', 'percentage_complete', 'deadline')";
     }
@@ -1094,7 +1095,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>.
               searches (case insensitive) in format suitable for a given
               database.
               Abstract method, should be overriden by database specific code.
- Params:      none
+ Params:      $expr = SQL expression for the text to be searched (scalar)
+              $pattern = the regular expression to search for (scalar)
  Returns:     formatted SQL for regular expression search (e.g. REGEXP)
               (scalar)
 
@@ -1104,7 +1106,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>.
               regex searches (case insensitive) in format suitable for a given
               database.
               Abstract method, should be overriden by database specific code.
- Params:      none
+ Params:      $expr = SQL expression for the text to be searched (scalar)
+              $pattern = the regular expression to search for (scalar)
  Returns:     formatted SQL for negative regular expression search
               (e.g. NOT REGEXP) (scalar)
 
@@ -1182,12 +1185,12 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>.
               specified text on a given column.
               There is a ANSI SQL version of this method implemented using
               LIKE operator, but it's not a real full text search. DB specific
-              modules shoud override this, as this generic implementation will
+              modules should override this, as this generic implementation will
               be always much slower. This generic implementation returns
               'relevance' as 0 for no match, or 1 for a match.
  Params:      $column = name of column to search (scalar)
               $text = text to search for (scalar)
- Returns:     formatted SQL for for full text search
+ Returns:     formatted SQL for full text search
 
 =item C<sql_istrcmp>
 
diff --git a/Bugzilla/DB/CVS/Entries b/Bugzilla/DB/CVS/Entries
index 6f5f0273e89821f2712ce2bc8026ab1142e5e98f..a3f73a535ad3b46607c348f56bccdb3a5c492f03 100644
--- a/Bugzilla/DB/CVS/Entries
+++ b/Bugzilla/DB/CVS/Entries
@@ -1,4 +1,4 @@
-/Mysql.pm/1.24.2.1/Wed Jul 27 19:08:42 2005//TBUGZILLA-2_20
-/Pg.pm/1.12.2.2/Sun Sep  4 08:14:14 2005//TBUGZILLA-2_20
-/Schema.pm/1.32.2.4/Sun Sep 25 20:42:20 2005//TBUGZILLA-2_20
+/Mysql.pm/1.29/Tue Sep 27 17:16:56 2005//TBUGZILLA-2_21_1
+/Pg.pm/1.15/Sun Sep  4 08:12:37 2005//TBUGZILLA-2_21_1
+/Schema.pm/1.39/Sun Sep 25 20:37:51 2005//TBUGZILLA-2_21_1
 D/Schema////
diff --git a/Bugzilla/DB/CVS/Tag b/Bugzilla/DB/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/DB/CVS/Tag
+++ b/Bugzilla/DB/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/DB/Mysql.pm b/Bugzilla/DB/Mysql.pm
index e76dc4599b431cc23d06639e7692ae86b9dcba5a..952d49ff9ac7cd804393116bef7c785faed36471 100644
--- a/Bugzilla/DB/Mysql.pm
+++ b/Bugzilla/DB/Mysql.pm
@@ -23,6 +23,7 @@
 #                 Dave Lawrence <dkl@redhat.com>
 #                 Tomas Kopal <Tomas.Kopal@altap.cz>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Lance Larsh <lance.larsh@oracle.com>
 
 =head1 NAME
 
@@ -42,12 +43,13 @@ package Bugzilla::DB::Mysql;
 
 use strict;
 
+use Bugzilla::Util;
 use Bugzilla::Error;
 
 # This module extends the DB interface via inheritance
 use base qw(Bugzilla::DB);
 
-use constant REQUIRED_VERSION => '3.23.41';
+use constant REQUIRED_VERSION => '4.0.14';
 use constant PROGRAM_NAME => 'MySQL';
 use constant MODULE_NAME  => 'Mysql';
 use constant DBD_VERSION  => '2.9003';
@@ -82,11 +84,15 @@ sub bz_last_key {
 }
 
 sub sql_regexp {
-    return "REGEXP";
+    my ($self, $expr, $pattern) = @_;
+
+    return "$expr REGEXP $pattern";
 }
 
 sub sql_not_regexp {
-    return "NOT REGEXP";
+    my ($self, $expr, $pattern) = @_;
+
+    return "$expr NOT REGEXP $pattern";
 }
 
 sub sql_limit {
@@ -108,7 +114,17 @@ sub sql_string_concat {
 sub sql_fulltext_search {
     my ($self, $column, $text) = @_;
 
-    return "MATCH($column) AGAINST($text)";
+    # Add the boolean mode modifier if the search string contains
+    # boolean operators.
+    my $mode = ($text =~ /[+-<>()~*"]/ ? "IN BOOLEAN MODE" : "");
+
+    # quote the text for use in the MATCH AGAINST expression
+    $text = $self->quote($text);
+
+    # untaint the text, since it's safe to use now that we've quoted it
+    trick_taint($text);
+
+    return "MATCH($column) AGAINST($text $mode)";
 }
 
 sub sql_istring {
@@ -474,6 +490,16 @@ sub bz_setup_database {
                                {TYPE => 'DATETIME', NOTNULL => 1});
     }
 
+    # 2005-09-24 - bugreport@peshkin.net, bug 307602
+    # Make sure that default 4G table limit is overridden
+    my $row = $self->selectrow_hashref("SHOW TABLE STATUS LIKE 'attach_data'");
+    if ($$row{'Create_options'} !~ /MAX_ROWS/i) {
+        print "Converting attach_data maximum size to 100G...\n";
+        $self->do("ALTER TABLE attach_data
+                   AVG_ROW_LENGTH=1000000,
+                   MAX_ROWS=100000");
+    }
+
 }
 
 
diff --git a/Bugzilla/DB/Pg.pm b/Bugzilla/DB/Pg.pm
index 84631e62b7dc17a8d6dd11ad34ca1371d98fe44a..ff1e6abae36693ae14d40f48b1a523e3ad5e968e 100644
--- a/Bugzilla/DB/Pg.pm
+++ b/Bugzilla/DB/Pg.pm
@@ -23,6 +23,7 @@
 #                 Dave Lawrence <dkl@redhat.com>
 #                 Tomas Kopal <Tomas.Kopal@altap.cz>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Lance Larsh <lance.larsh@oracle.com>
 
 =head1 NAME
 
@@ -89,11 +90,15 @@ sub bz_last_key {
 }
 
 sub sql_regexp {
-    return "~*";
+    my ($self, $expr, $pattern) = @_;
+
+    return "$expr ~* $pattern";
 }
 
 sub sql_not_regexp {
-    return "!~*" 
+    my ($self, $expr, $pattern) = @_;
+
+    return "$expr !~* $pattern" 
 }
 
 sub sql_limit {
diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm
index 3bb2a85984c969d2ee5ebd84d1f2c01d1c7a5c8f..6abe41cdde32c2565f1645f2746622bbdc272cb5 100644
--- a/Bugzilla/DB/Schema.pm
+++ b/Bugzilla/DB/Schema.pm
@@ -20,6 +20,7 @@
 # Contributor(s): Andrew Dunstan <andrew@dunslane.net>,
 #                 Edward J. Sabol <edwardjsabol@iname.com>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Lance Larsh <lance.larsh@oracle.com>
 #                 Dennis Melentyev <dennis.melentyev@infopulse.com.ua>
 
 package Bugzilla::DB::Schema;
@@ -307,7 +308,6 @@ use constant ABSTRACT_SCHEMA => {
             mimetype     => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
             ispatch      => {TYPE => 'BOOLEAN'},
             filename     => {TYPE => 'varchar(100)', NOTNULL => 1},
-            thedata      => {TYPE => 'LONGBLOB', NOTNULL => 1},
             submitter_id => {TYPE => 'INT3', NOTNULL => 1},
             isobsolete   => {TYPE => 'BOOLEAN', NOTNULL => 1,
                              DEFAULT => 'FALSE'},
@@ -320,6 +320,13 @@ use constant ABSTRACT_SCHEMA => {
             attachments_submitter_id_idx => ['submitter_id', 'bug_id'],
         ],
     },
+    attach_data => {
+        FIELDS => [
+            id      => {TYPE => 'INT3', NOTNULL => 1,
+                        PRIMARYKEY => 1},
+            thedata => {TYPE => 'LONGBLOB', NOTNULL => 1},
+        ],
+    },
 
     duplicates => {
         FIELDS => [
@@ -872,7 +879,7 @@ use constant ABSTRACT_SCHEMA => {
             frequency   => {TYPE => 'INT2', NOTNULL => 1},
             last_viewed => {TYPE => 'DATETIME'},
             query       => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
-            public      => {TYPE => 'BOOLEAN', NOTNULL => 1,
+            is_public   => {TYPE => 'BOOLEAN', NOTNULL => 1,
                             DEFAULT => 'FALSE'},
         ],
         INDEXES => [
@@ -1198,8 +1205,10 @@ sub get_type_ddl {
 
     my $fkref = $self->{enable_references} ? $finfo->{REFERENCES} : undef;
     my $type_ddl = $self->{db_specific}{$type} || $type;
-    $type_ddl .= " NOT NULL" if ($finfo->{NOTNULL});
+    # DEFAULT attribute must appear before any column constraints
+    # (e.g., NOT NULL), for Oracle
     $type_ddl .= " DEFAULT $default" if (defined($default));
+    $type_ddl .= " NOT NULL" if ($finfo->{NOTNULL});
     $type_ddl .= " PRIMARY KEY" if ($finfo->{PRIMARYKEY});
     $type_ddl .= "\n\t\t\t\tREFERENCES $fkref" if $fkref;
 
diff --git a/Bugzilla/DB/Schema/CVS/Entries b/Bugzilla/DB/Schema/CVS/Entries
index 1050152ff016dac913b7aeb1a1032cd6d5c67f5c..1f06eee5d1bf811feac53e0b393f36748dcfe1c5 100644
--- a/Bugzilla/DB/Schema/CVS/Entries
+++ b/Bugzilla/DB/Schema/CVS/Entries
@@ -1,3 +1,3 @@
-/Mysql.pm/1.10.2.1/Mon Aug  1 10:11:59 2005//TBUGZILLA-2_20
-/Pg.pm/1.9/Wed Jun 15 03:54:59 2005//TBUGZILLA-2_20
+/Mysql.pm/1.11/Mon Aug  1 10:06:43 2005//TBUGZILLA-2_21_1
+/Pg.pm/1.9/Wed Jun 15 03:54:59 2005//TBUGZILLA-2_21_1
 D
diff --git a/Bugzilla/DB/Schema/CVS/Tag b/Bugzilla/DB/Schema/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/DB/Schema/CVS/Tag
+++ b/Bugzilla/DB/Schema/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm
new file mode 100644
index 0000000000000000000000000000000000000000..09c4731ac8448eb5ff834bb0c7b2d5ceab4e5dfe
--- /dev/null
+++ b/Bugzilla/Field.pm
@@ -0,0 +1,131 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# Contributor(s): Dan Mosedale <dmose@mozilla.org>
+#                 Fr�d�ric Buclin <LpSolit@gmail.com>
+
+package Bugzilla::Field;
+
+use strict;
+
+use base qw(Exporter);
+@Bugzilla::Field::EXPORT = qw(check_form_field check_form_field_defined
+                              get_field_id);
+
+use Bugzilla::Util;
+use Bugzilla::Error;
+
+
+sub check_form_field {
+    my ($cgi, $fieldname, $legalsRef) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    if (!defined $cgi->param($fieldname)
+        || trim($cgi->param($fieldname)) eq ""
+        || (defined($legalsRef)
+            && lsearch($legalsRef, $cgi->param($fieldname)) < 0))
+    {
+        trick_taint($fieldname);
+        my ($result) = $dbh->selectrow_array("SELECT description FROM fielddefs
+                                              WHERE name = ?", undef, $fieldname);
+        
+        my $field = $result || $fieldname;
+        ThrowCodeError("illegal_field", { field => $field });
+    }
+}
+
+sub check_form_field_defined {
+    my ($cgi, $fieldname) = @_;
+
+    if (!defined $cgi->param($fieldname)) {
+        ThrowCodeError("undefined_field", { field => $fieldname });
+    }
+}
+
+sub get_field_id {
+    my ($name) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    trick_taint($name);
+    my $id = $dbh->selectrow_array('SELECT fieldid FROM fielddefs
+                                    WHERE name = ?', undef, $name);
+
+    ThrowCodeError('invalid_field_name', {field => $name}) unless $id;
+    return $id
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Bugzilla::Field - Useful routines for fields manipulation
+
+=head1 SYNOPSIS
+
+  use Bugzilla::Field;
+
+  # Validation Routines
+  check_form_field($cgi, $fieldname, \@legal_values);
+  check_form_field_defined($cgi, $fieldname);
+  $fieldid = get_field_id($fieldname);
+
+=head1 DESCRIPTION
+
+This package provides functions for dealing with CGI form fields.
+
+=head1 FUNCTIONS
+
+This package provides several types of routines:
+
+=head2 Validation
+
+=over
+
+=item C<check_form_field($cgi, $fieldname, \@legal_values)>
+
+Description: Makes sure the field $fieldname is defined and its value
+             is non empty. If @legal_values is defined, this routine
+             also checks whether its value is one of the legal values
+             associated with this field. If the test fails, an error
+             is thrown.
+
+Params:      $cgi          - a CGI object
+             $fieldname    - the field name to check
+             @legal_values - (optional) ref to a list of legal values
+
+Returns:     nothing
+
+=item C<check_form_field_defined($cgi, $fieldname)>
+
+Description: Makes sure the field $fieldname is defined and its value
+             is non empty. Else an error is thrown.
+
+Params:      $cgi       - a CGI object
+             $fieldname - the field name to check
+
+Returns:     nothing
+
+=item C<get_field_id($fieldname)>
+
+Description: Returns the ID of the specified field name and throws
+             an error if this field does not exist.
+
+Params:      $fieldname - a field name
+
+Returns:     the corresponding field ID or an error if the field name
+             does not exist.
+
+=back
diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm
index 65636d78c3f51dc03adb950eb210ce1fb7801593..34ded7dd2224e5b8d5d4a8902473f539c4ce81e6 100644
--- a/Bugzilla/Flag.pm
+++ b/Bugzilla/Flag.pm
@@ -37,12 +37,11 @@ See below for more information.
 =item *
 
 Prior to calling routines in this module, it's assumed that you have
-already done a C<require CGI.pl>.  This will eventually change in a
-future version when CGI.pl is removed.
+already done a C<require globals.pl>.
 
 =item *
 
-Import relevant functions from that script and its companion globals.pl.
+Import relevant functions from that script.
 
 =item *
 
@@ -73,6 +72,7 @@ use Bugzilla::Error;
 use Bugzilla::Attachment;
 use Bugzilla::BugMail;
 use Bugzilla::Constants;
+use Bugzilla::Field;
 
 # Note that this line doesn't actually import these variables for some reason,
 # so I have to use them as $::template and $::vars in the package code.
@@ -279,6 +279,7 @@ sub validate {
 
     foreach my $id (@ids) {
         my $status = $cgi->param("flag-$id");
+        my @requestees = $cgi->param("requestee-$id");
         
         # Make sure the flag exists.
         my $flag = get($id);
@@ -295,66 +296,79 @@ sub validate {
                             { id => $id, status => $status });
                 
         # Make sure the user didn't request the flag unless it's requestable.
-        # If the flag was requested before it became unrequestable, leave it as is.
-        if ($status eq '?' && $flag->{status} ne '?' && 
-            !$flag->{type}->{is_requestable}) {
+        # If the flag was requested before it became unrequestable, leave it
+        # as is.
+        if ($status eq '?'
+            && $flag->{status} ne '?'
+            && !$flag->{type}->{is_requestable})
+        {
             ThrowCodeError("flag_status_invalid", 
                            { id => $id, status => $status });
         }
 
         # Make sure the user didn't specify a requestee unless the flag
         # is specifically requestable. If the requestee was set before
-        # the flag became specifically unrequestable, leave it as is.
-        my $old_requestee =
-            $flag->{'requestee'} ? $flag->{'requestee'}->login : '';
-        my $new_requestee = trim($cgi->param("requestee-$id") || '');
+        # the flag became specifically unrequestable, don't let the user
+        # change the requestee, but let the user remove it by entering
+        # an empty string for the requestee.
+        if ($status eq '?' && !$flag->{type}->{is_requesteeble}) {
+            my $old_requestee =
+                $flag->{'requestee'} ? $flag->{'requestee'}->login : '';
+            my $new_requestee = join('', @requestees);
+            if ($new_requestee && $new_requestee ne $old_requestee) {
+                ThrowCodeError("flag_requestee_disabled",
+                               { type => $flag->{type} });
+            }
+        }
 
+        # Make sure the user didn't enter multiple requestees for a flag
+        # that can't be requested from more than one person at a time.
         if ($status eq '?'
-            && !$flag->{type}->{is_requesteeble}
-            && $new_requestee
-            && ($new_requestee ne $old_requestee))
+            && !$flag->{type}->{is_multiplicable}
+            && scalar(@requestees) > 1)
         {
-            ThrowCodeError("flag_requestee_disabled",
-                           { name => $flag->{type}->{name} });
+            ThrowUserError("flag_not_multiplicable", { type => $flag->{type} });
         }
 
-        # Make sure the requestee is authorized to access the bug.
+        # Make sure the requestees are authorized to access the bug.
         # (and attachment, if this installation is using the "insider group"
         # feature and the attachment is marked private).
-        if ($status eq '?'
-            && $flag->{type}->{is_requesteeble}
-            && $new_requestee
-            && ($old_requestee ne $new_requestee))
-        {
-            # We know the requestee exists because we ran
-            # Bugzilla::User::match_field before getting here.
-            my $requestee = Bugzilla::User->new_from_login($new_requestee);
-
-            # Throw an error if the user can't see the bug.
-            # Note that if permissions on this bug are changed,
-            # can_see_bug() will refer to old settings.
-            if (!$requestee->can_see_bug($bug_id)) {
-                ThrowUserError("flag_requestee_unauthorized",
-                               { flag_type => $flag->{'type'},
-                                 requestee => $requestee,
-                                 bug_id => $bug_id,
-                                 attach_id =>
-                                   $flag->{target}->{attachment}->{id} });
-            }
-
-            # Throw an error if the target is a private attachment and
-            # the requestee isn't in the group of insiders who can see it.
-            if ($flag->{target}->{attachment}->{exists}
-                && $cgi->param('isprivate')
-                && Param("insidergroup")
-                && !$requestee->in_group(Param("insidergroup")))
-            {
-                ThrowUserError("flag_requestee_unauthorized_attachment",
-                               { flag_type => $flag->{'type'},
-                                 requestee => $requestee,
-                                 bug_id    => $bug_id,
-                                 attach_id =>
-                                  $flag->{target}->{attachment}->{id} });
+        if ($status eq '?' && $flag->{type}->{is_requesteeble}) {
+            my $old_requestee =
+                $flag->{'requestee'} ? $flag->{'requestee'}->login : '';
+            foreach my $login (@requestees) {
+                next if $login eq $old_requestee;
+
+                # We know the requestee exists because we ran
+                # Bugzilla::User::match_field before getting here.
+                my $requestee = Bugzilla::User->new_from_login($login);
+                
+                # Throw an error if the user can't see the bug.
+                # Note that if permissions on this bug are changed,
+                # can_see_bug() will refer to old settings.
+                if (!$requestee->can_see_bug($bug_id)) {
+                    ThrowUserError("flag_requestee_unauthorized",
+                                   { flag_type  => $flag->{'type'},
+                                     requestee  => $requestee,
+                                     bug_id     => $bug_id,
+                                     attachment => $flag->{target}->{attachment}
+                                   });
+                }
+    
+                # Throw an error if the target is a private attachment and
+                # the requestee isn't in the group of insiders who can see it.
+                if ($flag->{target}->{attachment}
+                    && $cgi->param('isprivate')
+                    && Param("insidergroup")
+                    && !$requestee->in_group(Param("insidergroup")))
+                {
+                    ThrowUserError("flag_requestee_unauthorized_attachment",
+                                   { flag_type  => $flag->{'type'},
+                                     requestee  => $requestee,
+                                     bug_id     => $bug_id,
+                                     attachment => $flag->{target}->{attachment}
+                                   });
+                }
             }
         }
 
@@ -415,11 +429,12 @@ used to obtain the flag fields that the user submitted.
 =cut
 
 sub process {
-    my ($target, $timestamp, $cgi) = @_;
+    my ($bug_id, $attach_id, $timestamp, $cgi) = @_;
 
     my $dbh = Bugzilla->dbh;
-    my $bug_id = $target->{'bug'}->{'id'};
-    my $attach_id = $target->{'attachment'}->{'id'};
+    my $target = get_target($bug_id, $attach_id);
+    # Make sure the target exists.
+    return unless $target->{'exists'};
 
     # Use the date/time we were given if possible (allowing calling code
     # to synchronize the comment's timestamp with those of other records).
@@ -486,7 +501,7 @@ sub update_activity {
     if ($removed ne $added) {
         my $sql_removed = &::SqlQuote($removed);
         my $sql_added = &::SqlQuote($added);
-        my $field_id = &::GetFieldID('flagtypes.name');
+        my $field_id = get_field_id('flagtypes.name');
         $dbh->do("INSERT INTO bugs_activity
                   (bug_id, attach_id, who, bug_when, fieldid, removed, added)
                   VALUES ($bug_id, $attach_id, $::userid, $timestamp,
@@ -518,7 +533,9 @@ sub create {
     $flag->{'id'} = (&::FetchOneColumn() || 0) + 1;
     
     # Insert a record for the flag into the flags table.
-    my $attach_id = $flag->{'target'}->{'attachment'}->{'id'} || "NULL";
+    my $attach_id =
+      $flag->{target}->{attachment} ? $flag->{target}->{attachment}->{id}
+                                    : "NULL";
     my $requestee_id = $flag->{'requestee'} ? $flag->{'requestee'}->id : "NULL";
     &::SendSQL("INSERT INTO flags (id, type_id, 
                                       bug_id, attach_id, 
@@ -590,7 +607,7 @@ sub modify {
 
     # Use the date/time we were given if possible (allowing calling code
     # to synchronize the comment's timestamp with those of other records).
-    $timestamp = ($timestamp ? &::SqlQuote($timestamp) : "NOW()");
+    my $sql_timestamp = ($timestamp ? &::SqlQuote($timestamp) : "NOW()");
     
     # Extract a list of flags from the form data.
     my @ids = map(/^flag-(\d+)$/ ? $1 : (), $cgi->param());
@@ -604,9 +621,35 @@ sub modify {
         my $flag = get($id);
 
         my $status = $cgi->param("flag-$id");
-        my $requestee_email = trim($cgi->param("requestee-$id") || '');
 
         
+        # If the user entered more than one name into the requestee field
+        # (i.e. they want more than one person to set the flag) we can reuse
+        # the existing flag for the first person (who may well be the existing
+        # requestee), but we have to create new flags for each additional.
+        my @requestees = $cgi->param("requestee-$id");
+        my $requestee_email;
+        if ($status eq "?"
+            && scalar(@requestees) > 1
+            && $flag->{type}->{is_multiplicable})
+        {
+            # The first person, for which we'll reuse the existing flag.
+            $requestee_email = shift(@requestees);
+  
+            # Create new flags like the existing one for each additional person.
+            foreach my $login (@requestees) {
+                create({ type      => $flag->{type} ,
+                         target    => $flag->{target} , 
+                         setter    => new Bugzilla::User($::userid), 
+                         status    => "?",
+                         requestee => new Bugzilla::User(login_to_id($login)) },
+                       $timestamp);
+            }
+        }
+        else {
+            $requestee_email = trim($cgi->param("requestee-$id") || '');
+        }
+
         # Ignore flags the user didn't change. There are two components here:
         # either the status changes (trivial) or the requestee changes.
         # Change of either field will cause full update of the flag.
@@ -639,7 +682,7 @@ sub modify {
                         SET    setter_id = $::userid , 
                                requestee_id = NULL , 
                                status = '$status' , 
-                               modification_date = $timestamp ,
+                               modification_date = $sql_timestamp ,
                                is_active = 1
                         WHERE  id = $flag->{'id'}");
             
@@ -664,7 +707,7 @@ sub modify {
                         SET    setter_id = $::userid , 
                                requestee_id = $requestee_id , 
                                status = '$status' , 
-                               modification_date = $timestamp ,
+                               modification_date = $sql_timestamp ,
                                is_active = 1
                         WHERE  id = $flag->{'id'}");
             
@@ -743,7 +786,7 @@ sub FormToNewFlags {
     my @type_ids = map(/^flag_type-(\d+)$/ ? $1 : (), $cgi->param());
     @type_ids = grep($cgi->param("flag_type-$_") ne 'X', @type_ids);
 
-    return () unless (scalar(@type_ids) && $target->{'exists'});
+    return () unless scalar(@type_ids);
 
     # Get information about the setter to add to each flag.
     my $setter = new Bugzilla::User($::userid);
@@ -767,7 +810,8 @@ sub FormToNewFlags {
             { 'type_id'     => $type_id,
               'target_type' => $target->{'type'},
               'bug_id'      => $target->{'bug'}->{'id'},
-              'attach_id'   => $target->{'attachment'}->{'id'},
+              'attach_id'   => $target->{'attachment'} ?
+                                 $target->{'attachment'}->{'id'} : undef,
               'is_active'   => 1 });
 
         # Do not create a new flag of this type if this flag type is
@@ -776,25 +820,25 @@ sub FormToNewFlags {
 
         my $status = $cgi->param("flag_type-$type_id");
         trick_taint($status);
-    
-        # Create the flag record and populate it with data from the form.
-        my $flag = { 
-            type   => $flag_type ,
-            target => $target , 
-            setter => $setter , 
-            status => $status 
-        };
-
-        if ($status eq "?") {
-            my $requestee = $cgi->param("requestee_type-$type_id");
-            if ($requestee) {
-                my $requestee_id = login_to_id($requestee);
-                $flag->{'requestee'} = new Bugzilla::User($requestee_id);
+
+        my @logins = $cgi->param("requestee_type-$type_id");
+        if ($status eq "?" && scalar(@logins) > 0) {
+            foreach my $login (@logins) {
+                my $requestee = new Bugzilla::User(login_to_id($login));
+                push (@flags, { type      => $flag_type ,
+                                target    => $target , 
+                                setter    => $setter , 
+                                status    => $status ,
+                                requestee => $requestee });
+                last if !$flag_type->{'is_multiplicable'};
             }
         }
-        
-        # Add the flag to the array of flags.
-        push(@flags, $flag);
+        else {
+            push (@flags, { type   => $flag_type ,
+                            target => $target , 
+                            setter => $setter , 
+                            status => $status });
+        }
     }
 
     # Return the list of flags.
@@ -847,7 +891,7 @@ sub GetBug {
 
 =over
 
-=item C<GetTarget($bug_id, $attach_id)>
+=item C<get_target($bug_id, $attach_id)>
 
 Someone please document this function.
 
@@ -855,22 +899,25 @@ Someone please document this function.
 
 =cut
 
-sub GetTarget {
+sub get_target {
     my ($bug_id, $attach_id) = @_;
     
     # Create an object representing the target bug/attachment.
     my $target = { 'exists' => 0 };
 
     if ($attach_id) {
-        $target->{'attachment'} = new Bugzilla::Attachment($attach_id);
+        $target->{'attachment'} = Bugzilla::Attachment->get($attach_id);
         if ($bug_id) {
             # Make sure the bug and attachment IDs correspond to each other
             # (i.e. this is the bug to which this attachment is attached).
-            $bug_id == $target->{'attachment'}->{'bug_id'}
-              || return { 'exists' => 0 };
+            if (!$target->{'attachment'}
+                || $target->{'attachment'}->{'bug_id'} != $bug_id)
+            {
+              return { 'exists' => 0 };
+            }
         }
-        $target->{'bug'} = GetBug($target->{'attachment'}->{'bug_id'});
-        $target->{'exists'} = $target->{'attachment'}->{'exists'};
+        $target->{'bug'} = GetBug($bug_id);
+        $target->{'exists'} = 1;
         $target->{'type'} = "attachment";
     }
     elsif ($bug_id) {
@@ -897,22 +944,21 @@ Sends an email notification about a flag being created or fulfilled.
 sub notify {
     my ($flag, $template_file) = @_;
 
+    my $attachment_is_private = $flag->{'target'}->{'attachment'} ?
+      $flag->{'target'}->{'attachment'}->{'isprivate'} : undef;
+
     # If the target bug is restricted to one or more groups, then we need
     # to make sure we don't send email about it to unauthorized users
     # on the request type's CC: list, so we have to trawl the list for users
     # not in those groups or email addresses that don't have an account.
-    if ($flag->{'target'}->{'bug'}->{'restricted'}
-        || $flag->{'target'}->{'attachment'}->{'isprivate'})
-    {
+    if ($flag->{'target'}->{'bug'}->{'restricted'} || $attachment_is_private) {
         my @new_cc_list;
         foreach my $cc (split(/[, ]+/, $flag->{'type'}->{'cc_list'})) {
-            my $ccuser = Bugzilla::User->new_from_login($cc,
-                                                        DERIVE_GROUPS_TABLES_ALREADY_LOCKED)
-              || next;
+            my $ccuser = Bugzilla::User->new_from_login($cc) || next;
 
             next if $flag->{'target'}->{'bug'}->{'restricted'}
               && !$ccuser->can_see_bug($flag->{'target'}->{'bug'}->{'id'});
-            next if $flag->{'target'}->{'attachment'}->{'isprivate'}
+            next if $attachment_is_private
               && Param("insidergroup")
               && !$ccuser->in_group(Param("insidergroup"));
             push(@new_cc_list, $cc);
@@ -1039,7 +1085,7 @@ sub perlify_record {
         exists    => $exists , 
         id        => $id ,
         type      => Bugzilla::FlagType::get($type_id) ,
-        target    => GetTarget($bug_id, $attach_id) , 
+        target    => get_target($bug_id, $attach_id) , 
         requestee => $requestee_id ? new Bugzilla::User($requestee_id) : undef,
         setter    => new Bugzilla::User($setter_id) ,
         status    => $status , 
diff --git a/Bugzilla/FlagType.pm b/Bugzilla/FlagType.pm
index 49c9f777e8d597b8644b73c375c31e53aaecec29..a7a32c5ccbd0c18d706d5d18832fba199b3c535b 100644
--- a/Bugzilla/FlagType.pm
+++ b/Bugzilla/FlagType.pm
@@ -35,8 +35,7 @@ See below for more information.
 =item *
 
 Prior to calling routines in this module, it's assumed that you have
-already done a C<require CGI.pl>.  This will eventually change in a
-future version when CGI.pl is removed.
+already done a C<require globals.pl>.
 
 =item *
 
@@ -353,6 +352,7 @@ sub validate {
 
     foreach my $id (@ids) {
         my $status = $cgi->param("flag_type-$id");
+        my @requestees = $cgi->param("requestee_type-$id");
         
         # Don't bother validating types the user didn't touch.
         next if $status eq "X";
@@ -375,48 +375,53 @@ sub validate {
         
         # Make sure the user didn't specify a requestee unless the flag
         # is specifically requestable.
-        my $new_requestee = trim($cgi->param("requestee_type-$id") || '');
-
         if ($status eq '?'
             && !$flag_type->{is_requesteeble}
-            && $new_requestee)
+            && scalar(@requestees) > 0)
         {
-            ThrowCodeError("flag_requestee_disabled",
-                           { name => $flag_type->{name} });
+            ThrowCodeError("flag_requestee_disabled", { type => $flag_type });
         }
 
-        # Make sure the requestee is authorized to access the bug
-        # (and attachment, if this installation is using the "insider group"
-        # feature and the attachment is marked private).
+        # Make sure the user didn't enter multiple requestees for a flag
+        # that can't be requested from more than one person at a time.
         if ($status eq '?'
-            && $flag_type->{is_requesteeble}
-            && $new_requestee)
+            && !$flag_type->{is_multiplicable}
+            && scalar(@requestees) > 1)
         {
-            # We know the requestee exists because we ran
-            # Bugzilla::User::match_field before getting here.
-            my $requestee = Bugzilla::User->new_from_login($new_requestee);
-
-            # Throw an error if the user can't see the bug.
-            if (!$requestee->can_see_bug($bug_id)) {
-                ThrowUserError("flag_requestee_unauthorized",
-                               { flag_type => $flag_type,
-                                 requestee => $requestee,
-                                 bug_id    => $bug_id,
-                                 attach_id => $attach_id });
-            }
-            
-            # Throw an error if the target is a private attachment and
-            # the requestee isn't in the group of insiders who can see it.
-            if ($attach_id
-                && Param("insidergroup")
-                && $cgi->param('isprivate')
-                && !$requestee->in_group(Param("insidergroup")))
-            {
-                ThrowUserError("flag_requestee_unauthorized_attachment",
-                               { flag_type => $flag_type,
-                                 requestee => $requestee,
-                                 bug_id    => $bug_id,
-                                 attach_id => $attach_id });
+            ThrowUserError("flag_not_multiplicable", { type => $flag_type });
+        }
+
+        # Make sure the requestees are authorized to access the bug
+        # (and attachment, if this installation is using the "insider group"
+        # feature and the attachment is marked private).
+        if ($status eq '?' && $flag_type->{is_requesteeble}) {
+            foreach my $login (@requestees) {
+                # We know the requestee exists because we ran
+                # Bugzilla::User::match_field before getting here.
+                my $requestee = Bugzilla::User->new_from_login($login);
+    
+                # Throw an error if the user can't see the bug.
+                if (!$requestee->can_see_bug($bug_id)) {
+                    ThrowUserError("flag_requestee_unauthorized",
+                                   { flag_type => $flag_type,
+                                     requestee => $requestee,
+                                     bug_id    => $bug_id,
+                                     attach_id => $attach_id });
+                }
+                
+                # Throw an error if the target is a private attachment and
+                # the requestee isn't in the group of insiders who can see it.
+                if ($attach_id
+                    && Param("insidergroup")
+                    && $cgi->param('isprivate')
+                    && !$requestee->in_group(Param("insidergroup")))
+                {
+                    ThrowUserError("flag_requestee_unauthorized_attachment",
+                                   { flag_type => $flag_type,
+                                     requestee => $requestee,
+                                     bug_id    => $bug_id,
+                                     attach_id => $attach_id });
+                }
             }
         }
 
diff --git a/Bugzilla/Group.pm b/Bugzilla/Group.pm
index 2cb8e534202924c40b1099a47065b5e0bb7bd6d6..54fff489bca2b4bf1f859996a7751ad32502aca8 100644
--- a/Bugzilla/Group.pm
+++ b/Bugzilla/Group.pm
@@ -19,16 +19,92 @@
 #
 # Contributor(s): Joel Peshkin <bugreport@peshkin.net>
 #                 Erik Stambaugh <erik@dasbistro.com>
+#                 Tiago R. Mello <timello@async.com.br>
 
 use strict;
 
 package Bugzilla::Group;
 
 use Bugzilla::Config;
+use Bugzilla::Util;
+use Bugzilla::Error;
+
+###############################
+##### Module Initialization ###
+###############################
+
+use constant DB_COLUMNS => qw(
+    groups.id
+    groups.name
+    groups.description
+    groups.isbuggroup
+    groups.last_changed
+    groups.userregexp
+    groups.isactive
+);
+
+our $columns = join(", ", DB_COLUMNS);
+
+sub new {
+    my $invocant = shift;
+    my $class = ref($invocant) || $invocant;
+    my $self = {};
+    bless($self, $class);
+    return $self->_init(@_);
+}
+
+sub _init {
+    my $self = shift;
+    my ($param) = (@_);
+    my $dbh = Bugzilla->dbh;
+
+    my $id = $param unless (ref $param eq 'HASH');
+    my $group;
+
+    if (defined $id && detaint_natural($id)) {
+
+        $group = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM groups
+            WHERE id = ?}, undef, $id);
+
+    } elsif (defined $param->{'name'}) {
+
+        trick_taint($param->{'name'});
+
+        $group = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM groups
+            WHERE name = ?}, undef, $param->{'name'});
+
+    } else {
+        ThrowCodeError('bad_arg',
+            {argument => 'param',
+             function => 'Bugzilla::Group::_init'});
+    }
+
+    return undef unless (defined $group);
+
+    foreach my $field (keys %$group) {
+        $self->{$field} = $group->{$field};
+    }
+    return $self;
+}
+
+###############################
+####      Accessors      ######
+###############################
+
+sub id           { return $_[0]->{'id'};           }
+sub name         { return $_[0]->{'name'};         }
+sub description  { return $_[0]->{'description'};  }
+sub is_bug_group { return $_[0]->{'isbuggroup'};   }
+sub last_changed { return $_[0]->{'last_changed'}; }
+sub user_regexp  { return $_[0]->{'userregexp'};   }
+sub is_active    { return $_[0]->{'isactive'};     }
+
+################################
+#####  Module Subroutines    ###
+################################
 
-# ValidateGroupName checks to see if ANY of the users in the provided list 
-# of user objects can see the named group.  It returns the group id if
-# successful and undef otherwise.
 sub ValidateGroupName {
     my ($name, @users) = (@_);
     my $dbh = Bugzilla->dbh;
@@ -48,4 +124,125 @@ sub ValidateGroupName {
     return $ret;
 }
 
+sub get_group_controls_by_product {
+    my ($product_id) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    my $query = qq{SELECT
+                       $columns,
+                       group_control_map.entry,
+                       group_control_map.membercontrol,
+                       group_control_map.othercontrol,
+                       group_control_map.canedit
+                  FROM groups
+                  LEFT JOIN group_control_map
+                        ON groups.id = group_control_map.group_id
+                  WHERE group_control_map.product_id = ?
+                  AND   groups.isbuggroup != 0
+                  ORDER BY groups.name};
+    my $groups = $dbh->selectall_hashref($query, 'id', undef,
+                                         ($product_id));
+    return $groups;
+}
+
+sub get_all_groups {
+    my $dbh = Bugzilla->dbh;
+
+    my $group_ids = $dbh->selectcol_arrayref('SELECT id FROM groups
+                                              ORDER BY isbuggroup, name');
+
+    my @groups;
+    foreach my $gid (@$group_ids) {
+        push @groups, new Bugzilla::Group($gid);
+    }
+    return @groups;
+}
+
 1;
+
+__END__
+
+=head1 NAME
+
+Bugzilla::Group - Bugzilla group class.
+
+=head1 SYNOPSIS
+
+    use Bugzilla::Group;
+
+    my $group = new Bugzilla::Group(1);
+    my $group = new Bugzilla::Group({name => 'AcmeGroup'});
+
+    my $id           = $group->id;
+    my $name         = $group->name;
+    my $description  = $group->description;
+    my $last_changed = $group->last_changed;
+    my $user_reg_exp = $group->user_reg_exp;
+    my $is_active    = $group->is_active;
+
+    my $group_id = Bugzilla::Group::ValidateGroupName('admin', @users);
+    my $groups = Bugzilla::Group::get_group_controls_by_product(1);
+    my @groups = Bugzilla::get_all_groups();
+
+=head1 DESCRIPTION
+
+Group.pm represents a Bugzilla Group object.
+
+=head1 METHODS
+
+=over
+
+=item C<new($param)>
+
+ Description: The constructor is used to load an existing group
+              by passing a group id or a hash with the group name.
+
+ Params:      $param - If you pass an integer, the integer is the
+                       group id from the database that we want to
+                       read in. If you pass in a hash with 'name'
+                       key, then the value of the name key is the
+                       name of a product from the DB.
+
+ Returns:     A Bugzilla::Group object.
+
+=back
+
+=head1 SUBROUTINES
+
+=over
+
+=item C<ValidateGroupName($name, @users)>
+
+ Description: ValidateGroupName checks to see if ANY of the users
+              in the provided list of user objects can see the
+              named group.
+
+ Params:      $name - String with the group name.
+              @users - An array with Bugzilla::User objects.
+
+ Returns:     It returns the group id if successful
+              and undef otherwise.
+
+=item C<get_group_controls_by_product($product_id)>
+
+ Description: Returns all group controls of a specific product.
+              It is encouraged to use Bugzilla::Product object
+              instead of directly calling this routine.
+
+ Params:      $product_id - Integer with a Bugzilla product id.
+
+ Returns:     A hash with group id as key and hash containing the
+              group data as value.
+
+=item C<get_all_groups()>
+
+ Description: Returns all groups available, including both
+              system groups and bug groups.
+
+ Params:      none
+
+ Returns:     An array of group objects.
+
+=back
+
+=cut
diff --git a/Bugzilla/Milestone.pm b/Bugzilla/Milestone.pm
new file mode 100644
index 0000000000000000000000000000000000000000..6a5eeb48fd348410a42893cce103010d27bb128a
--- /dev/null
+++ b/Bugzilla/Milestone.pm
@@ -0,0 +1,231 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# Contributor(s): Tiago R. Mello <timello@async.com.br>
+
+use strict;
+
+package Bugzilla::Milestone;
+
+use Bugzilla::Util;
+use Bugzilla::Error;
+
+################################
+#####    Initialization    #####
+################################
+
+use constant DEFAULT_SORTKEY => 0;
+
+use constant DB_COLUMNS => qw(
+    milestones.value
+    milestones.product_id
+    milestones.sortkey
+);
+
+my $columns = join(", ", DB_COLUMNS);
+
+sub new {
+    my $invocant = shift;
+    my $class = ref($invocant) || $invocant;
+    my $self = {};
+    bless($self, $class);
+    return $self->_init(@_);
+}
+
+sub _init {
+    my $self = shift;
+    my ($product_id, $value) = (@_);
+    my $dbh = Bugzilla->dbh;
+
+    my $milestone;
+
+    if (defined $product_id
+        && detaint_natural($product_id)
+        && defined $value) {
+
+        trick_taint($value);
+        $milestone = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM milestones
+            WHERE value = ?
+            AND product_id = ?}, undef, ($value, $product_id));
+    } else {
+        ThrowCodeError('bad_arg',
+            {argument => 'product_id/value',
+             function => 'Bugzilla::Milestone::_init'});
+    }
+
+    return undef unless (defined $milestone);
+
+    foreach my $field (keys %$milestone) {
+        $self->{$field} = $milestone->{$field};
+    }
+    return $self;
+}
+
+sub bug_count {
+    my $self = shift;
+    my $dbh = Bugzilla->dbh;
+
+    if (!defined $self->{'bug_count'}) {
+        $self->{'bug_count'} = $dbh->selectrow_array(q{
+            SELECT COUNT(*) FROM bugs
+            WHERE product_id = ? AND target_milestone = ?},
+            undef, $self->product_id, $self->name) || 0;
+    }
+    return $self->{'bug_count'};
+}
+
+################################
+#####      Accessors      ######
+################################
+
+sub name       { return $_[0]->{'value'};      }
+sub product_id { return $_[0]->{'product_id'}; }
+sub sortkey    { return $_[0]->{'sortkey'};    }
+
+################################
+#####     Subroutines      #####
+################################
+
+sub get_milestones_by_product {
+    my ($product_id) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    my $stored_product_id = $product_id;
+    unless (detaint_natural($product_id)) {
+        ThrowCodeError(
+            'invalid_numeric_argument',
+            {argument => 'product_id',
+             value    => $stored_product_id,
+             function =>
+                'Bugzilla::Milestone::get_milestones_by_product'}
+        );
+    }
+
+    my $values = $dbh->selectcol_arrayref(q{
+        SELECT value FROM milestones
+        WHERE product_id = ?}, undef, $product_id);
+
+    my @milestones;
+    foreach my $value (@$values) {
+        push @milestones, new Bugzilla::Milestone($product_id, $value);
+    }
+    return @milestones;
+}
+
+sub check_milestone {
+    my ($product, $milestone_name) = @_;
+
+    unless ($milestone_name) {
+        ThrowUserError('milestone_not_specified');
+    }
+
+    my $milestone = new Bugzilla::Milestone($product->id,
+                                            $milestone_name);
+    unless ($milestone) {
+        ThrowUserError('milestone_not_valid',
+                       {'product' => $product->name,
+                        'milestone' => $milestone_name});
+    }
+    return $milestone;
+}
+
+sub check_sort_key {
+    my ($milestone_name, $sortkey) = @_;
+    # Keep a copy in case detaint_signed() clears the sortkey
+    my $stored_sortkey = $sortkey;
+
+    if (!detaint_signed($sortkey) || $sortkey < -32768
+        || $sortkey > 32767) {
+        ThrowUserError('milestone_sortkey_invalid',
+                       {'name' => $milestone_name,
+                        'sortkey' => $stored_sortkey});
+    }
+    return $sortkey;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Bugzilla::Milestone - Bugzilla product milestone class.
+
+=head1 SYNOPSIS
+
+    use Bugzilla::Milestone;
+
+    my $milestone = new Bugzilla::Milestone(1, 'milestone_value');
+
+    my $product_id = $milestone->product_id;
+    my $value = $milestone->value;
+
+    my $hash_ref = Bugzilla::Milestone::get_milestones_by_product(1);
+    my $milestone = $hash_ref->{'milestone_value'};
+
+=head1 DESCRIPTION
+
+Milestone.pm represents a Product Milestone object.
+
+=head1 METHODS
+
+=over
+
+=item C<new($product_id, $value)>
+
+ Description: The constructor is used to load an existing milestone
+              by passing a product id and a milestone value.
+
+ Params:      $product_id - Integer with a Bugzilla product id.
+              $value - String with a milestone value.
+
+ Returns:     A Bugzilla::Milestone object.
+
+=item C<bug_count()>
+
+ Description: Returns the total of bugs that belong to the milestone.
+
+ Params:      none.
+
+ Returns:     Integer with the number of bugs.
+
+=back
+
+=head1 SUBROUTINES
+
+=over
+
+=item C<get_milestones_by_product($product_id)>
+
+ Description: Returns all product milestones that belong
+              to the supplied product.
+
+ Params:      $product_id - Integer with a product id.
+
+ Returns:     Bugzilla::Milestone object list.
+
+=item C<check_milestone($product, $milestone_name)>
+
+ Description: Checks if a milestone name was passed in
+              and if it is a valid milestone.
+
+ Params:      $product - Bugzilla::Product object.
+              $milestone_name - String with a milestone name.
+
+ Returns:     Bugzilla::Milestone object.
+
+=back
+
+=cut
diff --git a/Bugzilla/Product.pm b/Bugzilla/Product.pm
new file mode 100644
index 0000000000000000000000000000000000000000..514620258d3a9642d6aaca652e3b22eb623e2d6a
--- /dev/null
+++ b/Bugzilla/Product.pm
@@ -0,0 +1,377 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# Contributor(s): Tiago R. Mello <timello@async.com.br>
+
+use strict;
+
+package Bugzilla::Product;
+
+use Bugzilla::Component;
+use Bugzilla::Classification;
+use Bugzilla::Version;
+use Bugzilla::Milestone;
+
+use Bugzilla::Util;
+use Bugzilla::Group;
+use Bugzilla::Error;
+
+use constant DEFAULT_CLASSIFICATION_ID => 1;
+
+###############################
+####    Initialization     ####
+###############################
+
+use constant DB_COLUMNS => qw(
+   products.id
+   products.name
+   products.classification_id
+   products.description
+   products.milestoneurl
+   products.disallownew
+   products.votesperuser
+   products.maxvotesperbug
+   products.votestoconfirm
+   products.defaultmilestone
+);
+
+my $columns = join(", ", DB_COLUMNS);
+
+sub new {
+    my $invocant = shift;
+    my $class = ref($invocant) || $invocant;
+    my $self = {};
+    bless($self, $class);
+    return $self->_init(@_);
+}
+
+sub _init {
+    my $self = shift;
+    my ($param) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    my $id = $param unless (ref $param eq 'HASH');
+    my $product;
+
+    if (defined $id && detaint_natural($id)) {
+
+        $product = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM products
+            WHERE id = ?}, undef, $id);
+
+    } elsif (defined $param->{'name'}) {
+
+        trick_taint($param->{'name'});
+        $product = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM products
+            WHERE name = ?}, undef, $param->{'name'});
+    } else {
+        ThrowCodeError('bad_arg',
+            {argument => 'param',
+             function => 'Bugzilla::Product::_init'});
+    }
+
+    return undef unless (defined $product);
+
+    foreach my $field (keys %$product) {
+        $self->{$field} = $product->{$field};
+    }
+    return $self;
+}
+
+###############################
+####       Methods         ####
+###############################
+
+sub components {
+    my $self = shift;
+
+    if (!defined $self->{components}) {
+        my @components =
+            Bugzilla::Component::get_components_by_product($self->id);
+        $self->{components} = \@components;
+    }
+    return $self->{components};
+}
+
+sub classification {
+    my $self = shift;
+
+    if (!defined $self->{'classification'}) {
+        $self->{'classification'} =
+            new Bugzilla::Classification($self->classification_id);
+    }
+    return $self->{'classification'};
+}
+
+sub group_controls {
+    my $self = shift;
+
+    if (!defined $self->{group_controls}) {
+        $self->{group_controls} =
+            Bugzilla::Group::get_group_controls_by_product($self->id);
+    }
+    return $self->{group_controls};
+}
+
+sub versions {
+    my $self = shift;
+
+    if (!defined $self->{versions}) {
+        my @versions =
+            Bugzilla::Version::get_versions_by_product($self->id);
+        $self->{versions} = \@versions;
+    }
+    return $self->{versions};
+}
+
+sub milestones {
+    my $self = shift;
+
+    if (!defined $self->{milestones}) {
+        my @milestones =
+            Bugzilla::Milestone::get_milestones_by_product($self->id);
+        $self->{milestones} = \@milestones;
+    }
+    return $self->{milestones};
+}
+
+sub bug_count {
+    my $self = shift;
+    my $dbh = Bugzilla->dbh;
+
+    if (!defined $self->{'bug_count'}) {
+        $self->{'bug_count'} = $dbh->selectrow_array(qq{
+            SELECT COUNT(bug_id) FROM bugs
+            WHERE product_id = ?}, undef, $self->id);
+
+    }
+    return $self->{'bug_count'};
+}
+
+###############################
+####      Accessors      ######
+###############################
+
+sub id                { return $_[0]->{'id'};                }
+sub name              { return $_[0]->{'name'};              }
+sub description       { return $_[0]->{'description'};       }
+sub milestone_url     { return $_[0]->{'milestoneurl'};      }
+sub disallow_new      { return $_[0]->{'disallownew'};       }
+sub votes_per_user    { return $_[0]->{'votesperuser'};      }
+sub max_votes_per_bug { return $_[0]->{'maxvotesperbug'};    }
+sub votes_to_confirm  { return $_[0]->{'votestoconfirm'};    }
+sub default_milestone { return $_[0]->{'defaultmilestone'};  }
+sub classification_id { return $_[0]->{'classification_id'}; }
+
+###############################
+####      Subroutines    ######
+###############################
+
+sub get_products_by_classification {
+    my ($class_id) = @_;
+    my $dbh = Bugzilla->dbh;
+    $class_id ||= DEFAULT_CLASSIFICATION_ID;
+
+    my $stored_class_id = $class_id;
+    unless (detaint_natural($class_id)) {
+        ThrowCodeError(
+            'invalid_numeric_argument',
+            {argument => 'product_id',
+             value    => $stored_class_id,
+             function =>
+                'Bugzilla::Product::get_classification_products'}
+        );
+    }
+
+    my $ids = $dbh->selectcol_arrayref(q{
+        SELECT id FROM products
+        WHERE classification_id = ? ORDER by name}, undef, $class_id);
+
+    my @products;
+    foreach my $id (@$ids) {
+        push @products, new Bugzilla::Product($id);
+    }
+    return @products;
+}
+
+sub get_all_products {
+    my $dbh = Bugzilla->dbh;
+
+    my $ids = $dbh->selectcol_arrayref(q{
+        SELECT id FROM products ORDER BY name});
+
+    my @products;
+    foreach my $id (@$ids) {
+        push @products, new Bugzilla::Product($id);
+    }
+    return @products;
+}
+
+sub check_product {
+    my ($product_name) = @_;
+
+    unless ($product_name) {
+        ThrowUserError('product_not_specified');
+    }
+    my $product = new Bugzilla::Product({name => $product_name});
+    unless ($product) {
+        ThrowUserError('product_doesnt_exist',
+                       {'product' => $product_name});
+    }
+    return $product;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Bugzilla::Product - Bugzilla product class.
+
+=head1 SYNOPSIS
+
+    use Bugzilla::Product;
+
+    my $product = new Bugzilla::Product(1);
+    my $product = new Bugzilla::Product('AcmeProduct');
+
+    my @components      = $product->components();
+    my $classification  = $product->classification();
+    my $groups_controls = $product->group_controls();
+    my @milestones      = $product->milestones();
+    my @versions        = $product->versions();
+    my $bugcount        = $product->bug_count();
+
+    my $id               = $product->id;
+    my $name             = $product->name;
+    my $description      = $product->description;
+    my $milestoneurl     = $product->milestone_url;
+    my disallownew       = $product->disallow_new;
+    my votesperuser      = $product->votes_per_user;
+    my maxvotesperbug    = $product->max_votes_per_bug;
+    my votestoconfirm    = $product->votes_to_confirm;
+    my $defaultmilestone = $product->default_milestone;
+    my $classificationid = $product->classification_id;
+
+    my @products = Bugzilla::Product::get_products_by_classification(1);
+
+=head1 DESCRIPTION
+
+Product.pm represents a product object.
+
+=head1 METHODS
+
+=over
+
+=item C<new($param)>
+
+ Description: The constructor is used to load an existing product
+              by passing a product id or a hash.
+
+ Params:      $param - If you pass an integer, the integer is the
+                       product id from the database that we want to
+                       read in. If you pass in a hash with 'name' key,
+                       then the value of the name key is the name of a
+                       product from the DB.
+
+ Returns:     A Bugzilla::Product object.
+
+=item C<components()>
+
+ Description: Returns an array of component objects belonging to
+              the product.
+
+ Params:      none.
+
+ Returns:     An array of Bugzilla::Component object.
+
+=item C<classification()>
+
+ Description: Returns a Bugzilla::Classification object for
+              the product classification.
+
+ Params:      none.
+
+ Returns:     A Bugzilla::Classification object.
+
+=item C<group_controls()>
+
+ Description: Returns a hash (group id as key) with all product
+              group controls.
+
+ Params:      none.
+
+ Returns:     A hash with group id as key and hash containing the
+              group data as value.
+
+=item C<versions()>
+
+ Description: Returns all valid versions for that product.
+
+ Params:      none.
+
+ Returns:     An array of Bugzilla::Version objects.
+
+=item C<milestones()>
+
+ Description: Returns all valid milestones for that product.
+
+ Params:      none.
+
+ Returns:     An array of Bugzilla::Milestone objects.
+
+=item C<bug_count()>
+
+ Description: Returns the total of bugs that belong to the product.
+
+ Params:      none.
+
+ Returns:     Integer with the number of bugs.
+
+=back
+
+=head1 SUBROUTINES
+
+=over
+
+=item C<get_products_by_classification($class_id)>
+
+ Description: Returns all products for a specific classification id.
+
+ Params:      $class_id - Integer with classification id.
+
+ Returns:     Bugzilla::Product object list.
+
+=item C<get_all_products()>
+
+ Description: Returns all products from the database.
+
+ Params:      none.
+
+ Returns:     Bugzilla::Product object list.
+
+=item C<check_product($product_name)>
+
+ Description: Checks if the product name was passed in and if is a valid
+              product.
+
+ Params:      $product_name - String with a product name.
+
+ Returns:     Bugzilla::Product object.
+
+=back
+
+=cut
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm
index 56d2846f37c176e27d2a69ff9a05efe99f0754d1..fc66d7f2413cbbaecd7e503df42d2947ed68acf9 100644
--- a/Bugzilla/Search.pm
+++ b/Bugzilla/Search.pm
@@ -25,10 +25,12 @@
 #                 Myk Melez <myk@mozilla.org>
 #                 Michael Schindler <michael@compressconsult.com>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Joel Peshkin <bugreport@peshkin.net>
+#                 Lance Larsh <lance.larsh@oracle.com>
 
 use strict;
 
-# The caller MUST require CGI.pl and globals.pl before using this
+# The caller MUST require globals.pl before using this module.
 
 use vars qw($userid);
 
@@ -42,6 +44,7 @@ use Bugzilla::Util;
 use Bugzilla::Constants;
 use Bugzilla::Group;
 use Bugzilla::User;
+use Bugzilla::Field;
 
 use Date::Format;
 use Date::Parse;
@@ -310,7 +313,7 @@ sub init {
                     push(@l, "bugs.creation_ts <= $sql_chto") if($sql_chto);
                     $bug_creation_clause = "(" . join(' AND ', @l) . ")";
                 } else {
-                    push(@list, "\nactcheck.fieldid = " . &::GetFieldID($f));
+                    push(@list, "\nactcheck.fieldid = " . get_field_id($f));
                 }
             }
 
@@ -349,14 +352,18 @@ sub init {
             
       if ($params->param('deadlinefrom')){
         $deadlinefrom = $params->param('deadlinefrom');
-        Bugzilla::Util::ValidateDate($deadlinefrom, 'deadlinefrom');
+        validate_date($deadlinefrom)
+          || ThrowUserError('illegal_date', {date => $deadlinefrom,
+                                             format => 'YYYY-MM-DD'});
         $sql_deadlinefrom = &::SqlQuote($deadlinefrom);
         push(@wherepart, "bugs.deadline >= $sql_deadlinefrom");
       }
       
       if ($params->param('deadlineto')){
         $deadlineto = $params->param('deadlineto');
-        Bugzilla::Util::ValidateDate($deadlineto, 'deadlineto');
+        validate_date($deadlineto)
+          || ThrowUserError('illegal_date', {date => $deadlineto,
+                                             format => 'YYYY-MM-DD'});
         $sql_deadlineto = &::SqlQuote($deadlineto);
         push(@wherepart, "bugs.deadline <= $sql_deadlineto");
       }
@@ -427,9 +434,14 @@ sub init {
              $term = "bugs.$f <> " . pronoun($1, $user);
           },
          "^(assigned_to|reporter),(?!changed)" => sub {
-             push(@supptables, "INNER JOIN profiles AS map_$f " .
-                               "ON bugs.$f = map_$f.userid");
-             $f = "map_$f.login_name";
+             my $list = $self->ListIDsForEmail($t, $v);
+             if ($list) {
+                 $term = "bugs.$f IN ($list)"; 
+             } else {
+                 push(@supptables, "INNER JOIN profiles AS map_$f " .
+                                   "ON bugs.$f = map_$f.userid");
+                 $f = "map_$f.login_name";
+             }
          },
          "^qa_contact,(?!changed)" => sub {
              push(@supptables, "LEFT JOIN profiles AS map_qa_contact " .
@@ -489,7 +501,7 @@ sub init {
                                "AND cc_$chartseq.who = $match");
              $term = "cc_$chartseq.who IS NULL";
          },
-         "^cc,(anyexact|substring)" => sub {
+         "^cc,(anyexact|substring|regexp)" => sub {
              my $list;
              $list = $self->ListIDsForEmail($t, $v);
              my $chartseq = $chartid;
@@ -576,10 +588,8 @@ sub init {
              # $term1 searches comments.
              # $term2 searches summaries, which contributes to the relevance
              # ranking in SELECT but doesn't limit which bugs get retrieved.
-             my $term1 = $dbh->sql_fulltext_search("${table}.thetext",
-                                                   ::SqlQuote($v));
-             my $term2 = $dbh->sql_fulltext_search("bugs.short_desc",
-                                                   ::SqlQuote($v));
+             my $term1 = $dbh->sql_fulltext_search("${table}.thetext", $v);
+             my $term2 = $dbh->sql_fulltext_search("bugs.short_desc", $v);
 
              # The term to use in the WHERE clause.
              $term = "$term1 > 0";
@@ -716,14 +726,23 @@ sub init {
              } elsif ($t eq "notequal") {
                  $oper = "<>";
              } elsif ($t eq "regexp") {
-                 $oper = $dbh->sql_regexp();
+                 # This is just a dummy to help catch bugs- $oper won't be used
+                 # since "regexp" is treated as a special case below.  But
+                 # leaving $oper uninitialized seems risky...
+                 $oper = "sql_regexp";
              } elsif ($t eq "notregexp") {
-                 $oper = $dbh->sql_not_regexp();
+                 # This is just a dummy to help catch bugs- $oper won't be used
+                 # since "notregexp" is treated as a special case below.  But
+                 # leaving $oper uninitialized seems risky...
+                 $oper = "sql_not_regexp";
              } else {
                  $oper = "noop";
              }
              if ($oper ne "noop") {
                  my $table = "longdescs_$chartid";
+                 if(lsearch(\@fields, "bugs.remaining_time") == -1) {
+                     push(@fields, "bugs.remaining_time");                  
+                 }
                  push(@supptables, "INNER JOIN longdescs AS $table " .
                                    "ON $table.bug_id = bugs.bug_id");
                  my $expression = "(100 * ((SUM($table.work_time) *
@@ -733,7 +752,13 @@ sub init {
                                               COUNT(DISTINCT $table.bug_when) /
                                               COUNT(bugs.bug_id)) +
                                              bugs.remaining_time)))";
-                 push(@having, "$expression $oper " . &::SqlQuote($v));
+                 if ($t eq "regexp") {
+                     push(@having, $dbh->sql_regexp($expression, &::SqlQuote($v)));
+                 } elsif ($t eq "notregexp") {
+                     push(@having, $dbh->sql_not_regexp($expression, &::SqlQuote($v)));
+                 } else {
+                     push(@having, "$expression $oper " . &::SqlQuote($v));
+                 }
                  push(@groupby, "bugs.remaining_time");
              }
              $term = "0=0";
@@ -748,6 +773,19 @@ sub init {
                     "ON groups_$chartid.id = bug_group_map_$chartid.group_id");
             $f = "groups_$chartid.name";
          },
+         "^attach_data\.thedata," => sub {
+             my $atable = "attachments_$chartid";
+             my $dtable = "attachdata_$chartid";
+             my $extra = "";
+             if (Param("insidergroup") && !UserInGroup(Param("insidergroup"))) {
+                 $extra = "AND $atable.isprivate = 0";
+             }
+             push(@supptables, "INNER JOIN attachments AS $atable " .
+                               "ON bugs.bug_id = $atable.bug_id $extra");
+             push(@supptables, "INNER JOIN attach_data AS $dtable " .
+                               "ON $dtable.id = $atable.attach_id");
+             $f = "$dtable.thedata";
+         },
          "^attachments\..*," => sub {
              my $table = "attachments_$chartid";
              my $extra = "";
@@ -961,7 +999,7 @@ sub init {
                 }
                 my $cutoff = "NOW() - " .
                              $dbh->sql_interval("$quantity $unitinterval");
-                my $assigned_fieldid = &::GetFieldID('assigned_to');
+                my $assigned_fieldid = get_field_id('assigned_to');
                 push(@supptables, "LEFT JOIN longdescs AS comment_$table " .
                                   "ON comment_$table.who = bugs.assigned_to " .
                                   "AND comment_$table.bug_id = bugs.bug_id " .
@@ -1000,10 +1038,10 @@ sub init {
              $term = $dbh->sql_position(lc($q), "LOWER($ff)") . " = 0";
          },
          ",regexp" => sub {
-             $term = "$ff " . $dbh->sql_regexp() . " $q";
+             $term = $dbh->sql_regexp($ff, $q);
          },
          ",notregexp" => sub {
-             $term = "$ff " . $dbh->sql_not_regexp() . " $q";
+             $term = $dbh->sql_not_regexp($ff, $q);
          },
          ",lessthan" => sub {
              $term = "$ff < $q";
@@ -1417,7 +1455,7 @@ sub SqlifyDate {
     }
 
 
-    if ($str =~ /^(-|\+)?(\d+)([dDwWmMyY])$/) {   # relative date
+    if ($str =~ /^(-|\+)?(\d+)([hHdDwWmMyY])$/) {   # relative date
         my ($sign, $amount, $unit, $date) = ($1, $2, lc $3, time);
         my ($sec, $min, $hour, $mday, $month, $year, $wday)  = localtime($date);
         if ($sign && $sign eq '+') { $amount = -$amount; }
@@ -1437,6 +1475,15 @@ sub SqlifyDate {
             while ($month<0) { $year--; $month += 12; }
             return sprintf("%4d-%02d-01 00:00:00", $year+1900, $month+1);
         }
+        elsif ($unit eq 'h') {
+            # Special case 0h for 'beginning of this hour'
+            if ($amount == 0) {
+                $date -= $sec + 60*$min;
+            } else {
+                $date -= 3600*$amount;
+            }
+            return time2str("%Y-%m-%d %H:%M:%S", $date);
+        }
         return undef;                      # should not happen due to regexp at top
     }
     my $date = str2time($str);
@@ -1449,8 +1496,8 @@ sub SqlifyDate {
 # ListIDsForEmail returns a string with a comma-joined list
 # of userids matching email addresses
 # according to the type specified.
-# Currently, this only supports exact, anyexact, and substring matches.
-# Substring matches will return up to 50 matching userids
+# Currently, this only supports regexp, exact, anyexact, and substring matches.
+# Matches will return up to 50 matching userids
 # If a match type is unsupported or returns too many matches,
 # ListIDsForEmail returns an undef.
 sub ListIDsForEmail {
@@ -1479,7 +1526,18 @@ sub ListIDsForEmail {
             my ($id) = &::FetchSQLData();
             push(@list, $id);
         }
-        if (@list < 50) {
+        if (scalar(@list) < 50) {
+            $list = join(',', @list);
+        }
+    } elsif ($type eq 'regexp') {
+        &::SendSQL("SELECT userid FROM profiles WHERE " .
+            $dbh->sql_regexp("login_name", ::SqlQuote($email)) .
+            " " . $dbh->sql_limit(51));
+        while (&::MoreSQLData()) {
+            my ($id) = &::FetchSQLData();
+            push(@list, $id);
+        }
+        if (scalar(@list) < 50) {
             $list = join(',', @list);
         }
     }
@@ -1514,7 +1572,7 @@ sub GetByWordList {
             $word =~ s/^'//;
             $word =~ s/'$//;
             $word = '(^|[^a-z0-9])' . $word . '($|[^a-z0-9])';
-            push(@list, "$field " . $dbh->sql_regexp() . " '$word'");
+            push(@list, $dbh->sql_regexp($field, "'$word'"));
         }
     }
 
diff --git a/Bugzilla/Search/CVS/Entries b/Bugzilla/Search/CVS/Entries
new file mode 100644
index 0000000000000000000000000000000000000000..0c523542935a5a93b8cb0f94dd52ff493906308e
--- /dev/null
+++ b/Bugzilla/Search/CVS/Entries
@@ -0,0 +1,2 @@
+/Quicksearch.pm/1.2/Fri Aug 26 23:11:31 2005//TBUGZILLA-2_21_1
+D
diff --git a/Bugzilla/Search/CVS/Repository b/Bugzilla/Search/CVS/Repository
new file mode 100644
index 0000000000000000000000000000000000000000..d9a78ec93b70b8a715f3f36a8b2d37fa7ad763bb
--- /dev/null
+++ b/Bugzilla/Search/CVS/Repository
@@ -0,0 +1 @@
+mozilla/webtools/bugzilla/Bugzilla/Search
diff --git a/Bugzilla/Search/CVS/Root b/Bugzilla/Search/CVS/Root
new file mode 100644
index 0000000000000000000000000000000000000000..cdb6f4a0739a0dc53e628026726036377dec3637
--- /dev/null
+++ b/Bugzilla/Search/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
diff --git a/Bugzilla/Search/CVS/Tag b/Bugzilla/Search/CVS/Tag
new file mode 100644
index 0000000000000000000000000000000000000000..3e3ad9bce35146f98585bffa81620b90c94d4d47
--- /dev/null
+++ b/Bugzilla/Search/CVS/Tag
@@ -0,0 +1 @@
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Search/Quicksearch.pm b/Bugzilla/Search/Quicksearch.pm
new file mode 100644
index 0000000000000000000000000000000000000000..365e5646923651ce046aa8eef05ca51e42eba0d0
--- /dev/null
+++ b/Bugzilla/Search/Quicksearch.pm
@@ -0,0 +1,499 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# Contributor(s): C. Begle
+#                 Jesse Ruderman
+#                 Andreas Franke <afranke@mathweb.org>
+#                 Stephen Lee <slee@uk.bnsmc.com>
+#                 Marc Schumann <wurblzap@gmail.com>
+
+package Bugzilla::Search::Quicksearch;
+
+# Make it harder for us to do dangerous things in Perl.
+use strict;
+
+use Bugzilla;
+use Bugzilla::Config;
+use Bugzilla::Error;
+
+use base qw(Exporter);
+@Bugzilla::Search::Quicksearch::EXPORT = qw(quicksearch);
+
+my $cgi = Bugzilla->cgi;
+
+# Word renamings
+my %mappings = (# Status, Resolution, Platform, OS, Priority, Severity
+                "status" => "bug_status",
+                "resolution" => "resolution",  # no change
+                "platform" => "rep_platform",
+                "os" => "op_sys",
+                "opsys" => "op_sys",
+                "priority" => "priority",    # no change
+                "pri" => "priority",
+                "severity" => "bug_severity",
+                "sev" => "bug_severity",
+                # People: AssignedTo, Reporter, QA Contact, CC, Added comment (?)
+                "owner" => "assigned_to",    # deprecated since bug 76507
+                "assignee" => "assigned_to",
+                "assignedto" => "assigned_to",
+                "reporter" => "reporter",    # no change
+                "rep" => "reporter",
+                "qa" => "qa_contact",
+                "qacontact" => "qa_contact",
+                "cc" => "cc",          # no change
+                # Product, Version, Component, Target Milestone
+                "product" => "product",     # no change
+                "prod" => "product",
+                "version" => "version",     # no change
+                "ver" => "version",
+                "component" => "component",   # no change
+                "comp" => "component",
+                "milestone" => "target_milestone",
+                "target" => "target_milestone",
+                "targetmilestone" => "target_milestone",
+                # Summary, Description, URL, Status whiteboard, Keywords
+                "summary" => "short_desc",
+                "shortdesc" => "short_desc",
+                "desc" => "longdesc",
+                "description" => "longdesc",
+                #"comment" => "longdesc",    # ???
+                          # reserve "comment" for "added comment" email search?
+                "longdesc" => "longdesc",
+                "url" => "bug_file_loc",
+                "whiteboard" => "status_whiteboard",
+                "statuswhiteboard" => "status_whiteboard",
+                "sw" => "status_whiteboard",
+                "keywords" => "keywords",    # no change
+                "kw" => "keywords",
+                # Attachments
+                "attachment" => "attachments.description",
+                "attachmentdesc" => "attachments.description",
+                "attachdesc" => "attachments.description",
+                "attachmentdata" => "attach_data.thedata",
+                "attachdata" => "attach_data.thedata",
+                "attachmentmimetype" => "attachments.mimetype",
+                "attachmimetype" => "attachments.mimetype");
+
+# We might want to put this into localconfig or somewhere
+my @platforms = ('pc', 'sun', 'macintosh', 'mac');
+my @productExceptions =   ('row'    # [Browser]
+                                    #   ^^^
+                          ,'new'    # [MailNews]
+                                    #      ^^^
+                          );
+my @componentExceptions = ('hang'   # [Bugzilla: Component/Keyword Changes]
+                                    #                               ^^^^
+                          );
+
+# Quicksearch-wide globals for boolean charts.
+my $chart = 0;
+my $and = 0;
+my $or = 0;
+
+sub quicksearch {
+    my ($searchstring) = (@_);
+
+    # Remove leading and trailing commas and whitespace.
+    $searchstring =~ s/(^[\s,]+|[\s,]+$)//g;
+    ThrowUserError('buglist_parameters_required') unless ($searchstring);
+
+    if ($searchstring =~ m/^[0-9,\s]*$/) {
+        # Bug number(s) only.
+
+        # Allow separation by comma or whitespace.
+        $searchstring =~ s/[,\s]+/,/g;
+
+        if (index($searchstring, ',') < $[) {
+            # Single bug number; shortcut to show_bug.cgi.
+            print $cgi->redirect(-uri => Param('urlbase') .
+                                         "show_bug.cgi?id=$searchstring");
+            exit;
+        }
+        else {
+            # List of bug numbers.
+            $cgi->param('bug_id', $searchstring);
+            $cgi->param('order', 'bugs.bug_id');
+            $cgi->param('bugidtype', 'include');
+        }
+    }
+    else {
+        # It's not just a bug number or a list of bug numbers.
+        # Maybe it's an alias?
+        if ($searchstring =~ /^([^,\s]+)$/) {
+            if (Bugzilla->dbh->selectrow_array(q{SELECT COUNT(*)
+                                                   FROM bugs
+                                                  WHERE alias = ?},
+                                               undef,
+                                               $1)) {
+                print $cgi->redirect(-uri => Param('urlbase') .
+                                             "show_bug.cgi?id=$1");
+                exit;
+            }
+        }
+
+        # It's no alias either, so it's a more complex query.
+
+        &::GetVersionTable();
+
+        # Globally translate " AND ", " OR ", " NOT " to space, pipe, dash.
+        $searchstring =~ s/\s+AND\s+/ /g;
+        $searchstring =~ s/\s+OR\s+/|/g;
+        $searchstring =~ s/\s+NOT\s+/ -/g;
+
+        my @words = splitString($searchstring);
+        my $searchComments = $#words < Param('quicksearch_comment_cutoff');
+        my @openStates = &::OpenStates();
+        my @closedStates;
+        my (%states, %resolutions);
+
+        foreach (@::legal_bug_status) {
+            push(@closedStates, $_) unless &::IsOpenedState($_);
+        }
+        foreach (@openStates) { $states{$_} = 1 }
+        if ($words[0] eq 'ALL') {
+            foreach (@::legal_bug_status) { $states{$_} = 1 }
+            shift @words;
+        }
+        elsif ($words[0] eq 'OPEN') {
+            shift @words;
+        }
+        elsif ($words[0] =~ /^\+[A-Z]+(,[A-Z]+)*$/) {
+            # e.g. +DUP,FIX
+            if (matchPrefixes(\%states,
+                              \%resolutions,
+                              [split(/,/, substr($words[0], 1))],
+                              \@closedStates,
+                              \@::legal_resolution)) {
+                shift @words;
+                # Allowing additional resolutions means we need to keep
+                # the "no resolution" resolution.
+                $resolutions{'---'} = 1;
+            }
+            else {
+                # Carry on if no match found.
+            }
+        }
+        elsif ($words[0] =~ /^[A-Z]+(,[A-Z]+)*$/) {
+            # e.g. NEW,ASSI,REOP,FIX
+            undef %states;
+            if (matchPrefixes(\%states,
+                              \%resolutions,
+                              [split(/,/, $words[0])],
+                              \@::legal_bug_status,
+                              \@::legal_resolution)) {
+                shift @words;
+            }
+            else {
+                # Carry on if no match found
+                foreach (@openStates) { $states{$_} = 1 }
+            }
+        }
+        else {
+            # Default: search for unresolved bugs only.
+            # Put custom code here if you would like to change this behaviour.
+        }
+
+        # If we have wanted resolutions, allow closed states
+        if (keys(%resolutions)) {
+            foreach (@closedStates) { $states{$_} = 1 }
+        }
+
+        $cgi->param('bug_status', keys(%states));
+        $cgi->param('resolution', keys(%resolutions));
+
+        # Loop over all main-level QuickSearch words.
+        foreach my $qsword (@words) {
+            my $negate = substr($qsword, 0, 1) eq '-';
+            if ($negate) {
+                $qsword = substr($qsword, 1);
+            }
+
+            my $firstChar = substr($qsword, 0, 1);
+            my $baseWord = substr($qsword, 1);
+            my @subWords = split(/[\|,]/, $baseWord);
+            if ($firstChar eq '+') {
+                foreach (@subWords) {
+                    addChart('short_desc', 'substring', $qsword, $negate);
+                }
+            }
+            elsif ($firstChar eq '#') {
+                addChart('short_desc', 'anywords', $baseWord, $negate);
+                if ($searchComments) {
+                    addChart('longdesc', 'anywords', $baseWord, $negate);
+                }
+            }
+            elsif ($firstChar eq ':') {
+                foreach (@subWords) {
+                    addChart('product', 'substring', $_, $negate);
+                    addChart('component', 'substring', $_, $negate);
+                }
+            }
+            elsif ($firstChar eq '@') {
+                foreach (@subWords) {
+                    addChart('assigned_to', 'substring', $_, $negate);
+                }
+            }
+            elsif ($firstChar eq '[') {
+                addChart('short_desc', 'substring', $baseWord, $negate);
+                addChart('status_whiteboard', 'substring', $baseWord, $negate);
+            }
+            elsif ($firstChar eq '!') {
+                addChart('keywords', 'anywords', $baseWord, $negate);
+
+            }
+            else { # No special first char
+
+                # Split by '|' to get all operands for a boolean OR.
+                foreach my $or_operand (split(/\|/, $qsword)) {
+                    if ($or_operand =~ /^votes:([0-9]+)$/) {
+                        # votes:xx ("at least xx votes")
+                        addChart('votes', 'greaterthan', $1, $negate);
+                    }
+                    elsif ($or_operand =~ /^([^:]+):([^:]+)$/) {
+                        # generic field1,field2,field3:value1,value2 notation
+                        my @fields = split(/,/, $1);
+                        my @values = split(/,/, $2);
+                        foreach my $field (@fields) {
+                            # Be tolerant about unknown fields
+                            next unless defined($mappings{$field});
+                            $field = $mappings{$field};
+                            foreach (@values) {
+                                addChart($field, 'substring', $_, $negate);
+                            }
+                        }
+
+                    }
+                    else {
+
+                        # Having ruled out the special cases, we may now split
+                        # by comma, which is another legal boolean OR indicator.
+                        foreach my $word (split(/,/, $or_operand)) {
+                            # Platform
+                            if (grep({lc($word) eq $_} @platforms)) {
+                                addChart('rep_platform', 'substring',
+                                         $word, $negate);
+                            }
+                            # Priority
+                            elsif ($word =~ m/^[pP]([1-5](-[1-5])?)$/) {
+                                addChart('priority', 'regexp',
+                                         "[$1]", $negate);
+                            }
+                            # Severity
+                            elsif (grep({lc($word) eq substr($_, 0, 3)}
+                                        @::legal_severity)) {
+                                addChart('bug_severity', 'substring',
+                                         $word, $negate);
+                            }
+                            # Votes (votes>xx)
+                            elsif ($word =~ m/^votes>([0-9]+)$/) {
+                                addChart('votes', 'greaterthan',
+                                         $1, $negate);
+                            }
+                            # Votes (votes>=xx, votes=>xx)
+                            elsif ($word =~ m/^votes(>=|=>)([0-9]+)$/) {
+                                addChart('votes', 'greaterthan',
+                                         $2-1, $negate);
+
+                            }
+                            else { # Default QuickSearch word
+
+                                if (!grep({lc($word) eq $_}
+                                          @productExceptions) &&
+                                    length($word)>2
+                                   ) {
+                                    addChart('product', 'substring',
+                                             $word, $negate);
+                                }
+                                if (!grep({lc($word) eq $_}
+                                          @componentExceptions) &&
+                                    length($word)>2
+                                   ) {
+                                    addChart('component', 'substring',
+                                             $word, $negate);
+                                }
+                                if (grep({lc($word) eq $_}
+                                         @::legal_keywords)) {
+                                    addChart('keywords', 'substring',
+                                             $word, $negate);
+                                    if (length($word)>2) {
+                                        addChart('short_desc', 'substring',
+                                                 $word, $negate);
+                                        addChart('status_whiteboard',
+                                                 'substring',
+                                                 $word, $negate);
+                                    }
+
+                                }
+                                else {
+
+                                    addChart('short_desc', 'substring',
+                                             $word, $negate);
+                                    addChart('status_whiteboard', 'substring',
+                                             $word, $negate);
+                                }
+                                if ($searchComments) {
+                                    addChart('longdesc', 'substring',
+                                             $word, $negate);
+                                }
+                            }
+                            # URL field (for IP addrs, host.names,
+                            # scheme://urls)
+                            if ($word =~ m/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/
+                                  || $word =~ /^[A-Za-z]+(\.[A-Za-z]+)+/
+                                  || $word =~ /:[\\\/][\\\/]/
+                                  || $word =~ /localhost/
+                                  || $word =~ /mailto[:]?/
+                                  # || $word =~ /[A-Za-z]+[:][0-9]+/ #host:port
+                                  ) {
+                                addChart('bug_file_loc', 'substring',
+                                         $word, $negate);
+                            }
+                        } # foreach my $word (split(/,/, $qsword))
+                    } # votes and generic field detection
+                } # foreach (split(/\|/, $_))
+            } # "switch" $firstChar
+            $chart++;
+            $and = 0;
+            $or = 0;
+        } # foreach (@words)
+
+        # We've been very tolerant about invalid queries, so all that's left
+        # may be an empty query.
+        scalar($cgi->param())>0 || ThrowUserError("buglist_parameters_required");
+    }
+
+    # List of quicksearch-specific CGI parameters to get rid of.
+    my @params_to_strip = ('quicksearch', 'load', 'run');
+    my $modified_query_string = $cgi->canonicalise_query(@params_to_strip);
+
+    if ($cgi->param('load')) {
+        # Param 'load' asks us to display the query in the advanced search form.
+        print $cgi->redirect(-uri => Param('urlbase') . "query.cgi?" .
+                                     "format=advanced&amp;" .
+                                     $modified_query_string);
+    }
+
+    # Otherwise, pass the modified query string to the caller.
+    # We modified $cgi->params, so the caller can choose to look at that, too,
+    # and disregard the return value.
+    $cgi->delete(@params_to_strip);
+    return $modified_query_string;
+}
+
+###########################################################################
+# Helpers
+###########################################################################
+
+# Split string on whitespace, retaining quoted strings as one
+sub splitString {
+    my $string = shift;
+    my @quoteparts;
+    my @parts;
+    my $i = 0;
+
+    # Escape backslashes
+    $string =~ s/\\/\\\//g;
+
+    # Now split on quote sign; be tolerant about unclosed quotes
+    @quoteparts = split(/"/, $string);
+    foreach (@quoteparts) {
+        # After every odd quote, escape whitespace
+        s/(\s)/\\$1/g if $i++ % 2;
+    }
+    # Join again
+    $string = join('"', @quoteparts);
+
+    # Now split on unescaped whitespace
+    @parts = split(/(?<!\\)\s+/, $string);
+    foreach (@parts) {
+        # Restore whitespace
+        s/\\(\s)/$1/g;
+        # Restore backslashes
+        s/\\\//\\/g;
+        # Remove quotes
+        s/"//g;
+    }
+    return @parts;
+}
+
+# Expand found prefixes to states or resolutions
+sub matchPrefixes {
+    my $hr_states = shift;
+    my $hr_resolutions = shift;
+    my $ar_prefixes = shift;
+    my $ar_check_states = shift;
+    my $ar_check_resolutions = shift;
+    my $foundMatch = 0;
+
+    foreach my $prefix (@$ar_prefixes) {
+        foreach (@$ar_check_states) {
+            if (/^$prefix/) {
+                $$hr_states{$_} = 1;
+                $foundMatch = 1;
+            }
+        }
+        foreach (@$ar_check_resolutions) {
+            if (/^$prefix/) {
+                $$hr_resolutions{$_} = 1;
+                $foundMatch = 1;
+            }
+        }
+    }
+    return $foundMatch;
+}
+
+# Negate comparison type
+sub negateComparisonType {
+    my $comparisonType = shift;
+
+    if ($comparisonType eq 'substring') {
+        return 'notsubstring';
+    }
+    elsif ($comparisonType eq 'anywords') {
+        return 'nowords';
+    }
+    elsif ($comparisonType eq 'regexp') {
+        return 'notregexp';
+    }
+    else {
+        # Don't know how to negate that
+        ThrowCodeError('unknown_comparison_type');
+    }
+}
+
+# Add a boolean chart
+sub addChart {
+    my ($field, $comparisonType, $value, $negate) = @_;
+
+    $negate && ($comparisonType = negateComparisonType($comparisonType));
+    makeChart("$chart-$and-$or", $field, $comparisonType, $value);
+    if ($negate) {
+        $and++;
+        $or = 0;
+    }
+    else {
+        $or++;
+    }
+}
+
+# Create the CGI parameters for a boolean chart
+sub makeChart {
+    my ($expr, $field, $type, $value) = @_;
+
+    $cgi->param("field$expr", $field);
+    $cgi->param("type$expr",  $type);
+    $cgi->param("value$expr", $value);
+}
+
+1;
diff --git a/Bugzilla/Series.pm b/Bugzilla/Series.pm
index e1d37423b1455c3796f4d15f12c07340c324175f..521357488d7ce202e35fd871e73124dcb5295736 100644
--- a/Bugzilla/Series.pm
+++ b/Bugzilla/Series.pm
@@ -18,6 +18,7 @@
 # Rights Reserved.
 #
 # Contributor(s): Gervase Markham <gerv@gerv.net>
+#                 Lance Larsh <lance.larsh@oracle.com>
 
 use strict;
 use lib ".";
@@ -31,7 +32,6 @@ use lib ".";
 
 package Bugzilla::Series;
 
-use Bugzilla;
 use Bugzilla::Util;
 use Bugzilla::User;
 
@@ -91,7 +91,7 @@ sub initFromDatabase {
     my $dbh = Bugzilla->dbh;
     my @series = $dbh->selectrow_array("SELECT series.series_id, cc1.name, " .
         "cc2.name, series.name, series.creator, series.frequency, " .
-        "series.query, series.public " .
+        "series.query, series.is_public " .
         "FROM series " .
         "LEFT JOIN series_categories AS cc1 " .
         "    ON series.category = cc1.id " .
@@ -104,11 +104,11 @@ sub initFromDatabase {
         "    AND ugm.user_id = " . Bugzilla->user->id .
         "    AND isbless = 0 " .
         "WHERE series.series_id = $series_id AND " .
-        "(public = 1 OR creator = " . Bugzilla->user->id . " OR " .
+        "(is_public = 1 OR creator = " . Bugzilla->user->id . " OR " .
         "(ugm.group_id IS NOT NULL)) " . 
         $dbh->sql_group_by('series.series_id', 'cc1.name, cc2.name, ' .
                            'series.name, series.creator, series.frequency, ' .
-                           'series.query, series.public'));
+                           'series.query, series.is_public'));
     
     if (@series) {
         $self->initFromParameters(@series);
@@ -190,7 +190,7 @@ sub writeToDatabase {
         my $dbh = Bugzilla->dbh;
         $dbh->do("UPDATE series SET " .
                  "category = ?, subcategory = ?," .
-                 "name = ?, frequency = ?, public = ?  " .
+                 "name = ?, frequency = ?, is_public = ?  " .
                  "WHERE series_id = ?", undef,
                  $category_id, $subcategory_id, $self->{'name'},
                  $self->{'frequency'}, $self->{'public'}, 
@@ -199,7 +199,7 @@ sub writeToDatabase {
     else {
         # Insert the new series into the series table
         $dbh->do("INSERT INTO series (creator, category, subcategory, " .
-                 "name, frequency, query, public) VALUES " . 
+                 "name, frequency, query, is_public) VALUES " . 
                  "($self->{'creator'}, " . 
                  "$category_id, $subcategory_id, " .
                  $dbh->quote($self->{'name'}) . ", $self->{'frequency'}," .
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index 7efd3a16e55bc5e1a96b040959bbb064c430ae03..a4b8084d0692558d9e1254e2d1da74af9600acb6 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -25,20 +25,26 @@
 #                 Tobias Burnus <burnus@net-b.de>
 #                 Myk Melez <myk@mozilla.org>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Frédéric Buclin <LpSolit@gmail.com>
+#                 Greg Hendricks <ghendricks@novell.com>
 
 
 package Bugzilla::Template;
 
 use strict;
 
-use Bugzilla::Config qw(:DEFAULT $templatedir $datadir);
+use Bugzilla::Constants;
+use Bugzilla::Config qw(:DEFAULT $templatedir $datadir $project);
 use Bugzilla::Util;
 use Bugzilla::User;
+use Bugzilla::Error;
+use MIME::Base64;
 
 # for time2str - replace by TT Date plugin??
 use Date::Format ();
 
 use base qw(Template);
+use vars qw($vars);
 
 # Convert the constants in the Bugzilla::Constants module into a hash we can
 # pass to the template object for reflection into its "constants" namespace
@@ -95,7 +101,7 @@ sub sortAcceptLanguage {
 # Returns the path to the templates based on the Accept-Language
 # settings of the user and of the available languages
 # If no Accept-Language is present it uses the defined default
-sub getTemplateIncludePath () {
+sub getTemplateIncludePath {
     # Return cached value if available
 
     # XXXX - mod_perl!
@@ -104,10 +110,21 @@ sub getTemplateIncludePath () {
     }
     my $languages = trim(Param('languages'));
     if (not ($languages =~ /,/)) {
-        return $template_include_path =
-               ["$templatedir/$languages/custom",
-                "$templatedir/$languages/extension",
-                "$templatedir/$languages/default"];
+       if ($project) {
+           $template_include_path = [
+               "$templatedir/$languages/$project",
+               "$templatedir/$languages/custom",
+               "$templatedir/$languages/extension",
+               "$templatedir/$languages/default"
+           ];
+       } else {
+           $template_include_path = [
+               "$templatedir/$languages/custom",
+               "$templatedir/$languages/extension",
+               "$templatedir/$languages/default"
+           ];
+       }
+        return $template_include_path;
     }
     my @languages       = sortAcceptLanguage($languages);
     my @accept_language = sortAcceptLanguage($ENV{'HTTP_ACCEPT_LANGUAGE'} || "" );
@@ -123,13 +140,83 @@ sub getTemplateIncludePath () {
         }
     }
     push(@usedlanguages, Param('defaultlanguage'));
-    return $template_include_path =
-        [map(("$templatedir/$_/custom",
-              "$templatedir/$_/extension",
-              "$templatedir/$_/default"),
-             @usedlanguages)];
+    if ($project) {
+        $template_include_path = [
+           map((
+               "$templatedir/$_/$project",
+               "$templatedir/$_/custom",
+               "$templatedir/$_/extension",
+               "$templatedir/$_/default"
+               ), @usedlanguages
+            )
+        ];
+    } else {
+        $template_include_path = [
+           map((
+               "$templatedir/$_/custom",
+               "$templatedir/$_/extension",
+               "$templatedir/$_/default"
+               ), @usedlanguages
+            )
+        ];
+    }
+    return $template_include_path;
+}
+
+sub put_header {
+    my $self = shift;
+    ($vars->{'title'}, $vars->{'h1'}, $vars->{'h2'}) = (@_);
+     
+    $self->process("global/header.html.tmpl", $vars)
+      || ThrowTemplateError($self->error());
+    $vars->{'header_done'} = 1;
 }
 
+sub put_footer {
+    my $self = shift;
+    $self->process("global/footer.html.tmpl", $vars)
+      || ThrowTemplateError($self->error());
+}
+
+sub get_format {
+    my $self = shift;
+    my ($template, $format, $ctype) = @_;
+
+    $ctype ||= 'html';
+    $format ||= '';
+
+    # Security - allow letters and a hyphen only
+    $ctype =~ s/[^a-zA-Z\-]//g;
+    $format =~ s/[^a-zA-Z\-]//g;
+    trick_taint($ctype);
+    trick_taint($format);
+
+    $template .= ($format ? "-$format" : "");
+    $template .= ".$ctype.tmpl";
+
+    # Now check that the template actually exists. We only want to check
+    # if the template exists; any other errors (eg parse errors) will
+    # end up being detected later.
+    eval {
+        $self->context->template($template);
+    };
+    # This parsing may seem fragile, but its OK:
+    # http://lists.template-toolkit.org/pipermail/templates/2003-March/004370.html
+    # Even if it is wrong, any sort of error is going to cause a failure
+    # eventually, so the only issue would be an incorrect error message
+    if ($@ && $@->info =~ /: not found$/) {
+        ThrowUserError('format_not_found', {'format' => $format,
+                                            'ctype'  => $ctype});
+    }
+
+    # Else, just return the info
+    return
+    {
+        'template'    => $template,
+        'extension'   => $ctype,
+        'ctype'       => Bugzilla::Constants::contenttypes->{$ctype}
+    };
+}
 
 ###############################################################################
 # Templatization Code
@@ -261,7 +348,13 @@ sub create {
                 $var =~ s/\@/\\x40/g; # anti-spam for email addresses
                 return $var;
             },
-
+            
+            # Converts data to base64
+            base64 => sub {
+                my ($data) = @_;
+                return encode_base64($data);
+            },
+            
             # HTML collapses newlines in element attributes to a single space,
             # so form elements which may have whitespace (ie comments) need
             # to be encoded using &#013;
@@ -430,12 +523,19 @@ __END__
 
 =head1 NAME
 
-Bugzilla::Template - Wrapper arround the Template Toolkit C<Template> object
+Bugzilla::Template - Wrapper around the Template Toolkit C<Template> object
 
-=head1 SYNOPSYS
+=head1 SYNOPSIS
 
   my $template = Bugzilla::Template->create;
 
+  $template->put_header($title, $h1, $h2);
+  $template->put_footer();
+
+  my $format = $template->get_format("foo/bar",
+                                     scalar($cgi->param('format')),
+                                     scalar($cgi->param('ctype')));
+
 =head1 DESCRIPTION
 
 This is basically a wrapper so that the correct arguments get passed into
@@ -444,6 +544,41 @@ the C<Template> constructor.
 It should not be used directly by scripts or modules - instead, use
 C<Bugzilla-E<gt>instance-E<gt>template> to get an already created module.
 
+=head1 METHODS
+
+=over
+
+=item C<put_header($title, $h1, $h2)>
+
+ Description: Display the header of the page for non yet templatized .cgi files.
+
+ Params:      $title - Page title.
+              $h1    - Main page header.
+              $h2    - Page subheader.
+
+ Returns:     nothing
+
+=item C<put_footer()>
+
+ Description: Display the footer of the page for non yet templatized .cgi files.
+
+ Params:      none
+
+ Returns:     nothing
+
+=item C<get_format($file, $format, $ctype)>
+
+ Description: Construct a format object from URL parameters.
+
+ Params:      $file   - Name of the template to display.
+              $format - When the template exists under several formats
+                        (e.g. table or graph), specify the one to choose.
+              $ctype  - Content type, see Bugzilla::Constants::contenttypes.
+
+ Returns:     A format object.
+
+=back
+
 =head1 SEE ALSO
 
 L<Bugzilla>, L<Template>
diff --git a/Bugzilla/Template/CVS/Tag b/Bugzilla/Template/CVS/Tag
index 84507d26c5041aeb69e8ccabe5e10972bfb1ecb2..e19db48255e1f5409c807de0ec533bf4e0e0d1be 100644
--- a/Bugzilla/Template/CVS/Tag
+++ b/Bugzilla/Template/CVS/Tag
@@ -1 +1 @@
-TBUGZILLA-2_20
+TBUGZILLA-2_21_1
diff --git a/Bugzilla/Template/Plugin/CVS/Entries b/Bugzilla/Template/Plugin/CVS/Entries
index 87829e0b189afa4bd91b218d304ab27ecf69f973..f774888cc8020428aff881b27534d9359e5bc105 100644
--- a/Bugzilla/Template/Plugin/CVS/Entries
+++ b/Bugzilla/Template/Plugin/CVS/Entries
@@ -1,4 +1,4 @@
-/Bugzilla.pm/1.2/Fri Feb  7 07:19:15 2003//TBUGZILLA-2_20
-/Hook.pm/1.1/Sun Jan 11 17:12:15 2004//TBUGZILLA-2_20
-/User.pm/1.1/Wed Aug  4 18:08:21 2004//TBUGZILLA-2_20
+/Bugzilla.pm/1.2/Fri Feb  7 07:19:15 2003//TBUGZILLA-2_21_1
+/Hook.pm/1.1/Sun Jan 11 17:12:15 2004//TBUGZILLA-2_21_1
+/User.pm/1.1/Wed Aug  4 18:08:21 2004//TBUGZILLA-2_21_1
 D
diff --git a/Bugzilla/Template/Plugin/CVS/Tag b/Bugzilla/Template/Plugin/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/Template/Plugin/CVS/Tag
+++ b/Bugzilla/Template/Plugin/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Token.pm b/Bugzilla/Token.pm
index fe72915a36b4a725d2f0599b50fc5d7853f87e03..1cf51a33215ff8fc902da2259b0b24ae21e169c9 100644
--- a/Bugzilla/Token.pm
+++ b/Bugzilla/Token.pm
@@ -37,8 +37,8 @@ use Bugzilla::Util;
 use Date::Format;
 use Date::Parse;
 
-# This module requires that its caller have said "require CGI.pl" to import
-# relevant functions from that script and its companion globals.pl.
+# This module requires that its caller have said "require globals.pl" to import
+# relevant functions from that script.
 
 ################################################################################
 # Constants
@@ -150,7 +150,7 @@ sub CleanTokenTable {
 }
 
 sub GenerateUniqueToken {
-    # Generates a unique random token.  Uses &GenerateRandomPassword 
+    # Generates a unique random token.  Uses generate_random_password 
     # for the tokens themselves and checks uniqueness by searching for
     # the token in the "tokens" table.  Gives up if it can't come up
     # with a token after about one hundred tries.
@@ -167,7 +167,7 @@ sub GenerateUniqueToken {
         if ($tries > 100) {
             ThrowCodeError("token_generation_error");
         }
-        $token = &::GenerateRandomPassword();
+        $token = generate_random_password();
         $sth->execute($token);
         $duplicate = $sth->fetchrow_array;
     }
@@ -249,7 +249,7 @@ sub HasEmailChangeToken {
     return $token;
 }
 
-sub GetTokenData($) {
+sub GetTokenData {
     # Returns the userid, issuedate and eventdata for the specified token
 
     my ($token) = @_;
@@ -263,7 +263,7 @@ sub GetTokenData($) {
          WHERE  token = ?", undef, $token);
 }
 
-sub DeleteToken($) {
+sub DeleteToken {
     # Deletes specified token
 
     my ($token) = @_;
@@ -280,7 +280,7 @@ sub DeleteToken($) {
 # Internal Functions
 ################################################################################
 
-sub _create_token($$$) {
+sub _create_token {
     # Generates a unique token and inserts it into the database
     # Returns the token and the token timestamp
     my ($userid, $tokentype, $eventdata) = @_;
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm
index cfa3429206942b69cbdbd9fca074081a0920a5dc..3fca325b6f7ac769973e0557a42240f24ad1fd1f 100644
--- a/Bugzilla/User.pm
+++ b/Bugzilla/User.pm
@@ -41,6 +41,7 @@ use Bugzilla::Error;
 use Bugzilla::Util;
 use Bugzilla::Constants;
 use Bugzilla::User::Setting;
+use Bugzilla::Product;
 
 use base qw(Exporter);
 @Bugzilla::User::EXPORT = qw(insert_new_user is_available_username
@@ -111,8 +112,6 @@ sub _create {
     # We're checking for validity here, so any value is OK
     trick_taint($val);
 
-    my $tables_locked_for_derive_groups = shift;
-
     my $dbh = Bugzilla->dbh;
 
     my ($id,
@@ -137,26 +136,6 @@ sub _create {
     $self->{'disabledtext'}   = $disabledtext;
     $self->{'showmybugslink'} = $mybugslink;
 
-    # Now update any old group information if needed
-    my $result = $dbh->selectrow_array(q{SELECT 1
-                                           FROM profiles, groups
-                                          WHERE userid=?
-                                            AND profiles.refreshed_when <=
-                                                  groups.last_changed},
-                                       undef,
-                                       $id);
-
-    if ($result) {
-        my $is_main_db;
-        unless ($is_main_db = Bugzilla->dbwritesallowed()) {
-            Bugzilla->switch_to_main_db();
-        }
-        $self->derive_groups($tables_locked_for_derive_groups);
-        unless ($is_main_db) {
-            Bugzilla->switch_to_shadow_db();
-        }
-    }
-
     return $self;
 }
 
@@ -289,11 +268,36 @@ sub groups {
     # The above gives us an arrayref [name, id, name, id, ...]
     # Convert that into a hashref
     my %groups = @$groups;
+    my $sth;
+    my @groupidstocheck = values(%groups);
+    my %groupidschecked = ();
+    $sth = $dbh->prepare("SELECT groups.name, groups.id
+                            FROM group_group_map
+                      INNER JOIN groups
+                              ON groups.id = grantor_id
+                           WHERE member_id = ? 
+                             AND grant_type = " . GROUP_MEMBERSHIP);
+    while (my $node = shift @groupidstocheck) {
+        $sth->execute($node);
+        my ($member_name, $member_id);
+        while (($member_name, $member_id) = $sth->fetchrow_array) {
+            if (!$groupidschecked{$member_id}) {
+                $groupidschecked{$member_id} = 1;
+                push @groupidstocheck, $member_id;
+                $groups{$member_name} = $member_id;
+            }
+        }
+    }
     $self->{groups} = \%groups;
 
     return $self->{groups};
 }
 
+sub groups_as_string {
+    my $self = shift;
+    return (join(',',values(%{$self->groups})) || '-1');
+}
+
 sub bless_groups {
     my $self = shift;
 
@@ -314,8 +318,6 @@ sub bless_groups {
         # Get all groups for the user where:
         #    + They have direct bless privileges
         #    + They are a member of a group that inherits bless privs.
-        # Because of the second requirement, derive_groups must be up-to-date
-        # for this to function properly in all circumstances.
         $query = q{
             SELECT DISTINCT groups.id, groups.name, groups.description
                        FROM groups, user_group_map, group_group_map AS ggm
@@ -324,8 +326,9 @@ sub bless_groups {
                               AND groups.id=user_group_map.group_id)
                              OR (groups.id = ggm.grantor_id
                                  AND ggm.grant_type = ?
-                                 AND user_group_map.group_id = ggm.member_id
-                                 AND user_group_map.isbless = 0))};
+                                 AND ggm.member_id IN(} .
+                                 $self->groups_as_string . 
+                               q{)))};
         $connector = 'AND';
         @bindValues = ($self->id, GROUP_BLESS);
     }
@@ -346,26 +349,36 @@ sub bless_groups {
 
 sub in_group {
     my ($self, $group) = @_;
+    return exists $self->groups->{$group} ? 1 : 0;
+}
 
-    # If we already have the info, just return it.
-    return defined($self->{groups}->{$group}) if defined $self->{groups};
-    return 0 unless $self->id;
-
-    # Otherwise, go check for it
+sub in_group_id {
+    my ($self, $id) = @_;
+    my %j = reverse(%{$self->groups});
+    return exists $j{$id} ? 1 : 0;
+}
 
-    my $dbh = Bugzilla->dbh;
+sub can_see_user {
+    my ($self, $otherUser) = @_;
+    my $query;
 
-    my ($res) = $dbh->selectrow_array(q{SELECT 1
-                                  FROM groups, user_group_map
-                                 WHERE groups.id=user_group_map.group_id
-                                   AND user_group_map.user_id=?
-                                   AND isbless=0
-                                   AND groups.name=?},
-                              undef,
-                              $self->id,
-                              $group);
-
-    return defined($res);
+    if (Param('usevisibilitygroups')) {
+        # If the user can see no groups, then no users are visible either.
+        my $visibleGroups = $self->visible_groups_as_string() || return 0;
+        $query = qq{SELECT COUNT(DISTINCT userid)
+                    FROM profiles, user_group_map
+                    WHERE userid = ?
+                    AND user_id = userid
+                    AND isbless = 0
+                    AND group_id IN ($visibleGroups)
+                   };
+    } else {
+        $query = qq{SELECT COUNT(userid)
+                    FROM profiles
+                    WHERE userid = ?
+                   };
+    }
+    return Bugzilla->dbh->selectrow_array($query, undef, $otherUser->id);
 }
 
 sub can_see_bug {
@@ -388,7 +401,7 @@ sub can_see_bug {
                              LEFT JOIN bug_group_map 
                                ON bugs.bug_id = bug_group_map.bug_id
                                AND bug_group_map.group_ID NOT IN(" .
-                               join(',',(-1, values(%{$self->groups}))) .
+                               $self->groups_as_string .
                                ") WHERE bugs.bug_id = ? 
                                AND creation_ts IS NOT NULL " .
                              $dbh->sql_group_by('bugs.bug_id', 'reporter, ' .
@@ -408,16 +421,21 @@ sub can_see_bug {
                 || (!$missinggroup)));
 }
 
+sub can_see_product {
+    my ($self, $product_name) = @_;
+
+    return scalar(grep {$_->name eq $product_name} @{$self->get_selectable_products});
+}
+
 sub get_selectable_products {
     my ($self, $by_id) = @_;
 
-    if (defined $self->{SelectableProducts}) {
-        my %list = @{$self->{SelectableProducts}};
-        return \%list if $by_id;
-        return values(%list);
+    if (defined $self->{selectable_products}) {
+        return $self->{selectable_products};
     }
 
-    my $query = "SELECT id, name " .
+    my $dbh = Bugzilla->dbh;
+    my $query = "SELECT id " .
                 "FROM products " .
                 "LEFT JOIN group_control_map " .
                 "ON group_control_map.product_id = products.id ";
@@ -428,19 +446,34 @@ sub get_selectable_products {
                   CONTROLMAPMANDATORY . " ";
     }
     $query .= "AND group_id NOT IN(" . 
-               join(',', (-1,values(%{Bugzilla->user->groups}))) . ") " .
+               $self->groups_as_string . ") " .
               "WHERE group_id IS NULL ORDER BY name";
-    my $dbh = Bugzilla->dbh;
-    my $sth = $dbh->prepare($query);
-    $sth->execute();
-    my @products = ();
-    while (my @row = $sth->fetchrow_array) {
-        push(@products, @row);
+
+    my $prod_ids = $dbh->selectcol_arrayref($query);
+    my @products;
+    foreach my $prod_id (@$prod_ids) {
+        push(@products, new Bugzilla::Product($prod_id));
     }
-    $self->{SelectableProducts} = \@products;
-    my %list = @products;
-    return \%list if $by_id;
-    return values(%list);
+    $self->{selectable_products} = \@products;
+    return $self->{selectable_products};
+}
+
+sub get_selectable_classifications {
+    my ($self) = @_;
+
+    if (defined $self->{selectable_classifications}) {
+        return $self->{selectable_classifications};
+    }
+
+    my $products = $self->get_selectable_products;
+
+    my $class;
+    foreach my $product (@$products) {
+        $class->{$product->classification_id} ||= $product->classification;
+    }
+    my @sorted_class = sort {lc($a->name) cmp lc($b->name)} (values %$class);
+    $self->{selectable_classifications} = \@sorted_class;
+    return $self->{selectable_classifications};
 }
 
 # visible_groups_inherited returns a reference to a list of all the groups
@@ -479,8 +512,13 @@ sub visible_groups_direct {
     return $self->{visible_groups_direct};
 }
 
-sub derive_groups {
-    my ($self, $already_locked) = @_;
+sub visible_groups_as_string {
+    my $self = shift;
+    return join(', ', @{$self->visible_groups_inherited()});
+}
+
+sub derive_regexp_groups {
+    my ($self) = @_;
 
     my $id = $self->id;
     return unless $id;
@@ -489,71 +527,32 @@ sub derive_groups {
 
     my $sth;
 
-    $dbh->bz_lock_tables('profiles WRITE', 'user_group_map WRITE',
-                         'group_group_map READ',
-                         'groups READ') unless $already_locked;
-
     # avoid races, we are only up to date as of the BEGINNING of this process
     my $time = $dbh->selectrow_array("SELECT NOW()");
 
-    # first remove any old derived stuff for this user
-    $dbh->do(q{DELETE FROM user_group_map
-                      WHERE user_id = ?
-                        AND grant_type != ?},
-             undef,
-             $id,
-             GRANT_DIRECT);
-
-    my %groupidsadded = ();
     # add derived records for any matching regexps
 
-    $sth = $dbh->prepare("SELECT id, userregexp FROM groups WHERE userregexp != ''");
-    $sth->execute;
-
-    my $group_insert;
-    while (my $row = $sth->fetch) {
-        if ($self->{login} =~ m/$row->[1]/i) {
-            $group_insert ||= $dbh->prepare(q{INSERT INTO user_group_map
-                                              (user_id, group_id, isbless, grant_type)
-                                              VALUES (?, ?, 0, ?)});
-            $groupidsadded{$row->[0]} = 1;
-            $group_insert->execute($id, $row->[0], GRANT_REGEXP);
-        }
-    }
-
-    # Get a list of the groups of which the user is a member.
-    my %groupidschecked = ();
-
-    my @groupidstocheck = @{$dbh->selectcol_arrayref(q{SELECT group_id
-                                                         FROM user_group_map
-                                                        WHERE user_id=?},
-                                                     undef,
-                                                     $id)};
-
-    # Each group needs to be checked for inherited memberships once.
-    my $group_sth;
-    while (@groupidstocheck) {
-        my $group = shift @groupidstocheck;
-        if (!defined($groupidschecked{"$group"})) {
-            $groupidschecked{"$group"} = 1;
-            $group_sth ||= $dbh->prepare(q{SELECT grantor_id
-                                             FROM group_group_map
-                                            WHERE member_id=?
-                                              AND grant_type = } .
-                                                  GROUP_MEMBERSHIP);
-            $group_sth->execute($group);
-            while (my ($groupid) = $group_sth->fetchrow_array) {
-                if (!defined($groupidschecked{"$groupid"})) {
-                    push(@groupidstocheck,$groupid);
-                }
-                if (!$groupidsadded{$groupid}) {
-                    $groupidsadded{$groupid} = 1;
-                    $group_insert ||= $dbh->prepare(q{INSERT INTO user_group_map
-                                                      (user_id, group_id, isbless, grant_type)
-                                                      VALUES (?, ?, 0, ?)});
-                    $group_insert->execute($id, $groupid, GRANT_DERIVED);
-                }
-            }
+    $sth = $dbh->prepare("SELECT id, userregexp, user_group_map.group_id
+                            FROM groups
+                       LEFT JOIN user_group_map
+                              ON groups.id = user_group_map.group_id
+                             AND user_group_map.user_id = ?
+                             AND user_group_map.grant_type = ?");
+    $sth->execute($id, GRANT_REGEXP);
+
+    my $group_insert = $dbh->prepare(q{INSERT INTO user_group_map
+                                       (user_id, group_id, isbless, grant_type)
+                                       VALUES (?, ?, 0, ?)});
+    my $group_delete = $dbh->prepare(q{DELETE FROM user_group_map
+                                       WHERE user_id = ?
+                                         AND group_id = ?
+                                         AND isbless = 0
+                                         AND grant_type = ?});
+    while (my ($group, $regexp, $present) = $sth->fetchrow_array()) {
+        if (($regexp ne '') && ($self->{login} =~ m/$regexp/i)) {
+            $group_insert->execute($id, $group, GRANT_REGEXP) unless $present;
+        } else {
+            $group_delete->execute($id, $group, GRANT_REGEXP) if $present;
         }
     }
 
@@ -563,7 +562,6 @@ sub derive_groups {
              undef,
              $time,
              $id);
-    $dbh->bz_unlock_tables() unless $already_locked;
 }
 
 sub product_responsibilities {
@@ -668,8 +666,8 @@ sub match {
             $query .= "AND user_group_map.user_id = userid " .
                       "AND isbless = 0 " .
                       "AND group_id IN(" .
-                      join(', ', (-1, @{$user->visible_groups_inherited})) . ") " .
-                      "AND grant_type <> " . GRANT_DERIVED;
+                      join(', ', (-1, @{$user->visible_groups_inherited})) . 
+                      ")";
         }
         $query    .= " AND disabledtext = '' " if $exclude_disabled;
         $query    .= "ORDER BY namelength ";
@@ -721,8 +719,7 @@ sub match {
             $query .= " AND user_group_map.user_id = userid" .
                       " AND isbless = 0" .
                       " AND group_id IN(" .
-                join(', ', (-1, @{$user->visible_groups_inherited})) . ")" .
-                      " AND grant_type <> " . GRANT_DERIVED;
+                join(', ', (-1, @{$user->visible_groups_inherited})) . ")";
         }
         $query     .= " AND disabledtext = ''" if $exclude_disabled;
         $query     .= " ORDER BY namelength";
@@ -1140,8 +1137,7 @@ sub get_userlist {
         $query .= "LEFT JOIN user_group_map " .
                   "ON user_group_map.user_id = userid AND isbless = 0 " .
                   "AND group_id IN(" .
-                  join(', ', (-1, @{$self->visible_groups_inherited})) . ") " .
-                  "AND grant_type <> " . GRANT_DERIVED;
+                  join(', ', (-1, @{$self->visible_groups_inherited})) . ")";
     }
     $query    .= " WHERE disabledtext = '' ";
     $query    .= $dbh->sql_group_by('userid', 'login_name, realname');
@@ -1163,17 +1159,17 @@ sub get_userlist {
     return $self->{'userlist'};
 }
 
-sub insert_new_user ($$;$$) {
+sub insert_new_user {
     my ($username, $realname, $password, $disabledtext) = (@_);
     my $dbh = Bugzilla->dbh;
 
     $disabledtext ||= '';
 
     # If not specified, generate a new random password for the user.
-    $password ||= &::GenerateRandomPassword();
+    $password ||= generate_random_password();
     my $cryptpassword = bz_crypt($password);
 
-    # XXX - These should be moved into ValidateNewUser or CheckEmailSyntax
+    # XXX - These should be moved into is_available_username or validate_email_syntax
     #       At the least, they shouldn't be here. They're safe for now, though.
     trick_taint($username);
     trick_taint($realname);
@@ -1215,7 +1211,7 @@ sub insert_new_user ($$;$$) {
     return $password;
 }
 
-sub is_available_username ($;$) {
+sub is_available_username {
     my ($username, $old_username) = @_;
 
     if(login_to_id($username) != 0) {
@@ -1251,7 +1247,7 @@ sub is_available_username ($;$) {
     return 1;
 }
 
-sub login_to_id ($) {
+sub login_to_id {
     my ($login) = (@_);
     my $dbh = Bugzilla->dbh;
     # $login will only be used by the following SELECT statement, so it's safe.
@@ -1266,8 +1262,8 @@ sub login_to_id ($) {
     }
 }
 
-sub UserInGroup ($) {
-    return defined Bugzilla->user->groups->{$_[0]} ? 1 : 0;
+sub UserInGroup {
+    return exists Bugzilla->user->groups->{$_[0]} ? 1 : 0;
 }
 
 1;
@@ -1284,6 +1280,9 @@ Bugzilla::User - Object for a Bugzilla user
 
   my $user = new Bugzilla::User($id);
 
+  my @get_selectable_classifications = 
+      $user->get_selectable_classifications;
+
   # Class Functions
   $password = insert_new_user($username, $realname, $password, $disabledtext);
 
@@ -1342,10 +1341,6 @@ C<undef> if no matching user is found.
 This routine should not be required in general; most scripts should be using
 userids instead.
 
-This routine and C<new> both take an extra optional argument, which is
-passed as the argument to C<derive_groups> to avoid locking. See that
-routine's documentation for details.
-
 =end undocumented
 
 =item C<id>
@@ -1435,12 +1430,19 @@ are the names of the groups, whilst the values are the respective group ids.
 (This is so that a set of all groupids for groups the user is in can be
 obtained by C<values(%{$user-E<gt>groups})>.)
 
+=item C<groups_as_string>
+
+Returns a string containing a comma-seperated list of numeric group ids.  If
+the user is not a member of any groups, returns "-1". This is most often used
+within an SQL IN() function.
+
 =item C<in_group>
 
-Determines whether or not a user is in the given group. This method is mainly
-intended for cases where we are not looking at the currently logged in user,
-and only need to make a quick check for the group, where calling C<groups>
-and getting all of the groups would be overkill.
+Determines whether or not a user is in the given group by name. 
+
+=item C<in_group_id>
+
+Determines whether or not a user is in the given group by id. 
 
 =item C<bless_groups>
 
@@ -1451,11 +1453,21 @@ The arrayref consists of the groups the user can bless, taking into account
 that having editusers permissions means that you can bless all groups, and
 that you need to be aware of a group in order to bless a group.
 
+=item C<can_see_user(user)>
+
+Returns 1 if the specified user account exists and is visible to the user,
+0 otherwise.
+
 =item C<can_see_bug(bug_id)>
 
 Determines if the user can see the specified bug.
 
-=item C<derive_groups>
+=item C<can_see_product(product_name)>
+
+Returns 1 if the user can access the specified product, and 0 if the user
+should not be aware of the existence of the product.
+
+=item C<derive_regexp_groups>
 
 Bugzilla allows for group inheritance. When data about the user (or any of the
 groups) changes, the database must be updated. Handling updated groups is taken
@@ -1463,12 +1475,23 @@ care of by the constructor. However, when updating the email address, the
 user may be placed into different groups, based on a new email regexp. This
 method should be called in such a case to force reresolution of these groups.
 
-=item C<get_selectable_products(by_id)>
+=item C<get_selectable_products>
+
+ Description: Returns all products the user is allowed to access.
+
+ Params:      none
 
-Returns an alphabetical list of product names from which
-the user can select bugs.  If the $by_id parameter is true, it returns
-a hash where the keys are the product ids and the values are the
-product names.
+ Returns:     An array of product objects, sorted by the product name.
+
+=item C<get_selectable_classifications>
+
+ Description: Returns all classifications containing at least one product
+              the user is allowed to view.
+
+ Params:      none
+
+ Returns:     An array of Bugzilla::Classification objects, sorted by
+              the classification name.
 
 =item C<get_userlist>
 
@@ -1494,22 +1517,10 @@ be have derived groups up-to-date to select the users meeting this criteria.
 
 Returns a list of groups that the user is aware of.
 
-=begin undocumented
+=item C<visible_groups_as_string>
 
-This routine takes an optional argument. If true, then this routine will not
-lock the tables, but will rely on the caller to have done so itsself.
-
-This is required because mysql will only execute a query if all of the tables
-are locked, or if none of them are, not a mixture. If the caller has already
-done some locking, then this routine would fail. Thus the caller needs to lock
-all the tables required by this method, and then C<derive_groups> won't do
-any locking.
-
-This is a really ugly solution, and when Bugzilla supports transactions
-instead of using the explicit table locking we were forced to do when thats
-all MySQL supported, this will go away.
-
-=end undocumented
+Returns the result of C<visible_groups_direct> as a string (a comma-separated
+list).
 
 =item C<product_responsibilities>
 
diff --git a/Bugzilla/User/CVS/Entries b/Bugzilla/User/CVS/Entries
index 0300628b43e6b43fb543dbeca9155cfc177944aa..8860ff5d540476f94059493512758247ea3c9212 100644
--- a/Bugzilla/User/CVS/Entries
+++ b/Bugzilla/User/CVS/Entries
@@ -1,2 +1,2 @@
-/Setting.pm/1.4.2.2/Wed Jul 27 19:08:43 2005//TBUGZILLA-2_20
+/Setting.pm/1.6/Tue Jul 26 14:09:48 2005//TBUGZILLA-2_21_1
 D
diff --git a/Bugzilla/User/CVS/Tag b/Bugzilla/User/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/Bugzilla/User/CVS/Tag
+++ b/Bugzilla/User/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm
index 3374d2c115b9a802feb4c0d49ce8520cca5b64fb..3a9d6dae7c9f8c9c0201e1bbe1ebeb48d219cad0 100644
--- a/Bugzilla/Util.pm
+++ b/Bugzilla/Util.pm
@@ -23,6 +23,7 @@
 #                 Bradley Baetz <bbaetz@student.usyd.edu.au>
 #                 Christopher Aillon <christopher@aillon.com>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Frédéric Buclin <LpSolit@gmail.com>
 
 package Bugzilla::Util;
 
@@ -37,13 +38,15 @@ use base qw(Exporter);
                              lsearch max min
                              diff_arrays diff_strings
                              trim wrap_comment find_wrap_point
-                             format_time format_time_decimal
-                             file_mod_time
-                             bz_crypt);
+                             perform_substs
+                             format_time format_time_decimal validate_date
+                             file_mod_time is_7bit_clean
+                             bz_crypt generate_random_password
+                             validate_email_syntax);
 
 use Bugzilla::Config;
-use Bugzilla::Error;
 use Bugzilla::Constants;
+
 use Date::Parse;
 use Date::Format;
 use Text::Wrap;
@@ -131,6 +134,13 @@ sub xml_quote {
     return $var;
 }
 
+sub url_decode {
+    my ($todecode) = (@_);
+    $todecode =~ tr/+/ /;       # pluses become spaces
+    $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
+    return $todecode;
+}
+
 sub i_am_cgi {
     # I use SERVER_SOFTWARE because it's required to be
     # defined for all requests in the CGI spec.
@@ -214,7 +224,7 @@ sub diff_strings {
     return ($removed, $added);
 }
 
-sub wrap_comment ($) {
+sub wrap_comment {
     my ($comment) = @_;
     my $wrappedcomment = "";
 
@@ -238,7 +248,7 @@ sub wrap_comment ($) {
     return $wrappedcomment;
 }
 
-sub find_wrap_point ($$) {
+sub find_wrap_point {
     my ($string, $maxpos) = @_;
     if (!$string) { return 0 }
     if (length($string) < $maxpos) { return length($string) }
@@ -257,7 +267,13 @@ sub find_wrap_point ($$) {
     return $wrappoint;
 }
 
-sub format_time ($;$) {
+sub perform_substs {
+    my ($str, $substs) = (@_);
+    $str =~ s/%([a-z]*)%/(defined $substs->{$1} ? $substs->{$1} : Param($1))/eg;
+    return $str;
+}
+
+sub format_time {
     my ($date, $format) = @_;
 
     # If $format is undefined, try to guess the correct date format.    
@@ -309,7 +325,7 @@ sub format_time_decimal {
     return $newtime;
 }
 
-sub file_mod_time ($) {
+sub file_mod_time {
     my ($filename) = (@_);
     my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
         $atime,$mtime,$ctime,$blksize,$blocks)
@@ -317,7 +333,7 @@ sub file_mod_time ($) {
     return $mtime;
 }
 
-sub bz_crypt ($) {
+sub bz_crypt {
     my ($password) = @_;
 
     # The list of characters that can appear in a salt.  Salts and hashes
@@ -342,8 +358,20 @@ sub bz_crypt ($) {
     return $cryptedpassword;
 }
 
-sub ValidateDate {
-    my ($date, $format) = @_;
+sub generate_random_password {
+    my $size = shift || 10; # default to 10 chars if nothing specified
+    return join("", map{ ('0'..'9','a'..'z','A'..'Z')[rand 62] } (1..$size));
+}
+
+sub validate_email_syntax {
+    my ($addr) = @_;
+    my $match = Param('emailregexp');
+    my $ret = ($addr =~ /$match/ && $addr !~ /[\\\(\)<>&,;:"\[\] \t\r\n]/);
+    return $ret ? 1 : 0;
+}
+
+sub validate_date {
+    my ($date) = @_;
     my $date2;
 
     # $ts is undefined if the parser fails.
@@ -354,9 +382,12 @@ sub ValidateDate {
         $date =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/; 
         $date2 =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/;
     }
-    if (!$ts || $date ne $date2) {
-        ThrowUserError('illegal_date', {date => $date, format => $format});
-    } 
+    my $ret = ($ts && $date eq $date2);
+    return $ret ? 1 : 0;
+}
+
+sub is_7bit_clean {
+    return $_[0] !~ /[^\x20-\x7E\x0A\x0D]/;
 }
 
 1;
@@ -383,6 +414,12 @@ Bugzilla::Util - Generic utility functions for bugzilla
   value_quote($var);
   xml_quote($var);
 
+  # Functions for decoding
+  $rv = url_decode($var);
+
+  # Functions that tell you about your environment
+  my $is_cgi = i_am_cgi();
+
   # Functions for searching
   $loc = lsearch(\@arr, $val);
   $val = max($a, $b, $c);
@@ -395,6 +432,7 @@ Bugzilla::Util - Generic utility functions for bugzilla
   $val = trim(" abc ");
   ($removed, $added) = diff_strings($old, $new);
   $wrapped = wrap_comment($comment);
+  $msg = perform_substs($str, $substs);
 
   # Functions for formatting time
   format_time($time);
@@ -404,6 +442,11 @@ Bugzilla::Util - Generic utility functions for bugzilla
 
   # Cryptographic Functions
   $crypted_password = bz_crypt($password);
+  $new_password = generate_random_password($password_length);
+
+  # Validation Functions
+  validate_email_syntax($email);
+  validate_date($date);
 
 =head1 DESCRIPTION
 
@@ -487,6 +530,16 @@ This is similar to C<html_quote>, except that ' is escaped to &apos;. This
 is kept separate from html_quote partly for compatibility with previous code
 (for &apos;) and partly for future handling of non-ASCII characters.
 
+=item C<url_decode($val)>
+
+Converts the %xx encoding from the given URL back to its original form.
+
+=item C<i_am_cgi()>
+
+Tells you whether or not you are being run as a CGI script in a web
+server. For example, it would return false if the caller is running
+in a command-line script.
+
 =back
 
 =head2 Searching
@@ -563,6 +616,29 @@ Search for a comma, a whitespace or a hyphen to split $string, within the first
 $maxpos characters. If none of them is found, just split $string at $maxpos.
 The search starts at $maxpos and goes back to the beginning of the string.
 
+=item C<perform_substs($str, $substs)>
+
+Performs substitutions for sending out email with variables in it,
+or for inserting a parameter into some other string.
+
+Takes a string and a reference to a hash containing substitution 
+variables and their values.
+
+If the hash is not specified, or if we need to substitute something
+that's not in the hash, then we will use parameters to do the 
+substitution instead.
+
+Substitutions are always enclosed with '%' symbols. So they look like:
+%some_variable_name%. If "some_variable_name" is a key in the hash, then
+its value will be placed into the string. If it's not a key in the hash,
+then the value of the parameter called "some_variable_name" will be placed
+into the string.
+
+=item C<is_7bit_clean($str)>
+
+Returns true is the string contains only 7-bit characters (ASCII 32 through 126,
+ASCII 10 (LineFeed) and ASCII 13 (Carrage Return).
+
 =back
 
 =head2 Formatting Time
@@ -621,4 +697,26 @@ characters of the password to anyone who views the encrypted version.
 
 =end undocumented
 
+=item C<generate_random_password($password_length)>
+
+Returns an alphanumeric string with the specified length
+(10 characters by default). Use this function to generate passwords
+and tokens.
+
+=back
+
+=head2 Validation
+
+=over 4
+
+=item C<validate_email_syntax($email)>
+
+Do a syntax checking for a legal email address and returns 1 if
+the check is successful, else returns 0.
+
+=item C<validate_date($date)>
+
+Make sure the date has the correct format and returns 1 if
+the check is successful, else returns 0.
+
 =back
diff --git a/Bugzilla/Version.pm b/Bugzilla/Version.pm
new file mode 100644
index 0000000000000000000000000000000000000000..c6c4bdae2ee9eb5cacec13d1f6c8c40e16e00fb2
--- /dev/null
+++ b/Bugzilla/Version.pm
@@ -0,0 +1,213 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# Contributor(s): Tiago R. Mello <timello@async.com.br>
+
+use strict;
+
+package Bugzilla::Version;
+
+use Bugzilla::Util;
+use Bugzilla::Error;
+
+################################
+#####   Initialization     #####
+################################
+
+use constant DEFAULT_VERSION => 'unspecified';
+
+use constant DB_COLUMNS => qw(
+    versions.value
+    versions.product_id
+);
+
+our $columns = join(", ", DB_COLUMNS);
+
+sub new {
+    my $invocant = shift;
+    my $class = ref($invocant) || $invocant;
+    my $self = {};
+    bless($self, $class);
+    return $self->_init(@_);
+}
+
+sub _init {
+    my $self = shift;
+    my ($product_id, $value) = (@_);
+    my $dbh = Bugzilla->dbh;
+
+    my $version;
+
+    if (defined $product_id
+        && detaint_natural($product_id)
+        && defined $value) {
+
+        trick_taint($value);
+        $version = $dbh->selectrow_hashref(qq{
+            SELECT $columns FROM versions
+            WHERE value = ?
+            AND product_id = ?}, undef, ($value, $product_id));
+    } else {
+        ThrowCodeError('bad_arg',
+            {argument => 'product_id/value',
+             function => 'Bugzilla::Version::_init'});
+    }
+
+    return undef unless (defined $version);
+
+    foreach my $field (keys %$version) {
+        $self->{$field} = $version->{$field};
+    }
+    return $self;
+}
+
+sub bug_count {
+    my $self = shift;
+    my $dbh = Bugzilla->dbh;
+
+    if (!defined $self->{'bug_count'}) {
+        $self->{'bug_count'} = $dbh->selectrow_array(qq{
+            SELECT COUNT(*) FROM bugs
+            WHERE product_id = ? AND version = ?}, undef,
+            ($self->product_id, $self->name)) || 0;
+    }
+    return $self->{'bug_count'};
+}
+
+###############################
+#####     Accessors        ####
+###############################
+
+sub name       { return $_[0]->{'value'};      }
+sub product_id { return $_[0]->{'product_id'}; }
+
+###############################
+#####     Subroutines       ###
+###############################
+
+sub get_versions_by_product {
+    my ($product_id) = @_;
+    my $dbh = Bugzilla->dbh;
+
+    my $stored_product_id = $product_id;
+    unless (detaint_natural($product_id)) {
+        ThrowCodeError(
+            'invalid_numeric_argument',
+            {argument => 'product_id',
+             value    => $stored_product_id,
+             function =>
+                'Bugzilla::Version::get_versions_by_product'}
+        );
+    }
+
+    my $values = $dbh->selectcol_arrayref(q{
+        SELECT value FROM versions
+        WHERE product_id = ?}, undef, $product_id);
+
+    my @versions;
+    foreach my $value (@$values) {
+        push @versions, new Bugzilla::Version($product_id, $value);
+    }
+    return @versions;
+}
+
+sub check_version {
+    my ($product, $version_name) = @_;
+
+    $version_name || ThrowUserError('version_not_specified');
+    my $version = new Bugzilla::Version($product->id, $version_name);
+    unless ($version) {
+        ThrowUserError('version_not_valid',
+                       {'product' => $product->name,
+                        'version' => $version_name});
+    }
+    return $version;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Bugzilla::Version - Bugzilla product version class.
+
+=head1 SYNOPSIS
+
+    use Bugzilla::Version;
+
+    my $version = new Bugzilla::Version(1, 'version_value');
+
+    my $product_id = $version->product_id;
+    my $value = $version->value;
+
+    my $hash_ref = Bugzilla::Version::get_versions_by_product(1);
+    my $version = $hash_ref->{'version_value'};
+
+    my $version = Bugzilla::Version::check_version($product_obj,
+                                                   'acme_version');
+
+=head1 DESCRIPTION
+
+Version.pm represents a Product Version object.
+
+=head1 METHODS
+
+=over
+
+=item C<new($product_id, $value)>
+
+ Description: The constructor is used to load an existing version
+              by passing a product id and a version value.
+
+ Params:      $product_id - Integer with a product id.
+              $value - String with a version value.
+
+ Returns:     A Bugzilla::Version object.
+
+=item C<bug_count()>
+
+ Description: Returns the total of bugs that belong to the version.
+
+ Params:      none.
+
+ Returns:     Integer with the number of bugs.
+
+=back
+
+=head1 SUBROUTINES
+
+=over
+
+=item C<get_versions_by_product($product_id)>
+
+ Description: Returns all product versions that belong
+              to the supplied product.
+
+ Params:      $product_id - Integer with a product id.
+
+ Returns:     Bugzilla::Version object list.
+
+=item C<check_version($product, $version_name)>
+
+ Description: Checks if the version name exists for the product name.
+
+ Params:      $product - A Bugzilla::Product object.
+              $version_name - String with a version name.
+
+ Returns:     Bugzilla::Version object.
+
+=back
+
+=cut
diff --git a/CGI.pl b/CGI.pl
deleted file mode 100644
index 190fc8de8d0c25967d29f1f5ad4d72a9d5ced854..0000000000000000000000000000000000000000
--- a/CGI.pl
+++ /dev/null
@@ -1,374 +0,0 @@
-# -*- Mode: perl; indent-tabs-mode: nil -*-
-#
-# The contents of this file are subject to the Mozilla Public
-# License Version 1.1 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS
-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-#                 Dan Mosedale <dmose@mozilla.org>
-#                 Joe Robins <jmrobins@tgix.com>
-#                 Dave Miller <justdave@syndicomm.com>
-#                 Christopher Aillon <christopher@aillon.com>
-#                 Gervase Markham <gerv@gerv.net>
-#                 Christian Reis <kiko@async.com.br>
-
-# Contains some global routines used throughout the CGI scripts of Bugzilla.
-
-use strict;
-use lib ".";
-
-# use Carp;                       # for confess
-
-BEGIN {
-    if ($^O =~ /MSWin32/i) {
-        # Help CGI find the correct temp directory as the default list
-        # isn't Windows friendly (Bug 248988)
-        $ENV{'TMPDIR'} = $ENV{'TEMP'} || $ENV{'TMP'} || "$ENV{'WINDIR'}\\TEMP";
-    }
-}
-
-use Bugzilla::Util;
-use Bugzilla::Config;
-use Bugzilla::Constants;
-use Bugzilla::Error;
-use Bugzilla::BugMail;
-use Bugzilla::Bug;
-use Bugzilla::User;
-
-# Used in LogActivityEntry(). Gives the max length of lines in the
-# activity table.
-use constant MAX_LINE_LENGTH => 254;
-
-# Shut up misguided -w warnings about "used only once".  For some reason,
-# "use vars" chokes on me when I try it here.
-
-sub CGI_pl_sillyness {
-    my $zz;
-    $zz = $::buffer;
-}
-
-use CGI::Carp qw(fatalsToBrowser);
-
-require 'globals.pl';
-
-use vars qw($template $vars);
-
-# If Bugzilla is shut down, do not go any further, just display a message
-# to the user about the downtime and log out.  (do)editparams.cgi is exempted
-# from this message, of course, since it needs to be available in order for
-# the administrator to open Bugzilla back up.
-if (Param("shutdownhtml") && $0 !~ m:(^|[\\/])(do)?editparams\.cgi$:) {
-    # For security reasons, log out users when Bugzilla is down.
-    # Bugzilla->login() is required to catch the logincookie, if any.
-    my $user = Bugzilla->login(LOGIN_OPTIONAL);
-    my $userid = $user->id;
-    Bugzilla->logout();
-    
-    # Return the appropriate HTTP response headers.
-    print Bugzilla->cgi->header();
-    
-    $::vars->{'message'} = "shutdown";
-    $::vars->{'userid'} = $userid;
-    # Generate and return an HTML message about the downtime.
-    $::template->process("global/message.html.tmpl", $::vars)
-      || ThrowTemplateError($::template->error());
-    exit;
-}
-
-# Implementations of several of the below were blatently stolen from CGI.pm,
-# by Lincoln D. Stein.
-
-# Get rid of all the %xx encoding and the like from the given URL.
-sub url_decode {
-    my ($todecode) = (@_);
-    $todecode =~ tr/+/ /;       # pluses become spaces
-    $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
-    return $todecode;
-}
-
-# check and see if a given field exists, is non-empty, and is set to a 
-# legal value.  assume a browser bug and abort appropriately if not.
-# if $legalsRef is not passed, just check to make sure the value exists and 
-# is non-NULL
-sub CheckFormField ($$;\@) {
-    my ($cgi,                    # a CGI object
-        $fieldname,              # the fieldname to check
-        $legalsRef               # (optional) ref to a list of legal values 
-       ) = @_;
-
-    if (!defined $cgi->param($fieldname)
-        || trim($cgi->param($fieldname)) eq ""
-        || (defined($legalsRef)
-            && lsearch($legalsRef, $cgi->param($fieldname))<0))
-    {
-        SendSQL("SELECT description FROM fielddefs WHERE name=" . SqlQuote($fieldname));
-        my $result = FetchOneColumn();
-        my $field;
-        if ($result) {
-            $field = $result;
-        }
-        else {
-            $field = $fieldname;
-        }
-        
-        ThrowCodeError("illegal_field", { field => $field });
-    }
-}
-
-# check and see if a given field is defined, and abort if not
-sub CheckFormFieldDefined ($$) {
-    my ($cgi,                    # a CGI object
-        $fieldname,              # the fieldname to check
-       ) = @_;
-
-    if (!defined $cgi->param($fieldname)) {
-        ThrowCodeError("undefined_field", { field => $fieldname });
-    }
-}
-
-sub ValidateBugID {
-    # Validates and verifies a bug ID, making sure the number is a 
-    # positive integer, that it represents an existing bug in the
-    # database, and that the user is authorized to access that bug.
-    # We detaint the number here, too
-
-    my ($id, $field) = @_;
-    
-    # Get rid of white-space around the ID.
-    $id = trim($id);
-    
-    # If the ID isn't a number, it might be an alias, so try to convert it.
-    my $alias = $id;
-    if (!detaint_natural($id)) {
-        $id = bug_alias_to_id($alias);
-        $id || ThrowUserError("invalid_bug_id_or_alias",
-                              {'bug_id' => $alias,
-                               'field'  => $field });
-    }
-    
-    # Modify the calling code's original variable to contain the trimmed,
-    # converted-from-alias ID.
-    $_[0] = $id;
-    
-    # First check that the bug exists
-    SendSQL("SELECT bug_id FROM bugs WHERE bug_id = $id");
-
-    FetchOneColumn()
-      || ThrowUserError("invalid_bug_id_non_existent", {'bug_id' => $id});
-
-    return if (defined $field && ($field eq "dependson" || $field eq "blocked"));
-    
-    return if Bugzilla->user->can_see_bug($id);
-
-    # The user did not pass any of the authorization tests, which means they
-    # are not authorized to see the bug.  Display an error and stop execution.
-    # The error the user sees depends on whether or not they are logged in
-    # (i.e. $::userid contains the user's positive integer ID).
-    if ($::userid) {
-        ThrowUserError("bug_access_denied", {'bug_id' => $id});
-    } else {
-        ThrowUserError("bug_access_query", {'bug_id' => $id});
-    }
-}
-
-sub CheckEmailSyntax {
-    my ($addr) = (@_);
-    my $match = Param('emailregexp');
-    if ($addr !~ /$match/ || $addr =~ /[\\\(\)<>&,;:"\[\] \t\r\n]/) {
-        ThrowUserError("illegal_email_address", { addr => $addr });
-    }
-}
-
-sub MailPassword {
-    my ($login, $password) = (@_);
-    my $urlbase = Param("urlbase");
-    my $template = Param("passwordmail");
-    my $msg = PerformSubsts($template,
-                            {"mailaddress" => $login . Param('emailsuffix'),
-                             "login" => $login,
-                             "password" => $password});
-
-    Bugzilla::BugMail::MessageToMTA($msg);
-}
-
-sub PutHeader {
-    ($vars->{'title'}, $vars->{'h1'}, $vars->{'h2'}) = (@_);
-     
-    $::template->process("global/header.html.tmpl", $::vars)
-      || ThrowTemplateError($::template->error());
-    $vars->{'header_done'} = 1;
-}
-
-sub PutFooter {
-    $::template->process("global/footer.html.tmpl", $::vars)
-      || ThrowTemplateError($::template->error());
-}
-
-sub LogActivityEntry {
-    my ($i,$col,$removed,$added,$whoid,$timestamp) = @_;
-    # in the case of CCs, deps, and keywords, there's a possibility that someone
-    # might try to add or remove a lot of them at once, which might take more
-    # space than the activity table allows.  We'll solve this by splitting it
-    # into multiple entries if it's too long.
-    while ($removed || $added) {
-        my ($removestr, $addstr) = ($removed, $added);
-        if (length($removestr) > MAX_LINE_LENGTH) {
-            my $commaposition = find_wrap_point($removed, MAX_LINE_LENGTH);
-            $removestr = substr($removed,0,$commaposition);
-            $removed = substr($removed,$commaposition);
-            $removed =~ s/^[,\s]+//; # remove any comma or space
-        } else {
-            $removed = ""; # no more entries
-        }
-        if (length($addstr) > MAX_LINE_LENGTH) {
-            my $commaposition = find_wrap_point($added, MAX_LINE_LENGTH);
-            $addstr = substr($added,0,$commaposition);
-            $added = substr($added,$commaposition);
-            $added =~ s/^[,\s]+//; # remove any comma or space
-        } else {
-            $added = ""; # no more entries
-        }
-        $addstr = SqlQuote($addstr);
-        $removestr = SqlQuote($removestr);
-        my $fieldid = GetFieldID($col);
-        SendSQL("INSERT INTO bugs_activity " .
-                "(bug_id,who,bug_when,fieldid,removed,added) VALUES " .
-                "($i,$whoid," . SqlQuote($timestamp) . ",$fieldid,$removestr,$addstr)");
-    }
-}
-
-sub GetBugActivity {
-    my ($id, $starttime) = (@_);
-    my $datepart = "";
-    my $dbh = Bugzilla->dbh;
-
-    die "Invalid id: $id" unless $id=~/^\s*\d+\s*$/;
-
-    if (defined $starttime) {
-        $datepart = "AND bugs_activity.bug_when > " . SqlQuote($starttime);
-    }
-    my $suppjoins = "";
-    my $suppwhere = "";
-    if (Param("insidergroup") && !UserInGroup(Param('insidergroup'))) {
-        $suppjoins = "LEFT JOIN attachments 
-                   ON attachments.attach_id = bugs_activity.attach_id";
-        $suppwhere = "AND COALESCE(attachments.isprivate, 0) = 0";
-    }
-    my $query = "
-        SELECT COALESCE(fielddefs.description, " 
-               # This is a hack - PostgreSQL requires both COALESCE
-               # arguments to be of the same type, and this is the only
-               # way supported by both MySQL 3 and PostgreSQL to convert
-               # an integer to a string. MySQL 4 supports CAST.
-               . $dbh->sql_string_concat('bugs_activity.fieldid', q{''}) .
-               "), fielddefs.name, bugs_activity.attach_id, " .
-        $dbh->sql_date_format('bugs_activity.bug_when', '%Y.%m.%d %H:%i:%s') .
-            ", bugs_activity.removed, bugs_activity.added, profiles.login_name
-          FROM bugs_activity
-               $suppjoins
-     LEFT JOIN fielddefs
-            ON bugs_activity.fieldid = fielddefs.fieldid
-    INNER JOIN profiles
-            ON profiles.userid = bugs_activity.who
-         WHERE bugs_activity.bug_id = $id
-               $datepart
-               $suppwhere
-      ORDER BY bugs_activity.bug_when";
-
-    SendSQL($query);
-    
-    my @operations;
-    my $operation = {};
-    my $changes = [];
-    my $incomplete_data = 0;
-    
-    while (my ($field, $fieldname, $attachid, $when, $removed, $added, $who) 
-                                                               = FetchSQLData())
-    {
-        my %change;
-        my $activity_visible = 1;
-        
-        # check if the user should see this field's activity
-        if ($fieldname eq 'remaining_time' ||
-            $fieldname eq 'estimated_time' ||
-            $fieldname eq 'work_time' ||
-            $fieldname eq 'deadline') {
-
-            if (!UserInGroup(Param('timetrackinggroup'))) {
-                $activity_visible = 0;
-            } else {
-                $activity_visible = 1;
-            }
-        } else {
-            $activity_visible = 1;
-        }
-                
-        if ($activity_visible) {
-            # This gets replaced with a hyperlink in the template.
-            $field =~ s/^Attachment// if $attachid;
-
-            # Check for the results of an old Bugzilla data corruption bug
-            $incomplete_data = 1 if ($added =~ /^\?/ || $removed =~ /^\?/);
-        
-            # An operation, done by 'who' at time 'when', has a number of
-            # 'changes' associated with it.
-            # If this is the start of a new operation, store the data from the
-            # previous one, and set up the new one.
-            if ($operation->{'who'} 
-                && ($who ne $operation->{'who'} 
-                    || $when ne $operation->{'when'})) 
-            {
-                $operation->{'changes'} = $changes;
-                push (@operations, $operation);
-            
-                # Create new empty anonymous data structures.
-                $operation = {};
-                $changes = [];
-            }  
-            
-            $operation->{'who'} = $who;
-            $operation->{'when'} = $when;            
-        
-            $change{'field'} = $field;
-            $change{'fieldname'} = $fieldname;
-            $change{'attachid'} = $attachid;
-            $change{'removed'} = $removed;
-            $change{'added'} = $added;
-            push (@$changes, \%change);
-        }   
-    }
-    
-    if ($operation->{'who'}) {
-        $operation->{'changes'} = $changes;
-        push (@operations, $operation);
-    }
-    
-    return(\@operations, $incomplete_data);
-}
-
-############# Live code below here (that is, not subroutine defs) #############
-
-use Bugzilla;
-
-# XXX - mod_perl - reset this between runs
-$::cgi = Bugzilla->cgi;
-
-$::buffer = $::cgi->query_string();
-
-# This could be needed in any CGI, so we set it here.
-$vars->{'help'} = $::cgi->param('help') ? 1 : 0;
-
-1;
diff --git a/CVS/Entries b/CVS/Entries
index 7e75dd275bdea7a22d30cc8b5b66ab6ac8b548a1..09e35cbdee9184d419dfa8b555c9929980c118d5 100644
--- a/CVS/Entries
+++ b/CVS/Entries
@@ -1,77 +1,71 @@
-/.cvsignore/1.6/Mon May 13 22:28:26 2002//TBUGZILLA-2_20
-/Bugzilla.pm/1.17/Thu Mar  3 05:28:42 2005//TBUGZILLA-2_20
-/CGI.pl/1.242.2.1/Wed Jul 27 20:01:38 2005//TBUGZILLA-2_20
-/QUICKSTART/1.4/Thu Jul  8 19:59:25 2004//TBUGZILLA-2_20
-/README/1.52/Fri Oct 10 02:22:39 2003//TBUGZILLA-2_20
-/UPGRADING/1.1/Fri Aug 10 22:35:21 2001//TBUGZILLA-2_20
-/UPGRADING-pre-2.8/1.3/Thu Mar 27 00:06:37 2003//TBUGZILLA-2_20
-/ant.jpg/1.2/Wed Aug 26 22:36:05 1998/-kb/TBUGZILLA-2_20
-/attachment.cgi/1.89/Fri Jul  8 05:29:14 2005//TBUGZILLA-2_20
-/buglist.cgi/1.299.2.3/Sun Sep 25 21:10:55 2005//TBUGZILLA-2_20
-/bugzilla.dtd/1.11/Thu Jun  2 21:26:43 2005//TBUGZILLA-2_20
-/chart.cgi/1.11/Thu May 12 01:52:13 2005//TBUGZILLA-2_20
-/checksetup.pl/1.412.2.9/Mon Sep 12 10:51:08 2005//TBUGZILLA-2_20
-/colchange.cgi/1.49/Fri Jul  8 03:39:19 2005//TBUGZILLA-2_20
-/collectstats.pl/1.43.4.1/Tue Jul 19 14:35:57 2005//TBUGZILLA-2_20
-/config.cgi/1.8.4.2/Sat Oct  1 01:09:04 2005//TBUGZILLA-2_20
-/createaccount.cgi/1.39.2.1/Wed Jul 27 20:18:20 2005//TBUGZILLA-2_20
-/defparams.pl/1.160.2.2/Mon Aug 22 21:31:16 2005//TBUGZILLA-2_20
-/describecomponents.cgi/1.29/Wed Mar  9 20:53:20 2005//TBUGZILLA-2_20
-/describekeywords.cgi/1.14/Wed Mar 16 00:27:14 2005//TBUGZILLA-2_20
-/doeditparams.cgi/1.33/Tue Mar 15 22:10:13 2005//TBUGZILLA-2_20
-/duplicates.cgi/1.44/Sat Jul 10 07:17:02 2004//TBUGZILLA-2_20
-/duplicates.xul/1.2/Thu Oct 21 19:02:28 2004//TBUGZILLA-2_20
-/editclassifications.cgi/1.12.2.1/Wed Jul 27 19:36:50 2005//TBUGZILLA-2_20
-/editcomponents.cgi/1.54/Wed Apr  6 00:19:51 2005//TBUGZILLA-2_20
-/editflagtypes.cgi/1.19/Thu May  5 19:20:44 2005//TBUGZILLA-2_20
-/editgroups.cgi/1.52.4.1/Wed Aug  3 00:38:35 2005//TBUGZILLA-2_20
-/editkeywords.cgi/1.26/Wed Mar 16 00:27:14 2005//TBUGZILLA-2_20
-/editmilestones.cgi/1.38/Tue May  3 19:41:22 2005//TBUGZILLA-2_20
-/editparams.cgi/1.24/Tue Mar 15 22:10:13 2005//TBUGZILLA-2_20
-/editproducts.cgi/1.85.2.7/Tue Sep 27 21:53:05 2005//TBUGZILLA-2_20
-/editsettings.cgi/1.2.4.1/Wed Jul 20 02:23:33 2005//TBUGZILLA-2_20
-/editusers.cgi/1.90.2.6/Sun Sep 25 20:54:38 2005//TBUGZILLA-2_20
-/editvalues.cgi/1.3.2.2/Wed Jul 27 19:36:50 2005//TBUGZILLA-2_20
-/editversions.cgi/1.34/Wed Apr  6 00:19:51 2005//TBUGZILLA-2_20
-/editwhines.cgi/1.8.2.1/Sun Aug 21 20:25:29 2005//TBUGZILLA-2_20
-/enter_bug.cgi/1.114.4.1/Wed Aug 17 18:18:13 2005//TBUGZILLA-2_20
-/globals.pl/1.326.2.4/Fri Sep  9 22:22:41 2005//TBUGZILLA-2_20
-/importxml.pl/1.44.2.1/Fri Aug  5 01:01:40 2005//TBUGZILLA-2_20
-/index.cgi/1.13.10.1/Sun Aug 21 19:30:07 2005//TBUGZILLA-2_20
-/localconfig.js/1.2/Thu Jul 17 22:49:47 2003//TBUGZILLA-2_20
-/long_list.cgi/1.45/Mon Jan 24 16:39:15 2005//TBUGZILLA-2_20
-/move.pl/1.31.4.2/Thu Sep  8 23:45:14 2005//TBUGZILLA-2_20
-/page.cgi/1.15/Sat Apr 17 04:41:14 2004//TBUGZILLA-2_20
-/post_bug.cgi/1.118.2.1/Wed Aug  3 00:20:45 2005//TBUGZILLA-2_20
-/process_bug.cgi/1.263.2.3/Thu Sep  8 23:45:15 2005//TBUGZILLA-2_20
-/productmenu.js/1.2/Tue Dec 14 02:29:56 2004//TBUGZILLA-2_20
-/query.cgi/1.146.2.1/Sun Aug 21 20:46:56 2005//TBUGZILLA-2_20
-/quicksearch.html/1.3/Mon Apr 15 02:47:55 2002//TBUGZILLA-2_20
-/quicksearch.js/1.12/Thu Jun  9 09:32:24 2005//TBUGZILLA-2_20
-/quicksearchhack.html/1.6/Mon Jun 20 19:16:26 2005//TBUGZILLA-2_20
-/quips.cgi/1.28/Wed Jun 29 21:54:49 2005//TBUGZILLA-2_20
-/relogin.cgi/1.25.10.1/Sat Aug 13 14:17:16 2005//TBUGZILLA-2_20
-/report.cgi/1.29/Mon Apr  4 23:02:16 2005//TBUGZILLA-2_20
-/reports.cgi/1.74.4.1/Thu Aug  4 16:06:36 2005//TBUGZILLA-2_20
-/request.cgi/1.23/Fri Jul  8 02:31:41 2005//TBUGZILLA-2_20
-/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-2_20
-/runtests.pl/1.4/Fri Sep  3 06:59:08 2004//TBUGZILLA-2_20
-/sanitycheck.cgi/1.97/Wed Jun 29 22:18:21 2005//TBUGZILLA-2_20
-/show_activity.cgi/1.15/Sat Mar 27 03:51:44 2004//TBUGZILLA-2_20
-/show_bug.cgi/1.32.4.1/Sun Aug 21 20:56:12 2005//TBUGZILLA-2_20
-/showattachment.cgi/1.14/Mon May  5 01:15:29 2003//TBUGZILLA-2_20
-/showdependencygraph.cgi/1.38.4.1/Tue Aug  9 19:46:36 2005//TBUGZILLA-2_20
-/showdependencytree.cgi/1.32/Mon Apr  4 21:52:06 2005//TBUGZILLA-2_20
-/sidebar.cgi/1.14/Sat Mar 27 03:51:44 2004//TBUGZILLA-2_20
-/summarize_time.cgi/1.7/Thu Apr  7 18:18:52 2005//TBUGZILLA-2_20
-/testagent.cgi/1.2/Thu Jul 22 07:05:05 2004//TBUGZILLA-2_20
-/testserver.pl/1.6.4.1/Thu Sep 15 10:37:33 2005//TBUGZILLA-2_20
-/token.cgi/1.31.2.1/Wed Jul 13 04:02:16 2005//TBUGZILLA-2_20
-/userprefs.cgi/1.75.4.4/Wed Aug  3 00:10:08 2005//TBUGZILLA-2_20
-/votes.cgi/1.29.4.1/Tue Aug 23 12:22:26 2005//TBUGZILLA-2_20
-/whine.pl/1.13.2.1/Sat Aug 20 17:23:56 2005//TBUGZILLA-2_20
-/whineatnews.pl/1.19/Fri Jul  8 02:17:04 2005//TBUGZILLA-2_20
-/xml.cgi/1.12/Thu Mar 27 00:06:50 2003//TBUGZILLA-2_20
+/.cvsignore/1.6/Mon May 13 22:28:26 2002//TBUGZILLA-2_21_1
+/Bugzilla.pm/1.19/Wed Jul 27 19:58:22 2005//TBUGZILLA-2_21_1
+/QUICKSTART/1.5/Sun Aug 21 18:16:40 2005//TBUGZILLA-2_21_1
+/README/1.52/Fri Oct 10 02:22:39 2003//TBUGZILLA-2_21_1
+/UPGRADING/1.1/Fri Aug 10 22:35:21 2001//TBUGZILLA-2_21_1
+/UPGRADING-pre-2.8/1.3/Thu Mar 27 00:06:37 2003//TBUGZILLA-2_21_1
+/ant.jpg/1.2/Wed Aug 26 22:36:05 1998/-kb/TBUGZILLA-2_21_1
+/attachment.cgi/1.96/Mon Sep  5 20:41:20 2005//TBUGZILLA-2_21_1
+/buglist.cgi/1.311/Sun Sep 25 21:04:30 2005//TBUGZILLA-2_21_1
+/bugzilla.dtd/1.12/Thu Sep 22 17:05:36 2005//TBUGZILLA-2_21_1
+/chart.cgi/1.14/Thu Aug 25 14:02:39 2005//TBUGZILLA-2_21_1
+/checksetup.pl/1.439/Tue Sep 27 17:16:55 2005//TBUGZILLA-2_21_1
+/colchange.cgi/1.50/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/collectstats.pl/1.44/Tue Jul 19 14:33:40 2005//TBUGZILLA-2_21_1
+/config.cgi/1.13/Sat Oct  1 01:04:44 2005//TBUGZILLA-2_21_1
+/createaccount.cgi/1.44/Mon Aug 15 17:43:35 2005//TBUGZILLA-2_21_1
+/defparams.pl/1.166/Mon Aug 22 21:26:27 2005//TBUGZILLA-2_21_1
+/describecomponents.cgi/1.30/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/describekeywords.cgi/1.15/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/doeditparams.cgi/1.36/Thu Sep 15 22:01:56 2005//TBUGZILLA-2_21_1
+/duplicates.cgi/1.47/Fri Sep  2 21:12:07 2005//TBUGZILLA-2_21_1
+/duplicates.xul/1.2/Thu Oct 21 19:02:28 2004//TBUGZILLA-2_21_1
+/editclassifications.cgi/1.17/Sat Aug 13 12:27:03 2005//TBUGZILLA-2_21_1
+/editcomponents.cgi/1.61/Thu Sep 15 22:01:56 2005//TBUGZILLA-2_21_1
+/editflagtypes.cgi/1.28/Thu Sep 22 17:16:47 2005//TBUGZILLA-2_21_1
+/editgroups.cgi/1.61/Thu Sep 15 22:01:56 2005//TBUGZILLA-2_21_1
+/editkeywords.cgi/1.32/Thu Sep 15 22:01:56 2005//TBUGZILLA-2_21_1
+/editmilestones.cgi/1.44/Tue Sep 27 22:08:11 2005//TBUGZILLA-2_21_1
+/editparams.cgi/1.27/Thu Sep 15 22:01:56 2005//TBUGZILLA-2_21_1
+/editproducts.cgi/1.101/Tue Sep 27 21:47:32 2005//TBUGZILLA-2_21_1
+/editsettings.cgi/1.5/Thu Sep 15 22:01:56 2005//TBUGZILLA-2_21_1
+/editusers.cgi/1.105/Sun Sep 25 20:51:52 2005//TBUGZILLA-2_21_1
+/editvalues.cgi/1.7/Sat Aug 13 12:27:03 2005//TBUGZILLA-2_21_1
+/editversions.cgi/1.38/Tue Sep 27 22:08:11 2005//TBUGZILLA-2_21_1
+/editwhines.cgi/1.11/Thu Sep 15 22:01:56 2005//TBUGZILLA-2_21_1
+/enter_bug.cgi/1.119/Fri Sep  2 21:12:07 2005//TBUGZILLA-2_21_1
+/globals.pl/1.340/Fri Sep  9 22:22:41 2005//TBUGZILLA-2_21_1
+/importxml.pl/1.46/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/index.cgi/1.15/Sun Aug 21 19:27:40 2005//TBUGZILLA-2_21_1
+/long_list.cgi/1.46/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/page.cgi/1.17/Thu Aug 25 14:02:40 2005//TBUGZILLA-2_21_1
+/post_bug.cgi/1.126/Tue Aug 30 16:04:39 2005//TBUGZILLA-2_21_1
+/process_bug.cgi/1.285/Thu Sep 15 10:50:04 2005//TBUGZILLA-2_21_1
+/productmenu.js/1.3/Sun Aug 21 20:05:39 2005//TBUGZILLA-2_21_1
+/query.cgi/1.151/Fri Sep  2 21:12:08 2005//TBUGZILLA-2_21_1
+/quips.cgi/1.29/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/relogin.cgi/1.27/Sat Aug 13 14:14:39 2005//TBUGZILLA-2_21_1
+/report.cgi/1.32/Thu Aug 25 14:02:40 2005//TBUGZILLA-2_21_1
+/reports.cgi/1.79/Fri Sep  2 21:12:08 2005//TBUGZILLA-2_21_1
+/request.cgi/1.26/Fri Sep  2 21:12:08 2005//TBUGZILLA-2_21_1
+/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-2_21_1
+/runtests.pl/1.4/Fri Sep  3 06:59:08 2004//TBUGZILLA-2_21_1
+/sanitycheck.cgi/1.103/Thu Aug 18 20:09:36 2005//TBUGZILLA-2_21_1
+/show_activity.cgi/1.17/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/show_bug.cgi/1.36/Wed Sep  7 12:05:10 2005//TBUGZILLA-2_21_1
+/showattachment.cgi/1.14/Mon May  5 01:15:29 2003//TBUGZILLA-2_21_1
+/showdependencygraph.cgi/1.42/Mon Aug 15 17:58:10 2005//TBUGZILLA-2_21_1
+/showdependencytree.cgi/1.34/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/sidebar.cgi/1.15/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
+/summarize_time.cgi/1.9/Thu Aug 25 14:02:40 2005//TBUGZILLA-2_21_1
+/testagent.cgi/1.2/Thu Jul 22 07:05:05 2004//TBUGZILLA-2_21_1
+/testserver.pl/1.7/Thu Sep 15 10:35:06 2005//TBUGZILLA-2_21_1
+/token.cgi/1.36/Thu Aug 18 20:09:36 2005//TBUGZILLA-2_21_1
+/userprefs.cgi/1.87/Thu Aug 18 20:09:36 2005//TBUGZILLA-2_21_1
+/votes.cgi/1.33/Fri Sep  2 21:33:35 2005//TBUGZILLA-2_21_1
+/whine.pl/1.16/Tue Sep 20 20:56:38 2005//TBUGZILLA-2_21_1
+/whineatnews.pl/1.20/Mon Aug 15 17:58:10 2005//TBUGZILLA-2_21_1
+/xml.cgi/1.13/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_21_1
 D/Bugzilla////
 D/contrib////
 D/docs////
diff --git a/CVS/Tag b/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/CVS/Tag
+++ b/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/QUICKSTART b/QUICKSTART
index 3f26f06d1aab60129f40cac6394a9cbf0c8ce498..54ebfa4cf1ac5eea0c364176d7b92c2019e3b112 100644
--- a/QUICKSTART
+++ b/QUICKSTART
@@ -30,10 +30,6 @@ of the Bugzilla Guide in the docs/ directory.
    If you want to change platforms, operating systems, severities and
    priorities, this can also be done in localconfig at this time.
 
-   You should also update localconfig.js to reflect these changes. This
-   includes setting the URL you chose in step 1 as the 'bugzilla' JS
-   variable.
-
 5. Using the name you provided as $db_name above, create a MySQL database
    for Bugzilla. You should also create a user permission for the name
    supplied as $db_user with read/write access to that database.
diff --git a/attachment.cgi b/attachment.cgi
index e4cbe8eed76e6099b788a67e163d8dd901ab6a85..67272ae50376d5b37aa302bb2f975a2dbc57a477 100755
--- a/attachment.cgi
+++ b/attachment.cgi
@@ -24,6 +24,7 @@
 #                 Dave Miller <justdave@syndicomm.com>
 #                 Alexander J. Vincent <ajvincent@juno.com>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Greg Hendricks <ghendricks@novell.com>
 
 ################################################################################
 # Script Initialization
@@ -34,13 +35,10 @@ use strict;
 
 use lib qw(.);
 
-use vars qw(
-  $template
-  $vars
-);
+use vars qw($template $vars);
 
 # Include the Bugzilla CGI and general utility library.
-require "CGI.pl";
+require "globals.pl";
 use Bugzilla::Config qw(:locations);
 
 # Use these modules to handle flags.
@@ -50,6 +48,7 @@ use Bugzilla::FlagType;
 use Bugzilla::User;
 use Bugzilla::Util;
 use Bugzilla::Bug;
+use Bugzilla::Field;
 
 Bugzilla->login();
 
@@ -134,7 +133,7 @@ sub validateID
     # Happens when calling plain attachment.cgi from the urlbar directly
     if ($param eq 'id' && !$cgi->param('id')) {
 
-        print Bugzilla->cgi->header();
+        print $cgi->header();
         $template->process("attachment/choose.html.tmpl", $vars) ||
             ThrowTemplateError($template->error());
         exit;
@@ -335,7 +334,22 @@ sub validateData
   $data
     || ($cgi->param('bigfile'))
     || ThrowUserError("zero_length_file");
-
+    
+    # Windows screenshots are usually uncompressed BMP files which
+    # makes for a quick way to eat up disk space. Let's compress them. 
+    # We do this before we check the size since the uncompressed version
+    # could easily be greater than maxattachmentsize.
+    if (Param('convert_uncompressed_images') && $cgi->param('contenttype') eq 'image/bmp'){
+      require Image::Magick; 
+      my $img = Image::Magick->new(magick=>'bmp');
+      $img->BlobToImage($data);
+      $img->set(magick=>'png');
+      my $imgdata = $img->ImageToBlob();
+      $data = $imgdata;
+      $cgi->param('contenttype', 'image/png');
+      $vars->{'convertedbmp'} = 1;
+    }
+    
   # Make sure the attachment does not exceed the maximum permitted size
   my $len = $data ? length($data) : 0;
   if ($maxsize && $len > $maxsize) {
@@ -459,6 +473,7 @@ sub view
 
     # Retrieve the attachment content and its content type from the database.
     SendSQL("SELECT mimetype, filename, thedata FROM attachments " .
+            "INNER JOIN attach_data ON id = attach_id " .
             "WHERE attach_id = $attach_id");
     my ($contenttype, $filename, $thedata) = FetchSQLData();
    
@@ -496,9 +511,9 @@ sub view
     $filename =~ s/\\/\\\\/g; # escape backslashes
     $filename =~ s/"/\\"/g; # escape quotes
 
-    print Bugzilla->cgi->header(-type=>"$contenttype; name=\"$filename\"",
-                                -content_disposition=> "inline; filename=\"$filename\"",
-                                -content_length => $filesize);
+    print $cgi->header(-type=>"$contenttype; name=\"$filename\"",
+                       -content_disposition=> "inline; filename=\"$filename\"",
+                       -content_length => $filesize);
 
     if ($thedata) {
         print $thedata;
@@ -582,7 +597,11 @@ sub get_unified_diff
   require File::Temp;
 
   # Get the patch
-  SendSQL("SELECT bug_id, description, ispatch, thedata FROM attachments WHERE attach_id = $id");
+  SendSQL("SELECT bug_id, description, ispatch, thedata " . 
+          "FROM attachments " .
+          "INNER JOIN attach_data " .
+          "ON id = attach_id " .
+          "WHERE attach_id = $id");
   my ($bugid, $description, $ispatch, $thedata) = FetchSQLData();
   if (!$ispatch) {
     $vars->{'attach_id'} = $id;
@@ -713,6 +732,7 @@ sub diff
 
   # Get patch data
   SendSQL("SELECT bug_id, description, ispatch, thedata FROM attachments " .
+          "INNER JOIN attach_data ON id = attach_id " .
           "WHERE attach_id = $attach_id");
   my ($bugid, $description, $ispatch, $thedata) = FetchSQLData();
 
@@ -730,7 +750,6 @@ sub diff
     require PatchReader::DiffPrinter::raw;
     $last_reader->sends_data_to(new PatchReader::DiffPrinter::raw());
     # Actually print out the patch
-    use vars qw($cgi);
     print $cgi->header(-type => 'text/plain',
                        -expires => '+3M');
     $reader->iterate_string("Attachment $attach_id", $thedata);
@@ -785,7 +804,10 @@ sub viewall
             $dbh->sql_date_format('creation_ts', '%Y.%m.%d %H:%i') . ",
             mimetype, description, ispatch, isobsolete, isprivate, 
             LENGTH(thedata)
-            FROM attachments WHERE bug_id = $bugid $privacy 
+            FROM attachments 
+            INNER JOIN attach_data
+            ON attach_id = id
+            WHERE bug_id = $bugid $privacy 
             ORDER BY attach_id");
   my @attachments; # the attachments array
   while (MoreSQLData())
@@ -814,7 +836,7 @@ sub viewall
   $vars->{'bugsummary'} = $bugsummary;
   $vars->{'GetBugLink'} = \&GetBugLink;
 
-  print Bugzilla->cgi->header();
+  print $cgi->header();
 
   # Generate and return the UI (HTML page) from the appropriate template.
   $template->process("attachment/show-multiple.html.tmpl", $vars)
@@ -871,7 +893,7 @@ sub enter
   $vars->{'any_flags_requesteeble'} = grep($_->{'is_requesteeble'},
                                            @$flag_types);
 
-  print Bugzilla->cgi->header();
+  print $cgi->header();
 
   # Generate and return the UI (HTML page) from the appropriate template.
   $template->process("attachment/create.html.tmpl", $vars)
@@ -891,9 +913,11 @@ sub insert
     ValidateComment(scalar $cgi->param('comment'));
     my $filename = validateFilename();
     validateIsPatch();
-    my $data = validateData();
     validateDescription();
+    # need to validate content type before data as
+    # we now check the content type for image/bmp in validateData()
     validateContentType() unless $cgi->param('ispatch');
+    my $data = validateData();
 
     my @obsolete_ids = ();
     @obsolete_ids = validateObsolete() if $cgi->param('obsolete');
@@ -902,7 +926,7 @@ sub insert
     # and FlagType::validate assume User::match_field has ensured that the
     # values in the requestee fields are legitimate user email addresses.
     my $match_status = Bugzilla::User::match_field($cgi, {
-        '^requestee(_type)?-(\d+)$' => { 'type' => 'single' },
+        '^requestee(_type)?-(\d+)$' => { 'type' => 'multi' },
     }, MATCH_SKIP_CONFIRM);
 
     $vars->{'match_field'} = 'requestee';
@@ -931,19 +955,23 @@ sub insert
 
   # Insert the attachment into the database.
   my $sth = $dbh->prepare("INSERT INTO attachments
-      (thedata, bug_id, creation_ts, filename, description,
+      (bug_id, creation_ts, filename, description,
        mimetype, ispatch, isprivate, submitter_id) 
-      VALUES (?, $bugid, $sql_timestamp, $sql_filename,
+      VALUES ($bugid, $sql_timestamp, $sql_filename,
               $description, $contenttype, " . $cgi->param('ispatch') . ",
               $isprivate, $userid)");
+  $sth->execute();
+  # Retrieve the ID of the newly created attachment record.
+  my $attachid = $dbh->bz_last_key('attachments', 'attach_id');
+
   # We only use $data here in this INSERT with a placeholder,
   # so it's safe.
+  $sth = $dbh->prepare("INSERT INTO attach_data
+                           (id, thedata) VALUES ($attachid, ?)");
   trick_taint($data);
   $sth->bind_param(1, $data, $dbh->BLOB_TYPE);
   $sth->execute();
 
-  # Retrieve the ID of the newly created attachment record.
-  my $attachid = $dbh->bz_last_key('attachments', 'attach_id');
 
   # If the file is to be stored locally, stream the file from the webserver
   # to the local file without reading it into a local variable.
@@ -981,7 +1009,7 @@ sub insert
   AppendComment($bugid, $userid, $comment, $isprivate, $timestamp);
 
   # Make existing attachments obsolete.
-  my $fieldid = GetFieldID('attachments.isobsolete');
+  my $fieldid = get_field_id('attachments.isobsolete');
   foreach my $obsolete_id (@obsolete_ids) {
       # If the obsolete attachment has request flags, cancel them.
       # This call must be done before updating the 'attachments' table.
@@ -1030,7 +1058,7 @@ sub insert
       # Add the changes to the bugs_activity table
       for (my $i = 0; $i < 3; $i++) {
           if ($oldvalues[$i] ne $newvalues[$i]) {
-              my $fieldid = GetFieldID($fields[$i]);
+              my $fieldid = get_field_id($fields[$i]);
               SendSQL("INSERT INTO bugs_activity " .
                       "(bug_id, who, bug_when, fieldid, removed, added) " .
                       "VALUES ($bugid, $userid, $sql_timestamp, " .
@@ -1040,8 +1068,7 @@ sub insert
   }   
   
   # Create flags.
-  my $target = Bugzilla::Flag::GetTarget(undef, $attachid);
-  Bugzilla::Flag::process($target, $timestamp, $cgi);
+  Bugzilla::Flag::process($bugid, $attachid, $timestamp, $cgi);
    
   # Define the variables and functions that will be passed to the UI template.
   $vars->{'mailrecipients'} =  { 'changer' => Bugzilla->user->login,
@@ -1052,7 +1079,7 @@ sub insert
   $vars->{'contenttypemethod'} = $cgi->param('contenttypemethod');
   $vars->{'contenttype'} = $cgi->param('contenttype');
 
-  print Bugzilla->cgi->header();
+  print $cgi->header();
 
   # Generate and return the UI (HTML page) from the appropriate template.
   $template->process("attachment/created.html.tmpl", $vars)
@@ -1070,7 +1097,10 @@ sub edit
 
   # Retrieve the attachment from the database.
   SendSQL("SELECT description, mimetype, filename, bug_id, ispatch, isobsolete, isprivate, LENGTH(thedata)
-           FROM attachments WHERE attach_id = $attach_id");
+           FROM attachments
+           INNER JOIN attach_data
+           ON id = attach_id
+           WHERE attach_id = $attach_id");
   my ($description, $contenttype, $filename, $bugid, $ispatch, $isobsolete, $isprivate, $datasize) = FetchSQLData();
 
   my $isviewable = isViewable($contenttype);
@@ -1117,7 +1147,7 @@ sub edit
     require PatchReader;
     $vars->{'patchviewerinstalled'} = 1;
   };
-  print Bugzilla->cgi->header();
+  print $cgi->header();
 
   # Generate and return the UI (HTML page) from the appropriate template.
   $template->process("attachment/edit.html.tmpl", $vars)
@@ -1149,7 +1179,7 @@ sub update
     # and FlagType::validate assume User::match_field has ensured that the
     # values in the requestee fields are legitimate user email addresses.
     Bugzilla::User::match_field($cgi, {
-        '^requestee(_type)?-(\d+)$' => { 'type' => 'single' }
+        '^requestee(_type)?-(\d+)$' => { 'type' => 'multi' }
     });
     Bugzilla::Flag::validate($cgi, $bugid, $attach_id);
     Bugzilla::FlagType::validate($cgi, $bugid, $attach_id);
@@ -1161,12 +1191,10 @@ sub update
           # cc, bug_group_map, user_group_map, and groups are in here so we
           # can check the permissions of flag requestees and email addresses
           # on the flag type cc: lists via the CanSeeBug
-          # function call in Flag::notify. group_group_map is in here in case
-          # Bugzilla::User needs to rederive groups. profiles and 
-          # user_group_map would be READ locks instead of WRITE locks if it
-          # weren't for derive_groups, which needs to write to those tables.
-          'bugs WRITE', 'profiles WRITE', 'email_setting READ',
-          'cc READ', 'bug_group_map READ', 'user_group_map WRITE',
+          # function call in Flag::notify. group_group_map is in here si
+          # Bugzilla::User can flatten groups.
+          'bugs WRITE', 'profiles READ', 'email_setting READ',
+          'cc READ', 'bug_group_map READ', 'user_group_map READ',
           'group_group_map READ', 'groups READ');
 
   # Get a copy of the attachment record before we make changes
@@ -1189,8 +1217,7 @@ sub update
   # to attachments so that we can delete pending requests if the user
   # is obsoleting this attachment without deleting any requests
   # the user submits at the same time.
-  my $target = Bugzilla::Flag::GetTarget(undef, $attach_id);
-  Bugzilla::Flag::process($target, $timestamp, $cgi);
+  Bugzilla::Flag::process($bugid, $attach_id, $timestamp, $cgi);
 
   # Update the attachment record in the database.
   SendSQL("UPDATE  attachments 
@@ -1207,7 +1234,7 @@ sub update
   my $sql_timestamp = SqlQuote($timestamp);
   if ($olddescription ne $cgi->param('description')) {
     my $quotedolddescription = SqlQuote($olddescription);
-    my $fieldid = GetFieldID('attachments.description');
+    my $fieldid = get_field_id('attachments.description');
     SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when,
                                         fieldid, removed, added)
              VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid,
@@ -1215,7 +1242,7 @@ sub update
   }
   if ($oldcontenttype ne $cgi->param('contenttype')) {
     my $quotedoldcontenttype = SqlQuote($oldcontenttype);
-    my $fieldid = GetFieldID('attachments.mimetype');
+    my $fieldid = get_field_id('attachments.mimetype');
     SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when,
                                         fieldid, removed, added)
              VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid,
@@ -1223,28 +1250,28 @@ sub update
   }
   if ($oldfilename ne $cgi->param('filename')) {
     my $quotedoldfilename = SqlQuote($oldfilename);
-    my $fieldid = GetFieldID('attachments.filename');
+    my $fieldid = get_field_id('attachments.filename');
     SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when,
                                         fieldid, removed, added)
              VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid,
                      $quotedoldfilename, $quotedfilename)");
   }
   if ($oldispatch ne $cgi->param('ispatch')) {
-    my $fieldid = GetFieldID('attachments.ispatch');
+    my $fieldid = get_field_id('attachments.ispatch');
     SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when,
                                         fieldid, removed, added)
              VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid,
                      $oldispatch, " . $cgi->param('ispatch') . ")");
   }
   if ($oldisobsolete ne $cgi->param('isobsolete')) {
-    my $fieldid = GetFieldID('attachments.isobsolete');
+    my $fieldid = get_field_id('attachments.isobsolete');
     SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when,
                                         fieldid, removed, added)
              VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid,
                      $oldisobsolete, " . $cgi->param('isobsolete') . ")");
   }
   if ($oldisprivate ne $cgi->param('isprivate')) {
-    my $fieldid = GetFieldID('attachments.isprivate');
+    my $fieldid = get_field_id('attachments.isprivate');
     SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when,
                                         fieldid, removed, added)
              VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid,
@@ -1272,7 +1299,7 @@ sub update
   $vars->{'attachid'} = $attach_id; 
   $vars->{'bugid'} = $bugid; 
 
-  print Bugzilla->cgi->header();
+  print $cgi->header();
 
   # Generate and return the UI (HTML page) from the appropriate template.
   $template->process("attachment/updated.html.tmpl", $vars)
diff --git a/buglist.cgi b/buglist.cgi
index d579d8086d4a7c4dd1855cc2ca764d68b8717179..f8f81d3e51585f22c34067977d5486020a833b89 100755
--- a/buglist.cgi
+++ b/buglist.cgi
@@ -38,11 +38,12 @@ use vars qw($template $vars);
 
 use Bugzilla;
 use Bugzilla::Search;
+use Bugzilla::Search::Quicksearch;
 use Bugzilla::Constants;
 use Bugzilla::User;
 
 # Include the Bugzilla CGI and general utility library.
-require "CGI.pl";
+require "globals.pl";
 
 use vars qw($db_name
             @components
@@ -58,12 +59,22 @@ use vars qw($db_name
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
+my $buffer = $cgi->query_string();
 
-if (length($::buffer) == 0) {
+if (length($buffer) == 0) {
     print $cgi->header(-refresh=> '10; URL=query.cgi');
     ThrowUserError("buglist_parameters_required");
 }
 
+# Determine whether this is a quicksearch query.
+my $searchstring = $cgi->param('quicksearch');
+if (defined($searchstring)) {
+    $buffer = quicksearch($searchstring);
+    # Quicksearch may do a redirect, in which case it does not return.
+    # If it does return, it has modified $cgi->params so we can use them here
+    # as if this had been a normal query from the beginning.
+}
+
 ################################################################################
 # Data and Security Validation
 ################################################################################
@@ -104,8 +115,8 @@ if ((defined $cgi->param('ctype')) && ($cgi->param('ctype') eq "js")) {
 # Determine the format in which the user would like to receive the output.
 # Uses the default format if the user did not specify an output format;
 # otherwise validates the user's choice against the list of available formats.
-my $format = GetFormat("list/list", scalar $cgi->param('format'),
-                       scalar $cgi->param('ctype'));
+my $format = $template->get_format("list/list", scalar $cgi->param('format'),
+                                   scalar $cgi->param('ctype'));
 
 # Use server push to display a "Please wait..." message for the user while
 # executing their query if their browser supports it and they are viewing
@@ -146,8 +157,8 @@ if (defined $cgi->param('regetlastlist')) {
                                 });
 }
 
-if ($::buffer =~ /&cmd-/) {
-    my $url = "query.cgi?$::buffer#chart";
+if ($buffer =~ /&cmd-/) {
+    my $url = "query.cgi?$buffer#chart";
     print $cgi->redirect(-location => $url);
     # Generate and return the UI (HTML page) from the appropriate template.
     $vars->{'message'} = "buglist_adding_field";
@@ -226,7 +237,7 @@ sub LookupNamedQuery {
 #
 # Returns: A boolean true value if the query existed in the database 
 # before, and we updated it. A boolean false value otherwise.
-sub InsertNamedQuery ($$$;$) {
+sub InsertNamedQuery {
     my ($userid, $query_name, $query, $link_in_footer) = @_;
     $link_in_footer ||= 0;
     $query_name = trim($query_name);
@@ -298,25 +309,20 @@ sub GetQuip {
     return $quip;
 }
 
-sub GetGroupsByUserId {
-    my ($userid) = @_;
+sub GetGroups {
     my $dbh = Bugzilla->dbh;
 
-    return if !$userid;
-
     # Create an array where each item is a hash. The hash contains 
     # as keys the name of the columns, which point to the value of 
     # the columns for that row.
+    my $grouplist = Bugzilla->user->groups_as_string;
     my $groups = $dbh->selectall_arrayref(
-       "SELECT DISTINCT  groups.id, name, description, isactive
+                "SELECT  id, name, description, isactive
                    FROM  groups
-             INNER JOIN  user_group_map
-                     ON  user_group_map.group_id = groups.id
-                  WHERE  user_id = ?
-                    AND  isbless = 0
+                  WHERE  id IN ($grouplist)
                     AND  isbuggroup = 1
                ORDER BY  description "
-               , {Slice => {}}, ($userid));
+               , {Slice => {}});
 
     return $groups;
 }
@@ -361,18 +367,18 @@ if ($cgi->param('cmdtype') eq "dorem" && $cgi->param('remaction') =~ /^run/) {
 # Take appropriate action based on user's request.
 if ($cgi->param('cmdtype') eq "dorem") {  
     if ($cgi->param('remaction') eq "run") {
-        $::buffer = LookupNamedQuery(scalar $cgi->param("namedcmd"));
+        $buffer = LookupNamedQuery(scalar $cgi->param("namedcmd"));
         $vars->{'searchname'} = $cgi->param('namedcmd');
         $vars->{'searchtype'} = "saved";
-        $params = new Bugzilla::CGI($::buffer);
+        $params = new Bugzilla::CGI($buffer);
         $order = $params->param('order') || $order;
 
     }
     elsif ($cgi->param('remaction') eq "runseries") {
-        $::buffer = LookupSeries(scalar $cgi->param("series_id"));
+        $buffer = LookupSeries(scalar $cgi->param("series_id"));
         $vars->{'searchname'} = $cgi->param('namedcmd');
         $vars->{'searchtype'} = "series";
-        $params = new Bugzilla::CGI($::buffer);
+        $params = new Bugzilla::CGI($buffer);
         $order = $params->param('order') || $order;
     }
     elsif ($cgi->param('remaction') eq "forget") {
@@ -423,7 +429,7 @@ if ($cgi->param('cmdtype') eq "dorem") {
 elsif (($cgi->param('cmdtype') eq "doit") && defined $cgi->param('remtype')) {
     if ($cgi->param('remtype') eq "asdefault") {
         Bugzilla->login(LOGIN_REQUIRED);
-        InsertNamedQuery(Bugzilla->user->id, DEFAULT_QUERY_NAME, $::buffer);
+        InsertNamedQuery(Bugzilla->user->id, DEFAULT_QUERY_NAME, $buffer);
         $vars->{'message'} = "buglist_new_default_query";
     }
     elsif ($cgi->param('remtype') eq "asnamed") {
@@ -460,7 +466,7 @@ elsif (($cgi->param('cmdtype') eq "doit") && defined $cgi->param('remtype')) {
 # form - see bug 252295
 if (!$params->param('query_format')) {
     $params->param('query_format', 'advanced');
-    $::buffer = $params->query_string;
+    $buffer = $params->query_string;
 }
 
 ################################################################################
@@ -954,12 +960,11 @@ $vars->{'closedstates'} = ['CLOSED', 'VERIFIED', 'RESOLVED'];
 # The list of query fields in URL query string format, used when creating
 # URLs to the same query results page with different parameters (such as
 # a different sort order or when taking some action on the set of query
-# results).  To get this string, we start with the raw URL query string
-# buffer that was created when we initially parsed the URL on script startup,
-# then we remove all non-query fields from it, f.e. the sort order (order)
-# and command type (cmdtype) fields.
-$vars->{'urlquerypart'} = $::buffer;
-$vars->{'urlquerypart'} =~ s/(order|cmdtype)=[^&]*&?//g;
+# results).  To get this string, we call the Bugzilla::CGI::canoncalise_query
+# function with a list of elements to be removed from the URL.
+$vars->{'urlquerypart'} = $params->canonicalise_query('order',
+                                                      'cmdtype',
+                                                      'query_based_on');
 $vars->{'order'} = $order;
 $vars->{'caneditbugs'} = UserInGroup('editbugs');
 
@@ -986,6 +991,7 @@ if ($dotweak) {
     my @enterable_products = GetEnterableProducts();
     $vars->{'products'} = \@enterable_products;
     $vars->{'platforms'} = \@::legal_platform;
+    $vars->{'op_sys'} = \@::legal_opsys;
     $vars->{'priorities'} = \@::legal_priority;
     $vars->{'severities'} = \@::legal_severity;
     $vars->{'resolutions'} = \@::settable_resolution;
@@ -995,7 +1001,7 @@ if ($dotweak) {
     $vars->{'bugstatuses'} = [ keys %$bugstatuses ];
 
     # The groups to which the user belongs.
-    $vars->{'groups'} = GetGroupsByUserId($::userid);
+    $vars->{'groups'} = GetGroups();
 
     # If all bugs being changed are in the same product, the user can change
     # their version and component, so generate a list of products, a list of
diff --git a/bugzilla.dtd b/bugzilla.dtd
index 9b4ed4f67cee2548a8d055c15625523926b4961f..a8453304c25b554051ba538af9338a5383e1968d 100644
--- a/bugzilla.dtd
+++ b/bugzilla.dtd
@@ -5,7 +5,7 @@
 	maintainer CDATA #REQUIRED
 	exporter CDATA #IMPLIED
 >
-<!ELEMENT bug (bug_id, (alias?, creation_ts, short_desc, delta_ts, reporter_accessible, cclist_accessible, classification_id, classification, product, component, version, rep_platform, op_sys, bug_status, resolution?, bug_file_loc?, status_whiteboard?, keywords*, priority, bug_severity, target_milestone?, dependson*, blocked*, votes?, reporter, assigned_to, qa_contact?, cc*, (estimated_time, remaining_time, actual_time)?, group*, long_desc*, attachment*)?)>
+<!ELEMENT bug (bug_id, (alias?, creation_ts, short_desc, delta_ts, reporter_accessible, cclist_accessible, classification_id, classification, product, component, version, rep_platform, op_sys, bug_status, resolution?, bug_file_loc?, status_whiteboard?, keywords*, priority, bug_severity, target_milestone?, dependson*, blocked*, votes?, reporter, assigned_to, qa_contact?, cc*, (estimated_time, remaining_time, actual_time, deadline)?, group*, flag*, long_desc*, attachment*)?)>
 <!ATTLIST bug
 	error (NotFound | NotPermitted | InvalidBugId) #IMPLIED
 >
@@ -44,20 +44,30 @@
 <!ELEMENT estimated_time (#PCDATA)>
 <!ELEMENT remaining_time (#PCDATA)>
 <!ELEMENT actual_time (#PCDATA)>
+<!ELEMENT deadline (#PCDATA)>
 <!ELEMENT long_desc (who, bug_when, thetext)>
+<!ATTLIST long_desc
+          encoding (base64) #IMPLIED
+          isprivate (0|1) #IMPLIED
+ >
 <!ELEMENT who (#PCDATA)>
 <!ELEMENT bug_when (#PCDATA)>
 <!ELEMENT thetext (#PCDATA)>
-<!ELEMENT attachment (attachid, date, desc, type?, data?, flag*)>
+<!ELEMENT attachment (attachid, date, desc, filename?, type?, data?, flag*)>
 <!ATTLIST attachment
           isobsolete (0|1) #IMPLIED
           ispatch (0|1) #IMPLIED
+          isprivate (0|1) #IMPLIED
 >
 <!ELEMENT attachid (#PCDATA)>
 <!ELEMENT date (#PCDATA)>
 <!ELEMENT desc (#PCDATA)>
+<!ELEMENT filename (#PCDATA)>
 <!ELEMENT type (#PCDATA)>
 <!ELEMENT data (#PCDATA)>
+<!ATTLIST data
+          encoding (base64) #IMPLIED
+>
 <!ELEMENT flag EMPTY>
 <!ATTLIST flag
           name CDATA #REQUIRED
diff --git a/chart.cgi b/chart.cgi
index bc25d52e919c0738a2b183f4696961939e3a1a3f..2b8d39b564ccb5f4e96fd7c05fe2013525f1b9c9 100755
--- a/chart.cgi
+++ b/chart.cgi
@@ -44,13 +44,17 @@
 use strict;
 use lib qw(.);
 
-require "CGI.pl";
+require "globals.pl";
+use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::Chart;
 use Bugzilla::Series;
 use Bugzilla::User;
 
-use vars qw($cgi $template $vars);
+use vars qw($vars);
+
+my $cgi = Bugzilla->cgi;
+my $template = Bugzilla->template;
 
 # Go back to query.cgi if we are adding a boolean chart parameter.
 if (grep(/^cmd-/, $cgi->param())) {
@@ -60,7 +64,6 @@ if (grep(/^cmd-/, $cgi->param())) {
     exit;
 }
 
-my $template = Bugzilla->template;
 my $action = $cgi->param('action');
 my $series_id = $cgi->param('series_id');
 
@@ -262,9 +265,7 @@ sub plot {
     validateWidthAndHeight();
     $vars->{'chart'} = new Bugzilla::Chart($cgi);
 
-    my $format = &::GetFormat("reports/chart",
-                              "",
-                              $cgi->param('ctype'));
+    my $format = $template->get_format("reports/chart", "", scalar($cgi->param('ctype')));
 
     # Debugging PNGs is a pain; we need to be able to see the error messages
     if ($cgi->param('debug')) {
diff --git a/checksetup.pl b/checksetup.pl
index e9cf38d41dc37c7f9f26bfbd19e02bff2629dfd8..3f4a68b782759a00a6741baf84e9ef3a977a5c24 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -31,6 +31,8 @@
 #                 Erik Stambaugh <erik@dasbistro.com>
 #                 Dave Lawrence <dkl@redhat.com>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Joel Peshkin <bugreport@peshkin.net>
+#                 Lance Larsh <lance.larsh@oracle.com>
 #
 #
 #
@@ -317,7 +319,15 @@ my $modules = [
     }, 
     { 
         name => 'Mail::Mailer', 
-        version => '1.65'
+        version => '1.67'
+    },
+    {
+        name => 'MIME::Base64',
+        version => $^O =~ /MSWin32/i ? '3.01' : '3.03'
+    },
+    {
+        name => 'MIME::Parser',
+        version => '5.406'
     },
     {
         name => 'Storable',
@@ -339,6 +349,8 @@ my %ppm_modules = (
     'GD::Graph'         => 'GDGraph',
     'GD::Text::Align'   => 'GDTextUtil',
     'Mail::Mailer'      => 'MailTools',
+    'Mail::Base64'      => 'MIME-Base64',
+    'MIME::Parser'      => 'MIME-Tools',
 );
 
 sub install_command {
@@ -368,6 +380,7 @@ my $xmlparser   = have_vers("XML::Parser",0);
 my $gdgraph     = have_vers("GD::Graph",0);
 my $gdtextalign = have_vers("GD::Text::Align",0);
 my $patchreader = have_vers("PatchReader","0.9.4");
+my $imagemagick = have_vers("Image::Magick",0);
 
 print "\n" unless $silent;
 
@@ -392,6 +405,14 @@ if (!$xmlparser && !$silent) {
           "the XML::Parser module by running (as $::root):\n\n",
     "   " . install_command("XML::Parser") . "\n\n";
 }
+if (!$imagemagick && !$silent) {
+    print "If you want to convert BMP image attachments to PNG to conserve\n",
+          "disk space, you will need to install the ImageMagick application\n ",
+          "Available from http://www.imagemagick.org, and the Image::Magick",
+          "Perl module by running (as $::root):\n\n",
+    "   " . install_command("Image::Magick") . "\n\n";
+
+}
 if ((!$gd || !$gdgraph || !$gdtextalign) && !$silent) {
     print "If you you want to see graphical bug reports (bar, pie and line ";
     print "charts of \ncurrent data), you should install libgd and the ";
@@ -500,14 +521,14 @@ EOT
     die "Syntax error in localconfig";
 }
 
-sub LocalVarExists ($)
+sub LocalVarExists
 {
     my ($name) = @_;
     return $main::{$name}; # if localconfig declared it, we're done.
 }
 
 my $newstuff = "";
-sub LocalVar ($$)
+sub LocalVar
 {
     my ($name, $definition) = @_;
     return if LocalVarExists($name); # if localconfig declared it, we're done.
@@ -995,9 +1016,6 @@ if ($my_create_htaccess) {
 <FilesMatch ^(.*\.pl|.*localconfig.*)$>
   deny from all
 </FilesMatch>
-<FilesMatch ^(localconfig.js|localconfig.rdf)$>
-  allow from all
-</FilesMatch>
 END
     close HTACCESS;
     chmod $fileperm, ".htaccess";
@@ -1013,11 +1031,6 @@ END
       print "Repairing .htaccess...\n";
       open HTACCESS, '>', '.htaccess';
       print HTACCESS $oldaccess;
-      print HTACCESS <<'END';
-<FilesMatch ^(localconfig.js|localconfig.rdf)$>
-  allow from all
-</FilesMatch>
-END
       close HTACCESS;
     }
 
@@ -1133,6 +1146,10 @@ END
 # Just to be sure ...
 unlink "$datadir/versioncache";
 
+# Check for a new install
+
+my $newinstall = !-e "$datadir/params";
+
 # Remove parameters from the params file that no longer exist in Bugzilla,
 # and set the defaults for new ones
 
@@ -1179,6 +1196,11 @@ if ($^O =~ /MSWin32/i
     SetParam('smtpserver', $smtp);
 }
 
+# Enable UTF-8 on new installs
+if ($newinstall) {
+    SetParam('utf8', 1);
+}
+
 # WriteParams will only write out still-valid entries
 WriteParams();
 
@@ -1498,12 +1520,6 @@ if ($my_db_check) {
             "   Bugzilla requires version $sql_want or later of $sql_server.\n" . 
             "   Please download and install a newer version.\n";
     }
-    # This message is specific to MySQL.
-    if ($dbh->isa('Bugzilla::DB::Mysql') && ($sql_vers =~ /^4\.0\.(\d+)/) && ($1 < 2)) {
-        die "\nYour MySQL server is incompatible with Bugzilla.\n" .
-            "   Bugzilla does not support versions 4.x.x below 4.0.2.\n" .
-            "   Please visit http://www.mysql.com/ and download a newer version.\n";
-    }
 
     # See if we can connect to the database.
     my $conn_success = eval { 
@@ -1596,7 +1612,7 @@ $dbh->bz_setup_database();
 # Populate groups table
 ###########################################################################
 
-sub GroupDoesExist ($)
+sub GroupDoesExist
 {
     my ($name) = @_;
     my $sth = $dbh->prepare("SELECT name FROM groups WHERE name='$name'");
@@ -1637,7 +1653,7 @@ sub AddGroup {
 
 my $headernum = 1;
 
-sub AddFDef ($$$) {
+sub AddFDef {
     my ($name, $description, $mailhead) = (@_);
 
     my $sth = $dbh->prepare("SELECT fieldid FROM fielddefs " .
@@ -1660,7 +1676,7 @@ sub AddFDef ($$$) {
 }
 
 
-# Note that all of these entries are unconditional, from when GetFieldID
+# Note that all of these entries are unconditional, from when get_field_id
 # used to create an entry if it wasn't found. New fielddef columns should
 # be created with their associated schema change.
 AddFDef("bug_id", "Bug \#", 1);
@@ -1686,7 +1702,6 @@ AddFDef("cc", "CC", 1);
 AddFDef("dependson", "BugsThisDependsOn", 1);
 AddFDef("blocked", "OtherBugsDependingOnThis", 1);
 AddFDef("attachments.description", "Attachment description", 0);
-AddFDef("attachments.thedata", "Attachment data", 0);
 AddFDef("attachments.filename", "Attachment filename", 0);
 AddFDef("attachments.mimetype", "Attachment mime type", 0);
 AddFDef("attachments.ispatch", "Attachment is patch", 0);
@@ -1694,6 +1709,7 @@ AddFDef("attachments.isobsolete", "Attachment is obsolete", 0);
 AddFDef("attachments.isprivate", "Attachment is private", 0);
 
 AddFDef("target_milestone", "Target Milestone", 0);
+AddFDef("creation_ts", "Creation date", 0);
 AddFDef("delta_ts", "Last changed date", 0);
 AddFDef("(" . $dbh->sql_to_days('NOW()') . " - " .
               $dbh->sql_to_days('bugs.delta_ts') . ")",
@@ -1723,6 +1739,9 @@ AddFDef("percentage_complete", "Percentage Complete", 0);
 
 AddFDef("content", "Content", 0);
 
+$dbh->do("DELETE FROM fielddefs WHERE name='attachments.thedata'");
+AddFDef("attach_data.thedata", "Attachment data", 0);
+
 ###########################################################################
 # Detect changed local settings
 ###########################################################################
@@ -1730,7 +1749,7 @@ AddFDef("content", "Content", 0);
 # mkanat@bugzilla.org - bug 17453
 # Create the values for the tables that hold what used to be enum types.
 # Don't populate the tables if the table isn't empty.
-sub PopulateEnumTable ($@) {
+sub PopulateEnumTable {
     my ($table, @valuelist) = @_;
 
     # If we encounter any of the keys in this hash, they are 
@@ -2427,8 +2446,8 @@ if (!($sth->fetchrow_arrayref()->[0])) {
         "SELECT longdescs.bug_id, thetext " .
           "FROM longdescs " .
      "LEFT JOIN bugs using(bug_id) " .
-         "WHERE (thetext " . $dbh->sql_regexp .
-                 " '[.*.]{3} This bug has been marked as a duplicate of [[:digit:]]+ [.*.]{3}') " .
+         "WHERE (" . $dbh->sql_regexp("thetext",
+                 "'[.*.]{3} This bug has been marked as a duplicate of [[:digit:]]+ [.*.]{3}'") . ") " .
            "AND (resolution = 'DUPLICATE') " .
       "ORDER BY longdescs.bug_when");
     $sth->execute();
@@ -3533,11 +3552,8 @@ AddFDef("owner_idle_time", "Time Since Assignee Touched", 0);
 if ($dbh->bz_column_info("user_group_map", "isderived")) {
     $dbh->bz_add_column('user_group_map', 'grant_type', 
         {TYPE => 'INT1', NOTNULL => 1, DEFAULT => '0'});
-    $dbh->do("UPDATE user_group_map SET grant_type = " .
-                             "IF(isderived, " . GRANT_DERIVED . ", " .
-                             GRANT_DIRECT . ")");
-    $dbh->do("DELETE FROM user_group_map 
-              WHERE isbless = 0 AND grant_type != " . GRANT_DIRECT);
+    $dbh->do("DELETE FROM user_group_map WHERE isderived != 0");
+    $dbh->do("UPDATE user_group_map SET grant_type = " . GRANT_DIRECT);
     $dbh->bz_drop_column("user_group_map", "isderived");
 
     $dbh->bz_drop_index('user_group_map', 'user_group_map_user_id_idx');
@@ -3545,21 +3561,6 @@ if ($dbh->bz_column_info("user_group_map", "isderived")) {
         {TYPE => 'UNIQUE', 
          FIELDS => [qw(user_id group_id grant_type isbless)]});
 
-    # Evaluate regexp-based group memberships
-    my $sth = $dbh->prepare("SELECT profiles.userid, profiles.login_name,
-                             groups.id, groups.userregexp 
-                             FROM profiles, groups
-                             WHERE userregexp != ''");
-    $sth->execute();
-    my $sth2 = $dbh->prepare("INSERT IGNORE INTO user_group_map 
-                           (user_id, group_id, isbless, grant_type) 
-                           VALUES(?, ?, 0, " . GRANT_REGEXP . ")");
-    while (my ($uid, $login, $gid, $rexp) = $sth->fetchrow_array()) {
-        if ($login =~ m/$rexp/i) {
-            $sth2->execute($uid, $gid);
-        }
-    }
-
     # Make sure groups get rederived
     $dbh->do("UPDATE groups SET last_changed = NOW() WHERE name = 'admin'");
 }
@@ -3916,8 +3917,12 @@ if ( $dbh->isa('Bugzilla::DB::Mysql') ) {
     if ( $approved_col->{TYPE_NAME} eq 'TINYINT'
          and $approved_col->{COLUMN_SIZE} == 1 )
     {
-        $dbh->bz_alter_column_raw('series', 'public',
-            {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '0'});
+        # series.public could have been renamed to series.is_public,
+        # and so wouldn't need to be fixed manually.
+        if ($dbh->bz_column_info('series', 'public')) {
+            $dbh->bz_alter_column_raw('series', 'public',
+                {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '0'});
+        }
         $dbh->bz_alter_column_raw('bug_status', 'isactive',
             {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '1'});
         $dbh->bz_alter_column_raw('rep_platform', 'isactive',
@@ -3999,6 +4004,34 @@ if (!exists $dbh->bz_column_info('whine_queries', 'title')->{DEFAULT}) {
                           NOTNULL => 1, DEFAULT => "''"});
 }
 
+# 2005-06-29 bugreport@peshkin.net, bug 299156
+if ($dbh->bz_index_info('attachments', 'attachments_submitter_id_idx')
+   && (scalar(@{$dbh->bz_index_info('attachments',
+                                    'attachments_submitter_id_idx'
+                                   )->{FIELDS}}) < 2)
+      ) {
+    $dbh->bz_drop_index('attachments', 'attachments_submitter_id_idx');
+}
+$dbh->bz_add_index('attachments', 'attachments_submitter_id_idx',
+                   [qw(submitter_id bug_id)]);
+
+# 2005-08-25 - bugreport@peshkin.net - Bug 305333
+if ($dbh->bz_column_info("attachments", "thedata")) {
+    print "Migrating attachment data to its own table...\n";
+    print "(This may take a very long time)\n";
+    $dbh->do("INSERT INTO attach_data (id, thedata) 
+                   SELECT attach_id, thedata FROM attachments");
+    $dbh->bz_drop_column("attachments", "thedata");    
+}
+
+# 2005-09-15 lance.larsh@oracle.com Bug 308717
+if ($dbh->bz_column_info("series", "public")) {
+    # PUBLIC is a reserved word in Oracle, so renaming the column
+    # PUBLIC in table SERIES avoids having to quote the column name
+    # in every query against that table
+    $dbh->bz_rename_column('series', 'public', 'is_public');
+}
+
 
 # If you had to change the --TABLE-- definition in any way, then add your
 # differential change code *** A B O V E *** this comment.
@@ -4022,17 +4055,6 @@ AddGroup('editcomponents', 'Can create, destroy, and edit components.');
 AddGroup('editkeywords', 'Can create, destroy, and edit keywords.');
 AddGroup('admin', 'Administrators');
 
-# 2005-06-29 bugreport@peshkin.net, bug 299156
-if ($dbh->bz_index_info('attachments', 'attachments_submitter_id_idx') 
-   && (scalar(@{$dbh->bz_index_info('attachments', 
-                                    'attachments_submitter_id_idx'
-                                   )->{FIELDS}}) < 2)
-      ) {
-    $dbh->bz_drop_index('attachments', 'attachments_submitter_id_idx');
-}
-$dbh->bz_add_index('attachments', 'attachments_submitter_id_idx',
-                   [qw(submitter_id bug_id)]);
-
 if (!GroupDoesExist("editbugs")) {
     my $id = AddGroup('editbugs', 'Can edit all bug fields.', ".*");
     my $sth = $dbh->prepare("SELECT userid FROM profiles");
@@ -4073,6 +4095,42 @@ if (!GroupDoesExist('bz_canusewhines')) {
              GROUP_MEMBERSHIP . ")") unless $group_exists;
 }
 
+# 2005-08-14 bugreport@peshkin.net -- Bug 304583
+use constant GRANT_DERIVED => 1;
+# Get rid of leftover DERIVED group permissions
+$dbh->do("DELETE FROM user_group_map WHERE grant_type = " . GRANT_DERIVED);
+# Evaluate regexp-based group memberships
+$sth = $dbh->prepare("SELECT profiles.userid, profiles.login_name,
+                         groups.id, groups.userregexp,
+                         user_group_map.group_id
+                         FROM profiles
+                         CROSS JOIN groups
+                         LEFT JOIN user_group_map
+                         ON user_group_map.user_id = profiles.userid
+                         AND user_group_map.group_id = groups.id
+                         AND user_group_map.grant_type = ?
+                         WHERE (userregexp != ''
+                         OR user_group_map.group_id IS NOT NULL)");
+
+my $sth_add = $dbh->prepare("INSERT INTO user_group_map 
+                       (user_id, group_id, isbless, grant_type) 
+                       VALUES(?, ?, 0, " . GRANT_REGEXP . ")");
+
+my $sth_del = $dbh->prepare("DELETE FROM user_group_map 
+                       WHERE user_id  = ? 
+                       AND group_id = ? 
+                       AND isbless = 0
+                       AND grant_type = " . GRANT_REGEXP);
+
+$sth->execute(GRANT_REGEXP);
+while (my ($uid, $login, $gid, $rexp, $present) = $sth->fetchrow_array()) {
+    if ($login =~ m/$rexp/i) {
+        $sth_add->execute($uid, $gid) unless $present;
+    } else {
+        $sth_del->execute($uid, $gid) if $present;
+    }
+}
+
 ###########################################################################
 # Create --SETTINGS-- users can adjust
 ###########################################################################
@@ -4086,6 +4144,13 @@ add_setting ("comment_sort_order", {"oldest_to_newest" => 1,
                                     "newest_to_oldest_desc_first" => 3}, 
              "oldest_to_newest" );
 
+# 2005-05-12 bugzilla@glob.com.au -- Bug 63536
+add_setting ("post_bug_submit_action", {"next_bug" => 1,
+                                        "same_bug" => 2,
+                                        "nothing" => 3,
+                                       },
+             "next_bug" );
+
 # 2005-06-29 wurblzap@gmail.com -- Bug 257767
 add_setting ('csv_colsepchar', {',' => 1, ';' => 2 }, ',' );
 
@@ -4093,7 +4158,6 @@ add_setting ('csv_colsepchar', {',' => 1, ';' => 2 }, ',' );
 # Create Administrator  --ADMIN--
 ###########################################################################
 
-
 sub bailout {   # this is just in case we get interrupted while getting passwd
     if ($^O !~ /MSWin32/i) {
         system("stty","echo"); # re-enable input echoing
@@ -4235,6 +4299,9 @@ if ($sth->rows == 0) {
 
     if ($admin_create) {
 
+        require Bugzilla::Util;
+        import Bugzilla::Util 'is_7bit_clean';
+
         while( $realname eq "" ) {
             print "Enter the real name of the administrator: ";
             $realname = $answer{'ADMIN_REALNAME'} 
@@ -4244,6 +4311,13 @@ if ($sth->rows == 0) {
             if(! $realname ) {
                 print "\nReally.  We need a full name.\n";
             }
+            if(! is_7bit_clean($realname)) {
+                print "\nSorry, but at this stage the real name can only " . 
+                      "contain standard English\ncharacters.  Once Bugzilla " .
+                      "has been installed, you can use the 'Prefs' page\nto " .
+                      "update the real name.\n";
+                $realname = '';
+            }
         }
 
         # trap a few interrupts so we can fix the echo if we get aborted.
diff --git a/colchange.cgi b/colchange.cgi
index 30103406fd33553af04b8ecfbf3759379bdddbc3..e99b81b70773248b2357feaf4dc46bfb4a69def8 100755
--- a/colchange.cgi
+++ b/colchange.cgi
@@ -27,7 +27,6 @@ use lib qw(.);
 
 use vars qw(
   @legal_keywords
-  $buffer
   $template
   $vars
 );
@@ -35,7 +34,7 @@ use vars qw(
 use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::User;
-require "CGI.pl";
+require "globals.pl";
 
 Bugzilla->login();
 
@@ -150,7 +149,7 @@ if (defined $cgi->cookie('COLUMNLIST')) {
 $vars->{'collist'} = \@collist;
 $vars->{'splitheader'} = $cgi->cookie('SPLITHEADER') ? 1 : 0;
 
-$vars->{'buffer'} = $::buffer;
+$vars->{'buffer'} = $cgi->query_string();
 
 # Generate and return the UI (HTML page) from the appropriate template.
 print $cgi->header();
diff --git a/config.cgi b/config.cgi
index f1bc5f0f1cfd157690e21027704189910fa6b9b9..860115c81d8fe521d3594c8ab04f021bb623dfe7 100755
--- a/config.cgi
+++ b/config.cgi
@@ -30,7 +30,7 @@ use strict;
 
 # Include the Bugzilla CGI and general utility library.
 use lib qw(.);
-require "CGI.pl";
+require "globals.pl";
 use Bugzilla;
 use Bugzilla::Constants;
 
@@ -51,13 +51,13 @@ use vars
 
 # Use the global template variables defined in globals.pl 
 # to generate the output.
-use vars qw($template $vars);
+use vars qw($vars);
 
-Bugzilla->login(LOGIN_OPTIONAL);
+my $user = Bugzilla->login(LOGIN_OPTIONAL);
 
 # If the 'requirelogin' parameter is on and the user is not
 # authenticated, return empty fields.
-if (Param('requirelogin') && !Bugzilla->user->id) {
+if (Param('requirelogin') && !$user->id) {
     display_data();
 }
 
@@ -73,11 +73,8 @@ $vars->{'keyword'}    = \@::legal_keywords;
 $vars->{'resolution'} = \@::legal_resolution;
 $vars->{'status'}    = \@::legal_bug_status;
 
-# Include lists of products, components, versions, and target milestones.
-my $selectables = GetSelectableProductHash();
-foreach my $selectable (keys %$selectables) {
-    $vars->{$selectable} = $selectables->{$selectable};
-}
+# Include a list of product objects.
+$vars->{'products'} = $user->get_selectable_products;
 
 # Create separate lists of open versus resolved statuses.  This should really
 # be made part of the configuration.
@@ -100,10 +97,12 @@ sub display_data {
     my $vars = shift;
 
     my $cgi = Bugzilla->cgi;
+    my $template = Bugzilla->template;
+
     # Determine how the user would like to receive the output; 
     # default is JavaScript.
-    my $format = GetFormat("config", scalar($cgi->param('format')),
-                           scalar($cgi->param('ctype')) || "js");
+    my $format = $template->get_format("config", scalar($cgi->param('format')),
+                                       scalar($cgi->param('ctype')) || "js");
 
     # Return HTTP headers.
     print "Content-Type: $format->{'ctype'}\n\n";
diff --git a/contrib/BugzillaEmail.pm b/contrib/BugzillaEmail.pm
index 473169c9e59403ac249145b0cf3a9c7b7094c9af..db31d1f242ac59f6b38ef796981975ec80055bf1 100644
--- a/contrib/BugzillaEmail.pm
+++ b/contrib/BugzillaEmail.pm
@@ -16,6 +16,7 @@
 #                 Gregor Fischer <fischer@suse.de>
 #                 Klaas Freitag  <freitag@suse.de>
 #                 Seth Landsman  <seth@dworkin.net>
+#                 Lance Larsh <lance.larsh@oracle.com>
 
 # The purpose of this module is to abstract out a bunch of the code
 #  that is central to email interfaces to bugzilla and its database
@@ -54,8 +55,8 @@ sub findUser($) {
     return $found_address;
   } elsif ($email_transform eq $EMAIL_TRANSFORM_BASE_DOMAIN) {
     my ($username) = ($address =~ /(.+)@/);
-    my $stmt = "SELECT login_name FROM profiles WHERE " . $dbh->sql_istrcmp(
-               'login_name', $dbh->quote($username), $dbh->sql_regexp());
+    my $stmt = "SELECT login_name FROM profiles WHERE " . $dbh->sql_regexp(
+               $dbh->sql_istring('login_name'), $dbh->sql_istring($dbh->quote($username)));
     SendSQL($stmt);
 
     my $domain;
@@ -72,8 +73,8 @@ sub findUser($) {
     return $new_address;
   } elsif ($email_transform eq $EMAIL_TRANSFORM_NAME_ONLY) {
     my ($username) = ($address =~ /(.+)@/);
-    my $stmt = "SELECT login_name FROM profiles WHERE " .$dbh->sql_istrcmp(
-                'login_name', $dbh->quote($username), $dbh->sql_regexp());
+    my $stmt = "SELECT login_name FROM profiles WHERE " .$dbh->sql_regexp(
+                $dbh->sql_istring('login_name'), $dbh->sql_istring($dbh->quote($username)));
     SendSQL($stmt);
     my $found_address = FetchOneColumn();
     return $found_address;
diff --git a/contrib/CVS/Entries b/contrib/CVS/Entries
index 7f75d18d87dd5715680f53db834041b4453ac293..424ffdc6c5656806ad338ff1f08310e9d659ce3f 100644
--- a/contrib/CVS/Entries
+++ b/contrib/CVS/Entries
@@ -1,19 +1,20 @@
-/BugzillaEmail.pm/1.3/Fri Jul  8 02:31:43 2005//TBUGZILLA-2_20
-/README/1.10/Mon Jul  5 21:54:00 2004//TBUGZILLA-2_20
-/README.Mailif/1.3/Wed Mar 15 23:39:03 2000//TBUGZILLA-2_20
-/bug_email.pl/1.28/Fri Jul  8 02:31:43 2005//TBUGZILLA-2_20
-/bugmail_help.html/1.2/Mon Jun 20 19:16:27 2005//TBUGZILLA-2_20
-/bugzilla.procmailrc/1.1/Wed Mar 15 23:39:09 2000//TBUGZILLA-2_20
-/bugzilla_email_append.pl/1.9/Fri Jul  8 02:31:43 2005//TBUGZILLA-2_20
-/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-2_20
-/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-2_20
-/gnats2bz.pl/1.6/Thu Jan 31 14:29:21 2002//TBUGZILLA-2_20
-/jb2bz.py/1.4/Tue Feb  8 16:51:03 2005//TBUGZILLA-2_20
-/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-2_20
-/sendbugmail.pl/1.3/Thu Feb 24 23:42:48 2005//TBUGZILLA-2_20
-/sendunsentbugmail.pl/1.5/Tue Mar 29 21:43:00 2005//TBUGZILLA-2_20
-/syncLDAP.pl/1.3/Fri Jul  8 02:31:43 2005//TBUGZILLA-2_20
-/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-2_20
+/BugzillaEmail.pm/1.4/Wed Aug 31 08:00:25 2005//TBUGZILLA-2_21_1
+/README/1.10/Mon Jul  5 21:54:00 2004//TBUGZILLA-2_21_1
+/README.Mailif/1.3/Wed Mar 15 23:39:03 2000//TBUGZILLA-2_21_1
+/bug_email.pl/1.29/Fri Aug 26 23:11:32 2005//TBUGZILLA-2_21_1
+/bugmail_help.html/1.2/Mon Jun 20 19:16:27 2005//TBUGZILLA-2_21_1
+/bugzilla.procmailrc/1.1/Wed Mar 15 23:39:09 2000//TBUGZILLA-2_21_1
+/bugzilla_email_append.pl/1.9/Fri Jul  8 02:31:43 2005//TBUGZILLA-2_21_1
+/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-2_21_1
+/bzdbcopy.pl/1.1/Tue Jul 12 07:56:16 2005//TBUGZILLA-2_21_1
+/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-2_21_1
+/gnats2bz.pl/1.6/Thu Jan 31 14:29:21 2002//TBUGZILLA-2_21_1
+/jb2bz.py/1.5/Fri Aug 26 23:11:32 2005//TBUGZILLA-2_21_1
+/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-2_21_1
+/sendbugmail.pl/1.3/Thu Feb 24 23:42:48 2005//TBUGZILLA-2_21_1
+/sendunsentbugmail.pl/1.6/Wed Aug 10 01:30:40 2005//TBUGZILLA-2_21_1
+/syncLDAP.pl/1.4/Wed Aug 10 01:30:40 2005//TBUGZILLA-2_21_1
+/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-2_21_1
 D/bugzilla-submit////
 D/cmdline////
 D/gnatsparse////
diff --git a/contrib/CVS/Tag b/contrib/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/contrib/CVS/Tag
+++ b/contrib/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/contrib/bug_email.pl b/contrib/bug_email.pl
index 1590387e65da8a7b7b9e2c7bf7734483b1970442..98b8d157e2340d12d8f9fa7d9037d8fde917a26c 100755
--- a/contrib/bug_email.pl
+++ b/contrib/bug_email.pl
@@ -38,7 +38,7 @@
 #
 # You need to work with bug_email.pl the MIME::Parser installed.
 # 
-# $Id: bug_email.pl,v 1.28 2005/07/08 02:31:43 mkanat%kerio.com Exp $
+# $Id: bug_email.pl,v 1.29 2005/08/26 23:11:32 bugreport%peshkin.net Exp $
 ###############################################################
 
 # 02/12/2000 (SML)
@@ -164,14 +164,16 @@ sub storeAttachments( $$ )
 
 
         # Make SQL-String
-        my $sql = "insert into attachments (bug_id, creation_ts, description, mimetype, ispatch, filename, thedata, submitter_id) values (";
+        my $sql = "insert into attachments (bug_id, creation_ts, description, mimetype, ispatch, filename, submitter_id) values (";
         $sql .= "$bugid, now(), " . SqlQuote( $description ) . ", ";
         $sql .= SqlQuote( $mime ) . ", ";
         $sql .= "0, ";
         $sql .= SqlQuote( $decoded_file ) . ", ";
-        $sql .= SqlQuote( $data ) . ", ";
         $sql .= "$submitter_id );";
         SendSQL( $sql ) unless( $test );
+        $sql = "insert into attach_data (id, thedata) values (LAST_INSERT_ID(), ";
+        $sql .= SqlQuote( $data ) . ")";
+        SendSQL( $sql ) unless( $test );
     }
     
     return( $att_count );
diff --git a/contrib/bugzilla-submit/CVS/Entries b/contrib/bugzilla-submit/CVS/Entries
index 32cde16010718a3268cafac2fe440330aedf85c4..2c6aaa2b7879a96634b638bde0b37ec48c6f95cb 100644
--- a/contrib/bugzilla-submit/CVS/Entries
+++ b/contrib/bugzilla-submit/CVS/Entries
@@ -1,5 +1,5 @@
-/README/1.2/Wed Dec 10 23:36:21 2003//TBUGZILLA-2_20
-/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-2_20
-/bugzilla-submit/1.6/Fri Jul 16 03:56:35 2004//TBUGZILLA-2_20
-/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-2_20
+/README/1.2/Wed Dec 10 23:36:21 2003//TBUGZILLA-2_21_1
+/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-2_21_1
+/bugzilla-submit/1.6/Fri Jul 16 03:56:35 2004//TBUGZILLA-2_21_1
+/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-2_21_1
 D
diff --git a/contrib/bugzilla-submit/CVS/Tag b/contrib/bugzilla-submit/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/contrib/bugzilla-submit/CVS/Tag
+++ b/contrib/bugzilla-submit/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/contrib/bzdbcopy.pl b/contrib/bzdbcopy.pl
new file mode 100755
index 0000000000000000000000000000000000000000..20fca2cfa051c8781080ca5fb604115fdab2232b
--- /dev/null
+++ b/contrib/bzdbcopy.pl
@@ -0,0 +1,188 @@
+#!/usr/bin/perl -w
+#
+# bzdbcopy.pl - Copies data from one Bugzilla database to another. 
+#
+# Author: Max Kanat-Alexander <mkanat@bugzilla.org>
+#
+# The intended use of this script is to copy data from an installation
+# running on one DB platform to an installation running on another
+# DB platform.
+#
+# It must be run from the directory containing your Bugzilla installation.
+# That means if this script is in the contrib/ directory, you should
+# be running it as: ./contrib/bzdbcopy.pl
+#
+# Note: Both schemas must already exist and be IDENTICAL. (That is, 
+# they must have both been created/updated by the same version of 
+# checksetup.pl.) This script will DESTROY ALL CURRENT DATA in the 
+# target database.
+#
+# Both Schemas must be at least from Bugzilla 2.19.3, but if you're
+# running a Bugzilla from before 2.20rc2, you'll need the patch at:
+# https://bugzilla.mozilla.org/show_bug.cgi?id=300311 in order to
+# be able to run this script.
+#
+# Before you using it, you have to correctly set all the variables
+# in the "User-Configurable Settings" section, below. The "SOURCE"
+# settings are for the database you're copying from, and the "TARGET"
+# settings are for the database you're copying to. The DB_TYPE is
+# the name of a DB driver from the Bugzilla/DB/ directory.
+#
+
+use strict;
+use lib ".";
+use Bugzilla::DB;
+use Bugzilla::Util;
+
+#####################################################################
+# User-Configurable Settings
+#####################################################################
+
+# Settings for the 'Source' DB that you are copying from.
+use constant SOURCE_DB_TYPE => 'Mysql';
+use constant SOURCE_DB_NAME => 'bugs';
+use constant SOURCE_DB_USER => 'bugs';
+use constant SOURCE_DB_PASSWORD => '';
+
+# Settings for the 'Target' DB that you are copying to.
+use constant TARGET_DB_TYPE => 'Pg';
+use constant TARGET_DB_NAME => 'bugs';
+use constant TARGET_DB_USER => 'bugs';
+use constant TARGET_DB_PASSWORD => '';
+
+#####################################################################
+# MAIN SCRIPT
+#####################################################################
+
+print "Connecting to the '" . SOURCE_DB_NAME . "' source database on " 
+      . SOURCE_DB_TYPE . "...\n";
+my $source_db = Bugzilla::DB::_connect(SOURCE_DB_TYPE, 'localhost', 
+    SOURCE_DB_NAME, undef, undef, SOURCE_DB_USER, SOURCE_DB_PASSWORD);
+
+print "Connecting to the '" . TARGET_DB_NAME . "' target database on "
+      . TARGET_DB_TYPE . "...\n";
+my $target_db = Bugzilla::DB::_connect(TARGET_DB_TYPE, 'localhost', 
+    TARGET_DB_NAME, undef, undef, TARGET_DB_USER, TARGET_DB_PASSWORD);
+
+# We use the table list from the target DB, because if somebody
+# has customized their source DB, we still want the script to work,
+# and it may otherwise fail in that situation (that is, the tables
+# may not exist in the target DB).
+my @table_list = $target_db->bz_table_list_real();
+
+# We don't want to copy over the bz_schema table's contents.
+my $bz_schema_location = lsearch(\@table_list, 'bz_schema');
+splice(@table_list, $bz_schema_location, 1) if $bz_schema_location > 0;
+
+# We turn off autocommit on the target DB, because we're doing so
+# much copying.
+$target_db->{AutoCommit} = 0;
+$target_db->{AutoCommit} == 0 
+    || warn "Failed to disable autocommit on " . TARGET_DB_TYPE;
+foreach my $table (@table_list) {
+    my @serial_cols;
+    print "Reading data from the source '$table' table on " 
+          . SOURCE_DB_TYPE . "...\n";
+    my @table_columns = $target_db->bz_table_columns_real($table);
+    my $select_query = "SELECT " . join(',', @table_columns) . " FROM $table";
+    my $data_in = $source_db->selectall_arrayref($select_query);
+
+    my $insert_query = "INSERT INTO $table ( " . join(',', @table_columns) 
+                       . " ) VALUES (";
+    $insert_query .= '?,' foreach (@table_columns);
+    # Remove the last comma.
+    chop($insert_query);
+    $insert_query .= ")";
+    my $insert_sth = $target_db->prepare($insert_query);
+
+    print "Clearing out the target '$table' table on " 
+          . TARGET_DB_TYPE . "...\n";
+    $target_db->do("DELETE FROM $table");
+    
+    print "Writing data to the target '$table' table on " 
+          . TARGET_DB_TYPE . "...";
+    foreach my $row (@$data_in) {
+        # Each column needs to be bound separately, because
+        # many columns need to be dealt with specially.
+        my $colnum = 0;
+        foreach my $column (@table_columns) {
+            # bind_param args start at 1, but arrays start at 0.
+            my $param_num = $colnum + 1;
+            my $already_bound;
+
+            # Certain types of columns need special handling.
+            my $col_info = $source_db->bz_column_info($table, $column);
+            if ($col_info && $col_info->{TYPE} eq 'LONGBLOB') {
+                $insert_sth->bind_param($param_num, 
+                    $row->[$colnum], $target_db->BLOB_TYPE);
+                $already_bound = 1;
+            }
+            elsif ($col_info && $col_info->{TYPE} =~ /decimal/) {
+                # In MySQL, decimal cols can be too long.
+                my $col_type = $col_info->{TYPE};
+                $col_type =~ /decimal\((\d+),(\d+)\)/;
+                my ($precision, $decimals) = ($1, $2);
+                # If it's longer than precision + decimal point
+                if ( length($row->[$colnum]) > ($precision + 1) ) {
+                    # Truncate it to the highest allowed value.
+                    my $orig_value = $row->[$colnum];
+                    $row->[$colnum] = '';
+                    my $non_decimal = $precision - $decimals;
+                    $row->[$colnum] .= '9' while ($non_decimal--);
+                    $row->[$colnum] .= '.';
+                    $row->[$colnum] .= '9' while ($decimals--);
+                    print "Truncated value $orig_value to " . $row->[$colnum] 
+                         . " for $table.$column.\n";
+                }
+            }
+            elsif ($col_info && $col_info->{TYPE} =~ /DATETIME/i) {
+                my $date = $row->[$colnum];
+                # MySQL can have strange invalid values for Datetimes.
+                $row->[$colnum] = '1901-01-01 00:00:00'
+                    if $date && $date eq '0000-00-00 00:00:00';
+            }
+
+            $insert_sth->bind_param($param_num, $row->[$colnum])
+                unless $already_bound;
+            $colnum++;
+        }
+
+        $insert_sth->execute();
+    }
+
+    # PostgreSQL doesn't like it when you insert values into
+    # a serial field; it doesn't increment the counter 
+    # automatically.
+    if ($target_db->isa('Bugzilla::DB::Pg')) {
+        foreach my $column (@table_columns) {
+            my $col_info = $source_db->bz_column_info($table, $column);
+            if ($col_info && $col_info->{TYPE} =~ /SERIAL/i) {
+                # Set the sequence to the current max value + 1.
+                my ($max_val) = $target_db->selectrow_array(
+                    "SELECT MAX($column) FROM $table");
+                $max_val = 0 if !defined $max_val;
+                $max_val++;
+                print "\nSetting the next value for $table.$column to $max_val.";
+                $target_db->do("SELECT pg_catalog.setval 
+                                ('${table}_${column}_seq', $max_val, false)");
+            }
+        }
+    }
+
+    print "\n\n";
+}
+
+# And there's one entry in the fielddefs table that needs
+# to be manually fixed. This is a huge hack.
+my $delta_fdef = "(" . $target_db->sql_to_days('NOW()') . " - " .
+                       $target_db->sql_to_days('bugs.delta_ts') . ")";
+$target_db->do(q{UPDATE fielddefs SET name = ?
+                  WHERE name LIKE '%bugs.delta_ts%'}, undef, $delta_fdef);
+
+print "Committing changes to the target database...\n";
+$target_db->commit;
+
+print "All done! Make sure to run checksetup on the new DB.\n";
+$source_db->disconnect;
+$target_db->disconnect;
+1;
diff --git a/contrib/cmdline/CVS/Entries b/contrib/cmdline/CVS/Entries
index 2fccf1c440b35a592db9a5c09509eeb9e117abe4..565b324f93ba42dde25a04615bce23c129721b4b 100644
--- a/contrib/cmdline/CVS/Entries
+++ b/contrib/cmdline/CVS/Entries
@@ -1,8 +1,8 @@
-/bugcount/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20
-/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20
-/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20
-/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20
-/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20
-/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20
-/query.conf/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20
+/bugcount/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_21_1
+/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_21_1
+/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_21_1
+/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_21_1
+/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_21_1
+/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_21_1
+/query.conf/1.3/Fri Aug 26 23:11:32 2005//TBUGZILLA-2_21_1
 D
diff --git a/contrib/cmdline/CVS/Tag b/contrib/cmdline/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/contrib/cmdline/CVS/Tag
+++ b/contrib/cmdline/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/contrib/cmdline/query.conf b/contrib/cmdline/query.conf
index a44347b2b94a95e6ff67cf26491f7bf04e032a1b..87390cd3f852bab1073aec54fb3e083f3a948685 100644
--- a/contrib/cmdline/query.conf
+++ b/contrib/cmdline/query.conf
@@ -43,7 +43,7 @@ bug_file_loc            substring       "u","url"
 status_whiteboard       substring       "w","whiteboard"
 keywords                substring       "k","K","keywords"
 attachments.description substring       "attachdesc"
-attachments.thedata     substring       "attachdata"
+attach_data.thedata     substring       "attachdata"
 attachments.mimetype    substring       "attachmime"
 dependson               substring       # bug 30823
 blocked                 substring       # bug 30823
diff --git a/contrib/gnatsparse/CVS/Entries b/contrib/gnatsparse/CVS/Entries
index 03cea623815c14293435b854ba8058f431602c3c..5c3429e0ee2f4555056b2a1c49a405a3149e4dcd 100644
--- a/contrib/gnatsparse/CVS/Entries
+++ b/contrib/gnatsparse/CVS/Entries
@@ -1,5 +1,5 @@
-/README/1.2/Tue Mar 23 17:59:11 2004//TBUGZILLA-2_20
-/gnatsparse.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_20
-/magic.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_20
-/specialuu.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_20
+/README/1.2/Tue Mar 23 17:59:11 2004//TBUGZILLA-2_21_1
+/gnatsparse.py/1.2/Fri Aug 26 23:11:32 2005//TBUGZILLA-2_21_1
+/magic.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_21_1
+/specialuu.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_21_1
 D
diff --git a/contrib/gnatsparse/CVS/Tag b/contrib/gnatsparse/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/contrib/gnatsparse/CVS/Tag
+++ b/contrib/gnatsparse/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/contrib/gnatsparse/gnatsparse.py b/contrib/gnatsparse/gnatsparse.py
index 5f7cde713f54b3924c1b789ab3b03d71e413c882..b317b240d187631d4314d4ff1a6ad39dd356a4b1 100755
--- a/contrib/gnatsparse/gnatsparse.py
+++ b/contrib/gnatsparse/gnatsparse.py
@@ -451,7 +451,7 @@ class Bugzillabug(object):
             print >>outfile, "  %s, %s, %s, %s);" % (id, who, when, text)
         for name, data, who in self.attachments:
             print >>outfile, "\ninsert into attachments ("
-            print >>outfile, "  bug_id, filename, description, mimetype, ispatch, submitter_id, thedata) values ("
+            print >>outfile, "  bug_id, filename, description, mimetype, ispatch, submitter_id) values ("
 	    ftype = None
 	    # It's *magic*!
 	    if name.endswith(".ii") == 1:
@@ -463,7 +463,10 @@ class Bugzillabug(object):
             if ftype is None:
                 ftype = "application/octet-stream"
             
-            print >>outfile, "%s,%s,%s, %s,0, %s,%s);" %(self.bug_id, SqlQuote(name), SqlQuote(name), SqlQuote (ftype), who, SqlQuote(zlib.compress(data)))
+            print >>outfile, "%s,%s,%s, %s,0, %s,%s);" %(self.bug_id, SqlQuote(name), SqlQuote(name), SqlQuote (ftype), who)
+            print >>outfile, "\ninsert into attach_data ("
+            print >>outfile, "\n(id, thedata) values (last_insert_id(),"
+            print >>outfile, "%s);" % (SqlQuote(zlib.compress(data)))
         for newstate, oldstate, fieldid, changedby, changedwhen in self.bug_activity:
             print >>outfile, "\ninsert into bugs_activity ("
             print >>outfile, "  bug_id, who, bug_when, fieldid, added, removed) values ("
diff --git a/contrib/jb2bz.py b/contrib/jb2bz.py
index ed8231dfc7ce0aa6737fc5b9989c4a302716f305..e2f50292743ccdf5571525a01f8c4b5bb7648ae9 100644
--- a/contrib/jb2bz.py
+++ b/contrib/jb2bz.py
@@ -248,10 +248,13 @@ def process_jitterbug(filename):
     for a in current['attachments']:
         cursor.execute( "INSERT INTO attachments SET " \
                         "bug_id=%s, creation_ts=%s, description='', mimetype=%s," \
-                        "filename=%s, thedata=%s, submitter_id=%s",
+                        "filename=%s, submitter_id=%s",
                         [ current['number'],
                           time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
-                          a[1], a[0], a[2], reporter ])
+                          a[1], a[0], reporter ])
+        cursor.execute( "INSERT INTO attach_data SET " \
+                        "id=LAST_INSERT_ID(), thedata=%s",
+                        [ a[2] ])
 
     cursor.close()
     db.close()
diff --git a/contrib/sendunsentbugmail.pl b/contrib/sendunsentbugmail.pl
index c82c0ae30c49d0c4b522e04ab7b78dd9eb4d405a..9453a6538e0c8c073b7a203482244a9a505b7b61 100644
--- a/contrib/sendunsentbugmail.pl
+++ b/contrib/sendunsentbugmail.pl
@@ -25,7 +25,7 @@ use strict;
 
 use lib qw(.);
 
-require "CGI.pl";
+require "globals.pl";
 use Bugzilla::Constants;
 use Bugzilla::BugMail;
 
diff --git a/contrib/syncLDAP.pl b/contrib/syncLDAP.pl
index 14ba1402cea023d6bf019867b52540e637bdb7b0..6e78854e05bdde6419ac6fc7b5d91811cec58e30 100755
--- a/contrib/syncLDAP.pl
+++ b/contrib/syncLDAP.pl
@@ -23,7 +23,7 @@
 
 use strict;
 
-require "CGI.pl";
+require "globals.pl";
 
 use lib qw(.);
 
diff --git a/createaccount.cgi b/createaccount.cgi
index 3465800a3d889351f1060e2d4bcd3f3485c3b20f..1be63756da365c800f0e83cc8d0c568f54971428 100755
--- a/createaccount.cgi
+++ b/createaccount.cgi
@@ -28,11 +28,13 @@ use strict;
 
 use lib qw(.);
 
-require "CGI.pl";
+require "globals.pl";
 
 use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::User;
+use Bugzilla::BugMail;
+use Bugzilla::Util;
 
 # Shut up misguided -w warnings about "used only once":
 use vars qw($template $vars);
@@ -61,7 +63,10 @@ my $login = $cgi->param('login');
 if (defined($login)) {
     # We've been asked to create an account.
     my $realname = trim($cgi->param('realname'));
-    CheckEmailSyntax($login);
+
+    validate_email_syntax($login)
+      || ThrowUserError('illegal_email_address', {addr => $login});
+
     $vars->{'login'} = $login;
 
     $dbh->bz_lock_tables('profiles WRITE', 'email_setting WRITE', 'tokens READ');
@@ -86,7 +91,7 @@ if (defined($login)) {
     # Clear out the login cookies in case the user is currently logged in.
     Bugzilla->logout();
 
-    MailPassword($login, $password);
+    Bugzilla::BugMail::MailPassword($login, $password);
     
     $template->process("account/created.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
diff --git a/defparams.pl b/defparams.pl
index b598cc20cc4a4e42bc0025a1fc4aa73f15e8019e..60e41eb96498416ce170fab735976f897033e568 100644
--- a/defparams.pl
+++ b/defparams.pl
@@ -210,6 +210,15 @@ sub check_user_verify_class {
     return "";
 }
 
+sub check_image_converter {
+    my ($value, $hash) = @_;
+    if ($value == 1){
+       eval "require Image::Magick";
+       return "Error requiring Image::Magick: '$@'" if $@;
+    } 
+    return "";
+}
+
 sub check_languages {
     my @languages = split /[,\s]+/, trim($_[0]);
     if(!scalar(@languages)) {
@@ -370,6 +379,17 @@ sub check_mail_delivery_method {
    checker => \&check_languages
   },
 
+  {
+   name => 'utf8',
+   desc => 'Use UTF-8 (Unicode) encoding for all text in Bugzilla. New ' .
+           'installations should set this to true to avoid character encoding ' .
+           'problems. Existing databases should set this to true only after ' .
+           'the data has been converted from existing legacy character ' .
+           'encodings to UTF-8.',
+   type => 'b',
+   default => '0',
+  },
+
   {
    name => 'cookiedomain',
    desc => 'The domain for Bugzilla cookies.  Normally blank.  ' .
@@ -689,7 +709,7 @@ sub check_mail_delivery_method {
            '<li>\'sendmail\', \'smtp\' and \'qmail\' are all MTAs. ' .
            'You need to install a third-party sendmail replacement if ' .
            'you want to use sendmail on Windows.' .
-           '<li>\'testfile\' is useful for debugging: all email is stored' .
+           '<li>\'testfile\' is useful for debugging: all email is stored ' .
            'in data/mailer.testfile instead of being sent. For more ' .
            'information, see the Mail::Mailer manual.</li>' .
            '<li>\'none\' will completely disable email. Bugzilla continues ' .
@@ -1307,6 +1327,16 @@ Reason: %reason%
    default => '0',
    checker => \&check_numeric
   },
+  
+  {
+   name => 'convert_uncompressed_images',
+   desc => 'If this option is on, attachments with content type image/bmp ' .
+           'will be converted to image/png and compressed before uploading to'.
+           'the database to conserve disk space.',
+   type => 'b',
+   default => 0,
+   checker => \&check_image_converter
+  },
 
   {
    name => 'chartgroup',
@@ -1396,6 +1426,17 @@ Reason: %reason%
    default => 1,
   },
 
+  {
+   name    => 'quicksearch_comment_cutoff',
+   desc    => q{The maximum number of search terms for a QuickSearch to search
+                comments.
+                If the QuickSearch query contains more terms than this value,
+                QuickSearch will not search comments.},
+   type    => 't',
+   default => '4',
+   checker => \&check_numeric
+  },
+
 # Added for Patch Viewer stuff (attachment.cgi?action=diff)
   {
    name    => 'cvsroot',
diff --git a/describecomponents.cgi b/describecomponents.cgi
index 8e175549814af007938872d3a86e41806b19a3a1..9602c0fe0bba8fe1839a787139039da56364b04e 100755
--- a/describecomponents.cgi
+++ b/describecomponents.cgi
@@ -26,7 +26,7 @@ use lib qw(.);
 
 use Bugzilla;
 use Bugzilla::Constants;
-require "CGI.pl";
+require "globals.pl";
 
 use vars qw($vars @legal_product);
 
diff --git a/describekeywords.cgi b/describekeywords.cgi
index e7b3b759b5390bb4fe6eb3a25bbfd8ee0e0f401b..ab88c2f152b0c09054a739fb542a63061375c989 100755
--- a/describekeywords.cgi
+++ b/describekeywords.cgi
@@ -27,7 +27,7 @@ use lib ".";
 use Bugzilla;
 use Bugzilla::User;
 
-require "CGI.pl";
+require "globals.pl";
 
 # Use the global template variables. 
 use vars qw($vars $template);
diff --git a/docs/CVS/Entries b/docs/CVS/Entries
index 25e9843a90bd9e75bda4868f628edc9fc14c354b..dcf9cdca126769ed479461716b3f686b897fb3ca 100644
--- a/docs/CVS/Entries
+++ b/docs/CVS/Entries
@@ -1,6 +1,6 @@
-/.cvsignore/1.2/Wed Mar 17 05:15:41 2004//TBUGZILLA-2_20
-/README.docs/1.10/Sun May 30 21:46:07 2004//TBUGZILLA-2_20
-/makedocs.pl/1.7/Thu Feb  5 04:49:08 2004//TBUGZILLA-2_20
-/rel_notes.txt/1.32.2.2/Fri Sep 30 21:35:19 2005//TBUGZILLA-2_20
+/.cvsignore/1.2/Wed Mar 17 05:15:41 2004//TBUGZILLA-2_21_1
+/README.docs/1.10/Sun May 30 21:46:07 2004//TBUGZILLA-2_21_1
+/makedocs.pl/1.10/Sat Aug 13 12:27:04 2005//TBUGZILLA-2_21_1
+/rel_notes.txt/1.34/Fri Sep 30 21:33:41 2005//TBUGZILLA-2_21_1
 D/images////
 D/xml////
diff --git a/docs/CVS/Tag b/docs/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/docs/CVS/Tag
+++ b/docs/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/docs/html/Bugzilla-Guide.html b/docs/html/Bugzilla-Guide.html
index 31e9e2327c2d94ec7d2a676e90ca8eec8979b689..436d1f63211c2f849e1254cf334ed9db6fa564c4 100644
--- a/docs/html/Bugzilla-Guide.html
+++ b/docs/html/Bugzilla-Guide.html
@@ -2,7 +2,7 @@
 <HTML
 ><HEAD
 ><TITLE
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TITLE
 ><META
@@ -44,7 +44,7 @@ CLASS="TITLEPAGE"
 CLASS="title"
 ><A
 NAME="AEN2"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</A
 ></H1
@@ -422,7 +422,7 @@ HREF="#trbl-relogin-everyone"
 ></DT
 ><DT
 >B.9. <A
-HREF="#AEN3196"
+HREF="#AEN3189"
 >Some users are constantly being forced to relogin</A
 ></DT
 ><DT
@@ -706,7 +706,7 @@ NAME="newversions"
 >1.3. New Versions</A
 ></H2
 ><P
->&#13;      This is the 2.20 version of The Bugzilla Guide. It is so named 
+>&#13;      This is the 2.21.1 version of The Bugzilla Guide. It is so named 
       to match the current version of Bugzilla. 
        This version of the guide, like its associated Bugzilla version, is a
       development version. 
@@ -1441,7 +1441,7 @@ HREF="http://www.mysql.com"
 TARGET="_top"
 >http://www.mysql.com</A
 >. You need MySQL version
-          3.23.41 or higher.
+          4.0.14 or higher.
           </P
 ><DIV
 CLASS="note"
@@ -2915,7 +2915,7 @@ CLASS="filename"
 >. In this file,
           you will need to add a new line to it as follows:</P
 ><P
->&#13;            <SAMP
+>&#13;	    <SAMP
 CLASS="computeroutput"
 >host   all    bugs   127.0.0.1    255.255.255.255  md5</SAMP
 >
@@ -2938,7 +2938,7 @@ CLASS="filename"
 > folder.
           You will need to make a single line change, changing</P
 ><P
->&#13;	    <SAMP
+>&#13;            <SAMP
 CLASS="computeroutput"
 ># tcpip_socket = false</SAMP
 >
@@ -2946,11 +2946,11 @@ CLASS="computeroutput"
 ><P
 >to</P
 ><P
->&#13;	    <SAMP
+>&#13;            <SAMP
 CLASS="computeroutput"
 >tcpip_socket = true</SAMP
 >
-          </P
+	  </P
 ><P
 >Now, you will need to restart PostgreSQL, but you will need to fully
           stop and start the server rather than just restarting due to the possibility
@@ -9301,18 +9301,6 @@ CLASS="filename"
 >
               </P
 ></LI
-><LI
-><P
->But allow:
-              <TT
-CLASS="filename"
->localconfig.js</TT
->, <TT
-CLASS="filename"
->localconfig.rdf</TT
->
-              </P
-></LI
 ></UL
 ></LI
 ><LI
@@ -10104,7 +10092,7 @@ CLASS="filename"
 >&#13;        To see if a CGI supports multiple output formats and types, grep the
         CGI for <SPAN
 CLASS="QUOTE"
->"GetFormat"</SPAN
+>"get_format"</SPAN
 >. If it's not present, adding
         multiple format/type support isn't too hard - see how it's done in
         other CGIs, e.g. config.cgi.
@@ -11169,7 +11157,7 @@ CLASS="section"
 ><HR><H3
 CLASS="section"
 ><A
-NAME="AEN2071"
+NAME="AEN2064"
 >5.5.1. Bugzilla Database Basics</A
 ></H3
 ><P
@@ -11281,7 +11269,7 @@ CLASS="section"
 ><HR><H4
 CLASS="section"
 ><A
-NAME="AEN2098"
+NAME="AEN2091"
 >5.5.1.1. Bugzilla Database Tables</A
 ></H4
 ><P
@@ -12212,7 +12200,7 @@ NAME="negation"
 >&#13;          At first glance, negation seems redundant. Rather than
           searching for
           <A
-NAME="AEN2286"
+NAME="AEN2279"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12223,7 +12211,7 @@ CLASS="BLOCKQUOTE"
 >
           one could search for 
           <A
-NAME="AEN2288"
+NAME="AEN2281"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12234,7 +12222,7 @@ CLASS="BLOCKQUOTE"
 >
           However, the search 
           <A
-NAME="AEN2290"
+NAME="AEN2283"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12246,7 +12234,7 @@ CLASS="BLOCKQUOTE"
           would find every bug where anyone on the CC list did not contain 
           "@mozilla.org" while
           <A
-NAME="AEN2292"
+NAME="AEN2285"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12260,7 +12248,7 @@ CLASS="BLOCKQUOTE"
           complex expressions to be built using terms OR'd together and then
           negated. Negation permits queries such as
           <A
-NAME="AEN2294"
+NAME="AEN2287"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12273,7 +12261,7 @@ CLASS="BLOCKQUOTE"
           to find bugs that are neither 
           in the update product or in the documentation component or
           <A
-NAME="AEN2296"
+NAME="AEN2289"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12301,7 +12289,7 @@ NAME="multiplecharts"
           a bug that has two different people cc'd on it, then you need 
           to use two boolean charts. A search for
           <A
-NAME="AEN2301"
+NAME="AEN2294"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12316,7 +12304,7 @@ CLASS="BLOCKQUOTE"
           containing "foo@" and someone else containing "@mozilla.org",
           then you would need two boolean charts.
           <A
-NAME="AEN2303"
+NAME="AEN2296"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -12713,7 +12701,7 @@ CLASS="section"
 ><HR><H3
 CLASS="section"
 ><A
-NAME="AEN2386"
+NAME="AEN2379"
 >6.9.1. Autolinkification</A
 ></H3
 ><P
@@ -12799,15 +12787,16 @@ CLASS="filename"
 >:BazProduct</TT
 >" would
       search only in that product.
+      You can use it to find a bug by its number or its alias, too.
       </P
 ><P
->You'll find the Quicksearch box on Bugzilla's
-      front page, along with a 
+>You'll find the Quicksearch box in Bugzilla's footer area.
+      On Bugzilla's front page, there is an additional
       <A
-HREF="../../quicksearch.html"
+HREF="../../page.cgi?id=quicksearch.html"
 TARGET="_top"
 >Help</A
-> 
+>
       link which details how to use it.</P
 ></DIV
 ><DIV
@@ -13331,7 +13320,7 @@ CLASS="section"
 ><HR><H4
 CLASS="section"
 ><A
-NAME="AEN2493"
+NAME="AEN2486"
 >6.11.2.1. Creating Charts</A
 ></H4
 ><P
@@ -13371,7 +13360,7 @@ CLASS="section"
 ><HR><H4
 CLASS="section"
 ><A
-NAME="AEN2500"
+NAME="AEN2493"
 >6.11.2.2. Creating New Data Sets</A
 ></H4
 ><P
@@ -13791,7 +13780,7 @@ CLASS="section"
 ><HR><H3
 CLASS="section"
 ><A
-NAME="AEN2552"
+NAME="AEN2545"
 >6.13.4. Saving Your Changes</A
 ></H3
 ><P
@@ -16679,7 +16668,7 @@ CLASS="answer"
 ><P
 >&#13;            Microsoft has some advice on this matter, as well:
             <A
-NAME="AEN2975"
+NAME="AEN2968"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -17181,13 +17170,13 @@ TARGET="_top"
             enhancement for Bugzilla.
           </P
 ><P
->&#13;            You can view bugs marked for 2.20.1 release
+>&#13;            You can view bugs marked for 2.22 release
             <A
 HREF="http://bugzilla.mozilla.org/buglist.cgi?product=Bugzilla&#38;target_milestone=Bugzilla+&#38;bz-nextver;"
 TARGET="_top"
 >here</A
 >.
-            This list includes bugs for the 2.20.1 release that have already
+            This list includes bugs for the 2.22 release that have already
             been fixed and checked into CVS. Please consult the
             <A
 HREF="http://www.bugzilla.org/"
@@ -17797,7 +17786,7 @@ NAME="trbl-relogin-everyone-share"
 >Example B-1. Examples of urlbase/cookiepath pairs for sharing login cookies</B
 ></P
 ><A
-NAME="AEN3182"
+NAME="AEN3175"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -17838,7 +17827,7 @@ NAME="trbl-relogin-everyone-restrict"
 >Example B-2. Examples of urlbase/cookiepath pairs to restrict the login cookie</B
 ></P
 ><A
-NAME="AEN3189"
+NAME="AEN3182"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -17880,7 +17869,7 @@ CLASS="section"
 ><HR><H2
 CLASS="section"
 ><A
-NAME="AEN3196"
+NAME="AEN3189"
 >B.9. Some users are constantly being forced to relogin</A
 ></H2
 ><P
@@ -18743,7 +18732,7 @@ NAME="gfdl"
 ><P
 >Version 1.1, March 2000</P
 ><A
-NAME="AEN3372"
+NAME="AEN3365"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -19206,7 +19195,7 @@ NAME="gfdl-howto"
     of the License in the document and put the following copyright and
     license notices just after the title page:</P
 ><A
-NAME="AEN3462"
+NAME="AEN3455"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -19243,7 +19232,7 @@ CLASS="glossdiv"
 ><H1
 CLASS="glossdiv"
 ><A
-NAME="AEN3467"
+NAME="AEN3460"
 >0-9, high ascii</A
 ></H1
 ><DL
@@ -20157,7 +20146,7 @@ NAME="gloss-zarro"
         Terry had the following to say:
         </P
 ><A
-NAME="AEN3713"
+NAME="AEN3706"
 ></A
 ><TABLE
 BORDER="0"
diff --git a/docs/html/about.html b/docs/html/about.html
index 679cd7de3f5208a024495d959520d57c924ce2e6..af3dfa8b15b130d7eb0e8364dcca42dc422a64da 100644
--- a/docs/html/about.html
+++ b/docs/html/about.html
@@ -7,12 +7,12 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
 REL="PREVIOUS"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -38,7 +38,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -157,7 +157,7 @@ ACCESSKEY="N"
 WIDTH="33%"
 ALIGN="left"
 VALIGN="top"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TD
 ><TD
diff --git a/docs/html/administration.html b/docs/html/administration.html
index 69ba17356b9a21fde3f032af33bcab77d580cfe4..73220f5ef8642536319d3f318b0531a004d51274 100644
--- a/docs/html/administration.html
+++ b/docs/html/administration.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/bug_page.html b/docs/html/bug_page.html
index f31b3c6451f8ba825eed9a3483c21b0c9101df0a..67ceda2e2b3068ad2440ff8a5ba13bbd6dd8b7c7 100644
--- a/docs/html/bug_page.html
+++ b/docs/html/bug_page.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/bugreports.html b/docs/html/bugreports.html
index 31d94663bb02b9a7e876f6942ee718e82c639404..978399d859188f1a3b63045e30a2a7f45b63c590 100644
--- a/docs/html/bugreports.html
+++ b/docs/html/bugreports.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/cmdline-bugmail.html b/docs/html/cmdline-bugmail.html
index 3e211a952d8417c10a8a66cf26bd68521c46a6c3..7d6c3700163df96f0cadac9a74da12a0c1ef0ec9 100644
--- a/docs/html/cmdline-bugmail.html
+++ b/docs/html/cmdline-bugmail.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/cmdline.html b/docs/html/cmdline.html
index 9848dcad53b46d4098bcbc96cd08b932c2848bfe..36a4593c373ebca1428dab19116ef9e61f7796ac 100644
--- a/docs/html/cmdline.html
+++ b/docs/html/cmdline.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/components.html b/docs/html/components.html
index 05530f43c7f5a38872413d9c198b2b9db9825de4..c4218bc3c19a0667633e3be1688e4c67a6c97042 100644
--- a/docs/html/components.html
+++ b/docs/html/components.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/configuration.html b/docs/html/configuration.html
index 5d9c8a6663a7fb1f41e9099074d5c73a82304f8d..26a1db1e22a3af763ad065ca27ec73b2f55e3ec7 100644
--- a/docs/html/configuration.html
+++ b/docs/html/configuration.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -765,7 +765,7 @@ CLASS="filename"
 >. In this file,
           you will need to add a new line to it as follows:</P
 ><P
->&#13;            <SAMP
+>&#13;	    <SAMP
 CLASS="computeroutput"
 >host   all    bugs   127.0.0.1    255.255.255.255  md5</SAMP
 >
@@ -788,7 +788,7 @@ CLASS="filename"
 > folder.
           You will need to make a single line change, changing</P
 ><P
->&#13;	    <SAMP
+>&#13;            <SAMP
 CLASS="computeroutput"
 ># tcpip_socket = false</SAMP
 >
@@ -796,11 +796,11 @@ CLASS="computeroutput"
 ><P
 >to</P
 ><P
->&#13;	    <SAMP
+>&#13;            <SAMP
 CLASS="computeroutput"
 >tcpip_socket = true</SAMP
 >
-          </P
+	  </P
 ><P
 >Now, you will need to restart PostgreSQL, but you will need to fully
           stop and start the server rather than just restarting due to the possibility
diff --git a/docs/html/conventions.html b/docs/html/conventions.html
index 5e4113b389a34bb65a21376a0764caa2977968f1..1548ce45fa9b4cecb2f2a802183a3f732ba5f5c1 100644
--- a/docs/html/conventions.html
+++ b/docs/html/conventions.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/copyright.html b/docs/html/copyright.html
index f4ee24b56779abdef8e3ae2a5807437e650dc5e3..007a0b4031c8968fa584e72f64ff9f4b91294cc4 100644
--- a/docs/html/copyright.html
+++ b/docs/html/copyright.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/credits.html b/docs/html/credits.html
index 81432a8387059b049e4241dba9034e188f3fe558..d0575d24cc2042b3a14b65be7ae408780e76dd84 100644
--- a/docs/html/credits.html
+++ b/docs/html/credits.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/cust-change-permissions.html b/docs/html/cust-change-permissions.html
index cdbbe7bd3b865fd877a15a26a06b36bfacada0f3..0602a0642d9367f1f3d108eb1d7d774751a3ae40 100644
--- a/docs/html/cust-change-permissions.html
+++ b/docs/html/cust-change-permissions.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/cust-hooks.html b/docs/html/cust-hooks.html
index 51b67f114c3e73e4dac77cddd4a89bc33521b4c1..cf21b53ae1a9f3dd53844adc3ab47a545a2e94c7 100644
--- a/docs/html/cust-hooks.html
+++ b/docs/html/cust-hooks.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/cust-templates.html b/docs/html/cust-templates.html
index 53007ed8dfbf8dc33ffc1c6eb41d2443f7c3174f..d8083e76921a9d8c4c5c664fef84339f62302e1a 100644
--- a/docs/html/cust-templates.html
+++ b/docs/html/cust-templates.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -486,7 +486,7 @@ CLASS="filename"
 >&#13;        To see if a CGI supports multiple output formats and types, grep the
         CGI for <SPAN
 CLASS="QUOTE"
->"GetFormat"</SPAN
+>"get_format"</SPAN
 >. If it's not present, adding
         multiple format/type support isn't too hard - see how it's done in
         other CGIs, e.g. config.cgi.
diff --git a/docs/html/customization.html b/docs/html/customization.html
index d28d999242c10c4b7dc8d857cd745441d0fe9a81..65a00140ab35333b92a640680b25f01b5b98a5e5 100644
--- a/docs/html/customization.html
+++ b/docs/html/customization.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/dbdoc.html b/docs/html/dbdoc.html
index 778b02db5d4587ab2f45a0949a43a23e906f2496..01988138332ceed1a04c1144e5d3e43bb44d6307 100644
--- a/docs/html/dbdoc.html
+++ b/docs/html/dbdoc.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -139,7 +139,7 @@ CLASS="section"
 ><H2
 CLASS="section"
 ><A
-NAME="AEN2071"
+NAME="AEN2064"
 >5.5.1. Bugzilla Database Basics</A
 ></H2
 ><P
@@ -251,7 +251,7 @@ CLASS="section"
 ><H3
 CLASS="section"
 ><A
-NAME="AEN2098"
+NAME="AEN2091"
 >5.5.1.1. Bugzilla Database Tables</A
 ></H3
 ><P
diff --git a/docs/html/dbmodify.html b/docs/html/dbmodify.html
index 76c45d07e2b70e89d170e361227a9494a216f155..0ed8d38d857a4678a5167c1a0889abf9e05d64c3 100644
--- a/docs/html/dbmodify.html
+++ b/docs/html/dbmodify.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/disclaimer.html b/docs/html/disclaimer.html
index 220d6c2e62d2c712f351d9bf51b831cc0e73cc7c..96c024f26b7561280b938d647e5c5daf116df5da 100644
--- a/docs/html/disclaimer.html
+++ b/docs/html/disclaimer.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/extraconfig.html b/docs/html/extraconfig.html
index 8fc467a7719101b69e75325f918f6a8da1baa01b..0bb1fd5b5270575d9d5c81409fa8fbdab03e8665 100644
--- a/docs/html/extraconfig.html
+++ b/docs/html/extraconfig.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/faq.html b/docs/html/faq.html
index 0d45be524142c6586ffa8e750b0e1cdcea143083..1674fe071543e9f4df63d2802fc2e88d72e1b34d 100644
--- a/docs/html/faq.html
+++ b/docs/html/faq.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -2916,7 +2916,7 @@ CLASS="answer"
 ><P
 >&#13;            Microsoft has some advice on this matter, as well:
             <A
-NAME="AEN2975"
+NAME="AEN2968"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -3418,13 +3418,13 @@ TARGET="_top"
             enhancement for Bugzilla.
           </P
 ><P
->&#13;            You can view bugs marked for 2.20.1 release
+>&#13;            You can view bugs marked for 2.22 release
             <A
 HREF="http://bugzilla.mozilla.org/buglist.cgi?product=Bugzilla&#38;target_milestone=Bugzilla+&#38;bz-nextver;"
 TARGET="_top"
 >here</A
 >.
-            This list includes bugs for the 2.20.1 release that have already
+            This list includes bugs for the 2.22 release that have already
             been fixed and checked into CVS. Please consult the
             <A
 HREF="http://www.bugzilla.org/"
diff --git a/docs/html/flags-overview.html b/docs/html/flags-overview.html
index fdb41e8e75e33b001d7cf02aa719a51e9447b0b4..19b31687f6b7668254b5242555d7de52f6520b0d 100644
--- a/docs/html/flags-overview.html
+++ b/docs/html/flags-overview.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/flags.html b/docs/html/flags.html
index da8a6a28365589f837e9cbd204fa4047289d1277..62660b1eae8f2b41dfec06bfa074a7defbc4fc5b 100644
--- a/docs/html/flags.html
+++ b/docs/html/flags.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/general-advice.html b/docs/html/general-advice.html
index 26e5b9dde2532e997e51e96996a8b498b6624b7f..76ce7adc2c71f72eae1e1a454ef608bb35926862 100644
--- a/docs/html/general-advice.html
+++ b/docs/html/general-advice.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-0.html b/docs/html/gfdl-0.html
index 42d501512fb1c75b7470019d387d49d4f0606f89..16dba048f3f40c810f4e81831821cbf2bd0c0f01 100644
--- a/docs/html/gfdl-0.html
+++ b/docs/html/gfdl-0.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-1.html b/docs/html/gfdl-1.html
index 49e6a061d7f3130eb3c85e3ba1bb5524c6940195..0d31533d9369c597b871723b7782ec5fd8096afe 100644
--- a/docs/html/gfdl-1.html
+++ b/docs/html/gfdl-1.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-10.html b/docs/html/gfdl-10.html
index 33040c8db3fe84536967b0de43c3d7468d1eaf94..bdda323a9b24a3d5a71fda59e28ec9a86a56dd1b 100644
--- a/docs/html/gfdl-10.html
+++ b/docs/html/gfdl-10.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-2.html b/docs/html/gfdl-2.html
index 423aea447f628618400a080b3cdffadcff527615..c047d3cd4db82ef7c08d44f90598349f3c0c54a1 100644
--- a/docs/html/gfdl-2.html
+++ b/docs/html/gfdl-2.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-3.html b/docs/html/gfdl-3.html
index d8813270dd97daee4323795a0103045051d1c62e..2953df512065be880c90f8267cd5cc6716833604 100644
--- a/docs/html/gfdl-3.html
+++ b/docs/html/gfdl-3.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-4.html b/docs/html/gfdl-4.html
index 8e93759315e02b0ab8f8c1b29e7f3ba233c150f8..7650c1b8cc32ff4e03346b1c7dcd7639aaa78bb0 100644
--- a/docs/html/gfdl-4.html
+++ b/docs/html/gfdl-4.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-5.html b/docs/html/gfdl-5.html
index 60c5beb1d8cf5fd055b55846d15c49ca311516b1..36b963f272a0576f95618fde65c61a8ac8f2145e 100644
--- a/docs/html/gfdl-5.html
+++ b/docs/html/gfdl-5.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-6.html b/docs/html/gfdl-6.html
index 5d3d0e036e9b3f699c356915c9f81ce0629e229a..6bd04e1a341a3a9470a012b7e5870b7220b579a7 100644
--- a/docs/html/gfdl-6.html
+++ b/docs/html/gfdl-6.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-7.html b/docs/html/gfdl-7.html
index 7b9c2dfa2c940ebc8d2214f11dfe858ac219a7b9..f325c1c52ca616dec8c51efa2ae52438d5225410 100644
--- a/docs/html/gfdl-7.html
+++ b/docs/html/gfdl-7.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-8.html b/docs/html/gfdl-8.html
index b56e07b5bf832669d88c1fd1460d5945010a7050..fc9d386147f0aefef4ab022250ec5228126b4e38 100644
--- a/docs/html/gfdl-8.html
+++ b/docs/html/gfdl-8.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-9.html b/docs/html/gfdl-9.html
index cee36dfd0be4dfa935e60aa640e8beffda765695..b07f08e840b57186a7fc761a6528dcbbd8284ddf 100644
--- a/docs/html/gfdl-9.html
+++ b/docs/html/gfdl-9.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/gfdl-howto.html b/docs/html/gfdl-howto.html
index 00fd769136ccffe4ed7e5cd29f72ac8de2fbc056..b91262defd69035aa6e91091554e60ac368c8dd5 100644
--- a/docs/html/gfdl-howto.html
+++ b/docs/html/gfdl-howto.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -85,7 +85,7 @@ NAME="gfdl-howto"
     of the License in the document and put the following copyright and
     license notices just after the title page:</P
 ><A
-NAME="AEN3462"
+NAME="AEN3455"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
diff --git a/docs/html/gfdl.html b/docs/html/gfdl.html
index 196df724b697a194e3aa3a972e38ccd9ffffae39..59704a38a004ca6cea12e8eee9b0b66d0c9c6f8f 100644
--- a/docs/html/gfdl.html
+++ b/docs/html/gfdl.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -148,7 +148,7 @@ HREF="gfdl-howto.html"
 ><P
 >Version 1.1, March 2000</P
 ><A
-NAME="AEN3372"
+NAME="AEN3365"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
diff --git a/docs/html/glossary.html b/docs/html/glossary.html
index f859a9b44db43526079bacc78cc8c9221be98082..28ac3dadf9c290836a37748adb67da68a96257b0 100644
--- a/docs/html/glossary.html
+++ b/docs/html/glossary.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -33,7 +33,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -74,7 +74,7 @@ CLASS="glossdiv"
 ><H1
 CLASS="glossdiv"
 ><A
-NAME="AEN3467"
+NAME="AEN3460"
 >0-9, high ascii</A
 ></H1
 ><DL
@@ -988,7 +988,7 @@ NAME="gloss-zarro"
         Terry had the following to say:
         </P
 ><A
-NAME="AEN3713"
+NAME="AEN3706"
 ></A
 ><TABLE
 BORDER="0"
diff --git a/docs/html/groups.html b/docs/html/groups.html
index 21e3ba7033af4ae87f26bf73de78edc14b0377fd..430cc64a1eb3733f5032e32bbb53f611b6075267 100644
--- a/docs/html/groups.html
+++ b/docs/html/groups.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/hintsandtips.html b/docs/html/hintsandtips.html
index 4724e18e6d0288b53eb559967945bb93e16a1084..112215de8fd158f406f1ad18aee900ebfe29d6f8 100644
--- a/docs/html/hintsandtips.html
+++ b/docs/html/hintsandtips.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -88,7 +88,7 @@ CLASS="section"
 ><H2
 CLASS="section"
 ><A
-NAME="AEN2386"
+NAME="AEN2379"
 >6.9.1. Autolinkification</A
 ></H2
 ><P
@@ -174,15 +174,16 @@ CLASS="filename"
 >:BazProduct</TT
 >" would
       search only in that product.
+      You can use it to find a bug by its number or its alias, too.
       </P
 ><P
->You'll find the Quicksearch box on Bugzilla's
-      front page, along with a 
+>You'll find the Quicksearch box in Bugzilla's footer area.
+      On Bugzilla's front page, there is an additional
       <A
-HREF="../../quicksearch.html"
+HREF="../../page.cgi?id=quicksearch.html"
 TARGET="_top"
 >Help</A
-> 
+>
       link which details how to use it.</P
 ></DIV
 ><DIV
diff --git a/docs/html/index.html b/docs/html/index.html
index 6466e9220b9bae7b80afc6d2cb8a8afa14ad1963..0076c8e8be3cd0ccb928734b7023ef655ad62d28 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -2,7 +2,7 @@
 <HTML
 ><HEAD
 ><TITLE
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TITLE
 ><META
@@ -47,7 +47,7 @@ CLASS="TITLEPAGE"
 CLASS="title"
 ><A
 NAME="AEN2"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</A
 ></H1
@@ -425,7 +425,7 @@ HREF="trbl-relogin-everyone.html"
 ></DT
 ><DT
 >B.9. <A
-HREF="x3196.html"
+HREF="x3189.html"
 >Some users are constantly being forced to relogin</A
 ></DT
 ><DT
diff --git a/docs/html/install-perlmodules-manual.html b/docs/html/install-perlmodules-manual.html
index 23e1b77b5d6ebb83aa29bd658fb85271f79f05ba..726f5fff853a90cd5a595d42c302161256de033b 100644
--- a/docs/html/install-perlmodules-manual.html
+++ b/docs/html/install-perlmodules-manual.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/installation.html b/docs/html/installation.html
index 5f7783a9c85a384464d828657166058e6c3a1bd2..339e2190adc92c2e3d91245fd0a995fa795901fc 100644
--- a/docs/html/installation.html
+++ b/docs/html/installation.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -295,7 +295,7 @@ HREF="http://www.mysql.com"
 TARGET="_top"
 >http://www.mysql.com</A
 >. You need MySQL version
-          3.23.41 or higher.
+          4.0.14 or higher.
           </P
 ><DIV
 CLASS="note"
diff --git a/docs/html/installing-bugzilla.html b/docs/html/installing-bugzilla.html
index e47d423fbae2222ca5b9d4a57b68b408ddb48f56..da950dc566d86c550b79336f56e434a4dac65007 100644
--- a/docs/html/installing-bugzilla.html
+++ b/docs/html/installing-bugzilla.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/integration.html b/docs/html/integration.html
index b3ead04239a3ceb95f6abfcbdc8cfdaa867ba06d..753444539e3b284c59ba054d599c69ac68d14240 100644
--- a/docs/html/integration.html
+++ b/docs/html/integration.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/lifecycle.html b/docs/html/lifecycle.html
index a81d1a4c3e1239d8f13685a8a8a6b8d5385edb21..54b2388e5c6a1896fe437bf9167c92cf5b3298b1 100644
--- a/docs/html/lifecycle.html
+++ b/docs/html/lifecycle.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/list.html b/docs/html/list.html
index ebfdd014dcc0f916ec81b3d7af4728549d1817a5..145cca62184205685c0c9ed5e13b88f48cadd883 100644
--- a/docs/html/list.html
+++ b/docs/html/list.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/milestones.html b/docs/html/milestones.html
index e75e97bb28d964e3cbecf8c2207ebea8de89848d..9eff55965fbe7f506eb7a7e6f809821f2b088179 100644
--- a/docs/html/milestones.html
+++ b/docs/html/milestones.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/modules-manual-download.html b/docs/html/modules-manual-download.html
index b2537a1f1b56e2df028e82def1467c14c2937e74..ef58b8e5786e6e484293f95dce9fbe8f4856c575 100644
--- a/docs/html/modules-manual-download.html
+++ b/docs/html/modules-manual-download.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/modules-manual-instructions.html b/docs/html/modules-manual-instructions.html
index 8a62089be5657c50bfce7e4985ed8623059823b8..594cd1ec943c51e597d61ce6e1e5abb0bfb44afd 100644
--- a/docs/html/modules-manual-instructions.html
+++ b/docs/html/modules-manual-instructions.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/modules-manual-optional.html b/docs/html/modules-manual-optional.html
index e23b004b126aa5c35e4d8b02c73b948341fa2238..8495f8aeaf750d802aa57a9390fc92acf45977a8 100644
--- a/docs/html/modules-manual-optional.html
+++ b/docs/html/modules-manual-optional.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/myaccount.html b/docs/html/myaccount.html
index 9924f0ed3c7904d2f21c84e516af15ca48b605cc..df21cfcf33ce7b9a6caf0b3e22b42f601ab785fb 100644
--- a/docs/html/myaccount.html
+++ b/docs/html/myaccount.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/newversions.html b/docs/html/newversions.html
index 01abf4261a42895ecce382e62fe37bb79a12c013..e54fe5809e3617a9cf72cd4b74514782c6dcc225 100644
--- a/docs/html/newversions.html
+++ b/docs/html/newversions.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -81,7 +81,7 @@ NAME="newversions"
 >1.3. New Versions</A
 ></H1
 ><P
->&#13;      This is the 2.20 version of The Bugzilla Guide. It is so named 
+>&#13;      This is the 2.21.1 version of The Bugzilla Guide. It is so named 
       to match the current version of Bugzilla. 
        This version of the guide, like its associated Bugzilla version, is a
       development version. 
diff --git a/docs/html/nonroot.html b/docs/html/nonroot.html
index 256057f4f84d21aca8de1cd7755b304c6cf23e79..f68d6b22af4626c167d418fae45cae81eed57e6f 100644
--- a/docs/html/nonroot.html
+++ b/docs/html/nonroot.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/os-specific.html b/docs/html/os-specific.html
index 331f44cda140390a6a35cc4812679a99c5d91134..a4e6ffbf9eb2bccba6967989868194bdfbbb8dfb 100644
--- a/docs/html/os-specific.html
+++ b/docs/html/os-specific.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/parameters.html b/docs/html/parameters.html
index c142dceec8a7adf0bb103b9c461cfc3ff6269a75..7b7305092239bcd3567d7c9c70b0f3e53664f98d 100644
--- a/docs/html/parameters.html
+++ b/docs/html/parameters.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/paranoid-security.html b/docs/html/paranoid-security.html
index 37119b1c4fa7c8b25add7ca1b56ad7ababcf7dd1..2e82cea92455613e53576c10eb4c27276ae5027b 100644
--- a/docs/html/paranoid-security.html
+++ b/docs/html/paranoid-security.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/patches.html b/docs/html/patches.html
index 2bd273fa262573e8c35eeb55c7cf0b168b0373d3..4f38a7484785aa32641a698d3827580d35518782 100644
--- a/docs/html/patches.html
+++ b/docs/html/patches.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/patchviewer.html b/docs/html/patchviewer.html
index 8e266b210b6a1b98bd18345ee8c98a3fcf80814d..42f272e1417189619510db18a9d8eec796ac0d78 100644
--- a/docs/html/patchviewer.html
+++ b/docs/html/patchviewer.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/products.html b/docs/html/products.html
index 2698657f966ef4abf5ad94055ddb08f21e856f46..9c3a6c6822e0479fd9b1b246b714af6e6d1948e9 100644
--- a/docs/html/products.html
+++ b/docs/html/products.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/query.html b/docs/html/query.html
index 98f9cd51b2f786ce406233e283fe13311144e6b3..3e71363d141e35d6bec5d8fb95319c9882671852 100644
--- a/docs/html/query.html
+++ b/docs/html/query.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -194,7 +194,7 @@ NAME="negation"
 >&#13;          At first glance, negation seems redundant. Rather than
           searching for
           <A
-NAME="AEN2286"
+NAME="AEN2279"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -205,7 +205,7 @@ CLASS="BLOCKQUOTE"
 >
           one could search for 
           <A
-NAME="AEN2288"
+NAME="AEN2281"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -216,7 +216,7 @@ CLASS="BLOCKQUOTE"
 >
           However, the search 
           <A
-NAME="AEN2290"
+NAME="AEN2283"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -228,7 +228,7 @@ CLASS="BLOCKQUOTE"
           would find every bug where anyone on the CC list did not contain 
           "@mozilla.org" while
           <A
-NAME="AEN2292"
+NAME="AEN2285"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -242,7 +242,7 @@ CLASS="BLOCKQUOTE"
           complex expressions to be built using terms OR'd together and then
           negated. Negation permits queries such as
           <A
-NAME="AEN2294"
+NAME="AEN2287"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -255,7 +255,7 @@ CLASS="BLOCKQUOTE"
           to find bugs that are neither 
           in the update product or in the documentation component or
           <A
-NAME="AEN2296"
+NAME="AEN2289"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -283,7 +283,7 @@ NAME="multiplecharts"
           a bug that has two different people cc'd on it, then you need 
           to use two boolean charts. A search for
           <A
-NAME="AEN2301"
+NAME="AEN2294"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -298,7 +298,7 @@ CLASS="BLOCKQUOTE"
           containing "foo@" and someone else containing "@mozilla.org",
           then you would need two boolean charts.
           <A
-NAME="AEN2303"
+NAME="AEN2296"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
diff --git a/docs/html/quips.html b/docs/html/quips.html
index fdd3fee0b35ecd34dbc1d0489085ca37aad0e2fa..819ce25fa68bb96866625eb11824133950cd63fc 100644
--- a/docs/html/quips.html
+++ b/docs/html/quips.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/reporting.html b/docs/html/reporting.html
index 083090ca5ebb98c6f2948d8cbc91ce5cb9dd7f16..45f69a066dd1067e96a26d92f5cf7a90b546507e 100644
--- a/docs/html/reporting.html
+++ b/docs/html/reporting.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -195,7 +195,7 @@ CLASS="section"
 ><H3
 CLASS="section"
 ><A
-NAME="AEN2493"
+NAME="AEN2486"
 >6.11.2.1. Creating Charts</A
 ></H3
 ><P
@@ -235,7 +235,7 @@ CLASS="section"
 ><H3
 CLASS="section"
 ><A
-NAME="AEN2500"
+NAME="AEN2493"
 >6.11.2.2. Creating New Data Sets</A
 ></H3
 ><P
diff --git a/docs/html/security-bugzilla.html b/docs/html/security-bugzilla.html
index e9fb68a90eb2ddc171166f76a0452e1e6c96a986..75a5517b18991eb76c062cf1dbaeb9e8cce5e8be 100644
--- a/docs/html/security-bugzilla.html
+++ b/docs/html/security-bugzilla.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/security-mysql.html b/docs/html/security-mysql.html
index 756d22504313eda02d1b3eeeb44a15b0f54ebe35..037df56d3664fc0a43ba31a36c5a20b7348af1d5 100644
--- a/docs/html/security-mysql.html
+++ b/docs/html/security-mysql.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/security-os.html b/docs/html/security-os.html
index 42141a8018df48baab5587fe7e5034591a0d3a0c..985982e220970ea3d68a5f6be5ae3cece613fd69 100644
--- a/docs/html/security-os.html
+++ b/docs/html/security-os.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/security-webserver.html b/docs/html/security-webserver.html
index b6df5cb8b6aa7d8fb626d20ad9c8ef0d3a08d361..6b3ef4fd56cadf5d43bab404a2a0dab647b120c1 100644
--- a/docs/html/security-webserver.html
+++ b/docs/html/security-webserver.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -168,18 +168,6 @@ CLASS="filename"
 >
               </P
 ></LI
-><LI
-><P
->But allow:
-              <TT
-CLASS="filename"
->localconfig.js</TT
->, <TT
-CLASS="filename"
->localconfig.rdf</TT
->
-              </P
-></LI
 ></UL
 ></LI
 ><LI
diff --git a/docs/html/security.html b/docs/html/security.html
index b0ef51cbf9e72fd5b11499e5d2f076d8dc67c8f2..8be81de4044899a501be6fb7b42f04ff64f773b1 100644
--- a/docs/html/security.html
+++ b/docs/html/security.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/trbl-bundlebugzilla.html b/docs/html/trbl-bundlebugzilla.html
index 8557e07cdea2840ee5cf02dc7ed566f4d11b1e52..604f96f35063369434262d87d0ab134ba456eb97 100644
--- a/docs/html/trbl-bundlebugzilla.html
+++ b/docs/html/trbl-bundlebugzilla.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -40,7 +40,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/trbl-dbdsponge.html b/docs/html/trbl-dbdsponge.html
index a643117d2371dfdc84d20b853ab51d60464bb364..2b63ae8b94e6813d3a1f44a33f603b3188b7fb30 100644
--- a/docs/html/trbl-dbdsponge.html
+++ b/docs/html/trbl-dbdsponge.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/trbl-index.html b/docs/html/trbl-index.html
index 43175b6a6e1afe337a6f941c266b5daf0deb581e..1c9491b5baba6cdfda0a4488b3f67563984055b5 100644
--- a/docs/html/trbl-index.html
+++ b/docs/html/trbl-index.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -16,7 +16,7 @@ TITLE="Troubleshooting"
 HREF="troubleshooting.html"><LINK
 REL="PREVIOUS"
 TITLE="Some users are constantly being forced to relogin"
-HREF="x3196.html"><LINK
+HREF="x3189.html"><LINK
 REL="NEXT"
 TITLE='
       checksetup.pl reports "Client does not support authentication protocol
@@ -42,7 +42,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -52,7 +52,7 @@ WIDTH="10%"
 ALIGN="left"
 VALIGN="bottom"
 ><A
-HREF="x3196.html"
+HREF="x3189.html"
 ACCESSKEY="P"
 >Prev</A
 ></TD
@@ -122,7 +122,7 @@ WIDTH="33%"
 ALIGN="left"
 VALIGN="top"
 ><A
-HREF="x3196.html"
+HREF="x3189.html"
 ACCESSKEY="P"
 >Prev</A
 ></TD
diff --git a/docs/html/trbl-passwd-encryption.html b/docs/html/trbl-passwd-encryption.html
index 8cfb2cdff0b1f9ef36e7ecb9b66cde44303038be..5a406c41af3b257a547fd7f51bfc0c69f8c663e7 100644
--- a/docs/html/trbl-passwd-encryption.html
+++ b/docs/html/trbl-passwd-encryption.html
@@ -9,7 +9,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -41,7 +41,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/trbl-perlmodule.html b/docs/html/trbl-perlmodule.html
index 5a56b4d90d3878544154bbf03f66739c811939a0..0e2c60799f1402c3b98faeb3dd56908cd37a5557 100644
--- a/docs/html/trbl-perlmodule.html
+++ b/docs/html/trbl-perlmodule.html
@@ -8,7 +8,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -40,7 +40,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/trbl-relogin-everyone.html b/docs/html/trbl-relogin-everyone.html
index 4fcac489def33e6a34a9c9ddcf74b55ec23ecbea..19b4b89beb8529a9d087a563c92f940854545f0a 100644
--- a/docs/html/trbl-relogin-everyone.html
+++ b/docs/html/trbl-relogin-everyone.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -19,7 +19,7 @@ TITLE="Your vendor has not defined Fcntl macro O_NOINHERIT"
 HREF="trouble-filetemp.html"><LINK
 REL="NEXT"
 TITLE="Some users are constantly being forced to relogin"
-HREF="x3196.html"></HEAD
+HREF="x3189.html"></HEAD
 ><BODY
 CLASS="section"
 BGCOLOR="#FFFFFF"
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -63,7 +63,7 @@ WIDTH="10%"
 ALIGN="right"
 VALIGN="bottom"
 ><A
-HREF="x3196.html"
+HREF="x3189.html"
 ACCESSKEY="N"
 >Next</A
 ></TD
@@ -122,7 +122,7 @@ NAME="trbl-relogin-everyone-share"
 >Example B-1. Examples of urlbase/cookiepath pairs for sharing login cookies</B
 ></P
 ><A
-NAME="AEN3182"
+NAME="AEN3175"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -163,7 +163,7 @@ NAME="trbl-relogin-everyone-restrict"
 >Example B-2. Examples of urlbase/cookiepath pairs to restrict the login cookie</B
 ></P
 ><A
-NAME="AEN3189"
+NAME="AEN3182"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -234,7 +234,7 @@ WIDTH="33%"
 ALIGN="right"
 VALIGN="top"
 ><A
-HREF="x3196.html"
+HREF="x3189.html"
 ACCESSKEY="N"
 >Next</A
 ></TD
diff --git a/docs/html/trbl-testserver.html b/docs/html/trbl-testserver.html
index 6877f8f0d99e9e6cee2e95f51b8d28a458b36227..7cd16a50019e3527383d606e4f227ef3af36a20b 100644
--- a/docs/html/trbl-testserver.html
+++ b/docs/html/trbl-testserver.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -40,7 +40,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/trouble-filetemp.html b/docs/html/trouble-filetemp.html
index b3b105ea09e8b1cc91a2786a7bc1d4cb1a65b818..c58c6dac5b0616d4bf700f7612712a749dd6d2c1 100644
--- a/docs/html/trouble-filetemp.html
+++ b/docs/html/trouble-filetemp.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/troubleshooting.html b/docs/html/troubleshooting.html
index 2061f3a7f12f232e8116a9dc397676742be69b76..e09bce1ce5191483bc4f9473beb77f9b873ace2f 100644
--- a/docs/html/troubleshooting.html
+++ b/docs/html/troubleshooting.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -129,7 +129,7 @@ HREF="trbl-relogin-everyone.html"
 ></DT
 ><DT
 >B.9. <A
-HREF="x3196.html"
+HREF="x3189.html"
 >Some users are constantly being forced to relogin</A
 ></DT
 ><DT
diff --git a/docs/html/upgrading.html b/docs/html/upgrading.html
index 1d8837eed53a600dadc7dd586949e669b5bc1c53..e4b45131403851b894bba88c99cb47613b731211 100644
--- a/docs/html/upgrading.html
+++ b/docs/html/upgrading.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/useradmin.html b/docs/html/useradmin.html
index 8639ca6a529ee9be08fee24d15bc742537d41a8e..e5f010bd1892f8a463a2f4272d3a435449b0dfc1 100644
--- a/docs/html/useradmin.html
+++ b/docs/html/useradmin.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/userpreferences.html b/docs/html/userpreferences.html
index 1fb6ca04dbcae46b137de19ce0742cf2dfa8f0b0..46b63e7883134a5a757acca02d18ce8d9f06a6f0 100644
--- a/docs/html/userpreferences.html
+++ b/docs/html/userpreferences.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/using-intro.html b/docs/html/using-intro.html
index 3a1f11d99bb097d246459a110915b0ffda2cb154..182265b3438d169a7a75409419c428b3d73190e6 100644
--- a/docs/html/using-intro.html
+++ b/docs/html/using-intro.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/using.html b/docs/html/using.html
index b047fac0d067acbfd5aef9dde84957d576f045e8..be4832fcec408ec560176407da4190fcbf0ef38c 100644
--- a/docs/html/using.html
+++ b/docs/html/using.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -36,7 +36,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -171,7 +171,7 @@ HREF="hintsandtips.html"
 ><DL
 ><DT
 >6.9.1. <A
-HREF="hintsandtips.html#AEN2386"
+HREF="hintsandtips.html#AEN2379"
 >Autolinkification</A
 ></DT
 ><DT
@@ -263,7 +263,7 @@ HREF="whining.html#whining-query"
 ></DT
 ><DT
 >6.13.4. <A
-HREF="whining.html#AEN2552"
+HREF="whining.html#AEN2545"
 >Saving Your Changes</A
 ></DT
 ></DL
diff --git a/docs/html/versions.html b/docs/html/versions.html
index ad6f3d2b71b35774171ad2438c92c8b1568591d8..259ba614deee2b1afdb10f0f63aa668f1a6953a0 100644
--- a/docs/html/versions.html
+++ b/docs/html/versions.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/voting.html b/docs/html/voting.html
index d54877fd6650458b3590f52b8893698d3c6de26f..c46bc36dee4de69bce74f092f7dcf233d86c2e82 100644
--- a/docs/html/voting.html
+++ b/docs/html/voting.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
diff --git a/docs/html/whining.html b/docs/html/whining.html
index 76fafbb34a00cb332ddc182941b017f4b520b21b..3164e91877ca72e20c166de811f44d5353972e89 100644
--- a/docs/html/whining.html
+++ b/docs/html/whining.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -425,7 +425,7 @@ CLASS="section"
 ><H2
 CLASS="section"
 ><A
-NAME="AEN2552"
+NAME="AEN2545"
 >6.13.4. Saving Your Changes</A
 ></H2
 ><P
diff --git a/docs/html/x3196.html b/docs/html/x3189.html
similarity index 97%
rename from docs/html/x3196.html
rename to docs/html/x3189.html
index 045db07e945e7aaff4c8b6a962abce9cb6f55a62..6b463e4ca96a64b004053db5d138514835e7ba74 100644
--- a/docs/html/x3196.html
+++ b/docs/html/x3189.html
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
 REL="HOME"
-TITLE="The Bugzilla Guide - 2.20 
+TITLE="The Bugzilla Guide - 2.21.1 
     Development 
     Release"
 HREF="index.html"><LINK
@@ -39,7 +39,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->The Bugzilla Guide - 2.20 
+>The Bugzilla Guide - 2.21.1 
     Development 
     Release</TH
 ></TR
@@ -77,7 +77,7 @@ CLASS="section"
 ><H1
 CLASS="section"
 ><A
-NAME="AEN3196"
+NAME="AEN3189"
 >B.9. Some users are constantly being forced to relogin</A
 ></H1
 ><P
diff --git a/docs/images/CVS/Entries b/docs/images/CVS/Entries
index 0e0fdea65e2d6c632c65d6e305695ced33c1f791..3fa7afeb52608f783a400938fc611bf7b16d62c9 100644
--- a/docs/images/CVS/Entries
+++ b/docs/images/CVS/Entries
@@ -1,7 +1,7 @@
-/bzLifecycle.png/1.1.10.1/Tue Jul 12 10:30:44 2005/-kb/TBUGZILLA-2_20
-/bzLifecycle.xml/1.1.10.1/Tue Jul 12 10:30:44 2005//TBUGZILLA-2_20
-/caution.gif/1.2/Wed May  8 21:16:44 2002/-kb/TBUGZILLA-2_20
-/note.gif/1.1/Thu Aug 23 14:30:18 2001/-kb/TBUGZILLA-2_20
-/tip.gif/1.2/Wed May  8 21:16:44 2002/-kb/TBUGZILLA-2_20
-/warning.gif/1.2/Wed May  8 21:16:44 2002/-kb/TBUGZILLA-2_20
+/bzLifecycle.png/1.2/Tue Jul 12 10:29:52 2005/-kb/TBUGZILLA-2_21_1
+/bzLifecycle.xml/1.2/Tue Jul 12 10:29:52 2005//TBUGZILLA-2_21_1
+/caution.gif/1.2/Wed May  8 21:16:44 2002/-kb/TBUGZILLA-2_21_1
+/note.gif/1.1/Thu Aug 23 14:30:18 2001/-kb/TBUGZILLA-2_21_1
+/tip.gif/1.2/Wed May  8 21:16:44 2002/-kb/TBUGZILLA-2_21_1
+/warning.gif/1.2/Wed May  8 21:16:44 2002/-kb/TBUGZILLA-2_21_1
 D/callouts////
diff --git a/docs/images/CVS/Tag b/docs/images/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/docs/images/CVS/Tag
+++ b/docs/images/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/docs/images/callouts/CVS/Entries b/docs/images/callouts/CVS/Entries
index 6f70ee799186dc2af58086ff79c27f9f5530778f..99b309e82299cfbd3bddcc094c7c4f97a57b955e 100644
--- a/docs/images/callouts/CVS/Entries
+++ b/docs/images/callouts/CVS/Entries
@@ -1,4 +1,4 @@
-/1.gif/1.1/Sat May 17 01:27:53 2003/-kb/TBUGZILLA-2_20
-/2.gif/1.1/Sat May 17 01:27:54 2003/-kb/TBUGZILLA-2_20
-/3.gif/1.1/Thu Jul  3 20:23:39 2003/-kb/TBUGZILLA-2_20
+/1.gif/1.1/Sat May 17 01:27:53 2003/-kb/TBUGZILLA-2_21_1
+/2.gif/1.1/Sat May 17 01:27:54 2003/-kb/TBUGZILLA-2_21_1
+/3.gif/1.1/Thu Jul  3 20:23:39 2003/-kb/TBUGZILLA-2_21_1
 D
diff --git a/docs/images/callouts/CVS/Tag b/docs/images/callouts/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/docs/images/callouts/CVS/Tag
+++ b/docs/images/callouts/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/docs/makedocs.pl b/docs/makedocs.pl
index 2fb0911b2fd4c5011de370abbccd0e2c2420faff..5a001ea06ea2529607276a1c9496fc802a8dd78c 100644
--- a/docs/makedocs.pl
+++ b/docs/makedocs.pl
@@ -52,7 +52,7 @@ else {
 # Subs
 ###############################################################################
 
-sub MakeDocs($$) {
+sub MakeDocs {
 
     my ($name, $cmdline) = @_;
 
diff --git a/docs/pdf/Bugzilla-Guide.pdf b/docs/pdf/Bugzilla-Guide.pdf
index f4a5c4f130ac40b9666a18d31c9d9ac6ce520590..b8419194c0d51477f4cf606ccd385704c2d6b8b3 100644
--- a/docs/pdf/Bugzilla-Guide.pdf
+++ b/docs/pdf/Bugzilla-Guide.pdf
@@ -3,7 +3,7 @@
 << /S /GoTo /D (1.0) >>
 endobj
 4 0 obj
-(The Bugzilla Guide 2.20 Development Release)
+(The Bugzilla Guide 2.21.1 Development Release)
 endobj
 5 0 obj
 << /S /GoTo /D (2.0) >>
@@ -1647,11 +1647,11 @@ endobj
 << /S /GoTo /D [1098 0 R  /Fit ] >>
 endobj
 1100 0 obj <<
-/Length 210       
+/Length 211       
 /Filter /FlateDecode
 >>
 stream
-xڍP�n�@����ܳ/w����Ĉn�:D�HI�T`��qH�:TU���z�{�&�ZB(N����c(,tʬ�7��=k�i�l��Ca���;�����^M�Ef��{+�!W�%��Kw;�};M��q7fF�S������Ӑ?��{��E��W{�{,�m�s��G������pT���_��$U���F��5=/�VG�$����Rdendstream
+xڍP�n�0���A�H�� m������+N��
ЦC���Cx<�����)�[d��0V���+Z;��ȎK|T�����ð���
�Ei!��`��523������(�Po���9�n���s�jq�LH�k|���ȁ2��2��RC��J��2���e�9��}�ifBR8ܤ�1�Pd�1蝽�$6^ש'��!���~�$�~�6kR�endstream
 endobj
 1098 0 obj <<
 /Type /Page
@@ -1670,21 +1670,19 @@ endobj
 /D [1098 0 R /XYZ 71.731 718.306 null]
 >> endobj
 2 0 obj <<
-/D [1098 0 R /XYZ 351.709 667.995 null]
+/D [1098 0 R /XYZ 432.797 667.995 null]
 >> endobj
 1099 0 obj <<
 /Font << /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
 1109 0 obj <<
-/Length 538       
+/Length 540       
 /Filter /FlateDecode
 >>
 stream
-xڍT=��0��+<�@�Hr䏎�k�t(��[���V ��~}�璢C�A�#�H>ҡ	�MJ��VcV�w$���1�P�q�?��K\Wy��1<5��W�'5��<iN�$����4��2�XY����I���:vё���"F��Y���79��,��r����W�
ҖiI�Q�k��e<^!������NK����{�8�I�_���i4��B$#�g��rr�-qU���h ��(��>��jWW���Z��t�m�|
-��1e�}f�h�K��j,��ȡ��g�90��
-�8��ڼ�J,��H}֣�Y;	���e+����7�NA�N��R���z�A�h�zM�g�
d�r6��\D���Ye�<`��i����L9�߽��V�'<�Q�}�JO������X�5�hl��Uk�dEEЛ[<��6~zsu�@�g�mđ���1��A��	��1�)T�L�l|��1:w{~����D�8���?	'�������rIa�8*��${W�[��v��1�*��4�o=~Ň
-W����?*endstream
+xڍT=��0��+<�@�Hr䏎�k�t(��[���V ��~}�璢C�A�#�H>ҡ	�MJ��VcV�w$���1�P�q�?��K\Wy��1<5��W�'5��<iN�$����4��2�XY����I���:vё���"F1
�g�R���γ\l���I
+#�_�7H\~$&IF��z��x�pNbn0�r;8-	�bv4�%�&����������:��-��U�cg�����p��|�t�]]�Žj	�������)�"�ǔ���բ�=.}p�����#�Vs����@J+���k�*��;�#�Y�Ff�$L��G�����2Rߠ:�:�KJ	:�ia���5��!7�A��bsKTw4f��1�K�e�C�3��z|��nlZ���PG���*=u��lo�ldQ� ���jW���Aon�����9��������G'�3��R��&<>�|�P�3ղ�E������q����º�$�֞?����%�Q��Ò�]�n�6b<�y��ԫ���ܾ��*\���+��ų*xendstream
 endobj
 1108 0 obj <<
 /Type /Page
@@ -4039,28 +4037,28 @@ endobj
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [119.552 217.42 245.727 226.331]
 /Subtype /Link
-/A << /S /GoTo /D (2070) >>
+/A << /S /GoTo /D (2063) >>
 >> endobj
 1482 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [528.02 217.42 537.983 226.331]
 /Subtype /Link
-/A << /S /GoTo /D (2070) >>
+/A << /S /GoTo /D (2063) >>
 >> endobj
 1483 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [143.462 204.468 276.86 213.38]
 /Subtype /Link
-/A << /S /GoTo /D (2097) >>
+/A << /S /GoTo /D (2090) >>
 >> endobj
 1484 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [528.02 204.468 537.983 213.38]
 /Subtype /Link
-/A << /S /GoTo /D (2097) >>
+/A << /S /GoTo /D (2090) >>
 >> endobj
 1485 0 obj <<
 /Type /Annot
@@ -4615,14 +4613,14 @@ endobj
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [119.552 433.753 212.542 440.727]
 /Subtype /Link
-/A << /S /GoTo /D (2385) >>
+/A << /S /GoTo /D (2378) >>
 >> endobj
 1589 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [528.02 433.753 537.983 440.727]
 /Subtype /Link
-/A << /S /GoTo /D (2385) >>
+/A << /S /GoTo /D (2378) >>
 >> endobj
 1590 0 obj <<
 /Type /Annot
@@ -4769,28 +4767,28 @@ endobj
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [143.462 289.35 243.636 298.261]
 /Subtype /Link
-/A << /S /GoTo /D (2492) >>
+/A << /S /GoTo /D (2485) >>
 >> endobj
 1611 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [528.02 289.35 537.983 298.261]
 /Subtype /Link
-/A << /S /GoTo /D (2492) >>
+/A << /S /GoTo /D (2485) >>
 >> endobj
 1612 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [143.462 276.399 276.582 285.31]
 /Subtype /Link
-/A << /S /GoTo /D (2499) >>
+/A << /S /GoTo /D (2492) >>
 >> endobj
 1613 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [528.02 276.399 537.983 285.31]
 /Subtype /Link
-/A << /S /GoTo /D (2499) >>
+/A << /S /GoTo /D (2492) >>
 >> endobj
 1614 0 obj <<
 /Type /Annot
@@ -4867,14 +4865,14 @@ endobj
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [119.552 198.69 235.586 207.601]
 /Subtype /Link
-/A << /S /GoTo /D (2551) >>
+/A << /S /GoTo /D (2544) >>
 >> endobj
 1625 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [528.02 198.69 537.983 207.601]
 /Subtype /Link
-/A << /S /GoTo /D (2551) >>
+/A << /S /GoTo /D (2544) >>
 >> endobj
 1626 0 obj <<
 /Type /Annot
@@ -5123,14 +5121,14 @@ endobj
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [95.641 667.333 312.018 676.244]
 /Subtype /Link
-/A << /S /GoTo /D (3195) >>
+/A << /S /GoTo /D (3188) >>
 >> endobj
 1698 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [528.02 667.333 537.983 676.244]
 /Subtype /Link
-/A << /S /GoTo /D (3195) >>
+/A << /S /GoTo /D (3188) >>
 >> endobj
 1699 0 obj <<
 /Type /Annot
@@ -5592,22 +5590,23 @@ endobj
 /ProcSet [ /PDF /Text ]
 >> endobj
 1800 0 obj <<
-/Length 2508      
+/Length 2506      
 /Filter /FlateDecode
 >>
 stream
-xڭYK�۸��WL퉪�(>E�{��뉳�+�8�Jr�H���$����ק EjdǛ�\e�Fw�����&��M�E
-?�>Lv�Mս�n��r�"��n&y�+��<-�}��lf^߽ؾMқ$
-w����~��a��n��oqrҬ6IQqȿ�zp<�k�����j�����Ih\�I����'aT$/G!o�i���Q��{�߯�(ЦN��+n��~�zYI�h-���(�u5t�w<�j�����(��U��1S�(�6�_�����F���*�a������_�mŨ�wF���i�y�F;�����@%h���v1�4����I>LZ��ш�ɚ�N��x��.��W+{6H2���6<�t��5,}�@�
}-���e�:Ϭ�/�n���o�����8]$�]��W��J�V���~|Z�qH��F
-�e�v#A����1	�_�L;W�8�x��
��~_*��E^�g��{@?
-#��-
-��2�G&>(��׼�]����?X�(+�f�snj�+�+�x�Q�?��nޔHyt$'�[��bC`�{�����U1��$&dګep��t���gP��ڡ��8ó���nJ3p�p��&/�p��_�D#�f�ęh���K�N'��ꑕ�|�;�3H^�7u�<��})u��S�&��0�
-�IH�iJ|�ЍY<�y�D�^:���9HKP�5CWu\!�j������(]�T9��D�)n`͇\䐯	d����~#[�1�VU�v�
-L�����{�6x�S+ňL��r`��LH��mх_)��������Г�P��?��e	 �*��.�p�t6(h.�2�����?�>��+�3� � �JBu�C�r�h[�	�Y���yy���J#�T^��*�8�),�g�Q�s��;����=̌��A'(�%|%�g�)�p���'@T=d0�R�/�F\��E'����J��'�d�fr%��G�88	�z�ٝf" f�c=�>?^L�;hK�-YJV@���Y9n�&�z%�Ŏ���Tf����Fy�T�v�����X:�� Z��l:���/)�<Bf�`t%����8��S�C��t�sNy/:Jَ���TU
-�� ş�g
�LІ�5ԖǶ�C[�C#B���y$<;$[��DDaB�����E�ÀJ��H��+^w�N��a�����E)��yUb�1tQ�l��b�ӼU<��H�ք:���cjyv�P�D.�N:*{
-��-�(H�N�	A���6n�����$
H�T���e̎�M�b�^R`fl�Z��e)Gr� A��^No�t{
M�Z08�5�y��=gh$C���D�O�1D~Hۼ�A�I|F�#z�~�F�guTĦ�M�0њ�O�-��2N�V�n&��v�<O�.Y{F�V���Y	iΗȿ�.��gc4��+l4�8-�.b��J7LNJV��ǺQ�Z�Rpk����� �~��}D֔�^x�y?qCMK��`i����Vp
��Y�K�`�(����a�\��.8���'���[�k���0�L�E	����T ��k��Mf������`�ŋ�
-�i��jwS�+q�Ws�F���H{���p�H p��9�54��v������uزC�tS���C���Dx�i��
R,�_k�v�gs
���{/� 	�G��e��],܍���L�o�!���y=^��,�UA��I�⯚�)Y�n3�"��&��,���C19�J<<{����
ı9^�xm��J!4��Z~���^>�<�Wbk��Z�&��H�����)����|
-�������*��s���;x�{|��0�4Ν^n���!�)���%�nh͜;�������c�_�yϯ�ͧ��M��Z/��[i�)F R�p��]�{�������N/��V_lظ��o@�iٛ�pJ�ħ ُ44�B�rz6.�׹}��uk�t~u@*t�v�<Jc��V� �R�p���)���w�p0�a�fzr�`�2y��8D�TrpA��Fa��Z%:�ŝ.��"ٺ��-q���'�<�
�����H�qv�q�q����
k�I���sD=.+�����b�����F��^cϿ�m(��;a���V�z�Rk_2�.��2���`�@~�BU�_�I��1*�[D�5/�Kwi�ke�]�	�g��̕8���i��0]�J���~������'nP^��xD��ѳCBf�k�	g�v���h?w��G�E��q�NY1�)��W���%���X��ͼ>zy���ӕ ��V��N������r���6n8b!����{���j�kF��r�xf��MBa�w���V�B�[j�{�o��7�}?���8�<��w�a����,�_V�0�ȋ���\�y2��g�����c9�ؘa��>�����?�(i(������1���z��aW�z�͙��~Bv�jP��W�I
-u����?&=��o�HB>endstream
+xڭY�s۸�_�'jF��/��=%����5�i�t:m ѐ�
+��ݿ��R�,�����X,v��~���6�/�ʣ0O�'ޅ�6�*�7���ܾ�<G�݆q����*K�pW$W�����o�7qro�m����l�0N�W��_��Z�4�U�A�﻽��keyt۫J.�~�{�ae(t��p��$/
+!������٨C��u�xh�
+�t��W�p�M��8
+3�dy��&�tٷ�s<�%j؜4��o�lS."���o6����t�̿��<����@�{/�}��j1��Q{4�w�x��Z�����@�p<P���dx�mć�(M���㯒���Qp0�s�b���;�p�͂%�Uʞ��&�j�
�[]��g�u5K�:g}WI3�x���3뇳��������~�NjĻ�����WU��J0:��ϋ(�i��H���n$���“F0&a�+�i�b���Q�Fw!��o�K���%[q�I?�G��0�oP�7��?2�Q��G��w�"=!D�`��,q�]N�A���.��Z�:����)���HNF��Aņ���0{/�/��b��QLȴw���^��
��<�TW6}%�a�gy����f���P�UV��v�����Մ�3�$,��������+��\w����o�x���\�_��U�&�f��MBjM�C7�i�{dA-0�Nx�cX�g/-A��]�a�p�Tw`&�R\�t�S�,s��_���5
+pY�C^�t�1���J6�b��*y���v9�7wPm���F�)�E���4I��ۢ
_)(>�/�/?)[�'�Z��(0,�@,��Q�]����lP�\8�e2-�`}����c�^2A����X�<��4�#�zU8�r_�
�Z��D�U�pSXH�d�에��ph��{����VPҋ�JH�S��"�O��:8HoD��_r�8S�V$��@����v��R��Qp�uҳ;�D@�,.x�r"}z����זP[��4�"��)c�Ű=]�pg;�ҳS��1?��S��s`P6ڑ˻��l���hx;ܳiuחp4�˾�,�,��ѥ�~���B�N�݅�O9�h)�[F(��SU�7�*�4���2Af�C�PY�Z�M��E�eZ�����l*�Il2n#X*�S#=0/x�;�:�����~�%���E�����E5�B�5�L�V���[�HH.h~��7R�Y���RC��<8�d�)��7آ �:�'j�ڸٲ�BL�4 �R9$B�!;
+7_��I���eT`+I�B��ɍ��}j{9�M��%4�k���טd�w �����}|<t�>���!m�aB$�q��A�k�3���Q�f
+4�H�>�4L��86Z�����=�A�4uкd�)e�'Z���f%�9_ ���V��ѬƯ��H�4纈�~,�09*YJ^�F�+�K�����f�
+�8����YSR�z����
5-q"���rjkX�5�&�.��1���JG��M|���[����3na"���¸3�g%��c��N�@�4�����o���*����1�M)/�!^�y��#���"��"I���R��S>��|+��k�CX2��'�a����JL���%��@}����6H��^��m���S!���"�A/=����a�1��~00���	3@�O�!���\���ۉTy͞
+����Yo�.)^�f�2nP8��e�'�)^�yh�rx�p\�>\���T7<���&v.�'��J\�v^J����|�bf���+y��3�ѡxH�+����8<{��gz�g/^K����z�����B����)tBK�ĸ!M�,��_���
+�{yן?-VE��K���bh��1��C*�����qϸ?���ꙙ��
k�6��7��rN	��D#���&PxAH�O�y��:׏r�n�z���/H�.ݮ_Fh����DQ���А`(e�8�{b�s�,����8*L����b*�
3� �c�0�p�ĸ�wy���8d�w6�=��+�����[��W����$���G���
+i	������9�����~�o0���x�R�n-���_�6�����Cj#���C��o�tK�ЊK�e�i�� 9B��
+ůi��;��5"����m���zD�e�dd8�5�҉+q=��3a�֥h�����I�ܠ�2r&�>!1�c��̂�����݈�Y�~�*����$�bxO$/��-��Kx�����x}�����	�+A��%9��8�9������Gm\��B�K�����Sլ�z�-�kxb���Ba�w�����L�
���7Q���~�؝C�J����;�@�Nd�/���Y��o.�2�^�����e��俱T�L���d�Q�H�Ɵ��4���^�S��~���I�����>=���B_>!��5(K���(�:�sE��^j�7��A�endstream
 endobj
 1799 0 obj <<
 /Type /Page
@@ -6121,18 +6120,18 @@ endobj
 /ProcSet [ /PDF /Text ]
 >> endobj
 1927 0 obj <<
-/Length 1961      
+/Length 1960      
 /Filter /FlateDecode
 >>
 stream
 x��Xݓ�
���O�<����L�Nһ|M�����t�LG�i�s�GHi}�__��d���N�З�H� �����"�O.2)��h-�4Y�իp����_I�X��j"��ë���x��4^<�J�b�-�8y-���|(�N��*J� �~[��8M�'��~�os<�_�{��a4�ęX��~
23Ǣx!��U��
3�+�=��ޡ,^]�)�&�M�7�Fg@KvY^�XE��Q��e�
 ���⾧"�w�U��۶���.��VoId�Xb����M�hZh�=����$P�[�k\��z�^ց�}\�$��	��R�0hz���x&I�����~ոP�uB�jjM�����1˝]�+���ڪ��v����!\�#�$�X�!��P�t�$o�]����~
-��/�������yXfa�]�)i��LN}���P�.�WT�ݯ��*
�`���ꊅW�΀�
�����mS�a)�#�P,�0�-AN��S-�~x?���JKk��h���(	~è4ő���C����G�S��k?��?�N�4	�_�(�J��%C���ޒ�oϐ���rlq,�X(ɻ�g�`���l��>F^B\�X��T�^�_�N�)u����w�mQ�eL�uN�-$'u6�.0�� �a"?�t�z<Z�r]c���X�⹢���y��'If�C��L%���#�0[�6N3�ꇚ�7��{m>2�,�npͣ	�nؕתBL^n��H׀�p��$�q%y�
-ω%H��#jTf:�1	t�SK*5����|r{��H��pBæ�(���m���44—L|\����(NDy(꽦���<�{�_e��.���]�|�S��!�1L���9n���;B�w��%W�a]N�z�MaCY��0�n���i;:F�'���+^�$�9uʦޙ}o�<�Tr���W�"���P��"�_�1��D�%�($��V@B��Y�u��^AM����Y]�+�Cb�1ї���e�?�I�7�=��0C�`H��՛��k �������$�O����Qy=?-�$�z�`œ��!����=Nu�6��U�Pռ5�m\��H�P��d���!َ!���T֐�8:�v�1�h�U�88t}Q1
]Ϊ�<���o���gj2d�R��&�w��%��U���T�9��Ѵ6#��6���:���ڌ,�ͤcR�q�6#�6�ImF��8�k3$Х<�[�рk`h/Hvr�[���ڸ!�'�~�)&�hg"_,�^�MD�p��-\�����9\�-V㣍�.�.`p�
-.��B)�u�:P�3�H�?b'�ac�C�˰1>�`r�LG؈4~Z��Ć���
,�Q�������r�h�	�������a܊��㤏%]��h�=�
-�����X��?��:�˱LUr�*��Y
i�Q�WPl�CcJ�����Z�1Ƞ;Y����x�E����t�S�
-����v�Spj�}]��y~�^�ywZ�����߃�j"4�/p�������s?��}�9�Y�&M��^�Sk����]���H]��� pe��?"��d|C��'�Z�/w^XS�:��{|M���6U��n� ���sE��"pЃ�
1i�R�{H#hCx��� �fE�##RX����F��Q3�lۗ=�P�w=���(��+M��=�2g\h��( ����C{|1���	����NPy�8+o�����dq��s����l�G��`���8�B�LB�V[��_u8|2���{G��L#��G������&�dm@�nJ�c
�8���&�^3аB�GR5�r���(��_,%ʽ�\;����
V?��k�?LceEӘ-�Vs�;�戒������8C
-{����tKp��H^���{uG��B�w$�—;�Gr�#]�����z7&��P�?*��^��y�X�k)�`���~V�-�a��endstream
+��/�������yXfa�]�)i��LN}���P�.�WT�ݯ��*
�`���ꊅW�΀�
�����mS�a)�#�P,�0�-AN��S-�~x?���JKk��h���(	~è4ő���C����G�S��k?��?�N�4	�_�(�J��%C���ޒ�oϐ���rl�pJo:����09n�x	a�S��R�z�i:���E.JD�Kޠ�E��1��9%����٘��P���#F��t�9��d�u�գ&c��NJz������P�yU*2�������l��8�XD��j��Tl����<>c�ػ�5&�aWZ\�
+1Gxe�OЗ"]8�	K��[ĕ�Y�*<&�h ����Q�� Xw�$́NU,9�@�4's;��u6���	
�:���r��A���Ј^2�q��R�8塨��&�>�$�|�]3l���{we�9O����0Q
+�g渝�����3ܭޖ\4�u9}��#6�
e1ĺ#�p[�A�ڦ��A���ήx-�,��)�zg����S1�]Rl�^q�0_�.C=�F��f<za����������X	��g���z5-`�"��gu�P�}�D_x��VؖM�&����PtD��!��!��Vo.򯁀�V�O ��8>�>2<GI������`�m�	sr$�����8��XVW9C=T�֔�qͮ#�C�����l�d;�xX��RXC��X�Iưc��vT���t��E�4t7���`�⾁��)ɐ%J哒<ܛ�ap.w��WmnSi0��^G�Ҍ��Ҍ�G���J3��4��IiƁ�Ҍ��Ҍ�&�E�4�/͐@���Rl�D����� ��Mn=�i�Cjㆬ���񢘄󚝉X||�d{m7��…R�p��g�D�p�X��6�#�Ps���\�+�Pj��.���@�k�P� A��@��3��9Z0�/�����	2a#f��i�"ޣ7��Gm�ۃ���q��&�����z�q+�cG��>�t��-��+x�/���@b������TP�.�2U�
� gg5�
 GE4^A�-�)Y���nk�� ��Ld�{���;�N}*�"p���)ZL��qx��u�����rx,��i���z}2�������"�_��og����ɋ�Xdfm�4	�.x@N��Қ�st)VP�"u��'���I�����I�
�c�HCh���yaM��lS��1�s��T�ƺ����Ǯ�A���AJ6Ĥ�K��!�8�
�%
+J�hj����Ha���͂kD��m_v�$B��� r&�p��4�z��L˜q]���â���oN���ŀC��&���:A=�㬼A���*�����O{�=0����}w ��92	�[m��K|���������3���9܂�J�������)!�5�S�(c�盄{�@�
+�I�P��/�H���(��Op���.~6X��mj�l0��Mc�<[�쨚#JN�G���#�)졲ގ�-���#y=�;���~]ߑ<
+_�H��tAcl��ݘ܎n@���\�2{���Ed`I��pԂK��W9���0��endstream
 endobj
 1926 0 obj <<
 /Type /Page
@@ -11950,16 +11949,18 @@ endobj
 /ProcSet [ /PDF /Text ]
 >> endobj
 3334 0 obj <<
-/Length 1926      
+/Length 2082      
 /Filter /FlateDecode
 >>
 stream
-xڥYM��6��W�V9��")�#@Q�M�^
-4����,˶Y2,9��wȡ$ڔ��>�����7��L>��"�$�pa	a�Xd�W�bO~}E5b�!+�����=狄$!_<n���"�Ă-7{����O���>�wߊ�L��c��OE{Y���۫_{N�#��|֬c����F�Q!
��燄�X�.��b�%^�n���������r��	��S=��I�KX����u�c�>���v[��X>ܽ��O��v�S�u���2o���a0���2��x��'�	��K�z��ZR�]�[N,'R��}�^�#�X�Y���E�}�^?�f.���ʎMqʳ�>]�Y�ۙ�}}.��U�;ם���ԶnO��3����2�="�.WKIU�}ȳ��H\y�V^c=OKJ��7��%�h�Tvʫ��`w�^���I}n�`g?_Y4�5�.Z
x�['ܦ�f����6�_���0s��-P�^J1�}/�Dz��6���K�/��5���j�V��=����Ҋ����\��� �₡�$5\��48�i_d{|��l��W����M���80�Fۀ���A��cZ9�i��%�]Ň�or[M�T�F
���LƘ9�W8<Sk���-���
=������ܧ�n	b>�{�d�w��M�"��O���m{|{w��J��P�>�����;p�rܿH�]�S��QM
�P̖�Z'�C-�X��
-:j�I��b�*uQ��0V,$!����aAp
�!��b� ���Cb��ű�ۧ��cK��'��uQ���5vf� 
�du1B!�0V�y,�w��RY]�u����vi6ٷ��[RN�`�i��HM/qp��+�^��)h����.��,��h�W���r\	>��q�dr/��Y�W��G��֊��PۊR
-�a�$_$����RZ�~�%sL���e��\��=�ܦ��nd@��!��o�Ƭ���ۉ�
->���2d���PkSeG�x]&�b�$���\i$ �8J�h�EdB�:c�֢�6����@�C����~;�W�*}�*�E5V\������\(�7�}�������v%e��
Y��m4��\C��T�l�~�C��{�%&�CYg_t���A�	�C���kr,���&�[�����e�@��Y]m���)߆	��`޷fҷ�������n��`8����qt��M����r7��h��td��fk���`�������?O��M���kB+�5��^=��w�ܤm���d�Ce��̤5�%D��-D���������d�XO�V�9�ʉ�D�N0�N��l6�lv�	��G���L�qH���� 20��!�4B���۠2ٟXwp��iΊ/���ǎ���4Ag�e`���A�asJk��VZ&���M���Jkx9u@��]��F~ҧG(�-wuLP��qoi�j�Xκ�d�W	��a4B5�*=b���������]��3=���x�f��r������n;���S�H&���]W��Fi��˺��2�N�}1�,�ME+�ރh�,30�Ѫ!�h����j�[�j��.�'=M�K��������Q�q��2��ߦB�%	$_>+Y3%����S�#�dM��.���g.3�
qy�fs{�f��`�?������&rC'�=;�]�}����q��8�lj�� a<_+���A)b�͙"F�oS��~����M���Nݿj'3C����cb�LƄ��b�fsDŽ�nDŽA�]�A��4�$��'O3Q4wG�<B�,�G�o�f��Y4�ߠ�����)�}�����
-���6g�������"�����I��L�F#\���ܢ��-��NѴ��X�^"��ټh̤h4�%��-������1�i4����X��u�H�?�������Ruendstream
+xڥZߓ�6~߿�o�Sk
�[�J�$���%U�SwI�J��&���S�_-�����< �O�Z���
���G71%q���Mvy�oNp�wT#v�30/��~�MJ�(ؼ7!	��&I8ۼ~��?�k�7�����Ne)�ק<�5Ew�������<�I��f��.lhL�Ұ~}~D(M�]!	�1q��gp/߷�H�{��
+���
+#9���)	b6�z�E+�[X�	���_�.��s��m���ƫ�|��}]����tkDW�v�X�y��G��'�qe��9o�&�cO`#�.��R�ݱ[N,'R����бw-E��vQa_w�7��[ꡥ��P4y���}�ELgn����V����F*_�}�m=6��3����6�="�.WKI9U�}�3qk%.���(����-������[��*k�+��]��Z:ܩo�{��+��{�z�EB���넟�:�������F��\?f.�*8K)���e��Z�����g�T��qX��QTm'`���sɻs-�H(�^�e�^
�+.oR�u�g����Ev�;�v]~��������;�Cj�
�! �}5	;��C�f������xS�Mn��7�jݨ�"u���3�
+�{j�r>�	r#EC�-�=wS�A̧\w���n'��Ogv�7��箻~xz�x%Lr��Z7r�'��	��_
$٩��8|���y(f�c��饖Q,[E���d�]	���(dH;��Fq���0|���bm� �M��蝋k�?ߊ�-� ��Rfp쭱3���ip��Y��ḍD�繬�cvHeu.������<�lr�P+SҀrø5�c��^
+�M�OXA�K������
dHe��V�K>j�w���J��G�c}#�{�"Vς��Je[;�b�Am;JI�q�5�|�`�.>Ki��9T���Udg�˄������ܦ�L72�
���H�7Rcv���t"��Oy6>a$$��TFA���i��E>���Vڄ) ��"�@qD�P���ZC��F�A6���8d�|x�'��i������W���(���J�?���"���{}���ӕ��	Tr�|�h����n�����$���e[��2�>�-ň0�_�:�Sg?�5�?�:�}C��]{��dq����!���hD��ձ8}c�D��S�L\��Y��F�$i��%i�[�4�?V�O(D]��� :�p��t]�A��� uj����GFKs�Q�
#M�lX<5w(�0��-��~��/x�,.ZC\��܋��-�/�]0�3�ć�Z*7]���9(�|H�p5��B��G�͐9h�|@&��T�x��∧���#�H����20K��!iͰ9�5�>�����8y��7D�5�4��8����7�E�1�]=S$?*̧h
��]�i�ܕBq�sl���C��wQ�!���+��C}8�0@}��,*�,j�#���f2U_��Z`6ڠ^���+�V��r6�e_���he�@]�����V���6���/���[��
+-\ѫ�(l�$%��o#��b���w��j1�r��^m6�`mv[��ׄ,KSx�^00K^�!/̰9�0�ny����"�x��$r#��_ZƓSq��)�w�?���w���.�%$
+�kE��"z�#Ḛ9S��4E�����\n8�����T��FP���$z|+�cb�,Ƅ��b�fsDŽ�nDŽA��2�.w�ʋWk��P2k��b�����<��
jg�<|��/ O��9i����w����!�Кas���4�L�����R��b`�#��!sJf�|���)�.�\K���kD�}�'�/XfQ4������n��`w�F�N�Hf���C�[�ZT
+�x��tK})����(Ŵ�?w�mu��sف��s}����c�<���kS_�Խ{�ꫪ[���_�*���n�h�U'KNi�}������P6�~�(��\���8-� 9�(�;�	� J���E��\E��S9e+t=�m��{�rCL��Qʅ�O���Ptu�Y�F:a怦������?(F�����%�g�$�c�_:߷���dyendstream
 endobj
 3333 0 obj <<
 /Type /Page
@@ -12041,333 +12042,312 @@ endobj
 /D [3333 0 R /XYZ 147.218 482.835 null]
 >> endobj
 3352 0 obj <<
-/D [3333 0 R /XYZ 71.731 481.396 null]
+/D [3333 0 R /XYZ 76.712 464.902 null]
 >> endobj
 3353 0 obj <<
-/D [3333 0 R /XYZ 91.656 469.884 null]
+/D [3333 0 R /XYZ 81.694 451.951 null]
 >> endobj
 3354 0 obj <<
-/D [3333 0 R /XYZ 135.691 469.884 null]
+/D [3333 0 R /XYZ 92.483 451.951 null]
 >> endobj
 3355 0 obj <<
-/D [3333 0 R /XYZ 135.691 469.884 null]
+/D [3333 0 R /XYZ 71.731 451.763 null]
 >> endobj
 3356 0 obj <<
-/D [3333 0 R /XYZ 215.989 469.884 null]
+/D [3333 0 R /XYZ 71.731 451.763 null]
 >> endobj
 3357 0 obj <<
-/D [3333 0 R /XYZ 215.989 469.884 null]
+/D [3333 0 R /XYZ 91.656 439 null]
 >> endobj
 3358 0 obj <<
-/D [3333 0 R /XYZ 76.712 451.951 null]
+/D [3333 0 R /XYZ 71.731 436.843 null]
 >> endobj
 3359 0 obj <<
-/D [3333 0 R /XYZ 81.694 439 null]
+/D [3333 0 R /XYZ 91.656 426.048 null]
 >> endobj
 3360 0 obj <<
-/D [3333 0 R /XYZ 92.483 439 null]
+/D [3333 0 R /XYZ 135.691 426.048 null]
 >> endobj
 3361 0 obj <<
-/D [3333 0 R /XYZ 71.731 438.811 null]
+/D [3333 0 R /XYZ 135.691 426.048 null]
 >> endobj
 3362 0 obj <<
-/D [3333 0 R /XYZ 71.731 438.811 null]
+/D [3333 0 R /XYZ 76.712 408.115 null]
 >> endobj
 3363 0 obj <<
-/D [3333 0 R /XYZ 91.656 426.048 null]
+/D [3333 0 R /XYZ 81.694 395.164 null]
 >> endobj
 3364 0 obj <<
-/D [3333 0 R /XYZ 71.731 423.891 null]
+/D [3333 0 R /XYZ 92.483 395.164 null]
 >> endobj
 3365 0 obj <<
-/D [3333 0 R /XYZ 91.656 413.097 null]
+/D [3333 0 R /XYZ 71.731 394.456 null]
 >> endobj
 3366 0 obj <<
-/D [3333 0 R /XYZ 135.691 413.097 null]
+/D [3333 0 R /XYZ 71.731 394.456 null]
 >> endobj
 3367 0 obj <<
-/D [3333 0 R /XYZ 135.691 413.097 null]
+/D [3333 0 R /XYZ 91.656 382.213 null]
 >> endobj
 3368 0 obj <<
-/D [3333 0 R /XYZ 76.712 395.164 null]
+/D [3333 0 R /XYZ 71.731 380.056 null]
 >> endobj
 3369 0 obj <<
-/D [3333 0 R /XYZ 81.694 382.213 null]
+/D [3333 0 R /XYZ 71.731 380.056 null]
 >> endobj
 3370 0 obj <<
-/D [3333 0 R /XYZ 92.483 382.213 null]
+/D [3333 0 R /XYZ 101.619 369.261 null]
 >> endobj
 3371 0 obj <<
-/D [3333 0 R /XYZ 71.731 381.504 null]
+/D [3333 0 R /XYZ 71.731 367.104 null]
 >> endobj
 3372 0 obj <<
-/D [3333 0 R /XYZ 71.731 381.504 null]
+/D [3333 0 R /XYZ 101.619 356.31 null]
 >> endobj
 3373 0 obj <<
-/D [3333 0 R /XYZ 91.656 369.261 null]
+/D [3333 0 R /XYZ 142.884 356.31 null]
 >> endobj
 3374 0 obj <<
-/D [3333 0 R /XYZ 71.731 367.104 null]
+/D [3333 0 R /XYZ 142.884 356.31 null]
 >> endobj
 3375 0 obj <<
-/D [3333 0 R /XYZ 71.731 367.104 null]
+/D [3333 0 R /XYZ 76.712 338.377 null]
 >> endobj
 3376 0 obj <<
-/D [3333 0 R /XYZ 101.619 356.31 null]
+/D [3333 0 R /XYZ 91.656 325.426 null]
 >> endobj
 3377 0 obj <<
-/D [3333 0 R /XYZ 71.731 354.153 null]
+/D [3333 0 R /XYZ 71.731 323.269 null]
 >> endobj
 3378 0 obj <<
-/D [3333 0 R /XYZ 101.619 343.358 null]
+/D [3333 0 R /XYZ 71.731 323.269 null]
 >> endobj
 3379 0 obj <<
-/D [3333 0 R /XYZ 142.884 343.358 null]
+/D [3333 0 R /XYZ 101.619 312.474 null]
 >> endobj
 3380 0 obj <<
-/D [3333 0 R /XYZ 142.884 343.358 null]
+/D [3333 0 R /XYZ 71.731 310.317 null]
 >> endobj
 3381 0 obj <<
-/D [3333 0 R /XYZ 76.712 325.426 null]
+/D [3333 0 R /XYZ 101.619 299.523 null]
 >> endobj
 3382 0 obj <<
-/D [3333 0 R /XYZ 91.656 312.474 null]
+/D [3333 0 R /XYZ 145.653 299.523 null]
 >> endobj
 3383 0 obj <<
-/D [3333 0 R /XYZ 71.731 310.317 null]
+/D [3333 0 R /XYZ 145.653 299.523 null]
 >> endobj
 3384 0 obj <<
-/D [3333 0 R /XYZ 71.731 310.317 null]
+/D [3333 0 R /XYZ 177.534 299.523 null]
 >> endobj
 3385 0 obj <<
-/D [3333 0 R /XYZ 101.619 299.523 null]
+/D [3333 0 R /XYZ 177.534 299.523 null]
 >> endobj
 3386 0 obj <<
-/D [3333 0 R /XYZ 71.731 297.366 null]
+/D [3333 0 R /XYZ 209.414 299.523 null]
 >> endobj
 3387 0 obj <<
-/D [3333 0 R /XYZ 101.619 286.571 null]
+/D [3333 0 R /XYZ 209.414 299.523 null]
 >> endobj
 3388 0 obj <<
-/D [3333 0 R /XYZ 145.653 286.571 null]
+/D [3333 0 R /XYZ 241.294 299.523 null]
 >> endobj
 3389 0 obj <<
-/D [3333 0 R /XYZ 145.653 286.571 null]
+/D [3333 0 R /XYZ 241.294 299.523 null]
 >> endobj
 3390 0 obj <<
-/D [3333 0 R /XYZ 177.534 286.571 null]
+/D [3333 0 R /XYZ 76.712 281.59 null]
 >> endobj
 3391 0 obj <<
-/D [3333 0 R /XYZ 177.534 286.571 null]
+/D [3333 0 R /XYZ 91.656 268.638 null]
 >> endobj
 3392 0 obj <<
-/D [3333 0 R /XYZ 209.414 286.571 null]
+/D [3333 0 R /XYZ 71.731 266.482 null]
 >> endobj
 3393 0 obj <<
-/D [3333 0 R /XYZ 209.414 286.571 null]
+/D [3333 0 R /XYZ 71.731 266.482 null]
 >> endobj
 3394 0 obj <<
-/D [3333 0 R /XYZ 241.294 286.571 null]
+/D [3333 0 R /XYZ 101.619 255.687 null]
 >> endobj
 3395 0 obj <<
-/D [3333 0 R /XYZ 241.294 286.571 null]
+/D [3333 0 R /XYZ 76.712 219.822 null]
 >> endobj
 3396 0 obj <<
-/D [3333 0 R /XYZ 76.712 268.638 null]
+/D [3333 0 R /XYZ 81.694 206.87 null]
 >> endobj
 3397 0 obj <<
-/D [3333 0 R /XYZ 91.656 255.687 null]
+/D [3333 0 R /XYZ 92.483 206.87 null]
 >> endobj
 3398 0 obj <<
-/D [3333 0 R /XYZ 71.731 253.53 null]
+/D [3333 0 R /XYZ 71.731 205.462 null]
 >> endobj
 3399 0 obj <<
-/D [3333 0 R /XYZ 71.731 253.53 null]
+/D [3333 0 R /XYZ 71.731 205.462 null]
 >> endobj
 3400 0 obj <<
-/D [3333 0 R /XYZ 101.619 242.736 null]
+/D [3333 0 R /XYZ 91.656 193.919 null]
 >> endobj
 3401 0 obj <<
-/D [3333 0 R /XYZ 76.712 206.87 null]
+/D [3333 0 R /XYZ 76.712 175.986 null]
 >> endobj
 3402 0 obj <<
-/D [3333 0 R /XYZ 81.694 193.919 null]
+/D [3333 0 R /XYZ 81.694 163.034 null]
 >> endobj
 3403 0 obj <<
-/D [3333 0 R /XYZ 92.483 193.919 null]
+/D [3333 0 R /XYZ 92.483 163.034 null]
 >> endobj
 3404 0 obj <<
-/D [3333 0 R /XYZ 71.731 192.511 null]
+/D [3333 0 R /XYZ 71.731 161.627 null]
 >> endobj
 3405 0 obj <<
-/D [3333 0 R /XYZ 71.731 192.511 null]
+/D [3333 0 R /XYZ 71.731 161.627 null]
 >> endobj
 3406 0 obj <<
-/D [3333 0 R /XYZ 91.656 180.967 null]
+/D [3333 0 R /XYZ 91.656 150.083 null]
 >> endobj
 3407 0 obj <<
-/D [3333 0 R /XYZ 76.712 163.034 null]
->> endobj
-3408 0 obj <<
-/D [3333 0 R /XYZ 81.694 150.083 null]
->> endobj
-3409 0 obj <<
-/D [3333 0 R /XYZ 92.483 150.083 null]
->> endobj
-3410 0 obj <<
-/D [3333 0 R /XYZ 71.731 148.675 null]
->> endobj
-3411 0 obj <<
-/D [3333 0 R /XYZ 71.731 148.675 null]
->> endobj
-3412 0 obj <<
-/D [3333 0 R /XYZ 91.656 137.132 null]
+/D [3333 0 R /XYZ 71.731 127.169 null]
 >> endobj
 3332 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R /F44 1884 0 R /F53 2143 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3416 0 obj <<
-/Length 2406      
+3411 0 obj <<
+/Length 2246      
 /Filter /FlateDecode
 >>
 stream
-x�}َ��}���X5�͑�{�$�^�vld�A6�%v���,Q;}�R�3Ѓ��b�X7,|��E�4��ΕN�EѼ�;���U +!Y�м[�����\�I�Xo��T�4�*��b]��{�7���r�cߋ��M�?��6<�l�i����?�_}\���T�Y��X3͕\:=�5��TE$�;�\%���i (�\�gG'��T�%�K��了d����gSv�L�霭��#������v������2�=��b�/[!5����6��hP
(/h��
-��E��?NAZ��p6uѵ_|_��`-ӏ���#�y@��MՎ�xꦁ�J��ƌ��7����v�
-���{��F�@w�Gdf��P�B�����lY�n�]��`�=;]@�s����.�2ϴ%��1�שg$�n�A�2�"�ת��LY
����Yf"+��FY=[ѦAΎ�H��2Kn`6�U<�	��
<h���2^��Ƹ�kA�9x�h-��Yjߛv�
�$�B�����w�{w'4b��8�O��A���@���<�*v�ߪ�/����?����,���'�ܰ̉][W�U����+&Ԕ*��nS�w�7C���[/3�Ԙs�ap����C�'�}2���n��X�a������w<�vBf�"�3��}�,!��l{��Y���q�<1�̉�,AO�,��^��>S��?�O��V�[�`³hV��_��}zbFG����
�}�:ޑ�p>qP�Pi[��8K�a���
-�@�
$�l��VNj�NTB<�U��� ����l7g`�f��Bu������� i��4[$~���vA�iV'DT��`��@B��Zi]n����A���3͋��ꤟ�m�]�>n�^ �a"�FQUo�
--^�+��JjvC��a8�	�B����`���"(�$�*H�JS�h�BU�HB�����F̛�0N�<�ƅY�R��n����ι���$O��v>ʯ	��b�#����/�����J�3�����2{��t��hl���C����0�|�Đ����BC������NJ��ǽL�
�uV6b
-�•����)f�����	���~!bmduߍcEb��e�"&"AҬ�O��^��WA�������~�U���3ԁ������(ރ[N����U���c<q��6���W��ŭ�=��4I=�هOz�՜�"_eQJ���z�Qo�豶��z@.�?̾(D�{o�y�SA��6��2��8�x[YFifi>�撔�tTHrl���j��S��<x(��Һ�t�+��d�؏����>+Q�G�X�qna�9��4���(��,2�4�~�E>[+x�$F%�Zs�V�(WA.�H�X7��L�:!��~\2£K�8�/�T�_ގI�v;u�0
Ueg����Ur��Cs����Շ�ql3rІ~�I5=��ܨ�u��mA�kG�!�K�77�� �=ݘ'd7�&D윗��+�9YCa:��4Qq�=��O�@m��.����7i���\׶VJ;JF��n��bu�+��Q��Уb���9:*�K���L)��=_���v��IC#7��[����Q�
-䟻���0w�ǿ1�i�a� �o��Pۏez^JjYp4�� �PA�+Ċg֌@�
�L�8&'@�������Wm�s�g�P�ˤ��B�:�����V��y���يxn�<+lc�8���6\��G�m���`�J�	�Utr�:�s��	b<��}�
-��������k�%a� �K�L납1����]�������&�����߰����]k�� ���,M�f�?V3�2��NJ��c���Fz�
G���k�n;Au[�W��`
-7���)�+�tĠ�T��r�E��S�!I7B�����e����iz"7�нA��8�F�'�\�}GU[�Siyp�h�rg&������В���?��g���
-�����;�����Sk����A�n��'Ԕ�`��‰�Mu�V�e)hUhA�����q���}	�3��y����\���<B����ǵ�o�_��7�7�-��׏w�>�p�ͫ����l��O��z"���S�ㄯ!���x���,��YY��%�*����������fuBtU�/�*>�S�����%_���,����,��S���cE�2Wnth�(����C��R��S9&�Te��a��u5?�~B�l[n$���F�0K(����ID�)��7s^�<?u�:o�<=�����P4g���#@G��@$#ܽ��^�͵�
�ܫ��fWh�4ވ�����<�z������>Ѝ��yȓء�BQ
-;-�c6YwC��2v����֟V�k�K$8uA�(S��/=�I���n;��� q�_��dmT�endstream
+x�}X[��~�_a�Vִ��6h��-=A�]���L����Z���g>��9Ѓ��pf8wR�|��,�"
��"H�YQ��g;Z���t��8�y�z����\�I8[mgQ�X�4D���?������ ��H��ݸ���*ųϺ��<�������Ցg�"��Śpn�
+ғ\���L�Qd�2���^�O�E�e�j6��Z_ǎ�_|?�����a��8̥��ײ��ʦ�ua�+��Pf��n��o���T�0�^˓�5���n�(�0�u�/|�˘�n{
��62��z�l۾V�l�7�E.�7h�����;��,	���_���ӽ].����[���q���[��� ��Q��o��/L�I&	)�'{�^��<|���BtiE?�m���bp��m��E[/��f	
+`�䁷�g�U#���e�UO<�ڲ1<|jG�0��A����X���.����d�:4
��_��I���Q �{N��>_���x�l�h͙.�x��	��60�c1��?�/^��v^Z�hª-TU�
N�L��s	����Eco���׾AH�#?�cA�d��n3�0�}O��{(B�YF� B%�j�A"KcUvo���F� #v@yG6	R
+��w#��b���uF�i.�4�%�,�0��Q&����(�\�<��`4!�����}��~�y�}R�����y�ۀ{x
��jp��tQ��ť¬c`��^�� r��$=G�	j��`2��O��W+�B&�HS�h�RZf	i���{�7��8��yd��Y(R����ͣ���1���$Olh1�t�_z+�7�8@���??ߺ��Hd"�9Jn���zA,�hl�/�ѐ4z4:M(_=�Hu]Uj�cE��[����{��WP�l@
+T
+G��C��w���w
�#GFx0���‰�v��vJ�!&YXF*bN$J�e�z�w���"�9>͞���P�=�Z�������b�'�+s���}MT�x�"j�[����s�Y_z<���J=�ɇϚ�Ŕ�"_dQjO�`��rm�:=V���X���BD���!�'��%%��VL����q1�ƞhk�ͦyZ=��<�J)L�V�� �Z5P��c�Z;|ۿ�O]���a_{^.h�m��5[*�cK�o�Q�b?�j"��IP�)��[
�9
+`�Ez��ү���EXa�\(��J�^u�V�(2
gQ�����^Z�pgH7��5!��~��/�c�n���H�삛2�P��@%[>4w+��zg�Ʃ]p���6�%%���2s����Maט��f3���%o��h��'�k��Ǎ��:�%��n�)Y��Y�L����L1	��|���7A�i9W�����M�]��cG�@Ԟ�Q�P�����6r�A0���`��
�sS�j�VF5�u{N;Ef��u^���*�F����������T����_:1�i��aa��{�=��SY���&�L�����w�;V�:d�++KRhms1��	0h(�����78�,��n���h�L{��TC���3]�9mqr|�N<3	��(lc�8���6��ڧ#�7�_WС�􄁽U���E�ϡ�F�8Y�:����\m;�m�B[�\�ip�"�3�R# �������ŴVUY���VPv3*����̭Ɖw@�ѱ������S5��*#M|T�Oy3+�����X�0S�m�@��{ի�L��Ġ��n��,�z]����.�OI�����X��#].��y��grc�&�"�1�F�P�q���l�j�h��)SV�D���&~�Y�����;��GϽ�'Q�*u�t��]C��e��1��O��=^.�öɍ6T8�ݶN�{����pI���xw46jL':��i�������V<�I�,x�U���+~�}��b�h`�nX5��)���9y�
����?�G� OlOPk���rF����QT��H�q��,��NwXR�
+�L����؄�8C�)�ׄ�����rD��w���ߵ^b�޵�(Rr�z(m���Ց(�Qbҡ]��^ܦr$�Tdyru��-��O�Ͷ�F����0r/{�Ũ���n	Y��7G�:�9�Ƕ�����)OOu��ESƾ�>$���p�2������oE�|j@�^��-9�P��F��$d��y��v�Ww.��>����=�Y�اB�vZ�c2Y{G��2v�����O��5�RG	�]�yN�������M�ӭ�&"$����-�?�9N�endstream
 endobj
-3415 0 obj <<
+3410 0 obj <<
 /Type /Page
-/Contents 3416 0 R
-/Resources 3414 0 R
+/Contents 3411 0 R
+/Resources 3409 0 R
 /MediaBox [0 0 609.714 789.041]
 /Parent 3272 0 R
-/Annots [ 3427 0 R 3431 0 R 3438 0 R ]
+/Annots [ 3421 0 R 3425 0 R 3432 0 R ]
 >> endobj
-3427 0 obj <<
+3421 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
-/Rect [179.678 602.148 232.014 610.63]
+/Rect [179.678 628.05 232.014 636.532]
 /Subtype /Link
 /A << /S /GoTo /D (http) >>
 >> endobj
-3431 0 obj <<
+3425 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
-/Rect [349.173 440.364 368.62 449.275]
+/Rect [349.173 466.267 368.62 475.178]
 /Subtype /Link
 /A << /S /GoTo /D (gloss-dos) >>
 >> endobj
-3438 0 obj <<
+3432 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
-/Rect [486.332 230.009 537.983 238.92]
+/Rect [486.332 255.911 537.983 264.823]
 /Subtype /Link
 /A << /S /GoTo /D (security-bugzilla-charset-ex) >>
 >> endobj
+3412 0 obj <<
+/D [3410 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3413 0 obj <<
+/D [3410 0 R /XYZ 152.136 695.392 null]
+>> endobj
+3414 0 obj <<
+/D [3410 0 R /XYZ 457.305 695.392 null]
+>> endobj
+3415 0 obj <<
+/D [3410 0 R /XYZ 281.996 669.489 null]
+>> endobj
+3416 0 obj <<
+/D [3410 0 R /XYZ 518.615 669.489 null]
+>> endobj
 3417 0 obj <<
-/D [3415 0 R /XYZ 71.731 729.265 null]
+/D [3410 0 R /XYZ 523.039 669.489 null]
 >> endobj
 3418 0 obj <<
-/D [3415 0 R /XYZ 71.731 718.306 null]
+/D [3410 0 R /XYZ 71.731 656.538 null]
 >> endobj
 3419 0 obj <<
-/D [3415 0 R /XYZ 152.136 669.489 null]
+/D [3410 0 R /XYZ 71.731 656.438 null]
 >> endobj
 3420 0 obj <<
-/D [3415 0 R /XYZ 457.305 669.489 null]
+/D [3410 0 R /XYZ 71.731 641.494 null]
 >> endobj
-3421 0 obj <<
-/D [3415 0 R /XYZ 281.996 643.587 null]
+1519 0 obj <<
+/D [3410 0 R /XYZ 71.731 602.042 null]
+>> endobj
+546 0 obj <<
+/D [3410 0 R /XYZ 369.383 562.67 null]
 >> endobj
 3422 0 obj <<
-/D [3415 0 R /XYZ 518.615 643.587 null]
+/D [3410 0 R /XYZ 71.731 559.478 null]
 >> endobj
 3423 0 obj <<
-/D [3415 0 R /XYZ 523.039 643.587 null]
+/D [3410 0 R /XYZ 71.731 542.342 null]
 >> endobj
 3424 0 obj <<
-/D [3415 0 R /XYZ 71.731 630.635 null]
->> endobj
-3425 0 obj <<
-/D [3415 0 R /XYZ 71.731 630.536 null]
+/D [3410 0 R /XYZ 71.731 494.326 null]
 >> endobj
 3426 0 obj <<
-/D [3415 0 R /XYZ 71.731 615.592 null]
+/D [3410 0 R /XYZ 348.289 455.472 null]
 >> endobj
-1519 0 obj <<
-/D [3415 0 R /XYZ 71.731 576.139 null]
->> endobj
-546 0 obj <<
-/D [3415 0 R /XYZ 369.383 536.767 null]
+3427 0 obj <<
+/D [3410 0 R /XYZ 301.416 442.521 null]
 >> endobj
 3428 0 obj <<
-/D [3415 0 R /XYZ 71.731 533.575 null]
+/D [3410 0 R /XYZ 370.113 429.569 null]
 >> endobj
 3429 0 obj <<
-/D [3415 0 R /XYZ 71.731 516.439 null]
->> endobj
-3430 0 obj <<
-/D [3415 0 R /XYZ 71.731 468.423 null]
->> endobj
-3432 0 obj <<
-/D [3415 0 R /XYZ 348.289 429.569 null]
->> endobj
-3433 0 obj <<
-/D [3415 0 R /XYZ 301.416 416.618 null]
->> endobj
-3434 0 obj <<
-/D [3415 0 R /XYZ 370.113 403.666 null]
->> endobj
-3435 0 obj <<
-/D [3415 0 R /XYZ 478.765 403.666 null]
+/D [3410 0 R /XYZ 478.765 429.569 null]
 >> endobj
 1520 0 obj <<
-/D [3415 0 R /XYZ 71.731 373.614 null]
+/D [3410 0 R /XYZ 71.731 399.517 null]
 >> endobj
 550 0 obj <<
-/D [3415 0 R /XYZ 171.235 330.517 null]
+/D [3410 0 R /XYZ 171.235 356.419 null]
 >> endobj
 1521 0 obj <<
-/D [3415 0 R /XYZ 71.731 326.686 null]
+/D [3410 0 R /XYZ 71.731 352.589 null]
 >> endobj
 554 0 obj <<
-/D [3415 0 R /XYZ 413.668 291.144 null]
+/D [3410 0 R /XYZ 413.668 317.047 null]
 >> endobj
-3436 0 obj <<
-/D [3415 0 R /XYZ 71.731 280.779 null]
+3430 0 obj <<
+/D [3410 0 R /XYZ 71.731 306.682 null]
 >> endobj
-3437 0 obj <<
-/D [3415 0 R /XYZ 452.81 245.117 null]
+3431 0 obj <<
+/D [3410 0 R /XYZ 452.81 271.02 null]
 >> endobj
 1795 0 obj <<
-/D [3415 0 R /XYZ 71.731 217.057 null]
+/D [3410 0 R /XYZ 71.731 242.96 null]
 >> endobj
-3439 0 obj <<
-/D [3415 0 R /XYZ 71.731 179.334 null]
+3433 0 obj <<
+/D [3410 0 R /XYZ 71.731 205.236 null]
 >> endobj
-3440 0 obj <<
-/D [3415 0 R /XYZ 184.656 168.404 null]
+3434 0 obj <<
+/D [3410 0 R /XYZ 184.656 194.307 null]
 >> endobj
-3441 0 obj <<
-/D [3415 0 R /XYZ 71.731 161.266 null]
+3435 0 obj <<
+/D [3410 0 R /XYZ 71.731 187.169 null]
 >> endobj
-3442 0 obj <<
-/D [3415 0 R /XYZ 71.731 136.659 null]
+3436 0 obj <<
+/D [3410 0 R /XYZ 71.731 162.561 null]
 >> endobj
-3414 0 obj <<
+3409 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F57 2335 0 R /F35 1437 0 R /F32 1119 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3446 0 obj <<
+3440 0 obj <<
 /Length 2482      
 /Filter /FlateDecode
 >>
@@ -12383,125 +12363,125 @@ U
 �5Z�Z~��U�[,��h�҉g�z�Y�LXD�<I����ү�2!o�FR]8iqh��j/�����BWw�A��T/�Z�4J��N���͍��K�m)E�3L��\�2
|��$�������������r�yXMR����v9�M���?��eW�IW���
g)��/�^|�AW\�k0L`�P����zD�a�8.�-L��b!9��#�����i��Bϯ���\��f��=s�P[L�*���4(]��IΈ�t��b��7��-?���g���3�h�(����
 �0��9M����{��r��}&	���z��=n�_�+�J|��<Q�IԌm�~��� 	�U�e�mJ��mDD����(%R8,G�%$2���G%������t\-5G�}dM�)R_!�j>�́�Z���t����%���H?�(�*��M�У��|�bB�=®�zՖD���p�VP�T��s�ͭ����.�B����`�d�T�=u	�z�k(��J1�J1�f��=�]� �v����s���-K�^��g6�ՠB�P���Z�?����K��endstream
 endobj
-3445 0 obj <<
+3439 0 obj <<
 /Type /Page
-/Contents 3446 0 R
-/Resources 3444 0 R
+/Contents 3440 0 R
+/Resources 3438 0 R
 /MediaBox [0 0 609.714 789.041]
 /Parent 3272 0 R
-/Annots [ 3450 0 R ]
+/Annots [ 3444 0 R ]
 >> endobj
-3450 0 obj <<
+3444 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [390.612 583.608 442.915 592.519]
 /Subtype /Link
 /A << /S /GoTo /D (template-http-accept) >>
 >> endobj
-3447 0 obj <<
-/D [3445 0 R /XYZ 71.731 729.265 null]
+3441 0 obj <<
+/D [3439 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1522 0 obj <<
-/D [3445 0 R /XYZ 71.731 718.306 null]
+/D [3439 0 R /XYZ 71.731 718.306 null]
 >> endobj
 558 0 obj <<
-/D [3445 0 R /XYZ 388.547 703.236 null]
+/D [3439 0 R /XYZ 388.547 703.236 null]
 >> endobj
 1523 0 obj <<
-/D [3445 0 R /XYZ 71.731 692.184 null]
+/D [3439 0 R /XYZ 71.731 692.184 null]
 >> endobj
 562 0 obj <<
-/D [3445 0 R /XYZ 303.155 651.159 null]
+/D [3439 0 R /XYZ 303.155 651.159 null]
 >> endobj
-3448 0 obj <<
-/D [3445 0 R /XYZ 71.731 638.988 null]
+3442 0 obj <<
+/D [3439 0 R /XYZ 71.731 638.988 null]
 >> endobj
-3449 0 obj <<
-/D [3445 0 R /XYZ 71.731 609.511 null]
+3443 0 obj <<
+/D [3439 0 R /XYZ 71.731 609.511 null]
 >> endobj
 1524 0 obj <<
-/D [3445 0 R /XYZ 71.731 583.608 null]
+/D [3439 0 R /XYZ 71.731 583.608 null]
 >> endobj
 566 0 obj <<
-/D [3445 0 R /XYZ 308.598 546.392 null]
+/D [3439 0 R /XYZ 308.598 546.392 null]
+>> endobj
+3445 0 obj <<
+/D [3439 0 R /XYZ 71.731 536.249 null]
+>> endobj
+3446 0 obj <<
+/D [3439 0 R /XYZ 363.706 526.268 null]
+>> endobj
+3447 0 obj <<
+/D [3439 0 R /XYZ 219.335 500.365 null]
+>> endobj
+3448 0 obj <<
+/D [3439 0 R /XYZ 320.961 500.365 null]
+>> endobj
+3449 0 obj <<
+/D [3439 0 R /XYZ 71.731 487.413 null]
+>> endobj
+3450 0 obj <<
+/D [3439 0 R /XYZ 157.2 487.413 null]
 >> endobj
 3451 0 obj <<
-/D [3445 0 R /XYZ 71.731 536.249 null]
+/D [3439 0 R /XYZ 71.731 485.256 null]
 >> endobj
 3452 0 obj <<
-/D [3445 0 R /XYZ 363.706 526.268 null]
+/D [3439 0 R /XYZ 118.555 446.692 null]
 >> endobj
 3453 0 obj <<
-/D [3445 0 R /XYZ 219.335 500.365 null]
+/D [3439 0 R /XYZ 165.524 438.228 null]
 >> endobj
 3454 0 obj <<
-/D [3445 0 R /XYZ 320.961 500.365 null]
+/D [3439 0 R /XYZ 341.284 426.572 null]
+>> endobj
+1525 0 obj <<
+/D [3439 0 R /XYZ 71.731 392.995 null]
+>> endobj
+570 0 obj <<
+/D [3439 0 R /XYZ 347.534 360.599 null]
 >> endobj
 3455 0 obj <<
-/D [3445 0 R /XYZ 71.731 487.413 null]
+/D [3439 0 R /XYZ 71.731 350.234 null]
 >> endobj
 3456 0 obj <<
-/D [3445 0 R /XYZ 157.2 487.413 null]
+/D [3439 0 R /XYZ 71.731 307.434 null]
 >> endobj
 3457 0 obj <<
-/D [3445 0 R /XYZ 71.731 485.256 null]
+/D [3439 0 R /XYZ 412.638 296.639 null]
 >> endobj
 3458 0 obj <<
-/D [3445 0 R /XYZ 118.555 446.692 null]
+/D [3439 0 R /XYZ 111.263 270.736 null]
 >> endobj
 3459 0 obj <<
-/D [3445 0 R /XYZ 165.524 438.228 null]
+/D [3439 0 R /XYZ 71.731 268.579 null]
 >> endobj
 3460 0 obj <<
-/D [3445 0 R /XYZ 341.284 426.572 null]
->> endobj
-1525 0 obj <<
-/D [3445 0 R /XYZ 71.731 392.995 null]
->> endobj
-570 0 obj <<
-/D [3445 0 R /XYZ 347.534 360.599 null]
+/D [3439 0 R /XYZ 71.731 253.635 null]
 >> endobj
 3461 0 obj <<
-/D [3445 0 R /XYZ 71.731 350.234 null]
+/D [3439 0 R /XYZ 71.731 204.584 null]
 >> endobj
 3462 0 obj <<
-/D [3445 0 R /XYZ 71.731 307.434 null]
+/D [3439 0 R /XYZ 71.731 178.681 null]
 >> endobj
 3463 0 obj <<
-/D [3445 0 R /XYZ 412.638 296.639 null]
+/D [3439 0 R /XYZ 213.956 165.73 null]
 >> endobj
 3464 0 obj <<
-/D [3445 0 R /XYZ 111.263 270.736 null]
+/D [3439 0 R /XYZ 71.731 163.573 null]
 >> endobj
 3465 0 obj <<
-/D [3445 0 R /XYZ 71.731 268.579 null]
+/D [3439 0 R /XYZ 71.731 148.629 null]
 >> endobj
 3466 0 obj <<
-/D [3445 0 R /XYZ 71.731 253.635 null]
+/D [3439 0 R /XYZ 134.999 139.13 null]
 >> endobj
-3467 0 obj <<
-/D [3445 0 R /XYZ 71.731 204.584 null]
->> endobj
-3468 0 obj <<
-/D [3445 0 R /XYZ 71.731 178.681 null]
->> endobj
-3469 0 obj <<
-/D [3445 0 R /XYZ 213.956 165.73 null]
->> endobj
-3470 0 obj <<
-/D [3445 0 R /XYZ 71.731 163.573 null]
->> endobj
-3471 0 obj <<
-/D [3445 0 R /XYZ 71.731 148.629 null]
->> endobj
-3472 0 obj <<
-/D [3445 0 R /XYZ 134.999 139.13 null]
->> endobj
-3444 0 obj <<
+3438 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F44 1884 0 R /F48 1896 0 R /F32 1119 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3475 0 obj <<
+3469 0 obj <<
 /Length 2964      
 /Filter /FlateDecode
 >>
@@ -12521,244 +12501,245 @@ R
 �h��A�s��
 ����*Z��-��1l�؝S��jv�3w�z�u8���}{ýۆ2ݽs6T����<�)Q�[ҽP��I���������={a��^5uM7c��^����i���ʿ�P3\��j*�%+'�Z�a��B>�V��b�O2�'����q'#]�&�c˥vB?�4�4�^R!���bOP_���R���3�*�V�RJ�([pG�2� ϧ���۾�TK��V"�y���n�&��d~��$�s���*��(���mg�r���\�X�_ s�O'�X����RVٗC���J�s�������=R�
:��z���vI�3�ޱ���¥�h�!��4�����t{����ڸl���u���iT������i�R���9�K�wyu���.�i'?�P��j�]��{y�}�w�3����	Zc?tL��>�+��N�T3-endstream
 endobj
-3474 0 obj <<
+3468 0 obj <<
 /Type /Page
-/Contents 3475 0 R
-/Resources 3473 0 R
+/Contents 3469 0 R
+/Resources 3467 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3499 0 R
+/Parent 3493 0 R
+>> endobj
+3470 0 obj <<
+/D [3468 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3471 0 obj <<
+/D [3468 0 R /XYZ 71.731 718.306 null]
+>> endobj
+3472 0 obj <<
+/D [3468 0 R /XYZ 71.731 649.4 null]
+>> endobj
+3473 0 obj <<
+/D [3468 0 R /XYZ 71.731 597.594 null]
+>> endobj
+3474 0 obj <<
+/D [3468 0 R /XYZ 71.731 582.65 null]
+>> endobj
+3475 0 obj <<
+/D [3468 0 R /XYZ 417.328 573.151 null]
 >> endobj
 3476 0 obj <<
-/D [3474 0 R /XYZ 71.731 729.265 null]
+/D [3468 0 R /XYZ 218.704 561.494 null]
 >> endobj
 3477 0 obj <<
-/D [3474 0 R /XYZ 71.731 718.306 null]
+/D [3468 0 R /XYZ 508.932 561.494 null]
 >> endobj
 3478 0 obj <<
-/D [3474 0 R /XYZ 71.731 649.4 null]
+/D [3468 0 R /XYZ 76.712 533.201 null]
 >> endobj
 3479 0 obj <<
-/D [3474 0 R /XYZ 71.731 597.594 null]
+/D [3468 0 R /XYZ 118.555 489.655 null]
 >> endobj
 3480 0 obj <<
-/D [3474 0 R /XYZ 71.731 582.65 null]
+/D [3468 0 R /XYZ 135.395 481.191 null]
 >> endobj
 3481 0 obj <<
-/D [3474 0 R /XYZ 417.328 573.151 null]
+/D [3468 0 R /XYZ 222.231 481.191 null]
 >> endobj
 3482 0 obj <<
-/D [3474 0 R /XYZ 218.704 561.494 null]
+/D [3468 0 R /XYZ 433.177 481.191 null]
+>> endobj
+1526 0 obj <<
+/D [3468 0 R /XYZ 71.731 447.614 null]
+>> endobj
+574 0 obj <<
+/D [3468 0 R /XYZ 267.224 415.218 null]
 >> endobj
 3483 0 obj <<
-/D [3474 0 R /XYZ 508.932 561.494 null]
+/D [3468 0 R /XYZ 71.731 412.249 null]
 >> endobj
 3484 0 obj <<
-/D [3474 0 R /XYZ 76.712 533.201 null]
+/D [3468 0 R /XYZ 71.731 395.113 null]
 >> endobj
 3485 0 obj <<
-/D [3474 0 R /XYZ 118.555 489.655 null]
+/D [3468 0 R /XYZ 266.919 374.77 null]
 >> endobj
 3486 0 obj <<
-/D [3474 0 R /XYZ 135.395 481.191 null]
+/D [3468 0 R /XYZ 71.731 346.874 null]
 >> endobj
 3487 0 obj <<
-/D [3474 0 R /XYZ 222.231 481.191 null]
+/D [3468 0 R /XYZ 419.408 320.972 null]
 >> endobj
 3488 0 obj <<
-/D [3474 0 R /XYZ 433.177 481.191 null]
->> endobj
-1526 0 obj <<
-/D [3474 0 R /XYZ 71.731 447.614 null]
->> endobj
-574 0 obj <<
-/D [3474 0 R /XYZ 267.224 415.218 null]
+/D [3468 0 R /XYZ 71.731 300.882 null]
 >> endobj
 3489 0 obj <<
-/D [3474 0 R /XYZ 71.731 412.249 null]
+/D [3468 0 R /XYZ 71.731 244.095 null]
 >> endobj
 3490 0 obj <<
-/D [3474 0 R /XYZ 71.731 395.113 null]
+/D [3468 0 R /XYZ 71.731 187.308 null]
 >> endobj
 3491 0 obj <<
-/D [3474 0 R /XYZ 266.919 374.77 null]
+/D [3468 0 R /XYZ 253.921 176.513 null]
 >> endobj
 3492 0 obj <<
-/D [3474 0 R /XYZ 71.731 346.874 null]
->> endobj
-3493 0 obj <<
-/D [3474 0 R /XYZ 419.408 320.972 null]
->> endobj
-3494 0 obj <<
-/D [3474 0 R /XYZ 71.731 300.882 null]
->> endobj
-3495 0 obj <<
-/D [3474 0 R /XYZ 71.731 244.095 null]
->> endobj
-3496 0 obj <<
-/D [3474 0 R /XYZ 71.731 187.308 null]
->> endobj
-3497 0 obj <<
-/D [3474 0 R /XYZ 253.921 176.513 null]
->> endobj
-3498 0 obj <<
-/D [3474 0 R /XYZ 311.687 163.562 null]
+/D [3468 0 R /XYZ 311.687 163.562 null]
 >> endobj
 1527 0 obj <<
-/D [3474 0 R /XYZ 71.731 143.472 null]
+/D [3468 0 R /XYZ 71.731 143.472 null]
 >> endobj
-3473 0 obj <<
+3467 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F35 1437 0 R /F48 1896 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3502 0 obj <<
-/Length 3159      
+3496 0 obj <<
+/Length 3160      
 /Filter /FlateDecode
 >>
 stream
-xڍZY��F~���Ӛ$������qlg�$Xx�X,6�@�-�0�lz2��[W�MI����f������5�ʃ?���]� s�$^�ou�7_��b+K�֚��/^}�U�fI��W��s�(Z���M�`�/��;����6�='v��nt�TC՞x�����w����������~�9wn���
-g��H�+?��h饮e$]��n�B�Rg�N<G5�:׊g>t}��y[Z�.j@Ia��l�o�
<�"b�ϮAFq����r���#眯����cG����+�$��y�t��A��ˮ5S"���Ⱦ�y����y6��jÒ��*��6A�^�E�㩮���V��腲�`1B��eԼ[�A`ߩ�<�^�����s6�A��W�0N��f�n&��/<G?�}��xp�Nݑ�?����_��+:ѐ��y>7 �
-�`�/(ܳ�=�Q�����k�.}���T�2�+��*����3�{k�ա��@%> 4d���m��lA$��r��^󸬎� �}z�ʔ&���'�}Ã�sU��3���:v��g�>�i�ZWh5��Q������Ktd��g�~� ��`������ɢ(,H�ԍL�[�t~�(<0��)��[��}���Z�+2��~��>��Y��ٗG&ȢL�uS���n���B�; ��ڼQo�;�.$������ˌ���~�0�Ǻ�;7��:>}\W�q� J�{��J!�ᡵ��&SO.��z�cښV�BB�g"������|3{[��,�
��N�:���9�/�C{�Y����t�cL@M!�
-�&��<���,@�)�*�u�.NLA(��Eb���A�O���w,��ёt�� ?*-�8�e��A����a�v"��W����}2��|�΁��*f'��&Դ/�~j�����^b�V>T���!|��Y\��@���r�`�A��ܓk����������&N�O��QΏV�`�
-3�^S旋/�
-vg&mX$�7LvM������s8���7��o�%��we���p|'�Q��2����Oֻ�y�����y�����8�=҂W���)��|T*<�VɻG��/h޼�r�A�2�E�K>�d�j)���B���L����0��^%�yx)95?�yUNQ�%��
lׁ��ms��˫(b���ܧ�EW^1!ɲn�_�SԬ��*n�����������$3�DaĜ·,o���xYR-Ńx�~���H�}w�c��\�Y��b0��N�1(:r�8����*��8�ʀCRO�)%��,`�i�=�ճ��gN�����>�C�j`Lي���Š���^�^��Z��u��A���4����cw�����w1"<����f��sӝ)�E#}�5Hvn�%�R��e��G 8�`f��Ή��x!�r�t^����F�'ը栤ІD榩����V�^���G
-�m������d�8��:����6{ĬE̙w*�
�'n������zY���.r��x��Ds���|H>�A����x��/����y�MP�F����#댭_Yr����80��IfS�.��>�T@S�Cʺe]X9���h�Z�M2<UYiiގ$#76@{ֶ6���Ψ�PNM�2�{L"�*���XP�&��)��w�8a�ڀoЋ<:s��C�Im�C)ڳɏ� u�3��4���Qyu�<�HH�w�,%��i�p�:Z|�(�S(*��� ���z`xhZ��[�F	ӂ�$���V&�&�L�-lyT����5�����*`���M���N&��6Ф����~=��@��V�v��o��V�z�j��od����@�,�~�N��Rp������O<[�u�n k:�JV���)�&n.ύ`|���;����ԣ�;�r+xGC&��&,��A� ��0|G0GӅP,B�X� ,:���뼿�)z�(�R�j&V�_�nGeU�zb�Qt�;�
-i�����O���/�N�cS~TO7mG�%LG�r�"O��C��B��jK�����W��@�JM���:�O�����2���;
-�V�'uG���˞S�����E�{�<�9}�L&��\�T��8�Z�"��Lr�:��,�.�1��+�N�&P��:hf�m���K%�L��Uf���v�a�L̜Men�+y/��3�
0S\I�OS�A���ׂ��85U�6KJ_�`ʹ<���ѫ:83H��X����"\
-0Țc�Yہ���?����~���"Cg��&
-�I�0��S/�E��T�g���V���~����-˚��'Z�]0�f��q�<�v���/v�
�Ђ8��g��:x���, J=�]=��1<�Ƅ8�+v/�.K��1� �Y���/!R�A�:&�Z�1��%���V�Mk�F`���E�z��|��1�O�B�g2N��/��p��<�߹S(�����������2G�j���O���{�R�Zn�������,��}q홆�H\�h�怎�H�Q�[] ��W<8ҕl#o0�19mcc���;�>��SB�Ƕ�R�t�i�e� 96$�*7W7&������+��+�ۋ���t��u�/�m�s��r� �rg�ٙ)0��A�nj6�[	|s}+89!E���qt�H��7{��PL$-.s=Gx��?��3�
-��hd����N	�w�/ы�Dc��_��T��Y��RI.�ܶk��b,��vMeD,�������(�E��,��	�|HP�O�JPc�,�'�T<	H
-�=
�a,l,&>[����}P�[ԝ&�>@��O��M�HZ?d����h<
,β�q�e����
-�W�<^
è������$�]-��@@#�T�����ۼ1W<Ww7�d��e9��ӗ+����DS�(�?�<���S��O��4���.4�V�C��n�`���ͻ�Ls�Ïb����y�&�E��q�[\����\���mYɧ�`GQ�F#�Gg��Ջ�˩����iyZT�	F������P$� ��t����c�):�ṉ��^5c�c�_ �j՞x�h��B���ƙ�f�����1�\����B����{�_4�%7���=�	5������v�����endstream
+xڍZ�����B�j
+8����q�8v|E���h��"Wq|(|�|��;�%��|1�g��ٙ�߼V�\��V����~��m�����o~z�Ɋ�,�Xk~ؽx�!V�J��jwX�n��0\Ł���_��8�N�y��z�G�)~����˾l�<��x�c�9eUe�������n�9
+b�&��™5W����A�-�g�t�)I)O�(T�8���ut}��A�̇�����A�ֺ���QR�"�
�6��<?$��hkdλ��_���AVQ蜲��:��^�Ȃ�$D�/�rx�ٖ׏����n� k�eۘ)�]���o;^�q�%����J߱�A�J@r���F�
Ѡ(�~<Ve?��X^+�3����Y��i��<�[9���Sx����ӏ։����^m�h�b����U*��/\gx\{����0��??�~�������[ѐ��y>7 ��a�'(ܱ�]��9���k���
L��9}.m$:�Bt{
c'L�<�=�/�*	����k�`'�o�c"я�3l�t����#اӍL
;"���$�����T���ģ츎��l.�Y�g�J���ΨZ�x�^>l��i����G݋tF!X+pc��|��
+<�#9��0���ir
+$���g߿����q��_��c~��{~vŁ	�(�������{;�r�D�H�k��&���������~V���`���y�
+~�$�x�qU>�A� ���Е�0����6�zr�7�xL[ӪLVH(qM��_}���ofob��^��B��|�JX�3>��%h.6"�����;�	�i��Z3Q�{oY��,@�8��:A'� ��"� �K�ɉ�>v�,�,�v������o���?�#���^�,�9��Nӊ�N�າUV���l��s�--L�{�r��IkĽ	5�˵����
+PNY'�n#j�pj>��%���@�k�r�`�^���Q��n~s]�9�C<{�ۭSg��|��h��0��kJ��r�%��NLZ�@��l!� ����pJoo$��ދ��[(G��=������:�������C��:���i�c;���Hr�D+��Q޹���x��w�$9R�ѼYWf���e։4��u�t�Pj�v�
+	�2�K'��7�{H@���������ee1E��hĪ2�]��"�͑/+.��ufvr���mq��,$��QD|�r|�LQ�l���	n���J#,�nIf��6ˆ9�oY^g��x^�A���᩺(. =v��uз���ڣ���t���@ӑʼn���e�����9V��z2L)�efkOK'�q�뎕�=3�%�؝������Pc��L8�VT��7������z��m���չ��ߞ��3	7#��"<���v����͢�p�5���O��R�G1{�#K03Y�v�D�����S	y�tV�����']�z��І,���[Xhv�S��f���̦����
���p`}y����m��Y|
ZL�������4�`/��nX�����!.^i,єX>�Ƀ3�#���.��+���x%ts��58x{`���+
+�T㔍s�1e6�����%��R�u)���~,�l�֭��$��S�`!͍I� T��3�����Py�Q����"e0;v�D��ٱ�@݆�M����і��j�A/���y[�-&�;JўN~��ӟ�����@��y�FB���g!�L�瀓����#F��BQ!�(w��X���K�C������4Z��|'���R�5�dwaȣ����F�0櫀e�x��N,�d"�M(�7=��~�ԏl�h���F���8�5`�~%���M}a�X��:���L9���
��x6Ϫ��@�2t�� �.b���MW�0��o���QPo�Q�i
+���!�FC�렍��*H�!�E�t!Ʌ�����!���*�o���������A[U�01�(��S����uld��'Sn��@'n��)?��������CD9D�'X�����uyQ6������
+���u���S�7�|�!麖�g�U�Qߐf#����X���zu�j�\�yN@�����YB�K��TsI-e�]&�\
+�ck�R�d���}�I��U4�
��x{S��Y���Y��*
+��`F	��0
Q*fN�27動��i��)��)��ͧ	� `�=�k��kc��*A�%�/f���>r1zQ�	@K�4�T�KYs7�;������?��7GHK+ҷvmb����p
+sO:��\T�.K5y�zX�J��߭��ڻeY��D����}�8��g�nq���C�E��,�c���x螃7�;���ǐ��G�6�gטG��݀s�%Å��묍}�Ɨ�;��B�c5�1��%����F�Mk�F��u����r!c���5�6P5�d��5^:��d�y&�q�P�= 	�m3
+\m���2�+����O���{�B�Zn�������,��}q횆��I\�h�z���Hp�Q�[] {���<8Еl-o0�19mcc�l��>��SB�Ʀ�R�t�i�e�!9�$�.�.nL򡱯��+����닉o�Y��o���6�U�[n��S��];3��z���ц-w+�g��`''�Qx=N��i�wgo����	����e�}�O�����c�?����F��M씐z����8,@4f�ۥ�U5���>�Jrq����_���R��eD8���(#`��*{�8��b�ղL�'PT�!A�<��*x@�	���d�S�$ )�w`4�ㆱ��|��l$Ɗ6�Aao�Sw��߀�)��ʜ�V:ܭ�I��<���ǞE�YvS ����P��T�"�r8͟�}?j��,�ھ72	��S[	iF3�H
��1���t����"���o#Һ,��w�Bb�r��hJ��G]U�P�I�Հ�|.�$���݊!��Đ0��8��B�k+��$Ӝ���È/`���@�ߢX�����-.z���x����B[���$�Q������?�F���r*o�f���x@���a�� T�'�/ˡ��z�����-�㹉�)��1�/����n��C8q�Y.{Bc�?�LN3�a�����/�B�{!LT�����Ƽ��?4"�'�0��7��?\\�����endstream
 endobj
-3501 0 obj <<
+3495 0 obj <<
 /Type /Page
-/Contents 3502 0 R
-/Resources 3500 0 R
+/Contents 3496 0 R
+/Resources 3494 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3499 0 R
+/Parent 3493 0 R
 >> endobj
-3503 0 obj <<
-/D [3501 0 R /XYZ 71.731 729.265 null]
+3497 0 obj <<
+/D [3495 0 R /XYZ 71.731 729.265 null]
 >> endobj
 578 0 obj <<
-/D [3501 0 R /XYZ 308.397 708.149 null]
+/D [3495 0 R /XYZ 308.397 708.149 null]
+>> endobj
+3498 0 obj <<
+/D [3495 0 R /XYZ 71.731 698.007 null]
+>> endobj
+3499 0 obj <<
+/D [3495 0 R /XYZ 366.772 688.025 null]
+>> endobj
+3500 0 obj <<
+/D [3495 0 R /XYZ 71.731 667.935 null]
+>> endobj
+3501 0 obj <<
+/D [3495 0 R /XYZ 386.497 644.189 null]
+>> endobj
+3502 0 obj <<
+/D [3495 0 R /XYZ 71.731 624.1 null]
+>> endobj
+3503 0 obj <<
+/D [3495 0 R /XYZ 380.205 613.305 null]
 >> endobj
 3504 0 obj <<
-/D [3501 0 R /XYZ 71.731 698.007 null]
+/D [3495 0 R /XYZ 71.731 593.215 null]
 >> endobj
 3505 0 obj <<
-/D [3501 0 R /XYZ 366.772 688.025 null]
+/D [3495 0 R /XYZ 71.731 549.38 null]
 >> endobj
 3506 0 obj <<
-/D [3501 0 R /XYZ 71.731 667.935 null]
+/D [3495 0 R /XYZ 71.731 531.447 null]
 >> endobj
 3507 0 obj <<
-/D [3501 0 R /XYZ 386.497 644.189 null]
+/D [3495 0 R /XYZ 71.731 507.701 null]
 >> endobj
 3508 0 obj <<
-/D [3501 0 R /XYZ 71.731 624.1 null]
+/D [3495 0 R /XYZ 228.316 507.701 null]
 >> endobj
 3509 0 obj <<
-/D [3501 0 R /XYZ 380.728 613.305 null]
+/D [3495 0 R /XYZ 71.731 492.593 null]
 >> endobj
 3510 0 obj <<
-/D [3501 0 R /XYZ 71.731 593.215 null]
+/D [3495 0 R /XYZ 71.731 477.649 null]
 >> endobj
 3511 0 obj <<
-/D [3501 0 R /XYZ 71.731 549.38 null]
+/D [3495 0 R /XYZ 351.57 468.149 null]
 >> endobj
 3512 0 obj <<
-/D [3501 0 R /XYZ 71.731 531.447 null]
+/D [3495 0 R /XYZ 71.731 416.941 null]
 >> endobj
 3513 0 obj <<
-/D [3501 0 R /XYZ 71.731 507.701 null]
+/D [3495 0 R /XYZ 154.754 403.99 null]
 >> endobj
 3514 0 obj <<
-/D [3501 0 R /XYZ 228.316 507.701 null]
+/D [3495 0 R /XYZ 102.167 391.038 null]
+>> endobj
+1528 0 obj <<
+/D [3495 0 R /XYZ 71.731 384.649 null]
+>> endobj
+582 0 obj <<
+/D [3495 0 R /XYZ 251.73 346.685 null]
 >> endobj
 3515 0 obj <<
-/D [3501 0 R /XYZ 71.731 492.593 null]
+/D [3495 0 R /XYZ 71.731 336.542 null]
 >> endobj
 3516 0 obj <<
-/D [3501 0 R /XYZ 71.731 477.649 null]
+/D [3495 0 R /XYZ 71.731 319.422 null]
 >> endobj
 3517 0 obj <<
-/D [3501 0 R /XYZ 351.57 468.149 null]
+/D [3495 0 R /XYZ 71.731 319.422 null]
 >> endobj
 3518 0 obj <<
-/D [3501 0 R /XYZ 71.731 416.941 null]
+/D [3495 0 R /XYZ 71.731 301.489 null]
 >> endobj
 3519 0 obj <<
-/D [3501 0 R /XYZ 154.754 403.99 null]
+/D [3495 0 R /XYZ 71.731 301.489 null]
 >> endobj
 3520 0 obj <<
-/D [3501 0 R /XYZ 102.167 391.038 null]
->> endobj
-1528 0 obj <<
-/D [3501 0 R /XYZ 71.731 384.649 null]
->> endobj
-582 0 obj <<
-/D [3501 0 R /XYZ 251.73 346.685 null]
+/D [3495 0 R /XYZ 71.731 257.654 null]
 >> endobj
 3521 0 obj <<
-/D [3501 0 R /XYZ 71.731 336.542 null]
+/D [3495 0 R /XYZ 71.731 257.654 null]
 >> endobj
 3522 0 obj <<
-/D [3501 0 R /XYZ 71.731 319.422 null]
+/D [3495 0 R /XYZ 253.534 246.859 null]
 >> endobj
 3523 0 obj <<
-/D [3501 0 R /XYZ 71.731 319.422 null]
+/D [3495 0 R /XYZ 71.731 200.867 null]
 >> endobj
 3524 0 obj <<
-/D [3501 0 R /XYZ 71.731 301.489 null]
+/D [3495 0 R /XYZ 71.731 200.867 null]
 >> endobj
 3525 0 obj <<
-/D [3501 0 R /XYZ 71.731 301.489 null]
+/D [3495 0 R /XYZ 71.731 169.983 null]
 >> endobj
 3526 0 obj <<
-/D [3501 0 R /XYZ 71.731 257.654 null]
+/D [3495 0 R /XYZ 71.731 169.983 null]
 >> endobj
 3527 0 obj <<
-/D [3501 0 R /XYZ 71.731 257.654 null]
+/D [3495 0 R /XYZ 439.225 159.188 null]
 >> endobj
 3528 0 obj <<
-/D [3501 0 R /XYZ 253.534 246.859 null]
+/D [3495 0 R /XYZ 191.147 146.236 null]
 >> endobj
 3529 0 obj <<
-/D [3501 0 R /XYZ 71.731 200.867 null]
+/D [3495 0 R /XYZ 307.056 146.236 null]
 >> endobj
 3530 0 obj <<
-/D [3501 0 R /XYZ 71.731 200.867 null]
+/D [3495 0 R /XYZ 71.731 133.285 null]
 >> endobj
 3531 0 obj <<
-/D [3501 0 R /XYZ 71.731 169.983 null]
+/D [3495 0 R /XYZ 71.731 126.147 null]
 >> endobj
 3532 0 obj <<
-/D [3501 0 R /XYZ 71.731 169.983 null]
->> endobj
-3533 0 obj <<
-/D [3501 0 R /XYZ 439.225 159.188 null]
+/D [3495 0 R /XYZ 71.731 126.147 null]
 >> endobj
-3534 0 obj <<
-/D [3501 0 R /XYZ 191.147 146.236 null]
->> endobj
-3535 0 obj <<
-/D [3501 0 R /XYZ 307.056 146.236 null]
->> endobj
-3536 0 obj <<
-/D [3501 0 R /XYZ 71.731 133.285 null]
->> endobj
-3537 0 obj <<
-/D [3501 0 R /XYZ 71.731 126.147 null]
->> endobj
-3538 0 obj <<
-/D [3501 0 R /XYZ 71.731 126.147 null]
->> endobj
-3500 0 obj <<
+3494 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F44 1884 0 R /F32 1119 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3541 0 obj <<
+3535 0 obj <<
 /Length 2707      
 /Filter /FlateDecode
 >>
@@ -12776,99 +12757,99 @@ NZ}nZ
 �[*�8�
�Dj���I��1��sC|�~�i�{�H���8�Z;��@H�v�����"im}@�3iI�u�+I�U��+Z��ƢV�:%��fL�>u��C�t#]\�h(!��OX���ác���$��sޠ�=_u�P�S,��t®6Y� 99�	�-��A��b���K��e�jH��N��8#�[9-޲,�����7����,��2d`��}_^���d|�D��hd�\>q=�0�O��.g�։UN�
 KNP����������z�/7�W�%����~Dž2�=`��«��~��� ^$O����P	7iɴ����,+���"\��\��0��8�	jkUN�,�Lsu�Uy�N=?ʮ�=��'Ֆ��yE�����h(�J*�/��8۸�l�B�_Ҿ�UNj��~��fa����ܓS1�$�Z���"��/�֭����=�$S�zg�����v<�'F׋+�w��}��7�~�}��
34�i��~_��9�#wW�k/Ǽ�����ȏ�E��O���Ŝh�Lot�X�m��o�����ͼ����;�,�:�!b@���j��O����S��endstream
 endobj
-3540 0 obj <<
+3534 0 obj <<
 /Type /Page
-/Contents 3541 0 R
-/Resources 3539 0 R
+/Contents 3535 0 R
+/Resources 3533 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3499 0 R
+/Parent 3493 0 R
+>> endobj
+3536 0 obj <<
+/D [3534 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3537 0 obj <<
+/D [3534 0 R /XYZ 71.731 688.254 null]
+>> endobj
+3538 0 obj <<
+/D [3534 0 R /XYZ 71.731 688.254 null]
+>> endobj
+3539 0 obj <<
+/D [3534 0 R /XYZ 71.731 657.37 null]
+>> endobj
+3540 0 obj <<
+/D [3534 0 R /XYZ 71.731 657.37 null]
+>> endobj
+3541 0 obj <<
+/D [3534 0 R /XYZ 71.731 587.631 null]
 >> endobj
 3542 0 obj <<
-/D [3540 0 R /XYZ 71.731 729.265 null]
+/D [3534 0 R /XYZ 71.731 587.631 null]
 >> endobj
 3543 0 obj <<
-/D [3540 0 R /XYZ 71.731 688.254 null]
+/D [3534 0 R /XYZ 210.674 576.837 null]
 >> endobj
 3544 0 obj <<
-/D [3540 0 R /XYZ 71.731 688.254 null]
+/D [3534 0 R /XYZ 137.035 499.128 null]
 >> endobj
 3545 0 obj <<
-/D [3540 0 R /XYZ 71.731 657.37 null]
+/D [3534 0 R /XYZ 71.731 487.726 null]
 >> endobj
 3546 0 obj <<
-/D [3540 0 R /XYZ 71.731 657.37 null]
+/D [3534 0 R /XYZ 71.731 449.514 null]
 >> endobj
 3547 0 obj <<
-/D [3540 0 R /XYZ 71.731 587.631 null]
+/D [3534 0 R /XYZ 258.006 436.663 null]
 >> endobj
 3548 0 obj <<
-/D [3540 0 R /XYZ 71.731 587.631 null]
+/D [3534 0 R /XYZ 394.451 410.76 null]
 >> endobj
 3549 0 obj <<
-/D [3540 0 R /XYZ 210.674 576.837 null]
+/D [3534 0 R /XYZ 71.731 397.808 null]
 >> endobj
 3550 0 obj <<
-/D [3540 0 R /XYZ 137.035 499.128 null]
+/D [3534 0 R /XYZ 71.731 391.419 null]
 >> endobj
 3551 0 obj <<
-/D [3540 0 R /XYZ 71.731 487.726 null]
+/D [3534 0 R /XYZ 288.129 379.875 null]
 >> endobj
 3552 0 obj <<
-/D [3540 0 R /XYZ 71.731 449.514 null]
+/D [3534 0 R /XYZ 111.088 366.924 null]
 >> endobj
 3553 0 obj <<
-/D [3540 0 R /XYZ 258.006 436.663 null]
+/D [3534 0 R /XYZ 325.619 366.924 null]
 >> endobj
 3554 0 obj <<
-/D [3540 0 R /XYZ 394.451 410.76 null]
+/D [3534 0 R /XYZ 71.731 346.834 null]
 >> endobj
 3555 0 obj <<
-/D [3540 0 R /XYZ 71.731 397.808 null]
+/D [3534 0 R /XYZ 263.437 336.04 null]
 >> endobj
 3556 0 obj <<
-/D [3540 0 R /XYZ 71.731 391.419 null]
+/D [3534 0 R /XYZ 71.731 323.088 null]
 >> endobj
 3557 0 obj <<
-/D [3540 0 R /XYZ 288.129 379.875 null]
+/D [3534 0 R /XYZ 100.413 310.137 null]
 >> endobj
 3558 0 obj <<
-/D [3540 0 R /XYZ 111.088 366.924 null]
+/D [3534 0 R /XYZ 71.731 290.047 null]
 >> endobj
 3559 0 obj <<
-/D [3540 0 R /XYZ 325.619 366.924 null]
+/D [3534 0 R /XYZ 71.731 267.133 null]
 >> endobj
 3560 0 obj <<
-/D [3540 0 R /XYZ 71.731 346.834 null]
+/D [3534 0 R /XYZ 71.731 222.6 null]
 >> endobj
 3561 0 obj <<
-/D [3540 0 R /XYZ 263.437 336.04 null]
->> endobj
-3562 0 obj <<
-/D [3540 0 R /XYZ 71.731 323.088 null]
->> endobj
-3563 0 obj <<
-/D [3540 0 R /XYZ 100.413 310.137 null]
->> endobj
-3564 0 obj <<
-/D [3540 0 R /XYZ 71.731 290.047 null]
->> endobj
-3565 0 obj <<
-/D [3540 0 R /XYZ 71.731 267.133 null]
->> endobj
-3566 0 obj <<
-/D [3540 0 R /XYZ 71.731 222.6 null]
->> endobj
-3567 0 obj <<
-/D [3540 0 R /XYZ 71.731 178.067 null]
+/D [3534 0 R /XYZ 71.731 178.067 null]
 >> endobj
 1529 0 obj <<
-/D [3540 0 R /XYZ 71.731 138.516 null]
+/D [3534 0 R /XYZ 71.731 138.516 null]
 >> endobj
-3539 0 obj <<
+3533 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3570 0 obj <<
+3564 0 obj <<
 /Length 3029      
 /Filter /FlateDecode
 >>
@@ -12891,111 +12872,111 @@ xڝk
 ��3+֟ss��
 ?���>��W�?a;����ģ��snJ�Ѭ��t�ǡkfp�ԍ
�"��uKE��ev��fcp�T���^�|��'k�3��Lr�W�e���E@��2&�)��Z������A7��i�n�B�m�#vR�����V��|'d�mX�yS���z���ǗO�?���wu���C���I_�*^��?SSYs�5�����;@��72��yc�V���Xcs��J/Yܺ��⨡��~-��6�?�"��'��
O����c?�[ӑi^�3!�:˅�lB���oDdF�֬mr���%��$Y���	�
��o���^�<��׬�endstream
 endobj
-3569 0 obj <<
+3563 0 obj <<
 /Type /Page
-/Contents 3570 0 R
-/Resources 3568 0 R
+/Contents 3564 0 R
+/Resources 3562 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3499 0 R
+/Parent 3493 0 R
 >> endobj
-3571 0 obj <<
-/D [3569 0 R /XYZ 71.731 729.265 null]
+3565 0 obj <<
+/D [3563 0 R /XYZ 71.731 729.265 null]
 >> endobj
 586 0 obj <<
-/D [3569 0 R /XYZ 461.484 707.841 null]
+/D [3563 0 R /XYZ 461.484 707.841 null]
+>> endobj
+3566 0 obj <<
+/D [3563 0 R /XYZ 71.731 697.476 null]
+>> endobj
+3567 0 obj <<
+/D [3563 0 R /XYZ 71.731 661.813 null]
+>> endobj
+3568 0 obj <<
+/D [3563 0 R /XYZ 71.731 643.781 null]
+>> endobj
+3569 0 obj <<
+/D [3563 0 R /XYZ 335.135 630.929 null]
+>> endobj
+3570 0 obj <<
+/D [3563 0 R /XYZ 117.651 617.978 null]
+>> endobj
+3571 0 obj <<
+/D [3563 0 R /XYZ 71.731 605.026 null]
 >> endobj
 3572 0 obj <<
-/D [3569 0 R /XYZ 71.731 697.476 null]
+/D [3563 0 R /XYZ 294.096 605.026 null]
+>> endobj
+1530 0 obj <<
+/D [3563 0 R /XYZ 71.731 587.926 null]
+>> endobj
+590 0 obj <<
+/D [3563 0 R /XYZ 237.169 544.828 null]
 >> endobj
 3573 0 obj <<
-/D [3569 0 R /XYZ 71.731 661.813 null]
+/D [3563 0 R /XYZ 71.731 541.265 null]
 >> endobj
 3574 0 obj <<
-/D [3569 0 R /XYZ 71.731 643.781 null]
+/D [3563 0 R /XYZ 118.555 499.074 null]
 >> endobj
 3575 0 obj <<
-/D [3569 0 R /XYZ 335.135 630.929 null]
+/D [3563 0 R /XYZ 526.195 490.61 null]
 >> endobj
 3576 0 obj <<
-/D [3569 0 R /XYZ 117.651 617.978 null]
+/D [3563 0 R /XYZ 71.731 457.033 null]
 >> endobj
 3577 0 obj <<
-/D [3569 0 R /XYZ 71.731 605.026 null]
+/D [3563 0 R /XYZ 71.731 393.392 null]
 >> endobj
 3578 0 obj <<
-/D [3569 0 R /XYZ 294.096 605.026 null]
->> endobj
-1530 0 obj <<
-/D [3569 0 R /XYZ 71.731 587.926 null]
->> endobj
-590 0 obj <<
-/D [3569 0 R /XYZ 237.169 544.828 null]
+/D [3563 0 R /XYZ 71.731 321.596 null]
 >> endobj
 3579 0 obj <<
-/D [3569 0 R /XYZ 71.731 541.265 null]
+/D [3563 0 R /XYZ 527.223 297.85 null]
 >> endobj
 3580 0 obj <<
-/D [3569 0 R /XYZ 118.555 499.074 null]
+/D [3563 0 R /XYZ 147.048 284.899 null]
 >> endobj
 3581 0 obj <<
-/D [3569 0 R /XYZ 526.195 490.61 null]
+/D [3563 0 R /XYZ 225.125 284.899 null]
 >> endobj
 3582 0 obj <<
-/D [3569 0 R /XYZ 71.731 457.033 null]
+/D [3563 0 R /XYZ 71.731 277.761 null]
 >> endobj
 3583 0 obj <<
-/D [3569 0 R /XYZ 71.731 393.392 null]
+/D [3563 0 R /XYZ 179.885 254.015 null]
 >> endobj
 3584 0 obj <<
-/D [3569 0 R /XYZ 71.731 321.596 null]
+/D [3563 0 R /XYZ 415.118 254.015 null]
 >> endobj
 3585 0 obj <<
-/D [3569 0 R /XYZ 527.223 297.85 null]
+/D [3563 0 R /XYZ 138.304 241.063 null]
 >> endobj
 3586 0 obj <<
-/D [3569 0 R /XYZ 147.048 284.899 null]
+/D [3563 0 R /XYZ 71.731 220.974 null]
 >> endobj
 3587 0 obj <<
-/D [3569 0 R /XYZ 225.125 284.899 null]
+/D [3563 0 R /XYZ 71.731 220.974 null]
 >> endobj
 3588 0 obj <<
-/D [3569 0 R /XYZ 71.731 277.761 null]
+/D [3563 0 R /XYZ 71.731 203.79 null]
 >> endobj
 3589 0 obj <<
-/D [3569 0 R /XYZ 179.885 254.015 null]
+/D [3563 0 R /XYZ 440.089 192.246 null]
 >> endobj
 3590 0 obj <<
-/D [3569 0 R /XYZ 415.118 254.015 null]
+/D [3563 0 R /XYZ 71.731 161.362 null]
 >> endobj
 3591 0 obj <<
-/D [3569 0 R /XYZ 138.304 241.063 null]
+/D [3563 0 R /XYZ 71.731 161.362 null]
 >> endobj
 3592 0 obj <<
-/D [3569 0 R /XYZ 71.731 220.974 null]
->> endobj
-3593 0 obj <<
-/D [3569 0 R /XYZ 71.731 220.974 null]
->> endobj
-3594 0 obj <<
-/D [3569 0 R /XYZ 71.731 203.79 null]
->> endobj
-3595 0 obj <<
-/D [3569 0 R /XYZ 440.089 192.246 null]
->> endobj
-3596 0 obj <<
-/D [3569 0 R /XYZ 71.731 161.362 null]
->> endobj
-3597 0 obj <<
-/D [3569 0 R /XYZ 71.731 161.362 null]
->> endobj
-3598 0 obj <<
-/D [3569 0 R /XYZ 71.731 111.888 null]
+/D [3563 0 R /XYZ 71.731 111.888 null]
 >> endobj
-3568 0 obj <<
+3562 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F44 1884 0 R /F32 1119 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3601 0 obj <<
+3595 0 obj <<
 /Length 2776      
 /Filter /FlateDecode
 >>
@@ -13013,123 +12994,123 @@ xڕm
 ����19%Q�5�p�!,|w�/����/�� �l��~�KR����s���L.��'�`��\��tc���n�iۄ����Ue�ȓ����}��n9h��J�?�;4�T(���¾��¯ԑ��^J2q�F����^W�
�	j%���q�o�	�:�F�u���Xizn��2$+Q�i�\��k�jߜ���E�8��{R��?آu�c�T<�讫F�����%��g�����&*~.%�S�U%
 ���ۄLd]����/�9�n|�z��"(���=1q�%�V����J~|�э-�����q�NA��{^�'8O�њ�Țl���2V��	�B���0��.��������z/Mm��(T�4��QV���\�(%�����UeS��k���N�(q����PZs��q2�y�w�a��u4Y�s0�[�)w��h����_��y�z���xp������g���/=�M*#O���Ba7�D,�`���lp�R�}��i�<j�(��ɍ���S������r�h�p�I���wE��
�J���7?�S_�_��]�7�R�67�t��n��������#�:$��ې�O�S�Ш&
���@����m�̈́�Z�� ����v��1L�}�z�4���-p������w;�����1�V�\P�8��?����&/�3endstream
 endobj
-3600 0 obj <<
+3594 0 obj <<
 /Type /Page
-/Contents 3601 0 R
-/Resources 3599 0 R
+/Contents 3595 0 R
+/Resources 3593 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3499 0 R
+/Parent 3493 0 R
+>> endobj
+3596 0 obj <<
+/D [3594 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3597 0 obj <<
+/D [3594 0 R /XYZ 71.731 695.392 null]
+>> endobj
+3598 0 obj <<
+/D [3594 0 R /XYZ 71.731 689.003 null]
+>> endobj
+3599 0 obj <<
+/D [3594 0 R /XYZ 71.731 618.516 null]
+>> endobj
+3600 0 obj <<
+/D [3594 0 R /XYZ 71.731 587.631 null]
+>> endobj
+3601 0 obj <<
+/D [3594 0 R /XYZ 71.731 556.747 null]
 >> endobj
 3602 0 obj <<
-/D [3600 0 R /XYZ 71.731 729.265 null]
+/D [3594 0 R /XYZ 235.228 533.001 null]
 >> endobj
 3603 0 obj <<
-/D [3600 0 R /XYZ 71.731 695.392 null]
+/D [3594 0 R /XYZ 71.731 512.912 null]
 >> endobj
 3604 0 obj <<
-/D [3600 0 R /XYZ 71.731 689.003 null]
+/D [3594 0 R /XYZ 282.395 502.117 null]
 >> endobj
 3605 0 obj <<
-/D [3600 0 R /XYZ 71.731 618.516 null]
+/D [3594 0 R /XYZ 500.324 502.117 null]
 >> endobj
 3606 0 obj <<
-/D [3600 0 R /XYZ 71.731 587.631 null]
+/D [3594 0 R /XYZ 300.306 489.166 null]
 >> endobj
 3607 0 obj <<
-/D [3600 0 R /XYZ 71.731 556.747 null]
+/D [3594 0 R /XYZ 71.731 476.214 null]
 >> endobj
 3608 0 obj <<
-/D [3600 0 R /XYZ 235.228 533.001 null]
+/D [3594 0 R /XYZ 71.731 453.201 null]
 >> endobj
 3609 0 obj <<
-/D [3600 0 R /XYZ 71.731 512.912 null]
+/D [3594 0 R /XYZ 71.731 384.868 null]
 >> endobj
 3610 0 obj <<
-/D [3600 0 R /XYZ 282.395 502.117 null]
+/D [3594 0 R /XYZ 246.016 372.105 null]
 >> endobj
 3611 0 obj <<
-/D [3600 0 R /XYZ 500.324 502.117 null]
+/D [3594 0 R /XYZ 71.731 364.966 null]
 >> endobj
 3612 0 obj <<
-/D [3600 0 R /XYZ 300.306 489.166 null]
+/D [3594 0 R /XYZ 178.27 354.172 null]
 >> endobj
 3613 0 obj <<
-/D [3600 0 R /XYZ 71.731 476.214 null]
+/D [3594 0 R /XYZ 71.731 342.052 null]
 >> endobj
 3614 0 obj <<
-/D [3600 0 R /XYZ 71.731 453.201 null]
+/D [3594 0 R /XYZ 71.731 321.183 null]
 >> endobj
 3615 0 obj <<
-/D [3600 0 R /XYZ 71.731 384.868 null]
+/D [3594 0 R /XYZ 462.665 309.639 null]
 >> endobj
 3616 0 obj <<
-/D [3600 0 R /XYZ 246.016 372.105 null]
+/D [3594 0 R /XYZ 71.731 289.549 null]
 >> endobj
 3617 0 obj <<
-/D [3600 0 R /XYZ 71.731 364.966 null]
+/D [3594 0 R /XYZ 71.731 278.655 null]
 >> endobj
 3618 0 obj <<
-/D [3600 0 R /XYZ 178.27 354.172 null]
+/D [3594 0 R /XYZ 71.731 273.674 null]
 >> endobj
 3619 0 obj <<
-/D [3600 0 R /XYZ 71.731 342.052 null]
+/D [3594 0 R /XYZ 81.694 250.859 null]
 >> endobj
 3620 0 obj <<
-/D [3600 0 R /XYZ 71.731 321.183 null]
+/D [3594 0 R /XYZ 81.694 237.908 null]
 >> endobj
 3621 0 obj <<
-/D [3600 0 R /XYZ 462.665 309.639 null]
+/D [3594 0 R /XYZ 71.731 235.751 null]
 >> endobj
 3622 0 obj <<
-/D [3600 0 R /XYZ 71.731 289.549 null]
+/D [3594 0 R /XYZ 81.694 219.975 null]
 >> endobj
 3623 0 obj <<
-/D [3600 0 R /XYZ 71.731 278.655 null]
+/D [3594 0 R /XYZ 344.309 207.024 null]
 >> endobj
 3624 0 obj <<
-/D [3600 0 R /XYZ 71.731 273.674 null]
+/D [3594 0 R /XYZ 140.643 194.072 null]
 >> endobj
 3625 0 obj <<
-/D [3600 0 R /XYZ 81.694 250.859 null]
+/D [3594 0 R /XYZ 270.568 194.072 null]
 >> endobj
 3626 0 obj <<
-/D [3600 0 R /XYZ 81.694 237.908 null]
+/D [3594 0 R /XYZ 333.642 194.072 null]
 >> endobj
 3627 0 obj <<
-/D [3600 0 R /XYZ 71.731 235.751 null]
+/D [3594 0 R /XYZ 71.731 173.983 null]
 >> endobj
 3628 0 obj <<
-/D [3600 0 R /XYZ 81.694 219.975 null]
+/D [3594 0 R /XYZ 309.019 163.188 null]
 >> endobj
 3629 0 obj <<
-/D [3600 0 R /XYZ 344.309 207.024 null]
+/D [3594 0 R /XYZ 179.902 150.237 null]
 >> endobj
 3630 0 obj <<
-/D [3600 0 R /XYZ 140.643 194.072 null]
->> endobj
-3631 0 obj <<
-/D [3600 0 R /XYZ 270.568 194.072 null]
->> endobj
-3632 0 obj <<
-/D [3600 0 R /XYZ 333.642 194.072 null]
->> endobj
-3633 0 obj <<
-/D [3600 0 R /XYZ 71.731 173.983 null]
+/D [3594 0 R /XYZ 494.944 150.237 null]
 >> endobj
-3634 0 obj <<
-/D [3600 0 R /XYZ 309.019 163.188 null]
->> endobj
-3635 0 obj <<
-/D [3600 0 R /XYZ 179.902 150.237 null]
->> endobj
-3636 0 obj <<
-/D [3600 0 R /XYZ 494.944 150.237 null]
->> endobj
-3599 0 obj <<
+3593 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3639 0 obj <<
+3633 0 obj <<
 /Length 2832      
 /Filter /FlateDecode
 >>
@@ -13146,84 +13127,84 @@ y
 E�fA�.�v�y�nNj��Zz5��SOK�j^N���֘d{�, ���"�T����T�i��)�1��n�<=6Xq&�+
�i�t�T-$�!gV�N8
 ��kS5<��ӆ�
�����s�/;n�<��|}�3�3��Q�6��s�Jl����N���Io��i���NS=r"{�'��KH�������,)�(�Pc�|���˛���yendstream
 endobj
-3638 0 obj <<
+3632 0 obj <<
 /Type /Page
-/Contents 3639 0 R
-/Resources 3637 0 R
+/Contents 3633 0 R
+/Resources 3631 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3499 0 R
+/Parent 3493 0 R
+>> endobj
+3634 0 obj <<
+/D [3632 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3635 0 obj <<
+/D [3632 0 R /XYZ 71.731 741.22 null]
+>> endobj
+3636 0 obj <<
+/D [3632 0 R /XYZ 71.731 718.306 null]
+>> endobj
+3637 0 obj <<
+/D [3632 0 R /XYZ 76.712 664.508 null]
+>> endobj
+3638 0 obj <<
+/D [3632 0 R /XYZ 81.694 646.575 null]
+>> endobj
+3639 0 obj <<
+/D [3632 0 R /XYZ 198.595 633.624 null]
 >> endobj
 3640 0 obj <<
-/D [3638 0 R /XYZ 71.731 729.265 null]
+/D [3632 0 R /XYZ 95.463 620.672 null]
 >> endobj
 3641 0 obj <<
-/D [3638 0 R /XYZ 71.731 741.22 null]
+/D [3632 0 R /XYZ 71.731 600.583 null]
+>> endobj
+1531 0 obj <<
+/D [3632 0 R /XYZ 71.731 540.971 null]
+>> endobj
+594 0 obj <<
+/D [3632 0 R /XYZ 402.85 495.717 null]
 >> endobj
 3642 0 obj <<
-/D [3638 0 R /XYZ 71.731 718.306 null]
+/D [3632 0 R /XYZ 71.731 491.887 null]
 >> endobj
 3643 0 obj <<
-/D [3638 0 R /XYZ 76.712 664.508 null]
+/D [3632 0 R /XYZ 118.555 449.696 null]
 >> endobj
 3644 0 obj <<
-/D [3638 0 R /XYZ 81.694 646.575 null]
+/D [3632 0 R /XYZ 71.731 395.999 null]
 >> endobj
 3645 0 obj <<
-/D [3638 0 R /XYZ 198.595 633.624 null]
+/D [3632 0 R /XYZ 71.731 345.309 null]
 >> endobj
 3646 0 obj <<
-/D [3638 0 R /XYZ 95.463 620.672 null]
+/D [3632 0 R /XYZ 395.22 319.506 null]
 >> endobj
 3647 0 obj <<
-/D [3638 0 R /XYZ 71.731 600.583 null]
->> endobj
-1531 0 obj <<
-/D [3638 0 R /XYZ 71.731 540.971 null]
->> endobj
-594 0 obj <<
-/D [3638 0 R /XYZ 402.85 495.717 null]
+/D [3632 0 R /XYZ 108.148 306.555 null]
 >> endobj
 3648 0 obj <<
-/D [3638 0 R /XYZ 71.731 491.887 null]
+/D [3632 0 R /XYZ 441.752 306.555 null]
 >> endobj
 3649 0 obj <<
-/D [3638 0 R /XYZ 118.555 449.696 null]
+/D [3632 0 R /XYZ 71.731 286.465 null]
 >> endobj
 3650 0 obj <<
-/D [3638 0 R /XYZ 71.731 395.999 null]
+/D [3632 0 R /XYZ 403.654 262.719 null]
 >> endobj
 3651 0 obj <<
-/D [3638 0 R /XYZ 71.731 345.309 null]
+/D [3632 0 R /XYZ 71.731 237.648 null]
 >> endobj
 3652 0 obj <<
-/D [3638 0 R /XYZ 395.22 319.506 null]
+/D [3632 0 R /XYZ 71.731 163.128 null]
 >> endobj
 3653 0 obj <<
-/D [3638 0 R /XYZ 108.148 306.555 null]
->> endobj
-3654 0 obj <<
-/D [3638 0 R /XYZ 441.752 306.555 null]
->> endobj
-3655 0 obj <<
-/D [3638 0 R /XYZ 71.731 286.465 null]
->> endobj
-3656 0 obj <<
-/D [3638 0 R /XYZ 403.654 262.719 null]
->> endobj
-3657 0 obj <<
-/D [3638 0 R /XYZ 71.731 237.648 null]
+/D [3632 0 R /XYZ 477.684 139.382 null]
 >> endobj
-3658 0 obj <<
-/D [3638 0 R /XYZ 71.731 163.128 null]
->> endobj
-3659 0 obj <<
-/D [3638 0 R /XYZ 477.684 139.382 null]
->> endobj
-3637 0 obj <<
+3631 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F35 1437 0 R /F23 1105 0 R /F44 1884 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3662 0 obj <<
+3656 0 obj <<
 /Length 2133      
 /Filter /FlateDecode
 >>
@@ -13241,78 +13222,78 @@ xڭXm
 �A���m��u��<�P���MLvqx1�AAWg6{����zBA5B�H��@�#U�A��:Ɵ4*������Wb����q:x�h�?Ŝ��
 u�N��k�sz���|��x�P1�T�^� =K���f��$A�ƘrW�Y��	l�I�{�s��;���#b?y����[����b�,��b��
 �`�i��_V����J�endstream
 endobj
-3661 0 obj <<
+3655 0 obj <<
 /Type /Page
-/Contents 3662 0 R
-/Resources 3660 0 R
+/Contents 3656 0 R
+/Resources 3654 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3680 0 R
+/Parent 3674 0 R
 >> endobj
-3663 0 obj <<
-/D [3661 0 R /XYZ 71.731 729.265 null]
+3657 0 obj <<
+/D [3655 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1533 0 obj <<
-/D [3661 0 R /XYZ 71.731 741.22 null]
+/D [3655 0 R /XYZ 71.731 741.22 null]
 >> endobj
-3664 0 obj <<
-/D [3661 0 R /XYZ 71.731 718.306 null]
+3658 0 obj <<
+/D [3655 0 R /XYZ 71.731 718.306 null]
 >> endobj
-3665 0 obj <<
-/D [3661 0 R /XYZ 71.731 536.224 null]
+3659 0 obj <<
+/D [3655 0 R /XYZ 71.731 536.224 null]
 >> endobj
-3666 0 obj <<
-/D [3661 0 R /XYZ 71.731 513.31 null]
+3660 0 obj <<
+/D [3655 0 R /XYZ 71.731 513.31 null]
 >> endobj
-3667 0 obj <<
-/D [3661 0 R /XYZ 71.731 360.882 null]
+3661 0 obj <<
+/D [3655 0 R /XYZ 71.731 360.882 null]
 >> endobj
-3668 0 obj <<
-/D [3661 0 R /XYZ 118.555 322.318 null]
+3662 0 obj <<
+/D [3655 0 R /XYZ 118.555 322.318 null]
 >> endobj
-3669 0 obj <<
-/D [3661 0 R /XYZ 211.992 313.853 null]
+3663 0 obj <<
+/D [3655 0 R /XYZ 211.992 313.853 null]
 >> endobj
-3670 0 obj <<
-/D [3661 0 R /XYZ 71.731 268.728 null]
+3664 0 obj <<
+/D [3655 0 R /XYZ 71.731 268.728 null]
 >> endobj
-3671 0 obj <<
-/D [3661 0 R /XYZ 242.937 261.974 null]
+3665 0 obj <<
+/D [3655 0 R /XYZ 242.937 261.974 null]
 >> endobj
-3672 0 obj <<
-/D [3661 0 R /XYZ 410.176 261.974 null]
+3666 0 obj <<
+/D [3655 0 R /XYZ 410.176 261.974 null]
 >> endobj
 1532 0 obj <<
-/D [3661 0 R /XYZ 71.731 241.884 null]
+/D [3655 0 R /XYZ 71.731 241.884 null]
 >> endobj
 598 0 obj <<
-/D [3661 0 R /XYZ 369.417 198.787 null]
+/D [3655 0 R /XYZ 369.417 198.787 null]
 >> endobj
-3673 0 obj <<
-/D [3661 0 R /XYZ 71.731 186.349 null]
+3667 0 obj <<
+/D [3655 0 R /XYZ 71.731 186.349 null]
 >> endobj
-3674 0 obj <<
-/D [3661 0 R /XYZ 413.928 177.227 null]
+3668 0 obj <<
+/D [3655 0 R /XYZ 413.928 177.227 null]
 >> endobj
-3675 0 obj <<
-/D [3661 0 R /XYZ 86.396 164.276 null]
+3669 0 obj <<
+/D [3655 0 R /XYZ 86.396 164.276 null]
 >> endobj
-3676 0 obj <<
-/D [3661 0 R /XYZ 71.731 157.138 null]
+3670 0 obj <<
+/D [3655 0 R /XYZ 71.731 157.138 null]
 >> endobj
-3677 0 obj <<
-/D [3661 0 R /XYZ 492.055 146.343 null]
+3671 0 obj <<
+/D [3655 0 R /XYZ 492.055 146.343 null]
 >> endobj
-3678 0 obj <<
-/D [3661 0 R /XYZ 119.931 133.392 null]
+3672 0 obj <<
+/D [3655 0 R /XYZ 119.931 133.392 null]
 >> endobj
-3679 0 obj <<
-/D [3661 0 R /XYZ 525.26 133.392 null]
+3673 0 obj <<
+/D [3655 0 R /XYZ 525.26 133.392 null]
 >> endobj
-3660 0 obj <<
+3654 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F35 1437 0 R /F23 1105 0 R /F44 1884 0 R /F32 1119 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3683 0 obj <<
+3677 0 obj <<
 /Length 3286      
 /Filter /FlateDecode
 >>
@@ -13330,84 +13311,84 @@ t
 ��l�{�l�޸�G��g:�UoL˶�篹ᡁ8+��t#��i!e�����M���2��3�Y�wQ�zzɂ`�����?
 �ׂt���O�>1
���D��U�A櫯��z������endstream
 endobj
-3682 0 obj <<
+3676 0 obj <<
 /Type /Page
-/Contents 3683 0 R
-/Resources 3681 0 R
+/Contents 3677 0 R
+/Resources 3675 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3680 0 R
+/Parent 3674 0 R
+>> endobj
+3678 0 obj <<
+/D [3676 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3679 0 obj <<
+/D [3676 0 R /XYZ 71.731 741.22 null]
+>> endobj
+3680 0 obj <<
+/D [3676 0 R /XYZ 71.731 718.306 null]
+>> endobj
+3681 0 obj <<
+/D [3676 0 R /XYZ 71.731 718.306 null]
+>> endobj
+602 0 obj <<
+/D [3676 0 R /XYZ 421.51 645.157 null]
+>> endobj
+3682 0 obj <<
+/D [3676 0 R /XYZ 71.731 632.719 null]
+>> endobj
+3683 0 obj <<
+/D [3676 0 R /XYZ 71.731 579.662 null]
 >> endobj
 3684 0 obj <<
-/D [3682 0 R /XYZ 71.731 729.265 null]
+/D [3676 0 R /XYZ 71.731 507.867 null]
 >> endobj
 3685 0 obj <<
-/D [3682 0 R /XYZ 71.731 741.22 null]
+/D [3676 0 R /XYZ 71.731 476.982 null]
 >> endobj
 3686 0 obj <<
-/D [3682 0 R /XYZ 71.731 718.306 null]
+/D [3676 0 R /XYZ 71.731 409.301 null]
 >> endobj
 3687 0 obj <<
-/D [3682 0 R /XYZ 71.731 718.306 null]
->> endobj
-602 0 obj <<
-/D [3682 0 R /XYZ 421.51 645.157 null]
+/D [3676 0 R /XYZ 71.731 377.077 null]
 >> endobj
 3688 0 obj <<
-/D [3682 0 R /XYZ 71.731 632.719 null]
+/D [3676 0 R /XYZ 71.731 307.339 null]
 >> endobj
 3689 0 obj <<
-/D [3682 0 R /XYZ 71.731 579.662 null]
+/D [3676 0 R /XYZ 71.731 249.834 null]
+>> endobj
+1534 0 obj <<
+/D [3676 0 R /XYZ 71.731 223.931 null]
+>> endobj
+606 0 obj <<
+/D [3676 0 R /XYZ 284.626 186.716 null]
 >> endobj
 3690 0 obj <<
-/D [3682 0 R /XYZ 71.731 507.867 null]
+/D [3676 0 R /XYZ 71.731 176.351 null]
 >> endobj
 3691 0 obj <<
-/D [3682 0 R /XYZ 71.731 476.982 null]
+/D [3676 0 R /XYZ 445.066 153.64 null]
 >> endobj
 3692 0 obj <<
-/D [3682 0 R /XYZ 71.731 409.301 null]
+/D [3676 0 R /XYZ 503.263 153.64 null]
 >> endobj
 3693 0 obj <<
-/D [3682 0 R /XYZ 71.731 377.077 null]
+/D [3676 0 R /XYZ 270.523 140.688 null]
 >> endobj
 3694 0 obj <<
-/D [3682 0 R /XYZ 71.731 307.339 null]
+/D [3676 0 R /XYZ 71.731 120.599 null]
 >> endobj
 3695 0 obj <<
-/D [3682 0 R /XYZ 71.731 249.834 null]
->> endobj
-1534 0 obj <<
-/D [3682 0 R /XYZ 71.731 223.931 null]
->> endobj
-606 0 obj <<
-/D [3682 0 R /XYZ 284.626 186.716 null]
+/D [3676 0 R /XYZ 71.731 120.599 null]
 >> endobj
 3696 0 obj <<
-/D [3682 0 R /XYZ 71.731 176.351 null]
->> endobj
-3697 0 obj <<
-/D [3682 0 R /XYZ 445.066 153.64 null]
->> endobj
-3698 0 obj <<
-/D [3682 0 R /XYZ 503.263 153.64 null]
->> endobj
-3699 0 obj <<
-/D [3682 0 R /XYZ 270.523 140.688 null]
+/D [3676 0 R /XYZ 71.731 115.618 null]
 >> endobj
-3700 0 obj <<
-/D [3682 0 R /XYZ 71.731 120.599 null]
->> endobj
-3701 0 obj <<
-/D [3682 0 R /XYZ 71.731 120.599 null]
->> endobj
-3702 0 obj <<
-/D [3682 0 R /XYZ 71.731 115.618 null]
->> endobj
-3681 0 obj <<
+3675 0 obj <<
 /Font << /F33 1210 0 R /F35 1437 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3705 0 obj <<
+3699 0 obj <<
 /Length 1455      
 /Filter /FlateDecode
 >>
@@ -13420,102 +13401,102 @@ c<
 ��?HE���8���������l��28�a���f��lS6�8,Y�cb�RΪS�֐�[r�r�˂s%m Y�e���楇W�@	{eXk֎ڡW��V���T�����Dj ���Mc���!��q(��v���i��[텨�'wz�0�����>[��*>�@IΏ��o(��A�(�[t��C�jV7�h>�7��
�s�@%���ќ
�@������.z�K�-�s�xtW�_��p��v#7�F$@�t«��W�� G�^J.m�����~� 皦����d�L��S�e�ʠ4$O(�65�������0ˏ��!�/+�2o�FWd` �ƂL.�����ŧ�z��h^���s�Q^ݴ�ۂ\|%J|��۷Qz&��a��j+�A�=˯J4����_35ܙ�oφ��L����kg���9����H�ˡ�/�$'v��yF�y+͟�0<
 ���W��c*+.�=٪�����!LP��?CDN~��$Ap���v���Q�����O�endstream
 endobj
-3704 0 obj <<
+3698 0 obj <<
 /Type /Page
-/Contents 3705 0 R
-/Resources 3703 0 R
+/Contents 3699 0 R
+/Resources 3697 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3680 0 R
+/Parent 3674 0 R
+>> endobj
+3700 0 obj <<
+/D [3698 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3701 0 obj <<
+/D [3698 0 R /XYZ 71.731 741.22 null]
+>> endobj
+3702 0 obj <<
+/D [3698 0 R /XYZ 89.664 708.344 null]
+>> endobj
+3703 0 obj <<
+/D [3698 0 R /XYZ 119.054 690.411 null]
+>> endobj
+3704 0 obj <<
+/D [3698 0 R /XYZ 147.008 690.411 null]
+>> endobj
+3705 0 obj <<
+/D [3698 0 R /XYZ 71.731 683.407 null]
 >> endobj
 3706 0 obj <<
-/D [3704 0 R /XYZ 71.731 729.265 null]
+/D [3698 0 R /XYZ 284.172 672.478 null]
 >> endobj
 3707 0 obj <<
-/D [3704 0 R /XYZ 71.731 741.22 null]
+/D [3698 0 R /XYZ 399.456 646.575 null]
 >> endobj
 3708 0 obj <<
-/D [3704 0 R /XYZ 89.664 708.344 null]
+/D [3698 0 R /XYZ 76.712 615.691 null]
 >> endobj
 3709 0 obj <<
-/D [3704 0 R /XYZ 119.054 690.411 null]
+/D [3698 0 R /XYZ 89.664 597.758 null]
 >> endobj
 3710 0 obj <<
-/D [3704 0 R /XYZ 147.008 690.411 null]
+/D [3698 0 R /XYZ 71.731 590.62 null]
 >> endobj
 3711 0 obj <<
-/D [3704 0 R /XYZ 71.731 683.407 null]
+/D [3698 0 R /XYZ 71.731 590.62 null]
 >> endobj
 3712 0 obj <<
-/D [3704 0 R /XYZ 284.172 672.478 null]
+/D [3698 0 R /XYZ 71.731 573.437 null]
 >> endobj
 3713 0 obj <<
-/D [3704 0 R /XYZ 399.456 646.575 null]
+/D [3698 0 R /XYZ 159.123 561.893 null]
 >> endobj
 3714 0 obj <<
-/D [3704 0 R /XYZ 76.712 615.691 null]
+/D [3698 0 R /XYZ 304.466 561.893 null]
 >> endobj
 3715 0 obj <<
-/D [3704 0 R /XYZ 89.664 597.758 null]
+/D [3698 0 R /XYZ 71.731 554.755 null]
 >> endobj
 3716 0 obj <<
-/D [3704 0 R /XYZ 71.731 590.62 null]
+/D [3698 0 R /XYZ 71.731 554.755 null]
 >> endobj
 3717 0 obj <<
-/D [3704 0 R /XYZ 71.731 590.62 null]
+/D [3698 0 R /XYZ 119.054 543.96 null]
+>> endobj
+1535 0 obj <<
+/D [3698 0 R /XYZ 76.712 508.095 null]
+>> endobj
+610 0 obj <<
+/D [3698 0 R /XYZ 257.368 473.624 null]
 >> endobj
 3718 0 obj <<
-/D [3704 0 R /XYZ 71.731 573.437 null]
+/D [3698 0 R /XYZ 71.731 464.986 null]
 >> endobj
 3719 0 obj <<
-/D [3704 0 R /XYZ 159.123 561.893 null]
+/D [3698 0 R /XYZ 71.731 447.557 null]
 >> endobj
 3720 0 obj <<
-/D [3704 0 R /XYZ 304.466 561.893 null]
+/D [3698 0 R /XYZ 71.731 447.557 null]
 >> endobj
 3721 0 obj <<
-/D [3704 0 R /XYZ 71.731 554.755 null]
+/D [3698 0 R /XYZ 106.501 436.762 null]
 >> endobj
 3722 0 obj <<
-/D [3704 0 R /XYZ 71.731 554.755 null]
+/D [3698 0 R /XYZ 71.731 429.758 null]
 >> endobj
 3723 0 obj <<
-/D [3704 0 R /XYZ 119.054 543.96 null]
->> endobj
-1535 0 obj <<
-/D [3704 0 R /XYZ 76.712 508.095 null]
->> endobj
-610 0 obj <<
-/D [3704 0 R /XYZ 257.368 473.624 null]
+/D [3698 0 R /XYZ 234.877 418.829 null]
 >> endobj
 3724 0 obj <<
-/D [3704 0 R /XYZ 71.731 464.986 null]
+/D [3698 0 R /XYZ 71.731 411.691 null]
 >> endobj
 3725 0 obj <<
-/D [3704 0 R /XYZ 71.731 447.557 null]
+/D [3698 0 R /XYZ 71.731 388.777 null]
 >> endobj
-3726 0 obj <<
-/D [3704 0 R /XYZ 71.731 447.557 null]
->> endobj
-3727 0 obj <<
-/D [3704 0 R /XYZ 106.501 436.762 null]
->> endobj
-3728 0 obj <<
-/D [3704 0 R /XYZ 71.731 429.758 null]
->> endobj
-3729 0 obj <<
-/D [3704 0 R /XYZ 234.877 418.829 null]
->> endobj
-3730 0 obj <<
-/D [3704 0 R /XYZ 71.731 411.691 null]
->> endobj
-3731 0 obj <<
-/D [3704 0 R /XYZ 71.731 388.777 null]
->> endobj
-3703 0 obj <<
+3697 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F35 1437 0 R /F32 1119 0 R /F53 2143 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3734 0 obj <<
+3728 0 obj <<
 /Length 1686      
 /Filter /FlateDecode
 >>
@@ -13526,21 +13507,21 @@ xڥXm
 x�ZB�Ԩ�l�$y[ռ/�(�\��<�WO�X{����&���^����I:Gc���BE�T�.�����������_Fks"]���*)��,E�HfHP��Ќ�q�U�E���0��sUz{��u�a �$+̠�R]$3}E&����Ijk�8`���У����#��0�8�9+�Wz�{��������g��)�5�`Ӿ��)���ı�<��X~���YD#�%�0U|�W�$R Q���|��y�
 ���H�0��g�T+y��@�~Es)�1�Y��0��2��B{g�Ko����~����Rjl��Sr��8��H��F�q��1��r��$��n�~y�A��D�j-Fj��g����j�6l]�݁uн�pH��ay�k�B)q*y������yfMh'UV�WKV���(�&Mġi74�D�+��#�a��CM`L��bj�sy��O�`�d՜)�N��.�zP��n��`�0w1�eS��P2vy5�Z�ћ�\la\�T��p���D���a�2�#ʉ �
 ��G�L���Ԧ�Cm�t�J�\Y8]�_��RH_�"t�M#�a���"�
S"9�ɤ�������1�C���c+�P���^^uQO=�Ҍ�>���׍�h`��\�����dE�w��PH��=P���/����J6L���;%}��N�c�B�g
+:�p��̐�j��23�*^<��L�K��1�ӘDhfn�����ΝO����������_F����J�N�U�veM�M{��������mC��L�X�x��khnѧ����X�Ⱥ�������s��ګ�v��tr�4������+�:C�>�v��?�݌����J"���е�0�l^L%{l�Z�m0p�j�tY�Y�]^I{���Bwy5��uˠ�W�'�rSO���L���rX����ES��<�U+�|X<1�dUNȬ���~�u^��[��.؅�'���KF�}�h�uWh6ѵ��������endstream
 endobj
-3733 0 obj <<
+3727 0 obj <<
 /Type /Page
-/Contents 3734 0 R
-/Resources 3732 0 R
+/Contents 3728 0 R
+/Resources 3726 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3680 0 R
+/Parent 3674 0 R
 >> endobj
-3735 0 obj <<
-/D [3733 0 R /XYZ 71.731 729.265 null]
+3729 0 obj <<
+/D [3727 0 R /XYZ 71.731 729.265 null]
 >> endobj
-3732 0 obj <<
+3726 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3738 0 obj <<
+3732 0 obj <<
 /Length 1554      
 /Filter /FlateDecode
 >>
@@ -13556,21 +13537,21 @@ k
 Nj�2-q#�9ӳ��|@7^��<
��pj�Y�
 ޷�	h�vG@	�k�r�ʣ/��̶����mP���C7@�}��~������Rd�D9�SQ�Z�Y^	�V�̊�mE��p��w�(�B|鋟�s�Z�a?溄	E=�b3�Z�-K
�BS^j�`>�'Rh��������D=�iFQ�7w#���C?���)�'\�:�< �N�^P��d���h(sQr��e�"����6ϐ&�RS�ͅ߄�&����]{�43�Z�8/F�ɕi�L]0d������A=9�¶�bZ��1�u��7}#�ф��h�����NNJ]���+����	�z�~�-�)	�µMG�$J��/�����9�_�؋qa����:�M��U^N7��"yr��=�D�Bֽ.L���n���0b���k�t�yd�D�e��&�d����ׯ=i���`6��an���ǟ�l����ǙXH�/~��̾?e�&�S���t�|�s���[{�endstream
 endobj
-3737 0 obj <<
+3731 0 obj <<
 /Type /Page
-/Contents 3738 0 R
-/Resources 3736 0 R
+/Contents 3732 0 R
+/Resources 3730 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3680 0 R
+/Parent 3674 0 R
 >> endobj
-3739 0 obj <<
-/D [3737 0 R /XYZ 71.731 729.265 null]
+3733 0 obj <<
+/D [3731 0 R /XYZ 71.731 729.265 null]
 >> endobj
-3736 0 obj <<
+3730 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3742 0 obj <<
+3736 0 obj <<
 /Length 1561      
 /Filter /FlateDecode
 >>
@@ -13581,21 +13562,21 @@ B
 �.���<�u�Ƀ*B�Nt�|��$[�p5h1Պ*�,*B��n��ID�"i7��Ҩ�aL���ij�.����x���YM��B/�J(�5ĴGlV�{o�G�R���!�!�w�&�~�SÝ)A�Dv��U�ҵ�Y&�kzkDSf�&��fMٻb��4���2N��9���wH��4�Z�"�Lh��2���Z���>^�t֕9<oL��}nK-�A	���[�_�e�d!�n*��V�����ˀN���ÁT�-�?����os�����,�"
�W��t��vk�ڼHC��
��(�:�J����m��	D/ҴH�㏗gW�o�����Տ�Cg��Ǘ�Ox���9win\��>��?o�. ��}g�݁�����ss����~(�OO�?^��6z:��o�\`�9_�SEg)�QU�GT�.���:�wV=�&����KQݐ:k��߭��=����r��:,8#9����Q@�x3�����_5uk&Ku�u�ɐ撘z���t�\s��K������
��á	�9Z�YƑ�(~��{$T����	�B�TY��E	����٦
YUz��J���-���L��V��z(=^~�p�L<�J����@9�)�e��yr_С关���u���9c���Z^�[5n�$�^S��_꾍^W�(��j�z>rm���s-!��څ����n����JKe�I6���³�̪T*O
 �_�p�|Jk
��J��d�kQ�Q#��k��2�S�#M}�m
kF�uխ���0�T�a4a�J���;�?��8j�|IW�L�����"]T7��-��6��s��ǶjI�[�4�����Byp29�鬻ӿX�&�endstream
 endobj
-3741 0 obj <<
+3735 0 obj <<
 /Type /Page
-/Contents 3742 0 R
-/Resources 3740 0 R
+/Contents 3736 0 R
+/Resources 3734 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3680 0 R
+/Parent 3674 0 R
 >> endobj
-3743 0 obj <<
-/D [3741 0 R /XYZ 71.731 729.265 null]
+3737 0 obj <<
+/D [3735 0 R /XYZ 71.731 729.265 null]
 >> endobj
-3740 0 obj <<
+3734 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3746 0 obj <<
+3740 0 obj <<
 /Length 2060      
 /Filter /FlateDecode
 >>
@@ -13612,91 +13593,91 @@ L
 -c
>~�)mW�U�R�[���Ge{mѿ�_
 �������{���,v;�e뷿���W�R���y�*�=�x�ڲc�8�/0�H(N�h���E2G"G{2�ìi��)�K� �������+2(��m�]]<{z2���>Ar�⇖��aZ�~�غ.��F�j�b��{b���4�μ��F��oe�n�����δ��o���߆�7G��,~F��"+U�I��Uty��yendstream
 endobj
-3745 0 obj <<
+3739 0 obj <<
 /Type /Page
-/Contents 3746 0 R
-/Resources 3744 0 R
+/Contents 3740 0 R
+/Resources 3738 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3760 0 R
-/Annots [ 3749 0 R 3750 0 R 3751 0 R ]
+/Parent 3754 0 R
+/Annots [ 3743 0 R 3744 0 R 3745 0 R ]
 >> endobj
-3749 0 obj <<
+3743 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [244.528 377.276 410.209 386.188]
 /Subtype /Link
 /A << /S /GoTo /D (cvs) >>
 >> endobj
-3750 0 obj <<
+3744 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [494.336 351.373 537.983 360.285]
 /Subtype /Link
 /A << /S /GoTo /D (tinderbox) >>
 >> endobj
-3751 0 obj <<
+3745 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [71.731 338.422 267.724 347.333]
 /Subtype /Link
 /A << /S /GoTo /D (tinderbox) >>
 >> endobj
-3747 0 obj <<
-/D [3745 0 R /XYZ 71.731 729.265 null]
+3741 0 obj <<
+/D [3739 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1536 0 obj <<
-/D [3745 0 R /XYZ 71.731 484.184 null]
+/D [3739 0 R /XYZ 71.731 484.184 null]
 >> endobj
 614 0 obj <<
-/D [3745 0 R /XYZ 449.605 438.93 null]
+/D [3739 0 R /XYZ 449.605 438.93 null]
 >> endobj
 1537 0 obj <<
-/D [3745 0 R /XYZ 71.731 435.1 null]
+/D [3739 0 R /XYZ 71.731 435.1 null]
 >> endobj
 618 0 obj <<
-/D [3745 0 R /XYZ 159.442 399.558 null]
+/D [3739 0 R /XYZ 159.442 399.558 null]
 >> endobj
-3748 0 obj <<
-/D [3745 0 R /XYZ 71.731 392.205 null]
+3742 0 obj <<
+/D [3739 0 R /XYZ 71.731 392.205 null]
 >> endobj
 1538 0 obj <<
-/D [3745 0 R /XYZ 71.731 333.441 null]
+/D [3739 0 R /XYZ 71.731 333.441 null]
 >> endobj
 622 0 obj <<
-/D [3745 0 R /XYZ 141.108 296.225 null]
+/D [3739 0 R /XYZ 141.108 296.225 null]
 >> endobj
-3752 0 obj <<
-/D [3745 0 R /XYZ 71.731 288.873 null]
+3746 0 obj <<
+/D [3739 0 R /XYZ 71.731 288.873 null]
 >> endobj
-3753 0 obj <<
-/D [3745 0 R /XYZ 71.731 268.962 null]
+3747 0 obj <<
+/D [3739 0 R /XYZ 71.731 268.962 null]
 >> endobj
-3754 0 obj <<
-/D [3745 0 R /XYZ 331.48 245.216 null]
+3748 0 obj <<
+/D [3739 0 R /XYZ 331.48 245.216 null]
 >> endobj
-3755 0 obj <<
-/D [3745 0 R /XYZ 86.396 219.314 null]
+3749 0 obj <<
+/D [3739 0 R /XYZ 86.396 219.314 null]
 >> endobj
-3756 0 obj <<
-/D [3745 0 R /XYZ 71.731 212.175 null]
+3750 0 obj <<
+/D [3739 0 R /XYZ 71.731 212.175 null]
 >> endobj
-3757 0 obj <<
-/D [3745 0 R /XYZ 225.881 188.429 null]
+3751 0 obj <<
+/D [3739 0 R /XYZ 225.881 188.429 null]
 >> endobj
-3758 0 obj <<
-/D [3745 0 R /XYZ 71.731 181.291 null]
+3752 0 obj <<
+/D [3739 0 R /XYZ 71.731 181.291 null]
 >> endobj
-3759 0 obj <<
-/D [3745 0 R /XYZ 373.626 157.545 null]
+3753 0 obj <<
+/D [3739 0 R /XYZ 373.626 157.545 null]
 >> endobj
 1539 0 obj <<
-/D [3745 0 R /XYZ 71.731 150.407 null]
+/D [3739 0 R /XYZ 71.731 150.407 null]
 >> endobj
-3744 0 obj <<
+3738 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3763 0 obj <<
+3757 0 obj <<
 /Length 1277      
 /Filter /FlateDecode
 >>
@@ -13714,66 +13695,66 @@ h"
 ���V퐠(
�&�>�6T���a��{����(;i�[�C�5��C
 p���[���?�a܏��": 'Ҟ���%��	���=+�C���Fxn|?�1����q��𥥗�]����������g�@AY?/_I�G<�Ƽ�ŽgxB��.�'�T)���� ݂"T�>��������S�ׂ�3y�J��=�~z�2Bq��R~��i��ʠa���N�#��r1^���𲂊�F�X��g�z�Ĝ��������c��脏e�;�$�%�������e��]���{7_�UZ��Q1y��/2x-����,�����3�W�endstream
 endobj
-3762 0 obj <<
+3756 0 obj <<
 /Type /Page
-/Contents 3763 0 R
-/Resources 3761 0 R
+/Contents 3757 0 R
+/Resources 3755 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3760 0 R
+/Parent 3754 0 R
 >> endobj
-3764 0 obj <<
-/D [3762 0 R /XYZ 71.731 729.265 null]
+3758 0 obj <<
+/D [3756 0 R /XYZ 71.731 729.265 null]
 >> endobj
 626 0 obj <<
-/D [3762 0 R /XYZ 204.675 707.841 null]
+/D [3756 0 R /XYZ 204.675 707.841 null]
 >> endobj
-3765 0 obj <<
-/D [3762 0 R /XYZ 71.731 700.488 null]
+3759 0 obj <<
+/D [3756 0 R /XYZ 71.731 700.488 null]
 >> endobj
-3766 0 obj <<
-/D [3762 0 R /XYZ 71.731 674.765 null]
+3760 0 obj <<
+/D [3756 0 R /XYZ 71.731 674.765 null]
 >> endobj
-3767 0 obj <<
-/D [3762 0 R /XYZ 249.701 674.765 null]
+3761 0 obj <<
+/D [3756 0 R /XYZ 249.701 674.765 null]
 >> endobj
-3768 0 obj <<
-/D [3762 0 R /XYZ 273.821 661.813 null]
+3762 0 obj <<
+/D [3756 0 R /XYZ 273.821 661.813 null]
 >> endobj
-3769 0 obj <<
-/D [3762 0 R /XYZ 71.731 654.675 null]
+3763 0 obj <<
+/D [3756 0 R /XYZ 71.731 654.675 null]
 >> endobj
 1540 0 obj <<
-/D [3762 0 R /XYZ 71.731 597.888 null]
+/D [3756 0 R /XYZ 71.731 597.888 null]
 >> endobj
 630 0 obj <<
-/D [3762 0 R /XYZ 189.239 560.673 null]
+/D [3756 0 R /XYZ 189.239 560.673 null]
 >> endobj
-3770 0 obj <<
-/D [3762 0 R /XYZ 71.731 553.32 null]
+3764 0 obj <<
+/D [3756 0 R /XYZ 71.731 553.32 null]
 >> endobj
-3771 0 obj <<
-/D [3762 0 R /XYZ 350.294 514.645 null]
+3765 0 obj <<
+/D [3756 0 R /XYZ 350.294 514.645 null]
 >> endobj
 1541 0 obj <<
-/D [3762 0 R /XYZ 71.731 507.507 null]
+/D [3756 0 R /XYZ 71.731 507.507 null]
 >> endobj
 634 0 obj <<
-/D [3762 0 R /XYZ 261.414 470.292 null]
+/D [3756 0 R /XYZ 261.414 470.292 null]
 >> endobj
-3772 0 obj <<
-/D [3762 0 R /XYZ 71.731 462.939 null]
+3766 0 obj <<
+/D [3756 0 R /XYZ 71.731 462.939 null]
 >> endobj
-3773 0 obj <<
-/D [3762 0 R /XYZ 71.731 437.216 null]
+3767 0 obj <<
+/D [3756 0 R /XYZ 71.731 437.216 null]
 >> endobj
-3774 0 obj <<
-/D [3762 0 R /XYZ 365.641 437.216 null]
+3768 0 obj <<
+/D [3756 0 R /XYZ 365.641 437.216 null]
 >> endobj
-3761 0 obj <<
+3755 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3777 0 obj <<
+3771 0 obj <<
 /Length 2396      
 /Filter /FlateDecode
 >>
@@ -13789,117 +13770,117 @@ K
 {	�o��Ѩ��	2  �n�C�ם
 U�S�����7�ѹ#�*�B$�zؑ���X�?\‡Hjf�6S��g@�����ߗ��B,Y,�l��3 x��x�Z@s6�E�0�!��P�z�7_��~9��"I��ؖ!�6lUa!o�w��|9�ӭ�-�(��� ��ɑ�|�F�U_0�	yy�	2�n��Ԯ��{S;nTP��N���(�v�O���t}(�N.C��VL��7�n���eXm�2����7���+������4_ƣ`�o�hk��q���͌�7��T6�i���1�g;8�P�M�7G�&���)��᎗�ݬp w1��Ŵ��=�/z~���U�K��Ы2�����Xk�R�F&�ݬ�elj�n�|@�1��%	nt[-�e�V�f�^�|	�s����]�<W�P���`�v�Ǫb�Y�;>��y�~�m�%��f�e�{A.��w���$I�xߟP.bE�B{����/�Z��U�a���	�#��]5�Z���x�T�q�ˠ��J�e����	�N;>a|jv�������I�x��C7W�����JQ�)��nE��n�E�T�o�W鷀q4��0H�8u�Bwm Y����)���Q�t?��YM�����wǫ��O��^OΜ���v�^���VuE��+�;h�g��%����3JF���W��8=����ݽ�P�AEq%�e�ZL���_�/����Q3
�,M����Up���V�\��j#����k���PA|�-����jV�&��	���|瀞�'�'!@��eA�_����	��z�+V�%%1�2��\�oϦ��/m��~;Mendstream
 endobj
-3776 0 obj <<
+3770 0 obj <<
 /Type /Page
-/Contents 3777 0 R
-/Resources 3775 0 R
+/Contents 3771 0 R
+/Resources 3769 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3760 0 R
+/Parent 3754 0 R
 >> endobj
-3778 0 obj <<
-/D [3776 0 R /XYZ 71.731 729.265 null]
+3772 0 obj <<
+/D [3770 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1640 0 obj <<
-/D [3776 0 R /XYZ 71.731 718.306 null]
+/D [3770 0 R /XYZ 71.731 718.306 null]
 >> endobj
 638 0 obj <<
-/D [3776 0 R /XYZ 320.829 703.236 null]
+/D [3770 0 R /XYZ 320.829 703.236 null]
 >> endobj
 1641 0 obj <<
-/D [3776 0 R /XYZ 71.731 692.184 null]
+/D [3770 0 R /XYZ 71.731 692.184 null]
 >> endobj
 642 0 obj <<
-/D [3776 0 R /XYZ 205.304 651.159 null]
+/D [3770 0 R /XYZ 205.304 651.159 null]
 >> endobj
-3779 0 obj <<
-/D [3776 0 R /XYZ 71.731 642.336 null]
+3773 0 obj <<
+/D [3770 0 R /XYZ 71.731 642.336 null]
 >> endobj
-3780 0 obj <<
-/D [3776 0 R /XYZ 506.431 629.6 null]
+3774 0 obj <<
+/D [3770 0 R /XYZ 506.431 629.6 null]
 >> endobj
 1642 0 obj <<
-/D [3776 0 R /XYZ 71.731 583.608 null]
+/D [3770 0 R /XYZ 71.731 583.608 null]
 >> endobj
 646 0 obj <<
-/D [3776 0 R /XYZ 317.599 540.51 null]
+/D [3770 0 R /XYZ 317.599 540.51 null]
+>> endobj
+3775 0 obj <<
+/D [3770 0 R /XYZ 71.731 528.072 null]
+>> endobj
+3776 0 obj <<
+/D [3770 0 R /XYZ 71.731 493.048 null]
+>> endobj
+3777 0 obj <<
+/D [3770 0 R /XYZ 71.731 490.891 null]
+>> endobj
+3778 0 obj <<
+/D [3770 0 R /XYZ 71.731 485.91 null]
+>> endobj
+3779 0 obj <<
+/D [3770 0 R /XYZ 89.664 465.153 null]
+>> endobj
+3780 0 obj <<
+/D [3770 0 R /XYZ 128.486 465.153 null]
 >> endobj
 3781 0 obj <<
-/D [3776 0 R /XYZ 71.731 528.072 null]
+/D [3770 0 R /XYZ 171.417 452.201 null]
 >> endobj
 3782 0 obj <<
-/D [3776 0 R /XYZ 71.731 493.048 null]
+/D [3770 0 R /XYZ 71.731 450.045 null]
 >> endobj
 3783 0 obj <<
-/D [3776 0 R /XYZ 71.731 490.891 null]
+/D [3770 0 R /XYZ 89.664 434.269 null]
 >> endobj
 3784 0 obj <<
-/D [3776 0 R /XYZ 71.731 485.91 null]
+/D [3770 0 R /XYZ 71.731 406.209 null]
 >> endobj
 3785 0 obj <<
-/D [3776 0 R /XYZ 89.664 465.153 null]
+/D [3770 0 R /XYZ 89.664 390.433 null]
 >> endobj
 3786 0 obj <<
-/D [3776 0 R /XYZ 128.486 465.153 null]
+/D [3770 0 R /XYZ 130.164 390.433 null]
 >> endobj
 3787 0 obj <<
-/D [3776 0 R /XYZ 171.417 452.201 null]
+/D [3770 0 R /XYZ 269.817 377.482 null]
 >> endobj
 3788 0 obj <<
-/D [3776 0 R /XYZ 71.731 450.045 null]
+/D [3770 0 R /XYZ 71.731 370.343 null]
+>> endobj
+1643 0 obj <<
+/D [3770 0 R /XYZ 71.731 339.459 null]
+>> endobj
+650 0 obj <<
+/D [3770 0 R /XYZ 252.009 296.362 null]
 >> endobj
 3789 0 obj <<
-/D [3776 0 R /XYZ 89.664 434.269 null]
+/D [3770 0 R /XYZ 71.731 283.924 null]
 >> endobj
 3790 0 obj <<
-/D [3776 0 R /XYZ 71.731 406.209 null]
+/D [3770 0 R /XYZ 71.731 261.851 null]
 >> endobj
 3791 0 obj <<
-/D [3776 0 R /XYZ 89.664 390.433 null]
+/D [3770 0 R /XYZ 71.731 233.791 null]
 >> endobj
 3792 0 obj <<
-/D [3776 0 R /XYZ 130.164 390.433 null]
+/D [3770 0 R /XYZ 71.731 228.81 null]
 >> endobj
 3793 0 obj <<
-/D [3776 0 R /XYZ 269.817 377.482 null]
+/D [3770 0 R /XYZ 89.664 208.053 null]
 >> endobj
 3794 0 obj <<
-/D [3776 0 R /XYZ 71.731 370.343 null]
->> endobj
-1643 0 obj <<
-/D [3776 0 R /XYZ 71.731 339.459 null]
->> endobj
-650 0 obj <<
-/D [3776 0 R /XYZ 252.009 296.362 null]
+/D [3770 0 R /XYZ 89.664 208.053 null]
 >> endobj
 3795 0 obj <<
-/D [3776 0 R /XYZ 71.731 283.924 null]
+/D [3770 0 R /XYZ 89.664 177.169 null]
 >> endobj
 3796 0 obj <<
-/D [3776 0 R /XYZ 71.731 261.851 null]
+/D [3770 0 R /XYZ 71.731 177.169 null]
 >> endobj
-3797 0 obj <<
-/D [3776 0 R /XYZ 71.731 233.791 null]
->> endobj
-3798 0 obj <<
-/D [3776 0 R /XYZ 71.731 228.81 null]
->> endobj
-3799 0 obj <<
-/D [3776 0 R /XYZ 89.664 208.053 null]
->> endobj
-3800 0 obj <<
-/D [3776 0 R /XYZ 89.664 208.053 null]
->> endobj
-3801 0 obj <<
-/D [3776 0 R /XYZ 89.664 177.169 null]
->> endobj
-3802 0 obj <<
-/D [3776 0 R /XYZ 71.731 177.169 null]
->> endobj
-3775 0 obj <<
+3769 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3806 0 obj <<
+3800 0 obj <<
 /Length 3459      
 /Filter /FlateDecode
 >>
@@ -13914,203 +13895,203 @@ $ 
 ��}P��z������t�g>Й	��Ψ�� �@��`c?�f\�W�Pn�U3��D���ܹw�͑�wmH	����;_r\J~$S&v��- ������}ek��OE]n��!p0A��Cp�{A����/�J�&����5v�l��Z U�5-�C���>��<���@�"��}8���s�B�m�Qʽ͟��x\ ����*^���6ۈ,M|��u�*+��g�*
 #��N`ߨ�C��EXǗzW=��v�� �Еcˆ�x�`>�h����R���%8�c�;�0�Z�^��dD���2e��!�v[*��H��ݫ	h�x��	���p����A#�p�ߎ�S����/\���t㾇��T~QQm{������J��W���É�1���U�~�7����G|�S;�d9JE$W?j@.l�&L�:t�X���}�|��Tyendstream
 endobj
-3805 0 obj <<
+3799 0 obj <<
 /Type /Page
-/Contents 3806 0 R
-/Resources 3804 0 R
+/Contents 3800 0 R
+/Resources 3798 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3760 0 R
-/Annots [ 3860 0 R ]
+/Parent 3754 0 R
+/Annots [ 3854 0 R ]
 >> endobj
-3860 0 obj <<
+3854 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [447.961 136.764 491.62 145.675]
 /Subtype /Link
 /A << /S /GoTo /D (lifecycle-image) >>
 >> endobj
-3807 0 obj <<
-/D [3805 0 R /XYZ 71.731 729.265 null]
+3801 0 obj <<
+/D [3799 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1645 0 obj <<
-/D [3805 0 R /XYZ 71.731 741.22 null]
+/D [3799 0 R /XYZ 71.731 741.22 null]
+>> endobj
+3802 0 obj <<
+/D [3799 0 R /XYZ 71.731 683.941 null]
+>> endobj
+3803 0 obj <<
+/D [3799 0 R /XYZ 89.664 666.008 null]
+>> endobj
+3804 0 obj <<
+/D [3799 0 R /XYZ 89.664 666.008 null]
+>> endobj
+3805 0 obj <<
+/D [3799 0 R /XYZ 71.731 637.948 null]
+>> endobj
+3806 0 obj <<
+/D [3799 0 R /XYZ 89.664 622.172 null]
+>> endobj
+3807 0 obj <<
+/D [3799 0 R /XYZ 89.664 622.172 null]
 >> endobj
 3808 0 obj <<
-/D [3805 0 R /XYZ 71.731 683.941 null]
+/D [3799 0 R /XYZ 71.731 620.015 null]
 >> endobj
 3809 0 obj <<
-/D [3805 0 R /XYZ 89.664 666.008 null]
+/D [3799 0 R /XYZ 89.664 604.239 null]
 >> endobj
 3810 0 obj <<
-/D [3805 0 R /XYZ 89.664 666.008 null]
+/D [3799 0 R /XYZ 89.664 604.239 null]
 >> endobj
 3811 0 obj <<
-/D [3805 0 R /XYZ 71.731 637.948 null]
+/D [3799 0 R /XYZ 71.731 602.083 null]
 >> endobj
 3812 0 obj <<
-/D [3805 0 R /XYZ 89.664 622.172 null]
+/D [3799 0 R /XYZ 89.664 586.307 null]
 >> endobj
 3813 0 obj <<
-/D [3805 0 R /XYZ 89.664 622.172 null]
+/D [3799 0 R /XYZ 89.664 586.307 null]
 >> endobj
 3814 0 obj <<
-/D [3805 0 R /XYZ 71.731 620.015 null]
+/D [3799 0 R /XYZ 71.731 584.15 null]
 >> endobj
 3815 0 obj <<
-/D [3805 0 R /XYZ 89.664 604.239 null]
+/D [3799 0 R /XYZ 89.664 568.374 null]
 >> endobj
 3816 0 obj <<
-/D [3805 0 R /XYZ 89.664 604.239 null]
+/D [3799 0 R /XYZ 89.664 568.374 null]
 >> endobj
 3817 0 obj <<
-/D [3805 0 R /XYZ 71.731 602.083 null]
+/D [3799 0 R /XYZ 71.731 566.217 null]
 >> endobj
 3818 0 obj <<
-/D [3805 0 R /XYZ 89.664 586.307 null]
+/D [3799 0 R /XYZ 89.664 550.441 null]
 >> endobj
 3819 0 obj <<
-/D [3805 0 R /XYZ 89.664 586.307 null]
+/D [3799 0 R /XYZ 89.664 550.441 null]
 >> endobj
 3820 0 obj <<
-/D [3805 0 R /XYZ 71.731 584.15 null]
+/D [3799 0 R /XYZ 71.731 535.333 null]
 >> endobj
 3821 0 obj <<
-/D [3805 0 R /XYZ 89.664 568.374 null]
+/D [3799 0 R /XYZ 89.664 519.557 null]
 >> endobj
 3822 0 obj <<
-/D [3805 0 R /XYZ 89.664 568.374 null]
+/D [3799 0 R /XYZ 89.664 519.557 null]
 >> endobj
 3823 0 obj <<
-/D [3805 0 R /XYZ 71.731 566.217 null]
+/D [3799 0 R /XYZ 71.731 517.4 null]
 >> endobj
 3824 0 obj <<
-/D [3805 0 R /XYZ 89.664 550.441 null]
+/D [3799 0 R /XYZ 89.664 501.624 null]
 >> endobj
 3825 0 obj <<
-/D [3805 0 R /XYZ 89.664 550.441 null]
+/D [3799 0 R /XYZ 89.664 501.624 null]
 >> endobj
 3826 0 obj <<
-/D [3805 0 R /XYZ 71.731 535.333 null]
+/D [3799 0 R /XYZ 71.731 486.516 null]
 >> endobj
 3827 0 obj <<
-/D [3805 0 R /XYZ 89.664 519.557 null]
+/D [3799 0 R /XYZ 89.664 470.74 null]
 >> endobj
 3828 0 obj <<
-/D [3805 0 R /XYZ 89.664 519.557 null]
+/D [3799 0 R /XYZ 89.664 470.74 null]
 >> endobj
 3829 0 obj <<
-/D [3805 0 R /XYZ 71.731 517.4 null]
+/D [3799 0 R /XYZ 71.731 455.632 null]
 >> endobj
 3830 0 obj <<
-/D [3805 0 R /XYZ 89.664 501.624 null]
+/D [3799 0 R /XYZ 89.664 439.856 null]
 >> endobj
 3831 0 obj <<
-/D [3805 0 R /XYZ 89.664 501.624 null]
+/D [3799 0 R /XYZ 89.664 439.856 null]
 >> endobj
 3832 0 obj <<
-/D [3805 0 R /XYZ 71.731 486.516 null]
+/D [3799 0 R /XYZ 71.731 424.748 null]
 >> endobj
 3833 0 obj <<
-/D [3805 0 R /XYZ 89.664 470.74 null]
+/D [3799 0 R /XYZ 89.664 408.972 null]
 >> endobj
 3834 0 obj <<
-/D [3805 0 R /XYZ 89.664 470.74 null]
+/D [3799 0 R /XYZ 89.664 408.972 null]
 >> endobj
 3835 0 obj <<
-/D [3805 0 R /XYZ 71.731 455.632 null]
+/D [3799 0 R /XYZ 71.731 380.912 null]
 >> endobj
 3836 0 obj <<
-/D [3805 0 R /XYZ 89.664 439.856 null]
+/D [3799 0 R /XYZ 89.664 365.136 null]
 >> endobj
 3837 0 obj <<
-/D [3805 0 R /XYZ 89.664 439.856 null]
+/D [3799 0 R /XYZ 89.664 365.136 null]
 >> endobj
 3838 0 obj <<
-/D [3805 0 R /XYZ 71.731 424.748 null]
+/D [3799 0 R /XYZ 71.731 362.979 null]
 >> endobj
 3839 0 obj <<
-/D [3805 0 R /XYZ 89.664 408.972 null]
+/D [3799 0 R /XYZ 89.664 347.203 null]
 >> endobj
 3840 0 obj <<
-/D [3805 0 R /XYZ 89.664 408.972 null]
+/D [3799 0 R /XYZ 89.664 347.203 null]
 >> endobj
 3841 0 obj <<
-/D [3805 0 R /XYZ 71.731 380.912 null]
+/D [3799 0 R /XYZ 71.731 345.046 null]
 >> endobj
 3842 0 obj <<
-/D [3805 0 R /XYZ 89.664 365.136 null]
+/D [3799 0 R /XYZ 89.664 329.271 null]
 >> endobj
 3843 0 obj <<
-/D [3805 0 R /XYZ 89.664 365.136 null]
+/D [3799 0 R /XYZ 89.664 329.271 null]
 >> endobj
 3844 0 obj <<
-/D [3805 0 R /XYZ 71.731 362.979 null]
+/D [3799 0 R /XYZ 71.731 290.317 null]
 >> endobj
 3845 0 obj <<
-/D [3805 0 R /XYZ 89.664 347.203 null]
+/D [3799 0 R /XYZ 89.664 272.483 null]
 >> endobj
 3846 0 obj <<
-/D [3805 0 R /XYZ 89.664 347.203 null]
+/D [3799 0 R /XYZ 89.664 272.483 null]
 >> endobj
 3847 0 obj <<
-/D [3805 0 R /XYZ 71.731 345.046 null]
+/D [3799 0 R /XYZ 71.731 257.375 null]
 >> endobj
 3848 0 obj <<
-/D [3805 0 R /XYZ 89.664 329.271 null]
+/D [3799 0 R /XYZ 89.664 241.599 null]
 >> endobj
 3849 0 obj <<
-/D [3805 0 R /XYZ 89.664 329.271 null]
+/D [3799 0 R /XYZ 89.664 241.599 null]
 >> endobj
 3850 0 obj <<
-/D [3805 0 R /XYZ 71.731 290.317 null]
+/D [3799 0 R /XYZ 71.731 239.442 null]
 >> endobj
 3851 0 obj <<
-/D [3805 0 R /XYZ 89.664 272.483 null]
+/D [3799 0 R /XYZ 89.664 223.667 null]
 >> endobj
 3852 0 obj <<
-/D [3805 0 R /XYZ 89.664 272.483 null]
->> endobj
-3853 0 obj <<
-/D [3805 0 R /XYZ 71.731 257.375 null]
->> endobj
-3854 0 obj <<
-/D [3805 0 R /XYZ 89.664 241.599 null]
->> endobj
-3855 0 obj <<
-/D [3805 0 R /XYZ 89.664 241.599 null]
->> endobj
-3856 0 obj <<
-/D [3805 0 R /XYZ 71.731 239.442 null]
->> endobj
-3857 0 obj <<
-/D [3805 0 R /XYZ 89.664 223.667 null]
->> endobj
-3858 0 obj <<
-/D [3805 0 R /XYZ 89.664 223.667 null]
+/D [3799 0 R /XYZ 89.664 223.667 null]
 >> endobj
 1644 0 obj <<
-/D [3805 0 R /XYZ 71.731 203.577 null]
+/D [3799 0 R /XYZ 71.731 203.577 null]
 >> endobj
 654 0 obj <<
-/D [3805 0 R /XYZ 259.687 160.48 null]
+/D [3799 0 R /XYZ 259.687 160.48 null]
 >> endobj
-3859 0 obj <<
-/D [3805 0 R /XYZ 71.731 148.042 null]
+3853 0 obj <<
+/D [3799 0 R /XYZ 71.731 148.042 null]
 >> endobj
-3861 0 obj <<
-/D [3805 0 R /XYZ 460.835 125.969 null]
+3855 0 obj <<
+/D [3799 0 R /XYZ 460.835 125.969 null]
 >> endobj
-3862 0 obj <<
-/D [3805 0 R /XYZ 220.262 113.017 null]
+3856 0 obj <<
+/D [3799 0 R /XYZ 220.262 113.017 null]
 >> endobj
 1791 0 obj <<
-/D [3805 0 R /XYZ 71.731 110.861 null]
+/D [3799 0 R /XYZ 71.731 110.861 null]
 >> endobj
-3804 0 obj <<
+3798 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3865 0 obj <<
+3859 0 obj <<
 /Length 968       
 /Filter /FlateDecode
 >>
@@ -14120,14 +14101,14 @@ x
 %�ET���mc�i�?�T藁����#ʺ�v�h�ozKo�m�qL�5d`�ʺ��#��~M�8��Hb����޴�4GDS��t^k�{��D�eђ�K��"!�d�_�9`P)���K׏k���g�:%x#�T2�r�{�i��
)$�J䱴������è��Z�!j�,j$.�,)2�f��2#=k���x���6E[a�M#80{��lG��K�f4�}�t
���Ɉ7L��\7�&T��h*Ru1Qv��w
sGj��t�ˑ�&�+��G��c_�0�C����q��8i�+�V��i)���mGLF�cרP���eCR���s�+=��9���S����N����xSQ�_�xb�e�?tgM�����&�yj �
��mx�S��8X�2]	?��Xw�v&�&�ɲ����Է왃e�6�1tE�Bd�O{�"�	s���b,knA7Tv5��v$9Į���4����'6ig'fX��j=�l�yw�;Ec�/�
 �
�p{bo�V��іl����c'����7��ñ�
n@�(�Kn��፫�"���Z��WAq��	�����!��u6�}à�7��{	��(Q���/y�?t]�m.��76�;�����T���9�
繨�ΐQ�n��E�J\u�.�<->f� �q�\w��d��ϔ���WJ�2*�Ħ"��������N�endstream
 endobj
-3864 0 obj <<
+3858 0 obj <<
 /Type /Page
-/Contents 3865 0 R
-/Resources 3863 0 R
+/Contents 3859 0 R
+/Resources 3857 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3760 0 R
+/Parent 3754 0 R
 >> endobj
-3803 0 obj <<
+3797 0 obj <<
 /Type /XObject
 /Subtype /Image
 /Width 496
@@ -14303,42 +14284,42 @@ ooo
 �Ç�����s�>}�-[����ob*"77������`ǎ��5��^^^���k��$��oݺ�jժ��`???���.J>lll�7o~��y����Aw���ݓ��$	444|��U�7wZZ�������:nܸ�]�����(QB�{F�dɒ������СC�?f]��Ag���H�
d:�e|�:�25ܡC-p�ÇѠ�눈���烱���۶m[�v���9�V2�~U�V�U�V���ٳ�n�
 ��ݻw��00�����P�8?������aaa���PΓ��$���ׯ���YYY��>�?SSS_�~��ѣ7n�Q���={��]׬Y
y�̙����������֭��V�^=GGG��%��J�Y�&^>|8۶m���/_��=#��޽{4S���+A��U��u����ؠbA� RKKKr,)6H]�_@	�*��Z��
E�:H�;�j�������5j��\E>ǰEZ������c��"E�`T������wrrrvvnР�/��ҡC??���5jҤI�g�^�lF���h5�Qrr2�X������ɓŋ��=�����͋��JHH`D�$.\��g�0m@@@�ʕ���'�x��ÇЍ��ӳ�������M���ׁ�����Gc�C��jժ��	C����x�Pjendstream
 endobj
-3866 0 obj <<
-/D [3864 0 R /XYZ 71.731 729.265 null]
+3860 0 obj <<
+/D [3858 0 R /XYZ 71.731 729.265 null]
 >> endobj
-3867 0 obj <<
-/D [3864 0 R /XYZ 71.731 696.359 null]
+3861 0 obj <<
+/D [3858 0 R /XYZ 71.731 696.359 null]
 >> endobj
 658 0 obj <<
-/D [3864 0 R /XYZ 263.164 254.019 null]
+/D [3858 0 R /XYZ 263.164 254.019 null]
 >> endobj
-3868 0 obj <<
-/D [3864 0 R /XYZ 71.731 241.581 null]
+3862 0 obj <<
+/D [3858 0 R /XYZ 71.731 241.581 null]
 >> endobj
-3869 0 obj <<
-/D [3864 0 R /XYZ 245.796 219.509 null]
+3863 0 obj <<
+/D [3858 0 R /XYZ 245.796 219.509 null]
 >> endobj
-3870 0 obj <<
-/D [3864 0 R /XYZ 71.731 212.371 null]
+3864 0 obj <<
+/D [3858 0 R /XYZ 71.731 212.371 null]
 >> endobj
-3871 0 obj <<
-/D [3864 0 R /XYZ 71.731 168.535 null]
+3865 0 obj <<
+/D [3858 0 R /XYZ 71.731 168.535 null]
 >> endobj
 1646 0 obj <<
-/D [3864 0 R /XYZ 71.731 155.583 null]
+/D [3858 0 R /XYZ 71.731 155.583 null]
 >> endobj
 662 0 obj <<
-/D [3864 0 R /XYZ 217.917 118.368 null]
+/D [3858 0 R /XYZ 217.917 118.368 null]
 >> endobj
-3872 0 obj <<
-/D [3864 0 R /XYZ 71.731 111.016 null]
+3866 0 obj <<
+/D [3858 0 R /XYZ 71.731 111.016 null]
 >> endobj
-3863 0 obj <<
+3857 0 obj <<
 /Font << /F33 1210 0 R /F32 1119 0 R /F23 1105 0 R /F27 1112 0 R >>
-/XObject << /Im1 3803 0 R >>
+/XObject << /Im1 3797 0 R >>
 /ProcSet [ /PDF /Text /ImageC ]
 >> endobj
-3875 0 obj <<
+3869 0 obj <<
 /Length 2003      
 /Filter /FlateDecode
 >>
@@ -14353,126 +14334,126 @@ Bg
 J<�8�<ɕ!�����Mb��L�X���8\���}��/���M�}�������K.S�r�ޞe����p��i|~�otڞaԘf�yq��yx6��5 M5����+m^�@�t���;a�H&φ��Wcq7�_��ಪ�����17C��k��O�K]�g�l� 8���M�;ɺ�UI�Bl��{
 �b��O��{��-9����"ho�>��?��7�	K;endstream
 endobj
-3874 0 obj <<
+3868 0 obj <<
 /Type /Page
-/Contents 3875 0 R
-/Resources 3873 0 R
+/Contents 3869 0 R
+/Resources 3867 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3760 0 R
+/Parent 3754 0 R
+>> endobj
+3870 0 obj <<
+/D [3868 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3871 0 obj <<
+/D [3868 0 R /XYZ 71.731 718.306 null]
+>> endobj
+3872 0 obj <<
+/D [3868 0 R /XYZ 71.731 690.311 null]
+>> endobj
+3873 0 obj <<
+/D [3868 0 R /XYZ 427.586 677.46 null]
+>> endobj
+3874 0 obj <<
+/D [3868 0 R /XYZ 113.491 664.508 null]
+>> endobj
+3875 0 obj <<
+/D [3868 0 R /XYZ 205.945 664.508 null]
 >> endobj
 3876 0 obj <<
-/D [3874 0 R /XYZ 71.731 729.265 null]
+/D [3868 0 R /XYZ 71.731 644.419 null]
 >> endobj
 3877 0 obj <<
-/D [3874 0 R /XYZ 71.731 718.306 null]
+/D [3868 0 R /XYZ 71.731 633.524 null]
 >> endobj
 3878 0 obj <<
-/D [3874 0 R /XYZ 71.731 690.311 null]
+/D [3868 0 R /XYZ 71.731 628.543 null]
 >> endobj
 3879 0 obj <<
-/D [3874 0 R /XYZ 427.586 677.46 null]
+/D [3868 0 R /XYZ 81.694 605.729 null]
 >> endobj
 3880 0 obj <<
-/D [3874 0 R /XYZ 113.491 664.508 null]
+/D [3868 0 R /XYZ 81.694 605.729 null]
 >> endobj
 3881 0 obj <<
-/D [3874 0 R /XYZ 205.945 664.508 null]
+/D [3868 0 R /XYZ 71.731 603.572 null]
 >> endobj
 3882 0 obj <<
-/D [3874 0 R /XYZ 71.731 644.419 null]
+/D [3868 0 R /XYZ 81.694 587.796 null]
 >> endobj
 3883 0 obj <<
-/D [3874 0 R /XYZ 71.731 633.524 null]
+/D [3868 0 R /XYZ 81.694 587.796 null]
 >> endobj
 3884 0 obj <<
-/D [3874 0 R /XYZ 71.731 628.543 null]
+/D [3868 0 R /XYZ 71.731 585.639 null]
 >> endobj
 3885 0 obj <<
-/D [3874 0 R /XYZ 81.694 605.729 null]
+/D [3868 0 R /XYZ 81.694 569.863 null]
 >> endobj
 3886 0 obj <<
-/D [3874 0 R /XYZ 81.694 605.729 null]
+/D [3868 0 R /XYZ 81.694 569.863 null]
+>> endobj
+1647 0 obj <<
+/D [3868 0 R /XYZ 71.731 567.706 null]
+>> endobj
+666 0 obj <<
+/D [3868 0 R /XYZ 236.902 535.392 null]
 >> endobj
 3887 0 obj <<
-/D [3874 0 R /XYZ 71.731 603.572 null]
+/D [3868 0 R /XYZ 71.731 529.265 null]
+>> endobj
+1648 0 obj <<
+/D [3868 0 R /XYZ 71.731 457.519 null]
+>> endobj
+670 0 obj <<
+/D [3868 0 R /XYZ 166.08 424.209 null]
 >> endobj
 3888 0 obj <<
-/D [3874 0 R /XYZ 81.694 587.796 null]
+/D [3868 0 R /XYZ 71.731 415.572 null]
 >> endobj
 3889 0 obj <<
-/D [3874 0 R /XYZ 81.694 587.796 null]
+/D [3868 0 R /XYZ 344.894 405.28 null]
 >> endobj
 3890 0 obj <<
-/D [3874 0 R /XYZ 71.731 585.639 null]
+/D [3868 0 R /XYZ 71.731 391.168 null]
 >> endobj
 3891 0 obj <<
-/D [3874 0 R /XYZ 81.694 569.863 null]
+/D [3868 0 R /XYZ 155.277 368.717 null]
 >> endobj
 3892 0 obj <<
-/D [3874 0 R /XYZ 81.694 569.863 null]
->> endobj
-1647 0 obj <<
-/D [3874 0 R /XYZ 71.731 567.706 null]
->> endobj
-666 0 obj <<
-/D [3874 0 R /XYZ 236.902 535.392 null]
+/D [3868 0 R /XYZ 71.731 358.655 null]
 >> endobj
 3893 0 obj <<
-/D [3874 0 R /XYZ 71.731 529.265 null]
->> endobj
-1648 0 obj <<
-/D [3874 0 R /XYZ 71.731 457.519 null]
->> endobj
-670 0 obj <<
-/D [3874 0 R /XYZ 166.08 424.209 null]
+/D [3868 0 R /XYZ 154.779 334.147 null]
 >> endobj
 3894 0 obj <<
-/D [3874 0 R /XYZ 71.731 415.572 null]
+/D [3868 0 R /XYZ 71.731 322.745 null]
 >> endobj
 3895 0 obj <<
-/D [3874 0 R /XYZ 344.894 405.28 null]
+/D [3868 0 R /XYZ 426.159 299.577 null]
 >> endobj
 3896 0 obj <<
-/D [3874 0 R /XYZ 71.731 391.168 null]
+/D [3868 0 R /XYZ 71.731 287.457 null]
 >> endobj
 3897 0 obj <<
-/D [3874 0 R /XYZ 155.277 368.717 null]
+/D [3868 0 R /XYZ 103.272 239.103 null]
 >> endobj
 3898 0 obj <<
-/D [3874 0 R /XYZ 71.731 358.655 null]
+/D [3868 0 R /XYZ 71.731 229.041 null]
 >> endobj
 3899 0 obj <<
-/D [3874 0 R /XYZ 154.779 334.147 null]
+/D [3868 0 R /XYZ 425.163 204.533 null]
 >> endobj
 3900 0 obj <<
-/D [3874 0 R /XYZ 71.731 322.745 null]
->> endobj
-3901 0 obj <<
-/D [3874 0 R /XYZ 426.159 299.577 null]
->> endobj
-3902 0 obj <<
-/D [3874 0 R /XYZ 71.731 287.457 null]
->> endobj
-3903 0 obj <<
-/D [3874 0 R /XYZ 103.272 239.103 null]
->> endobj
-3904 0 obj <<
-/D [3874 0 R /XYZ 71.731 229.041 null]
->> endobj
-3905 0 obj <<
-/D [3874 0 R /XYZ 425.163 204.533 null]
->> endobj
-3906 0 obj <<
-/D [3874 0 R /XYZ 71.731 192.414 null]
+/D [3868 0 R /XYZ 71.731 192.414 null]
 >> endobj
 1649 0 obj <<
-/D [3874 0 R /XYZ 71.731 162.824 null]
+/D [3868 0 R /XYZ 71.731 162.824 null]
 >> endobj
-3873 0 obj <<
+3867 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3909 0 obj <<
+3903 0 obj <<
 /Length 2792      
 /Filter /FlateDecode
 >>
@@ -14485,84 +14466,84 @@ xڭY[
 r�J��φNC��z���<6W�g�P`���A�JJ[Ǝcx���oa���4z���+�IiH��������:�/"�Y	f?�fy'�m��f�q�}Ҧ��W������.ߎ
 ��F��4��Lwg#���b5,T�E#i���4���(E��ն���vu�	�I������w���ne���;���^^��/��L�N9���NP�/4���+H��EA�Sa������ko�>�!��2��k�-�g\��>��_A`qBendstream
 endobj
-3908 0 obj <<
+3902 0 obj <<
 /Type /Page
-/Contents 3909 0 R
-/Resources 3907 0 R
+/Contents 3903 0 R
+/Resources 3901 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3927 0 R
+/Parent 3921 0 R
 >> endobj
-3910 0 obj <<
-/D [3908 0 R /XYZ 71.731 729.265 null]
+3904 0 obj <<
+/D [3902 0 R /XYZ 71.731 729.265 null]
 >> endobj
 674 0 obj <<
-/D [3908 0 R /XYZ 201.526 708.344 null]
+/D [3902 0 R /XYZ 201.526 708.344 null]
 >> endobj
-3911 0 obj <<
-/D [3908 0 R /XYZ 71.731 699.891 null]
+3905 0 obj <<
+/D [3902 0 R /XYZ 71.731 699.891 null]
 >> endobj
-3912 0 obj <<
-/D [3908 0 R /XYZ 463.469 676.463 null]
+3906 0 obj <<
+/D [3902 0 R /XYZ 463.469 676.463 null]
 >> endobj
-3913 0 obj <<
-/D [3908 0 R /XYZ 71.731 662.351 null]
+3907 0 obj <<
+/D [3902 0 R /XYZ 71.731 662.351 null]
 >> endobj
-3914 0 obj <<
-/D [3908 0 R /XYZ 514.935 626.949 null]
+3908 0 obj <<
+/D [3902 0 R /XYZ 514.935 626.949 null]
 >> endobj
-3915 0 obj <<
-/D [3908 0 R /XYZ 71.731 614.829 null]
+3909 0 obj <<
+/D [3902 0 R /XYZ 71.731 614.829 null]
 >> endobj
-3916 0 obj <<
-/D [3908 0 R /XYZ 71.731 598.408 null]
+3910 0 obj <<
+/D [3902 0 R /XYZ 71.731 598.408 null]
 >> endobj
 1650 0 obj <<
-/D [3908 0 R /XYZ 71.731 548.678 null]
+/D [3902 0 R /XYZ 71.731 548.678 null]
 >> endobj
 678 0 obj <<
-/D [3908 0 R /XYZ 183.664 505.58 null]
+/D [3902 0 R /XYZ 183.664 505.58 null]
 >> endobj
-3917 0 obj <<
-/D [3908 0 R /XYZ 71.731 493.142 null]
+3911 0 obj <<
+/D [3902 0 R /XYZ 71.731 493.142 null]
 >> endobj
-3918 0 obj <<
-/D [3908 0 R /XYZ 71.731 476.883 null]
+3912 0 obj <<
+/D [3902 0 R /XYZ 71.731 476.883 null]
 >> endobj
-3919 0 obj <<
-/D [3908 0 R /XYZ 71.731 435.204 null]
+3913 0 obj <<
+/D [3902 0 R /XYZ 71.731 435.204 null]
 >> endobj
-3920 0 obj <<
-/D [3908 0 R /XYZ 71.731 435.204 null]
+3914 0 obj <<
+/D [3902 0 R /XYZ 71.731 435.204 null]
 >> endobj
-3921 0 obj <<
-/D [3908 0 R /XYZ 71.731 330.114 null]
+3915 0 obj <<
+/D [3902 0 R /XYZ 71.731 330.114 null]
 >> endobj
 1651 0 obj <<
-/D [3908 0 R /XYZ 71.731 258.219 null]
+/D [3902 0 R /XYZ 71.731 258.219 null]
 >> endobj
 682 0 obj <<
-/D [3908 0 R /XYZ 198.969 215.121 null]
+/D [3902 0 R /XYZ 198.969 215.121 null]
 >> endobj
-3922 0 obj <<
-/D [3908 0 R /XYZ 71.731 202.683 null]
+3916 0 obj <<
+/D [3902 0 R /XYZ 71.731 202.683 null]
 >> endobj
-3923 0 obj <<
-/D [3908 0 R /XYZ 434.226 193.562 null]
+3917 0 obj <<
+/D [3902 0 R /XYZ 434.226 193.562 null]
 >> endobj
-3924 0 obj <<
-/D [3908 0 R /XYZ 71.731 134.618 null]
+3918 0 obj <<
+/D [3902 0 R /XYZ 71.731 134.618 null]
 >> endobj
-3925 0 obj <<
-/D [3908 0 R /XYZ 71.731 121.667 null]
+3919 0 obj <<
+/D [3902 0 R /XYZ 71.731 121.667 null]
 >> endobj
-3926 0 obj <<
-/D [3908 0 R /XYZ 71.731 116.686 null]
+3920 0 obj <<
+/D [3902 0 R /XYZ 71.731 116.686 null]
 >> endobj
-3907 0 obj <<
+3901 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3930 0 obj <<
+3924 0 obj <<
 /Length 2276      
 /Filter /FlateDecode
 >>
@@ -14577,96 +14558,96 @@ xڝY[
 9V��a� ��,M}��V��$�/�7`��n��P��d�F	�]r���pU��yS�i�\jl��#s�YS���<�Z^�fl@qSM���ܧFNp@�N�Ѣ
Cml�!N��kE6�&�`{싎cmd+Q�5������[�\�p�qb�f]=և"f̤��q����W���(�!�׺i��dd4���V�	A�����J^�u�B����'p��#�r���lc�����1�j�}Go�V�W��|�t�^�+u����!yˋ>�u;�c�调�Cy'��e]��q�&�L��Æ_ ��bt�ݢ��_��_f����8Bb���*�ȞE�;< 
�1.ai��`H�|�8m�?���P�hĕ�s�=�_S�c�������j�}D�q�N,�ֱk }"�Zb�ٙ���]�/2��݁��AU�*�( ���[�c��:�^��`��'�	���і�,x`B$�E�����D��{�M����$`R��@V�`ù&���tĘ�����D��T���	Wy����<0��m_Ps}=^��"���K���[ɰ�aD$��j_�վ�Q6��������>���jУ$}zL�6�aW����j�����[��񷔡 ]�G)L@�Bg��#wH��k��+<����/'��:\9�=����] �%$Z��1�˫\+Kq�����WxK���@��va������W>�4=hں��_->�a�
 $}�+ƍOW5�q��wB�O�/Q��i���?R���o�U��A���7ѭ��.%�J��endstream
 endobj
-3929 0 obj <<
+3923 0 obj <<
 /Type /Page
-/Contents 3930 0 R
-/Resources 3928 0 R
+/Contents 3924 0 R
+/Resources 3922 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3927 0 R
+/Parent 3921 0 R
+>> endobj
+3925 0 obj <<
+/D [3923 0 R /XYZ 71.731 729.265 null]
+>> endobj
+3926 0 obj <<
+/D [3923 0 R /XYZ 89.664 708.344 null]
+>> endobj
+3927 0 obj <<
+/D [3923 0 R /XYZ 118.177 708.344 null]
+>> endobj
+3928 0 obj <<
+/D [3923 0 R /XYZ 435.626 708.344 null]
+>> endobj
+3929 0 obj <<
+/D [3923 0 R /XYZ 71.731 693.235 null]
+>> endobj
+3930 0 obj <<
+/D [3923 0 R /XYZ 89.664 677.46 null]
 >> endobj
 3931 0 obj <<
-/D [3929 0 R /XYZ 71.731 729.265 null]
+/D [3923 0 R /XYZ 71.731 675.303 null]
 >> endobj
 3932 0 obj <<
-/D [3929 0 R /XYZ 89.664 708.344 null]
+/D [3923 0 R /XYZ 89.664 659.527 null]
 >> endobj
 3933 0 obj <<
-/D [3929 0 R /XYZ 118.177 708.344 null]
+/D [3923 0 R /XYZ 71.731 644.419 null]
 >> endobj
 3934 0 obj <<
-/D [3929 0 R /XYZ 435.626 708.344 null]
+/D [3923 0 R /XYZ 89.664 628.643 null]
 >> endobj
 3935 0 obj <<
-/D [3929 0 R /XYZ 71.731 693.235 null]
+/D [3923 0 R /XYZ 71.731 621.504 null]
 >> endobj
 3936 0 obj <<
-/D [3929 0 R /XYZ 89.664 677.46 null]
+/D [3923 0 R /XYZ 71.731 590.62 null]
 >> endobj
 3937 0 obj <<
-/D [3929 0 R /XYZ 71.731 675.303 null]
+/D [3923 0 R /XYZ 71.731 561.793 null]
+>> endobj
+1652 0 obj <<
+/D [3923 0 R /XYZ 71.731 528.852 null]
+>> endobj
+686 0 obj <<
+/D [3923 0 R /XYZ 211.45 485.754 null]
 >> endobj
 3938 0 obj <<
-/D [3929 0 R /XYZ 89.664 659.527 null]
+/D [3923 0 R /XYZ 71.731 476.932 null]
 >> endobj
 3939 0 obj <<
-/D [3929 0 R /XYZ 71.731 644.419 null]
+/D [3923 0 R /XYZ 71.731 431.154 null]
 >> endobj
 3940 0 obj <<
-/D [3929 0 R /XYZ 89.664 628.643 null]
+/D [3923 0 R /XYZ 71.731 402.427 null]
 >> endobj
 3941 0 obj <<
-/D [3929 0 R /XYZ 71.731 621.504 null]
+/D [3923 0 R /XYZ 71.731 402.427 null]
 >> endobj
-3942 0 obj <<
-/D [3929 0 R /XYZ 71.731 590.62 null]
+1653 0 obj <<
+/D [3923 0 R /XYZ 71.731 324.565 null]
 >> endobj
-3943 0 obj <<
-/D [3929 0 R /XYZ 71.731 561.793 null]
+690 0 obj <<
+/D [3923 0 R /XYZ 333.287 285.192 null]
 >> endobj
-1652 0 obj <<
-/D [3929 0 R /XYZ 71.731 528.852 null]
+3942 0 obj <<
+/D [3923 0 R /XYZ 71.731 274.827 null]
 >> endobj
-686 0 obj <<
-/D [3929 0 R /XYZ 211.45 485.754 null]
+1654 0 obj <<
+/D [3923 0 R /XYZ 71.731 234.084 null]
 >> endobj
-3944 0 obj <<
-/D [3929 0 R /XYZ 71.731 476.932 null]
+694 0 obj <<
+/D [3923 0 R /XYZ 411.1 194.811 null]
 >> endobj
-3945 0 obj <<
-/D [3929 0 R /XYZ 71.731 431.154 null]
->> endobj
-3946 0 obj <<
-/D [3929 0 R /XYZ 71.731 402.427 null]
->> endobj
-3947 0 obj <<
-/D [3929 0 R /XYZ 71.731 402.427 null]
->> endobj
-1653 0 obj <<
-/D [3929 0 R /XYZ 71.731 324.565 null]
->> endobj
-690 0 obj <<
-/D [3929 0 R /XYZ 333.287 285.192 null]
->> endobj
-3948 0 obj <<
-/D [3929 0 R /XYZ 71.731 274.827 null]
->> endobj
-1654 0 obj <<
-/D [3929 0 R /XYZ 71.731 234.084 null]
->> endobj
-694 0 obj <<
-/D [3929 0 R /XYZ 411.1 194.811 null]
->> endobj
-3949 0 obj <<
-/D [3929 0 R /XYZ 71.731 184.446 null]
+3943 0 obj <<
+/D [3923 0 R /XYZ 71.731 184.446 null]
 >> endobj
 1655 0 obj <<
-/D [3929 0 R /XYZ 71.731 141.646 null]
+/D [3923 0 R /XYZ 71.731 141.646 null]
 >> endobj
-3928 0 obj <<
+3922 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3952 0 obj <<
+3946 0 obj <<
 /Length 1979      
 /Filter /FlateDecode
 >>
@@ -14679,176 +14660,184 @@ H
 �/�r���4��!^Ҝ�w5Y��E��7���$�~:�"ll
 g���:��O�w�ȶ��K#�P����~dX>��ӹ��[a�I���dj�P��(7Q�`3s��3��A�.��ᠯPʨ~�X/���L{��c��b��CT�@�����H��'mZ����ؓ��dvG4�K]�cQ�
����x�|#٢춌��ĵ2vL��A����D�󄺞���G��:���U�ga�՟^G��_^U��Ad��}��K���J�/'7�;endstream
 endobj
-3951 0 obj <<
+3945 0 obj <<
 /Type /Page
-/Contents 3952 0 R
-/Resources 3950 0 R
+/Contents 3946 0 R
+/Resources 3944 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3927 0 R
+/Parent 3921 0 R
 >> endobj
-3953 0 obj <<
-/D [3951 0 R /XYZ 71.731 729.265 null]
+3947 0 obj <<
+/D [3945 0 R /XYZ 71.731 729.265 null]
 >> endobj
 698 0 obj <<
-/D [3951 0 R /XYZ 328.439 707.841 null]
+/D [3945 0 R /XYZ 328.439 707.841 null]
 >> endobj
-3954 0 obj <<
-/D [3951 0 R /XYZ 71.731 697.476 null]
+3948 0 obj <<
+/D [3945 0 R /XYZ 71.731 697.476 null]
 >> endobj
 1656 0 obj <<
-/D [3951 0 R /XYZ 71.731 641.724 null]
+/D [3945 0 R /XYZ 71.731 641.724 null]
 >> endobj
 702 0 obj <<
-/D [3951 0 R /XYZ 427.527 604.508 null]
+/D [3945 0 R /XYZ 427.527 604.508 null]
 >> endobj
-3955 0 obj <<
-/D [3951 0 R /XYZ 71.731 594.143 null]
+3949 0 obj <<
+/D [3945 0 R /XYZ 71.731 594.143 null]
 >> endobj
 1657 0 obj <<
-/D [3951 0 R /XYZ 71.731 551.343 null]
+/D [3945 0 R /XYZ 71.731 551.343 null]
 >> endobj
 706 0 obj <<
-/D [3951 0 R /XYZ 319.902 514.127 null]
+/D [3945 0 R /XYZ 319.902 514.127 null]
 >> endobj
-3956 0 obj <<
-/D [3951 0 R /XYZ 71.731 503.762 null]
+3950 0 obj <<
+/D [3945 0 R /XYZ 71.731 503.762 null]
 >> endobj
 1658 0 obj <<
-/D [3951 0 R /XYZ 71.731 460.962 null]
+/D [3945 0 R /XYZ 71.731 460.962 null]
 >> endobj
 710 0 obj <<
-/D [3951 0 R /XYZ 284.583 423.746 null]
+/D [3945 0 R /XYZ 284.583 423.746 null]
 >> endobj
-3957 0 obj <<
-/D [3951 0 R /XYZ 71.731 413.381 null]
+3951 0 obj <<
+/D [3945 0 R /XYZ 71.731 413.381 null]
 >> endobj
-3958 0 obj <<
-/D [3951 0 R /XYZ 71.731 372.638 null]
+3952 0 obj <<
+/D [3945 0 R /XYZ 71.731 372.638 null]
 >> endobj
 1659 0 obj <<
-/D [3951 0 R /XYZ 71.731 339.696 null]
+/D [3945 0 R /XYZ 71.731 339.696 null]
 >> endobj
 714 0 obj <<
-/D [3951 0 R /XYZ 262.26 302.481 null]
+/D [3945 0 R /XYZ 262.26 302.481 null]
 >> endobj
-3959 0 obj <<
-/D [3951 0 R /XYZ 71.731 292.116 null]
+3953 0 obj <<
+/D [3945 0 R /XYZ 71.731 292.116 null]
 >> endobj
 1660 0 obj <<
-/D [3951 0 R /XYZ 71.731 252.304 null]
+/D [3945 0 R /XYZ 71.731 252.304 null]
 >> endobj
 718 0 obj <<
-/D [3951 0 R /XYZ 223.845 209.207 null]
+/D [3945 0 R /XYZ 223.845 209.207 null]
 >> endobj
-3960 0 obj <<
-/D [3951 0 R /XYZ 71.731 197.035 null]
+3954 0 obj <<
+/D [3945 0 R /XYZ 71.731 197.035 null]
 >> endobj
 1661 0 obj <<
-/D [3951 0 R /XYZ 71.731 185.491 null]
+/D [3945 0 R /XYZ 71.731 185.491 null]
 >> endobj
 722 0 obj <<
-/D [3951 0 R /XYZ 223.569 148.275 null]
+/D [3945 0 R /XYZ 223.569 148.275 null]
 >> endobj
-3961 0 obj <<
-/D [3951 0 R /XYZ 71.731 140.923 null]
+3955 0 obj <<
+/D [3945 0 R /XYZ 71.731 140.923 null]
 >> endobj
-3950 0 obj <<
+3944 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3964 0 obj <<
-/Length 2378      
+3958 0 obj <<
+/Length 2474      
 /Filter /FlateDecode
 >>
 stream
-xڍXm�����_A�!�"	l*U�7�;�|���ۇY4�b��ѭ�*?>O�����v�����z���Q2��/,�x�ᑮ�4�6�W��3߾JTb�"�3���Ww�d�`��l��fYgy>Xdi����u��ao��6�I:�Fy,ϏmY�|��~)�ʌ���뫿��
��"^-�_�)�\�.NF�w�.�l6c��{��wwOOO�|ŏ�t��kF�2�
a�b=�G�2z���]S�B��Nf�0���t/�/�1J��6�����GP���i���/7{���Q�{:M-4�+k5noɑp�$I㕞�{%����u�8�`�:��i�=���r5����U���f�K�l6�'1�,�q����-��� ����|,���yvC���l�'�Y�&�LYyw���R�'K������7^:�P�E�[�[>K��w&7d�w����TA����|��$��=����e<�D�H���P�W�,C(�\!�Z����B�[y>�N���V(#��9`Pw�D�֭4|N�z2�*۽�B�c���8�<��[��C�n��ۭkT��[�ܑE��y�K �λS��?hBL���G�i�3��K[C��^z�Ϥ�i�D6Hf����[�0�F�1 E���]�����Z���wݫ�3���t�@���p
-'���=��F����x�@?yt�i"�~�,;d�s�P
0ߵV5,%�i�0��,�mX��x�s�`�l�jy2��/��"�7d{�>I���� ��s��8'��p�E!�fX�	�����+���J���La6_��V�'�'�	���%D 3�~�LX���,���@����p�����A�7�A4gl���yq��Dy�o��W�2O/��(�*x�]Y�/f����Wt���*N�3�A�S~�S(��Y(~oN ��*:����2>IPf��1JX�k�ϥ1[F���l�>̖/��m��P�_��s��m�h�hvv,��r�)p�J����}g�c0c>��;��t�;��C��DdET�&TH!������(�ß�)'O�����6(�JZۯa�;S�O|�0�D �����D02VE+#rq�'�#j,��$��
-%��niK)[��
�dN�<�ސ�m|Y���Q,e���	;7b�<���8�X�_��6[�����l9(f�.�8�g!ڣ9u��\���ƶ�i�JD���Sad]lW,S��Fˌ7����S7�"Va�{a���Pb1 ��E/V3���B�Yb��V�l\lj���xґW�[c�"������v
 ��\���v���,8���Sn�7u�����V@7W���g.e��4$��mݞ��Q�|�9�b�:(��3�Y+��X�r
�a+#���{]���fj=5�cağk2�~ځb�p�=|��&��|x����@U�ti�rw�[C�����™
-�K������	��%�^���G���7a�Ǖ5�����կ���>"Uі|c�5Ou[��C���Y�I�A�9h�A�2|+���C߬�����c��@[m{uBN'�<I	"Tro���Z�Q�=Ѷ�r)���`��P�����8���\���N|���ݻp��{���Ɨ�����Q�����1���.D�{~���y�G>jI�"E!Z6fc�zcR7���������mI��}W�FH�ѿ:X��f,ܶݘQy��KDV�(��Ů�qp��g�r6�ӛ�v7De�,�Ekζ,�$N�s��g�lۇ41+VIm%^�3�G�����i�Wy���iٓN��^��B$9���C��pB
-��/��򴩚��UXO�Chq����VV�G�<jʃ��W���I򂳦�wi�ɵ
������R���+�=W�ݓ"�d�|zJ
F��=�Df�%ݜ��gv� �W���k�E����my�n�۪���$!���c
FZC�������XT��>�O��r��n���j�_�Y"���?��p�CMxW��4�QwDЪV���>����<j)ؒUN�v"�:"lA)Bb�B�حm>⇗"���"k�VI)��N�����~�:)���zO���,��!�F�ڙ�k>���V���y�>��W�d���ѫ�+��ϗ�p�wҷ&�I"�U]�<p��N����4�
-҂��I~��+���0�w��wᆣ��i]H6�lօnQ��L�<��HP��R�D��P7^f��[�:���C��}&k�Y,˼�?�
[��K��͈p=�Q�~@^J����B�^�h4�!��:�Q}|���WW��7�����?v���i��8Iq+Or���/?o�W��2^&�_��~���>O��4
Jh���K�ѯw�??�Oendstream
+xڍYߓ۶~�_������x")Q�u2�}Mw�I�m�	I�)B!��/�?����%Yr���X,���*M�/-�x�ᑮ�4������h����HT�VEnOd^�_�}�e�U�ʳ�z3�eY���h���r���忣��9xێo��4�cy��f+��~�kU�f����_|�6�g�x��~Ӧ saT�8�m���ٌm��y���{zz��(~��H�];N����-�xD-�G+߷�-���d���������$:n���~�>��ηpN'��]U섿�^x�G��t�Zh*�W5j�Β#��$�Wz�q�̣_*�w���i�p&�����������^�6�\�f���<�1f������"�P�@�PB:��g����{S�B�,M.7؛���~kե�/�^���j^�_Q�Y�k�>K����,L��~�:��驂�\���n�I��[^}��O��4� �Z�C��^����bp����w�Um���z�z>X��<��A��[���9���L>Q��\_�Bz/�P�1�i���Z����nts�q�
+VAq�C�[�^:
`	D�{w�R��B�	Q�x6�~��Me(,���L��6Nd�dX�	(����`DR4;��W�·Κ����u�:N�*�)AT�2^�)�̢
+�tBy���K��G��&�����C�;W���}gU��R�����Nf�hæ�
+�mX�т�������k�X�ߐU�e�$!���+0��X�q��l>Z�9�_�t�a
'�s�{�3/\H��+��e
+���ĥ�b'<	<�L-!��ʄEj����ϗH`t�����y�&(��3����>:�!!��\�(��O���*^��yP���k6��,����k���+��_zl������c�����n��x��<��%0� ;����8a]2WG�
+����;S�6���z�{�2b����h���J;�PW����7Wi�X-�M���`�Kzs�ٳ$l�%��<KK�ᤣr=CO�r<�S’���G�4���72}�$�6���E��E�0���~����r������W���|�w�Oj�b[��*���,5���L�<�
+�rT�V���7��N�r� *��3S�|�
+�}	"� g�|*5�C�!��l9?hćG���d��3�8����$L�Ϫ+t4�tK[Iu>�~gH��t��9��W͠��R智��s+fQP�0B{�	\�G�2�ϖ�a&�|�:;���_{�,Dw0{�֡g�GKWخ3mU��rS`r�:MB��v�2�/a��x��Y��l_��U��^�Fd�.tP��"AQnZI�V
+Ig���ku�(\��^�K�IG^�#ǍG�@�ûn�}`?is�N�5:�oߩ:$��€}gk9��t��΀��p��Jm��s��ʼnKYp>
Ʌ!�=�t'�yT;kNb�ؿ
+=�b�
+ej�l'J���k�	�fj=�^��rP�Jv���i���YKSݼ�5�n��p36oeTҥs��Zu����U�ƙ
+�*�i�F}�����=K<�����Q�(��e4_x��?�*��	���_]��{n�R�A]�3P\5�T�u��U�F�����UԈ��6Y(7��x��0�d)�=x�X3��V�A���	5OR��ܙGi��Vb{i���B)���`���d�ϵ�r4y)#��W�޼	H��(�T�:ŎVe�;��L��+��q���"2���x����"��h�D���[7x�MH�pn��Fx��B�������$�bxu�J��D�]�N�򾥗��nQZ����$����l�g0�m�6�,oe�,Zs�ei&�p�D�4g�,�톐&�c��*���I�F� �?�3�*o�s2-{�)��+�P�$G"�z�('�������V�M��&��zJB�K�P\wײz=��Q[��F�p@�$/8k�!�����Hnl�s�ƨ;o��^���z��$���cj0�
��$��DGE�A�C���������tQg$)�tW��[���v*Q�J�	#����FZC����wo���DT��ޝN��re�n��j�j�_�Y"�����p�CMx�t�4�Q@ЪV���>����4j)ؒUN'�d눰%�Q|��
+b7�m�P�^�h�b!��d��"�q�;S��I�7��b
+>�wT��:��3rjDѩ��������keE흷��|A�����עj�J��7x'}k��$"|��n��~����]��(piAX��$?�̗�a��;˷��p�Q�д�.%�6�L7���_D&|�YKK$(�o��L��_	�+/��N-�_M�[P�>���(Od^��\�A8�.+Qڢ��P ����Ki��xY�!�}���Es!2)m����Ƿj�z���M�p��W����2V2��'�*N�\�>ğ~�׏�e�L����Q��g�y���iPB�,f����r�����endstream
 endobj
-3963 0 obj <<
+3957 0 obj <<
 /Type /Page
-/Contents 3964 0 R
-/Resources 3962 0 R
+/Contents 3958 0 R
+/Resources 3956 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3927 0 R
+/Parent 3921 0 R
 >> endobj
-3965 0 obj <<
-/D [3963 0 R /XYZ 71.731 729.265 null]
+3959 0 obj <<
+/D [3957 0 R /XYZ 71.731 729.265 null]
 >> endobj
-3966 0 obj <<
-/D [3963 0 R /XYZ 282.496 708.344 null]
+3960 0 obj <<
+/D [3957 0 R /XYZ 282.496 708.344 null]
 >> endobj
-3967 0 obj <<
-/D [3963 0 R /XYZ 71.731 675.268 null]
+3961 0 obj <<
+/D [3957 0 R /XYZ 71.731 675.268 null]
 >> endobj
-3968 0 obj <<
-/D [3963 0 R /XYZ 71.731 675.268 null]
+3962 0 obj <<
+/D [3957 0 R /XYZ 71.731 675.268 null]
 >> endobj
-3969 0 obj <<
-/D [3963 0 R /XYZ 71.731 587.473 null]
+3963 0 obj <<
+/D [3957 0 R /XYZ 71.731 587.473 null]
 >> endobj
 1662 0 obj <<
-/D [3963 0 R /XYZ 71.731 556.489 null]
+/D [3957 0 R /XYZ 71.731 556.489 null]
 >> endobj
 726 0 obj <<
-/D [3963 0 R /XYZ 197.015 517.216 null]
+/D [3957 0 R /XYZ 197.015 517.216 null]
 >> endobj
-3970 0 obj <<
-/D [3963 0 R /XYZ 71.731 509.297 null]
+3964 0 obj <<
+/D [3957 0 R /XYZ 71.731 509.297 null]
 >> endobj
-3971 0 obj <<
-/D [3963 0 R /XYZ 103.934 484.14 null]
+3965 0 obj <<
+/D [3957 0 R /XYZ 103.934 484.14 null]
 >> endobj
-3972 0 obj <<
-/D [3963 0 R /XYZ 105.405 471.189 null]
+3966 0 obj <<
+/D [3957 0 R /XYZ 105.351 471.189 null]
 >> endobj
-3973 0 obj <<
-/D [3963 0 R /XYZ 71.731 464.051 null]
+3967 0 obj <<
+/D [3957 0 R /XYZ 71.731 464.051 null]
 >> endobj
-3974 0 obj <<
-/D [3963 0 R /XYZ 352.773 453.256 null]
+3968 0 obj <<
+/D [3957 0 R /XYZ 518.615 453.256 null]
 >> endobj
 1663 0 obj <<
-/D [3963 0 R /XYZ 71.731 435.224 null]
+/D [3957 0 R /XYZ 71.731 433.167 null]
 >> endobj
 730 0 obj <<
-/D [3963 0 R /XYZ 185.739 395.951 null]
+/D [3957 0 R /XYZ 185.739 395.951 null]
 >> endobj
-3975 0 obj <<
-/D [3963 0 R /XYZ 71.731 388.599 null]
+3969 0 obj <<
+/D [3957 0 R /XYZ 71.731 388.599 null]
 >> endobj
-3976 0 obj <<
-/D [3963 0 R /XYZ 71.731 316.883 null]
+3970 0 obj <<
+/D [3957 0 R /XYZ 71.731 316.883 null]
 >> endobj
 1664 0 obj <<
-/D [3963 0 R /XYZ 71.731 288.056 null]
+/D [3957 0 R /XYZ 71.731 288.056 null]
 >> endobj
 734 0 obj <<
-/D [3963 0 R /XYZ 198.349 248.783 null]
+/D [3957 0 R /XYZ 198.349 248.783 null]
 >> endobj
-3977 0 obj <<
-/D [3963 0 R /XYZ 71.731 241.431 null]
+3971 0 obj <<
+/D [3957 0 R /XYZ 71.731 241.431 null]
 >> endobj
-3978 0 obj <<
-/D [3963 0 R /XYZ 71.731 197.675 null]
+3972 0 obj <<
+/D [3957 0 R /XYZ 71.731 197.675 null]
 >> endobj
-3979 0 obj <<
-/D [3963 0 R /XYZ 71.731 177.685 null]
+3973 0 obj <<
+/D [3957 0 R /XYZ 71.731 177.685 null]
 >> endobj
-3980 0 obj <<
-/D [3963 0 R /XYZ 71.731 133.849 null]
+3974 0 obj <<
+/D [3957 0 R /XYZ 71.731 133.849 null]
 >> endobj
-3981 0 obj <<
-/D [3963 0 R /XYZ 71.731 97.152 null]
+3975 0 obj <<
+/D [3957 0 R /XYZ 71.731 97.152 null]
 >> endobj
-3962 0 obj <<
+3956 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-3984 0 obj <<
+3978 0 obj <<
 /Length 2505      
 /Filter /FlateDecode
 >>
@@ -14864,99 +14853,99 @@ xڝYK
 �Y��8�B�E�G�һ�.AsӝG���  ��j'3��<ep��7�*3?��8O9�����k5#����my��l����Kw��o
@@bc���rQ|�"y�pv�#� ̊��Y���9Po�3Ƕ9>󌨋��H���[Y��qQ�F>�L2�G�P�Ƙb�D�|~q�y��!�x�R�޼���t�^Z�n�m����^��xܿ5�ϋ:/?͇�����?0a������3I�:���#��*�H��L��T�"K`sS\�݂�;�Q��W����oZ�`�Z+~�)l�׫N��a����pܨ���2�pr��w���oܓa�,�Z-����qH�_�?5;��t��!�:=0u�
H9�.8-�884=�@��IF�x-�@��'�^]����/	��ASk���Zhާ����F���n���`�R�b�N0.�z�3�"�Ԡ�5ۆ+G1��X���#SWq��B����rڲp���f���_~~˄�J�D�n��Y�a�>6�Ͻ��nD���~hi0���O��評�Nc��)�abFz�c�TN�"���3��8�f�$W 5^)�� ��&ˆ�F�z�>f\�?vق)���E
����y�G����`��Z�[��^U�����������;h�:_!B@R�����N���/گu������n��)r�M5$ȋZ�!S�I
 $L;u�De�Z��*�5��{�����Rw]��w�����8����#���>���_��d��I��V&^	X����۝������endstream
 endobj
-3983 0 obj <<
+3977 0 obj <<
 /Type /Page
-/Contents 3984 0 R
-/Resources 3982 0 R
+/Contents 3978 0 R
+/Resources 3976 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3927 0 R
+/Parent 3921 0 R
 >> endobj
-3985 0 obj <<
-/D [3983 0 R /XYZ 71.731 729.265 null]
+3979 0 obj <<
+/D [3977 0 R /XYZ 71.731 729.265 null]
 >> endobj
-3986 0 obj <<
-/D [3983 0 R /XYZ 71.731 718.306 null]
+3980 0 obj <<
+/D [3977 0 R /XYZ 71.731 718.306 null]
 >> endobj
 1665 0 obj <<
-/D [3983 0 R /XYZ 71.731 652.389 null]
+/D [3977 0 R /XYZ 71.731 652.389 null]
 >> endobj
 738 0 obj <<
-/D [3983 0 R /XYZ 256.243 609.291 null]
+/D [3977 0 R /XYZ 256.243 609.291 null]
 >> endobj
-3987 0 obj <<
-/D [3983 0 R /XYZ 71.731 600.468 null]
+3981 0 obj <<
+/D [3977 0 R /XYZ 71.731 600.468 null]
 >> endobj
 1666 0 obj <<
-/D [3983 0 R /XYZ 71.731 572.624 null]
+/D [3977 0 R /XYZ 71.731 572.624 null]
 >> endobj
 742 0 obj <<
-/D [3983 0 R /XYZ 237.557 535.408 null]
+/D [3977 0 R /XYZ 237.557 535.408 null]
 >> endobj
-3988 0 obj <<
-/D [3983 0 R /XYZ 71.731 525.043 null]
+3982 0 obj <<
+/D [3977 0 R /XYZ 71.731 525.043 null]
 >> endobj
-3989 0 obj <<
-/D [3983 0 R /XYZ 406.408 502.332 null]
+3983 0 obj <<
+/D [3977 0 R /XYZ 406.408 502.332 null]
 >> endobj
-3990 0 obj <<
-/D [3983 0 R /XYZ 512.678 502.332 null]
+3984 0 obj <<
+/D [3977 0 R /XYZ 512.678 502.332 null]
 >> endobj
 1667 0 obj <<
-/D [3983 0 R /XYZ 71.731 469.291 null]
+/D [3977 0 R /XYZ 71.731 469.291 null]
 >> endobj
 746 0 obj <<
-/D [3983 0 R /XYZ 218.447 432.076 null]
+/D [3977 0 R /XYZ 218.447 432.076 null]
+>> endobj
+3985 0 obj <<
+/D [3977 0 R /XYZ 71.731 421.711 null]
+>> endobj
+3986 0 obj <<
+/D [3977 0 R /XYZ 71.731 404.813 null]
+>> endobj
+3987 0 obj <<
+/D [3977 0 R /XYZ 219.242 394.018 null]
+>> endobj
+3988 0 obj <<
+/D [3977 0 R /XYZ 71.731 353.007 null]
+>> endobj
+3989 0 obj <<
+/D [3977 0 R /XYZ 71.731 338.063 null]
+>> endobj
+3990 0 obj <<
+/D [3977 0 R /XYZ 71.731 289.012 null]
 >> endobj
 3991 0 obj <<
-/D [3983 0 R /XYZ 71.731 421.711 null]
+/D [3977 0 R /XYZ 317.393 263.109 null]
 >> endobj
 3992 0 obj <<
-/D [3983 0 R /XYZ 71.731 404.813 null]
+/D [3977 0 R /XYZ 232.347 250.158 null]
 >> endobj
 3993 0 obj <<
-/D [3983 0 R /XYZ 219.242 394.018 null]
+/D [3977 0 R /XYZ 71.731 248.001 null]
 >> endobj
 3994 0 obj <<
-/D [3983 0 R /XYZ 71.731 353.007 null]
+/D [3977 0 R /XYZ 71.731 233.057 null]
 >> endobj
 3995 0 obj <<
-/D [3983 0 R /XYZ 71.731 338.063 null]
+/D [3977 0 R /XYZ 91.656 211.901 null]
 >> endobj
 3996 0 obj <<
-/D [3983 0 R /XYZ 71.731 289.012 null]
+/D [3977 0 R /XYZ 71.731 172.35 null]
 >> endobj
 3997 0 obj <<
-/D [3983 0 R /XYZ 317.393 263.109 null]
+/D [3977 0 R /XYZ 475.448 159.398 null]
 >> endobj
 3998 0 obj <<
-/D [3983 0 R /XYZ 232.347 250.158 null]
+/D [3977 0 R /XYZ 71.731 118.387 null]
 >> endobj
 3999 0 obj <<
-/D [3983 0 R /XYZ 71.731 248.001 null]
+/D [3977 0 R /XYZ 71.731 113.406 null]
 >> endobj
-4000 0 obj <<
-/D [3983 0 R /XYZ 71.731 233.057 null]
->> endobj
-4001 0 obj <<
-/D [3983 0 R /XYZ 91.656 211.901 null]
->> endobj
-4002 0 obj <<
-/D [3983 0 R /XYZ 71.731 172.35 null]
->> endobj
-4003 0 obj <<
-/D [3983 0 R /XYZ 475.448 159.398 null]
->> endobj
-4004 0 obj <<
-/D [3983 0 R /XYZ 71.731 118.387 null]
->> endobj
-4005 0 obj <<
-/D [3983 0 R /XYZ 71.731 113.406 null]
->> endobj
-3982 0 obj <<
+3976 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4008 0 obj <<
+4002 0 obj <<
 /Length 2658      
 /Filter /FlateDecode
 >>
@@ -14973,129 +14962,129 @@ CFK
 �l�F]��0v�饦b+�ݶ�Ɩ�{O�
 �~3�Jv�"��"��(����ڜ�O®�'�_�����3��O�4�am���������;��endstream
 endobj
-4007 0 obj <<
+4001 0 obj <<
 /Type /Page
-/Contents 4008 0 R
-/Resources 4006 0 R
+/Contents 4002 0 R
+/Resources 4000 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 3927 0 R
+/Parent 3921 0 R
+>> endobj
+4003 0 obj <<
+/D [4001 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4004 0 obj <<
+/D [4001 0 R /XYZ 71.731 741.22 null]
+>> endobj
+4005 0 obj <<
+/D [4001 0 R /XYZ 81.694 708.344 null]
+>> endobj
+4006 0 obj <<
+/D [4001 0 R /XYZ 491.507 708.344 null]
+>> endobj
+4007 0 obj <<
+/D [4001 0 R /XYZ 71.731 695.293 null]
+>> endobj
+4008 0 obj <<
+/D [4001 0 R /XYZ 81.694 682.441 null]
 >> endobj
 4009 0 obj <<
-/D [4007 0 R /XYZ 71.731 729.265 null]
+/D [4001 0 R /XYZ 139.516 669.489 null]
 >> endobj
 4010 0 obj <<
-/D [4007 0 R /XYZ 71.731 741.22 null]
+/D [4001 0 R /XYZ 71.731 667.333 null]
 >> endobj
 4011 0 obj <<
-/D [4007 0 R /XYZ 81.694 708.344 null]
+/D [4001 0 R /XYZ 81.694 656.538 null]
 >> endobj
 4012 0 obj <<
-/D [4007 0 R /XYZ 491.507 708.344 null]
+/D [4001 0 R /XYZ 478.291 656.538 null]
 >> endobj
 4013 0 obj <<
-/D [4007 0 R /XYZ 71.731 695.293 null]
+/D [4001 0 R /XYZ 71.731 641.43 null]
 >> endobj
 4014 0 obj <<
-/D [4007 0 R /XYZ 81.694 682.441 null]
+/D [4001 0 R /XYZ 81.694 630.635 null]
 >> endobj
 4015 0 obj <<
-/D [4007 0 R /XYZ 139.516 669.489 null]
+/D [4001 0 R /XYZ 373.716 630.635 null]
 >> endobj
 4016 0 obj <<
-/D [4007 0 R /XYZ 71.731 667.333 null]
+/D [4001 0 R /XYZ 71.731 628.478 null]
 >> endobj
 4017 0 obj <<
-/D [4007 0 R /XYZ 81.694 656.538 null]
+/D [4001 0 R /XYZ 81.694 617.684 null]
 >> endobj
 4018 0 obj <<
-/D [4007 0 R /XYZ 478.291 656.538 null]
+/D [4001 0 R /XYZ 511.114 617.684 null]
 >> endobj
 4019 0 obj <<
-/D [4007 0 R /XYZ 71.731 641.43 null]
+/D [4001 0 R /XYZ 71.731 602.575 null]
 >> endobj
 4020 0 obj <<
-/D [4007 0 R /XYZ 81.694 630.635 null]
+/D [4001 0 R /XYZ 71.731 587.631 null]
 >> endobj
 4021 0 obj <<
-/D [4007 0 R /XYZ 373.716 630.635 null]
+/D [4001 0 R /XYZ 71.731 550.237 null]
 >> endobj
 4022 0 obj <<
-/D [4007 0 R /XYZ 71.731 628.478 null]
+/D [4001 0 R /XYZ 339.03 498.431 null]
 >> endobj
 4023 0 obj <<
-/D [4007 0 R /XYZ 81.694 617.684 null]
+/D [4001 0 R /XYZ 96.637 472.528 null]
 >> endobj
 4024 0 obj <<
-/D [4007 0 R /XYZ 511.114 617.684 null]
+/D [4001 0 R /XYZ 276.322 472.528 null]
 >> endobj
 4025 0 obj <<
-/D [4007 0 R /XYZ 71.731 602.575 null]
+/D [4001 0 R /XYZ 71.731 470.371 null]
 >> endobj
 4026 0 obj <<
-/D [4007 0 R /XYZ 71.731 587.631 null]
+/D [4001 0 R /XYZ 71.731 455.427 null]
 >> endobj
 4027 0 obj <<
-/D [4007 0 R /XYZ 71.731 550.237 null]
+/D [4001 0 R /XYZ 187.678 445.928 null]
 >> endobj
 4028 0 obj <<
-/D [4007 0 R /XYZ 339.03 498.431 null]
+/D [4001 0 R /XYZ 71.731 394.72 null]
 >> endobj
 4029 0 obj <<
-/D [4007 0 R /XYZ 96.637 472.528 null]
+/D [4001 0 R /XYZ 180.774 381.768 null]
 >> endobj
 4030 0 obj <<
-/D [4007 0 R /XYZ 276.322 472.528 null]
+/D [4001 0 R /XYZ 391.53 381.768 null]
 >> endobj
 4031 0 obj <<
-/D [4007 0 R /XYZ 71.731 470.371 null]
+/D [4001 0 R /XYZ 71.731 348.727 null]
 >> endobj
 4032 0 obj <<
-/D [4007 0 R /XYZ 71.731 455.427 null]
->> endobj
-4033 0 obj <<
-/D [4007 0 R /XYZ 187.678 445.928 null]
->> endobj
-4034 0 obj <<
-/D [4007 0 R /XYZ 71.731 394.72 null]
->> endobj
-4035 0 obj <<
-/D [4007 0 R /XYZ 180.774 381.768 null]
->> endobj
-4036 0 obj <<
-/D [4007 0 R /XYZ 391.53 381.768 null]
->> endobj
-4037 0 obj <<
-/D [4007 0 R /XYZ 71.731 348.727 null]
->> endobj
-4038 0 obj <<
-/D [4007 0 R /XYZ 104 312.03 null]
+/D [4001 0 R /XYZ 104 312.03 null]
 >> endobj
 1668 0 obj <<
-/D [4007 0 R /XYZ 71.731 304.892 null]
+/D [4001 0 R /XYZ 71.731 304.892 null]
 >> endobj
 750 0 obj <<
-/D [4007 0 R /XYZ 204.474 267.676 null]
+/D [4001 0 R /XYZ 204.474 267.676 null]
 >> endobj
-4039 0 obj <<
-/D [4007 0 R /XYZ 71.731 260.324 null]
+4033 0 obj <<
+/D [4001 0 R /XYZ 71.731 260.324 null]
 >> endobj
 1669 0 obj <<
-/D [4007 0 R /XYZ 71.731 217.499 null]
+/D [4001 0 R /XYZ 71.731 217.499 null]
 >> endobj
 754 0 obj <<
-/D [4007 0 R /XYZ 275.232 174.402 null]
+/D [4001 0 R /XYZ 275.232 174.402 null]
 >> endobj
-4040 0 obj <<
-/D [4007 0 R /XYZ 71.731 162.231 null]
+4034 0 obj <<
+/D [4001 0 R /XYZ 71.731 162.231 null]
 >> endobj
 1670 0 obj <<
-/D [4007 0 R /XYZ 71.731 125.157 null]
+/D [4001 0 R /XYZ 71.731 125.157 null]
 >> endobj
-4006 0 obj <<
+4000 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4043 0 obj <<
+4037 0 obj <<
 /Length 2640      
 /Filter /FlateDecode
 >>
@@ -15109,72 +15098,72 @@ u
 ~I!P�L���U�$J��Yhc�}���U�R
}{RT
 Q��?#�
��:�6�$xey��n���$�jZx3s������:�f5�s�
v �K67�3���޾�.��_a���"�h� �ě���s��./e8ei��LJ����l�d���9��t�K�o�����o�/�v���aW�S��)���ܱWP��sS*����gm&��K9�3]��]��!n�Dw7(��y��k0,:-��z�k1y�gF8#�sd�h�-�1�"w�0if���P͚g�P�;T&���I�S�x2�^����*[M�|�ܩ�!��r'�m;жKp7v6�w�幂ϧ!��&��l0�w��1��8&�CO�y��2��R����C�'E}>s���)�8=�~+��L�5��ۗ�50@݄�촓����_��=@&R�G����1`[�w����� �� �o;Ѱ��D"�$��NJ��W�b�M]�(�n�Ŧ�ba����i̭4����"2�2U�y]�<x�6����DZ2�2�g��fK�z�3�x9��ō܍]	Ɵ���6,���:��bl��tma�c�b[ ���e�2�Ԧb	^S�t/�Z��MM7��(}�m2�J ��Ob�*x��$t3���7J�3G�%�~a����-%}�����z���I�C�8�p�r偗x��>�����ܿ]1՗���~zw�v�������J�����=`�l�o��V3��V�j�[oj[��'2��uNKez���6�\S�%r��27�ɟdq�gA����$���K��`������c��V�"E�Aendstream
 endobj
-4042 0 obj <<
+4036 0 obj <<
 /Type /Page
-/Contents 4043 0 R
-/Resources 4041 0 R
+/Contents 4037 0 R
+/Resources 4035 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4057 0 R
+/Parent 4051 0 R
 >> endobj
-4044 0 obj <<
-/D [4042 0 R /XYZ 71.731 729.265 null]
+4038 0 obj <<
+/D [4036 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4045 0 obj <<
-/D [4042 0 R /XYZ 71.731 741.22 null]
+4039 0 obj <<
+/D [4036 0 R /XYZ 71.731 741.22 null]
 >> endobj
 758 0 obj <<
-/D [4042 0 R /XYZ 174.075 708.149 null]
+/D [4036 0 R /XYZ 174.075 708.149 null]
 >> endobj
-4046 0 obj <<
-/D [4042 0 R /XYZ 71.731 698.007 null]
+4040 0 obj <<
+/D [4036 0 R /XYZ 71.731 698.007 null]
 >> endobj
-4047 0 obj <<
-/D [4042 0 R /XYZ 71.731 639.108 null]
+4041 0 obj <<
+/D [4036 0 R /XYZ 71.731 639.108 null]
 >> endobj
-4048 0 obj <<
-/D [4042 0 R /XYZ 71.731 593.215 null]
+4042 0 obj <<
+/D [4036 0 R /XYZ 71.731 593.215 null]
 >> endobj
-4049 0 obj <<
-/D [4042 0 R /XYZ 71.731 562.331 null]
+4043 0 obj <<
+/D [4036 0 R /XYZ 71.731 562.331 null]
 >> endobj
 1671 0 obj <<
-/D [4042 0 R /XYZ 71.731 507.601 null]
+/D [4036 0 R /XYZ 71.731 507.601 null]
 >> endobj
 762 0 obj <<
-/D [4042 0 R /XYZ 165.31 468.329 null]
+/D [4036 0 R /XYZ 165.31 468.329 null]
 >> endobj
-4050 0 obj <<
-/D [4042 0 R /XYZ 71.731 460.976 null]
+4044 0 obj <<
+/D [4036 0 R /XYZ 71.731 460.976 null]
 >> endobj
-4051 0 obj <<
-/D [4042 0 R /XYZ 71.731 441.066 null]
+4045 0 obj <<
+/D [4036 0 R /XYZ 71.731 441.066 null]
 >> endobj
-4052 0 obj <<
-/D [4042 0 R /XYZ 71.731 391.318 null]
+4046 0 obj <<
+/D [4036 0 R /XYZ 71.731 391.318 null]
 >> endobj
-4053 0 obj <<
-/D [4042 0 R /XYZ 71.731 376.374 null]
+4047 0 obj <<
+/D [4036 0 R /XYZ 71.731 376.374 null]
 >> endobj
-4054 0 obj <<
-/D [4042 0 R /XYZ 71.731 325.265 null]
+4048 0 obj <<
+/D [4036 0 R /XYZ 71.731 325.265 null]
 >> endobj
-4055 0 obj <<
-/D [4042 0 R /XYZ 71.731 279.273 null]
+4049 0 obj <<
+/D [4036 0 R /XYZ 71.731 279.273 null]
 >> endobj
 1672 0 obj <<
-/D [4042 0 R /XYZ 71.731 229.524 null]
+/D [4036 0 R /XYZ 71.731 229.524 null]
 >> endobj
 766 0 obj <<
-/D [4042 0 R /XYZ 211.497 195.153 null]
+/D [4036 0 R /XYZ 211.497 195.153 null]
 >> endobj
-4056 0 obj <<
-/D [4042 0 R /XYZ 71.731 186.516 null]
+4050 0 obj <<
+/D [4036 0 R /XYZ 71.731 186.516 null]
 >> endobj
-4041 0 obj <<
+4035 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R /F44 1884 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4060 0 obj <<
+4054 0 obj <<
 /Length 2418      
 /Filter /FlateDecode
 >>
@@ -15190,72 +15179,72 @@ t
 ���"0K�W���Vg�\��[���\̕~+/)�+��ji�!�P�!�M��ڤ߲i==V�*����-V`�Gӯ,"��F�b�9d:&�-����>�Y�����w��i�ݩ��z��� ���>@��p0��ňRc#�Q���G
,���t��*��a�
����Na
��)�&S�D�MK���,�E�l�Y$׊c.>mODܭn���[s7�k�j�9��k&�W��{�J����~<��{� �,���gk��(�Z�z��kl�����M`S���+@i���~�f|k�	,_�C�?��|G�@����޺iti��}�FD������g#�lV�N�)����^ĉ�힁$�Ir�k�DZ6�bӉ'��^�S���MŦ������Bc0�0
 �\D��m[`�	�h	�x��~�Ϲ�Ɂ�z7�bTԁ�E'R��=x�]��X�F��	��pt�l؊�J)�ZJ����kVԚ�%!*�׀��o(��h��i���������!L�]h���I����w�),5Qendstream
 endobj
-4059 0 obj <<
+4053 0 obj <<
 /Type /Page
-/Contents 4060 0 R
-/Resources 4058 0 R
+/Contents 4054 0 R
+/Resources 4052 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4057 0 R
+/Parent 4051 0 R
 >> endobj
-4061 0 obj <<
-/D [4059 0 R /XYZ 71.731 729.265 null]
+4055 0 obj <<
+/D [4053 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4062 0 obj <<
-/D [4059 0 R /XYZ 71.731 718.306 null]
+4056 0 obj <<
+/D [4053 0 R /XYZ 71.731 718.306 null]
 >> endobj
-4063 0 obj <<
-/D [4059 0 R /XYZ 71.731 644.419 null]
+4057 0 obj <<
+/D [4053 0 R /XYZ 71.731 644.419 null]
 >> endobj
-4064 0 obj <<
-/D [4059 0 R /XYZ 71.731 613.534 null]
+4058 0 obj <<
+/D [4053 0 R /XYZ 71.731 613.534 null]
 >> endobj
 1673 0 obj <<
-/D [4059 0 R /XYZ 71.731 595.602 null]
+/D [4053 0 R /XYZ 71.731 595.602 null]
 >> endobj
 770 0 obj <<
-/D [4059 0 R /XYZ 255.599 562.291 null]
+/D [4053 0 R /XYZ 255.599 562.291 null]
 >> endobj
-4065 0 obj <<
-/D [4059 0 R /XYZ 71.731 553.654 null]
+4059 0 obj <<
+/D [4053 0 R /XYZ 71.731 553.654 null]
 >> endobj
-4066 0 obj <<
-/D [4059 0 R /XYZ 71.731 510.321 null]
+4060 0 obj <<
+/D [4053 0 R /XYZ 71.731 510.321 null]
 >> endobj
 1674 0 obj <<
-/D [4059 0 R /XYZ 71.731 459.512 null]
+/D [4053 0 R /XYZ 71.731 459.512 null]
 >> endobj
 774 0 obj <<
-/D [4059 0 R /XYZ 159.597 416.414 null]
+/D [4053 0 R /XYZ 159.597 416.414 null]
 >> endobj
-4067 0 obj <<
-/D [4059 0 R /XYZ 71.731 403.976 null]
+4061 0 obj <<
+/D [4053 0 R /XYZ 71.731 403.976 null]
 >> endobj
-4068 0 obj <<
-/D [4059 0 R /XYZ 71.731 374.766 null]
+4062 0 obj <<
+/D [4053 0 R /XYZ 71.731 374.766 null]
 >> endobj
-4069 0 obj <<
-/D [4059 0 R /XYZ 71.731 343.882 null]
+4063 0 obj <<
+/D [4053 0 R /XYZ 71.731 343.882 null]
 >> endobj
-4070 0 obj <<
-/D [4059 0 R /XYZ 71.731 287.094 null]
+4064 0 obj <<
+/D [4053 0 R /XYZ 71.731 287.094 null]
 >> endobj
-4071 0 obj <<
-/D [4059 0 R /XYZ 71.731 269.162 null]
+4065 0 obj <<
+/D [4053 0 R /XYZ 71.731 269.162 null]
 >> endobj
-4072 0 obj <<
-/D [4059 0 R /XYZ 71.731 238.278 null]
+4066 0 obj <<
+/D [4053 0 R /XYZ 71.731 238.278 null]
 >> endobj
-4073 0 obj <<
-/D [4059 0 R /XYZ 71.731 207.393 null]
+4067 0 obj <<
+/D [4053 0 R /XYZ 71.731 207.393 null]
 >> endobj
 1675 0 obj <<
-/D [4059 0 R /XYZ 71.731 163.558 null]
+/D [4053 0 R /XYZ 71.731 163.558 null]
 >> endobj
-4058 0 obj <<
+4052 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4076 0 obj <<
+4070 0 obj <<
 /Length 2596      
 /Filter /FlateDecode
 >>
@@ -15272,96 +15261,96 @@ Y
 ��`ѼDf���kK�m�PP�T6���1"��(���o��.X��1�.�r���.�;���l|8P:“�jA��2^��;*��R��2�5*����-_�ع�`���u���Zí��
 �����w	ƺ�w)zZ6���㞇������i�g��u�i�8zg��X@��Oɓ����8�B7&z��FhzAA�D-�!,����c3`�E�^�ؕ�����Pއ�f+�P�„O	p�b�>+e����h�!0�b-uܴ_�ݪ�U��T3��r|��Vd��W侮v.�>�P��8��>�4���g""Ǎ��&�t����"��A��N$W?�0Q~蘠q����%�KP�endstream
 endobj
-4075 0 obj <<
+4069 0 obj <<
 /Type /Page
-/Contents 4076 0 R
-/Resources 4074 0 R
+/Contents 4070 0 R
+/Resources 4068 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4057 0 R
-/Annots [ 4085 0 R 4088 0 R ]
+/Parent 4051 0 R
+/Annots [ 4079 0 R 4082 0 R ]
 >> endobj
-4085 0 obj <<
+4079 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [138.415 482.569 190.751 489.347]
 /Subtype /Link
 /A << /S /GoTo /D (installation-whining) >>
 >> endobj
-4088 0 obj <<
+4082 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [364.929 432.646 418.584 441.128]
 /Subtype /Link
 /A << /S /GoTo /D (installation-whining-cron) >>
 >> endobj
-4077 0 obj <<
-/D [4075 0 R /XYZ 71.731 729.265 null]
+4071 0 obj <<
+/D [4069 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4078 0 obj <<
-/D [4075 0 R /XYZ 71.731 741.22 null]
+4072 0 obj <<
+/D [4069 0 R /XYZ 71.731 741.22 null]
 >> endobj
 778 0 obj <<
-/D [4075 0 R /XYZ 182.7 705.748 null]
+/D [4069 0 R /XYZ 182.7 705.748 null]
 >> endobj
-4079 0 obj <<
-/D [4075 0 R /XYZ 71.731 693.31 null]
+4073 0 obj <<
+/D [4069 0 R /XYZ 71.731 693.31 null]
 >> endobj
-4080 0 obj <<
-/D [4075 0 R /XYZ 71.731 643.177 null]
+4074 0 obj <<
+/D [4069 0 R /XYZ 71.731 643.177 null]
 >> endobj
-4081 0 obj <<
-/D [4075 0 R /XYZ 118.555 604.613 null]
+4075 0 obj <<
+/D [4069 0 R /XYZ 118.555 604.613 null]
 >> endobj
-4082 0 obj <<
-/D [4075 0 R /XYZ 118.555 565.86 null]
+4076 0 obj <<
+/D [4069 0 R /XYZ 118.555 565.86 null]
 >> endobj
-4083 0 obj <<
-/D [4075 0 R /XYZ 71.731 520.929 null]
+4077 0 obj <<
+/D [4069 0 R /XYZ 71.731 520.929 null]
 >> endobj
-4084 0 obj <<
-/D [4075 0 R /XYZ 71.731 501.003 null]
+4078 0 obj <<
+/D [4069 0 R /XYZ 71.731 501.003 null]
 >> endobj
-4086 0 obj <<
-/D [4075 0 R /XYZ 76.712 466.115 null]
+4080 0 obj <<
+/D [4069 0 R /XYZ 76.712 466.115 null]
 >> endobj
-4087 0 obj <<
-/D [4075 0 R /XYZ 71.731 446.189 null]
+4081 0 obj <<
+/D [4069 0 R /XYZ 71.731 446.189 null]
 >> endobj
 1676 0 obj <<
-/D [4075 0 R /XYZ 76.712 404.944 null]
+/D [4069 0 R /XYZ 76.712 404.944 null]
 >> endobj
 782 0 obj <<
-/D [4075 0 R /XYZ 188.149 365.572 null]
+/D [4069 0 R /XYZ 188.149 365.572 null]
 >> endobj
-4089 0 obj <<
-/D [4075 0 R /XYZ 71.731 358.219 null]
+4083 0 obj <<
+/D [4069 0 R /XYZ 71.731 358.219 null]
 >> endobj
-4090 0 obj <<
-/D [4075 0 R /XYZ 71.731 325.358 null]
+4084 0 obj <<
+/D [4069 0 R /XYZ 71.731 325.358 null]
 >> endobj
-4091 0 obj <<
-/D [4075 0 R /XYZ 71.731 268.571 null]
+4085 0 obj <<
+/D [4069 0 R /XYZ 71.731 268.571 null]
 >> endobj
 1677 0 obj <<
-/D [4075 0 R /XYZ 71.731 238.06 null]
+/D [4069 0 R /XYZ 71.731 238.06 null]
 >> endobj
 786 0 obj <<
-/D [4075 0 R /XYZ 243.797 200.471 null]
+/D [4069 0 R /XYZ 243.797 200.471 null]
 >> endobj
-4092 0 obj <<
-/D [4075 0 R /XYZ 71.731 190.106 null]
+4086 0 obj <<
+/D [4069 0 R /XYZ 71.731 190.106 null]
 >> endobj
-4093 0 obj <<
-/D [4075 0 R /XYZ 71.731 147.305 null]
+4087 0 obj <<
+/D [4069 0 R /XYZ 71.731 147.305 null]
 >> endobj
-4094 0 obj <<
-/D [4075 0 R /XYZ 71.731 108.451 null]
+4088 0 obj <<
+/D [4069 0 R /XYZ 71.731 108.451 null]
 >> endobj
-4074 0 obj <<
+4068 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F27 1112 0 R /F44 1884 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4097 0 obj <<
+4091 0 obj <<
 /Length 2907      
 /Filter /FlateDecode
 >>
@@ -15377,71 +15366,71 @@ xڥk
 ��	X�I��p���F��uBB��GQ����ÕiA5��a2Nh9���⾸f]r�]6��
 h�?`^�-�-#f�E	�߿���[�$�`Tl��C��5��|�����u妧	|��Ճ�^��A�<p�0���fqr�˄��ψn&׌P���|.I֋a�F�c����yu�5#1#�N]�������+�?�k!��W���"n�`��Đ �|����r^�W�O<�W��X~���='�祫'q�r��'�����خb�f��Q��<��a�0n29��l�\,f_!����<��6�����#%���<�z�����Q��U���[	���לf��ăR��BUPQ`��O���nl�yn���� 5~��xxJ����&�Mo�&D�@�t���Af�M�繞��.װy\��!ސC����vN=6�e��`4'``�;���lg���;~X�)���)�=��Gmv-���j�!f��?���0!�q�L^`�:.Ϗ���0N�͏+X`�~�q�‰�j�b��vwt��-\o�L�	�y���U�âD8`<������~|���3�ܾ�����oLm���Xiu���O��;�=�.�΅f1��3�q�''�@���ނ��*By� r����۵����|���/��������7��#Y��E��������8�\/0Lp����w�ە��#{W�endstream
 endobj
-4096 0 obj <<
+4090 0 obj <<
 /Type /Page
-/Contents 4097 0 R
-/Resources 4095 0 R
+/Contents 4091 0 R
+/Resources 4089 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4057 0 R
-/Annots [ 4106 0 R ]
+/Parent 4051 0 R
+/Annots [ 4100 0 R ]
 >> endobj
-4106 0 obj <<
+4100 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [192.636 269.699 237.468 278.61]
 /Subtype /Link
 /A << /S /GoTo /D (list) >>
 >> endobj
-4098 0 obj <<
-/D [4096 0 R /XYZ 71.731 729.265 null]
+4092 0 obj <<
+/D [4090 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4099 0 obj <<
-/D [4096 0 R /XYZ 118.555 689.705 null]
+4093 0 obj <<
+/D [4090 0 R /XYZ 118.555 689.705 null]
 >> endobj
-4100 0 obj <<
-/D [4096 0 R /XYZ 71.731 596.992 null]
+4094 0 obj <<
+/D [4090 0 R /XYZ 71.731 596.992 null]
 >> endobj
-4101 0 obj <<
-/D [4096 0 R /XYZ 71.731 545.186 null]
+4095 0 obj <<
+/D [4090 0 R /XYZ 71.731 545.186 null]
 >> endobj
-4102 0 obj <<
-/D [4096 0 R /XYZ 71.731 530.242 null]
+4096 0 obj <<
+/D [4090 0 R /XYZ 71.731 530.242 null]
 >> endobj
 1678 0 obj <<
-/D [4096 0 R /XYZ 71.731 457.878 null]
+/D [4090 0 R /XYZ 71.731 457.878 null]
 >> endobj
 790 0 obj <<
-/D [4096 0 R /XYZ 233.582 418.506 null]
+/D [4090 0 R /XYZ 233.582 418.506 null]
 >> endobj
-4103 0 obj <<
-/D [4096 0 R /XYZ 71.731 408.141 null]
+4097 0 obj <<
+/D [4090 0 R /XYZ 71.731 408.141 null]
 >> endobj
-4104 0 obj <<
-/D [4096 0 R /XYZ 71.731 365.34 null]
+4098 0 obj <<
+/D [4090 0 R /XYZ 71.731 365.34 null]
 >> endobj
-4105 0 obj <<
-/D [4096 0 R /XYZ 71.731 334.456 null]
+4099 0 obj <<
+/D [4090 0 R /XYZ 71.731 334.456 null]
 >> endobj
-4107 0 obj <<
-/D [4096 0 R /XYZ 71.731 269.699 null]
+4101 0 obj <<
+/D [4090 0 R /XYZ 71.731 269.699 null]
 >> endobj
-4108 0 obj <<
-/D [4096 0 R /XYZ 71.731 254.755 null]
+4102 0 obj <<
+/D [4090 0 R /XYZ 71.731 254.755 null]
 >> endobj
-4109 0 obj <<
-/D [4096 0 R /XYZ 71.731 205.704 null]
+4103 0 obj <<
+/D [4090 0 R /XYZ 71.731 205.704 null]
 >> endobj
-4110 0 obj <<
-/D [4096 0 R /XYZ 71.731 159.711 null]
+4104 0 obj <<
+/D [4090 0 R /XYZ 71.731 159.711 null]
 >> endobj
-4111 0 obj <<
-/D [4096 0 R /XYZ 71.731 135.866 null]
+4105 0 obj <<
+/D [4090 0 R /XYZ 71.731 135.866 null]
 >> endobj
-4095 0 obj <<
+4089 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F44 1884 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4114 0 obj <<
+4108 0 obj <<
 /Length 953       
 /Filter /FlateDecode
 >>
@@ -15452,39 +15441,39 @@ ZhAV
 B�yI8-KI���o�M1�ix �O���we"�\R�+���a��"!	WT*�s$�RĔ9-�"��T���{�H��K�HI
2^@6����F���j���i&�H*�w�C�Q��֩dɰwQ�uU*Xr2�O�mT-_�q׹q��(�|��)�YFi�v)J�q=z�p����Nъ���!Xc����Nѧ� ��t<2�v_	Ω�����5@D^$��՘r����9/|6�n�*�<�B'���ɕU�٦�b��P2��/�CIFea�q��L��L@P��i��p
݃,3n*��}c}��
A~�r�s�G��k8K�B��"��9�H0ʅv_��ϯ��1��ʹ��"�ET��c�w5���:;Nx4�:-�C�n�sd�O�;�����l�=]G��ow5X�}1t]3-)���F�6�x�Sy��a�1w����~B]�����O(J�I����P��i��6"�C4�t����Y^t��c�Q�f�i���
���dFF��arϮ���TÎ��iQ�Y;�9x�1�0�A�s-Jms��ѵk݄����f����3W���B= bP>�g�a�y��o�
�ǧ&����e��4�x�鿲�w0�25��ʝ��̇Q�I�0Ҕ
 �ï�V[���5�V*�G�*��ƶ�Y~��8���1j""$�1��Y��Z�I;�Pv��2�A��������b��#�3+"�n��ɕ��C�~;4��Q-x����r�-�EA�8��G�מ�ǭ%�endstream
 endobj
-4113 0 obj <<
+4107 0 obj <<
 /Type /Page
-/Contents 4114 0 R
-/Resources 4112 0 R
+/Contents 4108 0 R
+/Resources 4106 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4057 0 R
+/Parent 4051 0 R
 >> endobj
-4115 0 obj <<
-/D [4113 0 R /XYZ 71.731 729.265 null]
+4109 0 obj <<
+/D [4107 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4116 0 obj <<
-/D [4113 0 R /XYZ 118.555 689.705 null]
+4110 0 obj <<
+/D [4107 0 R /XYZ 118.555 689.705 null]
 >> endobj
 1679 0 obj <<
-/D [4113 0 R /XYZ 71.731 647.664 null]
+/D [4107 0 R /XYZ 71.731 647.664 null]
 >> endobj
 794 0 obj <<
-/D [4113 0 R /XYZ 266.363 615.268 null]
+/D [4107 0 R /XYZ 266.363 615.268 null]
 >> endobj
-4117 0 obj <<
-/D [4113 0 R /XYZ 71.731 604.903 null]
+4111 0 obj <<
+/D [4107 0 R /XYZ 71.731 604.903 null]
 >> endobj
-4118 0 obj <<
-/D [4113 0 R /XYZ 71.731 580.035 null]
+4112 0 obj <<
+/D [4107 0 R /XYZ 71.731 580.035 null]
 >> endobj
-4119 0 obj <<
-/D [4113 0 R /XYZ 71.731 565.091 null]
+4113 0 obj <<
+/D [4107 0 R /XYZ 71.731 565.091 null]
 >> endobj
-4112 0 obj <<
+4106 0 obj <<
 /Font << /F33 1210 0 R /F23 1105 0 R /F44 1884 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4122 0 obj <<
+4116 0 obj <<
 /Length 2433      
 /Filter /FlateDecode
 >>
@@ -15506,108 +15495,108 @@ W
 0z;����5���B���8��l�=P�i��Q�fW}%��7dx\�i.t)��)r(i���������
���������!#�m���Chٺ��$��؟_�j�#GE��Z`z!(	�4���������o�a�0�Rx&.̯����[�~��P!Ol�<�P�)ūK,��~��[��\�Ρ��V����I�m}&�n���B@o{\@C��u-%qe/_�r��w�nI���bS
 cۍ���
��}�8�4#��$+.'������f�X�F+?����*�^��t������endstream
 endobj
-4121 0 obj <<
+4115 0 obj <<
 /Type /Page
-/Contents 4122 0 R
-/Resources 4120 0 R
+/Contents 4116 0 R
+/Resources 4114 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4057 0 R
+/Parent 4051 0 R
 >> endobj
-4123 0 obj <<
-/D [4121 0 R /XYZ 71.731 729.265 null]
+4117 0 obj <<
+/D [4115 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1680 0 obj <<
-/D [4121 0 R /XYZ 71.731 718.306 null]
+/D [4115 0 R /XYZ 71.731 718.306 null]
 >> endobj
 798 0 obj <<
-/D [4121 0 R /XYZ 366.546 703.236 null]
+/D [4115 0 R /XYZ 366.546 703.236 null]
+>> endobj
+4118 0 obj <<
+/D [4115 0 R /XYZ 71.731 681.855 null]
+>> endobj
+4119 0 obj <<
+/D [4115 0 R /XYZ 71.731 671.343 null]
+>> endobj
+4120 0 obj <<
+/D [4115 0 R /XYZ 71.731 666.361 null]
+>> endobj
+4121 0 obj <<
+/D [4115 0 R /XYZ 71.731 661.38 null]
+>> endobj
+4122 0 obj <<
+/D [4115 0 R /XYZ 71.731 638.889 null]
+>> endobj
+4123 0 obj <<
+/D [4115 0 R /XYZ 71.731 615.552 null]
 >> endobj
 4124 0 obj <<
-/D [4121 0 R /XYZ 71.731 681.855 null]
+/D [4115 0 R /XYZ 354.338 599.776 null]
 >> endobj
 4125 0 obj <<
-/D [4121 0 R /XYZ 71.731 671.343 null]
+/D [4115 0 R /XYZ 71.731 597.619 null]
 >> endobj
 4126 0 obj <<
-/D [4121 0 R /XYZ 71.731 666.361 null]
+/D [4115 0 R /XYZ 71.731 574.705 null]
 >> endobj
 4127 0 obj <<
-/D [4121 0 R /XYZ 71.731 661.38 null]
+/D [4115 0 R /XYZ 71.731 569.724 null]
 >> endobj
 4128 0 obj <<
-/D [4121 0 R /XYZ 71.731 638.889 null]
+/D [4115 0 R /XYZ 71.731 538.84 null]
 >> endobj
 4129 0 obj <<
-/D [4121 0 R /XYZ 71.731 615.552 null]
+/D [4115 0 R /XYZ 74.222 497.161 null]
 >> endobj
 4130 0 obj <<
-/D [4121 0 R /XYZ 354.338 599.776 null]
+/D [4115 0 R /XYZ 71.731 472.09 null]
 >> endobj
 4131 0 obj <<
-/D [4121 0 R /XYZ 71.731 597.619 null]
+/D [4115 0 R /XYZ 138.434 456.314 null]
 >> endobj
 4132 0 obj <<
-/D [4121 0 R /XYZ 71.731 574.705 null]
+/D [4115 0 R /XYZ 288.63 443.363 null]
 >> endobj
 4133 0 obj <<
-/D [4121 0 R /XYZ 71.731 569.724 null]
+/D [4115 0 R /XYZ 95.641 417.46 null]
 >> endobj
 4134 0 obj <<
-/D [4121 0 R /XYZ 71.731 538.84 null]
+/D [4115 0 R /XYZ 71.731 416.052 null]
 >> endobj
 4135 0 obj <<
-/D [4121 0 R /XYZ 74.222 497.161 null]
+/D [4115 0 R /XYZ 71.731 392.389 null]
 >> endobj
 4136 0 obj <<
-/D [4121 0 R /XYZ 71.731 472.09 null]
+/D [4115 0 R /XYZ 105.325 376.613 null]
 >> endobj
 4137 0 obj <<
-/D [4121 0 R /XYZ 138.434 456.314 null]
+/D [4115 0 R /XYZ 71.731 374.456 null]
 >> endobj
 4138 0 obj <<
-/D [4121 0 R /XYZ 288.63 443.363 null]
+/D [4115 0 R /XYZ 71.731 351.542 null]
 >> endobj
 4139 0 obj <<
-/D [4121 0 R /XYZ 95.641 417.46 null]
+/D [4115 0 R /XYZ 71.731 276.822 null]
 >> endobj
 4140 0 obj <<
-/D [4121 0 R /XYZ 71.731 416.052 null]
+/D [4115 0 R /XYZ 296.767 253.076 null]
 >> endobj
 4141 0 obj <<
-/D [4121 0 R /XYZ 71.731 392.389 null]
+/D [4115 0 R /XYZ 74.222 222.192 null]
 >> endobj
 4142 0 obj <<
-/D [4121 0 R /XYZ 105.325 376.613 null]
+/D [4115 0 R /XYZ 71.731 197.121 null]
 >> endobj
 4143 0 obj <<
-/D [4121 0 R /XYZ 71.731 374.456 null]
+/D [4115 0 R /XYZ 71.731 148.304 null]
 >> endobj
 4144 0 obj <<
-/D [4121 0 R /XYZ 71.731 351.542 null]
->> endobj
-4145 0 obj <<
-/D [4121 0 R /XYZ 71.731 276.822 null]
+/D [4115 0 R /XYZ 378.741 137.509 null]
 >> endobj
-4146 0 obj <<
-/D [4121 0 R /XYZ 296.767 253.076 null]
->> endobj
-4147 0 obj <<
-/D [4121 0 R /XYZ 74.222 222.192 null]
->> endobj
-4148 0 obj <<
-/D [4121 0 R /XYZ 71.731 197.121 null]
->> endobj
-4149 0 obj <<
-/D [4121 0 R /XYZ 71.731 148.304 null]
->> endobj
-4150 0 obj <<
-/D [4121 0 R /XYZ 378.741 137.509 null]
->> endobj
-4120 0 obj <<
+4114 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F32 1119 0 R /F33 1210 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4153 0 obj <<
+4147 0 obj <<
 /Length 3235      
 /Filter /FlateDecode
 >>
@@ -15626,96 +15615,96 @@ UEG+j
 R�Զ��]'��Ĺ��YK�F�;&dA���4i���;o`�w�2�#w�$�SH��Q]l�p����?���Ē�P[”.S����P�V1~(�a
 L��������md��+�9�z2Z�f[�LjjS<M�Fچ<�{j� �~���>S���`"ù�2+�BۃD/�r-��9��	�Q_��MI�C���<7����2B^1u6�[��4��=��P>1����t;�-��qL|!56-I��㷮�~W�>�Fd�}�D$��)פ�H"mr���0w6C�<O�Đ{K�i�W�*L��a�s��FvM��r���W8����k.�Z����.��˻E���(���=�ɾp��8�_��O/x��sW�ծ������$�1�g�`���J'+7&a��_�kߋ\/^��_c���BЁn��_���5|��.Q��kq2���Qp6��_Q��k�m����B�K՗G6�N5��l@��:���Ο^(���Y0*`Y��f>�`_g{��x�8�զ#�z�Qg8k����xJl���������2e�	֏���'7LlzQV�`.L\R"ޙ6��B��.WQ��G��M"�Pw[)��iՃ�&�#́#�8T&��΍]/z�5e�.��-̭��H`����
n$���I<R�D(�
���	Y��T3c�O0akEV]X�Qx��~�'i�m{���9L}�ʨW�+4vbґ>S����o[�������b1fC�u�/�dmh'����+q�x����h�+?�뱰W�W-���u����@��͢��l�<z��~�k���!���P������2��-��_g$g���v�J~�o,�O�/@��endstream
 endobj
-4152 0 obj <<
+4146 0 obj <<
 /Type /Page
-/Contents 4153 0 R
-/Resources 4151 0 R
+/Contents 4147 0 R
+/Resources 4145 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4180 0 R
+/Parent 4174 0 R
+>> endobj
+4148 0 obj <<
+/D [4146 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4149 0 obj <<
+/D [4146 0 R /XYZ 71.731 741.22 null]
+>> endobj
+4150 0 obj <<
+/D [4146 0 R /XYZ 71.731 675.303 null]
+>> endobj
+4151 0 obj <<
+/D [4146 0 R /XYZ 429.028 651.557 null]
+>> endobj
+4152 0 obj <<
+/D [4146 0 R /XYZ 153.769 612.702 null]
+>> endobj
+4153 0 obj <<
+/D [4146 0 R /XYZ 453.126 612.702 null]
 >> endobj
 4154 0 obj <<
-/D [4152 0 R /XYZ 71.731 729.265 null]
+/D [4146 0 R /XYZ 74.222 581.818 null]
 >> endobj
 4155 0 obj <<
-/D [4152 0 R /XYZ 71.731 741.22 null]
+/D [4146 0 R /XYZ 71.731 556.747 null]
 >> endobj
 4156 0 obj <<
-/D [4152 0 R /XYZ 71.731 675.303 null]
+/D [4146 0 R /XYZ 71.731 522.939 null]
 >> endobj
 4157 0 obj <<
-/D [4152 0 R /XYZ 429.028 651.557 null]
+/D [4146 0 R /XYZ 105.883 497.136 null]
 >> endobj
 4158 0 obj <<
-/D [4152 0 R /XYZ 153.769 612.702 null]
+/D [4146 0 R /XYZ 71.731 489.998 null]
 >> endobj
 4159 0 obj <<
-/D [4152 0 R /XYZ 453.126 612.702 null]
+/D [4146 0 R /XYZ 132.174 427.397 null]
 >> endobj
 4160 0 obj <<
-/D [4152 0 R /XYZ 74.222 581.818 null]
+/D [4146 0 R /XYZ 71.731 420.259 null]
 >> endobj
 4161 0 obj <<
-/D [4152 0 R /XYZ 71.731 556.747 null]
+/D [4146 0 R /XYZ 71.731 350.894 null]
 >> endobj
 4162 0 obj <<
-/D [4152 0 R /XYZ 71.731 522.939 null]
+/D [4146 0 R /XYZ 71.731 350.894 null]
 >> endobj
 4163 0 obj <<
-/D [4152 0 R /XYZ 105.883 497.136 null]
+/D [4146 0 R /XYZ 74.222 308.842 null]
 >> endobj
 4164 0 obj <<
-/D [4152 0 R /XYZ 71.731 489.998 null]
+/D [4146 0 R /XYZ 148.772 285.928 null]
 >> endobj
 4165 0 obj <<
-/D [4152 0 R /XYZ 132.174 427.397 null]
+/D [4146 0 R /XYZ 71.731 284.52 null]
 >> endobj
 4166 0 obj <<
-/D [4152 0 R /XYZ 71.731 420.259 null]
+/D [4146 0 R /XYZ 368.158 267.995 null]
 >> endobj
 4167 0 obj <<
-/D [4152 0 R /XYZ 71.731 350.894 null]
+/D [4146 0 R /XYZ 95.641 229.141 null]
 >> endobj
 4168 0 obj <<
-/D [4152 0 R /XYZ 71.731 350.894 null]
+/D [4146 0 R /XYZ 71.731 201.081 null]
 >> endobj
 4169 0 obj <<
-/D [4152 0 R /XYZ 74.222 308.842 null]
+/D [4146 0 R /XYZ 202.524 180.324 null]
 >> endobj
 4170 0 obj <<
-/D [4152 0 R /XYZ 148.772 285.928 null]
+/D [4146 0 R /XYZ 340.43 180.324 null]
 >> endobj
 4171 0 obj <<
-/D [4152 0 R /XYZ 71.731 284.52 null]
+/D [4146 0 R /XYZ 71.731 167.273 null]
 >> endobj
 4172 0 obj <<
-/D [4152 0 R /XYZ 368.158 267.995 null]
+/D [4146 0 R /XYZ 385.027 149.44 null]
 >> endobj
 4173 0 obj <<
-/D [4152 0 R /XYZ 95.641 229.141 null]
->> endobj
-4174 0 obj <<
-/D [4152 0 R /XYZ 71.731 201.081 null]
->> endobj
-4175 0 obj <<
-/D [4152 0 R /XYZ 202.524 180.324 null]
+/D [4146 0 R /XYZ 71.731 111.417 null]
 >> endobj
-4176 0 obj <<
-/D [4152 0 R /XYZ 340.43 180.324 null]
->> endobj
-4177 0 obj <<
-/D [4152 0 R /XYZ 71.731 167.273 null]
->> endobj
-4178 0 obj <<
-/D [4152 0 R /XYZ 385.027 149.44 null]
->> endobj
-4179 0 obj <<
-/D [4152 0 R /XYZ 71.731 111.417 null]
->> endobj
-4151 0 obj <<
+4145 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4183 0 obj <<
+4177 0 obj <<
 /Length 2321      
 /Filter /FlateDecode
 >>
@@ -15731,99 +15720,99 @@ xڅk
 c>iީ�F�Q�c�"D�g�Q��2F�
 ��Y���d|�\�=95�uu	Q}Qnf����	A��x����<84,f�e"J�93t����4vr:�/�t�^���OEo�'�:��p�?C84Ԩ
�ڔqoU�6S�On
�YP����2�_!���q��f�|�(�8%��b�&uz�U�O��C��)�u`���U��N�g	%I����v���A&D�5�u�	m�{�@[�{���=�&A���e�v�4Ks�4��L��1����6�H����]C�;kJm��Zj�\$�}X�V��JD�Q��a�:�#����J���'y�A�������G�i��FS/�l�1���:�vj�/��-1�E3j���n]W���/
�ښ�;�ToU�ګ��f�R.j��5��l^%�/�m�C�m��q��o
g&tXp6�����M��ǾW��:8���7R��v�4�E"�f�@dy~���	p%+����ץBŸ6<����w�&\xt�SC�Ԋ��,�X
_���/���ɞ}G�݇,xܷ��l�j6��9�JB I�8�G%p3ͱ�]��J{�xz�Qq�Q�����@�X]�Sڲ(��u$�}3`�4���c��-F^}����9&.��(���0�6�`-0��]�+�M�U
M�pC�!�Ⴓ����=i���(�&��%~�9p�?TOS��,7l���Yo�F�G5�h숛������V�ޛ�"�_�"|D�� �F�����'�]�����endstream
 endobj
-4182 0 obj <<
+4176 0 obj <<
 /Type /Page
-/Contents 4183 0 R
-/Resources 4181 0 R
+/Contents 4177 0 R
+/Resources 4175 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4180 0 R
+/Parent 4174 0 R
+>> endobj
+4178 0 obj <<
+/D [4176 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4179 0 obj <<
+/D [4176 0 R /XYZ 71.731 660.359 null]
+>> endobj
+4180 0 obj <<
+/D [4176 0 R /XYZ 71.731 639.203 null]
+>> endobj
+4181 0 obj <<
+/D [4176 0 R /XYZ 71.731 619.278 null]
+>> endobj
+4182 0 obj <<
+/D [4176 0 R /XYZ 115.567 595.965 null]
+>> endobj
+4183 0 obj <<
+/D [4176 0 R /XYZ 71.731 568.07 null]
 >> endobj
 4184 0 obj <<
-/D [4182 0 R /XYZ 71.731 729.265 null]
+/D [4176 0 R /XYZ 376.59 555.118 null]
 >> endobj
 4185 0 obj <<
-/D [4182 0 R /XYZ 71.731 660.359 null]
+/D [4176 0 R /XYZ 216.969 542.167 null]
 >> endobj
 4186 0 obj <<
-/D [4182 0 R /XYZ 71.731 639.203 null]
+/D [4176 0 R /XYZ 200.218 529.215 null]
 >> endobj
 4187 0 obj <<
-/D [4182 0 R /XYZ 71.731 619.278 null]
+/D [4176 0 R /XYZ 71.731 504.862 null]
 >> endobj
 4188 0 obj <<
-/D [4182 0 R /XYZ 115.567 595.965 null]
+/D [4176 0 R /XYZ 71.731 452.937 null]
 >> endobj
 4189 0 obj <<
-/D [4182 0 R /XYZ 71.731 568.07 null]
+/D [4176 0 R /XYZ 439.725 442.142 null]
 >> endobj
 4190 0 obj <<
-/D [4182 0 R /XYZ 376.59 555.118 null]
+/D [4176 0 R /XYZ 95.641 403.288 null]
 >> endobj
 4191 0 obj <<
-/D [4182 0 R /XYZ 216.969 542.167 null]
+/D [4176 0 R /XYZ 336.678 390.336 null]
 >> endobj
 4192 0 obj <<
-/D [4182 0 R /XYZ 200.218 529.215 null]
+/D [4176 0 R /XYZ 455.543 390.336 null]
 >> endobj
 4193 0 obj <<
-/D [4182 0 R /XYZ 71.731 504.862 null]
+/D [4176 0 R /XYZ 74.222 359.452 null]
 >> endobj
 4194 0 obj <<
-/D [4182 0 R /XYZ 71.731 452.937 null]
+/D [4176 0 R /XYZ 71.731 334.381 null]
 >> endobj
 4195 0 obj <<
-/D [4182 0 R /XYZ 439.725 442.142 null]
+/D [4176 0 R /XYZ 71.731 316.448 null]
 >> endobj
 4196 0 obj <<
-/D [4182 0 R /XYZ 95.641 403.288 null]
+/D [4176 0 R /XYZ 218.849 295.691 null]
 >> endobj
 4197 0 obj <<
-/D [4182 0 R /XYZ 336.678 390.336 null]
+/D [4176 0 R /XYZ 71.731 293.534 null]
 >> endobj
 4198 0 obj <<
-/D [4182 0 R /XYZ 455.543 390.336 null]
+/D [4176 0 R /XYZ 486.265 264.807 null]
 >> endobj
 4199 0 obj <<
-/D [4182 0 R /XYZ 74.222 359.452 null]
+/D [4176 0 R /XYZ 71.731 239.736 null]
 >> endobj
 4200 0 obj <<
-/D [4182 0 R /XYZ 71.731 334.381 null]
+/D [4176 0 R /XYZ 71.731 239.736 null]
 >> endobj
 4201 0 obj <<
-/D [4182 0 R /XYZ 71.731 316.448 null]
+/D [4176 0 R /XYZ 71.731 216.956 null]
 >> endobj
 4202 0 obj <<
-/D [4182 0 R /XYZ 218.849 295.691 null]
+/D [4176 0 R /XYZ 71.731 183.014 null]
 >> endobj
 4203 0 obj <<
-/D [4182 0 R /XYZ 71.731 293.534 null]
+/D [4176 0 R /XYZ 71.731 165.081 null]
 >> endobj
 4204 0 obj <<
-/D [4182 0 R /XYZ 486.265 264.807 null]
->> endobj
-4205 0 obj <<
-/D [4182 0 R /XYZ 71.731 239.736 null]
->> endobj
-4206 0 obj <<
-/D [4182 0 R /XYZ 71.731 239.736 null]
->> endobj
-4207 0 obj <<
-/D [4182 0 R /XYZ 71.731 216.956 null]
+/D [4176 0 R /XYZ 71.731 127.158 null]
 >> endobj
-4208 0 obj <<
-/D [4182 0 R /XYZ 71.731 183.014 null]
->> endobj
-4209 0 obj <<
-/D [4182 0 R /XYZ 71.731 165.081 null]
->> endobj
-4210 0 obj <<
-/D [4182 0 R /XYZ 71.731 127.158 null]
->> endobj
-4181 0 obj <<
+4175 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F35 1437 0 R /F23 1105 0 R /F44 1884 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4213 0 obj <<
+4207 0 obj <<
 /Length 2713      
 /Filter /FlateDecode
 >>
@@ -15840,101 +15829,101 @@ FA"
 me>VZR��4v����O�'aJ���n���T�b��n6$��p�L�u�$Mz8E�l�P���E\��k38�W)8Yx���_���b<h&� MM.��w����!J���R\���`�u��aȲ��*B�����'��`������M�t�jy��~Aq��`Q�n�K�$o��7�)���Y\�2�[��$fa�t���R ̶y�*���!�yu�
Nj�<�1�C�>|s=J��cdc�K��ؖBSR�K�ޗ Q��+kH>=ԅd�c:c�"
H�-y�W�l^p���+	�)`V]��a���������XZˑeP%�^���5��µ��c�r��?���Q.�G��,Ew�j٢�\�F�%Ӭ����'}(�s�N��/�b"��|�U	FB����Ȍ�,���~��'�wrE��܈(��)��Pcu!�N�(����$�&��i��>�ɑ������Dj�{)R�4��C��m�8���
�n�@���Ij;cب������.�*�\9%��,]���y����>��;VA�-΄�`��o��iގ����]��v�.�36�BHα�C�(>�`�X���x���b��q���Xf'�eY��r����M��R�����\˜�,��"��X)������ڥ#�Vl��O��Ъ/�M�d�)t#i4tj���򪖯�:���F��У�w*������~�����ӻh>���U�<0��0��Bb(v�(#�:�-�w��h	υOVJ0q�`��f��
��L�X>����K	}8py����%vt��8�)_G�F�W��^yH�~p]�E;�l�'���Z�Gֿ��;�;�����4<+I1����5/�VBÕR0���oc���7��� �0-4^7{?�G��c%�S_�#h��Q���B^������GXm��`I�=7t ���e��\j�Q���a����⛍��(MI!�WB��=`�)x.^��@@*C(ڈG�"|iL/�MD
�
�倢+nc3�Ϧ�{9��H�5�K�M�[i�2Vpm�ew.l�V�G���(���Hy�ˆ�;����/3����HS8�հ�+��pQ!�綔�~)1������:��$i8krET$�Q<��:�9���n ��:����7?�+G���OH	Z���#L��_�@"�"Q�8\`=��,u����>~��7����%��R�W��F�i1��Z�:݋)b@1�V^�z��I,�rݗU���	��J��E�h��ʉb�c��DZw1�͏zT�=p��Z�Nf���3��(�U�2|������Žb?���ZW	Ll�2
 y��]�s���&v���qh����$IVJa5N��q]	a��R�A�`w�
c7�]˚f-��AS�����֍}�Z��j�L-�E������Q�������d<��������oendstream
 endobj
-4212 0 obj <<
+4206 0 obj <<
 /Type /Page
-/Contents 4213 0 R
-/Resources 4211 0 R
+/Contents 4207 0 R
+/Resources 4205 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4180 0 R
-/Annots [ 4220 0 R ]
+/Parent 4174 0 R
+/Annots [ 4214 0 R ]
 >> endobj
-4220 0 obj <<
+4214 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [240.776 608.553 290.588 617.464]
 /Subtype /Link
 /A << /S /GoTo /D (reporting) >>
 >> endobj
-4214 0 obj <<
-/D [4212 0 R /XYZ 71.731 729.265 null]
+4208 0 obj <<
+/D [4206 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4209 0 obj <<
+/D [4206 0 R /XYZ 71.731 718.306 null]
+>> endobj
+4210 0 obj <<
+/D [4206 0 R /XYZ 523.238 708.344 null]
+>> endobj
+4211 0 obj <<
+/D [4206 0 R /XYZ 74.222 677.46 null]
+>> endobj
+4212 0 obj <<
+/D [4206 0 R /XYZ 71.731 639.437 null]
+>> endobj
+4213 0 obj <<
+/D [4206 0 R /XYZ 146.578 623.661 null]
 >> endobj
 4215 0 obj <<
-/D [4212 0 R /XYZ 71.731 718.306 null]
+/D [4206 0 R /XYZ 71.731 603.572 null]
 >> endobj
 4216 0 obj <<
-/D [4212 0 R /XYZ 523.238 708.344 null]
+/D [4206 0 R /XYZ 74.222 535.99 null]
 >> endobj
 4217 0 obj <<
-/D [4212 0 R /XYZ 74.222 677.46 null]
+/D [4206 0 R /XYZ 71.731 510.919 null]
 >> endobj
 4218 0 obj <<
-/D [4212 0 R /XYZ 71.731 639.437 null]
+/D [4206 0 R /XYZ 71.731 480.035 null]
 >> endobj
 4219 0 obj <<
-/D [4212 0 R /XYZ 146.578 623.661 null]
+/D [4206 0 R /XYZ 71.731 457.121 null]
+>> endobj
+4220 0 obj <<
+/D [4206 0 R /XYZ 428.12 442.64 null]
 >> endobj
 4221 0 obj <<
-/D [4212 0 R /XYZ 71.731 603.572 null]
+/D [4206 0 R /XYZ 71.731 425.539 null]
 >> endobj
 4222 0 obj <<
-/D [4212 0 R /XYZ 74.222 535.99 null]
+/D [4206 0 R /XYZ 450.21 404.384 null]
 >> endobj
 4223 0 obj <<
-/D [4212 0 R /XYZ 71.731 510.919 null]
+/D [4206 0 R /XYZ 71.731 353.176 null]
 >> endobj
 4224 0 obj <<
-/D [4212 0 R /XYZ 71.731 480.035 null]
+/D [4206 0 R /XYZ 325.465 317.31 null]
 >> endobj
 4225 0 obj <<
-/D [4212 0 R /XYZ 71.731 457.121 null]
+/D [4206 0 R /XYZ 71.731 302.202 null]
 >> endobj
 4226 0 obj <<
-/D [4212 0 R /XYZ 428.12 442.64 null]
+/D [4206 0 R /XYZ 71.731 253.385 null]
 >> endobj
 4227 0 obj <<
-/D [4212 0 R /XYZ 71.731 425.539 null]
+/D [4206 0 R /XYZ 353.315 242.59 null]
 >> endobj
 4228 0 obj <<
-/D [4212 0 R /XYZ 450.21 404.384 null]
+/D [4206 0 R /XYZ 71.731 211.607 null]
 >> endobj
 4229 0 obj <<
-/D [4212 0 R /XYZ 71.731 353.176 null]
+/D [4206 0 R /XYZ 378.982 198.755 null]
 >> endobj
 4230 0 obj <<
-/D [4212 0 R /XYZ 325.465 317.31 null]
+/D [4206 0 R /XYZ 340.628 185.803 null]
 >> endobj
 4231 0 obj <<
-/D [4212 0 R /XYZ 71.731 302.202 null]
+/D [4206 0 R /XYZ 71.731 165.714 null]
 >> endobj
 4232 0 obj <<
-/D [4212 0 R /XYZ 71.731 253.385 null]
+/D [4206 0 R /XYZ 244.777 154.919 null]
 >> endobj
 4233 0 obj <<
-/D [4212 0 R /XYZ 353.315 242.59 null]
->> endobj
-4234 0 obj <<
-/D [4212 0 R /XYZ 71.731 211.607 null]
->> endobj
-4235 0 obj <<
-/D [4212 0 R /XYZ 378.982 198.755 null]
+/D [4206 0 R /XYZ 74.222 124.035 null]
 >> endobj
-4236 0 obj <<
-/D [4212 0 R /XYZ 340.628 185.803 null]
->> endobj
-4237 0 obj <<
-/D [4212 0 R /XYZ 71.731 165.714 null]
->> endobj
-4238 0 obj <<
-/D [4212 0 R /XYZ 244.777 154.919 null]
->> endobj
-4239 0 obj <<
-/D [4212 0 R /XYZ 74.222 124.035 null]
->> endobj
-4211 0 obj <<
+4205 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F23 1105 0 R /F44 1884 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4242 0 obj <<
+4236 0 obj <<
 /Length 2755      
 /Filter /FlateDecode
 >>
@@ -15957,92 +15946,92 @@ g?
 S9�V.
 ����H��A��ՠt(�%��ӽ�
�_&=R;_|:��@�R���n�>G��{���r?��s��~Z�����qW1� �����ߋKmq�zT;y�A�_^���Nb���0	�u������YM��O����f�ZxR�(k�~r��Z�)���3�7��3��oD�j��v�͂-S<��1�z7�V�<��Or+�G�W�����O��7��I���L�-�
\P�t�k>^o�'��;endstream
 endobj
-4241 0 obj <<
+4235 0 obj <<
 /Type /Page
-/Contents 4242 0 R
-/Resources 4240 0 R
+/Contents 4236 0 R
+/Resources 4234 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4180 0 R
-/Annots [ 4262 0 R ]
+/Parent 4174 0 R
+/Annots [ 4256 0 R ]
 >> endobj
-4262 0 obj <<
+4256 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [453.197 148.279 505.5 157.19]
 /Subtype /Link
 /A << /S /GoTo /D (template-specific) >>
 >> endobj
+4237 0 obj <<
+/D [4235 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4238 0 obj <<
+/D [4235 0 R /XYZ 71.731 706.187 null]
+>> endobj
+4239 0 obj <<
+/D [4235 0 R /XYZ 95.641 677.46 null]
+>> endobj
+4240 0 obj <<
+/D [4235 0 R /XYZ 273.207 651.557 null]
+>> endobj
+4241 0 obj <<
+/D [4235 0 R /XYZ 71.731 638.506 null]
+>> endobj
+4242 0 obj <<
+/D [4235 0 R /XYZ 71.731 613.534 null]
+>> endobj
 4243 0 obj <<
-/D [4241 0 R /XYZ 71.731 729.265 null]
+/D [4235 0 R /XYZ 71.731 595.602 null]
 >> endobj
 4244 0 obj <<
-/D [4241 0 R /XYZ 71.731 706.187 null]
+/D [4235 0 R /XYZ 71.731 572.688 null]
 >> endobj
 4245 0 obj <<
-/D [4241 0 R /XYZ 95.641 677.46 null]
+/D [4235 0 R /XYZ 196.632 543.96 null]
 >> endobj
 4246 0 obj <<
-/D [4241 0 R /XYZ 273.207 651.557 null]
+/D [4235 0 R /XYZ 71.731 541.803 null]
 >> endobj
 4247 0 obj <<
-/D [4241 0 R /XYZ 71.731 638.506 null]
+/D [4235 0 R /XYZ 417.183 495.143 null]
 >> endobj
 4248 0 obj <<
-/D [4241 0 R /XYZ 71.731 613.534 null]
+/D [4235 0 R /XYZ 71.731 492.986 null]
 >> endobj
 4249 0 obj <<
-/D [4241 0 R /XYZ 71.731 595.602 null]
+/D [4235 0 R /XYZ 71.731 457.121 null]
 >> endobj
 4250 0 obj <<
-/D [4241 0 R /XYZ 71.731 572.688 null]
+/D [4235 0 R /XYZ 74.222 402.491 null]
 >> endobj
 4251 0 obj <<
-/D [4241 0 R /XYZ 196.632 543.96 null]
+/D [4235 0 R /XYZ 71.731 351.517 null]
 >> endobj
 4252 0 obj <<
-/D [4241 0 R /XYZ 71.731 541.803 null]
+/D [4235 0 R /XYZ 71.731 283.836 null]
 >> endobj
 4253 0 obj <<
-/D [4241 0 R /XYZ 417.183 495.143 null]
+/D [4235 0 R /XYZ 71.731 247.97 null]
 >> endobj
 4254 0 obj <<
-/D [4241 0 R /XYZ 71.731 492.986 null]
+/D [4235 0 R /XYZ 71.731 202.077 null]
 >> endobj
 4255 0 obj <<
-/D [4241 0 R /XYZ 71.731 457.121 null]
->> endobj
-4256 0 obj <<
-/D [4241 0 R /XYZ 74.222 402.491 null]
+/D [4235 0 R /XYZ 71.731 179.163 null]
 >> endobj
 4257 0 obj <<
-/D [4241 0 R /XYZ 71.731 351.517 null]
+/D [4235 0 R /XYZ 71.731 138.316 null]
 >> endobj
 4258 0 obj <<
-/D [4241 0 R /XYZ 71.731 283.836 null]
+/D [4235 0 R /XYZ 71.731 138.316 null]
 >> endobj
 4259 0 obj <<
-/D [4241 0 R /XYZ 71.731 247.97 null]
->> endobj
-4260 0 obj <<
-/D [4241 0 R /XYZ 71.731 202.077 null]
+/D [4235 0 R /XYZ 71.731 115.826 null]
 >> endobj
-4261 0 obj <<
-/D [4241 0 R /XYZ 71.731 179.163 null]
->> endobj
-4263 0 obj <<
-/D [4241 0 R /XYZ 71.731 138.316 null]
->> endobj
-4264 0 obj <<
-/D [4241 0 R /XYZ 71.731 138.316 null]
->> endobj
-4265 0 obj <<
-/D [4241 0 R /XYZ 71.731 115.826 null]
->> endobj
-4240 0 obj <<
+4234 0 obj <<
 /Font << /F33 1210 0 R /F32 1119 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4268 0 obj <<
+4262 0 obj <<
 /Length 3031      
 /Filter /FlateDecode
 >>
@@ -16059,116 +16048,116 @@ bh
 ������\��X@7���Ŷ)q���a�E��(65@*���D9�[z�p�m/}!О�o���O�����F�7<��抷��;0jϬ�2d��\��-�sI6�?�P3V&楱�IY5M�����o�\}��v��N���'�UP�w�3d�{�d�o�?
 �^�{SÍ�L�LU���n”��]�n�۳�+��@�����AF����n�*c�B[���~�q��_�<endstream
 endobj
-4267 0 obj <<
+4261 0 obj <<
 /Type /Page
-/Contents 4268 0 R
-/Resources 4266 0 R
+/Contents 4262 0 R
+/Resources 4260 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4180 0 R
-/Annots [ 4293 0 R ]
+/Parent 4174 0 R
+/Annots [ 4287 0 R ]
 >> endobj
-4293 0 obj <<
+4287 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [204.95 216.02 269.707 222.874]
 /Subtype /Link
 /A << /S /GoTo /D (upgrade-cvs) >>
 >> endobj
+4263 0 obj <<
+/D [4261 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4264 0 obj <<
+/D [4261 0 R /XYZ 71.731 693.235 null]
+>> endobj
+4265 0 obj <<
+/D [4261 0 R /XYZ 71.731 649.4 null]
+>> endobj
+4266 0 obj <<
+/D [4261 0 R /XYZ 71.731 626.486 null]
+>> endobj
+4267 0 obj <<
+/D [4261 0 R /XYZ 71.731 569.699 null]
+>> endobj
+4268 0 obj <<
+/D [4261 0 R /XYZ 71.731 546.785 null]
+>> endobj
 4269 0 obj <<
-/D [4267 0 R /XYZ 71.731 729.265 null]
+/D [4261 0 R /XYZ 71.731 541.803 null]
 >> endobj
 4270 0 obj <<
-/D [4267 0 R /XYZ 71.731 693.235 null]
+/D [4261 0 R /XYZ 71.731 539.313 null]
 >> endobj
 4271 0 obj <<
-/D [4267 0 R /XYZ 71.731 649.4 null]
+/D [4261 0 R /XYZ 113.574 521.046 null]
 >> endobj
 4272 0 obj <<
-/D [4267 0 R /XYZ 71.731 626.486 null]
+/D [4261 0 R /XYZ 149.15 508.095 null]
 >> endobj
 4273 0 obj <<
-/D [4267 0 R /XYZ 71.731 569.699 null]
+/D [4261 0 R /XYZ 71.731 480.035 null]
 >> endobj
 4274 0 obj <<
-/D [4267 0 R /XYZ 71.731 546.785 null]
+/D [4261 0 R /XYZ 113.574 464.259 null]
 >> endobj
 4275 0 obj <<
-/D [4267 0 R /XYZ 71.731 541.803 null]
+/D [4261 0 R /XYZ 71.731 462.102 null]
 >> endobj
 4276 0 obj <<
-/D [4267 0 R /XYZ 71.731 539.313 null]
+/D [4261 0 R /XYZ 113.574 446.326 null]
 >> endobj
 4277 0 obj <<
-/D [4267 0 R /XYZ 113.574 521.046 null]
+/D [4261 0 R /XYZ 131.461 446.326 null]
 >> endobj
 4278 0 obj <<
-/D [4267 0 R /XYZ 149.15 508.095 null]
+/D [4261 0 R /XYZ 349.56 446.326 null]
 >> endobj
 4279 0 obj <<
-/D [4267 0 R /XYZ 71.731 480.035 null]
+/D [4261 0 R /XYZ 71.731 413.659 null]
 >> endobj
 4280 0 obj <<
-/D [4267 0 R /XYZ 113.574 464.259 null]
+/D [4261 0 R /XYZ 100.623 358.655 null]
 >> endobj
 4281 0 obj <<
-/D [4267 0 R /XYZ 71.731 462.102 null]
+/D [4261 0 R /XYZ 113.574 340.722 null]
 >> endobj
 4282 0 obj <<
-/D [4267 0 R /XYZ 113.574 446.326 null]
+/D [4261 0 R /XYZ 419.902 340.722 null]
 >> endobj
 4283 0 obj <<
-/D [4267 0 R /XYZ 131.461 446.326 null]
+/D [4261 0 R /XYZ 71.731 325.614 null]
 >> endobj
 4284 0 obj <<
-/D [4267 0 R /XYZ 349.56 446.326 null]
+/D [4261 0 R /XYZ 164.384 287.05 null]
 >> endobj
 4285 0 obj <<
-/D [4267 0 R /XYZ 71.731 413.659 null]
+/D [4261 0 R /XYZ 222.306 266.929 null]
 >> endobj
 4286 0 obj <<
-/D [4267 0 R /XYZ 100.623 358.655 null]
->> endobj
-4287 0 obj <<
-/D [4267 0 R /XYZ 113.574 340.722 null]
+/D [4261 0 R /XYZ 71.731 229.071 null]
 >> endobj
 4288 0 obj <<
-/D [4267 0 R /XYZ 419.902 340.722 null]
+/D [4261 0 R /XYZ 74.222 198.187 null]
 >> endobj
 4289 0 obj <<
-/D [4267 0 R /XYZ 71.731 325.614 null]
+/D [4261 0 R /XYZ 71.731 173.116 null]
 >> endobj
 4290 0 obj <<
-/D [4267 0 R /XYZ 164.384 287.05 null]
+/D [4261 0 R /XYZ 421.753 157.34 null]
 >> endobj
 4291 0 obj <<
-/D [4267 0 R /XYZ 222.306 266.929 null]
+/D [4261 0 R /XYZ 95.641 144.389 null]
 >> endobj
 4292 0 obj <<
-/D [4267 0 R /XYZ 71.731 229.071 null]
->> endobj
-4294 0 obj <<
-/D [4267 0 R /XYZ 74.222 198.187 null]
+/D [4261 0 R /XYZ 252.683 144.389 null]
 >> endobj
-4295 0 obj <<
-/D [4267 0 R /XYZ 71.731 173.116 null]
->> endobj
-4296 0 obj <<
-/D [4267 0 R /XYZ 421.753 157.34 null]
->> endobj
-4297 0 obj <<
-/D [4267 0 R /XYZ 95.641 144.389 null]
->> endobj
-4298 0 obj <<
-/D [4267 0 R /XYZ 252.683 144.389 null]
->> endobj
-4299 0 obj <<
-/D [4267 0 R /XYZ 185.773 105.535 null]
+4293 0 obj <<
+/D [4261 0 R /XYZ 185.773 105.535 null]
 >> endobj
-4266 0 obj <<
+4260 0 obj <<
 /Font << /F33 1210 0 R /F32 1119 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4302 0 obj <<
+4296 0 obj <<
 /Length 2389      
 /Filter /FlateDecode
 >>
@@ -16184,92 +16173,92 @@ I
 |�ˁ�c�}��G�S��3�1��S������U�,@O8tc1p�K{;�i�5��4�&E���8�͌h��njpG?�.
(;\��>:��{N��</:�v����m�\NTpHh�]��V�‚�q����N\�H�����l��S�=g�0�����!Vp��`6��a������(���I.R(�IN�k����b��82y+��."�yH�>P�\AIT�����Y?K�{H�%z����e]Q}|���b"�5OCdS]ӳ�Ӳ�1�a2N�����j�H��Ur<�9��M;wQ��F�J>rD�5�֣r��������ވ6�kɱ��6�ЊB*^�v!���R��nK��'H���i�\ZDS�����4B;0�}=\0U�UC��k��"�Nh�ja/RC����ĉ��е�Tx%��u�Xف����qױ$�g��N��fy�
 ��S��-�%��갼�%��%�uQ�K�_��2������%�0RA8���#O�r'�|%����6���:�H���e
lR�=nfU3Mp7����K�B�=�I��7����]-l�&7���1�P|Nק
7Xj�S�ǂ.��;;��#����Q+�jבGt��8�m���|��)O;#�V��������_���S�fEV�c�L�TPN~!��FN;=��P�����{M>��f��R���R�
��y�9�7y���u��6�$/wXi��Ur}��rF���-��b��c�ǁ6o� ;�7��򥖮��ۧ��ٛ�{h�Ѻ�C8Jk�W=�.�š$Y�Ps!��aH-�WN���#s���0{��ˇRm|w�B���)<�y��B['��2�uc�|�b�ݺPM��T[/�MA�B;�E�E#�s$�sL���B��&���l�ܘ��}�=H��h凵���������0��a��M�U1����#�ԣ�GS�]5<<n����4�>��&Y���!\�B��Hӿz�_J�?�I�endstream
 endobj
-4301 0 obj <<
+4295 0 obj <<
 /Type /Page
-/Contents 4302 0 R
-/Resources 4300 0 R
+/Contents 4296 0 R
+/Resources 4294 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4180 0 R
-/Annots [ 4316 0 R ]
+/Parent 4174 0 R
+/Annots [ 4310 0 R ]
 >> endobj
-4316 0 obj <<
+4310 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [312.894 353.147 351.505 362.058]
 /Subtype /Link
 /A << /S /GoTo /D (installing-bugzilla) >>
 >> endobj
+4297 0 obj <<
+/D [4295 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4298 0 obj <<
+/D [4295 0 R /XYZ 71.731 718.306 null]
+>> endobj
+4299 0 obj <<
+/D [4295 0 R /XYZ 485.041 695.392 null]
+>> endobj
+4300 0 obj <<
+/D [4295 0 R /XYZ 74.222 664.508 null]
+>> endobj
+4301 0 obj <<
+/D [4295 0 R /XYZ 71.731 639.437 null]
+>> endobj
+4302 0 obj <<
+/D [4295 0 R /XYZ 71.731 600.648 null]
+>> endobj
 4303 0 obj <<
-/D [4301 0 R /XYZ 71.731 729.265 null]
+/D [4295 0 R /XYZ 128.474 554.521 null]
 >> endobj
 4304 0 obj <<
-/D [4301 0 R /XYZ 71.731 718.306 null]
+/D [4295 0 R /XYZ 71.731 539.412 null]
 >> endobj
 4305 0 obj <<
-/D [4301 0 R /XYZ 485.041 695.392 null]
+/D [4295 0 R /XYZ 142.466 500.848 null]
 >> endobj
 4306 0 obj <<
-/D [4301 0 R /XYZ 74.222 664.508 null]
+/D [4295 0 R /XYZ 142.466 469.071 null]
 >> endobj
 4307 0 obj <<
-/D [4301 0 R /XYZ 71.731 639.437 null]
+/D [4295 0 R /XYZ 180.841 457.415 null]
 >> endobj
 4308 0 obj <<
-/D [4301 0 R /XYZ 71.731 600.648 null]
+/D [4295 0 R /XYZ 142.466 446.185 null]
 >> endobj
 4309 0 obj <<
-/D [4301 0 R /XYZ 128.474 554.521 null]
->> endobj
-4310 0 obj <<
-/D [4301 0 R /XYZ 71.731 539.412 null]
+/D [4295 0 R /XYZ 71.731 362.058 null]
 >> endobj
 4311 0 obj <<
-/D [4301 0 R /XYZ 142.466 500.848 null]
+/D [4295 0 R /XYZ 264.01 303.498 null]
 >> endobj
 4312 0 obj <<
-/D [4301 0 R /XYZ 142.466 469.071 null]
+/D [4295 0 R /XYZ 375.655 303.498 null]
 >> endobj
 4313 0 obj <<
-/D [4301 0 R /XYZ 180.841 457.415 null]
+/D [4295 0 R /XYZ 71.731 288.39 null]
 >> endobj
 4314 0 obj <<
-/D [4301 0 R /XYZ 142.466 446.185 null]
+/D [4295 0 R /XYZ 71.731 273.446 null]
 >> endobj
 4315 0 obj <<
-/D [4301 0 R /XYZ 71.731 362.058 null]
+/D [4295 0 R /XYZ 71.731 224.395 null]
+>> endobj
+4316 0 obj <<
+/D [4295 0 R /XYZ 111.412 198.492 null]
 >> endobj
 4317 0 obj <<
-/D [4301 0 R /XYZ 264.01 303.498 null]
+/D [4295 0 R /XYZ 71.731 170.596 null]
 >> endobj
 4318 0 obj <<
-/D [4301 0 R /XYZ 375.655 303.498 null]
+/D [4295 0 R /XYZ 71.731 170.596 null]
 >> endobj
 4319 0 obj <<
-/D [4301 0 R /XYZ 71.731 288.39 null]
->> endobj
-4320 0 obj <<
-/D [4301 0 R /XYZ 71.731 273.446 null]
->> endobj
-4321 0 obj <<
-/D [4301 0 R /XYZ 71.731 224.395 null]
->> endobj
-4322 0 obj <<
-/D [4301 0 R /XYZ 111.412 198.492 null]
->> endobj
-4323 0 obj <<
-/D [4301 0 R /XYZ 71.731 170.596 null]
+/D [4295 0 R /XYZ 71.731 145.66 null]
 >> endobj
-4324 0 obj <<
-/D [4301 0 R /XYZ 71.731 170.596 null]
->> endobj
-4325 0 obj <<
-/D [4301 0 R /XYZ 71.731 145.66 null]
->> endobj
-4300 0 obj <<
+4294 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F35 1437 0 R /F23 1105 0 R /F44 1884 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4328 0 obj <<
+4322 0 obj <<
 /Length 2326      
 /Filter /FlateDecode
 >>
@@ -16287,107 +16276,107 @@ Z
 1�A���:�e�׭�Bt��<��gBSc-�\a��p���C{}��ER��R1B҅!ᛞ!B�R���U&��[C��=���&�����\G�?_)iw:���HA'HP��w�̷׽[
D �n,���4��u�;�^�xE����2��l���f��T9h� Mm}�-����#
 {>2Cޅǯ�����Av�I��U���}�-m>�����<�z!�>�Ѥn���t#O�4��	��~��88ɸ
�b�C`E"x�"�R��	a���-��d�DwV?�g��Y<+}2����#}SJc.��s��A�W�,�9\��Q�-�p�C+;5���l����v—#F6l1	���*F���;k�|�9��ԝ�GV�Ra��"[]a�E�z��݈��'$ />��mFp�M��ƅ�>�5��9�����U톰�&�Tjx��*,)�2�aW7�Z�;��/6U�.��%IJ��qR� ���`!����p��g���Ҟ�����o�#�էx���%�Ԭ(_��~}��u�endstream
 endobj
-4327 0 obj <<
+4321 0 obj <<
 /Type /Page
-/Contents 4328 0 R
-/Resources 4326 0 R
+/Contents 4322 0 R
+/Resources 4320 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4357 0 R
-/Annots [ 4335 0 R ]
+/Parent 4351 0 R
+/Annots [ 4329 0 R ]
 >> endobj
-4335 0 obj <<
+4329 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [422.465 613.447 467.048 622.037]
 /Subtype /Link
 /A << /S /GoTo /D (security-mysql) >>
 >> endobj
-4329 0 obj <<
-/D [4327 0 R /XYZ 71.731 729.265 null]
+4323 0 obj <<
+/D [4321 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4324 0 obj <<
+/D [4321 0 R /XYZ 71.731 693.235 null]
+>> endobj
+4325 0 obj <<
+/D [4321 0 R /XYZ 184.704 677.46 null]
+>> endobj
+4326 0 obj <<
+/D [4321 0 R /XYZ 387.861 677.46 null]
+>> endobj
+4327 0 obj <<
+/D [4321 0 R /XYZ 71.731 662.471 null]
+>> endobj
+4328 0 obj <<
+/D [4321 0 R /XYZ 142.466 623.907 null]
 >> endobj
 4330 0 obj <<
-/D [4327 0 R /XYZ 71.731 693.235 null]
+/D [4321 0 R /XYZ 74.222 575.891 null]
 >> endobj
 4331 0 obj <<
-/D [4327 0 R /XYZ 184.704 677.46 null]
+/D [4321 0 R /XYZ 71.731 550.82 null]
 >> endobj
 4332 0 obj <<
-/D [4327 0 R /XYZ 387.861 677.46 null]
+/D [4321 0 R /XYZ 71.731 497.021 null]
 >> endobj
 4333 0 obj <<
-/D [4327 0 R /XYZ 71.731 662.471 null]
+/D [4321 0 R /XYZ 71.731 497.021 null]
 >> endobj
 4334 0 obj <<
-/D [4327 0 R /XYZ 142.466 623.907 null]
+/D [4321 0 R /XYZ 71.731 474.242 null]
+>> endobj
+4335 0 obj <<
+/D [4321 0 R /XYZ 71.731 440.299 null]
 >> endobj
 4336 0 obj <<
-/D [4327 0 R /XYZ 74.222 575.891 null]
+/D [4321 0 R /XYZ 204.252 396.563 null]
 >> endobj
 4337 0 obj <<
-/D [4327 0 R /XYZ 71.731 550.82 null]
+/D [4321 0 R /XYZ 71.731 381.455 null]
 >> endobj
 4338 0 obj <<
-/D [4327 0 R /XYZ 71.731 497.021 null]
+/D [4321 0 R /XYZ 71.731 358.541 null]
 >> endobj
 4339 0 obj <<
-/D [4327 0 R /XYZ 71.731 497.021 null]
+/D [4321 0 R /XYZ 71.731 331.363 null]
 >> endobj
 4340 0 obj <<
-/D [4327 0 R /XYZ 71.731 474.242 null]
+/D [4321 0 R /XYZ 197.727 298.232 null]
 >> endobj
 4341 0 obj <<
-/D [4327 0 R /XYZ 71.731 440.299 null]
+/D [4321 0 R /XYZ 328.437 298.232 null]
 >> endobj
 4342 0 obj <<
-/D [4327 0 R /XYZ 204.252 396.563 null]
+/D [4321 0 R /XYZ 71.731 296.075 null]
 >> endobj
 4343 0 obj <<
-/D [4327 0 R /XYZ 71.731 381.455 null]
+/D [4321 0 R /XYZ 71.731 281.131 null]
 >> endobj
 4344 0 obj <<
-/D [4327 0 R /XYZ 71.731 358.541 null]
+/D [4321 0 R /XYZ 71.731 259.674 null]
 >> endobj
 4345 0 obj <<
-/D [4327 0 R /XYZ 71.731 331.363 null]
+/D [4321 0 R /XYZ 115.567 206.247 null]
 >> endobj
 4346 0 obj <<
-/D [4327 0 R /XYZ 197.727 298.232 null]
+/D [4321 0 R /XYZ 71.731 178.351 null]
 >> endobj
 4347 0 obj <<
-/D [4327 0 R /XYZ 328.437 298.232 null]
+/D [4321 0 R /XYZ 71.731 153.281 null]
 >> endobj
 4348 0 obj <<
-/D [4327 0 R /XYZ 71.731 296.075 null]
+/D [4321 0 R /XYZ 187.785 120.867 null]
 >> endobj
 4349 0 obj <<
-/D [4327 0 R /XYZ 71.731 281.131 null]
+/D [4321 0 R /XYZ 71.731 118.71 null]
 >> endobj
 4350 0 obj <<
-/D [4327 0 R /XYZ 71.731 259.674 null]
->> endobj
-4351 0 obj <<
-/D [4327 0 R /XYZ 115.567 206.247 null]
->> endobj
-4352 0 obj <<
-/D [4327 0 R /XYZ 71.731 178.351 null]
->> endobj
-4353 0 obj <<
-/D [4327 0 R /XYZ 71.731 153.281 null]
->> endobj
-4354 0 obj <<
-/D [4327 0 R /XYZ 187.785 120.867 null]
->> endobj
-4355 0 obj <<
-/D [4327 0 R /XYZ 71.731 118.71 null]
->> endobj
-4356 0 obj <<
-/D [4327 0 R /XYZ 71.731 113.729 null]
+/D [4321 0 R /XYZ 71.731 113.729 null]
 >> endobj
-4326 0 obj <<
+4320 0 obj <<
 /Font << /F33 1210 0 R /F32 1119 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F35 1437 0 R /F48 1896 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4360 0 obj <<
+4354 0 obj <<
 /Length 2690      
 /Filter /FlateDecode
 >>
@@ -16402,167 +16391,167 @@ Q
 l�|��e�_?i�"OH�u�]�
 a�@�z��<H!���� �$u�R'`>�ǯ9����M�U�����R(f5�R��1;!P�T���c�y�G�U=�@���c5�f���w�M���@���k2���g�J.��:�&��m����� ���i?�~�Ӯ�8�\tŧ���v���EID��_�{�����G��*/jj���;�W6��\���m�$�i!�NZ:&���{꿯��|��Jendstream
 endobj
-4359 0 obj <<
+4353 0 obj <<
 /Type /Page
-/Contents 4360 0 R
-/Resources 4358 0 R
+/Contents 4354 0 R
+/Resources 4352 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4357 0 R
-/Annots [ 4390 0 R ]
+/Parent 4351 0 R
+/Annots [ 4384 0 R ]
 >> endobj
-4390 0 obj <<
+4384 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [208.787 359.487 228.214 368.398]
 /Subtype /Link
 /A << /S /GoTo /D (gloss-mta) >>
 >> endobj
+4355 0 obj <<
+/D [4353 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4356 0 obj <<
+/D [4353 0 R /XYZ 105.604 708.344 null]
+>> endobj
+4357 0 obj <<
+/D [4353 0 R /XYZ 140.184 708.344 null]
+>> endobj
+4358 0 obj <<
+/D [4353 0 R /XYZ 184.766 708.344 null]
+>> endobj
+4359 0 obj <<
+/D [4353 0 R /XYZ 71.731 706.187 null]
+>> endobj
+4360 0 obj <<
+/D [4353 0 R /XYZ 105.604 690.411 null]
+>> endobj
 4361 0 obj <<
-/D [4359 0 R /XYZ 71.731 729.265 null]
+/D [4353 0 R /XYZ 140.184 690.411 null]
 >> endobj
 4362 0 obj <<
-/D [4359 0 R /XYZ 105.604 708.344 null]
+/D [4353 0 R /XYZ 185.563 690.411 null]
 >> endobj
 4363 0 obj <<
-/D [4359 0 R /XYZ 140.184 708.344 null]
+/D [4353 0 R /XYZ 71.731 688.254 null]
 >> endobj
 4364 0 obj <<
-/D [4359 0 R /XYZ 184.766 708.344 null]
+/D [4353 0 R /XYZ 105.604 672.478 null]
 >> endobj
 4365 0 obj <<
-/D [4359 0 R /XYZ 71.731 706.187 null]
+/D [4353 0 R /XYZ 132.164 672.478 null]
 >> endobj
 4366 0 obj <<
-/D [4359 0 R /XYZ 105.604 690.411 null]
+/D [4353 0 R /XYZ 74.222 654.545 null]
 >> endobj
 4367 0 obj <<
-/D [4359 0 R /XYZ 140.184 690.411 null]
+/D [4353 0 R /XYZ 71.731 629.475 null]
 >> endobj
 4368 0 obj <<
-/D [4359 0 R /XYZ 185.563 690.411 null]
+/D [4353 0 R /XYZ 433.301 613.699 null]
 >> endobj
 4369 0 obj <<
-/D [4359 0 R /XYZ 71.731 688.254 null]
+/D [4353 0 R /XYZ 159.09 600.747 null]
 >> endobj
 4370 0 obj <<
-/D [4359 0 R /XYZ 105.604 672.478 null]
+/D [4353 0 R /XYZ 71.731 567.706 null]
 >> endobj
 4371 0 obj <<
-/D [4359 0 R /XYZ 132.164 672.478 null]
+/D [4353 0 R /XYZ 95.641 543.96 null]
 >> endobj
 4372 0 obj <<
-/D [4359 0 R /XYZ 74.222 654.545 null]
+/D [4353 0 R /XYZ 74.222 513.076 null]
 >> endobj
 4373 0 obj <<
-/D [4359 0 R /XYZ 71.731 629.475 null]
+/D [4353 0 R /XYZ 71.731 488.005 null]
 >> endobj
 4374 0 obj <<
-/D [4359 0 R /XYZ 433.301 613.699 null]
+/D [4353 0 R /XYZ 71.731 457.121 null]
 >> endobj
 4375 0 obj <<
-/D [4359 0 R /XYZ 159.09 600.747 null]
+/D [4353 0 R /XYZ 71.731 434.207 null]
 >> endobj
 4376 0 obj <<
-/D [4359 0 R /XYZ 71.731 567.706 null]
+/D [4353 0 R /XYZ 162.252 418.431 null]
 >> endobj
 4377 0 obj <<
-/D [4359 0 R /XYZ 95.641 543.96 null]
+/D [4353 0 R /XYZ 254.556 418.431 null]
 >> endobj
 4378 0 obj <<
-/D [4359 0 R /XYZ 74.222 513.076 null]
+/D [4353 0 R /XYZ 327.124 418.431 null]
 >> endobj
 4379 0 obj <<
-/D [4359 0 R /XYZ 71.731 488.005 null]
+/D [4353 0 R /XYZ 499.517 418.431 null]
 >> endobj
 4380 0 obj <<
-/D [4359 0 R /XYZ 71.731 457.121 null]
+/D [4353 0 R /XYZ 207.161 392.528 null]
 >> endobj
 4381 0 obj <<
-/D [4359 0 R /XYZ 71.731 434.207 null]
+/D [4353 0 R /XYZ 270.687 392.528 null]
 >> endobj
 4382 0 obj <<
-/D [4359 0 R /XYZ 162.252 418.431 null]
+/D [4353 0 R /XYZ 476.12 392.528 null]
 >> endobj
 4383 0 obj <<
-/D [4359 0 R /XYZ 254.556 418.431 null]
->> endobj
-4384 0 obj <<
-/D [4359 0 R /XYZ 327.124 418.431 null]
+/D [4353 0 R /XYZ 71.731 372.438 null]
 >> endobj
 4385 0 obj <<
-/D [4359 0 R /XYZ 499.517 418.431 null]
+/D [4353 0 R /XYZ 356.244 361.644 null]
 >> endobj
 4386 0 obj <<
-/D [4359 0 R /XYZ 207.161 392.528 null]
+/D [4353 0 R /XYZ 122.471 348.692 null]
 >> endobj
 4387 0 obj <<
-/D [4359 0 R /XYZ 270.687 392.528 null]
+/D [4353 0 R /XYZ 74.222 330.76 null]
 >> endobj
 4388 0 obj <<
-/D [4359 0 R /XYZ 476.12 392.528 null]
+/D [4353 0 R /XYZ 71.731 305.689 null]
 >> endobj
 4389 0 obj <<
-/D [4359 0 R /XYZ 71.731 372.438 null]
+/D [4353 0 R /XYZ 179.627 276.961 null]
+>> endobj
+4390 0 obj <<
+/D [4353 0 R /XYZ 416.129 276.961 null]
 >> endobj
 4391 0 obj <<
-/D [4359 0 R /XYZ 356.244 361.644 null]
+/D [4353 0 R /XYZ 71.731 256.872 null]
 >> endobj
 4392 0 obj <<
-/D [4359 0 R /XYZ 122.471 348.692 null]
+/D [4353 0 R /XYZ 71.731 225.988 null]
 >> endobj
 4393 0 obj <<
-/D [4359 0 R /XYZ 74.222 330.76 null]
+/D [4353 0 R /XYZ 236.948 215.193 null]
 >> endobj
 4394 0 obj <<
-/D [4359 0 R /XYZ 71.731 305.689 null]
+/D [4353 0 R /XYZ 289.53 215.193 null]
 >> endobj
 4395 0 obj <<
-/D [4359 0 R /XYZ 179.627 276.961 null]
+/D [4353 0 R /XYZ 434.503 215.193 null]
 >> endobj
 4396 0 obj <<
-/D [4359 0 R /XYZ 416.129 276.961 null]
+/D [4353 0 R /XYZ 71.731 187.298 null]
 >> endobj
 4397 0 obj <<
-/D [4359 0 R /XYZ 71.731 256.872 null]
+/D [4353 0 R /XYZ 71.731 187.298 null]
 >> endobj
 4398 0 obj <<
-/D [4359 0 R /XYZ 71.731 225.988 null]
+/D [4353 0 R /XYZ 71.731 162.361 null]
 >> endobj
 4399 0 obj <<
-/D [4359 0 R /XYZ 236.948 215.193 null]
+/D [4353 0 R /XYZ 71.731 139.313 null]
 >> endobj
 4400 0 obj <<
-/D [4359 0 R /XYZ 289.53 215.193 null]
+/D [4353 0 R /XYZ 131.018 123.537 null]
 >> endobj
 4401 0 obj <<
-/D [4359 0 R /XYZ 434.503 215.193 null]
+/D [4353 0 R /XYZ 223.917 123.537 null]
 >> endobj
 4402 0 obj <<
-/D [4359 0 R /XYZ 71.731 187.298 null]
->> endobj
-4403 0 obj <<
-/D [4359 0 R /XYZ 71.731 187.298 null]
+/D [4353 0 R /XYZ 145.843 110.585 null]
 >> endobj
-4404 0 obj <<
-/D [4359 0 R /XYZ 71.731 162.361 null]
->> endobj
-4405 0 obj <<
-/D [4359 0 R /XYZ 71.731 139.313 null]
->> endobj
-4406 0 obj <<
-/D [4359 0 R /XYZ 131.018 123.537 null]
->> endobj
-4407 0 obj <<
-/D [4359 0 R /XYZ 223.917 123.537 null]
->> endobj
-4408 0 obj <<
-/D [4359 0 R /XYZ 145.843 110.585 null]
->> endobj
-4358 0 obj <<
+4352 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4412 0 obj <<
+4406 0 obj <<
 /Length 2715      
 /Filter /FlateDecode
 >>
@@ -16582,93 +16571,93 @@ OQ
 �~�h��� *��"ٲ��0ŕpHmU:3��e���t$����?�!)�\���n��C��A+�E����Y=Z�PtY��H-
}������)�~�"�x'�a�5$��G8�}ԡ
^W���Z%}R}�G�����
 ��40AE�ɧ~:���Q3\�endstream
 endobj
-4411 0 obj <<
+4405 0 obj <<
 /Type /Page
-/Contents 4412 0 R
-/Resources 4410 0 R
+/Contents 4406 0 R
+/Resources 4404 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4357 0 R
+/Parent 4351 0 R
+>> endobj
+4407 0 obj <<
+/D [4405 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4408 0 obj <<
+/D [4405 0 R /XYZ 71.731 741.22 null]
+>> endobj
+4409 0 obj <<
+/D [4405 0 R /XYZ 71.731 667.333 null]
+>> endobj
+4410 0 obj <<
+/D [4405 0 R /XYZ 71.731 644.419 null]
+>> endobj
+4411 0 obj <<
+/D [4405 0 R /XYZ 394.879 615.691 null]
+>> endobj
+4412 0 obj <<
+/D [4405 0 R /XYZ 236.4 589.788 null]
 >> endobj
 4413 0 obj <<
-/D [4411 0 R /XYZ 71.731 729.265 null]
+/D [4405 0 R /XYZ 441.444 589.788 null]
 >> endobj
 4414 0 obj <<
-/D [4411 0 R /XYZ 71.731 741.22 null]
+/D [4405 0 R /XYZ 71.731 569.699 null]
 >> endobj
 4415 0 obj <<
-/D [4411 0 R /XYZ 71.731 667.333 null]
+/D [4405 0 R /XYZ 217.135 545.953 null]
 >> endobj
 4416 0 obj <<
-/D [4411 0 R /XYZ 71.731 644.419 null]
+/D [4405 0 R /XYZ 74.222 528.02 null]
 >> endobj
 4417 0 obj <<
-/D [4411 0 R /XYZ 394.879 615.691 null]
+/D [4405 0 R /XYZ 71.731 502.949 null]
 >> endobj
 4418 0 obj <<
-/D [4411 0 R /XYZ 236.4 589.788 null]
+/D [4405 0 R /XYZ 248.221 487.173 null]
 >> endobj
 4419 0 obj <<
-/D [4411 0 R /XYZ 441.444 589.788 null]
+/D [4405 0 R /XYZ 439.947 461.27 null]
 >> endobj
 4420 0 obj <<
-/D [4411 0 R /XYZ 71.731 569.699 null]
+/D [4405 0 R /XYZ 71.731 459.113 null]
 >> endobj
 4421 0 obj <<
-/D [4411 0 R /XYZ 217.135 545.953 null]
+/D [4405 0 R /XYZ 142.466 420.549 null]
 >> endobj
 4422 0 obj <<
-/D [4411 0 R /XYZ 74.222 528.02 null]
+/D [4405 0 R /XYZ 74.222 372.533 null]
 >> endobj
 4423 0 obj <<
-/D [4411 0 R /XYZ 71.731 502.949 null]
+/D [4405 0 R /XYZ 71.731 347.462 null]
 >> endobj
 4424 0 obj <<
-/D [4411 0 R /XYZ 248.221 487.173 null]
+/D [4405 0 R /XYZ 71.731 311.597 null]
 >> endobj
 4425 0 obj <<
-/D [4411 0 R /XYZ 439.947 461.27 null]
+/D [4405 0 R /XYZ 71.731 269.819 null]
 >> endobj
 4426 0 obj <<
-/D [4411 0 R /XYZ 71.731 459.113 null]
+/D [4405 0 R /XYZ 411.009 256.967 null]
 >> endobj
 4427 0 obj <<
-/D [4411 0 R /XYZ 142.466 420.549 null]
+/D [4405 0 R /XYZ 71.731 216.12 null]
 >> endobj
 4428 0 obj <<
-/D [4411 0 R /XYZ 74.222 372.533 null]
+/D [4405 0 R /XYZ 71.731 216.12 null]
 >> endobj
 4429 0 obj <<
-/D [4411 0 R /XYZ 71.731 347.462 null]
+/D [4405 0 R /XYZ 71.731 191.183 null]
 >> endobj
 4430 0 obj <<
-/D [4411 0 R /XYZ 71.731 311.597 null]
+/D [4405 0 R /XYZ 71.731 168.135 null]
 >> endobj
 4431 0 obj <<
-/D [4411 0 R /XYZ 71.731 269.819 null]
->> endobj
-4432 0 obj <<
-/D [4411 0 R /XYZ 411.009 256.967 null]
->> endobj
-4433 0 obj <<
-/D [4411 0 R /XYZ 71.731 216.12 null]
->> endobj
-4434 0 obj <<
-/D [4411 0 R /XYZ 71.731 216.12 null]
->> endobj
-4435 0 obj <<
-/D [4411 0 R /XYZ 71.731 191.183 null]
->> endobj
-4436 0 obj <<
-/D [4411 0 R /XYZ 71.731 168.135 null]
+/D [4405 0 R /XYZ 71.731 145.221 null]
 >> endobj
-4437 0 obj <<
-/D [4411 0 R /XYZ 71.731 145.221 null]
->> endobj
-4410 0 obj <<
+4404 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F35 1437 0 R /F23 1105 0 R /F44 1884 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4440 0 obj <<
+4434 0 obj <<
 /Length 2512      
 /Filter /FlateDecode
 >>
@@ -16685,125 +16674,125 @@ _
 ��Cr"A��m�'a�����F���
 5Dj*���8�U�	mJ�z�m�v��ϰ�����w3��QTZ�v�T���"�5��=�@�+��H�/��yD9�3�+�ܵDP��{���SN�Z�_�endstream
 endobj
-4439 0 obj <<
+4433 0 obj <<
 /Type /Page
-/Contents 4440 0 R
-/Resources 4438 0 R
+/Contents 4434 0 R
+/Resources 4432 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4357 0 R
-/Annots [ 4442 0 R ]
+/Parent 4351 0 R
+/Annots [ 4436 0 R ]
 >> endobj
-4442 0 obj <<
+4436 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [380.968 693.235 433.271 702.147]
 /Subtype /Link
 /A << /S /GoTo /D (os-win32) >>
 >> endobj
+4435 0 obj <<
+/D [4433 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4437 0 obj <<
+/D [4433 0 R /XYZ 74.222 646.575 null]
+>> endobj
+4438 0 obj <<
+/D [4433 0 R /XYZ 71.731 621.504 null]
+>> endobj
+4439 0 obj <<
+/D [4433 0 R /XYZ 71.731 590.62 null]
+>> endobj
+4440 0 obj <<
+/D [4433 0 R /XYZ 212.034 569.863 null]
+>> endobj
 4441 0 obj <<
-/D [4439 0 R /XYZ 71.731 729.265 null]
+/D [4433 0 R /XYZ 71.731 567.706 null]
+>> endobj
+4442 0 obj <<
+/D [4433 0 R /XYZ 71.731 520.947 null]
 >> endobj
 4443 0 obj <<
-/D [4439 0 R /XYZ 74.222 646.575 null]
+/D [4433 0 R /XYZ 297.791 508.095 null]
 >> endobj
 4444 0 obj <<
-/D [4439 0 R /XYZ 71.731 621.504 null]
+/D [4433 0 R /XYZ 71.731 496.692 null]
 >> endobj
 4445 0 obj <<
-/D [4439 0 R /XYZ 71.731 590.62 null]
+/D [4433 0 R /XYZ 71.731 496.692 null]
 >> endobj
 4446 0 obj <<
-/D [4439 0 R /XYZ 212.034 569.863 null]
+/D [4433 0 R /XYZ 422.619 439.851 null]
 >> endobj
 4447 0 obj <<
-/D [4439 0 R /XYZ 71.731 567.706 null]
+/D [4433 0 R /XYZ 74.222 421.918 null]
 >> endobj
 4448 0 obj <<
-/D [4439 0 R /XYZ 71.731 520.947 null]
+/D [4433 0 R /XYZ 71.731 396.847 null]
 >> endobj
 4449 0 obj <<
-/D [4439 0 R /XYZ 297.791 508.095 null]
+/D [4433 0 R /XYZ 300.601 381.071 null]
 >> endobj
 4450 0 obj <<
-/D [4439 0 R /XYZ 71.731 496.692 null]
+/D [4433 0 R /XYZ 71.731 376.424 null]
 >> endobj
 4451 0 obj <<
-/D [4439 0 R /XYZ 71.731 496.692 null]
+/D [4433 0 R /XYZ 113.574 358.157 null]
 >> endobj
 4452 0 obj <<
-/D [4439 0 R /XYZ 422.619 439.851 null]
+/D [4433 0 R /XYZ 71.731 356 null]
 >> endobj
 4453 0 obj <<
-/D [4439 0 R /XYZ 74.222 421.918 null]
+/D [4433 0 R /XYZ 113.574 340.224 null]
 >> endobj
 4454 0 obj <<
-/D [4439 0 R /XYZ 71.731 396.847 null]
+/D [4433 0 R /XYZ 71.731 340.125 null]
 >> endobj
 4455 0 obj <<
-/D [4439 0 R /XYZ 300.601 381.071 null]
+/D [4433 0 R /XYZ 113.574 322.291 null]
 >> endobj
 4456 0 obj <<
-/D [4439 0 R /XYZ 71.731 376.424 null]
+/D [4433 0 R /XYZ 71.731 320.135 null]
 >> endobj
 4457 0 obj <<
-/D [4439 0 R /XYZ 113.574 358.157 null]
+/D [4433 0 R /XYZ 113.574 304.359 null]
 >> endobj
 4458 0 obj <<
-/D [4439 0 R /XYZ 71.731 356 null]
+/D [4433 0 R /XYZ 71.731 302.202 null]
 >> endobj
 4459 0 obj <<
-/D [4439 0 R /XYZ 113.574 340.224 null]
+/D [4433 0 R /XYZ 113.574 286.426 null]
 >> endobj
 4460 0 obj <<
-/D [4439 0 R /XYZ 71.731 340.125 null]
+/D [4433 0 R /XYZ 113.574 286.426 null]
 >> endobj
 4461 0 obj <<
-/D [4439 0 R /XYZ 113.574 322.291 null]
+/D [4433 0 R /XYZ 137.584 286.426 null]
 >> endobj
 4462 0 obj <<
-/D [4439 0 R /XYZ 71.731 320.135 null]
+/D [4433 0 R /XYZ 214.923 255.542 null]
 >> endobj
 4463 0 obj <<
-/D [4439 0 R /XYZ 113.574 304.359 null]
+/D [4433 0 R /XYZ 71.731 243.422 null]
 >> endobj
 4464 0 obj <<
-/D [4439 0 R /XYZ 71.731 302.202 null]
+/D [4433 0 R /XYZ 71.731 243.422 null]
 >> endobj
 4465 0 obj <<
-/D [4439 0 R /XYZ 113.574 286.426 null]
+/D [4433 0 R /XYZ 71.731 220.643 null]
 >> endobj
 4466 0 obj <<
-/D [4439 0 R /XYZ 113.574 286.426 null]
+/D [4433 0 R /XYZ 71.731 197.594 null]
 >> endobj
 4467 0 obj <<
-/D [4439 0 R /XYZ 137.584 286.426 null]
+/D [4433 0 R /XYZ 71.731 168.767 null]
 >> endobj
 4468 0 obj <<
-/D [4439 0 R /XYZ 214.923 255.542 null]
->> endobj
-4469 0 obj <<
-/D [4439 0 R /XYZ 71.731 243.422 null]
->> endobj
-4470 0 obj <<
-/D [4439 0 R /XYZ 71.731 243.422 null]
->> endobj
-4471 0 obj <<
-/D [4439 0 R /XYZ 71.731 220.643 null]
->> endobj
-4472 0 obj <<
-/D [4439 0 R /XYZ 71.731 197.594 null]
->> endobj
-4473 0 obj <<
-/D [4439 0 R /XYZ 71.731 168.767 null]
+/D [4433 0 R /XYZ 71.731 143.796 null]
 >> endobj
-4474 0 obj <<
-/D [4439 0 R /XYZ 71.731 143.796 null]
->> endobj
-4438 0 obj <<
+4432 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4477 0 obj <<
+4471 0 obj <<
 /Length 3083      
 /Filter /FlateDecode
 >>
@@ -16823,221 +16812,220 @@ K:R
 ��δ���,���j'(�ߢ�1�O��[��t?�Yx��a~+ ax��:�87�W'�_���~����=~o͘⦎��b��w���jjH��'qxj�a����A[���к�q!����R��t�*S%�sp
 W��K^���!&Ɇhd�I^�-�Fu�2jg8���<�b�J�������K�_ޓ�4k]�N�z2���"̷���SB�҂�ߵ���~�p��'P�:����le�?�|�a(�&�i����P�=-|s+�!��J���X)���tdr�1�bM	P~\�C���fRL�c��+/����l��:��c��q�PKY�SS"͊t���%�+b���~�#y�K7�?�dG��d	!�4���`0�<l��,�0G�+d@BŒ�d�@Og�m:��yy7�ME4jtu_�F����ǟ>q�H8������`B�RHE���#߲�U# ߚ���t�9�y�#X�~^�<�y8���p(�F�Ky��l�������EZ�E���gL[��9#��p{$x�6y�,�o�ʩ��endstream
 endobj
-4476 0 obj <<
+4470 0 obj <<
 /Type /Page
-/Contents 4477 0 R
-/Resources 4475 0 R
+/Contents 4471 0 R
+/Resources 4469 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4357 0 R
+/Parent 4351 0 R
+>> endobj
+4472 0 obj <<
+/D [4470 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4473 0 obj <<
+/D [4470 0 R /XYZ 71.731 741.22 null]
+>> endobj
+4474 0 obj <<
+/D [4470 0 R /XYZ 71.731 718.306 null]
+>> endobj
+4475 0 obj <<
+/D [4470 0 R /XYZ 493.42 708.344 null]
+>> endobj
+4476 0 obj <<
+/D [4470 0 R /XYZ 429.405 695.392 null]
+>> endobj
+4477 0 obj <<
+/D [4470 0 R /XYZ 71.731 654.381 null]
 >> endobj
 4478 0 obj <<
-/D [4476 0 R /XYZ 71.731 729.265 null]
+/D [4470 0 R /XYZ 71.731 639.437 null]
 >> endobj
 4479 0 obj <<
-/D [4476 0 R /XYZ 71.731 741.22 null]
+/D [4470 0 R /XYZ 71.731 590.386 null]
 >> endobj
 4480 0 obj <<
-/D [4476 0 R /XYZ 71.731 718.306 null]
+/D [4470 0 R /XYZ 74.222 546.55 null]
 >> endobj
 4481 0 obj <<
-/D [4476 0 R /XYZ 493.42 708.344 null]
+/D [4470 0 R /XYZ 259.97 523.636 null]
 >> endobj
 4482 0 obj <<
-/D [4476 0 R /XYZ 429.405 695.392 null]
+/D [4470 0 R /XYZ 71.731 508.528 null]
 >> endobj
 4483 0 obj <<
-/D [4476 0 R /XYZ 71.731 654.381 null]
+/D [4470 0 R /XYZ 95.641 464.359 null]
 >> endobj
 4484 0 obj <<
-/D [4476 0 R /XYZ 71.731 639.437 null]
+/D [4470 0 R /XYZ 71.731 464.359 null]
 >> endobj
 4485 0 obj <<
-/D [4476 0 R /XYZ 71.731 590.386 null]
+/D [4470 0 R /XYZ 71.731 414.053 null]
 >> endobj
 4486 0 obj <<
-/D [4476 0 R /XYZ 74.222 546.55 null]
+/D [4470 0 R /XYZ 309.199 393.295 null]
 >> endobj
 4487 0 obj <<
-/D [4476 0 R /XYZ 259.97 523.636 null]
+/D [4470 0 R /XYZ 71.731 391.139 null]
 >> endobj
 4488 0 obj <<
-/D [4476 0 R /XYZ 71.731 508.528 null]
+/D [4470 0 R /XYZ 71.731 360.254 null]
 >> endobj
 4489 0 obj <<
-/D [4476 0 R /XYZ 95.641 464.359 null]
+/D [4470 0 R /XYZ 71.731 337.34 null]
 >> endobj
 4490 0 obj <<
-/D [4476 0 R /XYZ 71.731 464.359 null]
+/D [4470 0 R /XYZ 336.008 308.613 null]
 >> endobj
 4491 0 obj <<
-/D [4476 0 R /XYZ 71.731 414.053 null]
+/D [4470 0 R /XYZ 71.731 306.456 null]
 >> endobj
 4492 0 obj <<
-/D [4476 0 R /XYZ 309.199 393.295 null]
+/D [4470 0 R /XYZ 246.006 285.699 null]
 >> endobj
 4493 0 obj <<
-/D [4476 0 R /XYZ 71.731 391.139 null]
+/D [4470 0 R /XYZ 71.731 283.542 null]
 >> endobj
 4494 0 obj <<
-/D [4476 0 R /XYZ 71.731 360.254 null]
+/D [4470 0 R /XYZ 71.731 260.628 null]
 >> endobj
 4495 0 obj <<
-/D [4476 0 R /XYZ 71.731 337.34 null]
+/D [4470 0 R /XYZ 279.615 236.882 null]
 >> endobj
 4496 0 obj <<
-/D [4476 0 R /XYZ 336.008 308.613 null]
+/D [4470 0 R /XYZ 521.375 223.93 null]
 >> endobj
 4497 0 obj <<
-/D [4476 0 R /XYZ 71.731 306.456 null]
+/D [4470 0 R /XYZ 71.731 203.841 null]
 >> endobj
 4498 0 obj <<
-/D [4476 0 R /XYZ 246.006 285.699 null]
->> endobj
-4499 0 obj <<
-/D [4476 0 R /XYZ 71.731 283.542 null]
+/D [4470 0 R /XYZ 71.731 160.005 null]
 >> endobj
-4500 0 obj <<
-/D [4476 0 R /XYZ 71.731 260.628 null]
+4469 0 obj <<
+/Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F32 1119 0 R >>
+/ProcSet [ /PDF /Text ]
 >> endobj
 4501 0 obj <<
-/D [4476 0 R /XYZ 279.615 236.882 null]
+/Length 2117      
+/Filter /FlateDecode
+>>
+stream
+xڕXms�6��_���5g�$H�T���rܛ&�%�un�N"a�
E�H0���o_@��h;7��b�]�˳y�y��s">b�Y8I����V^?��mX��O�g�W�?�;�?Y�N/tb<�N��2�ú��T�f�S[��u��w�Q<��Y��\��j�y�u9
\�_�?��|�X4�ș���J�<�Z�N���n��A@JΝ1m�e�9+֨�D���Ţ���\:�Qw�#1m�����|����o����A�)��,��`n5�Y�-+h���Rg_�,.H)�H�=�68e�V�<õ$�<���3S�f�V�f�d���L�@KU�3^����j�Ri���eNL�T�#U���L/���*C��к3�<+�Y+�#1��6j�2۵\�df0��	gzt�_��Sϵ���&��gg��$g���Ex�̛Ӗ��J<����nj�\��o˒��Iܞ�D3��}�b%��N�z�~q��'��y��Y�=��������K�|([�?>��?P�9��=�H8�n�޼�x��SBbu�T9�e�I�<��J1컑%��Q��r�p�y�/�*pS<"����ӫ�wonx��F�'�j�3��ܤ��0Bw�€�2��Ta�*/���f��(�z���A�2 �0��m�B%��e�g��&ӊұy�l�x�+����*JRV`�#� m+�jϳ���*�ɜiv��ߪ�U�rw��Y��Jݬ��?�
+35���pbkɚ9��@�ջ��8��5+�#�B�����X-��^�@�q�A���$Q;-W���=�l��/���	����4�/ �r�:q����u`�Ni֭fU+�8�?P�l�1�
+�чa9�C�ȏ[�ysB��<���F�����F	��l�h%��x��n�s𫓬�3�Tk�������ϏH�pȇ��~���x�����黪L�D�l�
+y#����7��Q���,i�Ũ�Y��6P�j�ݡn�b#�Dm�+�"�\cs��Cl�2��R8����VV\�R��G�}-e����	�<�0*V�]�k��J�f9��,�a��W_���ʚs���i@�ZR4��ha�?�$+��IU�L�-pFwG&J5��pT��	�r�
+�d^)����J���u�qO�)�"�-٨��$d���gqZTAmMQ79�G�8�� )��T%B"o�A%��l�9�����B����#?m�p�A����p#[��M�Pj�"_�5>�L격���x�a�	�0�iҍ�'e�4X4t��M�Լu7��#���JV��oO�?�~�>\_���G�9$6�^�8�A�n����̻*C�Ca�3����?E���eɼQ�r�W"��v�3��3��}@����?��m�'�$@��0�qn���b���lF��ͬ;��vZ&
B�J�b��=?FV0�g���x&�����'�H���/�4#(�\g[��=�ř�C�}��QY��.�'�.�e�ƖLS"l9pʖ���I��oy\�0U�ΊL.E�4V<��D��ȶ�v�#
6���&w�� ��F"�\�1s��
+�;�VKJ�Z�f��� :�9 �� E8��o[�F�
+ڣ�j��0�ÚY���;jj�������?�fz'+��ѫ��:����N	�����`��ϝ�[�.0zW_��{e2��o�4@���\7v��^_����M�*|x��p���s���\ޔ���v�`􇈖��1��+�7���<�	�`L��o�<.��`�(��-�49<�j�#� �ޡ�QD��>R����O��"�̌������eX��)\��Ox�cz؛�����y*�������Q�o;x�b\�sxB�����~L��M�N�Lmߌ�H���Ǩ��3з}�ز��(g=��E��0$/z? �(p���L���ٸ�$���|'�E����t쒩±�
�@/�Ŷ��N(İ䂹�@`s�mN��±(H_�����lH34�+(�pI�88Qj-�
�g6���#z�������DꎺO�d���@��As�V�Cz�G`�9
+L�h�G��ܱ�����qE{�}��︧���"��endstream
+endobj
+4500 0 obj <<
+/Type /Page
+/Contents 4501 0 R
+/Resources 4499 0 R
+/MediaBox [0 0 609.714 789.041]
+/Parent 4351 0 R
 >> endobj
 4502 0 obj <<
-/D [4476 0 R /XYZ 521.375 223.93 null]
+/D [4500 0 R /XYZ 71.731 729.265 null]
 >> endobj
 4503 0 obj <<
-/D [4476 0 R /XYZ 71.731 203.841 null]
+/D [4500 0 R /XYZ 71.731 718.306 null]
 >> endobj
 4504 0 obj <<
-/D [4476 0 R /XYZ 71.731 160.005 null]
+/D [4500 0 R /XYZ 71.731 696.359 null]
 >> endobj
-4475 0 obj <<
-/Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F32 1119 0 R >>
-/ProcSet [ /PDF /Text ]
+4505 0 obj <<
+/D [4500 0 R /XYZ 71.731 673.31 null]
 >> endobj
-4507 0 obj <<
-/Length 2115      
-/Filter /FlateDecode
->>
-stream
-xڕXms�6��_���5g�$H�T���rܛ&�%�un�N"a�
E��[���/�EJ������b�]�b�]ț��ϛD���sG��I�}�N�0����%l-bd~Z>;����ܙ����vx��>�p�PL���eU�"�]����r����[��\��j�y�u9
\�_�?��|�X��~��c�Q#�̱�bo�9�;~��s�5�2��k4d"|g
-�`Q��xN�_�h�����5(��F���2U��iw��A�)�\O��`nu���-k&Z��r�f_�,.�([k�=86u�V��õ$�<���3s�n�VM�\�<a7�L��JU�g<s��f��J���z��1)S��T	��0�,��nTVk�T�֝��Y�Ό�=�9F��k�^��uCn�ڞp�G��5�<�\K{��d��?����ϙysZ��V��^0�h�����_���,���O��\'���+Y?��ջ���W�<���K���B��N����h��8�Ǻ������#�����M쑆���ɍ��۟�R�{`J�q&a� �g(�aߍ,�7%S�J�������h��@*�������O��߽��a��-��\�Lgm&s�jZB+�j���p
-R����Q@
-a�����_G7�Q_s��]Q�D5��w̸�d��t�_y�l^x�+����*J2V��G�A�VhՎG9�Y��%��M�U5�
-Beg��Qa��4��VA������
-��Ϛ���x�aI�4���J˚�D�;vΪ4�a#��:5,=b�����*����$QU+W���l��U�0N.�8���fj�09p�80u@|{XaP����6Z���E�����`}��S?�����7't���G7t7m[}~�� M��V2	�Ƌ����!�N��.��S�ʶk^�]����u	�|���뷋���/��,�_�e�%�KsF0�;�hx�/%���bQ�t�)���oŭa��uSY$jۯ�g�!�\cw��C�2���Q8�ہ����$�<&=HG��t!U:�qn�z"8OD��1z#�>o%���6��#e���<_}�Ox��Ln9�08�U~A�Fh��e*+��K)����L�::�1P�a|�t�� ��E�)�$C���k%�ˮ�*�����Rf04�lT҇�M%膽^���sr�� ���h��$m|0���jI]"&�4B���A�0www�Yh9���H���E|�HU+��a-�I�WJ�0���!��>1`Д]
�D|�����
�:ߨzR�I
F�
-���=5�cN�}8tN*Y绿=���i���P#�u|!�e§&ǐ��z�ӁH�-�_rA��3t:T�3ȋ )�Sty�_P��;u�3Wx$���
�䌇��m�@�Z��[���?۶��5�e�!�0��.����r-u݌t)�Yw*���L:�@��ɂ'q��`��Lj.<
J����� !S����4�����6�Bk��0-δ�ߧahi�婻鉮�h��
-i��9�s��=�c�F�������V�s)���f*/���z��^i��<E{m����o$`��ʮ���kg���mT�UN�������
:��þe|è[A��
-}:,�5G�1�Q���8EE 7�t��4k+Y�m�Q=N���=_�h���8F���	��c�_���W�~�f�\��k�hX����/��7<ڷa�.K�<��/pj�|�t
��\��������_"��=�_"FG>�O�?*��y�F�)u�߽z��q���EAOolJ���W�{�	��=*�@?�t E�����}�@E=��SM%��qziQ��hb�̟��^��hjT*�決o��c�6F��U�2�{���]Ah�J&	T���!�"#�L�k�<I���Ǩ��0�C�ز;�Ũg=��E���J0^~AQ��������q	�7��=��N�t��vx�Y�!�O=��b��c'b\r��
��܆���,���@ ��o�g��!��)��0�ZJ��ю�me�����B�ܐ�gy�[\�g$r+�>�����������"�3�k����?�1 z��O�{��_�C;�0����{������endstream
-endobj
 4506 0 obj <<
-/Type /Page
-/Contents 4507 0 R
-/Resources 4505 0 R
-/MediaBox [0 0 609.714 789.041]
-/Parent 4357 0 R
+/D [4500 0 R /XYZ 71.731 634.521 null]
+>> endobj
+4507 0 obj <<
+/D [4500 0 R /XYZ 71.731 484.074 null]
 >> endobj
 4508 0 obj <<
-/D [4506 0 R /XYZ 71.731 729.265 null]
+/D [4500 0 R /XYZ 71.731 451.741 null]
 >> endobj
 4509 0 obj <<
-/D [4506 0 R /XYZ 71.731 718.306 null]
+/D [4500 0 R /XYZ 74.222 410.062 null]
 >> endobj
 4510 0 obj <<
-/D [4506 0 R /XYZ 71.731 696.359 null]
+/D [4500 0 R /XYZ 71.731 384.991 null]
 >> endobj
 4511 0 obj <<
-/D [4506 0 R /XYZ 71.731 673.31 null]
+/D [4500 0 R /XYZ 111.572 369.215 null]
 >> endobj
 4512 0 obj <<
-/D [4506 0 R /XYZ 71.731 634.521 null]
+/D [4500 0 R /XYZ 71.731 349.126 null]
 >> endobj
 4513 0 obj <<
-/D [4506 0 R /XYZ 71.731 484.074 null]
+/D [4500 0 R /XYZ 264.896 338.331 null]
 >> endobj
 4514 0 obj <<
-/D [4506 0 R /XYZ 71.731 451.741 null]
+/D [4500 0 R /XYZ 169.456 312.428 null]
 >> endobj
 4515 0 obj <<
-/D [4506 0 R /XYZ 74.222 410.062 null]
+/D [4500 0 R /XYZ 74.222 281.544 null]
 >> endobj
 4516 0 obj <<
-/D [4506 0 R /XYZ 71.731 384.991 null]
+/D [4500 0 R /XYZ 488.744 258.63 null]
 >> endobj
 4517 0 obj <<
-/D [4506 0 R /XYZ 111.572 369.215 null]
+/D [4500 0 R /XYZ 106.431 245.679 null]
 >> endobj
 4518 0 obj <<
-/D [4506 0 R /XYZ 71.731 349.126 null]
+/D [4500 0 R /XYZ 71.731 245.579 null]
 >> endobj
 4519 0 obj <<
-/D [4506 0 R /XYZ 272.368 338.331 null]
+/D [4500 0 R /XYZ 207.151 227.746 null]
 >> endobj
 4520 0 obj <<
-/D [4506 0 R /XYZ 169.456 312.428 null]
+/D [4500 0 R /XYZ 171.988 214.795 null]
 >> endobj
 4521 0 obj <<
-/D [4506 0 R /XYZ 74.222 281.544 null]
+/D [4500 0 R /XYZ 337.682 201.843 null]
 >> endobj
 4522 0 obj <<
-/D [4506 0 R /XYZ 488.744 258.63 null]
+/D [4500 0 R /XYZ 71.731 199.686 null]
 >> endobj
 4523 0 obj <<
-/D [4506 0 R /XYZ 106.431 245.679 null]
+/D [4500 0 R /XYZ 71.731 176.772 null]
 >> endobj
 4524 0 obj <<
-/D [4506 0 R /XYZ 71.731 245.579 null]
+/D [4500 0 R /XYZ 71.731 171.791 null]
 >> endobj
 4525 0 obj <<
-/D [4506 0 R /XYZ 207.151 227.746 null]
+/D [4500 0 R /XYZ 71.731 169.3 null]
 >> endobj
 4526 0 obj <<
-/D [4506 0 R /XYZ 171.988 214.795 null]
+/D [4500 0 R /XYZ 113.574 151.034 null]
 >> endobj
 4527 0 obj <<
-/D [4506 0 R /XYZ 337.682 201.843 null]
+/D [4500 0 R /XYZ 286.733 151.034 null]
 >> endobj
 4528 0 obj <<
-/D [4506 0 R /XYZ 71.731 199.686 null]
+/D [4500 0 R /XYZ 291.157 151.034 null]
 >> endobj
 4529 0 obj <<
-/D [4506 0 R /XYZ 71.731 176.772 null]
+/D [4500 0 R /XYZ 71.731 135.925 null]
 >> endobj
 4530 0 obj <<
-/D [4506 0 R /XYZ 71.731 171.791 null]
+/D [4500 0 R /XYZ 113.574 120.149 null]
 >> endobj
 4531 0 obj <<
-/D [4506 0 R /XYZ 71.731 169.3 null]
+/D [4500 0 R /XYZ 307.174 120.149 null]
 >> endobj
 4532 0 obj <<
-/D [4506 0 R /XYZ 113.574 151.034 null]
+/D [4500 0 R /XYZ 388.314 120.149 null]
 >> endobj
 4533 0 obj <<
-/D [4506 0 R /XYZ 286.733 151.034 null]
->> endobj
-4534 0 obj <<
-/D [4506 0 R /XYZ 291.157 151.034 null]
->> endobj
-4535 0 obj <<
-/D [4506 0 R /XYZ 71.731 135.925 null]
->> endobj
-4536 0 obj <<
-/D [4506 0 R /XYZ 113.574 120.149 null]
->> endobj
-4537 0 obj <<
-/D [4506 0 R /XYZ 307.174 120.149 null]
->> endobj
-4538 0 obj <<
-/D [4506 0 R /XYZ 388.314 120.149 null]
->> endobj
-4539 0 obj <<
-/D [4506 0 R /XYZ 239.479 107.198 null]
+/D [4500 0 R /XYZ 239.479 107.198 null]
 >> endobj
-4505 0 obj <<
+4499 0 obj <<
 /Font << /F33 1210 0 R /F32 1119 0 R /F27 1112 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4542 0 obj <<
+4536 0 obj <<
 /Length 1024      
 /Filter /FlateDecode
 >>
@@ -17049,42 +17037,42 @@ Z
 fy.
���"� w���#�i����X�,oU%�8Aܢ�xbԎ?	G�ըna�2�],޿
Eֽ�$h=��l<������2S�Z?^�e��/c�e8��d���k�;�㩚��<��㷋D��
)��:QN�.e��o�/�w�'�U�`p��4��i�<ҬP�0;�ՠ����<p���̠�?�jD;�[�a�F,�:���z�N\��S��ً�J�qý���ʌ�?a��M�7���='
 ��S2����~��"��旕���ջ����j�'%����nx��-��]endstream
 endobj
-4541 0 obj <<
+4535 0 obj <<
 /Type /Page
-/Contents 4542 0 R
-/Resources 4540 0 R
+/Contents 4536 0 R
+/Resources 4534 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4551 0 R
+/Parent 4545 0 R
 >> endobj
-4543 0 obj <<
-/D [4541 0 R /XYZ 71.731 729.265 null]
+4537 0 obj <<
+/D [4535 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4544 0 obj <<
-/D [4541 0 R /XYZ 186.062 695.392 null]
+4538 0 obj <<
+/D [4535 0 R /XYZ 186.062 695.392 null]
 >> endobj
-4545 0 obj <<
-/D [4541 0 R /XYZ 71.731 693.235 null]
+4539 0 obj <<
+/D [4535 0 R /XYZ 71.731 693.235 null]
 >> endobj
-4546 0 obj <<
-/D [4541 0 R /XYZ 113.574 677.46 null]
+4540 0 obj <<
+/D [4535 0 R /XYZ 113.574 677.46 null]
 >> endobj
-4547 0 obj <<
-/D [4541 0 R /XYZ 71.731 638.506 null]
+4541 0 obj <<
+/D [4535 0 R /XYZ 71.731 638.506 null]
 >> endobj
-4548 0 obj <<
-/D [4541 0 R /XYZ 113.574 620.672 null]
+4542 0 obj <<
+/D [4535 0 R /XYZ 113.574 620.672 null]
 >> endobj
-4549 0 obj <<
-/D [4541 0 R /XYZ 71.731 605.564 null]
+4543 0 obj <<
+/D [4535 0 R /XYZ 71.731 605.564 null]
 >> endobj
-4550 0 obj <<
-/D [4541 0 R /XYZ 113.574 589.788 null]
+4544 0 obj <<
+/D [4535 0 R /XYZ 113.574 589.788 null]
 >> endobj
-4540 0 obj <<
+4534 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4554 0 obj <<
+4548 0 obj <<
 /Length 2470      
 /Filter /FlateDecode
 >>
@@ -17098,126 +17086,126 @@ K'S
 0>�2���� �g̳���BvZ�����e�$�~�ݡ�NR,����?`��#�E%�d^�hb�#厄(T9E�gn�|���U "Up˄:?�cӖbij�D�	�R͆TZ$�z�1�0��U9���V�����Æ���=f�{7�����M5@&{X�,gZn�t�t�@��
#V0��-�����g#��g׆�wf�3�4����P��1:��<��!�D���pH(RU�h �5��(��{�8���G�|�車�%�(t?�2;��!�s�D���@�	��(�%\b��9�<:��q}%���g\�*V��$��Y?��t�_B_z�g���]�(����`��,ݑP��?�
�*��`]��<t=�b�'�m��������T���䬵F���d�S���T���Fѕ{,I4jN��TH�rz�8�l��Qx�W��Y+ԃ�I
 ��|��֢>,xK["X��[$�mPp5D�0{��vǭ�l���!��n$��Sz������o&�����q��Ư�UǶu���-=�+o��oK��=�E
�ܓ[��Cp��<8W�0:�滻�qv�����������ɝ�\g�@���>z�!�I7�z�ͷ��boQ�m��7����T2�0�9}��CM��H�r����j���r��+)�ķ~�؂��㈜��L�懓*�T�H�Ϋ�g����4��ȿ��ʞeX����<~7u�8��u�)��ιg��7Θԃye���'|�|����L��\�h'��w�rF��pnz�<�K^�L$It���;��-��^�E��\K�9���l�("��H�9����(@\��,�AZ�P#��Z�5��s�`��!0k����7��/�wIGݽ���/a��vʗ�w��zl��;�DrI���vM�{�������T��4�N��KKW�VF|uf�s��K���c�����ċ��,]��l��8�3���۬q�k}/��H��GW�M�u)��7��i֏���I�\6B�;)����4|�����4pJ�s~�rG�ALy��7���B�ˍc�����(ڹ{gɒ�������`3��endstream
 endobj
-4553 0 obj <<
+4547 0 obj <<
 /Type /Page
-/Contents 4554 0 R
-/Resources 4552 0 R
+/Contents 4548 0 R
+/Resources 4546 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4551 0 R
-/Annots [ 4561 0 R 4562 0 R ]
+/Parent 4545 0 R
+/Annots [ 4555 0 R 4556 0 R ]
 >> endobj
-4561 0 obj <<
+4555 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [235.548 547.742 280.892 556.654]
 /Subtype /Link
 /A << /S /GoTo /D (installation) >>
 >> endobj
-4562 0 obj <<
+4556 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [355.754 547.742 401.098 556.654]
 /Subtype /Link
 /A << /S /GoTo /D (configuration) >>
 >> endobj
-4555 0 obj <<
-/D [4553 0 R /XYZ 71.731 729.265 null]
+4549 0 obj <<
+/D [4547 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1681 0 obj <<
-/D [4553 0 R /XYZ 71.731 718.306 null]
+/D [4547 0 R /XYZ 71.731 718.306 null]
 >> endobj
 802 0 obj <<
-/D [4553 0 R /XYZ 358.696 703.236 null]
+/D [4547 0 R /XYZ 358.696 703.236 null]
 >> endobj
-4556 0 obj <<
-/D [4553 0 R /XYZ 71.731 681.855 null]
+4550 0 obj <<
+/D [4547 0 R /XYZ 71.731 681.855 null]
 >> endobj
 1682 0 obj <<
-/D [4553 0 R /XYZ 71.731 658.391 null]
+/D [4547 0 R /XYZ 71.731 658.391 null]
 >> endobj
 806 0 obj <<
-/D [4553 0 R /XYZ 233.175 615.294 null]
+/D [4547 0 R /XYZ 233.175 615.294 null]
+>> endobj
+4551 0 obj <<
+/D [4547 0 R /XYZ 71.731 606.471 null]
+>> endobj
+4552 0 obj <<
+/D [4547 0 R /XYZ 141.316 593.735 null]
+>> endobj
+4553 0 obj <<
+/D [4547 0 R /XYZ 405.441 580.783 null]
+>> endobj
+4554 0 obj <<
+/D [4547 0 R /XYZ 71.731 560.694 null]
 >> endobj
 4557 0 obj <<
-/D [4553 0 R /XYZ 71.731 606.471 null]
+/D [4547 0 R /XYZ 82.138 523.996 null]
 >> endobj
 4558 0 obj <<
-/D [4553 0 R /XYZ 141.316 593.735 null]
+/D [4547 0 R /XYZ 71.731 490.955 null]
 >> endobj
 4559 0 obj <<
-/D [4553 0 R /XYZ 405.441 580.783 null]
+/D [4547 0 R /XYZ 430.969 467.209 null]
 >> endobj
 4560 0 obj <<
-/D [4553 0 R /XYZ 71.731 560.694 null]
+/D [4547 0 R /XYZ 71.731 454.258 null]
+>> endobj
+4561 0 obj <<
+/D [4547 0 R /XYZ 468.549 428.355 null]
+>> endobj
+1683 0 obj <<
+/D [4547 0 R /XYZ 71.731 421.217 null]
+>> endobj
+810 0 obj <<
+/D [4547 0 R /XYZ 537.833 378.119 null]
+>> endobj
+4562 0 obj <<
+/D [4547 0 R /XYZ 71.731 365.681 null]
 >> endobj
 4563 0 obj <<
-/D [4553 0 R /XYZ 82.138 523.996 null]
+/D [4547 0 R /XYZ 149.514 356.56 null]
 >> endobj
 4564 0 obj <<
-/D [4553 0 R /XYZ 71.731 490.955 null]
+/D [4547 0 R /XYZ 252.264 356.56 null]
 >> endobj
 4565 0 obj <<
-/D [4553 0 R /XYZ 430.969 467.209 null]
+/D [4547 0 R /XYZ 71.731 331.489 null]
 >> endobj
 4566 0 obj <<
-/D [4553 0 R /XYZ 71.731 454.258 null]
+/D [4547 0 R /XYZ 71.731 331.489 null]
 >> endobj
-4567 0 obj <<
-/D [4553 0 R /XYZ 468.549 428.355 null]
+1684 0 obj <<
+/D [4547 0 R /XYZ 71.731 263.994 null]
 >> endobj
-1683 0 obj <<
-/D [4553 0 R /XYZ 71.731 421.217 null]
+814 0 obj <<
+/D [4547 0 R /XYZ 207.49 197.767 null]
 >> endobj
-810 0 obj <<
-/D [4553 0 R /XYZ 537.833 378.119 null]
+4567 0 obj <<
+/D [4547 0 R /XYZ 71.731 188.945 null]
 >> endobj
 4568 0 obj <<
-/D [4553 0 R /XYZ 71.731 365.681 null]
+/D [4547 0 R /XYZ 71.731 174.051 null]
 >> endobj
 4569 0 obj <<
-/D [4553 0 R /XYZ 149.514 356.56 null]
+/D [4547 0 R /XYZ 71.731 169.07 null]
 >> endobj
 4570 0 obj <<
-/D [4553 0 R /XYZ 252.264 356.56 null]
+/D [4547 0 R /XYZ 89.664 148.313 null]
 >> endobj
 4571 0 obj <<
-/D [4553 0 R /XYZ 71.731 331.489 null]
+/D [4547 0 R /XYZ 89.664 122.41 null]
 >> endobj
 4572 0 obj <<
-/D [4553 0 R /XYZ 71.731 331.489 null]
->> endobj
-1684 0 obj <<
-/D [4553 0 R /XYZ 71.731 263.994 null]
->> endobj
-814 0 obj <<
-/D [4553 0 R /XYZ 207.49 197.767 null]
->> endobj
-4573 0 obj <<
-/D [4553 0 R /XYZ 71.731 188.945 null]
->> endobj
-4574 0 obj <<
-/D [4553 0 R /XYZ 71.731 174.051 null]
->> endobj
-4575 0 obj <<
-/D [4553 0 R /XYZ 71.731 169.07 null]
->> endobj
-4576 0 obj <<
-/D [4553 0 R /XYZ 89.664 148.313 null]
->> endobj
-4577 0 obj <<
-/D [4553 0 R /XYZ 89.664 122.41 null]
->> endobj
-4578 0 obj <<
-/D [4553 0 R /XYZ 71.731 120.253 null]
+/D [4547 0 R /XYZ 71.731 120.253 null]
 >> endobj
 1685 0 obj <<
-/D [4553 0 R /XYZ 71.731 48.817 null]
+/D [4547 0 R /XYZ 71.731 48.817 null]
 >> endobj
-4552 0 obj <<
+4546 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F32 1119 0 R /F57 2335 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4581 0 obj <<
+4575 0 obj <<
 /Length 1771      
 /Filter /FlateDecode
 >>
@@ -17232,81 +17220,81 @@ O`M(2
 �[��*>��2����>H�t�Ŧ;O�1�=�}���!0��zs��i������5v���ųc9��'p#H�Q
 ��D����X��q��Bendstream
 endobj
-4580 0 obj <<
+4574 0 obj <<
 /Type /Page
-/Contents 4581 0 R
-/Resources 4579 0 R
+/Contents 4575 0 R
+/Resources 4573 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4551 0 R
+/Parent 4545 0 R
 >> endobj
-4582 0 obj <<
-/D [4580 0 R /XYZ 71.731 729.265 null]
+4576 0 obj <<
+/D [4574 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4583 0 obj <<
-/D [4580 0 R /XYZ 89.664 708.344 null]
+4577 0 obj <<
+/D [4574 0 R /XYZ 89.664 708.344 null]
 >> endobj
 818 0 obj <<
-/D [4580 0 R /XYZ 505.555 645.157 null]
+/D [4574 0 R /XYZ 505.555 645.157 null]
 >> endobj
-4584 0 obj <<
-/D [4580 0 R /XYZ 71.731 632.719 null]
+4578 0 obj <<
+/D [4574 0 R /XYZ 71.731 632.719 null]
 >> endobj
-4585 0 obj <<
-/D [4580 0 R /XYZ 129.185 623.597 null]
+4579 0 obj <<
+/D [4574 0 R /XYZ 129.185 623.597 null]
 >> endobj
-4586 0 obj <<
-/D [4580 0 R /XYZ 71.731 616.459 null]
+4580 0 obj <<
+/D [4574 0 R /XYZ 71.731 616.459 null]
 >> endobj
 1686 0 obj <<
-/D [4580 0 R /XYZ 71.731 559.672 null]
+/D [4574 0 R /XYZ 71.731 559.672 null]
 >> endobj
 822 0 obj <<
-/D [4580 0 R /XYZ 370.33 516.575 null]
+/D [4574 0 R /XYZ 370.33 516.575 null]
 >> endobj
-4587 0 obj <<
-/D [4580 0 R /XYZ 71.731 504.137 null]
+4581 0 obj <<
+/D [4574 0 R /XYZ 71.731 504.137 null]
 >> endobj
-4588 0 obj <<
-/D [4580 0 R /XYZ 71.731 482.896 null]
+4582 0 obj <<
+/D [4574 0 R /XYZ 71.731 482.896 null]
 >> endobj
-4589 0 obj <<
-/D [4580 0 R /XYZ 71.731 427.416 null]
+4583 0 obj <<
+/D [4574 0 R /XYZ 71.731 427.416 null]
 >> endobj
-4590 0 obj <<
-/D [4580 0 R /XYZ 139.576 415.514 null]
+4584 0 obj <<
+/D [4574 0 R /XYZ 139.576 415.514 null]
 >> endobj
-4591 0 obj <<
-/D [4580 0 R /XYZ 71.731 403.394 null]
+4585 0 obj <<
+/D [4574 0 R /XYZ 71.731 403.394 null]
 >> endobj
-4592 0 obj <<
-/D [4580 0 R /XYZ 71.731 336.258 null]
+4586 0 obj <<
+/D [4574 0 R /XYZ 71.731 336.258 null]
 >> endobj
-4593 0 obj <<
-/D [4580 0 R /XYZ 71.731 314.293 null]
+4587 0 obj <<
+/D [4574 0 R /XYZ 71.731 314.293 null]
 >> endobj
-4594 0 obj <<
-/D [4580 0 R /XYZ 71.731 245.1 null]
+4588 0 obj <<
+/D [4574 0 R /XYZ 71.731 245.1 null]
 >> endobj
 1746 0 obj <<
-/D [4580 0 R /XYZ 71.731 226.433 null]
+/D [4574 0 R /XYZ 71.731 226.433 null]
 >> endobj
 826 0 obj <<
-/D [4580 0 R /XYZ 374.461 182.962 null]
+/D [4574 0 R /XYZ 374.461 182.962 null]
 >> endobj
-4595 0 obj <<
-/D [4580 0 R /XYZ 71.731 170.791 null]
+4589 0 obj <<
+/D [4574 0 R /XYZ 71.731 170.791 null]
 >> endobj
-4596 0 obj <<
-/D [4580 0 R /XYZ 402.991 161.403 null]
+4590 0 obj <<
+/D [4574 0 R /XYZ 402.991 161.403 null]
 >> endobj
-4597 0 obj <<
-/D [4580 0 R /XYZ 71.731 136.332 null]
+4591 0 obj <<
+/D [4574 0 R /XYZ 71.731 136.332 null]
 >> endobj
-4579 0 obj <<
+4573 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F32 1119 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4600 0 obj <<
+4594 0 obj <<
 /Length 1560      
 /Filter /FlateDecode
 >>
@@ -17319,78 +17307,78 @@ x
 ݖ�i���w�N�m�I�r,ɫ؊t��
 �5q��#�#�sT�8�6�_CB�ffC��N�X�����F��`����Q�Y5�($�'2�p�:�������.��`�)���(�g��x y��^<D8"��Y<ou���@-h=9��LN���#����V�_/�����pqzs�P���������>��oGח�� &|��`�����^������t29~u�
���d�i����[�I�'3�n]��ɼ+SL1L�}vY���y��O�*�߶`5��&�Ǣ~٨E�/j��#j�F�v��6�A��ȾZc�j=��v-�3g�0�����{)�����l��S87��<XS��5�6��RTh�}���|�_r�vP������i�G����sT	WT)�z%��V�k��q�A�4�R�h�&3���JYNi��럤�a�-�[�
�M��.�]/��<<a�@��S����L�\(7��4�h�9��Y�M�<@��Q��^aIOa|U'�͂�b�YS-�p*ӭqĊ�����V'�g��x��aڲ�Z���bC&=��ǚd��@ƌK��2�?�Ʈ��E^t�endstream
 endobj
-4599 0 obj <<
+4593 0 obj <<
 /Type /Page
-/Contents 4600 0 R
-/Resources 4598 0 R
+/Contents 4594 0 R
+/Resources 4592 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4551 0 R
+/Parent 4545 0 R
 >> endobj
-4601 0 obj <<
-/D [4599 0 R /XYZ 71.731 729.265 null]
+4595 0 obj <<
+/D [4593 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4602 0 obj <<
-/D [4599 0 R /XYZ 71.731 718.306 null]
+4596 0 obj <<
+/D [4593 0 R /XYZ 71.731 718.306 null]
 >> endobj
-4603 0 obj <<
-/D [4599 0 R /XYZ 175.682 708.344 null]
+4597 0 obj <<
+/D [4593 0 R /XYZ 175.682 708.344 null]
 >> endobj
-4604 0 obj <<
-/D [4599 0 R /XYZ 395.942 708.344 null]
+4598 0 obj <<
+/D [4593 0 R /XYZ 395.942 708.344 null]
 >> endobj
-4605 0 obj <<
-/D [4599 0 R /XYZ 486.807 708.344 null]
+4599 0 obj <<
+/D [4593 0 R /XYZ 486.807 708.344 null]
 >> endobj
-4606 0 obj <<
-/D [4599 0 R /XYZ 71.731 695.392 null]
+4600 0 obj <<
+/D [4593 0 R /XYZ 71.731 695.392 null]
 >> endobj
-4607 0 obj <<
-/D [4599 0 R /XYZ 71.731 682.441 null]
+4601 0 obj <<
+/D [4593 0 R /XYZ 71.731 682.441 null]
 >> endobj
-4608 0 obj <<
-/D [4599 0 R /XYZ 107.048 682.441 null]
+4602 0 obj <<
+/D [4593 0 R /XYZ 107.048 682.441 null]
 >> endobj
 1747 0 obj <<
-/D [4599 0 R /XYZ 71.731 675.303 null]
+/D [4593 0 R /XYZ 71.731 675.303 null]
 >> endobj
 830 0 obj <<
-/D [4599 0 R /XYZ 189.38 609.825 null]
+/D [4593 0 R /XYZ 189.38 609.825 null]
 >> endobj
-4609 0 obj <<
-/D [4599 0 R /XYZ 71.731 599.152 null]
+4603 0 obj <<
+/D [4593 0 R /XYZ 71.731 599.152 null]
 >> endobj
-4610 0 obj <<
-/D [4599 0 R /XYZ 236.591 588.266 null]
+4604 0 obj <<
+/D [4593 0 R /XYZ 236.591 588.266 null]
 >> endobj
-4611 0 obj <<
-/D [4599 0 R /XYZ 71.731 563.195 null]
+4605 0 obj <<
+/D [4593 0 R /XYZ 71.731 563.195 null]
 >> endobj
-4612 0 obj <<
-/D [4599 0 R /XYZ 71.731 460.731 null]
+4606 0 obj <<
+/D [4593 0 R /XYZ 71.731 460.731 null]
 >> endobj
-4613 0 obj <<
-/D [4599 0 R /XYZ 321.183 436.236 null]
+4607 0 obj <<
+/D [4593 0 R /XYZ 321.183 436.236 null]
 >> endobj
-4614 0 obj <<
-/D [4599 0 R /XYZ 71.731 424.117 null]
+4608 0 obj <<
+/D [4593 0 R /XYZ 71.731 424.117 null]
 >> endobj
 1748 0 obj <<
-/D [4599 0 R /XYZ 71.731 205.449 null]
+/D [4593 0 R /XYZ 71.731 205.449 null]
 >> endobj
 834 0 obj <<
-/D [4599 0 R /XYZ 496.414 161.243 null]
+/D [4593 0 R /XYZ 496.414 161.243 null]
 >> endobj
-4615 0 obj <<
-/D [4599 0 R /XYZ 71.731 148.805 null]
+4609 0 obj <<
+/D [4593 0 R /XYZ 71.731 148.805 null]
 >> endobj
-4616 0 obj <<
-/D [4599 0 R /XYZ 206.804 139.684 null]
+4610 0 obj <<
+/D [4593 0 R /XYZ 206.804 139.684 null]
 >> endobj
-4598 0 obj <<
+4592 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F35 1437 0 R /F32 1119 0 R /F57 2335 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4619 0 obj <<
+4613 0 obj <<
 /Length 2158      
 /Filter /FlateDecode
 >>
@@ -17407,87 +17395,87 @@ Y
 %��[+�����q�B��=�G�-R�'[a߯	>cN}�I�y����.�d<�����o�L��Ǡ�}Z�o�Z�`#�Rr�w����-6�	�y�W�i0��r�Ô���\���ya�]�������x&�Ǡ�h��(ʱ)�2ֈc��:��c�5��5���Vɴ'Ҡ�
 ��yZN8�s�(�������)���@��f�&��ϰ��Ty�`F��'��L����.���!.�>���~Hcy�Nks�#�%I�KI�� u-="a���z�W:�U%lT͢�]j*
Ib#�<��\JE���O}xHRr2����d�\C:�f������0m�/U_��.��{�o/e�t�<�0�'8h��}eU�&����0Gt��/�����4[r��Q0*K�<�ɻ�'*�	ՁF����/��]�`�Ga��d�/�w�3�RoXG��]��m�6x���-�P�N�q��'�谲��]z5&{%��ף�IN��7ϥ��8vT�<2�Y�+z.UV�h#��`&�>�U��Q�u��Xq�l�$dX��+/U�=��`��Q���N?����Z.�Y�����WnUQ�����_J���Pf���IgӂƍvG=�L���0�m%�F:[I=�eruT`g=H3��r���w<$�O��Q?x%M��|$M��T����3ǝϞy���S陃���yp��^��AB�zw�~�ew���rHYv�yT����:�����>�G��~����}���}���ԗ�}����_�|�endstream
 endobj
-4618 0 obj <<
+4612 0 obj <<
 /Type /Page
-/Contents 4619 0 R
-/Resources 4617 0 R
+/Contents 4613 0 R
+/Resources 4611 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4551 0 R
+/Parent 4545 0 R
+>> endobj
+4614 0 obj <<
+/D [4612 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4615 0 obj <<
+/D [4612 0 R /XYZ 71.731 718.306 null]
+>> endobj
+4616 0 obj <<
+/D [4612 0 R /XYZ 508.292 708.344 null]
+>> endobj
+4617 0 obj <<
+/D [4612 0 R /XYZ 71.731 649.4 null]
+>> endobj
+4618 0 obj <<
+/D [4612 0 R /XYZ 71.731 631.467 null]
+>> endobj
+1796 0 obj <<
+/D [4612 0 R /XYZ 71.731 579.661 null]
+>> endobj
+4619 0 obj <<
+/D [4612 0 R /XYZ 71.731 546.919 null]
 >> endobj
 4620 0 obj <<
-/D [4618 0 R /XYZ 71.731 729.265 null]
+/D [4612 0 R /XYZ 71.731 536.956 null]
 >> endobj
 4621 0 obj <<
-/D [4618 0 R /XYZ 71.731 718.306 null]
+/D [4612 0 R /XYZ 135.985 527.323 null]
 >> endobj
 4622 0 obj <<
-/D [4618 0 R /XYZ 508.292 708.344 null]
+/D [4612 0 R /XYZ 135.985 492.354 null]
 >> endobj
 4623 0 obj <<
-/D [4618 0 R /XYZ 71.731 649.4 null]
+/D [4612 0 R /XYZ 71.731 435.766 null]
 >> endobj
-4624 0 obj <<
-/D [4618 0 R /XYZ 71.731 631.467 null]
+1797 0 obj <<
+/D [4612 0 R /XYZ 71.731 396.812 null]
 >> endobj
-1796 0 obj <<
-/D [4618 0 R /XYZ 71.731 579.661 null]
+4624 0 obj <<
+/D [4612 0 R /XYZ 71.731 362.013 null]
 >> endobj
 4625 0 obj <<
-/D [4618 0 R /XYZ 71.731 546.919 null]
+/D [4612 0 R /XYZ 71.731 352.05 null]
 >> endobj
 4626 0 obj <<
-/D [4618 0 R /XYZ 71.731 536.956 null]
+/D [4612 0 R /XYZ 135.985 342.416 null]
 >> endobj
 4627 0 obj <<
-/D [4618 0 R /XYZ 135.985 527.323 null]
+/D [4612 0 R /XYZ 135.985 307.447 null]
 >> endobj
 4628 0 obj <<
-/D [4618 0 R /XYZ 135.985 492.354 null]
+/D [4612 0 R /XYZ 71.731 274.172 null]
 >> endobj
 4629 0 obj <<
-/D [4618 0 R /XYZ 71.731 435.766 null]
->> endobj
-1797 0 obj <<
-/D [4618 0 R /XYZ 71.731 396.812 null]
+/D [4612 0 R /XYZ 181.691 261.22 null]
 >> endobj
 4630 0 obj <<
-/D [4618 0 R /XYZ 71.731 362.013 null]
->> endobj
-4631 0 obj <<
-/D [4618 0 R /XYZ 71.731 352.05 null]
->> endobj
-4632 0 obj <<
-/D [4618 0 R /XYZ 135.985 342.416 null]
->> endobj
-4633 0 obj <<
-/D [4618 0 R /XYZ 135.985 307.447 null]
->> endobj
-4634 0 obj <<
-/D [4618 0 R /XYZ 71.731 274.172 null]
->> endobj
-4635 0 obj <<
-/D [4618 0 R /XYZ 181.691 261.22 null]
->> endobj
-4636 0 obj <<
-/D [4618 0 R /XYZ 485.889 261.22 null]
+/D [4612 0 R /XYZ 485.889 261.22 null]
 >> endobj
 1749 0 obj <<
-/D [4618 0 R /XYZ 71.731 228.179 null]
+/D [4612 0 R /XYZ 71.731 228.179 null]
 >> endobj
 838 0 obj <<
-/D [4618 0 R /XYZ 517.296 185.082 null]
+/D [4612 0 R /XYZ 517.296 185.082 null]
 >> endobj
-4637 0 obj <<
-/D [4618 0 R /XYZ 71.731 172.644 null]
+4631 0 obj <<
+/D [4612 0 R /XYZ 71.731 172.644 null]
 >> endobj
-4638 0 obj <<
-/D [4618 0 R /XYZ 71.731 157.102 null]
+4632 0 obj <<
+/D [4612 0 R /XYZ 71.731 157.102 null]
 >> endobj
-4617 0 obj <<
+4611 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F32 1119 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4641 0 obj <<
+4635 0 obj <<
 /Length 1812      
 /Filter /FlateDecode
 >>
@@ -17507,77 +17495,77 @@ s
 ���D��A���ӕ�\���n��Q���z�|Lqq�+Z;4�C�P�Q_�H��[�[#�g��&_ٲ������WW��G�*�;�u_���^�D����Ou�W����������R,�������_6��D�
 J.���a�y�K��*endstream
 endobj
-4640 0 obj <<
+4634 0 obj <<
 /Type /Page
-/Contents 4641 0 R
-/Resources 4639 0 R
+/Contents 4635 0 R
+/Resources 4633 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4551 0 R
-/Annots [ 4650 0 R ]
+/Parent 4545 0 R
+/Annots [ 4644 0 R ]
 >> endobj
-4650 0 obj <<
+4644 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [81.972 518.428 141.748 525.282]
 /Subtype /Link
 /A << /S /GoTo /D (http-apache) >>
 >> endobj
-4642 0 obj <<
-/D [4640 0 R /XYZ 71.731 729.265 null]
+4636 0 obj <<
+/D [4634 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4643 0 obj <<
-/D [4640 0 R /XYZ 71.731 718.306 null]
+4637 0 obj <<
+/D [4634 0 R /XYZ 71.731 718.306 null]
 >> endobj
-4644 0 obj <<
-/D [4640 0 R /XYZ 310.001 708.344 null]
+4638 0 obj <<
+/D [4634 0 R /XYZ 310.001 708.344 null]
 >> endobj
-4645 0 obj <<
-/D [4640 0 R /XYZ 278.636 682.441 null]
+4639 0 obj <<
+/D [4634 0 R /XYZ 278.636 682.441 null]
 >> endobj
 1750 0 obj <<
-/D [4640 0 R /XYZ 71.731 636.448 null]
+/D [4634 0 R /XYZ 71.731 636.448 null]
 >> endobj
 842 0 obj <<
-/D [4640 0 R /XYZ 107.109 570.971 null]
+/D [4634 0 R /XYZ 107.109 570.971 null]
 >> endobj
-4646 0 obj <<
-/D [4640 0 R /XYZ 71.731 562.148 null]
+4640 0 obj <<
+/D [4634 0 R /XYZ 71.731 562.148 null]
 >> endobj
-4647 0 obj <<
-/D [4640 0 R /XYZ 71.731 542.274 null]
+4641 0 obj <<
+/D [4634 0 R /XYZ 71.731 542.274 null]
 >> endobj
-4648 0 obj <<
-/D [4640 0 R /XYZ 274.373 531.479 null]
+4642 0 obj <<
+/D [4634 0 R /XYZ 274.373 531.479 null]
 >> endobj
-4649 0 obj <<
-/D [4640 0 R /XYZ 390.766 531.479 null]
+4643 0 obj <<
+/D [4634 0 R /XYZ 390.766 531.479 null]
 >> endobj
 1751 0 obj <<
-/D [4640 0 R /XYZ 71.731 513.447 null]
+/D [4634 0 R /XYZ 71.731 513.447 null]
 >> endobj
 846 0 obj <<
-/D [4640 0 R /XYZ 452.394 445.912 null]
+/D [4634 0 R /XYZ 452.394 445.912 null]
 >> endobj
-4651 0 obj <<
-/D [4640 0 R /XYZ 71.731 433.741 null]
+4645 0 obj <<
+/D [4634 0 R /XYZ 71.731 433.741 null]
 >> endobj
-4652 0 obj <<
-/D [4640 0 R /XYZ 71.731 411.401 null]
+4646 0 obj <<
+/D [4634 0 R /XYZ 71.731 411.401 null]
 >> endobj
-4653 0 obj <<
-/D [4640 0 R /XYZ 437.99 411.401 null]
+4647 0 obj <<
+/D [4634 0 R /XYZ 437.99 411.401 null]
 >> endobj
-4654 0 obj <<
-/D [4640 0 R /XYZ 71.731 391.312 null]
+4648 0 obj <<
+/D [4634 0 R /XYZ 71.731 391.312 null]
 >> endobj
-4655 0 obj <<
-/D [4640 0 R /XYZ 130.401 354.614 null]
+4649 0 obj <<
+/D [4634 0 R /XYZ 130.401 354.614 null]
 >> endobj
-4639 0 obj <<
+4633 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R /F57 2335 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4658 0 obj <<
+4652 0 obj <<
 /Length 3017      
 /Filter /FlateDecode
 >>
@@ -17594,159 +17582,159 @@ xڝk
 ��V�}���l��������“U�:��{A�t.�#'[���@���SCT���nʡ�	9�\�#_8ɔ�X��Y���R�ć�5����ĝ�g�_2G�9���2i2��<P��=ù�r'UXS�[jj�X�y��W��e�z��2Ɔ�2�en��‮!�wy�lFm��C{=�yB�z4o��%��H���������R��w�N�\���ːY����|�NU�{������ľ��.��wO�т���%郹�O���-۠g��IcQ�i~����VŶ��~5�L���(�����M>��q�)_z��b;*��Hx u߁ 6�m�2������M�:2?�ںx�` [�C�>���2<�s��\����/�n0֪�ʅʟHz�%"�V�(��)��V�ЬeP��K�3�[p(5�z��Am���ؔZ4`�|�K�Z�1flBN�Y5��T�ah��ܓ9[���G/��������2�'���J�@������U�;�	���I);Y�yhs��25%���*��K%�׊�܌r��NS]��m�AG��3�h��N�Y��A�=�-;=������
���-^�)��G�(���p�٩,�GqZ�-ʉI�Gj:������'a�df�}t"0�e�f�:	�P��5���-�؉�otܹ��3�L�����;L3�J�6��U����z[!���N�rz���dV	�lX�f�o�A�$"��k4SlO$�?���×��r�S
 W,~�����{�.�(3endstream
 endobj
-4657 0 obj <<
+4651 0 obj <<
 /Type /Page
-/Contents 4658 0 R
-/Resources 4656 0 R
+/Contents 4652 0 R
+/Resources 4650 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4700 0 R
+/Parent 4694 0 R
 >> endobj
-4659 0 obj <<
-/D [4657 0 R /XYZ 71.731 729.265 null]
+4653 0 obj <<
+/D [4651 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1752 0 obj <<
-/D [4657 0 R /XYZ 71.731 718.306 null]
+/D [4651 0 R /XYZ 71.731 718.306 null]
 >> endobj
 850 0 obj <<
-/D [4657 0 R /XYZ 271.435 703.236 null]
+/D [4651 0 R /XYZ 271.435 703.236 null]
 >> endobj
-4660 0 obj <<
-/D [4657 0 R /XYZ 71.731 682.175 null]
+4654 0 obj <<
+/D [4651 0 R /XYZ 71.731 682.175 null]
 >> endobj
-4661 0 obj <<
-/D [4657 0 R /XYZ 297.998 673.5 null]
+4655 0 obj <<
+/D [4651 0 R /XYZ 297.998 673.5 null]
 >> endobj
 1753 0 obj <<
-/D [4657 0 R /XYZ 71.731 660.449 null]
+/D [4651 0 R /XYZ 71.731 660.449 null]
 >> endobj
 854 0 obj <<
-/D [4657 0 R /XYZ 365.87 615.294 null]
+/D [4651 0 R /XYZ 365.87 615.294 null]
+>> endobj
+4656 0 obj <<
+/D [4651 0 R /XYZ 71.731 606.471 null]
+>> endobj
+4657 0 obj <<
+/D [4651 0 R /XYZ 457.285 593.735 null]
+>> endobj
+4658 0 obj <<
+/D [4651 0 R /XYZ 199.72 580.783 null]
+>> endobj
+4659 0 obj <<
+/D [4651 0 R /XYZ 258.499 580.783 null]
+>> endobj
+4660 0 obj <<
+/D [4651 0 R /XYZ 315.525 580.783 null]
+>> endobj
+4661 0 obj <<
+/D [4651 0 R /XYZ 71.731 578.626 null]
 >> endobj
 4662 0 obj <<
-/D [4657 0 R /XYZ 71.731 606.471 null]
+/D [4651 0 R /XYZ 118.555 540.062 null]
 >> endobj
 4663 0 obj <<
-/D [4657 0 R /XYZ 457.285 593.735 null]
+/D [4651 0 R /XYZ 71.731 509.785 null]
 >> endobj
 4664 0 obj <<
-/D [4657 0 R /XYZ 199.72 580.783 null]
+/D [4651 0 R /XYZ 71.731 509.785 null]
 >> endobj
 4665 0 obj <<
-/D [4657 0 R /XYZ 258.499 580.783 null]
+/D [4651 0 R /XYZ 71.731 490.079 null]
 >> endobj
 4666 0 obj <<
-/D [4657 0 R /XYZ 315.525 580.783 null]
+/D [4651 0 R /XYZ 165.11 477.128 null]
 >> endobj
 4667 0 obj <<
-/D [4657 0 R /XYZ 71.731 578.626 null]
+/D [4651 0 R /XYZ 71.731 469.99 null]
 >> endobj
 4668 0 obj <<
-/D [4657 0 R /XYZ 118.555 540.062 null]
+/D [4651 0 R /XYZ 71.731 469.99 null]
 >> endobj
 4669 0 obj <<
-/D [4657 0 R /XYZ 71.731 509.785 null]
+/D [4651 0 R /XYZ 164.065 446.244 null]
 >> endobj
 4670 0 obj <<
-/D [4657 0 R /XYZ 71.731 509.785 null]
+/D [4651 0 R /XYZ 210.352 446.244 null]
 >> endobj
 4671 0 obj <<
-/D [4657 0 R /XYZ 71.731 490.079 null]
+/D [4651 0 R /XYZ 352.569 446.244 null]
 >> endobj
 4672 0 obj <<
-/D [4657 0 R /XYZ 165.11 477.128 null]
+/D [4651 0 R /XYZ 442.661 446.244 null]
 >> endobj
 4673 0 obj <<
-/D [4657 0 R /XYZ 71.731 469.99 null]
+/D [4651 0 R /XYZ 203.715 433.292 null]
 >> endobj
 4674 0 obj <<
-/D [4657 0 R /XYZ 71.731 469.99 null]
+/D [4651 0 R /XYZ 372.061 433.292 null]
 >> endobj
 4675 0 obj <<
-/D [4657 0 R /XYZ 164.065 446.244 null]
+/D [4651 0 R /XYZ 71.731 426.154 null]
 >> endobj
 4676 0 obj <<
-/D [4657 0 R /XYZ 210.352 446.244 null]
+/D [4651 0 R /XYZ 460.217 415.36 null]
 >> endobj
 4677 0 obj <<
-/D [4657 0 R /XYZ 352.569 446.244 null]
+/D [4651 0 R /XYZ 71.731 382.318 null]
 >> endobj
 4678 0 obj <<
-/D [4657 0 R /XYZ 442.661 446.244 null]
+/D [4651 0 R /XYZ 71.731 382.318 null]
 >> endobj
 4679 0 obj <<
-/D [4657 0 R /XYZ 203.715 433.292 null]
+/D [4651 0 R /XYZ 237.451 371.524 null]
 >> endobj
 4680 0 obj <<
-/D [4657 0 R /XYZ 372.061 433.292 null]
+/D [4651 0 R /XYZ 71.731 358.572 null]
 >> endobj
 4681 0 obj <<
-/D [4657 0 R /XYZ 71.731 426.154 null]
+/D [4651 0 R /XYZ 220.87 345.621 null]
 >> endobj
 4682 0 obj <<
-/D [4657 0 R /XYZ 460.217 415.36 null]
+/D [4651 0 R /XYZ 71.731 338.483 null]
 >> endobj
 4683 0 obj <<
-/D [4657 0 R /XYZ 71.731 382.318 null]
+/D [4651 0 R /XYZ 257.124 327.688 null]
 >> endobj
 4684 0 obj <<
-/D [4657 0 R /XYZ 71.731 382.318 null]
+/D [4651 0 R /XYZ 358.713 327.688 null]
+>> endobj
+1754 0 obj <<
+/D [4651 0 R /XYZ 71.731 320.55 null]
+>> endobj
+858 0 obj <<
+/D [4651 0 R /XYZ 462 277.453 null]
 >> endobj
 4685 0 obj <<
-/D [4657 0 R /XYZ 237.451 371.524 null]
+/D [4651 0 R /XYZ 71.731 265.015 null]
 >> endobj
 4686 0 obj <<
-/D [4657 0 R /XYZ 71.731 358.572 null]
+/D [4651 0 R /XYZ 117.29 255.893 null]
 >> endobj
 4687 0 obj <<
-/D [4657 0 R /XYZ 220.87 345.621 null]
+/D [4651 0 R /XYZ 427.895 255.893 null]
 >> endobj
 4688 0 obj <<
-/D [4657 0 R /XYZ 71.731 338.483 null]
+/D [4651 0 R /XYZ 71.731 224.91 null]
 >> endobj
 4689 0 obj <<
-/D [4657 0 R /XYZ 257.124 327.688 null]
+/D [4651 0 R /XYZ 171.098 212.058 null]
 >> endobj
 4690 0 obj <<
-/D [4657 0 R /XYZ 358.713 327.688 null]
->> endobj
-1754 0 obj <<
-/D [4657 0 R /XYZ 71.731 320.55 null]
->> endobj
-858 0 obj <<
-/D [4657 0 R /XYZ 462 277.453 null]
+/D [4651 0 R /XYZ 413.216 212.058 null]
 >> endobj
 4691 0 obj <<
-/D [4657 0 R /XYZ 71.731 265.015 null]
+/D [4651 0 R /XYZ 71.731 166.065 null]
 >> endobj
 4692 0 obj <<
-/D [4657 0 R /XYZ 117.29 255.893 null]
+/D [4651 0 R /XYZ 71.731 122.23 null]
 >> endobj
 4693 0 obj <<
-/D [4657 0 R /XYZ 427.895 255.893 null]
->> endobj
-4694 0 obj <<
-/D [4657 0 R /XYZ 71.731 224.91 null]
->> endobj
-4695 0 obj <<
-/D [4657 0 R /XYZ 171.098 212.058 null]
->> endobj
-4696 0 obj <<
-/D [4657 0 R /XYZ 413.216 212.058 null]
->> endobj
-4697 0 obj <<
-/D [4657 0 R /XYZ 71.731 166.065 null]
->> endobj
-4698 0 obj <<
-/D [4657 0 R /XYZ 71.731 122.23 null]
->> endobj
-4699 0 obj <<
-/D [4657 0 R /XYZ 71.731 122.23 null]
+/D [4651 0 R /XYZ 71.731 122.23 null]
 >> endobj
-4656 0 obj <<
+4650 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F44 1884 0 R /F32 1119 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4703 0 obj <<
+4697 0 obj <<
 /Length 1514      
 /Filter /FlateDecode
 >>
@@ -17758,111 +17746,111 @@ xڵَ
 �c��2�'�BU�锬\1w�3N�c��~ ?N�q���t���U�+�4�����]4��؅��jI�6S���ST���P��1�W��tZ5<���
�3̔����0����'1��8��W��Y���r�%�0��z^W���9`�(��mw�о���M<%�r��Vj���΋�+/.�|��	��#�h�����3s9��Y-ށSO5�`�ߗʦ|��E)��@�
 m���RӔ�^�����h"�yd�?r}��&���:�x�?J(D9D�s��"8����(:�s""F��9�sk�cQ�/�SY��]�4endstream
 endobj
-4702 0 obj <<
+4696 0 obj <<
 /Type /Page
-/Contents 4703 0 R
-/Resources 4701 0 R
+/Contents 4697 0 R
+/Resources 4695 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4700 0 R
+/Parent 4694 0 R
 >> endobj
-4704 0 obj <<
-/D [4702 0 R /XYZ 71.731 729.265 null]
+4698 0 obj <<
+/D [4696 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1755 0 obj <<
-/D [4702 0 R /XYZ 71.731 718.306 null]
+/D [4696 0 R /XYZ 71.731 718.306 null]
 >> endobj
 862 0 obj <<
-/D [4702 0 R /XYZ 155.521 676.38 null]
+/D [4696 0 R /XYZ 155.521 676.38 null]
 >> endobj
 1756 0 obj <<
-/D [4702 0 R /XYZ 71.731 669.666 null]
+/D [4696 0 R /XYZ 71.731 669.666 null]
 >> endobj
 866 0 obj <<
-/D [4702 0 R /XYZ 206.096 624.303 null]
+/D [4696 0 R /XYZ 206.096 624.303 null]
+>> endobj
+4699 0 obj <<
+/D [4696 0 R /XYZ 71.731 615.48 null]
+>> endobj
+4700 0 obj <<
+/D [4696 0 R /XYZ 71.731 582.654 null]
+>> endobj
+4701 0 obj <<
+/D [4696 0 R /XYZ 71.731 572.692 null]
+>> endobj
+4702 0 obj <<
+/D [4696 0 R /XYZ 71.731 572.692 null]
+>> endobj
+4703 0 obj <<
+/D [4696 0 R /XYZ 71.731 561.784 null]
+>> endobj
+4704 0 obj <<
+/D [4696 0 R /XYZ 71.731 551.348 null]
 >> endobj
 4705 0 obj <<
-/D [4702 0 R /XYZ 71.731 615.48 null]
+/D [4696 0 R /XYZ 71.731 538.472 null]
 >> endobj
 4706 0 obj <<
-/D [4702 0 R /XYZ 71.731 582.654 null]
+/D [4696 0 R /XYZ 71.731 528.035 null]
 >> endobj
 4707 0 obj <<
-/D [4702 0 R /XYZ 71.731 572.692 null]
+/D [4696 0 R /XYZ 71.731 516.379 null]
 >> endobj
 4708 0 obj <<
-/D [4702 0 R /XYZ 71.731 572.692 null]
+/D [4696 0 R /XYZ 76.712 483.292 null]
 >> endobj
 4709 0 obj <<
-/D [4702 0 R /XYZ 71.731 561.784 null]
+/D [4696 0 R /XYZ 71.731 468.348 null]
 >> endobj
 4710 0 obj <<
-/D [4702 0 R /XYZ 71.731 551.348 null]
+/D [4696 0 R /XYZ 486.228 456.692 null]
 >> endobj
 4711 0 obj <<
-/D [4702 0 R /XYZ 71.731 538.472 null]
+/D [4696 0 R /XYZ 451.424 445.035 null]
 >> endobj
 4712 0 obj <<
-/D [4702 0 R /XYZ 71.731 528.035 null]
+/D [4696 0 R /XYZ 71.731 403.09 null]
 >> endobj
 4713 0 obj <<
-/D [4702 0 R /XYZ 71.731 516.379 null]
+/D [4696 0 R /XYZ 71.731 393.127 null]
 >> endobj
 4714 0 obj <<
-/D [4702 0 R /XYZ 76.712 483.292 null]
+/D [4696 0 R /XYZ 140.075 384.632 null]
+>> endobj
+1757 0 obj <<
+/D [4696 0 R /XYZ 71.731 324.627 null]
+>> endobj
+870 0 obj <<
+/D [4696 0 R /XYZ 275.663 279.373 null]
 >> endobj
 4715 0 obj <<
-/D [4702 0 R /XYZ 71.731 468.348 null]
+/D [4696 0 R /XYZ 71.731 279.157 null]
 >> endobj
 4716 0 obj <<
-/D [4702 0 R /XYZ 486.228 456.692 null]
+/D [4696 0 R /XYZ 71.731 260.587 null]
 >> endobj
 4717 0 obj <<
-/D [4702 0 R /XYZ 451.424 445.035 null]
+/D [4696 0 R /XYZ 71.731 209.594 null]
 >> endobj
 4718 0 obj <<
-/D [4702 0 R /XYZ 71.731 403.09 null]
+/D [4696 0 R /XYZ 71.731 184.523 null]
 >> endobj
 4719 0 obj <<
-/D [4702 0 R /XYZ 71.731 393.127 null]
+/D [4696 0 R /XYZ 188.024 173.729 null]
 >> endobj
 4720 0 obj <<
-/D [4702 0 R /XYZ 140.075 384.632 null]
->> endobj
-1757 0 obj <<
-/D [4702 0 R /XYZ 71.731 324.627 null]
->> endobj
-870 0 obj <<
-/D [4702 0 R /XYZ 275.663 279.373 null]
+/D [4696 0 R /XYZ 181.907 160.777 null]
 >> endobj
 4721 0 obj <<
-/D [4702 0 R /XYZ 71.731 279.157 null]
+/D [4696 0 R /XYZ 158.345 147.826 null]
 >> endobj
 4722 0 obj <<
-/D [4702 0 R /XYZ 71.731 260.587 null]
->> endobj
-4723 0 obj <<
-/D [4702 0 R /XYZ 71.731 209.594 null]
->> endobj
-4724 0 obj <<
-/D [4702 0 R /XYZ 71.731 184.523 null]
+/D [4696 0 R /XYZ 71.731 48.817 null]
 >> endobj
-4725 0 obj <<
-/D [4702 0 R /XYZ 188.024 173.729 null]
->> endobj
-4726 0 obj <<
-/D [4702 0 R /XYZ 181.907 160.777 null]
->> endobj
-4727 0 obj <<
-/D [4702 0 R /XYZ 158.345 147.826 null]
->> endobj
-4728 0 obj <<
-/D [4702 0 R /XYZ 71.731 48.817 null]
->> endobj
-4701 0 obj <<
+4695 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F44 1884 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4731 0 obj <<
+4725 0 obj <<
 /Length 647       
 /Filter /FlateDecode
 >>
@@ -17871,99 +17859,99 @@ xڽ
 �b�������d܉;�)�NӅ�a*.<n��W�K�x�^<,@���������E,�@���!�p+�G�Z���1�	q�bf��0f�П0+z��C��\F�ǩ%_����"�~�����/D���M+�mV����c߳�=���-�d-���}����q�B�cg�b����.���A6wɿ���gE��P
 }b���O���Vڔ�M!K���*
��S�VB�M@*��	ƕ(`Y��+�dM�
V9��r�b���k������o
&ƚҾ�9u�`S��ox�#,,�u�mW���7��=��V���Iø�Q�jġ1��C'��e7�38�t}��V8�:W��p��{w�:F�;�`>�Di�.�^�
�BB	2/�֘���L!^d����h�j�be�Y�o�wX (P7ZAY��h��WG�"�q��i�2Q�� r�%��+4��^{ǀ�P�"�ǘJ	���~fjk�B+�>����������K�{���t�̢�]s�R�k٭P���<d�&�K��tƿ0��滼����1�|ӿ�L<��������f�,D��|�ɤ�c>Ui|E�5����������V�����v�\d�3cz�={�ۅ��8e3EgM0{�v��
���6endstream
 endobj
-4730 0 obj <<
+4724 0 obj <<
 /Type /Page
-/Contents 4731 0 R
-/Resources 4729 0 R
+/Contents 4725 0 R
+/Resources 4723 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4700 0 R
+/Parent 4694 0 R
+>> endobj
+4726 0 obj <<
+/D [4724 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4727 0 obj <<
+/D [4724 0 R /XYZ 71.731 741.22 null]
+>> endobj
+4728 0 obj <<
+/D [4724 0 R /XYZ 71.731 718.306 null]
+>> endobj
+4729 0 obj <<
+/D [4724 0 R /XYZ 158.345 659.527 null]
+>> endobj
+4730 0 obj <<
+/D [4724 0 R /XYZ 71.731 618.68 null]
+>> endobj
+4731 0 obj <<
+/D [4724 0 R /XYZ 71.731 593.609 null]
 >> endobj
 4732 0 obj <<
-/D [4730 0 R /XYZ 71.731 729.265 null]
+/D [4724 0 R /XYZ 188.024 582.814 null]
 >> endobj
 4733 0 obj <<
-/D [4730 0 R /XYZ 71.731 741.22 null]
+/D [4724 0 R /XYZ 158.345 556.912 null]
 >> endobj
 4734 0 obj <<
-/D [4730 0 R /XYZ 71.731 718.306 null]
+/D [4724 0 R /XYZ 71.731 516.065 null]
 >> endobj
 4735 0 obj <<
-/D [4730 0 R /XYZ 158.345 659.527 null]
+/D [4724 0 R /XYZ 71.731 490.994 null]
 >> endobj
 4736 0 obj <<
-/D [4730 0 R /XYZ 71.731 618.68 null]
+/D [4724 0 R /XYZ 188.024 480.199 null]
 >> endobj
 4737 0 obj <<
-/D [4730 0 R /XYZ 71.731 593.609 null]
+/D [4724 0 R /XYZ 181.907 467.248 null]
 >> endobj
 4738 0 obj <<
-/D [4730 0 R /XYZ 188.024 582.814 null]
+/D [4724 0 R /XYZ 158.345 454.296 null]
 >> endobj
 4739 0 obj <<
-/D [4730 0 R /XYZ 158.345 556.912 null]
+/D [4724 0 R /XYZ 71.731 413.45 null]
 >> endobj
 4740 0 obj <<
-/D [4730 0 R /XYZ 71.731 516.065 null]
+/D [4724 0 R /XYZ 71.731 390.436 null]
 >> endobj
 4741 0 obj <<
-/D [4730 0 R /XYZ 71.731 490.994 null]
+/D [4724 0 R /XYZ 188.024 377.584 null]
 >> endobj
 4742 0 obj <<
-/D [4730 0 R /XYZ 188.024 480.199 null]
+/D [4724 0 R /XYZ 181.907 364.633 null]
 >> endobj
 4743 0 obj <<
-/D [4730 0 R /XYZ 181.907 467.248 null]
+/D [4724 0 R /XYZ 158.345 351.681 null]
 >> endobj
 4744 0 obj <<
-/D [4730 0 R /XYZ 158.345 454.296 null]
+/D [4724 0 R /XYZ 71.731 310.834 null]
 >> endobj
 4745 0 obj <<
-/D [4730 0 R /XYZ 71.731 413.45 null]
+/D [4724 0 R /XYZ 71.731 285.763 null]
 >> endobj
 4746 0 obj <<
-/D [4730 0 R /XYZ 71.731 390.436 null]
+/D [4724 0 R /XYZ 188.024 274.969 null]
 >> endobj
 4747 0 obj <<
-/D [4730 0 R /XYZ 188.024 377.584 null]
+/D [4724 0 R /XYZ 181.907 262.017 null]
 >> endobj
 4748 0 obj <<
-/D [4730 0 R /XYZ 181.907 364.633 null]
+/D [4724 0 R /XYZ 158.345 249.066 null]
 >> endobj
 4749 0 obj <<
-/D [4730 0 R /XYZ 158.345 351.681 null]
+/D [4724 0 R /XYZ 71.731 208.219 null]
 >> endobj
 4750 0 obj <<
-/D [4730 0 R /XYZ 71.731 310.834 null]
+/D [4724 0 R /XYZ 71.731 183.148 null]
 >> endobj
 4751 0 obj <<
-/D [4730 0 R /XYZ 71.731 285.763 null]
+/D [4724 0 R /XYZ 188.024 172.354 null]
 >> endobj
 4752 0 obj <<
-/D [4730 0 R /XYZ 188.024 274.969 null]
->> endobj
-4753 0 obj <<
-/D [4730 0 R /XYZ 181.907 262.017 null]
->> endobj
-4754 0 obj <<
-/D [4730 0 R /XYZ 158.345 249.066 null]
->> endobj
-4755 0 obj <<
-/D [4730 0 R /XYZ 71.731 208.219 null]
+/D [4724 0 R /XYZ 158.345 146.451 null]
 >> endobj
-4756 0 obj <<
-/D [4730 0 R /XYZ 71.731 183.148 null]
->> endobj
-4757 0 obj <<
-/D [4730 0 R /XYZ 188.024 172.354 null]
->> endobj
-4758 0 obj <<
-/D [4730 0 R /XYZ 158.345 146.451 null]
->> endobj
-4729 0 obj <<
+4723 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4761 0 obj <<
+4755 0 obj <<
 /Length 686       
 /Filter /FlateDecode
 >>
@@ -17971,102 +17959,102 @@ stream
 xڽVMo�@��+|\����?nIhh��E���6`e�-{Q}w���$-�`��7���"�C-�������FŠ�b-��ɀ�N��b�g|˹�?��la�!�߹��'�5�����H�8}�&C��M(���J�R�*�3���G��y3�=�������L*������lW��.�?[|sT=s��w"�pX��$f���X���������	���>CW_Z����f2�(\&A�\)UW6EIXF+��0������8N+�
�����XՐ�����_�5�R5�N�����Y�2}�A���p�G�u��ڦC"���	E�S�2�#��5.�s< X�5#�1��Z����\߫��(�F�y.S����?����2g���f���2ԨY��&%4�/���w��$>E�:s�a�&Tm��<�NY��,12>� ���%��ވ>T�L����S���T��a���dL��}2�T�O�G}�Gy+����Q���l��W�Bmm���L:z��u��c���%�ٜ ��r=��0���W�������2
 B4Sr���a�\Ч�mg���_�U����CUF���ս="h6��6���K���TE�87�DO��cR#�Ѐ7�J
��߿	���u�^��!Gw8�8�wY
J��.]�X���O�Iendstream
 endobj
-4760 0 obj <<
+4754 0 obj <<
 /Type /Page
-/Contents 4761 0 R
-/Resources 4759 0 R
+/Contents 4755 0 R
+/Resources 4753 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4700 0 R
+/Parent 4694 0 R
+>> endobj
+4756 0 obj <<
+/D [4754 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4757 0 obj <<
+/D [4754 0 R /XYZ 71.731 718.306 null]
+>> endobj
+4758 0 obj <<
+/D [4754 0 R /XYZ 158.345 659.527 null]
+>> endobj
+4759 0 obj <<
+/D [4754 0 R /XYZ 71.731 618.68 null]
+>> endobj
+4760 0 obj <<
+/D [4754 0 R /XYZ 71.731 593.609 null]
+>> endobj
+4761 0 obj <<
+/D [4754 0 R /XYZ 188.024 582.814 null]
 >> endobj
 4762 0 obj <<
-/D [4760 0 R /XYZ 71.731 729.265 null]
+/D [4754 0 R /XYZ 181.907 569.863 null]
 >> endobj
 4763 0 obj <<
-/D [4760 0 R /XYZ 71.731 718.306 null]
+/D [4754 0 R /XYZ 158.345 556.912 null]
 >> endobj
 4764 0 obj <<
-/D [4760 0 R /XYZ 158.345 659.527 null]
+/D [4754 0 R /XYZ 71.731 516.065 null]
 >> endobj
 4765 0 obj <<
-/D [4760 0 R /XYZ 71.731 618.68 null]
+/D [4754 0 R /XYZ 71.731 490.994 null]
 >> endobj
 4766 0 obj <<
-/D [4760 0 R /XYZ 71.731 593.609 null]
+/D [4754 0 R /XYZ 188.024 480.199 null]
 >> endobj
 4767 0 obj <<
-/D [4760 0 R /XYZ 188.024 582.814 null]
+/D [4754 0 R /XYZ 158.345 454.296 null]
 >> endobj
 4768 0 obj <<
-/D [4760 0 R /XYZ 181.907 569.863 null]
+/D [4754 0 R /XYZ 71.731 413.45 null]
 >> endobj
 4769 0 obj <<
-/D [4760 0 R /XYZ 158.345 556.912 null]
+/D [4754 0 R /XYZ 71.731 390.436 null]
 >> endobj
 4770 0 obj <<
-/D [4760 0 R /XYZ 71.731 516.065 null]
+/D [4754 0 R /XYZ 188.024 377.584 null]
 >> endobj
 4771 0 obj <<
-/D [4760 0 R /XYZ 71.731 490.994 null]
+/D [4754 0 R /XYZ 181.907 364.633 null]
 >> endobj
 4772 0 obj <<
-/D [4760 0 R /XYZ 188.024 480.199 null]
+/D [4754 0 R /XYZ 158.345 351.681 null]
+>> endobj
+1758 0 obj <<
+/D [4754 0 R /XYZ 71.731 310.834 null]
+>> endobj
+874 0 obj <<
+/D [4754 0 R /XYZ 252.009 265.58 null]
 >> endobj
 4773 0 obj <<
-/D [4760 0 R /XYZ 158.345 454.296 null]
+/D [4754 0 R /XYZ 71.731 253.409 null]
 >> endobj
 4774 0 obj <<
-/D [4760 0 R /XYZ 71.731 413.45 null]
+/D [4754 0 R /XYZ 71.731 233.959 null]
 >> endobj
 4775 0 obj <<
-/D [4760 0 R /XYZ 71.731 390.436 null]
+/D [4754 0 R /XYZ 188.024 221.107 null]
 >> endobj
 4776 0 obj <<
-/D [4760 0 R /XYZ 188.024 377.584 null]
+/D [4754 0 R /XYZ 182.306 208.155 null]
 >> endobj
 4777 0 obj <<
-/D [4760 0 R /XYZ 181.907 364.633 null]
+/D [4754 0 R /XYZ 158.345 195.204 null]
 >> endobj
 4778 0 obj <<
-/D [4760 0 R /XYZ 158.345 351.681 null]
->> endobj
-1758 0 obj <<
-/D [4760 0 R /XYZ 71.731 310.834 null]
->> endobj
-874 0 obj <<
-/D [4760 0 R /XYZ 252.009 265.58 null]
+/D [4754 0 R /XYZ 71.731 154.357 null]
 >> endobj
 4779 0 obj <<
-/D [4760 0 R /XYZ 71.731 253.409 null]
+/D [4754 0 R /XYZ 71.731 129.286 null]
 >> endobj
 4780 0 obj <<
-/D [4760 0 R /XYZ 71.731 233.959 null]
+/D [4754 0 R /XYZ 188.024 118.492 null]
 >> endobj
 4781 0 obj <<
-/D [4760 0 R /XYZ 188.024 221.107 null]
+/D [4754 0 R /XYZ 181.907 105.54 null]
 >> endobj
-4782 0 obj <<
-/D [4760 0 R /XYZ 182.306 208.155 null]
->> endobj
-4783 0 obj <<
-/D [4760 0 R /XYZ 158.345 195.204 null]
->> endobj
-4784 0 obj <<
-/D [4760 0 R /XYZ 71.731 154.357 null]
->> endobj
-4785 0 obj <<
-/D [4760 0 R /XYZ 71.731 129.286 null]
->> endobj
-4786 0 obj <<
-/D [4760 0 R /XYZ 188.024 118.492 null]
->> endobj
-4787 0 obj <<
-/D [4760 0 R /XYZ 181.907 105.54 null]
->> endobj
-4759 0 obj <<
+4753 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4790 0 obj <<
+4784 0 obj <<
 /Length 714       
 /Filter /FlateDecode
 >>
@@ -18076,81 +18064,81 @@ xڽ
 |�P�j�]��<�B�;݅)��j���u���P��=�̷p����_��T�23��Wr�US\����l6ΰ)c�M)R��EQ�6C�u�U:��/�x��&�N�7K_��l]/e	�ގ/ߏo`O<R����]��5K��m�5�B�e��`����?+��{ܷ���<Ӊ�<�~�wg?!N�*�!�
 J<������#��)�����c�endstream
 endobj
-4789 0 obj <<
+4783 0 obj <<
 /Type /Page
-/Contents 4790 0 R
-/Resources 4788 0 R
+/Contents 4784 0 R
+/Resources 4782 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4700 0 R
+/Parent 4694 0 R
+>> endobj
+4785 0 obj <<
+/D [4783 0 R /XYZ 71.731 729.265 null]
+>> endobj
+4786 0 obj <<
+/D [4783 0 R /XYZ 158.345 708.344 null]
+>> endobj
+4787 0 obj <<
+/D [4783 0 R /XYZ 71.731 667.497 null]
+>> endobj
+4788 0 obj <<
+/D [4783 0 R /XYZ 71.731 642.426 null]
+>> endobj
+4789 0 obj <<
+/D [4783 0 R /XYZ 188.024 631.631 null]
+>> endobj
+4790 0 obj <<
+/D [4783 0 R /XYZ 182.306 618.68 null]
 >> endobj
 4791 0 obj <<
-/D [4789 0 R /XYZ 71.731 729.265 null]
+/D [4783 0 R /XYZ 158.345 605.729 null]
 >> endobj
 4792 0 obj <<
-/D [4789 0 R /XYZ 158.345 708.344 null]
+/D [4783 0 R /XYZ 71.731 564.882 null]
 >> endobj
 4793 0 obj <<
-/D [4789 0 R /XYZ 71.731 667.497 null]
+/D [4783 0 R /XYZ 71.731 539.811 null]
 >> endobj
 4794 0 obj <<
-/D [4789 0 R /XYZ 71.731 642.426 null]
+/D [4783 0 R /XYZ 188.024 529.016 null]
 >> endobj
 4795 0 obj <<
-/D [4789 0 R /XYZ 188.024 631.631 null]
+/D [4783 0 R /XYZ 175.332 516.065 null]
 >> endobj
 4796 0 obj <<
-/D [4789 0 R /XYZ 182.306 618.68 null]
+/D [4783 0 R /XYZ 158.345 503.113 null]
 >> endobj
 4797 0 obj <<
-/D [4789 0 R /XYZ 158.345 605.729 null]
+/D [4783 0 R /XYZ 71.731 462.267 null]
 >> endobj
 4798 0 obj <<
-/D [4789 0 R /XYZ 71.731 564.882 null]
+/D [4783 0 R /XYZ 71.731 439.253 null]
 >> endobj
 4799 0 obj <<
-/D [4789 0 R /XYZ 71.731 539.811 null]
+/D [4783 0 R /XYZ 188.024 426.401 null]
 >> endobj
 4800 0 obj <<
-/D [4789 0 R /XYZ 188.024 529.016 null]
+/D [4783 0 R /XYZ 158.345 400.498 null]
 >> endobj
 4801 0 obj <<
-/D [4789 0 R /XYZ 175.332 516.065 null]
+/D [4783 0 R /XYZ 71.731 359.651 null]
 >> endobj
 4802 0 obj <<
-/D [4789 0 R /XYZ 158.345 503.113 null]
+/D [4783 0 R /XYZ 71.731 336.638 null]
 >> endobj
 4803 0 obj <<
-/D [4789 0 R /XYZ 71.731 462.267 null]
+/D [4783 0 R /XYZ 188.024 323.786 null]
 >> endobj
 4804 0 obj <<
-/D [4789 0 R /XYZ 71.731 439.253 null]
+/D [4783 0 R /XYZ 181.907 310.834 null]
 >> endobj
 4805 0 obj <<
-/D [4789 0 R /XYZ 188.024 426.401 null]
->> endobj
-4806 0 obj <<
-/D [4789 0 R /XYZ 158.345 400.498 null]
+/D [4783 0 R /XYZ 158.345 297.883 null]
 >> endobj
-4807 0 obj <<
-/D [4789 0 R /XYZ 71.731 359.651 null]
->> endobj
-4808 0 obj <<
-/D [4789 0 R /XYZ 71.731 336.638 null]
->> endobj
-4809 0 obj <<
-/D [4789 0 R /XYZ 188.024 323.786 null]
->> endobj
-4810 0 obj <<
-/D [4789 0 R /XYZ 181.907 310.834 null]
->> endobj
-4811 0 obj <<
-/D [4789 0 R /XYZ 158.345 297.883 null]
->> endobj
-4788 0 obj <<
+4782 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4814 0 obj <<
+4808 0 obj <<
 /Length 2688      
 /Filter /FlateDecode
 >>
@@ -18167,75 +18155,75 @@ $I=+1ʻ
 (�6�z	E	�b,y|7�,����T̋.�I��@T)F��jůk�~b*U4�MO��"V��1�.�U���Aڳ����?�,4o(Sx~A3�:`�C�W"a	P=�W&�rA�e��������fJrK�c��f����b��|x�Ny��t$��(�0j��噠vdR&�E��J��3'�}D�R����"J�G71��W�{\�f�ɯ"�=C�H���$�����@p\�O^v^�0jl�r|��8�i��=1��R ��"�0���B50/
 �o><��W��.����_�b7��o��|��'Ix��j���V�gȗ{�����endstream
 endobj
-4813 0 obj <<
+4807 0 obj <<
 /Type /Page
-/Contents 4814 0 R
-/Resources 4812 0 R
+/Contents 4808 0 R
+/Resources 4806 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4700 0 R
+/Parent 4694 0 R
 >> endobj
-4815 0 obj <<
-/D [4813 0 R /XYZ 71.731 729.265 null]
+4809 0 obj <<
+/D [4807 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1759 0 obj <<
-/D [4813 0 R /XYZ 71.731 718.306 null]
+/D [4807 0 R /XYZ 71.731 718.306 null]
 >> endobj
 878 0 obj <<
-/D [4813 0 R /XYZ 530.903 703.236 null]
+/D [4807 0 R /XYZ 530.903 703.236 null]
 >> endobj
-4816 0 obj <<
-/D [4813 0 R /XYZ 71.731 682.175 null]
+4810 0 obj <<
+/D [4807 0 R /XYZ 71.731 682.175 null]
 >> endobj
-4817 0 obj <<
-/D [4813 0 R /XYZ 71.731 672.06 null]
+4811 0 obj <<
+/D [4807 0 R /XYZ 71.731 672.06 null]
 >> endobj
-4818 0 obj <<
-/D [4813 0 R /XYZ 71.731 662.097 null]
+4812 0 obj <<
+/D [4807 0 R /XYZ 71.731 662.097 null]
 >> endobj
 1760 0 obj <<
-/D [4813 0 R /XYZ 71.731 638.283 null]
+/D [4807 0 R /XYZ 71.731 638.283 null]
 >> endobj
 882 0 obj <<
-/D [4813 0 R /XYZ 168.205 594.97 null]
+/D [4807 0 R /XYZ 168.205 594.97 null]
 >> endobj
-4819 0 obj <<
-/D [4813 0 R /XYZ 71.731 586.147 null]
+4813 0 obj <<
+/D [4807 0 R /XYZ 71.731 586.147 null]
 >> endobj
-4820 0 obj <<
-/D [4813 0 R /XYZ 71.731 527.418 null]
+4814 0 obj <<
+/D [4807 0 R /XYZ 71.731 527.418 null]
 >> endobj
-4821 0 obj <<
-/D [4813 0 R /XYZ 71.731 485.64 null]
+4815 0 obj <<
+/D [4807 0 R /XYZ 71.731 485.64 null]
 >> endobj
 1761 0 obj <<
-/D [4813 0 R /XYZ 71.731 415.902 null]
+/D [4807 0 R /XYZ 71.731 415.902 null]
 >> endobj
 886 0 obj <<
-/D [4813 0 R /XYZ 312.796 370.747 null]
+/D [4807 0 R /XYZ 312.796 370.747 null]
 >> endobj
-4822 0 obj <<
-/D [4813 0 R /XYZ 71.731 358.576 null]
+4816 0 obj <<
+/D [4807 0 R /XYZ 71.731 358.576 null]
 >> endobj
-4823 0 obj <<
-/D [4813 0 R /XYZ 71.731 316.147 null]
+4817 0 obj <<
+/D [4807 0 R /XYZ 71.731 316.147 null]
 >> endobj
-4824 0 obj <<
-/D [4813 0 R /XYZ 71.731 285.262 null]
+4818 0 obj <<
+/D [4807 0 R /XYZ 71.731 285.262 null]
 >> endobj
-4825 0 obj <<
-/D [4813 0 R /XYZ 71.731 202.573 null]
+4819 0 obj <<
+/D [4807 0 R /XYZ 71.731 202.573 null]
 >> endobj
-4826 0 obj <<
-/D [4813 0 R /XYZ 71.731 171.688 null]
+4820 0 obj <<
+/D [4807 0 R /XYZ 71.731 171.688 null]
 >> endobj
-4827 0 obj <<
-/D [4813 0 R /XYZ 71.731 140.804 null]
+4821 0 obj <<
+/D [4807 0 R /XYZ 71.731 140.804 null]
 >> endobj
-4812 0 obj <<
+4806 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4830 0 obj <<
+4824 0 obj <<
 /Length 3081      
 /Filter /FlateDecode
 >>
@@ -18254,54 +18242,54 @@ G&
 h�k���'��4�8=,�b?�l�j}�d�;��dI���*$���`��H������.w@(�-�&�~[acA��1��c�Tl`wc{?��i���;º����6q��O8�閪�w-;�*�U��g�C|_q�K���jU���oq}<8�Ův�<�/Ǔqi�5����
$!,���f��YPWT~(���."��iu�,��6�(;V1U��Ɂ
 �R�^p�y�|bw�U�9%݅�pw �N�����B��z��B�0k��K�̫�ci��<�^��j��j�~.��|	�ȭ��p�ڨҵ ��|���Dx�t LM5�gWo@1(�n��p+'n���05Ճ0'o_�vy���ׇ�,�~)�V����9�:4��yD�2r_�~�2���x����L���h�Oo���\��6B�]eϞ%���$�a��H���D~X��b o������������幢d+�I�w"2�e�71\�.�+-���w�f����@U�SV�<���X&)�_3�*=V�u�&N�)���پj&�H�]D����k��/�`�+!�=����[;i&�-��'N���;�7�(t����9�)�V����h�ֳ���ς4������Z1m��gE����!A�p����_�?��3�endstream
 endobj
-4829 0 obj <<
+4823 0 obj <<
 /Type /Page
-/Contents 4830 0 R
-/Resources 4828 0 R
+/Contents 4824 0 R
+/Resources 4822 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4839 0 R
+/Parent 4833 0 R
 >> endobj
-4831 0 obj <<
-/D [4829 0 R /XYZ 71.731 729.265 null]
+4825 0 obj <<
+/D [4823 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4832 0 obj <<
-/D [4829 0 R /XYZ 71.731 662.351 null]
+4826 0 obj <<
+/D [4823 0 R /XYZ 71.731 662.351 null]
 >> endobj
-4833 0 obj <<
-/D [4829 0 R /XYZ 71.731 592.613 null]
+4827 0 obj <<
+/D [4823 0 R /XYZ 71.731 592.613 null]
 >> endobj
 1762 0 obj <<
-/D [4829 0 R /XYZ 71.731 535.826 null]
+/D [4823 0 R /XYZ 71.731 535.826 null]
 >> endobj
 890 0 obj <<
-/D [4829 0 R /XYZ 237.066 492.728 null]
+/D [4823 0 R /XYZ 237.066 492.728 null]
 >> endobj
-4834 0 obj <<
-/D [4829 0 R /XYZ 71.731 480.29 null]
+4828 0 obj <<
+/D [4823 0 R /XYZ 71.731 480.29 null]
 >> endobj
-4835 0 obj <<
-/D [4829 0 R /XYZ 71.731 401.331 null]
+4829 0 obj <<
+/D [4823 0 R /XYZ 71.731 401.331 null]
 >> endobj
 1763 0 obj <<
-/D [4829 0 R /XYZ 71.731 381.341 null]
+/D [4823 0 R /XYZ 71.731 381.341 null]
 >> endobj
 894 0 obj <<
-/D [4829 0 R /XYZ 254.178 338.244 null]
+/D [4823 0 R /XYZ 254.178 338.244 null]
 >> endobj
-4836 0 obj <<
-/D [4829 0 R /XYZ 71.731 325.806 null]
+4830 0 obj <<
+/D [4823 0 R /XYZ 71.731 325.806 null]
 >> endobj
-4837 0 obj <<
-/D [4829 0 R /XYZ 71.731 231.838 null]
+4831 0 obj <<
+/D [4823 0 R /XYZ 71.731 231.838 null]
 >> endobj
-4838 0 obj <<
-/D [4829 0 R /XYZ 71.731 200.953 null]
+4832 0 obj <<
+/D [4823 0 R /XYZ 71.731 200.953 null]
 >> endobj
-4828 0 obj <<
+4822 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4842 0 obj <<
+4836 0 obj <<
 /Length 3186      
 /Filter /FlateDecode
 >>
@@ -18316,126 +18304,126 @@ pnGƒ
 O�}KcZ����E`��(oh���[��ذ�׀����RW�-J$����a�b���b�b�ޟ����P۪ܔL�QYQe��B�q����B����x�������g��e�*��2�H��t�Lf�,�����X��Z�r���\�16gg�F�RZ<:�w��?l��&g��O�/���M������L�(��x%�
 $�m��2P&{�;�c��&��L�J/O�|���ʾ��5CV�K�~%�i"��nANu0�KT���Fҭy�"��3�(
n��E���z,Q+�Ghu��J�
�5Y�	K��B��"�r�����X�l�=+0�>��)�%$�Џ�p�Y0K�Ȁ �~Y<�)�ǧ�B{��b��e_p��F:��"��A8�6�-�1��n�0j��ũ��@�y����!��������|/?���ծ���b2I�G`0��a��"D������܀�_�Nש���Ƶ�ߌa�+��g0��=+��+��0l�����O�D�©�Eo�ы��|)#ЌN�UYI�aN@�H��1r��X/&��Xo)~&y�ڐ�/�����W~Y3pV�:�Ǖ-�X�C�v�|�@4��O$�/d���8�~ S�'��ң�)������endstream
 endobj
-4841 0 obj <<
+4835 0 obj <<
 /Type /Page
-/Contents 4842 0 R
-/Resources 4840 0 R
+/Contents 4836 0 R
+/Resources 4834 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4839 0 R
+/Parent 4833 0 R
 >> endobj
-4843 0 obj <<
-/D [4841 0 R /XYZ 71.731 729.265 null]
+4837 0 obj <<
+/D [4835 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4844 0 obj <<
-/D [4841 0 R /XYZ 71.731 741.22 null]
+4838 0 obj <<
+/D [4835 0 R /XYZ 71.731 741.22 null]
 >> endobj
-4845 0 obj <<
-/D [4841 0 R /XYZ 71.731 718.306 null]
+4839 0 obj <<
+/D [4835 0 R /XYZ 71.731 718.306 null]
 >> endobj
 1764 0 obj <<
-/D [4841 0 R /XYZ 71.731 688.254 null]
+/D [4835 0 R /XYZ 71.731 688.254 null]
 >> endobj
 898 0 obj <<
-/D [4841 0 R /XYZ 201.827 645.157 null]
+/D [4835 0 R /XYZ 201.827 645.157 null]
+>> endobj
+4840 0 obj <<
+/D [4835 0 R /XYZ 71.731 636.334 null]
+>> endobj
+4841 0 obj <<
+/D [4835 0 R /XYZ 71.731 582.586 null]
+>> endobj
+4842 0 obj <<
+/D [4835 0 R /XYZ 71.731 577.605 null]
+>> endobj
+4843 0 obj <<
+/D [4835 0 R /XYZ 89.664 556.848 null]
+>> endobj
+4844 0 obj <<
+/D [4835 0 R /XYZ 71.731 528.788 null]
+>> endobj
+4845 0 obj <<
+/D [4835 0 R /XYZ 89.664 513.012 null]
 >> endobj
 4846 0 obj <<
-/D [4841 0 R /XYZ 71.731 636.334 null]
+/D [4835 0 R /XYZ 71.731 485.326 null]
 >> endobj
 4847 0 obj <<
-/D [4841 0 R /XYZ 71.731 582.586 null]
+/D [4835 0 R /XYZ 89.664 469.177 null]
 >> endobj
 4848 0 obj <<
-/D [4841 0 R /XYZ 71.731 577.605 null]
+/D [4835 0 R /XYZ 71.731 467.02 null]
 >> endobj
 4849 0 obj <<
-/D [4841 0 R /XYZ 89.664 556.848 null]
+/D [4835 0 R /XYZ 89.664 451.244 null]
 >> endobj
 4850 0 obj <<
-/D [4841 0 R /XYZ 71.731 528.788 null]
+/D [4835 0 R /XYZ 71.731 449.087 null]
 >> endobj
 4851 0 obj <<
-/D [4841 0 R /XYZ 89.664 513.012 null]
+/D [4835 0 R /XYZ 89.664 433.311 null]
 >> endobj
 4852 0 obj <<
-/D [4841 0 R /XYZ 71.731 485.326 null]
+/D [4835 0 R /XYZ 71.731 431.154 null]
 >> endobj
 4853 0 obj <<
-/D [4841 0 R /XYZ 89.664 469.177 null]
+/D [4835 0 R /XYZ 89.664 415.378 null]
 >> endobj
 4854 0 obj <<
-/D [4841 0 R /XYZ 71.731 467.02 null]
+/D [4835 0 R /XYZ 71.731 400.987 null]
 >> endobj
 4855 0 obj <<
-/D [4841 0 R /XYZ 89.664 451.244 null]
+/D [4835 0 R /XYZ 89.664 384.494 null]
 >> endobj
 4856 0 obj <<
-/D [4841 0 R /XYZ 71.731 449.087 null]
+/D [4835 0 R /XYZ 71.731 371.443 null]
 >> endobj
 4857 0 obj <<
-/D [4841 0 R /XYZ 89.664 433.311 null]
+/D [4835 0 R /XYZ 89.664 353.61 null]
 >> endobj
 4858 0 obj <<
-/D [4841 0 R /XYZ 71.731 431.154 null]
+/D [4835 0 R /XYZ 71.731 351.453 null]
 >> endobj
 4859 0 obj <<
-/D [4841 0 R /XYZ 89.664 415.378 null]
+/D [4835 0 R /XYZ 89.664 335.677 null]
 >> endobj
 4860 0 obj <<
-/D [4841 0 R /XYZ 71.731 400.987 null]
+/D [4835 0 R /XYZ 71.731 294.666 null]
 >> endobj
 4861 0 obj <<
-/D [4841 0 R /XYZ 89.664 384.494 null]
+/D [4835 0 R /XYZ 89.664 278.89 null]
 >> endobj
 4862 0 obj <<
-/D [4841 0 R /XYZ 71.731 371.443 null]
+/D [4835 0 R /XYZ 71.731 237.879 null]
 >> endobj
 4863 0 obj <<
-/D [4841 0 R /XYZ 89.664 353.61 null]
+/D [4835 0 R /XYZ 89.664 222.103 null]
 >> endobj
 4864 0 obj <<
-/D [4841 0 R /XYZ 71.731 351.453 null]
+/D [4835 0 R /XYZ 71.731 206.995 null]
 >> endobj
 4865 0 obj <<
-/D [4841 0 R /XYZ 89.664 335.677 null]
+/D [4835 0 R /XYZ 89.664 191.219 null]
 >> endobj
 4866 0 obj <<
-/D [4841 0 R /XYZ 71.731 294.666 null]
+/D [4835 0 R /XYZ 71.731 176.111 null]
 >> endobj
 4867 0 obj <<
-/D [4841 0 R /XYZ 89.664 278.89 null]
+/D [4835 0 R /XYZ 89.664 160.335 null]
 >> endobj
 4868 0 obj <<
-/D [4841 0 R /XYZ 71.731 237.879 null]
+/D [4835 0 R /XYZ 71.731 158.178 null]
 >> endobj
 4869 0 obj <<
-/D [4841 0 R /XYZ 89.664 222.103 null]
+/D [4835 0 R /XYZ 89.664 142.402 null]
 >> endobj
 4870 0 obj <<
-/D [4841 0 R /XYZ 71.731 206.995 null]
->> endobj
-4871 0 obj <<
-/D [4841 0 R /XYZ 89.664 191.219 null]
->> endobj
-4872 0 obj <<
-/D [4841 0 R /XYZ 71.731 176.111 null]
->> endobj
-4873 0 obj <<
-/D [4841 0 R /XYZ 89.664 160.335 null]
->> endobj
-4874 0 obj <<
-/D [4841 0 R /XYZ 71.731 158.178 null]
+/D [4835 0 R /XYZ 71.731 135.264 null]
 >> endobj
-4875 0 obj <<
-/D [4841 0 R /XYZ 89.664 142.402 null]
->> endobj
-4876 0 obj <<
-/D [4841 0 R /XYZ 71.731 135.264 null]
->> endobj
-4840 0 obj <<
+4834 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4879 0 obj <<
+4873 0 obj <<
 /Length 2664      
 /Filter /FlateDecode
 >>
@@ -18451,63 +18439,63 @@ Dip
 h�3n�e�{�&CAQ;�p������'J ���=�J�!����Cƙ�q�Sm�?~�$}<r�����N�'͉�{��i<�n�A$!�:PE�^S^-�`*�0��EA
�n��.�g������tɔ�3��0���A㡱�D�h�rRfEYe/�uF��.��y©	[�8��x�w��z��a���" ����JZP	���{X����\J�b�P�wa�����MK��f-�:����J�S� �.{�*���ɟ�)4�$�Ie����R@2�%e��.�?��6��&�[�kV��R�f�՘n��<_��R$��ޛ�G��T=��~X��e��$�E��fܔҘ�1������0����G���
��
�����P#���coF	���S	�H%��;�V"�P�:*|̑{	f�,�܊{� ��{q���k<��g@�oW���� M��<�z�i�6Wѩ1�YF7;O}��6��B�l�|u=��>��?�/��C|����,�O?U=ݐɐ����}+�[=�|F`���#Yc2F��1��#�*$�VX~"Į�q�����t
�u�\,3����(�CļW;>��R��l�����x�@� +<4�C���+�ъ,�+�V�FN7$TY}c{v��������I��z/��n�e�we7p>���P�{I�*z��1�_)3���<Q���;)iCˇkL�qWF���ƴ���,ҕ���/�'�$/R� �s�1��%���:肞�;+������O�zz�Bm��kSZ�p@.��~�r��#W�<el�G�8��W�܋}^��zU�3�~�?��_�F��!Ʀ�˳q�t�	��f�U7����;����
�U�B�_��E��~,�*����7P��_��璘ߞP�3'��Q�p`�2�#���"��*#��j�~�����Uv!�BOt��#:�E"�& @,�K
 �,�U_DY-F/����e/[�;Q*ޞe�dvbG�"�/�n��߽�c��s���˱��8�i���g����Qc��(��e-,-�������I�z��hxth��Ź�e�7{����3W�s6t�Mѵ^��*��&Ŧ����xb���8���6ީ4g��}�W�۽���B�endstream
 endobj
-4878 0 obj <<
+4872 0 obj <<
 /Type /Page
-/Contents 4879 0 R
-/Resources 4877 0 R
+/Contents 4873 0 R
+/Resources 4871 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4839 0 R
+/Parent 4833 0 R
 >> endobj
-4880 0 obj <<
-/D [4878 0 R /XYZ 71.731 729.265 null]
+4874 0 obj <<
+/D [4872 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4881 0 obj <<
-/D [4878 0 R /XYZ 71.731 646.476 null]
+4875 0 obj <<
+/D [4872 0 R /XYZ 71.731 646.476 null]
 >> endobj
-4882 0 obj <<
-/D [4878 0 R /XYZ 71.731 561.729 null]
+4876 0 obj <<
+/D [4872 0 R /XYZ 71.731 561.729 null]
 >> endobj
 1765 0 obj <<
-/D [4878 0 R /XYZ 71.731 530.844 null]
+/D [4872 0 R /XYZ 71.731 530.844 null]
 >> endobj
 902 0 obj <<
-/D [4878 0 R /XYZ 279.296 487.747 null]
+/D [4872 0 R /XYZ 279.296 487.747 null]
 >> endobj
-4883 0 obj <<
-/D [4878 0 R /XYZ 71.731 475.309 null]
+4877 0 obj <<
+/D [4872 0 R /XYZ 71.731 475.309 null]
 >> endobj
-4884 0 obj <<
-/D [4878 0 R /XYZ 71.731 433.147 null]
+4878 0 obj <<
+/D [4872 0 R /XYZ 71.731 433.147 null]
 >> endobj
-4885 0 obj <<
-/D [4878 0 R /XYZ 71.731 365.466 null]
+4879 0 obj <<
+/D [4872 0 R /XYZ 71.731 365.466 null]
 >> endobj
 1766 0 obj <<
-/D [4878 0 R /XYZ 71.731 321.63 null]
+/D [4872 0 R /XYZ 71.731 321.63 null]
 >> endobj
 906 0 obj <<
-/D [4878 0 R /XYZ 303.224 276.475 null]
+/D [4872 0 R /XYZ 303.224 276.475 null]
 >> endobj
-4886 0 obj <<
-/D [4878 0 R /XYZ 71.731 267.652 null]
+4880 0 obj <<
+/D [4872 0 R /XYZ 71.731 267.652 null]
 >> endobj
-4887 0 obj <<
-/D [4878 0 R /XYZ 71.731 221.875 null]
+4881 0 obj <<
+/D [4872 0 R /XYZ 71.731 221.875 null]
 >> endobj
 1767 0 obj <<
-/D [4878 0 R /XYZ 71.731 178.039 null]
+/D [4872 0 R /XYZ 71.731 178.039 null]
 >> endobj
 910 0 obj <<
-/D [4878 0 R /XYZ 394.793 134.942 null]
+/D [4872 0 R /XYZ 394.793 134.942 null]
 >> endobj
-4888 0 obj <<
-/D [4878 0 R /XYZ 71.731 122.504 null]
+4882 0 obj <<
+/D [4872 0 R /XYZ 71.731 122.504 null]
 >> endobj
-4877 0 obj <<
+4871 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4891 0 obj <<
+4885 0 obj <<
 /Length 2503      
 /Filter /FlateDecode
 >>
@@ -18520,72 +18508,72 @@ xڍY[
 ��[�E*�Z.���a:��)�J��C}�-�.�P \�]LO�s�^u�*~G=�U�[Rh��k5�&%�S#iyír'���,cJ�j5N��������^H�䀢��2�F<�c��<͑�
 ���TiH�\�p��cl����l�,?��Y-�G9����x�3c�0T���	��O�օ�(3�������*���+�E���dp*;<><�]�'���$�h�%"���~�z�>�l�?}b�����?�o*0�q���[7��r�	D����|�m���+���#0�Wu��t��3Pl��F�#t{D���8�ܦ�@�F�6-u�����/���N
���y`mw�]4�hY=�~��p[�7���\#P@_X`�/�C��W�G�m�ga�ſ�M,wtK��⽕B�}����{]��0�endstream
 endobj
-4890 0 obj <<
+4884 0 obj <<
 /Type /Page
-/Contents 4891 0 R
-/Resources 4889 0 R
+/Contents 4885 0 R
+/Resources 4883 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4839 0 R
+/Parent 4833 0 R
 >> endobj
-4892 0 obj <<
-/D [4890 0 R /XYZ 71.731 729.265 null]
+4886 0 obj <<
+/D [4884 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4893 0 obj <<
-/D [4890 0 R /XYZ 71.731 675.303 null]
+4887 0 obj <<
+/D [4884 0 R /XYZ 71.731 675.303 null]
 >> endobj
 1768 0 obj <<
-/D [4890 0 R /XYZ 71.731 631.467 null]
+/D [4884 0 R /XYZ 71.731 631.467 null]
 >> endobj
 914 0 obj <<
-/D [4890 0 R /XYZ 182.287 588.37 null]
+/D [4884 0 R /XYZ 182.287 588.37 null]
 >> endobj
-4894 0 obj <<
-/D [4890 0 R /XYZ 71.731 579.547 null]
+4888 0 obj <<
+/D [4884 0 R /XYZ 71.731 579.547 null]
 >> endobj
 1769 0 obj <<
-/D [4890 0 R /XYZ 71.731 494.915 null]
+/D [4884 0 R /XYZ 71.731 494.915 null]
 >> endobj
 918 0 obj <<
-/D [4890 0 R /XYZ 188.364 451.818 null]
+/D [4884 0 R /XYZ 188.364 451.818 null]
 >> endobj
-4895 0 obj <<
-/D [4890 0 R /XYZ 71.731 442.995 null]
+4889 0 obj <<
+/D [4884 0 R /XYZ 71.731 442.995 null]
 >> endobj
 1770 0 obj <<
-/D [4890 0 R /XYZ 71.731 384.266 null]
+/D [4884 0 R /XYZ 71.731 384.266 null]
 >> endobj
 922 0 obj <<
-/D [4890 0 R /XYZ 365.182 341.169 null]
+/D [4884 0 R /XYZ 365.182 341.169 null]
 >> endobj
-4896 0 obj <<
-/D [4890 0 R /XYZ 71.731 332.346 null]
+4890 0 obj <<
+/D [4884 0 R /XYZ 71.731 332.346 null]
 >> endobj
-4897 0 obj <<
-/D [4890 0 R /XYZ 179.356 293.707 null]
+4891 0 obj <<
+/D [4884 0 R /XYZ 179.356 293.707 null]
 >> endobj
-4898 0 obj <<
-/D [4890 0 R /XYZ 71.731 286.568 null]
+4892 0 obj <<
+/D [4884 0 R /XYZ 71.731 286.568 null]
 >> endobj
 1771 0 obj <<
-/D [4890 0 R /XYZ 71.731 216.83 null]
+/D [4884 0 R /XYZ 71.731 216.83 null]
 >> endobj
 926 0 obj <<
-/D [4890 0 R /XYZ 433.251 173.732 null]
+/D [4884 0 R /XYZ 433.251 173.732 null]
 >> endobj
-4899 0 obj <<
-/D [4890 0 R /XYZ 71.731 161.561 null]
+4893 0 obj <<
+/D [4884 0 R /XYZ 71.731 161.561 null]
 >> endobj
-4900 0 obj <<
-/D [4890 0 R /XYZ 71.731 137.065 null]
+4894 0 obj <<
+/D [4884 0 R /XYZ 71.731 137.065 null]
 >> endobj
-4901 0 obj <<
-/D [4890 0 R /XYZ 71.731 127.102 null]
+4895 0 obj <<
+/D [4884 0 R /XYZ 71.731 127.102 null]
 >> endobj
-4889 0 obj <<
+4883 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R /F23 1105 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4904 0 obj <<
+4898 0 obj <<
 /Length 789       
 /Filter /FlateDecode
 >>
@@ -18596,27 +18584,27 @@ xڕUQo
 GN���p<�n�1&l�/��><!zx���Fݣs%n�^�z��J�#m"���^;j���`�x�Q\CQ�KYo"���@�Bfr��D�X��g�Al���Ѯ���;#6�B��P��4Y�
��i#EGj��סs��Zp:��j+��q�F6gTٵ5
 ��½�ᛰ�p�	��le�+"�^�{T^Is�#1q�jM���_��G�Z�Ҡ<�|��BZ�<*�kB��lT?S��su�]�$O��s���[�ݍp��Q��������Lc��8T��Q�v���|��endstream
 endobj
-4903 0 obj <<
+4897 0 obj <<
 /Type /Page
-/Contents 4904 0 R
-/Resources 4902 0 R
+/Contents 4898 0 R
+/Resources 4896 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4839 0 R
+/Parent 4833 0 R
 >> endobj
-4905 0 obj <<
-/D [4903 0 R /XYZ 71.731 729.265 null]
+4899 0 obj <<
+/D [4897 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4906 0 obj <<
-/D [4903 0 R /XYZ 71.731 689.765 null]
+4900 0 obj <<
+/D [4897 0 R /XYZ 71.731 689.765 null]
 >> endobj
-4907 0 obj <<
-/D [4903 0 R /XYZ 71.731 647.771 null]
+4901 0 obj <<
+/D [4897 0 R /XYZ 71.731 647.771 null]
 >> endobj
-4902 0 obj <<
+4896 0 obj <<
 /Font << /F33 1210 0 R /F27 1112 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4910 0 obj <<
+4904 0 obj <<
 /Length 1875      
 /Filter /FlateDecode
 >>
@@ -18629,188 +18617,188 @@ W
 zĵߩr{��*m/I05�bOj ��]X}�!cz?VT��V�.	T�����8*�(n��c�zky�/����+,��S|�p9��r�cH��b��:���Y�O
Y�c��O1@;h�,ɓg7�u�����1O���_� ��_\�i,*v�x�A
 \ƥ��q�.�j<_�XzWyendstream
 endobj
-4909 0 obj <<
+4903 0 obj <<
 /Type /Page
-/Contents 4910 0 R
-/Resources 4908 0 R
+/Contents 4904 0 R
+/Resources 4902 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4839 0 R
-/Annots [ 4956 0 R ]
+/Parent 4833 0 R
+/Annots [ 4950 0 R ]
 >> endobj
-4956 0 obj <<
+4950 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [375.699 134.004 435.474 142.915]
 /Subtype /Link
 /A << /S /GoTo /D (http-apache) >>
 >> endobj
-4911 0 obj <<
-/D [4909 0 R /XYZ 71.731 729.265 null]
+4905 0 obj <<
+/D [4903 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1772 0 obj <<
-/D [4909 0 R /XYZ 71.731 718.306 null]
+/D [4903 0 R /XYZ 71.731 718.306 null]
 >> endobj
 930 0 obj <<
-/D [4909 0 R /XYZ 160.355 703.236 null]
+/D [4903 0 R /XYZ 160.355 703.236 null]
 >> endobj
-4912 0 obj <<
-/D [4909 0 R /XYZ 71.731 692.504 null]
+4906 0 obj <<
+/D [4903 0 R /XYZ 71.731 692.504 null]
 >> endobj
 934 0 obj <<
-/D [4909 0 R /XYZ 208.364 644.101 null]
+/D [4903 0 R /XYZ 208.364 644.101 null]
 >> endobj
-3413 0 obj <<
-/D [4909 0 R /XYZ 71.731 629.175 null]
+3408 0 obj <<
+/D [4903 0 R /XYZ 71.731 629.175 null]
 >> endobj
 938 0 obj <<
-/D [4909 0 R /XYZ 117.14 620.82 null]
+/D [4903 0 R /XYZ 117.14 620.82 null]
+>> endobj
+4907 0 obj <<
+/D [4903 0 R /XYZ 71.731 615.714 null]
+>> endobj
+4908 0 obj <<
+/D [4903 0 R /XYZ 71.731 610.733 null]
+>> endobj
+4909 0 obj <<
+/D [4903 0 R /XYZ 118.328 584.955 null]
+>> endobj
+4910 0 obj <<
+/D [4903 0 R /XYZ 296.214 572.003 null]
+>> endobj
+4911 0 obj <<
+/D [4903 0 R /XYZ 71.731 536.138 null]
+>> endobj
+942 0 obj <<
+/D [4903 0 R /XYZ 86.646 483.825 null]
+>> endobj
+4912 0 obj <<
+/D [4903 0 R /XYZ 71.731 473.496 null]
+>> endobj
+946 0 obj <<
+/D [4903 0 R /XYZ 107.616 460.544 null]
 >> endobj
 4913 0 obj <<
-/D [4909 0 R /XYZ 71.731 615.714 null]
+/D [4903 0 R /XYZ 71.731 453.501 null]
 >> endobj
 4914 0 obj <<
-/D [4909 0 R /XYZ 71.731 610.733 null]
+/D [4903 0 R /XYZ 71.731 448.519 null]
 >> endobj
 4915 0 obj <<
-/D [4909 0 R /XYZ 118.328 584.955 null]
+/D [4903 0 R /XYZ 256.795 411.727 null]
 >> endobj
 4916 0 obj <<
-/D [4909 0 R /XYZ 296.214 572.003 null]
+/D [4903 0 R /XYZ 392.166 411.727 null]
 >> endobj
 4917 0 obj <<
-/D [4909 0 R /XYZ 71.731 536.138 null]
->> endobj
-942 0 obj <<
-/D [4909 0 R /XYZ 86.646 483.825 null]
+/D [4903 0 R /XYZ 71.731 409.57 null]
 >> endobj
 4918 0 obj <<
-/D [4909 0 R /XYZ 71.731 473.496 null]
+/D [4903 0 R /XYZ 71.731 395.623 null]
 >> endobj
-946 0 obj <<
-/D [4909 0 R /XYZ 107.616 460.544 null]
+950 0 obj <<
+/D [4903 0 R /XYZ 320.85 382.238 null]
 >> endobj
 4919 0 obj <<
-/D [4909 0 R /XYZ 71.731 453.501 null]
+/D [4903 0 R /XYZ 71.731 369.615 null]
 >> endobj
 4920 0 obj <<
-/D [4909 0 R /XYZ 71.731 448.519 null]
+/D [4903 0 R /XYZ 71.731 369.615 null]
 >> endobj
 4921 0 obj <<
-/D [4909 0 R /XYZ 256.795 411.727 null]
+/D [4903 0 R /XYZ 71.731 369.615 null]
 >> endobj
 4922 0 obj <<
-/D [4909 0 R /XYZ 392.166 411.727 null]
+/D [4903 0 R /XYZ 71.731 357.916 null]
 >> endobj
 4923 0 obj <<
-/D [4909 0 R /XYZ 71.731 409.57 null]
+/D [4903 0 R /XYZ 111.582 341.391 null]
 >> endobj
 4924 0 obj <<
-/D [4909 0 R /XYZ 71.731 395.623 null]
->> endobj
-950 0 obj <<
-/D [4909 0 R /XYZ 320.85 382.238 null]
+/D [4903 0 R /XYZ 71.731 329.271 null]
 >> endobj
 4925 0 obj <<
-/D [4909 0 R /XYZ 71.731 369.615 null]
+/D [4903 0 R /XYZ 71.731 329.271 null]
 >> endobj
 4926 0 obj <<
-/D [4909 0 R /XYZ 71.731 369.615 null]
+/D [4903 0 R /XYZ 71.731 329.271 null]
 >> endobj
 4927 0 obj <<
-/D [4909 0 R /XYZ 71.731 369.615 null]
+/D [4903 0 R /XYZ 71.731 317.069 null]
 >> endobj
 4928 0 obj <<
-/D [4909 0 R /XYZ 71.731 357.916 null]
+/D [4903 0 R /XYZ 71.731 317.069 null]
 >> endobj
 4929 0 obj <<
-/D [4909 0 R /XYZ 111.582 341.391 null]
+/D [4903 0 R /XYZ 71.731 317.069 null]
 >> endobj
 4930 0 obj <<
-/D [4909 0 R /XYZ 71.731 329.271 null]
+/D [4903 0 R /XYZ 71.731 304.118 null]
 >> endobj
 4931 0 obj <<
-/D [4909 0 R /XYZ 71.731 329.271 null]
+/D [4903 0 R /XYZ 111.582 287.593 null]
 >> endobj
 4932 0 obj <<
-/D [4909 0 R /XYZ 71.731 329.271 null]
+/D [4903 0 R /XYZ 326.852 274.641 null]
 >> endobj
 4933 0 obj <<
-/D [4909 0 R /XYZ 71.731 317.069 null]
+/D [4903 0 R /XYZ 71.731 262.522 null]
 >> endobj
 4934 0 obj <<
-/D [4909 0 R /XYZ 71.731 317.069 null]
+/D [4903 0 R /XYZ 71.731 262.522 null]
 >> endobj
 4935 0 obj <<
-/D [4909 0 R /XYZ 71.731 317.069 null]
+/D [4903 0 R /XYZ 71.731 262.522 null]
 >> endobj
 4936 0 obj <<
-/D [4909 0 R /XYZ 71.731 304.118 null]
+/D [4903 0 R /XYZ 71.731 250.319 null]
 >> endobj
 4937 0 obj <<
-/D [4909 0 R /XYZ 111.582 287.593 null]
+/D [4903 0 R /XYZ 111.582 233.794 null]
 >> endobj
 4938 0 obj <<
-/D [4909 0 R /XYZ 326.852 274.641 null]
+/D [4903 0 R /XYZ 352.018 233.794 null]
 >> endobj
 4939 0 obj <<
-/D [4909 0 R /XYZ 71.731 262.522 null]
+/D [4903 0 R /XYZ 135.374 220.843 null]
 >> endobj
 4940 0 obj <<
-/D [4909 0 R /XYZ 71.731 262.522 null]
+/D [4903 0 R /XYZ 224.983 220.843 null]
 >> endobj
 4941 0 obj <<
-/D [4909 0 R /XYZ 71.731 262.522 null]
+/D [4903 0 R /XYZ 297.992 220.843 null]
 >> endobj
 4942 0 obj <<
-/D [4909 0 R /XYZ 71.731 250.319 null]
+/D [4903 0 R /XYZ 419.728 220.843 null]
 >> endobj
 4943 0 obj <<
-/D [4909 0 R /XYZ 111.582 233.794 null]
+/D [4903 0 R /XYZ 111.582 207.892 null]
 >> endobj
 4944 0 obj <<
-/D [4909 0 R /XYZ 352.018 233.794 null]
+/D [4903 0 R /XYZ 71.731 196.521 null]
 >> endobj
 4945 0 obj <<
-/D [4909 0 R /XYZ 135.374 220.843 null]
+/D [4903 0 R /XYZ 71.731 196.521 null]
 >> endobj
 4946 0 obj <<
-/D [4909 0 R /XYZ 224.983 220.843 null]
+/D [4903 0 R /XYZ 71.731 196.521 null]
 >> endobj
 4947 0 obj <<
-/D [4909 0 R /XYZ 297.992 220.843 null]
+/D [4903 0 R /XYZ 71.731 183.57 null]
 >> endobj
 4948 0 obj <<
-/D [4909 0 R /XYZ 419.728 220.843 null]
+/D [4903 0 R /XYZ 111.582 167.045 null]
 >> endobj
 4949 0 obj <<
-/D [4909 0 R /XYZ 111.582 207.892 null]
->> endobj
-4950 0 obj <<
-/D [4909 0 R /XYZ 71.731 196.521 null]
+/D [4903 0 R /XYZ 71.731 146.955 null]
 >> endobj
 4951 0 obj <<
-/D [4909 0 R /XYZ 71.731 196.521 null]
->> endobj
-4952 0 obj <<
-/D [4909 0 R /XYZ 71.731 196.521 null]
+/D [4903 0 R /XYZ 71.731 113.246 null]
 >> endobj
-4953 0 obj <<
-/D [4909 0 R /XYZ 71.731 183.57 null]
->> endobj
-4954 0 obj <<
-/D [4909 0 R /XYZ 111.582 167.045 null]
->> endobj
-4955 0 obj <<
-/D [4909 0 R /XYZ 71.731 146.955 null]
->> endobj
-4957 0 obj <<
-/D [4909 0 R /XYZ 71.731 113.246 null]
->> endobj
-4908 0 obj <<
+4902 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F32 1119 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4960 0 obj <<
+4954 0 obj <<
 /Length 1473      
 /Filter /FlateDecode
 >>
@@ -18822,144 +18810,144 @@ xڕWM
 �#�Ϭ�u��z�C�a���;�m������䋆�'�=>�����FFw_��p����܄�,�,\����e���IBfhxg��ٴ��B�~�WLB���w@��#Q�M���b5�Qh��X���%;�CK�d3�e���

 �kB�%v�d]�f����v�\��R'7��{JS����i�?��3a#MN�F���I�׵�Gရ�[K�G�N�Z�!�2P�,��4�8��~A���bl��C��>#������<M��ɾ���Lxw��d�H���ɞ�?w�?
������*~���w��#���݌���N��|�n��.qZ�a����JQ�Q�X�%�W��>���@�
�_��NM�� �%%j���g���U����6��z�V@�ܞ�@	=.�Y�)6ޱ������33����،=+6��	
?"�f�0.l���v���o�N�X��
�ˋI����K)�96A$�Ȟ�?f_���a�eendstream
 endobj
-4959 0 obj <<
+4953 0 obj <<
 /Type /Page
-/Contents 4960 0 R
-/Resources 4958 0 R
+/Contents 4954 0 R
+/Resources 4952 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4990 0 R
+/Parent 4984 0 R
 >> endobj
-4961 0 obj <<
-/D [4959 0 R /XYZ 71.731 729.265 null]
+4955 0 obj <<
+/D [4953 0 R /XYZ 71.731 729.265 null]
 >> endobj
 954 0 obj <<
-/D [4959 0 R /XYZ 86.646 703.68 null]
+/D [4953 0 R /XYZ 86.646 703.68 null]
 >> endobj
-4962 0 obj <<
-/D [4959 0 R /XYZ 71.731 693.351 null]
+4956 0 obj <<
+/D [4953 0 R /XYZ 71.731 693.351 null]
 >> endobj
 958 0 obj <<
-/D [4959 0 R /XYZ 91.098 680.4 null]
+/D [4953 0 R /XYZ 91.098 680.4 null]
 >> endobj
-4963 0 obj <<
-/D [4959 0 R /XYZ 71.731 673.202 null]
+4957 0 obj <<
+/D [4953 0 R /XYZ 71.731 673.202 null]
 >> endobj
-4964 0 obj <<
-/D [4959 0 R /XYZ 71.731 668.22 null]
+4958 0 obj <<
+/D [4953 0 R /XYZ 71.731 668.22 null]
 >> endobj
-4965 0 obj <<
-/D [4959 0 R /XYZ 101.865 657.485 null]
+4959 0 obj <<
+/D [4953 0 R /XYZ 101.865 657.485 null]
 >> endobj
-4966 0 obj <<
-/D [4959 0 R /XYZ 236.362 644.534 null]
+4960 0 obj <<
+/D [4953 0 R /XYZ 236.362 644.534 null]
 >> endobj
-4967 0 obj <<
-/D [4959 0 R /XYZ 284.401 644.534 null]
+4961 0 obj <<
+/D [4953 0 R /XYZ 284.401 644.534 null]
 >> endobj
-4968 0 obj <<
-/D [4959 0 R /XYZ 71.731 619.129 null]
+4962 0 obj <<
+/D [4953 0 R /XYZ 71.731 619.129 null]
 >> endobj
 962 0 obj <<
-/D [4959 0 R /XYZ 131.506 606.178 null]
+/D [4953 0 R /XYZ 131.506 606.178 null]
 >> endobj
-4969 0 obj <<
-/D [4959 0 R /XYZ 71.731 598.98 null]
+4963 0 obj <<
+/D [4953 0 R /XYZ 71.731 598.98 null]
 >> endobj
-4970 0 obj <<
-/D [4959 0 R /XYZ 71.731 593.999 null]
+4964 0 obj <<
+/D [4953 0 R /XYZ 71.731 593.999 null]
 >> endobj
 1888 0 obj <<
-/D [4959 0 R /XYZ 71.731 544.908 null]
+/D [4953 0 R /XYZ 71.731 544.908 null]
 >> endobj
 966 0 obj <<
-/D [4959 0 R /XYZ 109.927 531.956 null]
+/D [4953 0 R /XYZ 109.927 531.956 null]
 >> endobj
-4971 0 obj <<
-/D [4959 0 R /XYZ 71.731 524.758 null]
+4965 0 obj <<
+/D [4953 0 R /XYZ 71.731 524.758 null]
 >> endobj
-4972 0 obj <<
-/D [4959 0 R /XYZ 71.731 519.777 null]
+4966 0 obj <<
+/D [4953 0 R /XYZ 71.731 519.777 null]
 >> endobj
-4973 0 obj <<
-/D [4959 0 R /XYZ 71.731 486.128 null]
+4967 0 obj <<
+/D [4953 0 R /XYZ 71.731 486.128 null]
 >> endobj
 970 0 obj <<
-/D [4959 0 R /XYZ 86.646 433.815 null]
+/D [4953 0 R /XYZ 86.646 433.815 null]
 >> endobj
 1950 0 obj <<
-/D [4959 0 R /XYZ 71.731 423.228 null]
+/D [4953 0 R /XYZ 71.731 423.228 null]
 >> endobj
 974 0 obj <<
-/D [4959 0 R /XYZ 202.589 410.535 null]
+/D [4953 0 R /XYZ 202.589 410.535 null]
 >> endobj
-4974 0 obj <<
-/D [4959 0 R /XYZ 71.731 403.491 null]
+4968 0 obj <<
+/D [4953 0 R /XYZ 71.731 403.491 null]
 >> endobj
-4975 0 obj <<
-/D [4959 0 R /XYZ 71.731 398.51 null]
+4969 0 obj <<
+/D [4953 0 R /XYZ 71.731 398.51 null]
 >> endobj
-4976 0 obj <<
-/D [4959 0 R /XYZ 71.731 398.51 null]
+4970 0 obj <<
+/D [4953 0 R /XYZ 71.731 398.51 null]
 >> endobj
-4977 0 obj <<
-/D [4959 0 R /XYZ 257.363 374.669 null]
+4971 0 obj <<
+/D [4953 0 R /XYZ 257.363 374.669 null]
 >> endobj
-4978 0 obj <<
-/D [4959 0 R /XYZ 71.731 349.264 null]
+4972 0 obj <<
+/D [4953 0 R /XYZ 71.731 349.264 null]
 >> endobj
 978 0 obj <<
-/D [4959 0 R /XYZ 127.073 336.313 null]
+/D [4953 0 R /XYZ 127.073 336.313 null]
 >> endobj
-4979 0 obj <<
-/D [4959 0 R /XYZ 71.731 329.269 null]
+4973 0 obj <<
+/D [4953 0 R /XYZ 71.731 329.269 null]
 >> endobj
-4980 0 obj <<
-/D [4959 0 R /XYZ 71.731 324.288 null]
+4974 0 obj <<
+/D [4953 0 R /XYZ 71.731 324.288 null]
 >> endobj
 2539 0 obj <<
-/D [4959 0 R /XYZ 71.731 262.091 null]
+/D [4953 0 R /XYZ 71.731 262.091 null]
 >> endobj
 982 0 obj <<
-/D [4959 0 R /XYZ 248.655 249.14 null]
+/D [4953 0 R /XYZ 248.655 249.14 null]
 >> endobj
-4981 0 obj <<
-/D [4959 0 R /XYZ 71.731 242.096 null]
+4975 0 obj <<
+/D [4953 0 R /XYZ 71.731 242.096 null]
 >> endobj
-4982 0 obj <<
-/D [4959 0 R /XYZ 71.731 237.115 null]
+4976 0 obj <<
+/D [4953 0 R /XYZ 71.731 237.115 null]
 >> endobj
-4983 0 obj <<
-/D [4959 0 R /XYZ 71.731 237.115 null]
+4977 0 obj <<
+/D [4953 0 R /XYZ 71.731 237.115 null]
 >> endobj
-4984 0 obj <<
-/D [4959 0 R /XYZ 180.012 226.226 null]
+4978 0 obj <<
+/D [4953 0 R /XYZ 180.012 226.226 null]
 >> endobj
-4985 0 obj <<
-/D [4959 0 R /XYZ 118.495 213.274 null]
+4979 0 obj <<
+/D [4953 0 R /XYZ 118.495 213.274 null]
 >> endobj
 2415 0 obj <<
-/D [4959 0 R /XYZ 71.731 187.87 null]
+/D [4953 0 R /XYZ 71.731 187.87 null]
 >> endobj
-4986 0 obj <<
-/D [4959 0 R /XYZ 71.731 187.87 null]
+4980 0 obj <<
+/D [4953 0 R /XYZ 71.731 187.87 null]
 >> endobj
 986 0 obj <<
-/D [4959 0 R /XYZ 109.39 174.918 null]
+/D [4953 0 R /XYZ 109.39 174.918 null]
 >> endobj
-4987 0 obj <<
-/D [4959 0 R /XYZ 71.731 169.757 null]
+4981 0 obj <<
+/D [4953 0 R /XYZ 71.731 169.757 null]
 >> endobj
-4988 0 obj <<
-/D [4959 0 R /XYZ 71.731 164.776 null]
+4982 0 obj <<
+/D [4953 0 R /XYZ 71.731 164.776 null]
 >> endobj
-4989 0 obj <<
-/D [4959 0 R /XYZ 109.568 153.299 null]
+4983 0 obj <<
+/D [4953 0 R /XYZ 109.568 153.299 null]
 >> endobj
-4958 0 obj <<
+4952 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F33 1210 0 R /F57 2335 0 R /F35 1437 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-4993 0 obj <<
+4987 0 obj <<
 /Length 1535      
 /Filter /FlateDecode
 >>
@@ -18970,125 +18958,125 @@ YQx
 ͈�o;Ѻ�u��2������Jn�4�"�o������n��<,r�����r�)�u<�<�Ɯ',p������`�M���<��魻��z�9��K<�{�'��#��0�g���G�����
��G)����.#���g��3W<Ð=膱3�:�z���h@c� r8~��aYNFR��i4��50��Ѥ#
 ���7"{hU�=���xli��2�v�r�D���V���\�aK�$���)RX:��?��N�!�5��ƣ��B�$ѴcE'0�H5��\dY��ޚG�?�q7���LkP~�_5TH���^U�i�V�B\���
�77S6�E�.S���̫��V-�@�Y�b �� F��x�h�!�{����#H&�>��� N�x���'f�*)o�.s,�,u/#�Åcxf�$I��T�?zm��r�wendstream
 endobj
-4992 0 obj <<
+4986 0 obj <<
 /Type /Page
-/Contents 4993 0 R
-/Resources 4991 0 R
+/Contents 4987 0 R
+/Resources 4985 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4990 0 R
-/Annots [ 5007 0 R ]
+/Parent 4984 0 R
+/Annots [ 5001 0 R ]
 >> endobj
-5007 0 obj <<
+5001 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [221.059 393.303 273.526 401.497]
 /Subtype /Link
 /A << /S /GoTo /D (security-webserver-mod-throttle) >>
 >> endobj
-4994 0 obj <<
-/D [4992 0 R /XYZ 71.731 729.265 null]
+4988 0 obj <<
+/D [4986 0 R /XYZ 71.731 729.265 null]
 >> endobj
-4995 0 obj <<
-/D [4992 0 R /XYZ 71.731 741.22 null]
+4989 0 obj <<
+/D [4986 0 R /XYZ 71.731 741.22 null]
 >> endobj
-4996 0 obj <<
-/D [4992 0 R /XYZ 524.797 708.344 null]
+4990 0 obj <<
+/D [4986 0 R /XYZ 524.797 708.344 null]
 >> endobj
-4997 0 obj <<
-/D [4992 0 R /XYZ 71.731 691.243 null]
+4991 0 obj <<
+/D [4986 0 R /XYZ 71.731 691.243 null]
 >> endobj
-4998 0 obj <<
-/D [4992 0 R /XYZ 195.191 681.743 null]
+4992 0 obj <<
+/D [4986 0 R /XYZ 195.191 681.743 null]
 >> endobj
-4999 0 obj <<
-/D [4992 0 R /XYZ 71.731 606.326 null]
+4993 0 obj <<
+/D [4986 0 R /XYZ 71.731 606.326 null]
 >> endobj
 990 0 obj <<
-/D [4992 0 R /XYZ 86.646 554.013 null]
+/D [4986 0 R /XYZ 86.646 554.013 null]
 >> endobj
 3301 0 obj <<
-/D [4992 0 R /XYZ 71.731 543.684 null]
+/D [4986 0 R /XYZ 71.731 543.684 null]
 >> endobj
 994 0 obj <<
-/D [4992 0 R /XYZ 109.927 530.733 null]
+/D [4986 0 R /XYZ 109.927 530.733 null]
 >> endobj
-5000 0 obj <<
-/D [4992 0 R /XYZ 71.731 525.627 null]
+4994 0 obj <<
+/D [4986 0 R /XYZ 71.731 525.627 null]
 >> endobj
-5001 0 obj <<
-/D [4992 0 R /XYZ 71.731 520.646 null]
+4995 0 obj <<
+/D [4986 0 R /XYZ 71.731 520.646 null]
 >> endobj
-5002 0 obj <<
-/D [4992 0 R /XYZ 408.876 494.867 null]
+4996 0 obj <<
+/D [4986 0 R /XYZ 408.876 494.867 null]
 >> endobj
-5003 0 obj <<
-/D [4992 0 R /XYZ 91.656 481.916 null]
+4997 0 obj <<
+/D [4986 0 R /XYZ 91.656 481.916 null]
 >> endobj
-3443 0 obj <<
-/D [4992 0 R /XYZ 71.731 456.511 null]
+3437 0 obj <<
+/D [4986 0 R /XYZ 71.731 456.511 null]
 >> endobj
 998 0 obj <<
-/D [4992 0 R /XYZ 126.336 443.56 null]
+/D [4986 0 R /XYZ 126.336 443.56 null]
 >> endobj
-5004 0 obj <<
-/D [4992 0 R /XYZ 71.731 438.454 null]
+4998 0 obj <<
+/D [4986 0 R /XYZ 71.731 438.454 null]
 >> endobj
-5005 0 obj <<
-/D [4992 0 R /XYZ 71.731 433.473 null]
+4999 0 obj <<
+/D [4986 0 R /XYZ 71.731 433.473 null]
 >> endobj
-5006 0 obj <<
-/D [4992 0 R /XYZ 91.656 394.743 null]
+5000 0 obj <<
+/D [4986 0 R /XYZ 91.656 394.743 null]
 >> endobj
-5008 0 obj <<
-/D [4992 0 R /XYZ 71.731 345.926 null]
+5002 0 obj <<
+/D [4986 0 R /XYZ 71.731 345.926 null]
 >> endobj
 1002 0 obj <<
-/D [4992 0 R /XYZ 87.803 293.613 null]
+/D [4986 0 R /XYZ 87.803 293.613 null]
 >> endobj
-5009 0 obj <<
-/D [4992 0 R /XYZ 71.731 283.026 null]
+5003 0 obj <<
+/D [4986 0 R /XYZ 71.731 283.026 null]
 >> endobj
 1006 0 obj <<
-/D [4992 0 R /XYZ 106.959 270.332 null]
+/D [4986 0 R /XYZ 106.959 270.332 null]
 >> endobj
-5010 0 obj <<
-/D [4992 0 R /XYZ 71.731 263.289 null]
+5004 0 obj <<
+/D [4986 0 R /XYZ 71.731 263.289 null]
 >> endobj
-5011 0 obj <<
-/D [4992 0 R /XYZ 71.731 258.307 null]
+5005 0 obj <<
+/D [4986 0 R /XYZ 71.731 258.307 null]
 >> endobj
-5012 0 obj <<
-/D [4992 0 R /XYZ 135.305 247.418 null]
+5006 0 obj <<
+/D [4986 0 R /XYZ 135.305 247.418 null]
 >> endobj
-5013 0 obj <<
-/D [4992 0 R /XYZ 477.105 234.467 null]
+5007 0 obj <<
+/D [4986 0 R /XYZ 477.105 234.467 null]
 >> endobj
-5014 0 obj <<
-/D [4992 0 R /XYZ 91.656 221.515 null]
+5008 0 obj <<
+/D [4986 0 R /XYZ 91.656 221.515 null]
 >> endobj
-5015 0 obj <<
-/D [4992 0 R /XYZ 71.731 198.601 null]
+5009 0 obj <<
+/D [4986 0 R /XYZ 71.731 198.601 null]
 >> endobj
 1010 0 obj <<
-/D [4992 0 R /XYZ 83.217 146.288 null]
+/D [4986 0 R /XYZ 83.217 146.288 null]
 >> endobj
-5016 0 obj <<
-/D [4992 0 R /XYZ 71.731 135.701 null]
+5010 0 obj <<
+/D [4986 0 R /XYZ 71.731 135.701 null]
 >> endobj
 1014 0 obj <<
-/D [4992 0 R /XYZ 121.773 123.008 null]
+/D [4986 0 R /XYZ 121.773 123.008 null]
 >> endobj
-5017 0 obj <<
-/D [4992 0 R /XYZ 71.731 115.964 null]
+5011 0 obj <<
+/D [4986 0 R /XYZ 71.731 115.964 null]
 >> endobj
-5018 0 obj <<
-/D [4992 0 R /XYZ 71.731 110.983 null]
+5012 0 obj <<
+/D [4986 0 R /XYZ 71.731 110.983 null]
 >> endobj
-4991 0 obj <<
+4985 0 obj <<
 /Font << /F27 1112 0 R /F23 1105 0 R /F44 1884 0 R /F35 1437 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-5021 0 obj <<
+5015 0 obj <<
 /Length 1470      
 /Filter /FlateDecode
 >>
@@ -19102,153 +19090,153 @@ N3
 <
6�a�׮�`h�Ԇ�Wm����?��T���� M���6I�\$��;���~��_�#XM�툧ߛ�G�jO�A��͞'v_���1��k���<�+������7iW,��Рpk�+G_�}*�����q��+�́�fZ9#,�/۔�4�s�,����?���WJw�'��o�*9�y�	��n����x�e��eg��2OcS`,\h���Z
��+G�u��n��Xo��,Uohz�Ze3“�%���EM�M�`(:^0&l"<K	����pG��+F���4��9$6���0��{���|r���n����>LGu��Α�7
.�e�k��٨5!Γ��1
޾Z��xs������.�X.7�/�ljYvF	��o<�;a����o�A��\�nn�Nw��w�|��N��('i0��+\��fյ;ש]�`$l0'��"ӷ�v�*�%�^o;����t�5������x��xB�Hu�6���&�l6(=�/����?�f�[����~����/��h����ouq���,�Eef����
 FJ��3[8����{�_���7Wݩ���P
����#�	�^�qF2��LgG1?�L�R���s1W�T\��O�����tendstream
 endobj
-5020 0 obj <<
+5014 0 obj <<
 /Type /Page
-/Contents 5021 0 R
-/Resources 5019 0 R
+/Contents 5015 0 R
+/Resources 5013 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4990 0 R
-/Annots [ 5032 0 R 5048 0 R ]
+/Parent 4984 0 R
+/Annots [ 5026 0 R 5042 0 R ]
 >> endobj
-5032 0 obj <<
+5026 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [222.931 515.525 255.658 524.436]
 /Subtype /Link
 /A << /S /GoTo /D (gloss-rdbms) >>
 >> endobj
-5048 0 obj <<
+5042 0 obj <<
 /Type /Annot
 /Border[0 0 0]/H/I/C[1 0 0]
 /Rect [342.364 375.052 387.195 383.963]
 /Subtype /Link
 /A << /S /GoTo /D (security-mysql) >>
 >> endobj
-5022 0 obj <<
-/D [5020 0 R /XYZ 71.731 729.265 null]
+5016 0 obj <<
+/D [5014 0 R /XYZ 71.731 729.265 null]
 >> endobj
 1018 0 obj <<
-/D [5020 0 R /XYZ 88.939 651.05 null]
+/D [5014 0 R /XYZ 88.939 651.05 null]
 >> endobj
-4409 0 obj <<
-/D [5020 0 R /XYZ 71.731 640.72 null]
+4403 0 obj <<
+/D [5014 0 R /XYZ 71.731 640.72 null]
 >> endobj
 1022 0 obj <<
-/D [5020 0 R /XYZ 193.573 627.769 null]
+/D [5014 0 R /XYZ 193.573 627.769 null]
+>> endobj
+5017 0 obj <<
+/D [5014 0 R /XYZ 71.731 620.571 null]
+>> endobj
+5018 0 obj <<
+/D [5014 0 R /XYZ 71.731 615.59 null]
+>> endobj
+5019 0 obj <<
+/D [5014 0 R /XYZ 91.656 591.903 null]
+>> endobj
+5020 0 obj <<
+/D [5014 0 R /XYZ 438.655 591.903 null]
+>> endobj
+5021 0 obj <<
+/D [5014 0 R /XYZ 322.568 578.952 null]
+>> endobj
+5022 0 obj <<
+/D [5014 0 R /XYZ 447.32 578.952 null]
 >> endobj
 5023 0 obj <<
-/D [5020 0 R /XYZ 71.731 620.571 null]
+/D [5014 0 R /XYZ 71.731 553.547 null]
+>> endobj
+1026 0 obj <<
+/D [5014 0 R /XYZ 106.052 540.596 null]
 >> endobj
 5024 0 obj <<
-/D [5020 0 R /XYZ 71.731 615.59 null]
+/D [5014 0 R /XYZ 71.731 533.552 null]
 >> endobj
 5025 0 obj <<
-/D [5020 0 R /XYZ 91.656 591.903 null]
->> endobj
-5026 0 obj <<
-/D [5020 0 R /XYZ 438.655 591.903 null]
+/D [5014 0 R /XYZ 71.731 528.571 null]
 >> endobj
 5027 0 obj <<
-/D [5020 0 R /XYZ 322.568 578.952 null]
+/D [5014 0 R /XYZ 444.255 517.682 null]
 >> endobj
 5028 0 obj <<
-/D [5020 0 R /XYZ 447.32 578.952 null]
+/D [5014 0 R /XYZ 71.731 502.573 null]
 >> endobj
 5029 0 obj <<
-/D [5020 0 R /XYZ 71.731 553.547 null]
->> endobj
-1026 0 obj <<
-/D [5020 0 R /XYZ 106.052 540.596 null]
+/D [5014 0 R /XYZ 71.731 487.629 null]
 >> endobj
 5030 0 obj <<
-/D [5020 0 R /XYZ 71.731 533.552 null]
+/D [5014 0 R /XYZ 71.731 487.629 null]
 >> endobj
 5031 0 obj <<
-/D [5020 0 R /XYZ 71.731 528.571 null]
+/D [5014 0 R /XYZ 71.731 474.678 null]
+>> endobj
+5032 0 obj <<
+/D [5014 0 R /XYZ 111.582 458.902 null]
 >> endobj
 5033 0 obj <<
-/D [5020 0 R /XYZ 444.255 517.682 null]
+/D [5014 0 R /XYZ 71.731 446.783 null]
 >> endobj
 5034 0 obj <<
-/D [5020 0 R /XYZ 71.731 502.573 null]
+/D [5014 0 R /XYZ 71.731 446.783 null]
 >> endobj
 5035 0 obj <<
-/D [5020 0 R /XYZ 71.731 487.629 null]
+/D [5014 0 R /XYZ 71.731 433.831 null]
 >> endobj
 5036 0 obj <<
-/D [5020 0 R /XYZ 71.731 487.629 null]
+/D [5014 0 R /XYZ 111.582 418.055 null]
 >> endobj
 5037 0 obj <<
-/D [5020 0 R /XYZ 71.731 474.678 null]
+/D [5014 0 R /XYZ 315.276 418.055 null]
 >> endobj
 5038 0 obj <<
-/D [5020 0 R /XYZ 111.582 458.902 null]
+/D [5014 0 R /XYZ 71.731 405.936 null]
 >> endobj
 5039 0 obj <<
-/D [5020 0 R /XYZ 71.731 446.783 null]
+/D [5014 0 R /XYZ 71.731 405.936 null]
 >> endobj
 5040 0 obj <<
-/D [5020 0 R /XYZ 71.731 446.783 null]
+/D [5014 0 R /XYZ 71.731 392.984 null]
 >> endobj
 5041 0 obj <<
-/D [5020 0 R /XYZ 71.731 433.831 null]
->> endobj
-5042 0 obj <<
-/D [5020 0 R /XYZ 111.582 418.055 null]
+/D [5014 0 R /XYZ 111.582 377.208 null]
 >> endobj
 5043 0 obj <<
-/D [5020 0 R /XYZ 315.276 418.055 null]
->> endobj
-5044 0 obj <<
-/D [5020 0 R /XYZ 71.731 405.936 null]
->> endobj
-5045 0 obj <<
-/D [5020 0 R /XYZ 71.731 405.936 null]
->> endobj
-5046 0 obj <<
-/D [5020 0 R /XYZ 71.731 392.984 null]
->> endobj
-5047 0 obj <<
-/D [5020 0 R /XYZ 111.582 377.208 null]
->> endobj
-5049 0 obj <<
-/D [5020 0 R /XYZ 71.731 354.294 null]
+/D [5014 0 R /XYZ 71.731 354.294 null]
 >> endobj
 1030 0 obj <<
-/D [5020 0 R /XYZ 85.51 301.982 null]
+/D [5014 0 R /XYZ 85.51 301.982 null]
 >> endobj
 2476 0 obj <<
-/D [5020 0 R /XYZ 71.731 291.652 null]
+/D [5014 0 R /XYZ 71.731 291.652 null]
 >> endobj
 1034 0 obj <<
-/D [5020 0 R /XYZ 176.696 278.701 null]
+/D [5014 0 R /XYZ 176.696 278.701 null]
 >> endobj
-5050 0 obj <<
-/D [5020 0 R /XYZ 71.731 271.503 null]
+5044 0 obj <<
+/D [5014 0 R /XYZ 71.731 271.503 null]
 >> endobj
-5051 0 obj <<
-/D [5020 0 R /XYZ 71.731 266.522 null]
+5045 0 obj <<
+/D [5014 0 R /XYZ 71.731 266.522 null]
 >> endobj
-5052 0 obj <<
-/D [5020 0 R /XYZ 71.731 266.522 null]
+5046 0 obj <<
+/D [5014 0 R /XYZ 71.731 266.522 null]
 >> endobj
 2835 0 obj <<
-/D [5020 0 R /XYZ 71.731 230.382 null]
+/D [5014 0 R /XYZ 71.731 230.382 null]
 >> endobj
 1038 0 obj <<
-/D [5020 0 R /XYZ 109.17 217.431 null]
+/D [5014 0 R /XYZ 109.17 217.431 null]
 >> endobj
-5053 0 obj <<
-/D [5020 0 R /XYZ 71.731 212.325 null]
+5047 0 obj <<
+/D [5014 0 R /XYZ 71.731 212.325 null]
 >> endobj
-5054 0 obj <<
-/D [5020 0 R /XYZ 71.731 207.344 null]
+5048 0 obj <<
+/D [5014 0 R /XYZ 71.731 207.344 null]
 >> endobj
-5019 0 obj <<
+5013 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F35 1437 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-5058 0 obj <<
+5052 0 obj <<
 /Length 1292      
 /Filter /FlateDecode
 >>
@@ -19264,123 +19252,123 @@ $U7
 �:y��|«
 �w��o" 㜼�q�X����ӈ�P�iK�t��{RXFRwȇ�"�%�<9�Q 6;v��'=����F?ǰ�
})I�|z��֏�����=��W+����}�X�D����}NJ���`DI�~ij������hR�endstream
 endobj
-5057 0 obj <<
+5051 0 obj <<
 /Type /Page
-/Contents 5058 0 R
-/Resources 5056 0 R
+/Contents 5052 0 R
+/Resources 5050 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4990 0 R
+/Parent 4984 0 R
 >> endobj
-5059 0 obj <<
-/D [5057 0 R /XYZ 71.731 729.265 null]
+5053 0 obj <<
+/D [5051 0 R /XYZ 71.731 729.265 null]
 >> endobj
-5060 0 obj <<
-/D [5057 0 R /XYZ 71.731 718.306 null]
+5054 0 obj <<
+/D [5051 0 R /XYZ 71.731 718.306 null]
 >> endobj
 1042 0 obj <<
-/D [5057 0 R /XYZ 90.261 708.344 null]
+/D [5051 0 R /XYZ 90.261 708.344 null]
 >> endobj
-5061 0 obj <<
-/D [5057 0 R /XYZ 71.731 703.238 null]
+5055 0 obj <<
+/D [5051 0 R /XYZ 71.731 703.238 null]
 >> endobj
-5062 0 obj <<
-/D [5057 0 R /XYZ 71.731 698.257 null]
+5056 0 obj <<
+/D [5051 0 R /XYZ 71.731 698.257 null]
 >> endobj
-5063 0 obj <<
-/D [5057 0 R /XYZ 134.824 659.527 null]
+5057 0 obj <<
+/D [5051 0 R /XYZ 134.824 659.527 null]
 >> endobj
-5064 0 obj <<
-/D [5057 0 R /XYZ 71.731 636.613 null]
+5058 0 obj <<
+/D [5051 0 R /XYZ 71.731 636.613 null]
 >> endobj
 1046 0 obj <<
-/D [5057 0 R /XYZ 87.803 584.3 null]
+/D [5051 0 R /XYZ 87.803 584.3 null]
 >> endobj
-5065 0 obj <<
-/D [5057 0 R /XYZ 71.731 572.897 null]
+5059 0 obj <<
+/D [5051 0 R /XYZ 71.731 572.897 null]
 >> endobj
 1050 0 obj <<
-/D [5057 0 R /XYZ 86.675 561.019 null]
+/D [5051 0 R /XYZ 86.675 561.019 null]
 >> endobj
-5066 0 obj <<
-/D [5057 0 R /XYZ 71.731 555.52 null]
+5060 0 obj <<
+/D [5051 0 R /XYZ 71.731 555.52 null]
 >> endobj
-5067 0 obj <<
-/D [5057 0 R /XYZ 71.731 550.539 null]
+5061 0 obj <<
+/D [5051 0 R /XYZ 71.731 550.539 null]
 >> endobj
-5068 0 obj <<
-/D [5057 0 R /XYZ 71.731 550.539 null]
+5062 0 obj <<
+/D [5051 0 R /XYZ 71.731 550.539 null]
 >> endobj
-5069 0 obj <<
-/D [5057 0 R /XYZ 119.841 538.105 null]
+5063 0 obj <<
+/D [5051 0 R /XYZ 119.841 538.105 null]
 >> endobj
-5070 0 obj <<
-/D [5057 0 R /XYZ 167.644 538.105 null]
+5064 0 obj <<
+/D [5051 0 R /XYZ 167.644 538.105 null]
 >> endobj
-5071 0 obj <<
-/D [5057 0 R /XYZ 249.411 538.105 null]
+5065 0 obj <<
+/D [5051 0 R /XYZ 249.411 538.105 null]
 >> endobj
-5072 0 obj <<
-/D [5057 0 R /XYZ 442.122 512.202 null]
+5066 0 obj <<
+/D [5051 0 R /XYZ 442.122 512.202 null]
 >> endobj
-5073 0 obj <<
-/D [5057 0 R /XYZ 71.731 476.337 null]
+5067 0 obj <<
+/D [5051 0 R /XYZ 71.731 476.337 null]
 >> endobj
 1054 0 obj <<
-/D [5057 0 R /XYZ 86.646 424.024 null]
+/D [5051 0 R /XYZ 86.646 424.024 null]
 >> endobj
-5055 0 obj <<
-/D [5057 0 R /XYZ 71.731 413.695 null]
+5049 0 obj <<
+/D [5051 0 R /XYZ 71.731 413.695 null]
 >> endobj
 1058 0 obj <<
-/D [5057 0 R /XYZ 263.739 400.743 null]
+/D [5051 0 R /XYZ 263.739 400.743 null]
 >> endobj
-5074 0 obj <<
-/D [5057 0 R /XYZ 71.731 393.545 null]
+5068 0 obj <<
+/D [5051 0 R /XYZ 71.731 393.545 null]
 >> endobj
-5075 0 obj <<
-/D [5057 0 R /XYZ 71.731 388.564 null]
+5069 0 obj <<
+/D [5051 0 R /XYZ 71.731 388.564 null]
 >> endobj
-5076 0 obj <<
-/D [5057 0 R /XYZ 71.731 339.473 null]
+5070 0 obj <<
+/D [5051 0 R /XYZ 71.731 339.473 null]
 >> endobj
 1062 0 obj <<
-/D [5057 0 R /XYZ 165.299 326.522 null]
+/D [5051 0 R /XYZ 165.299 326.522 null]
 >> endobj
-5077 0 obj <<
-/D [5057 0 R /XYZ 71.731 319.324 null]
+5071 0 obj <<
+/D [5051 0 R /XYZ 71.731 319.324 null]
 >> endobj
-5078 0 obj <<
-/D [5057 0 R /XYZ 71.731 314.342 null]
+5072 0 obj <<
+/D [5051 0 R /XYZ 71.731 314.342 null]
 >> endobj
-5079 0 obj <<
-/D [5057 0 R /XYZ 476.554 303.607 null]
+5073 0 obj <<
+/D [5051 0 R /XYZ 476.554 303.607 null]
 >> endobj
-5080 0 obj <<
-/D [5057 0 R /XYZ 71.731 267.742 null]
+5074 0 obj <<
+/D [5051 0 R /XYZ 71.731 267.742 null]
 >> endobj
 1066 0 obj <<
-/D [5057 0 R /XYZ 85.51 215.429 null]
+/D [5051 0 R /XYZ 85.51 215.429 null]
 >> endobj
 3302 0 obj <<
-/D [5057 0 R /XYZ 71.731 204.842 null]
+/D [5051 0 R /XYZ 71.731 204.842 null]
 >> endobj
 1070 0 obj <<
-/D [5057 0 R /XYZ 107.277 192.148 null]
+/D [5051 0 R /XYZ 107.277 192.148 null]
 >> endobj
-5081 0 obj <<
-/D [5057 0 R /XYZ 71.731 187.043 null]
+5075 0 obj <<
+/D [5051 0 R /XYZ 71.731 187.043 null]
 >> endobj
-5082 0 obj <<
-/D [5057 0 R /XYZ 71.731 182.061 null]
+5076 0 obj <<
+/D [5051 0 R /XYZ 71.731 182.061 null]
 >> endobj
-5083 0 obj <<
-/D [5057 0 R /XYZ 383.963 156.283 null]
+5077 0 obj <<
+/D [5051 0 R /XYZ 383.963 156.283 null]
 >> endobj
-5056 0 obj <<
+5050 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-5086 0 obj <<
+5080 0 obj <<
 /Length 1982      
 /Filter /FlateDecode
 >>
@@ -19397,125 +19385,125 @@ wy
 ��`��a�쒚����-cZ&1�쟠l$9̭@\��{��g6t�r������͊4������1l���O!�lh�sf��|/n�hc���J�-������X.[1~{��+0��i~�31�}~%ثϒ-���\��WW7���
AX������UH��{W���zS����<;�
 �r7��*2"��$.����v�Nm8�_�iI?yh�V���U\����-��Q��sY�7t�?�Jj���j19�a��:k6�+zo�M-Xt��-#.�(�a^,�d�t��f%���%D��_����d��w\�5�͢�6;�p��ߛ<��n�8�}�����Asl��מ�i�EZl(n�WaR��;ų��G]�������~�� �ʰ�����1��J�~e[�l���+�#nT�����u/Y�	G�G�endstream
 endobj
-5085 0 obj <<
+5079 0 obj <<
 /Type /Page
-/Contents 5086 0 R
-/Resources 5084 0 R
+/Contents 5080 0 R
+/Resources 5078 0 R
 /MediaBox [0 0 609.714 789.041]
-/Parent 4990 0 R
+/Parent 4984 0 R
+>> endobj
+5081 0 obj <<
+/D [5079 0 R /XYZ 71.731 729.265 null]
+>> endobj
+5082 0 obj <<
+/D [5079 0 R /XYZ 71.731 718.306 null]
+>> endobj
+5083 0 obj <<
+/D [5079 0 R /XYZ 71.731 718.306 null]
+>> endobj
+1074 0 obj <<
+/D [5079 0 R /XYZ 103.282 708.344 null]
+>> endobj
+5084 0 obj <<
+/D [5079 0 R /XYZ 71.731 703.238 null]
+>> endobj
+5085 0 obj <<
+/D [5079 0 R /XYZ 71.731 698.257 null]
+>> endobj
+5086 0 obj <<
+/D [5079 0 R /XYZ 71.731 698.257 null]
 >> endobj
 5087 0 obj <<
-/D [5085 0 R /XYZ 71.731 729.265 null]
+/D [5079 0 R /XYZ 166.836 685.43 null]
 >> endobj
 5088 0 obj <<
-/D [5085 0 R /XYZ 71.731 718.306 null]
+/D [5079 0 R /XYZ 408.475 672.478 null]
 >> endobj
 5089 0 obj <<
-/D [5085 0 R /XYZ 71.731 718.306 null]
->> endobj
-1074 0 obj <<
-/D [5085 0 R /XYZ 103.282 708.344 null]
+/D [5079 0 R /XYZ 243.467 659.527 null]
 >> endobj
 5090 0 obj <<
-/D [5085 0 R /XYZ 71.731 703.238 null]
+/D [5079 0 R /XYZ 246.801 659.527 null]
 >> endobj
 5091 0 obj <<
-/D [5085 0 R /XYZ 71.731 698.257 null]
+/D [5079 0 R /XYZ 298.91 659.527 null]
 >> endobj
 5092 0 obj <<
-/D [5085 0 R /XYZ 71.731 698.257 null]
+/D [5079 0 R /XYZ 448.559 659.527 null]
 >> endobj
 5093 0 obj <<
-/D [5085 0 R /XYZ 166.836 685.43 null]
+/D [5079 0 R /XYZ 164.884 646.575 null]
 >> endobj
 5094 0 obj <<
-/D [5085 0 R /XYZ 408.475 672.478 null]
+/D [5079 0 R /XYZ 481.157 646.575 null]
 >> endobj
 5095 0 obj <<
-/D [5085 0 R /XYZ 243.467 659.527 null]
+/D [5079 0 R /XYZ 132.363 633.624 null]
 >> endobj
 5096 0 obj <<
-/D [5085 0 R /XYZ 246.801 659.527 null]
+/D [5079 0 R /XYZ 71.731 610.71 null]
+>> endobj
+1078 0 obj <<
+/D [5079 0 R /XYZ 84.353 558.397 null]
 >> endobj
 5097 0 obj <<
-/D [5085 0 R /XYZ 298.91 659.527 null]
+/D [5079 0 R /XYZ 71.731 548.068 null]
+>> endobj
+1082 0 obj <<
+/D [5079 0 R /XYZ 150.047 535.116 null]
 >> endobj
 5098 0 obj <<
-/D [5085 0 R /XYZ 448.559 659.527 null]
+/D [5079 0 R /XYZ 71.731 527.918 null]
 >> endobj
 5099 0 obj <<
-/D [5085 0 R /XYZ 164.884 646.575 null]
+/D [5079 0 R /XYZ 71.731 522.937 null]
 >> endobj
 5100 0 obj <<
-/D [5085 0 R /XYZ 481.157 646.575 null]
+/D [5079 0 R /XYZ 192.963 499.251 null]
+>> endobj
+2309 0 obj <<
+/D [5079 0 R /XYZ 71.731 447.943 null]
+>> endobj
+1086 0 obj <<
+/D [5079 0 R /XYZ 193.264 434.992 null]
 >> endobj
 5101 0 obj <<
-/D [5085 0 R /XYZ 132.363 633.624 null]
+/D [5079 0 R /XYZ 71.731 427.794 null]
 >> endobj
 5102 0 obj <<
-/D [5085 0 R /XYZ 71.731 610.71 null]
->> endobj
-1078 0 obj <<
-/D [5085 0 R /XYZ 84.353 558.397 null]
+/D [5079 0 R /XYZ 71.731 422.813 null]
 >> endobj
 5103 0 obj <<
-/D [5085 0 R /XYZ 71.731 548.068 null]
+/D [5079 0 R /XYZ 71.731 363.261 null]
 >> endobj
-1082 0 obj <<
-/D [5085 0 R /XYZ 150.047 535.116 null]
+1090 0 obj <<
+/D [5079 0 R /XYZ 84.353 310.948 null]
 >> endobj
 5104 0 obj <<
-/D [5085 0 R /XYZ 71.731 527.918 null]
+/D [5079 0 R /XYZ 71.731 300.619 null]
+>> endobj
+1094 0 obj <<
+/D [5079 0 R /XYZ 163.964 287.667 null]
 >> endobj
 5105 0 obj <<
-/D [5085 0 R /XYZ 71.731 522.937 null]
+/D [5079 0 R /XYZ 71.731 280.469 null]
 >> endobj
 5106 0 obj <<
-/D [5085 0 R /XYZ 192.963 499.251 null]
->> endobj
-2309 0 obj <<
-/D [5085 0 R /XYZ 71.731 447.943 null]
->> endobj
-1086 0 obj <<
-/D [5085 0 R /XYZ 193.264 434.992 null]
+/D [5079 0 R /XYZ 71.731 275.488 null]
 >> endobj
 5107 0 obj <<
-/D [5085 0 R /XYZ 71.731 427.794 null]
+/D [5079 0 R /XYZ 71.731 249.645 null]
 >> endobj
 5108 0 obj <<
-/D [5085 0 R /XYZ 71.731 422.813 null]
+/D [5079 0 R /XYZ 71.731 239.682 null]
 >> endobj
 5109 0 obj <<
-/D [5085 0 R /XYZ 71.731 363.261 null]
->> endobj
-1090 0 obj <<
-/D [5085 0 R /XYZ 84.353 310.948 null]
+/D [5079 0 R /XYZ 71.731 176.635 null]
 >> endobj
 5110 0 obj <<
-/D [5085 0 R /XYZ 71.731 300.619 null]
->> endobj
-1094 0 obj <<
-/D [5085 0 R /XYZ 163.964 287.667 null]
+/D [5079 0 R /XYZ 469.856 143.607 null]
 >> endobj
-5111 0 obj <<
-/D [5085 0 R /XYZ 71.731 280.469 null]
->> endobj
-5112 0 obj <<
-/D [5085 0 R /XYZ 71.731 275.488 null]
->> endobj
-5113 0 obj <<
-/D [5085 0 R /XYZ 71.731 249.645 null]
->> endobj
-5114 0 obj <<
-/D [5085 0 R /XYZ 71.731 239.682 null]
->> endobj
-5115 0 obj <<
-/D [5085 0 R /XYZ 71.731 176.635 null]
->> endobj
-5116 0 obj <<
-/D [5085 0 R /XYZ 469.856 143.607 null]
->> endobj
-5084 0 obj <<
+5078 0 obj <<
 /Font << /F23 1105 0 R /F27 1112 0 R /F33 1210 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
@@ -19524,220 +19512,220 @@ endobj
 /Subtype /Type1
 /BaseFont /ZapfDingbats
 >> endobj
-5117 0 obj <<
+5111 0 obj <<
 /Type /Encoding
 /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl 22/.notdef 30/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro 129/.notdef 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 141/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 157/.notdef 159/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]
 >> endobj
 2335 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Courier-Bold
 >> endobj
 2143 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Courier-Oblique
 >> endobj
 1896 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Helvetica-Oblique
 >> endobj
 1884 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Helvetica
 >> endobj
 1437 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Courier
 >> endobj
 1210 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Times-Italic
 >> endobj
 1119 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Times-Bold
 >> endobj
 1112 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Times-Roman
 >> endobj
 1105 0 obj <<
 /Type /Font
 /Subtype /Type1
-/Encoding 5117 0 R
+/Encoding 5111 0 R
 /BaseFont /Helvetica-Bold
 >> endobj
 1106 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5118 0 R
+/Parent 5112 0 R
 /Kids [1098 0 R 1108 0 R 1114 0 R 1257 0 R 1402 0 R 1543 0 R]
 >> endobj
 1745 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5118 0 R
+/Parent 5112 0 R
 /Kids [1688 0 R 1774 0 R 1799 0 R 1826 0 R 1880 0 R 1890 0 R]
 >> endobj
 1949 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5118 0 R
+/Parent 5112 0 R
 /Kids [1926 0 R 1952 0 R 1989 0 R 2047 0 R 2067 0 R 2091 0 R]
 >> endobj
 2157 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5118 0 R
+/Parent 5112 0 R
 /Kids [2118 0 R 2159 0 R 2203 0 R 2235 0 R 2277 0 R 2311 0 R]
 >> endobj
 2376 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5118 0 R
+/Parent 5112 0 R
 /Kids [2353 0 R 2378 0 R 2417 0 R 2453 0 R 2478 0 R 2495 0 R]
 >> endobj
 2556 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5118 0 R
+/Parent 5112 0 R
 /Kids [2541 0 R 2558 0 R 2589 0 R 2613 0 R 2642 0 R 2662 0 R]
 >> endobj
 2704 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5119 0 R
+/Parent 5113 0 R
 /Kids [2674 0 R 2706 0 R 2734 0 R 2754 0 R 2789 0 R 2837 0 R]
 >> endobj
 2910 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5119 0 R
+/Parent 5113 0 R
 /Kids [2864 0 R 2912 0 R 2952 0 R 2987 0 R 3030 0 R 3061 0 R]
 >> endobj
 3129 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5119 0 R
+/Parent 5113 0 R
 /Kids [3089 0 R 3131 0 R 3151 0 R 3175 0 R 3199 0 R 3226 0 R]
 >> endobj
 3272 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5119 0 R
-/Kids [3256 0 R 3274 0 R 3304 0 R 3333 0 R 3415 0 R 3445 0 R]
+/Parent 5113 0 R
+/Kids [3256 0 R 3274 0 R 3304 0 R 3333 0 R 3410 0 R 3439 0 R]
 >> endobj
-3499 0 obj <<
+3493 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5119 0 R
-/Kids [3474 0 R 3501 0 R 3540 0 R 3569 0 R 3600 0 R 3638 0 R]
+/Parent 5113 0 R
+/Kids [3468 0 R 3495 0 R 3534 0 R 3563 0 R 3594 0 R 3632 0 R]
 >> endobj
-3680 0 obj <<
+3674 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5119 0 R
-/Kids [3661 0 R 3682 0 R 3704 0 R 3733 0 R 3737 0 R 3741 0 R]
+/Parent 5113 0 R
+/Kids [3655 0 R 3676 0 R 3698 0 R 3727 0 R 3731 0 R 3735 0 R]
 >> endobj
-3760 0 obj <<
+3754 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5120 0 R
-/Kids [3745 0 R 3762 0 R 3776 0 R 3805 0 R 3864 0 R 3874 0 R]
+/Parent 5114 0 R
+/Kids [3739 0 R 3756 0 R 3770 0 R 3799 0 R 3858 0 R 3868 0 R]
 >> endobj
-3927 0 obj <<
+3921 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5120 0 R
-/Kids [3908 0 R 3929 0 R 3951 0 R 3963 0 R 3983 0 R 4007 0 R]
+/Parent 5114 0 R
+/Kids [3902 0 R 3923 0 R 3945 0 R 3957 0 R 3977 0 R 4001 0 R]
 >> endobj
-4057 0 obj <<
+4051 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5120 0 R
-/Kids [4042 0 R 4059 0 R 4075 0 R 4096 0 R 4113 0 R 4121 0 R]
+/Parent 5114 0 R
+/Kids [4036 0 R 4053 0 R 4069 0 R 4090 0 R 4107 0 R 4115 0 R]
 >> endobj
-4180 0 obj <<
+4174 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5120 0 R
-/Kids [4152 0 R 4182 0 R 4212 0 R 4241 0 R 4267 0 R 4301 0 R]
+/Parent 5114 0 R
+/Kids [4146 0 R 4176 0 R 4206 0 R 4235 0 R 4261 0 R 4295 0 R]
 >> endobj
-4357 0 obj <<
+4351 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5120 0 R
-/Kids [4327 0 R 4359 0 R 4411 0 R 4439 0 R 4476 0 R 4506 0 R]
+/Parent 5114 0 R
+/Kids [4321 0 R 4353 0 R 4405 0 R 4433 0 R 4470 0 R 4500 0 R]
 >> endobj
-4551 0 obj <<
+4545 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5120 0 R
-/Kids [4541 0 R 4553 0 R 4580 0 R 4599 0 R 4618 0 R 4640 0 R]
+/Parent 5114 0 R
+/Kids [4535 0 R 4547 0 R 4574 0 R 4593 0 R 4612 0 R 4634 0 R]
 >> endobj
-4700 0 obj <<
+4694 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5121 0 R
-/Kids [4657 0 R 4702 0 R 4730 0 R 4760 0 R 4789 0 R 4813 0 R]
+/Parent 5115 0 R
+/Kids [4651 0 R 4696 0 R 4724 0 R 4754 0 R 4783 0 R 4807 0 R]
 >> endobj
-4839 0 obj <<
+4833 0 obj <<
 /Type /Pages
 /Count 6
-/Parent 5121 0 R
-/Kids [4829 0 R 4841 0 R 4878 0 R 4890 0 R 4903 0 R 4909 0 R]
+/Parent 5115 0 R
+/Kids [4823 0 R 4835 0 R 4872 0 R 4884 0 R 4897 0 R 4903 0 R]
 >> endobj
-4990 0 obj <<
+4984 0 obj <<
 /Type /Pages
 /Count 5
-/Parent 5121 0 R
-/Kids [4959 0 R 4992 0 R 5020 0 R 5057 0 R 5085 0 R]
+/Parent 5115 0 R
+/Kids [4953 0 R 4986 0 R 5014 0 R 5051 0 R 5079 0 R]
 >> endobj
-5118 0 obj <<
+5112 0 obj <<
 /Type /Pages
 /Count 36
-/Parent 5122 0 R
+/Parent 5116 0 R
 /Kids [1106 0 R 1745 0 R 1949 0 R 2157 0 R 2376 0 R 2556 0 R]
 >> endobj
-5119 0 obj <<
+5113 0 obj <<
 /Type /Pages
 /Count 36
-/Parent 5122 0 R
-/Kids [2704 0 R 2910 0 R 3129 0 R 3272 0 R 3499 0 R 3680 0 R]
+/Parent 5116 0 R
+/Kids [2704 0 R 2910 0 R 3129 0 R 3272 0 R 3493 0 R 3674 0 R]
 >> endobj
-5120 0 obj <<
+5114 0 obj <<
 /Type /Pages
 /Count 36
-/Parent 5122 0 R
-/Kids [3760 0 R 3927 0 R 4057 0 R 4180 0 R 4357 0 R 4551 0 R]
+/Parent 5116 0 R
+/Kids [3754 0 R 3921 0 R 4051 0 R 4174 0 R 4351 0 R 4545 0 R]
 >> endobj
-5121 0 obj <<
+5115 0 obj <<
 /Type /Pages
 /Count 17
-/Parent 5122 0 R
-/Kids [4700 0 R 4839 0 R 4990 0 R]
+/Parent 5116 0 R
+/Kids [4694 0 R 4833 0 R 4984 0 R]
 >> endobj
-5122 0 obj <<
+5116 0 obj <<
 /Type /Pages
 /Count 125
-/Kids [5118 0 R 5119 0 R 5120 0 R 5121 0 R]
+/Kids [5112 0 R 5113 0 R 5114 0 R 5115 0 R]
 >> endobj
-5123 0 obj <<
+5117 0 obj <<
 /Type /Outlines
 /First 3 0 R
 /Last 1091 0 R
@@ -19751,7 +19739,7 @@ endobj
 1091 0 obj <<
 /Title 1092 0 R
 /A 1089 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1079 0 R
 /First 1095 0 R
 /Last 1095 0 R
@@ -19773,7 +19761,7 @@ endobj
 1079 0 obj <<
 /Title 1080 0 R
 /A 1077 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1067 0 R
 /Next 1091 0 R
 /First 1083 0 R
@@ -19796,7 +19784,7 @@ endobj
 1067 0 obj <<
 /Title 1068 0 R
 /A 1065 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1055 0 R
 /Next 1079 0 R
 /First 1071 0 R
@@ -19819,7 +19807,7 @@ endobj
 1055 0 obj <<
 /Title 1056 0 R
 /A 1053 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1047 0 R
 /Next 1067 0 R
 /First 1059 0 R
@@ -19834,7 +19822,7 @@ endobj
 1047 0 obj <<
 /Title 1048 0 R
 /A 1045 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1031 0 R
 /Next 1055 0 R
 /First 1051 0 R
@@ -19864,7 +19852,7 @@ endobj
 1031 0 obj <<
 /Title 1032 0 R
 /A 1029 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1019 0 R
 /Next 1047 0 R
 /First 1035 0 R
@@ -19887,7 +19875,7 @@ endobj
 1019 0 obj <<
 /Title 1020 0 R
 /A 1017 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1011 0 R
 /Next 1031 0 R
 /First 1023 0 R
@@ -19902,7 +19890,7 @@ endobj
 1011 0 obj <<
 /Title 1012 0 R
 /A 1009 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 1003 0 R
 /Next 1019 0 R
 /First 1015 0 R
@@ -19917,7 +19905,7 @@ endobj
 1003 0 obj <<
 /Title 1004 0 R
 /A 1001 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 991 0 R
 /Next 1011 0 R
 /First 1007 0 R
@@ -19940,7 +19928,7 @@ endobj
 991 0 obj <<
 /Title 992 0 R
 /A 989 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 971 0 R
 /Next 1003 0 R
 /First 995 0 R
@@ -19977,7 +19965,7 @@ endobj
 971 0 obj <<
 /Title 972 0 R
 /A 969 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 955 0 R
 /Next 991 0 R
 /First 975 0 R
@@ -20007,7 +19995,7 @@ endobj
 955 0 obj <<
 /Title 956 0 R
 /A 953 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 943 0 R
 /Next 971 0 R
 /First 959 0 R
@@ -20030,7 +20018,7 @@ endobj
 943 0 obj <<
 /Title 944 0 R
 /A 941 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 935 0 R
 /Next 955 0 R
 /First 947 0 R
@@ -20045,7 +20033,7 @@ endobj
 935 0 obj <<
 /Title 936 0 R
 /A 933 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 931 0 R
 /Next 943 0 R
 /First 939 0 R
@@ -20055,7 +20043,7 @@ endobj
 931 0 obj <<
 /Title 932 0 R
 /A 929 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 879 0 R
 /Next 935 0 R
 >> endobj
@@ -20144,7 +20132,7 @@ endobj
 879 0 obj <<
 /Title 880 0 R
 /A 877 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 863 0 R
 /Next 931 0 R
 /First 883 0 R
@@ -20173,7 +20161,7 @@ endobj
 863 0 obj <<
 /Title 864 0 R
 /A 861 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 851 0 R
 /Next 879 0 R
 /First 867 0 R
@@ -20195,7 +20183,7 @@ endobj
 851 0 obj <<
 /Title 852 0 R
 /A 849 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 803 0 R
 /Next 863 0 R
 /First 855 0 R
@@ -20280,7 +20268,7 @@ endobj
 803 0 obj <<
 /Title 804 0 R
 /A 801 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 799 0 R
 /Next 851 0 R
 /First 807 0 R
@@ -20290,7 +20278,7 @@ endobj
 799 0 obj <<
 /Title 800 0 R
 /A 797 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 639 0 R
 /Next 803 0 R
 >> endobj
@@ -20576,7 +20564,7 @@ endobj
 639 0 obj <<
 /Title 640 0 R
 /A 637 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 559 0 R
 /Next 799 0 R
 /First 643 0 R
@@ -20721,7 +20709,7 @@ endobj
 559 0 obj <<
 /Title 560 0 R
 /A 557 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 503 0 R
 /Next 639 0 R
 /First 563 0 R
@@ -20824,7 +20812,7 @@ endobj
 503 0 obj <<
 /Title 504 0 R
 /A 501 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 307 0 R
 /Next 559 0 R
 /First 507 0 R
@@ -21179,7 +21167,7 @@ endobj
 307 0 obj <<
 /Title 308 0 R
 /A 305 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 43 0 R
 /Next 503 0 R
 /First 311 0 R
@@ -21658,7 +21646,7 @@ endobj
 43 0 obj <<
 /Title 44 0 R
 /A 41 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 19 0 R
 /Next 307 0 R
 /First 47 0 R
@@ -21701,7 +21689,7 @@ endobj
 19 0 obj <<
 /Title 20 0 R
 /A 17 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 15 0 R
 /Next 43 0 R
 /First 23 0 R
@@ -21711,5190 +21699,5184 @@ endobj
 15 0 obj <<
 /Title 16 0 R
 /A 13 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 11 0 R
 /Next 19 0 R
 >> endobj
 11 0 obj <<
 /Title 12 0 R
 /A 9 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 7 0 R
 /Next 15 0 R
 >> endobj
 7 0 obj <<
 /Title 8 0 R
 /A 5 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Prev 3 0 R
 /Next 11 0 R
 >> endobj
 3 0 obj <<
 /Title 4 0 R
 /A 1 0 R
-/Parent 5123 0 R
+/Parent 5117 0 R
 /Next 7 0 R
 >> endobj
-5124 0 obj <<
-/Names [(1.0) 2 0 R (10.0) 638 0 R (10.32.1) 642 0 R (10.33.1) 646 0 R (10.34.1) 650 0 R (10.35.1) 654 0 R (10.36.1) 658 0 R (10.36.63.2) 662 0 R (10.36.63.40.3) 666 0 R (10.36.63.41.3) 670 0 R (10.36.63.42.3) 674 0 R (10.37.1) 678 0 R (10.38.1) 682 0 R (10.39.1) 686 0 R (10.39.64.2) 690 0 R (10.39.65.2) 694 0 R (10.39.66.2) 698 0 R (10.39.67.2) 702 0 R (10.39.68.2) 706 0 R (10.39.69.2) 710 0 R (10.39.70.2) 714 0 R (10.40.1) 718 0 R (10.40.71.2) 722 0 R (10.40.72.2) 726 0 R (10.40.73.2) 730 0 R (10.40.74.2) 734 0 R (10.41.1) 738 0 R (10.41.75.2) 742 0 R (10.41.76.2) 746 0 R (10.41.77.2) 750 0 R (10.42.1) 754 0 R (10.42.78.2) 758 0 R (10.42.79.2) 762 0 R (10.42.79.43.3) 766 0 R (10.42.79.44.3) 770 0 R (10.43.1) 774 0 R (10.44.1) 778 0 R (10.44.80.2) 782 0 R (10.44.81.2) 786 0 R (10.44.82.2) 790 0 R (10.44.83.2) 794 0 R (100) 1867 0 R (1000) 2672 0 R (1005) 2677 0 R (1006) 2678 0 R (1008) 2679 0 R (101) 1868 0 R (1010) 2680 0 R (1011) 2681 0 R (1012) 2682 0 R (1014) 2683 0 R (1015) 2684 0 R (1016) 2685 0 R (1017) 2686 0 R (1018) 2687 0 R (1019) 2688 0 R (102) 1869 0 R (1020) 2689 0 R (1022) 2690 0 R (1023) 2691 0 R (1024) 2692 0 R (1026) 2693 0 R (1027) 2694 0 R (1028) 2695 0 R (1029) 2696 0 R (103) 1870 0 R (1031) 2697 0 R (1032) 2698 0 R (1033) 2699 0 R (1034) 2700 0 R (1035) 2701 0 R (1036) 2702 0 R (1037) 2703 0 R (1038) 2709 0 R (104) 1871 0 R (1040) 2710 0 R (1041) 2711 0 R (1042) 2712 0 R (1043) 2713 0 R (1044) 2714 0 R (1045) 2715 0 R (1047) 2716 0 R (1048) 2717 0 R (1049) 2718 0 R (105) 1872 0 R (1050) 2719 0 R (1052) 2720 0 R (1053) 2721 0 R (1054) 2722 0 R (1055) 2723 0 R (1057) 2724 0 R (1058) 2725 0 R (1059) 2726 0 R (106) 1873 0 R (1061) 2727 0 R (1062) 2728 0 R (1063) 2729 0 R (1065) 2730 0 R (1066) 2731 0 R (1067) 2732 0 R (1069) 2737 0 R (107) 1874 0 R (1070) 2738 0 R (1071) 2739 0 R (1072) 2740 0 R (1073) 2741 0 R (1074) 2742 0 R (1076) 2743 0 R (1077) 2744 0 R (1078) 2745 0 R (1079) 2746 0 R (108) 1875 0 R (1081) 2747 0 R (1082) 2748 0 R (1083) 2749 0 R (1088) 2750 0 R (1089) 2751 0 R (1090) 2752 0 R (1095) 2757 0 R (1096) 2758 0 R (1097) 2759 0 R (1098) 2760 0 R (1099) 2761 0 R (11.0) 798 0 R (1100) 2762 0 R (1101) 2763 0 R (1102) 2764 0 R (1103) 2765 0 R (1104) 2766 0 R (1107) 2767 0 R (1108) 2768 0 R (1109) 2769 0 R (111) 1876 0 R (1110) 2770 0 R (1111) 2771 0 R (1112) 2772 0 R (1113) 2773 0 R (1114) 2774 0 R (1115) 2775 0 R (1116) 2776 0 R (1117) 2777 0 R (1118) 2778 0 R (1119) 2779 0 R (1120) 2780 0 R (1121) 2781 0 R (1122) 2782 0 R (1123) 2783 0 R (1124) 2784 0 R (1125) 2785 0 R (1126) 2786 0 R (1127) 2787 0 R (1128) 2793 0 R (1129) 2794 0 R (113) 1877 0 R (1130) 2795 0 R (1131) 2796 0 R (1132) 2797 0 R (1133) 2798 0 R (1134) 2799 0 R (1135) 2800 0 R (1136) 2801 0 R (1137) 2802 0 R (1138) 2803 0 R (1139) 2804 0 R (114) 1878 0 R (1140) 2805 0 R (1141) 2806 0 R (1142) 2807 0 R (1143) 2808 0 R (1144) 2809 0 R (1145) 2810 0 R (1146) 2811 0 R (1147) 2812 0 R (1148) 2813 0 R (1149) 2814 0 R (115) 1828 0 R (1150) 2815 0 R (1151) 2816 0 R (1152) 2817 0 R (1153) 2818 0 R (1154) 2819 0 R (1155) 2820 0 R (1156) 2821 0 R (1157) 2822 0 R (1158) 2823 0 R (1159) 2824 0 R (1162) 2825 0 R (1164) 2827 0 R (1165) 2828 0 R (1166) 2829 0 R (1167) 2830 0 R (1168) 2831 0 R (1169) 2832 0 R (1170) 2833 0 R (1171) 2834 0 R (1172) 2840 0 R (1173) 2792 0 R (1176) 2841 0 R (1177) 2842 0 R (1178) 2843 0 R (1179) 2844 0 R (1180) 2845 0 R (1181) 2846 0 R (1182) 2847 0 R (1183) 2848 0 R (1184) 2849 0 R (1185) 2850 0 R (1186) 2851 0 R (1189) 2852 0 R (1190) 2853 0 R (1191) 2854 0 R (1192) 2855 0 R (1193) 2856 0 R (1194) 2857 0 R (1195) 2858 0 R (1196) 2859 0 R (1197) 2860 0 R (12.0) 802 0 R (12.45.1) 806 0 R (12.46.1) 810 0 R (12.47.1) 814 0 R (12.48.1) 818 0 R (12.49.1) 822 0 R (12.50.1) 826 0 R (12.51.1) 830 0 R (12.52.1) 834 0 R (12.53.1) 838 0 R (12.54.1) 842 0 R (12.55.1) 846 0 R (1200) 2861 0 R (1201) 2862 0 R (1202) 2868 0 R (1203) 2869 0 R (1204) 2870 0 R (1205) 2871 0 R (1206) 2872 0 R (1207) 2873 0 R (1208) 2874 0 R (1209) 2875 0 R (1210) 2876 0 R (1211) 2877 0 R (1212) 2878 0 R (1215) 2879 0 R (1216) 2880 0 R (1217) 2881 0 R (1218) 2882 0 R (1221) 2883 0 R (1222) 2884 0 R (1223) 2885 0 R (1224) 2886 0 R (1225) 2887 0 R (1226) 2888 0 R (1227) 2889 0 R (1228) 2890 0 R (1229) 2891 0 R (1230) 2892 0 R (1231) 2893 0 R (1232) 2894 0 R (1233) 2895 0 R (1234) 2896 0 R (1235) 2897 0 R (1236) 2898 0 R (1237) 2899 0 R (1238) 2900 0 R (1239) 2901 0 R (1240) 2902 0 R (1241) 2903 0 R (1242) 2904 0 R (1243) 2905 0 R (1244) 2906 0 R (1245) 2907 0 R (1246) 2908 0 R (1247) 2909 0 R (1252) 2915 0 R (1253) 2916 0 R (1255) 2917 0 R (1256) 2918 0 R (1257) 2919 0 R (1258) 2920 0 R (1260) 2867 0 R (1262) 2921 0 R (1263) 2922 0 R (1264) 2923 0 R (1266) 2924 0 R (1267) 2925 0 R (1268) 2926 0 R (1269) 2927 0 R (1270) 2928 0 R (1271) 2929 0 R (1272) 2930 0 R (1275) 2931 0 R (1276) 2932 0 R (1277) 2933 0 R (1278) 2934 0 R (1279) 2935 0 R (1280) 2936 0 R (1281) 2937 0 R (1282) 2938 0 R (1283) 2939 0 R (1284) 2940 0 R (1285) 2941 0 R (1288) 2942 0 R (1291) 2943 0 R (1292) 2944 0 R (1293) 2945 0 R (1294) 2946 0 R (1295) 2947 0 R (1296) 2948 0 R (1297) 2949 0 R (1298) 2950 0 R (1299) 2956 0 R (13.0) 850 0 R (13.56.1) 854 0 R (13.57.1) 858 0 R (1300) 2957 0 R (1301) 2958 0 R (1302) 2959 0 R (1303) 2960 0 R (1304) 2961 0 R (1307) 2962 0 R (1308) 2963 0 R (1309) 2964 0 R (1310) 2965 0 R (1311) 2966 0 R (1314) 2967 0 R (1315) 2968 0 R (1316) 2969 0 R (1317) 2970 0 R (1318) 2971 0 R (1321) 2972 0 R (1322) 2973 0 R (1325) 2975 0 R (1328) 2977 0 R (1331) 2979 0 R (1332) 2980 0 R (1333) 2981 0 R (1334) 2982 0 R (1335) 2983 0 R (1336) 2984 0 R (1337) 2985 0 R (1338) 2990 0 R (1339) 2991 0 R (1340) 2992 0 R (1341) 2993 0 R (1342) 2955 0 R (1344) 2994 0 R (1345) 2995 0 R (1346) 2996 0 R (1347) 2997 0 R (1348) 2998 0 R (1349) 2999 0 R (1350) 3000 0 R (1351) 3001 0 R (1352) 3002 0 R (1353) 3003 0 R (1354) 3004 0 R (1355) 3005 0 R (1356) 3006 0 R (1357) 3007 0 R (1358) 3008 0 R (1359) 3009 0 R (1360) 3010 0 R (1361) 3011 0 R (1364) 3013 0 R (1365) 3014 0 R (1366) 3015 0 R (1369) 3017 0 R (1370) 3018 0 R (1373) 3020 0 R (1374) 3021 0 R (1375) 3022 0 R (1376) 3023 0 R (1377) 3024 0 R (1378) 3025 0 R (1381) 3027 0 R (1384) 3033 0 R (1385) 3034 0 R (1388) 3036 0 R (1389) 3037 0 R (1390) 3038 0 R (1391) 3039 0 R (1394) 3040 0 R (1395) 3041 0 R (1396) 3042 0 R (1397) 3043 0 R (1398) 3044 0 R (1399) 3045 0 R (14.0) 862 0 R (14.58.1) 866 0 R (14.59.1) 870 0 R (14.60.1) 874 0 R (1400) 3046 0 R (1401) 3047 0 R (1404) 3048 0 R (1405) 3049 0 R (1406) 3050 0 R (1409) 3051 0 R (1410) 3052 0 R (1411) 3053 0 R (1412) 3054 0 R (1413) 3055 0 R (1414) 3056 0 R (1415) 3057 0 R (1416) 3058 0 R (1417) 3059 0 R (1418) 3064 0 R (1419) 3065 0 R (1420) 3066 0 R (1421) 3067 0 R (1422) 3068 0 R (1423) 3069 0 R (1424) 3070 0 R (1427) 3071 0 R (1428) 3072 0 R (1429) 3073 0 R (1430) 3074 0 R (1431) 3075 0 R (1432) 3076 0 R (1435) 3077 0 R (1436) 3078 0 R (1437) 3079 0 R (1438) 3080 0 R (1439) 3081 0 R (1440) 3082 0 R (1441) 3083 0 R (1442) 3084 0 R (1443) 3085 0 R (1444) 3086 0 R (1445) 3087 0 R (1446) 1398 0 R (1448) 3092 0 R (1449) 3093 0 R (1450) 3094 0 R (1451) 3095 0 R (1452) 3096 0 R (1453) 3097 0 R (1454) 3098 0 R (1455) 3099 0 R (1456) 3100 0 R (1457) 3101 0 R (1458) 3102 0 R (1459) 3103 0 R (1460) 3104 0 R (1461) 3105 0 R (1462) 3106 0 R (1463) 3107 0 R (1464) 3108 0 R (1465) 3109 0 R (1466) 3110 0 R (1467) 3111 0 R (1468) 3112 0 R (1469) 3113 0 R (1470) 3114 0 R (1471) 3115 0 R (1472) 3116 0 R (1473) 1399 0 R (1475) 3117 0 R (1476) 3118 0 R (1477) 3119 0 R (1478) 3120 0 R (1479) 3121 0 R (1480) 3122 0 R (1481) 3123 0 R (1482) 3124 0 R (1483) 1400 0 R (1485) 3125 0 R (1486) 3126 0 R (1487) 3127 0 R (1488) 3128 0 R (1489) 3134 0 R (1490) 3135 0 R (1491) 3136 0 R (1492) 3137 0 R (1493) 3138 0 R (1494) 3139 0 R (1495) 3140 0 R (1496) 3141 0 R (1497) 3142 0 R (1498) 3143 0 R (1499) 3144 0 R (15.0) 878 0 R (15.61.1) 882 0 R (15.62.1) 886 0 R (15.63.1) 890 0 R (15.64.1) 894 0 R (15.65.1) 898 0 R (15.66.1) 902 0 R (15.67.1) 906 0 R (15.68.1) 910 0 R (15.69.1) 914 0 R (15.70.1) 918 0 R (15.71.1) 922 0 R (15.72.1) 926 0 R (1500) 3145 0 R (1501) 1497 0 R (1503) 1498 0 R (1505) 3146 0 R (1506) 3147 0 R (1507) 1499 0 R (1509) 3148 0 R (1510) 3149 0 R (1511) 1500 0 R (1513) 3155 0 R (1514) 3156 0 R (1515) 3157 0 R (1516) 3158 0 R (1517) 3159 0 R (1518) 3160 0 R (1519) 3161 0 R (1520) 3162 0 R (1521) 3163 0 R (1522) 3164 0 R (1523) 3165 0 R (1524) 3166 0 R (1527) 3167 0 R (1528) 3168 0 R (1529) 3169 0 R (1530) 3170 0 R (1531) 3171 0 R (1532) 3172 0 R (1535) 3173 0 R (1536) 3154 0 R (1537) 3178 0 R (1538) 3179 0 R (1539) 3180 0 R (1540) 3181 0 R (1543) 3182 0 R (1544) 3183 0 R (1545) 3184 0 R (1546) 3185 0 R (1548) 3187 0 R (1549) 3188 0 R (1551) 3190 0 R (1552) 3191 0 R (1554) 3193 0 R (1556) 3195 0 R (1557) 3196 0 R (1558) 3197 0 R (1559) 3202 0 R (1560) 3203 0 R (1563) 3204 0 R (1564) 3205 0 R (1565) 3206 0 R (1566) 3207 0 R (1567) 3208 0 R (1568) 3209 0 R (1569) 3210 0 R (1570) 3211 0 R (1571) 3212 0 R (1572) 3213 0 R (1573) 3214 0 R (1574) 3215 0 R (1575) 3216 0 R (1576) 3217 0 R (1579) 3218 0 R (1580) 3219 0 R (1581) 3220 0 R (1582) 3221 0 R (1583) 3222 0 R (1584) 3223 0 R (1585) 3224 0 R (1586) 3229 0 R (1587) 3230 0 R (1588) 3231 0 R (1589) 3232 0 R (1590) 3233 0 R (1591) 3234 0 R (1592) 3235 0 R (1593) 3236 0 R (1594) 3237 0 R (1595) 3238 0 R (1596) 3239 0 R (1597) 3240 0 R (1598) 3241 0 R (1599) 3242 0 R (16.0) 930 0 R (1602) 3243 0 R (1603) 3244 0 R (1604) 3245 0 R (1605) 3246 0 R (1606) 3247 0 R (1607) 3248 0 R (1608) 3249 0 R (1609) 3250 0 R (1610) 3251 0 R (1611) 3252 0 R (1612) 3253 0 R (1613) 3254 0 R (1614) 3259 0 R (1615) 3260 0 R (1619) 3262 0 R (1620) 3263 0 R (1621) 3264 0 R (1622) 3265 0 R (1623) 3266 0 R (1624) 3267 0 R (1625) 3268 0 R (1626) 3269 0 R (1627) 3270 0 R (1628) 3271 0 R (1631) 3277 0 R (1632) 3278 0 R (1633) 3279 0 R (1638) 3280 0 R (1641) 3281 0 R (1643) 3283 0 R (1644) 3284 0 R (1645) 3285 0 R (1646) 3286 0 R (1648) 3288 0 R (1649) 3289 0 R (1650) 3290 0 R (1651) 3291 0 R (1652) 3292 0 R (1653) 3293 0 R (1654) 3294 0 R (1655) 3295 0 R (1656) 3296 0 R (1657) 3297 0 R (1658) 3298 0 R (1662) 3299 0 R (1663) 3300 0 R (1668) 3307 0 R (1674) 3309 0 R (1675) 3310 0 R (1676) 3311 0 R (1677) 3312 0 R (1681) 3313 0 R (1682) 3314 0 R (1683) 3315 0 R (1684) 3316 0 R (1685) 3317 0 R (1689) 3318 0 R (1690) 3319 0 R (1692) 3320 0 R (1693) 3321 0 R (1694) 3322 0 R (1695) 3323 0 R (1696) 3324 0 R (1697) 3325 0 R (17.0) 934 0 R (17.72.84.2) 938 0 R (1702) 3327 0 R (1706) 3329 0 R (1707) 3330 0 R (1708) 3331 0 R (1713) 3336 0 R (1714) 3337 0 R (1715) 3338 0 R (1716) 3339 0 R (1720) 3342 0 R (1721) 3343 0 R (1722) 3344 0 R (1723) 3345 0 R (1724) 3346 0 R (1725) 3347 0 R (1727) 3348 0 R (1728) 3349 0 R (1729) 3350 0 R (1730) 3351 0 R (1731) 3352 0 R (1732) 3353 0 R (1734) 3354 0 R (1735) 3355 0 R (1736) 3356 0 R (1737) 3357 0 R (1738) 3358 0 R (1739) 3359 0 R (1740) 3360 0 R (1741) 3361 0 R (1742) 3362 0 R (1743) 3363 0 R (1744) 3364 0 R (1745) 3365 0 R (1747) 3366 0 R (1748) 3367 0 R (1749) 3368 0 R (1750) 3369 0 R (1751) 3370 0 R (1752) 3371 0 R (1753) 3372 0 R (1754) 3373 0 R (1755) 3374 0 R (1756) 3375 0 R (1757) 3376 0 R (1758) 3377 0 R (1759) 3378 0 R (176) 1886 0 R (1761) 3379 0 R (1762) 3380 0 R (1763) 3381 0 R (1764) 3382 0 R (1765) 3383 0 R (1766) 3384 0 R (1767) 3385 0 R (1768) 3386 0 R (1769) 3387 0 R (177) 1887 0 R (1771) 3388 0 R (1772) 3389 0 R (1773) 3390 0 R (1774) 3391 0 R (1775) 3392 0 R (1776) 3393 0 R (1777) 3394 0 R (1778) 3395 0 R (1779) 3396 0 R (1780) 3397 0 R (1781) 3398 0 R (1782) 3399 0 R (1783) 3400 0 R (1784) 3401 0 R (1785) 3402 0 R (1786) 3403 0 R (1787) 3404 0 R (1788) 3405 0 R (1789) 3406 0 R (1790) 3407 0 R (1791) 3408 0 R (1792) 3409 0 R (1793) 3410 0 R (1794) 3411 0 R (1795) 3412 0 R (1796) 3418 0 R (1797) 3419 0 R (1798) 3420 0 R (1799) 3421 0 R (18.0) 942 0 R (18.72.85.2) 946 0 R (18.72.85.45.3) 950 0 R (1800) 3422 0 R (1801) 3423 0 R (1802) 3424 0 R (1803) 3425 0 R (1804) 3426 0 R (1809) 3428 0 R (1810) 3429 0 R (1811) 3430 0 R (1813) 3432 0 R (1814) 3433 0 R (1815) 3434 0 R (1816) 3435 0 R (182) 1892 0 R (1821) 3436 0 R (1822) 3437 0 R (1826) 3439 0 R (1827) 3440 0 R (1828) 3441 0 R (1829) 3442 0 R (183) 1893 0 R (1834) 3448 0 R (1835) 3449 0 R (1839) 3451 0 R (184) 1894 0 R (1840) 3452 0 R (1841) 3453 0 R (1842) 3454 0 R (1843) 3455 0 R (1844) 3456 0 R (1845) 3457 0 R (1846) 3458 0 R (1847) 3459 0 R (1848) 3460 0 R (185) 1897 0 R (1851) 3461 0 R (1852) 3462 0 R (1853) 3463 0 R (1854) 3464 0 R (1855) 3465 0 R (1856) 3466 0 R (1857) 3467 0 R (1858) 3468 0 R (1859) 3469 0 R (1860) 3470 0 R (1861) 3471 0 R (1862) 3472 0 R (1863) 3477 0 R (1864) 3478 0 R (1865) 3479 0 R (1866) 3480 0 R (1867) 3481 0 R (1868) 3482 0 R (1869) 3483 0 R (187) 1900 0 R (1870) 3484 0 R (1871) 3485 0 R (1872) 3486 0 R (1873) 3487 0 R (1874) 3488 0 R (1877) 3489 0 R (1878) 3490 0 R (1879) 3491 0 R (188) 1901 0 R (1880) 3492 0 R (1881) 3493 0 R (1882) 3494 0 R (1883) 3495 0 R (1884) 3496 0 R (1885) 3497 0 R (1886) 3498 0 R (1889) 3504 0 R (189) 1902 0 R (1890) 3505 0 R (1891) 3506 0 R (1892) 3507 0 R (1893) 3508 0 R (1894) 3509 0 R (1895) 3510 0 R (1896) 3511 0 R (1897) 3512 0 R (1898) 3513 0 R (1899) 3514 0 R (19.0) 954 0 R (19.72.86.2) 958 0 R (19.72.87.2) 962 0 R (19.72.88.2) 966 0 R (190) 1903 0 R (1900) 3515 0 R (1901) 3516 0 R (1902) 3517 0 R (1903) 3518 0 R (1904) 3519 0 R (1905) 3520 0 R (1908) 3521 0 R (1909) 3522 0 R (191) 1904 0 R (1910) 3523 0 R (1911) 3524 0 R (1912) 3525 0 R (1913) 3526 0 R (1914) 3527 0 R (1915) 3528 0 R (1916) 3529 0 R (1917) 3530 0 R (1918) 3531 0 R (1919) 3532 0 R (192) 1905 0 R (1920) 3533 0 R (1921) 3534 0 R (1922) 3535 0 R (1923) 3536 0 R (1924) 3537 0 R (1925) 3538 0 R (1926) 3543 0 R (1927) 3544 0 R (1928) 3545 0 R (1929) 3546 0 R (193) 1906 0 R (1930) 3547 0 R (1931) 3548 0 R (1932) 3549 0 R (1933) 3550 0 R (1934) 3551 0 R (1935) 3552 0 R (1936) 3553 0 R (1937) 3554 0 R (1938) 3555 0 R (1939) 3556 0 R (194) 1907 0 R (1940) 3557 0 R (1941) 3558 0 R (1942) 3559 0 R (1943) 3560 0 R (1944) 3561 0 R (1945) 3562 0 R (1946) 3563 0 R (1947) 3564 0 R (1948) 3565 0 R (1949) 3566 0 R (195) 1908 0 R (1950) 3567 0 R (1953) 3572 0 R (1954) 3573 0 R (1955) 3574 0 R (1956) 3575 0 R (1957) 3576 0 R (1958) 3577 0 R (1959) 3578 0 R (1962) 3579 0 R (1963) 3580 0 R (1964) 3581 0 R (1965) 3582 0 R (1966) 3583 0 R (1967) 3584 0 R (1968) 3585 0 R (1969) 3586 0 R (1970) 3587 0 R (1971) 3588 0 R (1972) 3589 0 R (1973) 3590 0 R (1974) 3591 0 R (1975) 3592 0 R (1976) 3593 0 R (1977) 3594 0 R (1978) 3595 0 R (1979) 3596 0 R (198) 1910 0 R (1984) 3598 0 R (1985) 3603 0 R (1986) 3604 0 R (1987) 3605 0 R (1988) 3606 0 R (1989) 3607 0 R (1990) 3608 0 R (1991) 3609 0 R (1992) 3610 0 R (1993) 3611 0 R (1994) 3612 0 R (1995) 3613 0 R (1996) 3614 0 R (1997) 3615 0 R (1998) 3616 0 R (1999) 3617 0 R (2.0) 6 0 R (20.0) 970 0 R (20.72.89.2) 974 0 R (20.72.90.2) 978 0 R (20.72.91.2) 982 0 R (20.72.92.2) 986 0 R (2000) 3618 0 R (2001) 3619 0 R (2002) 3620 0 R (2003) 3621 0 R (2004) 3622 0 R (2005) 3623 0 R (2006) 3624 0 R (2007) 3625 0 R (2008) 3626 0 R (2009) 3627 0 R (201) 1912 0 R (2010) 3628 0 R (2011) 3629 0 R (2012) 3630 0 R (2013) 3631 0 R (2014) 3632 0 R (2015) 3633 0 R (2016) 3634 0 R (2017) 3635 0 R (2018) 3636 0 R (2019) 3642 0 R (2020) 3643 0 R (2021) 3644 0 R (2022) 3645 0 R (2023) 3646 0 R (2024) 3647 0 R (2027) 3648 0 R (2028) 3649 0 R (2029) 3650 0 R (2030) 3651 0 R (2031) 3652 0 R (2032) 3653 0 R (2033) 3654 0 R (2034) 3655 0 R (2035) 3656 0 R (2036) 3657 0 R (2037) 3658 0 R (2038) 3659 0 R (2039) 3664 0 R (204) 1914 0 R (2040) 3641 0 R (2041) 3665 0 R (2042) 3666 0 R (2043) 3667 0 R (2044) 3668 0 R (2045) 3669 0 R (2046) 3670 0 R (2047) 3671 0 R (2048) 3672 0 R (2051) 3673 0 R (2052) 3674 0 R (2053) 3675 0 R (2054) 3676 0 R (2055) 3677 0 R (2056) 3678 0 R (2057) 3679 0 R (2058) 3686 0 R (2059) 3687 0 R (2062) 3688 0 R (2063) 3689 0 R (2064) 3690 0 R (2065) 3691 0 R (2066) 3692 0 R (2067) 3693 0 R (2068) 3694 0 R (2069) 3695 0 R (207) 1916 0 R (2070) 1534 0 R (2072) 3696 0 R (2073) 3697 0 R (2074) 3698 0 R (2075) 3699 0 R (2076) 3700 0 R (2077) 3701 0 R (2078) 3702 0 R (2079) 3708 0 R (2080) 3685 0 R (2082) 3709 0 R (2083) 3710 0 R (2084) 3711 0 R (2085) 3712 0 R (2086) 3713 0 R (2087) 3714 0 R (2088) 3715 0 R (2089) 3716 0 R (2090) 3717 0 R (2091) 3718 0 R (2092) 3719 0 R (2093) 3720 0 R (2094) 3721 0 R (2095) 3722 0 R (2096) 3723 0 R (2097) 1535 0 R (2099) 3724 0 R (21.0) 990 0 R (21.72.93.2) 994 0 R (21.72.94.2) 998 0 R (210) 1918 0 R (2100) 3725 0 R (2101) 3726 0 R (2102) 3727 0 R (2103) 3728 0 R (2104) 3729 0 R (2105) 3730 0 R (2106) 3731 0 R (2107) 3707 0 R (2112) 3748 0 R (2117) 3752 0 R (2118) 3753 0 R (2119) 3754 0 R (2120) 3755 0 R (2121) 3756 0 R (2122) 3757 0 R (2123) 3758 0 R (2124) 3759 0 R (2127) 3765 0 R (2128) 3766 0 R (2129) 3767 0 R (213) 1920 0 R (2130) 3768 0 R (2131) 3769 0 R (2134) 3770 0 R (2135) 3771 0 R (2138) 3772 0 R (2139) 3773 0 R (2140) 3774 0 R (2145) 3779 0 R (2146) 3780 0 R (2149) 3781 0 R (2150) 3782 0 R (2151) 3783 0 R (2152) 3784 0 R (2153) 3785 0 R (2154) 3786 0 R (2155) 3787 0 R (2156) 3788 0 R (2157) 3789 0 R (2158) 3790 0 R (2159) 3791 0 R (2160) 3792 0 R (2161) 3793 0 R (2162) 3794 0 R (2165) 3795 0 R (2166) 3796 0 R (2167) 3797 0 R (2168) 3798 0 R (2169) 3799 0 R (217) 1921 0 R (2170) 3800 0 R (2171) 3801 0 R (218) 1922 0 R (219) 1923 0 R (2192) 3808 0 R (2193) 3809 0 R (2194) 3810 0 R (2195) 3811 0 R (2196) 3812 0 R (2197) 3813 0 R (2198) 3814 0 R (2199) 3815 0 R (22.0) 1002 0 R (22.72.95.2) 1006 0 R (220) 1924 0 R (2200) 3816 0 R (2201) 3817 0 R (2202) 3818 0 R (2203) 3819 0 R (2204) 3820 0 R (2205) 3821 0 R (2206) 3822 0 R (2207) 3823 0 R (2208) 3824 0 R (2209) 3825 0 R (2210) 3826 0 R (2211) 3827 0 R (2212) 3828 0 R (2213) 3829 0 R (2214) 3830 0 R (2215) 3831 0 R (2216) 3832 0 R (2217) 3833 0 R (2218) 3834 0 R (2219) 3835 0 R (2220) 3836 0 R (2221) 3837 0 R (2222) 3838 0 R (2223) 3839 0 R (2224) 3840 0 R (2225) 3841 0 R (2226) 3842 0 R (2227) 3843 0 R (2228) 3844 0 R (2229) 3845 0 R (223) 1928 0 R (2230) 3846 0 R (2231) 3847 0 R (2232) 3848 0 R (2233) 3849 0 R (2234) 3850 0 R (2235) 3851 0 R (2236) 3852 0 R (2237) 3853 0 R (2238) 3854 0 R (2239) 3855 0 R (2240) 3856 0 R (2241) 3857 0 R (2242) 3858 0 R (2245) 3859 0 R (2247) 3861 0 R (2248) 3862 0 R (2251) 3867 0 R (2256) 3868 0 R (2257) 3869 0 R (2258) 3870 0 R (2259) 3871 0 R (226) 1929 0 R (2262) 3872 0 R (2263) 3877 0 R (2264) 3878 0 R (2265) 3879 0 R (2266) 3880 0 R (2267) 3881 0 R (2268) 3882 0 R (2269) 3883 0 R (227) 1930 0 R (2270) 3884 0 R (2271) 3885 0 R (2272) 3886 0 R (2273) 3887 0 R (2274) 3888 0 R (2275) 3889 0 R (2276) 3890 0 R (2277) 3891 0 R (2278) 3892 0 R (228) 1931 0 R (2281) 3893 0 R (2284) 3894 0 R (2285) 3895 0 R (2286) 3896 0 R (2287) 3897 0 R (2288) 3898 0 R (2289) 3899 0 R (229) 1932 0 R (2290) 3900 0 R (2291) 3901 0 R (2292) 3902 0 R (2293) 3903 0 R (2294) 3904 0 R (2295) 3905 0 R (2296) 3906 0 R (2299) 3911 0 R (23.0) 1010 0 R (23.72.96.2) 1014 0 R (230) 1933 0 R (2300) 3912 0 R (2301) 3913 0 R (2302) 3914 0 R (2303) 3915 0 R (2304) 3916 0 R (2307) 3917 0 R (2308) 3918 0 R (2309) 3919 0 R (231) 1934 0 R (232) 1935 0 R (2328) 3921 0 R (233) 1936 0 R (2331) 3922 0 R (2332) 3923 0 R (2333) 3924 0 R (2334) 3925 0 R (2335) 3926 0 R (2336) 3932 0 R (2337) 3933 0 R (2338) 3934 0 R (2339) 3935 0 R (234) 1937 0 R (2340) 3936 0 R (2341) 3937 0 R (2342) 3938 0 R (2343) 3939 0 R (2344) 3940 0 R (2345) 3941 0 R (2346) 3942 0 R (2347) 3943 0 R (2350) 3944 0 R (2351) 3945 0 R (2352) 3946 0 R (2362) 3948 0 R (2365) 3949 0 R (2368) 3954 0 R (237) 1938 0 R (2371) 3955 0 R (2374) 3956 0 R (2377) 3957 0 R (2378) 3958 0 R (238) 1939 0 R (2381) 3959 0 R (2384) 3960 0 R (2385) 1661 0 R (2387) 3961 0 R (2388) 3966 0 R (2389) 3967 0 R (239) 1940 0 R (2398) 3969 0 R (24) 1801 0 R (24.0) 1018 0 R (24.72.97.2) 1022 0 R (24.72.98.2) 1026 0 R (240) 1941 0 R (2401) 3970 0 R (2402) 3971 0 R (2403) 3972 0 R (2404) 3973 0 R (2405) 3974 0 R (2408) 3975 0 R (2409) 3976 0 R (241) 1942 0 R (2412) 3977 0 R (2413) 3978 0 R (2414) 3979 0 R (2415) 3980 0 R (2416) 3981 0 R (2417) 3986 0 R (2420) 3987 0 R (2423) 3988 0 R (2424) 3989 0 R (2425) 3990 0 R (2428) 3991 0 R (2429) 3992 0 R (2430) 3993 0 R (2431) 3994 0 R (2432) 3995 0 R (2433) 3996 0 R (2434) 3997 0 R (2435) 3998 0 R (2436) 3999 0 R (2437) 4000 0 R (2438) 4001 0 R (2439) 4002 0 R (244) 1943 0 R (2440) 4003 0 R (2441) 4004 0 R (2442) 4005 0 R (2443) 4011 0 R (2444) 4012 0 R (2445) 4013 0 R (2446) 4014 0 R (2447) 4015 0 R (2448) 4016 0 R (2449) 4017 0 R (245) 1944 0 R (2450) 4018 0 R (2451) 4019 0 R (2452) 4020 0 R (2453) 4021 0 R (2454) 4022 0 R (2455) 4023 0 R (2456) 4024 0 R (2457) 4025 0 R (2458) 4026 0 R (2459) 4027 0 R (2460) 4028 0 R (2461) 4029 0 R (2462) 4030 0 R (2463) 4031 0 R (2464) 4032 0 R (2465) 4033 0 R (2466) 4034 0 R (2467) 4035 0 R (2468) 4036 0 R (2469) 4037 0 R (247) 1946 0 R (2470) 4038 0 R (2473) 4039 0 R (2476) 4040 0 R (2479) 4046 0 R (248) 1947 0 R (2480) 4010 0 R (2481) 4047 0 R (2482) 4048 0 R (2483) 4049 0 R (2486) 4050 0 R (2487) 4051 0 R (2488) 4052 0 R (2489) 4053 0 R (249) 1948 0 R (2490) 4054 0 R (2491) 4055 0 R (2492) 1672 0 R (2494) 4056 0 R (2495) 4062 0 R (2496) 4045 0 R (2497) 4063 0 R (2498) 4064 0 R (2499) 1673 0 R (25) 1802 0 R (25.0) 1030 0 R (25.72.100.2) 1038 0 R (25.72.101.2) 1042 0 R (25.72.99.2) 1034 0 R (2501) 4065 0 R (2502) 4066 0 R (2505) 4067 0 R (2506) 4068 0 R (2507) 4069 0 R (2508) 4070 0 R (2509) 4071 0 R (2510) 4072 0 R (2511) 4073 0 R (2514) 4079 0 R (2515) 4080 0 R (2516) 4081 0 R (2517) 4082 0 R (2518) 4083 0 R (2519) 4084 0 R (252) 1954 0 R (2521) 4086 0 R (2522) 4087 0 R (2526) 4089 0 R (2527) 4090 0 R (2528) 4091 0 R (253) 1955 0 R (2531) 4092 0 R (2532) 4093 0 R (2533) 4094 0 R (2534) 4099 0 R (2535) 4078 0 R (2536) 4100 0 R (2537) 4101 0 R (2538) 4102 0 R (254) 1956 0 R (2541) 4103 0 R (2542) 4104 0 R (2543) 4105 0 R (2545) 4107 0 R (2546) 4108 0 R (2547) 4109 0 R (2548) 4110 0 R (2549) 4111 0 R (255) 1957 0 R (2550) 4116 0 R (2551) 1679 0 R (2553) 4117 0 R (2554) 4118 0 R (2555) 4119 0 R (2558) 4124 0 R (2559) 4125 0 R (256) 1958 0 R (2561) 4127 0 R (2565) 4129 0 R (2567) 4130 0 R (257) 1959 0 R (2571) 4132 0 R (2573) 4133 0 R (2574) 4134 0 R (2578) 4136 0 R (258) 1960 0 R (2580) 4137 0 R (2581) 4138 0 R (2582) 4139 0 R (2586) 4141 0 R (2588) 4142 0 R (259) 1961 0 R (2592) 4144 0 R (2594) 4145 0 R (2595) 4146 0 R (2599) 4148 0 R (26) 1803 0 R (26.0) 1046 0 R (26.72.102.2) 1050 0 R (260) 1962 0 R (2601) 4149 0 R (2602) 4150 0 R (2603) 4156 0 R (2604) 4157 0 R (2605) 4158 0 R (2606) 4159 0 R (261) 1963 0 R (2610) 4161 0 R (2612) 4162 0 R (2613) 4163 0 R (2614) 4164 0 R (2615) 4165 0 R (2616) 4166 0 R (2617) 4167 0 R (2618) 4168 0 R (2622) 4170 0 R (2623) 4171 0 R (2625) 4172 0 R (2626) 4173 0 R (2630) 4175 0 R (2631) 4176 0 R (2632) 4177 0 R (2634) 4178 0 R (2635) 4179 0 R (2636) 4155 0 R (2638) 4185 0 R (2639) 4186 0 R (264) 1964 0 R (2640) 4187 0 R (2641) 4188 0 R (2642) 4189 0 R (2643) 4190 0 R (2644) 4191 0 R (2645) 4192 0 R (2646) 4193 0 R (2647) 4194 0 R (2648) 4195 0 R (2649) 4196 0 R (265) 1965 0 R (2650) 4197 0 R (2651) 4198 0 R (2655) 4200 0 R (266) 1966 0 R (2660) 4202 0 R (2661) 4203 0 R (2663) 4204 0 R (2665) 4206 0 R (2669) 4208 0 R (2674) 4210 0 R (2676) 4215 0 R (2677) 4216 0 R (268) 1968 0 R (2681) 4218 0 R (2683) 4219 0 R (2685) 4221 0 R (2689) 4223 0 R (269) 1969 0 R (2694) 4225 0 R (2696) 4226 0 R (2697) 4227 0 R (2698) 4228 0 R (27.0) 1054 0 R (27.72.103.2) 1058 0 R (27.72.104.2) 1062 0 R (270) 1970 0 R (2702) 4230 0 R (2703) 4231 0 R (2705) 4232 0 R (2706) 4233 0 R (2707) 4234 0 R (2708) 4235 0 R (2709) 4236 0 R (271) 1971 0 R (2710) 4237 0 R (2711) 4238 0 R (2715) 4244 0 R (2717) 4245 0 R (2718) 4246 0 R (272) 1972 0 R (2722) 4248 0 R (2727) 4250 0 R (2729) 4251 0 R (273) 1973 0 R (2733) 4253 0 R (2734) 4254 0 R (2736) 4255 0 R (274) 1974 0 R (2740) 4257 0 R (2745) 4259 0 R (275) 1975 0 R (2750) 4261 0 R (2754) 4264 0 R (2758) 4270 0 R (2763) 4272 0 R (2768) 4274 0 R (2770) 4275 0 R (2771) 4276 0 R (2772) 4277 0 R (2773) 4278 0 R (2774) 4279 0 R (2775) 4280 0 R (2776) 4281 0 R (2777) 4282 0 R (2778) 4283 0 R (2779) 4284 0 R (278) 1978 0 R (2780) 4285 0 R (2781) 4286 0 R (2782) 4287 0 R (2783) 4288 0 R (2784) 4289 0 R (2785) 4290 0 R (2786) 4291 0 R (2787) 4292 0 R (279) 1979 0 R (2792) 4295 0 R (2794) 4296 0 R (2795) 4297 0 R (2796) 4298 0 R (2797) 4299 0 R (2798) 4304 0 R (2799) 4305 0 R (28) 1805 0 R (28.0) 1066 0 R (28.72.105.2) 1070 0 R (28.72.106.2) 1074 0 R (280) 1980 0 R (2803) 4307 0 R (2805) 4308 0 R (2806) 4309 0 R (2807) 4310 0 R (2808) 4311 0 R (2809) 4312 0 R (281) 1981 0 R (2810) 4313 0 R (2811) 4314 0 R (2812) 4315 0 R (2814) 4317 0 R (2815) 4318 0 R (2816) 4319 0 R (2817) 4320 0 R (2818) 4321 0 R (2819) 4322 0 R (282) 1982 0 R (2821) 4324 0 R (2825) 4330 0 R (2827) 4331 0 R (2828) 4332 0 R (2829) 4333 0 R (283) 1983 0 R (2830) 4334 0 R (2835) 4337 0 R (2838) 4339 0 R (284) 1984 0 R (2842) 4341 0 R (2844) 4342 0 R (2848) 4344 0 R (285) 1985 0 R (2850) 4345 0 R (2851) 4346 0 R (2852) 4347 0 R (2853) 4348 0 R (2854) 4349 0 R (2855) 4350 0 R (2856) 4351 0 R (2857) 4352 0 R (2858) 4353 0 R (2859) 4354 0 R (286) 1986 0 R (2860) 4355 0 R (2861) 4356 0 R (2862) 4362 0 R (2863) 4363 0 R (2864) 4364 0 R (2865) 4365 0 R (2866) 4366 0 R (2867) 4367 0 R (2868) 4368 0 R (2869) 4369 0 R (287) 1987 0 R (2870) 4370 0 R (2871) 4371 0 R (2875) 4373 0 R (2877) 4374 0 R (2878) 4375 0 R (2879) 4376 0 R (288) 1991 0 R (2880) 4377 0 R (2884) 4379 0 R (2889) 4381 0 R (289) 1992 0 R (2891) 4382 0 R (2892) 4383 0 R (2893) 4384 0 R (2894) 4385 0 R (2895) 4386 0 R (2896) 4387 0 R (2897) 4388 0 R (2898) 4389 0 R (29.0) 1078 0 R (29.72.107.2) 1082 0 R (29.72.108.2) 1086 0 R (290) 1993 0 R (2900) 4391 0 R (2901) 4392 0 R (2905) 4394 0 R (2907) 4395 0 R (2908) 4396 0 R (2909) 4397 0 R (291) 1994 0 R (2910) 4398 0 R (2911) 4399 0 R (2912) 4400 0 R (2913) 4401 0 R (2915) 4403 0 R (2919) 4405 0 R (292) 1995 0 R (2921) 4406 0 R (2922) 4407 0 R (2923) 4408 0 R (2927) 4416 0 R (2929) 4417 0 R (293) 1996 0 R (2930) 4418 0 R (2931) 4419 0 R (2932) 4420 0 R (2933) 4421 0 R (2937) 4423 0 R (2939) 4424 0 R (294) 1997 0 R (2940) 4425 0 R (2941) 4426 0 R (2942) 4427 0 R (2946) 4429 0 R (2948) 4430 0 R (2949) 4431 0 R (295) 1998 0 R (2950) 4432 0 R (2952) 4434 0 R (2956) 4436 0 R (2958) 4437 0 R (296) 1999 0 R (2960) 4414 0 R (2965) 4444 0 R (297) 2000 0 R (2970) 4446 0 R (2971) 4447 0 R (2973) 4448 0 R (2974) 4449 0 R (2975) 4450 0 R (2976) 4451 0 R (2977) 4452 0 R (298) 2001 0 R (2981) 4454 0 R (2983) 4455 0 R (2984) 4456 0 R (2985) 4457 0 R (2986) 4458 0 R (2987) 4459 0 R (2988) 4460 0 R (2989) 4461 0 R (299) 2002 0 R (2990) 4462 0 R (2991) 4463 0 R (2992) 4464 0 R (2993) 4465 0 R (2994) 4466 0 R (2995) 4467 0 R (2996) 4468 0 R (2998) 4470 0 R (3.0) 10 0 R (30.0) 1090 0 R (30.72.109.2) 1094 0 R (300) 2003 0 R (3002) 4472 0 R (3007) 4474 0 R (3009) 4480 0 R (301) 2004 0 R (3010) 4481 0 R (3011) 4482 0 R (3012) 4483 0 R (3013) 4484 0 R (3014) 4485 0 R (3018) 4487 0 R (3019) 4488 0 R (302) 2005 0 R (3021) 4489 0 R (303) 2006 0 R (3032) 4492 0 R (3033) 4493 0 R (3038) 4495 0 R (3040) 4496 0 R (3044) 4498 0 R (3045) 4499 0 R (3047) 4500 0 R (3048) 4501 0 R (3049) 4502 0 R (305) 2008 0 R (3050) 4503 0 R (3051) 4504 0 R (3053) 4479 0 R (3057) 4511 0 R (3059) 4512 0 R (306) 2009 0 R (3060) 4513 0 R (3061) 4514 0 R (3065) 4516 0 R (3067) 4517 0 R (3068) 4518 0 R (3069) 4519 0 R (307) 2010 0 R (3070) 4520 0 R (3074) 4522 0 R (3075) 4523 0 R (3076) 4524 0 R (3078) 4525 0 R (3079) 4526 0 R (308) 2011 0 R (3080) 4527 0 R (3084) 4529 0 R (3086) 4530 0 R (3087) 4531 0 R (3088) 4532 0 R (3089) 4533 0 R (309) 2012 0 R (3090) 4534 0 R (3091) 4535 0 R (3092) 4536 0 R (3093) 4537 0 R (3094) 4538 0 R (3095) 4539 0 R (3096) 4544 0 R (3097) 4545 0 R (3098) 4546 0 R (3099) 4547 0 R (31) 1806 0 R (310) 2013 0 R (3100) 4548 0 R (3101) 4549 0 R (3102) 4550 0 R (3105) 4556 0 R (3108) 4557 0 R (3109) 4558 0 R (311) 2014 0 R (3110) 4559 0 R (3111) 4560 0 R (3114) 4563 0 R (3115) 4564 0 R (3116) 4565 0 R (3117) 4566 0 R (3118) 4567 0 R (312) 2015 0 R (3121) 4568 0 R (3122) 4569 0 R (3123) 4570 0 R (3124) 4571 0 R (3125) 4572 0 R (3129) 4573 0 R (3130) 4574 0 R (3131) 4575 0 R (3132) 4576 0 R (3133) 4577 0 R (3134) 4578 0 R (3135) 4583 0 R (3138) 4584 0 R (3139) 4585 0 R (314) 2017 0 R (3140) 4586 0 R (3143) 4587 0 R (3144) 4588 0 R (3145) 4589 0 R (3146) 4590 0 R (3147) 4591 0 R (3148) 4592 0 R (3149) 4593 0 R (315) 2018 0 R (3150) 4594 0 R (3153) 4595 0 R (3154) 4596 0 R (3155) 4597 0 R (3156) 4602 0 R (3157) 4603 0 R (3158) 4604 0 R (3159) 4605 0 R (316) 2019 0 R (3160) 4606 0 R (3161) 4607 0 R (3162) 4608 0 R (3165) 4609 0 R (3166) 4610 0 R (3167) 4611 0 R (3168) 4612 0 R (3169) 4613 0 R (317) 2020 0 R (3170) 4614 0 R (3173) 4615 0 R (3174) 4616 0 R (3175) 4621 0 R (3176) 4622 0 R (3177) 4623 0 R (3178) 4624 0 R (318) 2021 0 R (3181) 4625 0 R (3182) 4626 0 R (3183) 4627 0 R (3184) 4628 0 R (3185) 4629 0 R (3188) 4630 0 R (3189) 4631 0 R (319) 2022 0 R (3190) 4632 0 R (3191) 4633 0 R (3192) 4634 0 R (3193) 4635 0 R (3194) 4636 0 R (3195) 1749 0 R (3197) 4637 0 R (3198) 4638 0 R (3199) 4643 0 R (32) 1807 0 R (320) 2023 0 R (3200) 4644 0 R (3201) 4645 0 R (3205) 4646 0 R (3206) 4647 0 R (3207) 4648 0 R (3208) 4649 0 R (321) 2024 0 R (3212) 4651 0 R (3213) 4652 0 R (3214) 4653 0 R (3215) 4654 0 R (3216) 4655 0 R (3219) 4660 0 R (322) 2025 0 R (3220) 4661 0 R (3223) 4662 0 R (3224) 4663 0 R (3225) 4664 0 R (3226) 4665 0 R (3227) 4666 0 R (3228) 4667 0 R (3229) 4668 0 R (3230) 4669 0 R (3231) 4670 0 R (3232) 4671 0 R (3233) 4672 0 R (3234) 4673 0 R (3235) 4674 0 R (3236) 4675 0 R (3237) 4676 0 R (3238) 4677 0 R (3239) 4678 0 R (324) 2027 0 R (3240) 4679 0 R (3241) 4680 0 R (3242) 4681 0 R (3243) 4682 0 R (3244) 4683 0 R (3245) 4684 0 R (3246) 4685 0 R (3247) 4686 0 R (3248) 4687 0 R (3249) 4688 0 R (325) 2028 0 R (3250) 4689 0 R (3251) 4690 0 R (3254) 4691 0 R (3255) 4692 0 R (3256) 4693 0 R (3257) 4694 0 R (3258) 4695 0 R (3259) 4696 0 R (3260) 4697 0 R (3261) 4698 0 R (3262) 4699 0 R (3267) 4705 0 R (3268) 4706 0 R (3269) 4707 0 R (327) 2030 0 R (3270) 4708 0 R (3271) 4709 0 R (3272) 4710 0 R (3273) 4711 0 R (3274) 4712 0 R (3275) 4713 0 R (3276) 4714 0 R (3277) 4715 0 R (3278) 4716 0 R (3279) 4717 0 R (328) 2031 0 R (3280) 4718 0 R (3281) 4719 0 R (3282) 4720 0 R (3285) 4721 0 R (3286) 4722 0 R (3287) 4723 0 R (3288) 4724 0 R (3289) 4725 0 R (3290) 4726 0 R (3291) 4727 0 R (3292) 4734 0 R (3293) 4728 0 R (3295) 4735 0 R (3296) 4736 0 R (3297) 4737 0 R (3298) 4738 0 R (3299) 4739 0 R (33) 1808 0 R (330) 2033 0 R (3300) 4740 0 R (3301) 4741 0 R (3302) 4742 0 R (3303) 4743 0 R (3304) 4744 0 R (3305) 4745 0 R (3306) 4746 0 R (3307) 4747 0 R (3308) 4748 0 R (3309) 4749 0 R (331) 2034 0 R (3310) 4750 0 R (3311) 4751 0 R (3312) 4752 0 R (3313) 4753 0 R (3314) 4754 0 R (3315) 4755 0 R (3316) 4756 0 R (3317) 4757 0 R (3318) 4758 0 R (3319) 4763 0 R (3320) 4733 0 R (3322) 4764 0 R (3323) 4765 0 R (3324) 4766 0 R (3325) 4767 0 R (3326) 4768 0 R (3327) 4769 0 R (3328) 4770 0 R (3329) 4771 0 R (333) 2036 0 R (3330) 4772 0 R (3331) 4773 0 R (3332) 4774 0 R (3333) 4775 0 R (3334) 4776 0 R (3335) 4777 0 R (3336) 4778 0 R (3339) 4779 0 R (334) 2037 0 R (3340) 4780 0 R (3341) 4781 0 R (3342) 4782 0 R (3343) 4783 0 R (3344) 4784 0 R (3345) 4785 0 R (3346) 4786 0 R (3347) 4787 0 R (3348) 4792 0 R (3349) 4793 0 R (3350) 4794 0 R (3351) 4795 0 R (3352) 4796 0 R (3353) 4797 0 R (3354) 4798 0 R (3355) 4799 0 R (3356) 4800 0 R (3357) 4801 0 R (3358) 4802 0 R (3359) 4803 0 R (336) 2039 0 R (3360) 4804 0 R (3361) 4805 0 R (3362) 4806 0 R (3363) 4807 0 R (3364) 4808 0 R (3365) 4809 0 R (3366) 4810 0 R (3367) 4811 0 R (337) 2040 0 R (3370) 4816 0 R (3371) 4817 0 R (3372) 4818 0 R (3375) 4819 0 R (3376) 4820 0 R (3377) 4821 0 R (3380) 4822 0 R (3381) 4823 0 R (3382) 4824 0 R (3383) 4825 0 R (3384) 4826 0 R (3385) 4827 0 R (3386) 4832 0 R (3387) 4833 0 R (339) 2042 0 R (3390) 4834 0 R (3391) 4835 0 R (3394) 4836 0 R (3395) 4837 0 R (3396) 4838 0 R (3397) 4845 0 R (340) 2043 0 R (3400) 4846 0 R (3401) 4847 0 R (3402) 4848 0 R (3403) 4849 0 R (3404) 4850 0 R (3405) 4851 0 R (3406) 4852 0 R (3407) 4853 0 R (3408) 4854 0 R (3409) 4855 0 R (3410) 4856 0 R (3411) 4857 0 R (3412) 4858 0 R (3413) 4859 0 R (3414) 4860 0 R (3415) 4861 0 R (3416) 4862 0 R (3417) 4863 0 R (3418) 4864 0 R (3419) 4865 0 R (3420) 4866 0 R (3421) 4867 0 R (3422) 4868 0 R (3423) 4869 0 R (3424) 4870 0 R (3425) 4871 0 R (3426) 4872 0 R (3427) 4873 0 R (3428) 4874 0 R (3429) 4875 0 R (3430) 4876 0 R (3431) 4844 0 R (3432) 4881 0 R (3433) 4882 0 R (3436) 4883 0 R (3437) 4884 0 R (3438) 4885 0 R (344) 2045 0 R (3441) 4886 0 R (3442) 4887 0 R (3445) 4888 0 R (3446) 4893 0 R (3449) 4894 0 R (345) 2049 0 R (3452) 4895 0 R (3455) 4896 0 R (3456) 4897 0 R (3457) 4898 0 R (3460) 4899 0 R (3461) 4900 0 R (3462) 4901 0 R (3463) 4906 0 R (3464) 4907 0 R (3466) 4912 0 R (3470) 4913 0 R (3471) 4914 0 R (3472) 4915 0 R (3473) 4916 0 R (3478) 4919 0 R (3479) 4920 0 R (348) 2050 0 R (3480) 4921 0 R (3481) 4922 0 R (3482) 4923 0 R (3483) 4924 0 R (3485) 4925 0 R (3486) 4926 0 R (3487) 4927 0 R (3488) 4928 0 R (3489) 4929 0 R (3491) 4930 0 R (3492) 4931 0 R (3493) 4932 0 R (3494) 4933 0 R (3495) 4934 0 R (3496) 4935 0 R (3497) 4936 0 R (3498) 4937 0 R (3499) 4938 0 R (3501) 4939 0 R (3502) 4940 0 R (3503) 4941 0 R (3504) 4942 0 R (3505) 4943 0 R (3506) 4944 0 R (3507) 4945 0 R (3508) 4946 0 R (3509) 4947 0 R (351) 2051 0 R (3510) 4948 0 R (3511) 4949 0 R (3513) 4950 0 R (3514) 4951 0 R (3515) 4952 0 R (3516) 4953 0 R (3517) 4954 0 R (3518) 4955 0 R (352) 2052 0 R (3523) 4962 0 R (3524) 4963 0 R (3525) 4964 0 R (3526) 4965 0 R (3527) 4966 0 R (3528) 4967 0 R (353) 2053 0 R (3530) 4968 0 R (3531) 4969 0 R (3532) 4970 0 R (3535) 4971 0 R (3536) 4972 0 R (354) 2054 0 R (3542) 4974 0 R (3543) 4975 0 R (3544) 4976 0 R (3545) 4977 0 R (3548) 4979 0 R (3549) 4980 0 R (355) 2055 0 R (3553) 4981 0 R (3554) 4982 0 R (3555) 4983 0 R (3556) 4984 0 R (3557) 4985 0 R (356) 2056 0 R (3560) 4986 0 R (3561) 4987 0 R (3562) 4988 0 R (3563) 4989 0 R (3564) 4996 0 R (3565) 4997 0 R (3566) 4998 0 R (357) 2057 0 R (3571) 5000 0 R (3572) 5001 0 R (3573) 5002 0 R (3574) 5003 0 R (3577) 5004 0 R (3578) 5005 0 R (3579) 5006 0 R (358) 2058 0 R (3585) 5010 0 R (3586) 5011 0 R (3587) 5012 0 R (3588) 5013 0 R (3589) 5014 0 R (359) 2059 0 R (3594) 5017 0 R (3595) 5018 0 R (36) 1809 0 R (3601) 5023 0 R (3602) 5024 0 R (3603) 5025 0 R (3604) 5026 0 R (3605) 5027 0 R (3606) 5028 0 R (3609) 5030 0 R (3610) 5031 0 R (3612) 5033 0 R (3613) 5034 0 R (3615) 5035 0 R (3616) 5036 0 R (3617) 5037 0 R (3618) 5038 0 R (362) 2060 0 R (3620) 5039 0 R (3621) 5040 0 R (3622) 5041 0 R (3623) 5042 0 R (3624) 5043 0 R (3626) 5044 0 R (3627) 5045 0 R (3628) 5046 0 R (3629) 5047 0 R (3636) 5050 0 R (3637) 5051 0 R (3638) 5052 0 R (3641) 5053 0 R (3642) 5054 0 R (3644) 5060 0 R (3645) 5061 0 R (3646) 5062 0 R (3647) 5063 0 R (365) 2061 0 R (3651) 5065 0 R (3652) 5066 0 R (3653) 5067 0 R (3654) 5068 0 R (3655) 5069 0 R (3656) 5070 0 R (3657) 5071 0 R (3658) 5072 0 R (3664) 5074 0 R (3665) 5075 0 R (3669) 5077 0 R (3670) 5078 0 R (3671) 5079 0 R (3676) 5081 0 R (3677) 5082 0 R (3678) 5083 0 R (368) 2062 0 R (3680) 5088 0 R (3681) 5089 0 R (3682) 5090 0 R (3683) 5091 0 R (3684) 5092 0 R (3685) 5093 0 R (3686) 5094 0 R (3687) 5095 0 R (3688) 5096 0 R (3689) 5097 0 R (3690) 5098 0 R (3691) 5099 0 R (3692) 5100 0 R (3693) 5101 0 R (3698) 5104 0 R (3699) 5105 0 R (37) 1810 0 R (3700) 5106 0 R (3704) 5107 0 R (3705) 5108 0 R (371) 2063 0 R (3710) 5111 0 R (3711) 5112 0 R (3712) 5113 0 R (3713) 5116 0 R (3714) 5114 0 R (3715) 5115 0 R (372) 2064 0 R (373) 2065 0 R (376) 2071 0 R (377) 2072 0 R (38) 1811 0 R (380) 2073 0 R (383) 2074 0 R (384) 2075 0 R (385) 2076 0 R (386) 2077 0 R (387) 2078 0 R (39) 1812 0 R (390) 2079 0 R (391) 2080 0 R (395) 2082 0 R (396) 2083 0 R (397) 2084 0 R (398) 2085 0 R (399) 2086 0 R (4.0) 14 0 R (40) 1813 0 R (400) 2087 0 R (401) 2088 0 R (402) 2089 0 R (403) 2094 0 R (404) 2095 0 R (405) 2070 0 R (407) 2096 0 R (408) 2097 0 R (41) 1814 0 R (411) 2098 0 R (416) 2102 0 R (417) 2103 0 R (42) 1815 0 R (421) 2106 0 R (422) 2107 0 R (423) 2108 0 R (424) 2109 0 R (425) 2110 0 R (426) 2111 0 R (427) 2112 0 R (428) 2113 0 R (429) 2114 0 R (43) 1816 0 R (430) 2115 0 R (431) 2116 0 R (433) 2121 0 R (434) 2122 0 R (435) 2123 0 R (436) 2124 0 R (437) 2125 0 R (438) 2126 0 R (439) 2127 0 R (44) 1817 0 R (440) 2128 0 R (441) 2129 0 R (443) 2130 0 R (444) 2131 0 R (445) 2132 0 R (446) 2133 0 R (447) 2134 0 R (448) 2135 0 R (449) 2136 0 R (45) 1818 0 R (450) 2137 0 R (453) 2139 0 R (454) 2140 0 R (455) 2141 0 R (456) 2144 0 R (458) 2146 0 R (459) 2147 0 R (46) 1819 0 R (460) 2148 0 R (461) 2149 0 R (462) 2150 0 R (463) 2151 0 R (464) 2152 0 R (465) 2153 0 R (466) 2154 0 R (467) 2155 0 R (468) 2156 0 R (469) 2163 0 R (47) 1820 0 R (470) 2164 0 R (471) 2165 0 R (472) 2166 0 R (473) 2167 0 R (474) 2168 0 R (475) 2169 0 R (476) 2170 0 R (477) 2171 0 R (48) 1821 0 R (480) 2172 0 R (481) 2173 0 R (482) 2174 0 R (484) 2175 0 R (485) 2176 0 R (486) 2177 0 R (487) 2178 0 R (489) 2180 0 R (49) 1822 0 R (490) 2181 0 R (491) 2182 0 R (492) 2183 0 R (493) 2184 0 R (494) 2185 0 R (495) 2186 0 R (496) 2187 0 R (497) 2188 0 R (498) 2189 0 R (5.0) 18 0 R (5.1.1) 22 0 R (5.2.1) 26 0 R (5.3.1) 30 0 R (5.4.1) 34 0 R (5.5.1) 38 0 R (50) 1823 0 R (500) 2190 0 R (501) 2191 0 R (502) 2192 0 R (503) 2193 0 R (504) 2194 0 R (505) 2195 0 R (506) 2196 0 R (507) 2197 0 R (508) 2198 0 R (509) 2199 0 R (51) 1824 0 R (510) 2200 0 R (511) 2201 0 R (512) 2206 0 R (513) 2162 0 R (515) 2207 0 R (516) 2208 0 R (517) 2209 0 R (518) 2210 0 R (519) 2211 0 R (52) 1829 0 R (520) 2212 0 R (521) 1241 0 R (523) 2213 0 R (524) 2214 0 R (525) 2215 0 R (526) 2216 0 R (527) 2217 0 R (528) 2218 0 R (53) 1830 0 R (531) 2219 0 R (536) 2221 0 R (537) 2222 0 R (538) 2223 0 R (540) 2224 0 R (541) 2225 0 R (542) 2226 0 R (544) 2227 0 R (545) 2228 0 R (546) 2229 0 R (547) 2230 0 R (548) 2231 0 R (549) 2232 0 R (550) 2233 0 R (551) 2239 0 R (552) 2240 0 R (553) 2241 0 R (555) 2242 0 R (556) 2243 0 R (557) 2244 0 R (558) 2245 0 R (559) 2246 0 R (56) 1831 0 R (560) 2247 0 R (561) 2248 0 R (563) 2249 0 R (564) 2250 0 R (565) 2251 0 R (566) 2252 0 R (57) 1832 0 R (570) 2253 0 R (571) 2254 0 R (572) 2255 0 R (573) 2256 0 R (574) 2257 0 R (575) 2258 0 R (576) 2259 0 R (577) 2260 0 R (578) 2261 0 R (579) 2262 0 R (580) 2263 0 R (581) 2264 0 R (582) 2265 0 R (583) 2266 0 R (584) 2267 0 R (585) 2268 0 R (586) 2269 0 R (587) 2270 0 R (588) 2271 0 R (589) 2272 0 R (59) 1833 0 R (590) 2273 0 R (591) 2274 0 R (592) 2275 0 R (593) 2238 0 R (594) 2280 0 R (595) 2281 0 R (596) 2282 0 R (6.0) 42 0 R (6.10.1) 250 0 R (6.10.22.2) 254 0 R (6.10.23.2) 258 0 R (6.10.23.21.3) 262 0 R (6.10.23.21.7.4) 266 0 R (6.10.23.21.8.4) 270 0 R (6.10.23.21.9.4) 274 0 R (6.10.24.2) 278 0 R (6.10.25.2) 282 0 R (6.10.25.22.3) 286 0 R (6.10.25.23.3) 290 0 R (6.10.26.2) 294 0 R (6.10.26.24.3) 298 0 R (6.10.27.2) 302 0 R (6.6.1) 46 0 R (6.6.1.2) 50 0 R (6.6.2.1.3) 58 0 R (6.6.2.2) 54 0 R (6.6.2.2.3) 62 0 R (6.6.3.2) 66 0 R (6.6.4.2) 70 0 R (6.6.5.10.3) 106 0 R (6.6.5.11.3) 110 0 R (6.6.5.2) 74 0 R (6.6.5.3.3) 78 0 R (6.6.5.4.3) 82 0 R (6.6.5.5.3) 86 0 R (6.6.5.6.3) 90 0 R (6.6.5.7.3) 94 0 R (6.6.5.8.3) 98 0 R (6.6.5.9.3) 102 0 R (6.6.6.2) 114 0 R (6.7.1) 118 0 R (6.7.10.14.3) 170 0 R (6.7.10.15.3) 174 0 R (6.7.10.16.3) 178 0 R (6.7.10.2) 166 0 R (6.7.11.2) 182 0 R (6.7.7.2) 122 0 R (6.7.8.12.1.4) 134 0 R (6.7.8.12.2.4) 138 0 R (6.7.8.12.3) 130 0 R (6.7.8.12.3.4) 142 0 R (6.7.8.12.4.4) 146 0 R (6.7.8.13.3) 150 0 R (6.7.8.13.5.4) 154 0 R (6.7.8.13.6.4) 158 0 R (6.7.8.2) 126 0 R (6.7.9.2) 162 0 R (6.8.1) 186 0 R (6.8.12.2) 190 0 R (6.8.13.2) 194 0 R (6.8.14.2) 198 0 R (6.8.15.2) 202 0 R (6.8.16.2) 206 0 R (6.8.17.2) 210 0 R (6.8.18.2) 214 0 R (6.9.1) 218 0 R (6.9.19.17.3) 226 0 R (6.9.19.18.3) 230 0 R (6.9.19.19.3) 234 0 R (6.9.19.2) 222 0 R (6.9.19.20.3) 238 0 R (6.9.20.2) 242 0 R (6.9.21.2) 246 0 R (60) 1834 0 R (600) 2284 0 R (601) 2285 0 R (603) 2287 0 R (604) 2288 0 R (606) 2290 0 R (607) 2291 0 R (608) 2292 0 R (609) 2293 0 R (61) 1835 0 R (610) 2294 0 R (611) 2295 0 R (612) 2296 0 R (613) 2297 0 R (614) 2298 0 R (615) 2299 0 R (616) 2300 0 R (617) 2301 0 R (618) 2302 0 R (619) 2303 0 R (62) 1836 0 R (620) 2304 0 R (621) 2305 0 R (622) 2306 0 R (623) 2307 0 R (624) 2308 0 R (627) 2314 0 R (628) 2315 0 R (630) 2317 0 R (631) 2318 0 R (633) 2320 0 R (634) 2321 0 R (635) 2322 0 R (636) 2323 0 R (637) 2324 0 R (638) 2325 0 R (639) 2326 0 R (64) 1837 0 R (640) 2327 0 R (644) 2329 0 R (645) 1248 0 R (647) 2330 0 R (648) 2331 0 R (649) 2332 0 R (65) 1838 0 R (650) 2333 0 R (651) 2336 0 R (652) 2337 0 R (653) 2338 0 R (654) 2339 0 R (655) 2340 0 R (656) 2341 0 R (657) 2342 0 R (658) 1249 0 R (66) 1839 0 R (660) 2343 0 R (661) 2344 0 R (662) 2345 0 R (663) 2346 0 R (664) 2347 0 R (665) 2348 0 R (666) 2349 0 R (667) 2350 0 R (668) 2351 0 R (669) 2356 0 R (67) 1840 0 R (670) 2357 0 R (671) 2358 0 R (672) 2359 0 R (673) 2360 0 R (676) 2361 0 R (677) 2362 0 R (678) 2363 0 R (679) 2364 0 R (680) 2365 0 R (681) 2366 0 R (684) 2367 0 R (686) 2369 0 R (687) 2370 0 R (688) 2371 0 R (689) 2372 0 R (69) 1841 0 R (690) 2373 0 R (691) 2374 0 R (692) 2375 0 R (695) 2381 0 R (696) 2382 0 R (697) 2383 0 R (698) 2384 0 R (699) 2385 0 R (7.0) 306 0 R (7.11.1) 310 0 R (7.12.1) 314 0 R (7.12.28.2) 318 0 R (7.12.29.2) 322 0 R (7.12.29.25.3) 326 0 R (7.12.29.26.3) 330 0 R (7.13.1) 334 0 R (7.14.1) 338 0 R (7.15.1) 342 0 R (7.16.1) 346 0 R (7.17.1) 350 0 R (7.17.30.2) 354 0 R (7.17.31.2) 358 0 R (7.17.31.27.3) 362 0 R (7.17.32.2) 366 0 R (7.17.33.2) 370 0 R (7.17.33.28.3) 374 0 R (7.17.33.29.3) 378 0 R (7.17.34.2) 382 0 R (7.17.34.30.10.4) 390 0 R (7.17.34.30.11.4) 394 0 R (7.17.34.30.12.4) 398 0 R (7.17.34.30.13.4) 402 0 R (7.17.34.30.14.4) 406 0 R (7.17.34.30.15.4) 410 0 R (7.17.34.30.16.4) 414 0 R (7.17.34.30.17.4) 418 0 R (7.17.34.30.18.4) 422 0 R (7.17.34.30.3) 386 0 R (7.17.34.31.3) 426 0 R (7.17.34.32.3) 430 0 R (7.18.1) 434 0 R (7.19.1) 438 0 R (7.20.1) 442 0 R (7.20.35.2) 446 0 R (7.20.36.2) 450 0 R (7.20.37.2) 454 0 R (7.20.38.2) 458 0 R (7.20.38.33.3) 462 0 R (7.20.38.34.3) 466 0 R (7.20.38.35.3) 470 0 R (7.21.1) 474 0 R (7.21.39.2) 478 0 R (7.21.40.2) 482 0 R (7.21.40.36.3) 486 0 R (7.21.40.37.3) 490 0 R (7.21.40.38.3) 494 0 R (7.21.41.2) 498 0 R (70) 1842 0 R (700) 2386 0 R (701) 2387 0 R (702) 2388 0 R (703) 2389 0 R (704) 2390 0 R (705) 2391 0 R (708) 2392 0 R (709) 2393 0 R (71) 1843 0 R (710) 2394 0 R (711) 2395 0 R (712) 2396 0 R (715) 2398 0 R (716) 2399 0 R (717) 2400 0 R (72) 1844 0 R (720) 2402 0 R (721) 2403 0 R (722) 2404 0 R (723) 2405 0 R (724) 2406 0 R (725) 2407 0 R (726) 2408 0 R (729) 2410 0 R (730) 2411 0 R (731) 2412 0 R (732) 2413 0 R (733) 2414 0 R (736) 2421 0 R (737) 2422 0 R (738) 2423 0 R (739) 2424 0 R (74) 1845 0 R (742) 2426 0 R (743) 2427 0 R (744) 2428 0 R (745) 2429 0 R (748) 2431 0 R (749) 2432 0 R (75) 1846 0 R (750) 2433 0 R (751) 2434 0 R (754) 2436 0 R (755) 2437 0 R (756) 2438 0 R (757) 2439 0 R (76) 1847 0 R (760) 2440 0 R (761) 2441 0 R (762) 2442 0 R (763) 2443 0 R (764) 2444 0 R (765) 2445 0 R (766) 2446 0 R (767) 2447 0 R (768) 2448 0 R (769) 2449 0 R (77) 1848 0 R (770) 2450 0 R (771) 2451 0 R (774) 2456 0 R (775) 2457 0 R (776) 2458 0 R (779) 2459 0 R (782) 2460 0 R (783) 2461 0 R (784) 2462 0 R (787) 2463 0 R (79) 1849 0 R (790) 2466 0 R (791) 2467 0 R (792) 2468 0 R (793) 2469 0 R (794) 2470 0 R (795) 2471 0 R (796) 2472 0 R (797) 2473 0 R (798) 2474 0 R (799) 2475 0 R (8.0) 502 0 R (8.22.1) 506 0 R (8.22.42.2) 510 0 R (8.22.43.2) 514 0 R (8.22.44.2) 518 0 R (8.23.1) 522 0 R (8.23.45.2) 526 0 R (8.23.46.2) 530 0 R (8.23.47.2) 534 0 R (8.24.1) 538 0 R (8.24.48.2) 542 0 R (8.24.49.2) 546 0 R (8.25.1) 550 0 R (8.25.50.2) 554 0 R (80) 1850 0 R (802) 2481 0 R (803) 2482 0 R (804) 2483 0 R (805) 2484 0 R (806) 2485 0 R (807) 2486 0 R (81) 1851 0 R (810) 2487 0 R (813) 2490 0 R (814) 2491 0 R (815) 2492 0 R (816) 2493 0 R (82) 1852 0 R (820) 2498 0 R (821) 2499 0 R (822) 2500 0 R (823) 2501 0 R (824) 2502 0 R (825) 2503 0 R (827) 2505 0 R (828) 2506 0 R (829) 2507 0 R (830) 2508 0 R (831) 2509 0 R (832) 2510 0 R (833) 2511 0 R (834) 2512 0 R (835) 2513 0 R (836) 2514 0 R (837) 2515 0 R (838) 2516 0 R (84) 1853 0 R (842) 2519 0 R (843) 2520 0 R (845) 2521 0 R (847) 2522 0 R (85) 1854 0 R (850) 2523 0 R (851) 2524 0 R (852) 2525 0 R (853) 2526 0 R (854) 2527 0 R (855) 2528 0 R (856) 2529 0 R (857) 2530 0 R (858) 2531 0 R (859) 2532 0 R (86) 1855 0 R (860) 2533 0 R (861) 2534 0 R (863) 2535 0 R (864) 2536 0 R (865) 2537 0 R (866) 2538 0 R (87) 1856 0 R (870) 1362 0 R (872) 2544 0 R (874) 1363 0 R (876) 2546 0 R (877) 2547 0 R (878) 2548 0 R (879) 2549 0 R (880) 2550 0 R (881) 2551 0 R (882) 1364 0 R (884) 2552 0 R (886) 2553 0 R (887) 2554 0 R (888) 2555 0 R (89) 1857 0 R (890) 2561 0 R (891) 2562 0 R (892) 2563 0 R (893) 2564 0 R (895) 2565 0 R (896) 2566 0 R (897) 2567 0 R (898) 2568 0 R (899) 2569 0 R (9.0) 558 0 R (9.26.1) 562 0 R (9.26.51.2) 566 0 R (9.26.52.2) 570 0 R (9.26.53.2) 574 0 R (9.26.54.2) 578 0 R (9.26.55.2) 582 0 R (9.26.56.2) 586 0 R (9.27.1) 590 0 R (9.28.1) 594 0 R (9.29.1) 598 0 R (9.30.1) 602 0 R (9.30.57.2) 606 0 R (9.30.57.39.3) 610 0 R (9.31.1) 614 0 R (9.31.58.2) 618 0 R (9.31.59.2) 622 0 R (9.31.60.2) 626 0 R (9.31.61.2) 630 0 R (9.31.62.2) 634 0 R (90) 1858 0 R (900) 2570 0 R (901) 2571 0 R (902) 2572 0 R (903) 2573 0 R (904) 2574 0 R (905) 2575 0 R (906) 2576 0 R (907) 2577 0 R (908) 2578 0 R (909) 1365 0 R (91) 1859 0 R (911) 2579 0 R (912) 2580 0 R (913) 2581 0 R (914) 2582 0 R (915) 2583 0 R (916) 2584 0 R (917) 2585 0 R (918) 2586 0 R (919) 2587 0 R (92) 1860 0 R (920) 2592 0 R (921) 2593 0 R (922) 2594 0 R (923) 2595 0 R (924) 2596 0 R (927) 2597 0 R (928) 1367 0 R (93) 1861 0 R (930) 2598 0 R (931) 2599 0 R (932) 2600 0 R (933) 2601 0 R (934) 2602 0 R (935) 2603 0 R (936) 2604 0 R (937) 2605 0 R (938) 2606 0 R (939) 2607 0 R (940) 2608 0 R (941) 1368 0 R (943) 2609 0 R (944) 2610 0 R (945) 2611 0 R (946) 2616 0 R (947) 2617 0 R (948) 2618 0 R (949) 2619 0 R (95) 1862 0 R (950) 2620 0 R (951) 2621 0 R (952) 2622 0 R (953) 2623 0 R (954) 2624 0 R (955) 2625 0 R (956) 2626 0 R (957) 2627 0 R (958) 2628 0 R (959) 2629 0 R (96) 1863 0 R (960) 2630 0 R (961) 2631 0 R (962) 2632 0 R (963) 2633 0 R (964) 2634 0 R (965) 2635 0 R (966) 2636 0 R (967) 2637 0 R (968) 2638 0 R (969) 2639 0 R (97) 1864 0 R (970) 2640 0 R (971) 2645 0 R (972) 2646 0 R (973) 2647 0 R (974) 1369 0 R (976) 2648 0 R (977) 1370 0 R (979) 2649 0 R (98) 1865 0 R (980) 2650 0 R (981) 2651 0 R (982) 2652 0 R (983) 2653 0 R (984) 2654 0 R (985) 2655 0 R (986) 1371 0 R (988) 2656 0 R (99) 1866 0 R (990) 2658 0 R (991) 2659 0 R (992) 2660 0 R (993) 2665 0 R (994) 2666 0 R (995) 2667 0 R (996) 2668 0 R (997) 2669 0 R (998) 2670 0 R (999) 2671 0 R (Doc-Start) 1102 0 R (about) 1211 0 R (accountsettings) 1666 0 R (administration) 1372 0 R (apache-addtype) 1254 0 R (attachments) 1664 0 R (bonsai) 1537 0 R (boolean) 1646 0 R (bug_page) 1643 0 R (bugreports) 1651 0 R (bzldap) 1253 0 R (charts) 1671 0 R (cmdline) 1753 0 R (cmdline-bugmail) 1754 0 R (commenting) 1663 0 R (components) 1380 0 R (configuration) 1236 0 R (conventions) 1216 0 R (copyright) 1212 0 R (createnewusers) 1377 0 R (credits) 1215 0 R (cust-change-permissions) 1531 0 R (cust-hooks) 1530 0 R (cust-templates) 1523 0 R (customization) 1522 0 R (cvs) 1538 0 R (database-engine) 1238 0 R (dbdoc) 1533 0 R (dbmodify) 1532 0 R (defaultuser) 1375 0 R (disclaimer) 1213 0 R (emailsettings) 1667 0 R (extraconfig) 1247 0 R (faq) 1680 0 R (faq-admin) 4263 0 R (faq-admin-cvsupdate) 4273 0 R (faq-admin-enable-unconfirmed) 4294 0 R (faq-admin-livebackup) 4271 0 R (faq-admin-midair) 4265 0 R (faq-admin-moving) 4306 0 R (faq-db) 4402 0 R (faq-db-corrupted) 4404 0 R (faq-db-manualedit) 4415 0 R (faq-db-permissions) 4422 0 R (faq-db-synchronize) 4428 0 R (faq-email) 4338 0 R (faq-email-mailif) 4378 0 R (faq-email-nomail) 4340 0 R (faq-email-nonreceived) 4393 0 R (faq-email-sendmailnow) 4380 0 R (faq-email-testing) 4343 0 R (faq-email-whine) 4372 0 R (faq-general) 4126 0 R (faq-general-bonsaitools) 4169 0 R (faq-general-bzmissing) 4147 0 R (faq-general-companies) 4135 0 R (faq-general-compare) 4143 0 R (faq-general-cookie) 4199 0 R (faq-general-license) 4128 0 R (faq-general-maintainers) 4140 0 R (faq-general-mysql) 4160 0 R (faq-general-perlpath) 4174 0 R (faq-general-support) 4131 0 R (faq-hacking) 4509 0 R (faq-hacking-bugzillabugs) 4515 0 R (faq-hacking-patches) 4528 0 R (faq-hacking-priority) 4521 0 R (faq-hacking-templatestyle) 4510 0 R (faq-mod-perl) 4201 0 R (faq-nt) 4433 0 R (faq-nt-bundle) 4443 0 R (faq-nt-dbi) 4453 0 R (faq-nt-easiest) 4435 0 R (faq-nt-mappings) 4445 0 R (faq-phb) 4205 0 R (faq-phb-backup) 4249 0 R (faq-phb-client) 4207 0 R (faq-phb-cost) 4258 0 R (faq-phb-data) 4229 0 R (faq-phb-email) 4222 0 R (faq-phb-emailapp) 4224 0 R (faq-phb-installtime) 4256 0 R (faq-phb-l10n) 4239 0 R (faq-phb-maintenance) 4252 0 R (faq-phb-priorities) 4209 0 R (faq-phb-renameBugs) 4260 0 R (faq-phb-reporting) 4217 0 R (faq-phb-reports) 4247 0 R (faq-security) 4323 0 R (faq-security-knownproblems) 4336 0 R (faq-security-mysql) 4325 0 R (faq-use) 4469 0 R (faq-use-accept) 4486 0 R (faq-use-attachment) 4491 0 R (faq-use-changeaddress) 4471 0 R (faq-use-close) 4497 0 R (faq-use-keyword) 4494 0 R (faq-use-query) 4473 0 R (flag-askto) 1387 0 R (flag-type-attachment) 1389 0 R (flag-type-bug) 1390 0 R (flag-types) 1388 0 R (flag-values) 1386 0 R (flags) 1674 0 R (flags-about) 1385 0 R (flags-admin) 1391 0 R (flags-create) 1392 0 R (flags-create-field-active) 3016 0 R (flags-create-field-category) 2978 0 R (flags-create-field-cclist) 3026 0 R (flags-create-field-description) 2976 0 R (flags-create-field-multiplicable) 3035 0 R (flags-create-field-name) 2974 0 R (flags-create-field-requestable) 3019 0 R (flags-create-field-sortkey) 3012 0 R (flags-create-field-specific) 3028 0 R (flags-delete) 1393 0 R (flags-edit) 1394 0 R (flags-overview) 1383 0 R (flags-simpleexample) 1384 0 R (general-advice) 1682 0 R (gfdl) 1759 0 R (gfdl-0) 1760 0 R (gfdl-1) 1761 0 R (gfdl-10) 1770 0 R (gfdl-2) 1762 0 R (gfdl-3) 1763 0 R (gfdl-4) 1764 0 R (gfdl-5) 1765 0 R (gfdl-6) 1766 0 R (gfdl-7) 1767 0 R (gfdl-8) 1768 0 R (gfdl-9) 1769 0 R (gfdl-howto) 1771 0 R (gloss-a) 4917 0 R (gloss-apache) 4918 0 R (gloss-b) 4957 0 R (gloss-bugzilla) 1888 0 R (gloss-c) 4973 0 R (gloss-cgi) 1950 0 R (gloss-component) 4978 0 R (gloss-contrib) 2415 0 R (gloss-cpan) 2539 0 R (gloss-d) 4999 0 R (gloss-daemon) 3301 0 R (gloss-dos) 3443 0 R (gloss-g) 5008 0 R (gloss-groups) 5009 0 R (gloss-htaccess) 3413 0 R (gloss-j) 5015 0 R (gloss-javascript) 5016 0 R (gloss-m) 4995 0 R (gloss-mta) 4409 0 R (gloss-mysql) 5029 0 R (gloss-p) 5049 0 R (gloss-ppm) 2476 0 R (gloss-product) 2835 0 R (gloss-q) 5064 0 R (gloss-r) 5073 0 R (gloss-rdbms) 5055 0 R (gloss-regexp) 5076 0 R (gloss-s) 5080 0 R (gloss-service) 3302 0 R (gloss-t) 5102 0 R (gloss-target-milestone) 5103 0 R (gloss-tcl) 2309 0 R (gloss-z) 5109 0 R (gloss-zarro) 5110 0 R (glossary) 1772 0 R (groups) 1397 0 R (hintsandtips) 1660 0 R (http) 1242 0 R (http-aol) 1245 0 R (http-apache) 1243 0 R (http-iis) 1244 0 R (index) 1103 0 R (install-MTA) 1235 0 R (install-bzfiles) 1224 0 R (install-config-bugzilla) 1246 0 R (install-database) 1220 0 R (install-modules-chart-base) 1229 0 R (install-modules-dbd-mysql) 1226 0 R (install-modules-gd) 1228 0 R (install-modules-gd-graph) 1230 0 R (install-modules-gd-text-align) 1231 0 R (install-modules-mime-parser) 1233 0 R (install-modules-patchreader) 1234 0 R (install-modules-template) 1227 0 R (install-modules-xml-parser) 1232 0 R (install-mysql) 1221 0 R (install-perl) 1219 0 R (install-perlmodules) 1225 0 R (install-perlmodules-manual) 1755 0 R (install-perlmodules-nonroot) 1366 0 R (install-pg) 1222 0 R (install-setupdatabase) 2105 0 R (install-setupdatabase-adduser) 2138 0 R (install-webserver) 1223 0 R (installation) 1218 0 R (installation-whining) 1251 0 R (installation-whining-cron) 1250 0 R (installing-bugzilla) 1217 0 R (integration) 1536 0 R (lifecycle) 1644 0 R (lifecycle-image) 1791 0 R (list) 1650 0 R (localconfig) 1237 0 R (manageusers) 1376 0 R (milestones) 1382 0 R (modifyusers) 1378 0 R (modules-manual-download) 1757 0 R (modules-manual-instructions) 1756 0 R (modules-manual-optional) 1758 0 R (multiplecharts) 1649 0 R (myaccount) 1642 0 R (mysql) 1239 0 R (negation) 1648 0 R (newversions) 1214 0 R (nonroot) 1361 0 R (os-macosx) 1359 0 R (os-mandrake) 1360 0 R (os-specific) 1255 0 R (os-win32) 1354 0 R (page.1) 1101 0 R (page.10) 2093 0 R (page.100) 4642 0 R (page.101) 4659 0 R (page.102) 4704 0 R (page.103) 4732 0 R (page.104) 4762 0 R (page.105) 4791 0 R (page.106) 4815 0 R (page.107) 4831 0 R (page.108) 4843 0 R (page.109) 4880 0 R (page.11) 2120 0 R (page.110) 4892 0 R (page.111) 4905 0 R (page.112) 4911 0 R (page.113) 4961 0 R (page.114) 4994 0 R (page.115) 5022 0 R (page.116) 5059 0 R (page.117) 5087 0 R (page.12) 2161 0 R (page.13) 2205 0 R (page.14) 2237 0 R (page.15) 2279 0 R (page.16) 2313 0 R (page.17) 2355 0 R (page.18) 2380 0 R (page.19) 2419 0 R (page.2) 1110 0 R (page.20) 2455 0 R (page.21) 2480 0 R (page.22) 2497 0 R (page.23) 2543 0 R (page.24) 2560 0 R (page.25) 2591 0 R (page.26) 2615 0 R (page.27) 2644 0 R (page.28) 2664 0 R (page.29) 2676 0 R (page.3) 1116 0 R (page.30) 2708 0 R (page.31) 2736 0 R (page.32) 2756 0 R (page.33) 2791 0 R (page.34) 2839 0 R (page.35) 2866 0 R (page.36) 2914 0 R (page.37) 2954 0 R (page.38) 2989 0 R (page.39) 3032 0 R (page.4) 1259 0 R (page.40) 3063 0 R (page.41) 3091 0 R (page.42) 3133 0 R (page.43) 3153 0 R (page.44) 3177 0 R (page.45) 3201 0 R (page.46) 3228 0 R (page.47) 3258 0 R (page.48) 3276 0 R (page.49) 3306 0 R (page.5) 1404 0 R (page.50) 3335 0 R (page.51) 3417 0 R (page.52) 3447 0 R (page.53) 3476 0 R (page.54) 3503 0 R (page.55) 3542 0 R (page.56) 3571 0 R (page.57) 3602 0 R (page.58) 3640 0 R (page.59) 3663 0 R (page.6) 1545 0 R (page.60) 3684 0 R (page.61) 3706 0 R (page.62) 3735 0 R (page.63) 3739 0 R (page.64) 3743 0 R (page.65) 3747 0 R (page.66) 3764 0 R (page.67) 3778 0 R (page.68) 3807 0 R (page.69) 3866 0 R (page.7) 1690 0 R (page.70) 3876 0 R (page.71) 3910 0 R (page.72) 3931 0 R (page.73) 3953 0 R (page.74) 3965 0 R (page.75) 3985 0 R (page.76) 4009 0 R (page.77) 4044 0 R (page.78) 4061 0 R (page.79) 4077 0 R (page.8) 1776 0 R (page.80) 4098 0 R (page.81) 4115 0 R (page.82) 4123 0 R (page.83) 4154 0 R (page.84) 4184 0 R (page.85) 4214 0 R (page.86) 4243 0 R (page.87) 4269 0 R (page.88) 4303 0 R (page.89) 4329 0 R (page.9) 2069 0 R (page.90) 4361 0 R (page.91) 4413 0 R (page.92) 4441 0 R (page.93) 4478 0 R (page.94) 4508 0 R (page.95) 4543 0 R (page.96) 4555 0 R (page.97) 4582 0 R (page.98) 4601 0 R (page.99) 4620 0 R (param-LDAPBaseDN) 2425 0 R (param-LDAPbinddn) 2420 0 R (param-LDAPmailattribute) 2435 0 R (param-LDAPserver) 2409 0 R (param-LDAPuidattribute) 2430 0 R (param-loginmethod) 2401 0 R (parameters) 1373 0 R (paranoid-security) 1746 0 R (patch-viewer) 1252 0 R (patches) 1752 0 R (patchviewer) 1652 0 R (patchviewer_bonsai_lxr) 1658 0 R (patchviewer_collapse) 1656 0 R (patchviewer_context) 1655 0 R (patchviewer_diff) 1654 0 R (patchviewer_link) 1657 0 R (patchviewer_unified_diff) 1659 0 R (patchviewer_view) 1653 0 R (permissionsettings) 1668 0 R (postgresql) 1240 0 R (products) 1379 0 R (pronouns) 1647 0 R (query) 1645 0 R (quicksearch) 1662 0 R (quips) 1396 0 R (reporting) 1669 0 R (reports) 1670 0 R (scm) 1539 0 R (security) 1508 0 R (security-bugzilla) 1520 0 R (security-bugzilla-charset) 1521 0 R (security-bugzilla-charset-ex) 1795 0 R (security-mysql) 1513 0 R (security-mysql-account) 1514 0 R (security-mysql-account-anonymous) 1793 0 R (security-mysql-account-root) 1792 0 R (security-mysql-network) 1516 0 R (security-mysql-network-ex) 1794 0 R (security-mysql-root) 1515 0 R (security-os) 1509 0 R (security-os-accounts) 1511 0 R (security-os-chroot) 1512 0 R (security-os-ports) 1510 0 R (security-webserver) 1517 0 R (security-webserver-access) 1518 0 R (security-webserver-mod-throttle) 1519 0 R (svn) 1540 0 R (table.1) 1882 0 R (table.2) 3597 0 R (table.3) 3802 0 R (table.4) 3920 0 R (table.5) 3947 0 R (table.6) 3968 0 R (table.7) 4490 0 R (template-directory) 1524 0 R (template-edit) 1526 0 R (template-formats) 1527 0 R (template-http-accept) 1529 0 R (template-method) 1525 0 R (template-specific) 1528 0 R (tinderbox) 1541 0 R (trbl-bundleBugzilla) 1685 0 R (trbl-dbdSponge) 1686 0 R (trbl-index) 1750 0 R (trbl-passwd-encryption) 1751 0 R (trbl-perlmodule) 1684 0 R (trbl-relogin-everyone) 1748 0 R (trbl-relogin-everyone-restrict) 1797 0 R (trbl-relogin-everyone-share) 1796 0 R (trbl-testserver) 1683 0 R (trouble-filetemp) 1747 0 R (troubleshooting) 1681 0 R (upgrade-cvs) 1504 0 R (upgrade-patches) 1506 0 R (upgrade-tarball) 1505 0 R (upgrading) 1501 0 R (upgrading-completion) 1507 0 R (upgrading-methods) 1503 0 R (upgrading-version-defns) 1502 0 R (useradmin) 1374 0 R (userpreferences) 1665 0 R (using) 1640 0 R (using-intro) 1641 0 R (versions) 1381 0 R (voting) 1395 0 R (whining) 1675 0 R (whining-overview) 1676 0 R (whining-query) 1678 0 R (whining-schedule) 1677 0 R (win32-code-changes) 1357 0 R (win32-http) 1358 0 R (win32-perl) 1355 0 R (win32-perl-modules) 1356 0 R]
+5118 0 obj <<
+/Names [(1.0) 2 0 R (10.0) 638 0 R (10.32.1) 642 0 R (10.33.1) 646 0 R (10.34.1) 650 0 R (10.35.1) 654 0 R (10.36.1) 658 0 R (10.36.63.2) 662 0 R (10.36.63.40.3) 666 0 R (10.36.63.41.3) 670 0 R (10.36.63.42.3) 674 0 R (10.37.1) 678 0 R (10.38.1) 682 0 R (10.39.1) 686 0 R (10.39.64.2) 690 0 R (10.39.65.2) 694 0 R (10.39.66.2) 698 0 R (10.39.67.2) 702 0 R (10.39.68.2) 706 0 R (10.39.69.2) 710 0 R (10.39.70.2) 714 0 R (10.40.1) 718 0 R (10.40.71.2) 722 0 R (10.40.72.2) 726 0 R (10.40.73.2) 730 0 R (10.40.74.2) 734 0 R (10.41.1) 738 0 R (10.41.75.2) 742 0 R (10.41.76.2) 746 0 R (10.41.77.2) 750 0 R (10.42.1) 754 0 R (10.42.78.2) 758 0 R (10.42.79.2) 762 0 R (10.42.79.43.3) 766 0 R (10.42.79.44.3) 770 0 R (10.43.1) 774 0 R (10.44.1) 778 0 R (10.44.80.2) 782 0 R (10.44.81.2) 786 0 R (10.44.82.2) 790 0 R (10.44.83.2) 794 0 R (100) 1867 0 R (1000) 2672 0 R (1005) 2677 0 R (1006) 2678 0 R (1008) 2679 0 R (101) 1868 0 R (1010) 2680 0 R (1011) 2681 0 R (1012) 2682 0 R (1014) 2683 0 R (1015) 2684 0 R (1016) 2685 0 R (1017) 2686 0 R (1018) 2687 0 R (1019) 2688 0 R (102) 1869 0 R (1020) 2689 0 R (1022) 2690 0 R (1023) 2691 0 R (1024) 2692 0 R (1026) 2693 0 R (1027) 2694 0 R (1028) 2695 0 R (1029) 2696 0 R (103) 1870 0 R (1031) 2697 0 R (1032) 2698 0 R (1033) 2699 0 R (1034) 2700 0 R (1035) 2701 0 R (1036) 2702 0 R (1037) 2703 0 R (1038) 2709 0 R (104) 1871 0 R (1040) 2710 0 R (1041) 2711 0 R (1042) 2712 0 R (1043) 2713 0 R (1044) 2714 0 R (1045) 2715 0 R (1047) 2716 0 R (1048) 2717 0 R (1049) 2718 0 R (105) 1872 0 R (1050) 2719 0 R (1052) 2720 0 R (1053) 2721 0 R (1054) 2722 0 R (1055) 2723 0 R (1057) 2724 0 R (1058) 2725 0 R (1059) 2726 0 R (106) 1873 0 R (1061) 2727 0 R (1062) 2728 0 R (1063) 2729 0 R (1065) 2730 0 R (1066) 2731 0 R (1067) 2732 0 R (1069) 2737 0 R (107) 1874 0 R (1070) 2738 0 R (1071) 2739 0 R (1072) 2740 0 R (1073) 2741 0 R (1074) 2742 0 R (1076) 2743 0 R (1077) 2744 0 R (1078) 2745 0 R (1079) 2746 0 R (108) 1875 0 R (1081) 2747 0 R (1082) 2748 0 R (1083) 2749 0 R (1088) 2750 0 R (1089) 2751 0 R (1090) 2752 0 R (1095) 2757 0 R (1096) 2758 0 R (1097) 2759 0 R (1098) 2760 0 R (1099) 2761 0 R (11.0) 798 0 R (1100) 2762 0 R (1101) 2763 0 R (1102) 2764 0 R (1103) 2765 0 R (1104) 2766 0 R (1107) 2767 0 R (1108) 2768 0 R (1109) 2769 0 R (111) 1876 0 R (1110) 2770 0 R (1111) 2771 0 R (1112) 2772 0 R (1113) 2773 0 R (1114) 2774 0 R (1115) 2775 0 R (1116) 2776 0 R (1117) 2777 0 R (1118) 2778 0 R (1119) 2779 0 R (1120) 2780 0 R (1121) 2781 0 R (1122) 2782 0 R (1123) 2783 0 R (1124) 2784 0 R (1125) 2785 0 R (1126) 2786 0 R (1127) 2787 0 R (1128) 2793 0 R (1129) 2794 0 R (113) 1877 0 R (1130) 2795 0 R (1131) 2796 0 R (1132) 2797 0 R (1133) 2798 0 R (1134) 2799 0 R (1135) 2800 0 R (1136) 2801 0 R (1137) 2802 0 R (1138) 2803 0 R (1139) 2804 0 R (114) 1878 0 R (1140) 2805 0 R (1141) 2806 0 R (1142) 2807 0 R (1143) 2808 0 R (1144) 2809 0 R (1145) 2810 0 R (1146) 2811 0 R (1147) 2812 0 R (1148) 2813 0 R (1149) 2814 0 R (115) 1828 0 R (1150) 2815 0 R (1151) 2816 0 R (1152) 2817 0 R (1153) 2818 0 R (1154) 2819 0 R (1155) 2820 0 R (1156) 2821 0 R (1157) 2822 0 R (1158) 2823 0 R (1159) 2824 0 R (1162) 2825 0 R (1164) 2827 0 R (1165) 2828 0 R (1166) 2829 0 R (1167) 2830 0 R (1168) 2831 0 R (1169) 2832 0 R (1170) 2833 0 R (1171) 2834 0 R (1172) 2840 0 R (1173) 2792 0 R (1176) 2841 0 R (1177) 2842 0 R (1178) 2843 0 R (1179) 2844 0 R (1180) 2845 0 R (1181) 2846 0 R (1182) 2847 0 R (1183) 2848 0 R (1184) 2849 0 R (1185) 2850 0 R (1186) 2851 0 R (1189) 2852 0 R (1190) 2853 0 R (1191) 2854 0 R (1192) 2855 0 R (1193) 2856 0 R (1194) 2857 0 R (1195) 2858 0 R (1196) 2859 0 R (1197) 2860 0 R (12.0) 802 0 R (12.45.1) 806 0 R (12.46.1) 810 0 R (12.47.1) 814 0 R (12.48.1) 818 0 R (12.49.1) 822 0 R (12.50.1) 826 0 R (12.51.1) 830 0 R (12.52.1) 834 0 R (12.53.1) 838 0 R (12.54.1) 842 0 R (12.55.1) 846 0 R (1200) 2861 0 R (1201) 2862 0 R (1202) 2868 0 R (1203) 2869 0 R (1204) 2870 0 R (1205) 2871 0 R (1206) 2872 0 R (1207) 2873 0 R (1208) 2874 0 R (1209) 2875 0 R (1210) 2876 0 R (1211) 2877 0 R (1212) 2878 0 R (1215) 2879 0 R (1216) 2880 0 R (1217) 2881 0 R (1218) 2882 0 R (1221) 2883 0 R (1222) 2884 0 R (1223) 2885 0 R (1224) 2886 0 R (1225) 2887 0 R (1226) 2888 0 R (1227) 2889 0 R (1228) 2890 0 R (1229) 2891 0 R (1230) 2892 0 R (1231) 2893 0 R (1232) 2894 0 R (1233) 2895 0 R (1234) 2896 0 R (1235) 2897 0 R (1236) 2898 0 R (1237) 2899 0 R (1238) 2900 0 R (1239) 2901 0 R (1240) 2902 0 R (1241) 2903 0 R (1242) 2904 0 R (1243) 2905 0 R (1244) 2906 0 R (1245) 2907 0 R (1246) 2908 0 R (1247) 2909 0 R (1252) 2915 0 R (1253) 2916 0 R (1255) 2917 0 R (1256) 2918 0 R (1257) 2919 0 R (1258) 2920 0 R (1260) 2867 0 R (1262) 2921 0 R (1263) 2922 0 R (1264) 2923 0 R (1266) 2924 0 R (1267) 2925 0 R (1268) 2926 0 R (1269) 2927 0 R (1270) 2928 0 R (1271) 2929 0 R (1272) 2930 0 R (1275) 2931 0 R (1276) 2932 0 R (1277) 2933 0 R (1278) 2934 0 R (1279) 2935 0 R (1280) 2936 0 R (1281) 2937 0 R (1282) 2938 0 R (1283) 2939 0 R (1284) 2940 0 R (1285) 2941 0 R (1288) 2942 0 R (1291) 2943 0 R (1292) 2944 0 R (1293) 2945 0 R (1294) 2946 0 R (1295) 2947 0 R (1296) 2948 0 R (1297) 2949 0 R (1298) 2950 0 R (1299) 2956 0 R (13.0) 850 0 R (13.56.1) 854 0 R (13.57.1) 858 0 R (1300) 2957 0 R (1301) 2958 0 R (1302) 2959 0 R (1303) 2960 0 R (1304) 2961 0 R (1307) 2962 0 R (1308) 2963 0 R (1309) 2964 0 R (1310) 2965 0 R (1311) 2966 0 R (1314) 2967 0 R (1315) 2968 0 R (1316) 2969 0 R (1317) 2970 0 R (1318) 2971 0 R (1321) 2972 0 R (1322) 2973 0 R (1325) 2975 0 R (1328) 2977 0 R (1331) 2979 0 R (1332) 2980 0 R (1333) 2981 0 R (1334) 2982 0 R (1335) 2983 0 R (1336) 2984 0 R (1337) 2985 0 R (1338) 2990 0 R (1339) 2991 0 R (1340) 2992 0 R (1341) 2993 0 R (1342) 2955 0 R (1344) 2994 0 R (1345) 2995 0 R (1346) 2996 0 R (1347) 2997 0 R (1348) 2998 0 R (1349) 2999 0 R (1350) 3000 0 R (1351) 3001 0 R (1352) 3002 0 R (1353) 3003 0 R (1354) 3004 0 R (1355) 3005 0 R (1356) 3006 0 R (1357) 3007 0 R (1358) 3008 0 R (1359) 3009 0 R (1360) 3010 0 R (1361) 3011 0 R (1364) 3013 0 R (1365) 3014 0 R (1366) 3015 0 R (1369) 3017 0 R (1370) 3018 0 R (1373) 3020 0 R (1374) 3021 0 R (1375) 3022 0 R (1376) 3023 0 R (1377) 3024 0 R (1378) 3025 0 R (1381) 3027 0 R (1384) 3033 0 R (1385) 3034 0 R (1388) 3036 0 R (1389) 3037 0 R (1390) 3038 0 R (1391) 3039 0 R (1394) 3040 0 R (1395) 3041 0 R (1396) 3042 0 R (1397) 3043 0 R (1398) 3044 0 R (1399) 3045 0 R (14.0) 862 0 R (14.58.1) 866 0 R (14.59.1) 870 0 R (14.60.1) 874 0 R (1400) 3046 0 R (1401) 3047 0 R (1404) 3048 0 R (1405) 3049 0 R (1406) 3050 0 R (1409) 3051 0 R (1410) 3052 0 R (1411) 3053 0 R (1412) 3054 0 R (1413) 3055 0 R (1414) 3056 0 R (1415) 3057 0 R (1416) 3058 0 R (1417) 3059 0 R (1418) 3064 0 R (1419) 3065 0 R (1420) 3066 0 R (1421) 3067 0 R (1422) 3068 0 R (1423) 3069 0 R (1424) 3070 0 R (1427) 3071 0 R (1428) 3072 0 R (1429) 3073 0 R (1430) 3074 0 R (1431) 3075 0 R (1432) 3076 0 R (1435) 3077 0 R (1436) 3078 0 R (1437) 3079 0 R (1438) 3080 0 R (1439) 3081 0 R (1440) 3082 0 R (1441) 3083 0 R (1442) 3084 0 R (1443) 3085 0 R (1444) 3086 0 R (1445) 3087 0 R (1446) 1398 0 R (1448) 3092 0 R (1449) 3093 0 R (1450) 3094 0 R (1451) 3095 0 R (1452) 3096 0 R (1453) 3097 0 R (1454) 3098 0 R (1455) 3099 0 R (1456) 3100 0 R (1457) 3101 0 R (1458) 3102 0 R (1459) 3103 0 R (1460) 3104 0 R (1461) 3105 0 R (1462) 3106 0 R (1463) 3107 0 R (1464) 3108 0 R (1465) 3109 0 R (1466) 3110 0 R (1467) 3111 0 R (1468) 3112 0 R (1469) 3113 0 R (1470) 3114 0 R (1471) 3115 0 R (1472) 3116 0 R (1473) 1399 0 R (1475) 3117 0 R (1476) 3118 0 R (1477) 3119 0 R (1478) 3120 0 R (1479) 3121 0 R (1480) 3122 0 R (1481) 3123 0 R (1482) 3124 0 R (1483) 1400 0 R (1485) 3125 0 R (1486) 3126 0 R (1487) 3127 0 R (1488) 3128 0 R (1489) 3134 0 R (1490) 3135 0 R (1491) 3136 0 R (1492) 3137 0 R (1493) 3138 0 R (1494) 3139 0 R (1495) 3140 0 R (1496) 3141 0 R (1497) 3142 0 R (1498) 3143 0 R (1499) 3144 0 R (15.0) 878 0 R (15.61.1) 882 0 R (15.62.1) 886 0 R (15.63.1) 890 0 R (15.64.1) 894 0 R (15.65.1) 898 0 R (15.66.1) 902 0 R (15.67.1) 906 0 R (15.68.1) 910 0 R (15.69.1) 914 0 R (15.70.1) 918 0 R (15.71.1) 922 0 R (15.72.1) 926 0 R (1500) 3145 0 R (1501) 1497 0 R (1503) 1498 0 R (1505) 3146 0 R (1506) 3147 0 R (1507) 1499 0 R (1509) 3148 0 R (1510) 3149 0 R (1511) 1500 0 R (1513) 3155 0 R (1514) 3156 0 R (1515) 3157 0 R (1516) 3158 0 R (1517) 3159 0 R (1518) 3160 0 R (1519) 3161 0 R (1520) 3162 0 R (1521) 3163 0 R (1522) 3164 0 R (1523) 3165 0 R (1524) 3166 0 R (1527) 3167 0 R (1528) 3168 0 R (1529) 3169 0 R (1530) 3170 0 R (1531) 3171 0 R (1532) 3172 0 R (1535) 3173 0 R (1536) 3154 0 R (1537) 3178 0 R (1538) 3179 0 R (1539) 3180 0 R (1540) 3181 0 R (1543) 3182 0 R (1544) 3183 0 R (1545) 3184 0 R (1546) 3185 0 R (1548) 3187 0 R (1549) 3188 0 R (1551) 3190 0 R (1552) 3191 0 R (1554) 3193 0 R (1556) 3195 0 R (1557) 3196 0 R (1558) 3197 0 R (1559) 3202 0 R (1560) 3203 0 R (1563) 3204 0 R (1564) 3205 0 R (1565) 3206 0 R (1566) 3207 0 R (1567) 3208 0 R (1568) 3209 0 R (1569) 3210 0 R (1570) 3211 0 R (1571) 3212 0 R (1572) 3213 0 R (1573) 3214 0 R (1574) 3215 0 R (1575) 3216 0 R (1576) 3217 0 R (1579) 3218 0 R (1580) 3219 0 R (1581) 3220 0 R (1582) 3221 0 R (1583) 3222 0 R (1584) 3223 0 R (1585) 3224 0 R (1586) 3229 0 R (1587) 3230 0 R (1588) 3231 0 R (1589) 3232 0 R (1590) 3233 0 R (1591) 3234 0 R (1592) 3235 0 R (1593) 3236 0 R (1594) 3237 0 R (1595) 3238 0 R (1596) 3239 0 R (1597) 3240 0 R (1598) 3241 0 R (1599) 3242 0 R (16.0) 930 0 R (1602) 3243 0 R (1603) 3244 0 R (1604) 3245 0 R (1605) 3246 0 R (1606) 3247 0 R (1607) 3248 0 R (1608) 3249 0 R (1609) 3250 0 R (1610) 3251 0 R (1611) 3252 0 R (1612) 3253 0 R (1613) 3254 0 R (1614) 3259 0 R (1615) 3260 0 R (1619) 3262 0 R (1620) 3263 0 R (1621) 3264 0 R (1622) 3265 0 R (1623) 3266 0 R (1624) 3267 0 R (1625) 3268 0 R (1626) 3269 0 R (1627) 3270 0 R (1628) 3271 0 R (1631) 3277 0 R (1632) 3278 0 R (1633) 3279 0 R (1638) 3280 0 R (1641) 3281 0 R (1643) 3283 0 R (1644) 3284 0 R (1645) 3285 0 R (1646) 3286 0 R (1648) 3288 0 R (1649) 3289 0 R (1650) 3290 0 R (1651) 3291 0 R (1652) 3292 0 R (1653) 3293 0 R (1654) 3294 0 R (1655) 3295 0 R (1656) 3296 0 R (1657) 3297 0 R (1658) 3298 0 R (1662) 3299 0 R (1663) 3300 0 R (1668) 3307 0 R (1674) 3309 0 R (1675) 3310 0 R (1676) 3311 0 R (1677) 3312 0 R (1681) 3313 0 R (1682) 3314 0 R (1683) 3315 0 R (1684) 3316 0 R (1685) 3317 0 R (1689) 3318 0 R (1690) 3319 0 R (1692) 3320 0 R (1693) 3321 0 R (1694) 3322 0 R (1695) 3323 0 R (1696) 3324 0 R (1697) 3325 0 R (17.0) 934 0 R (17.72.84.2) 938 0 R (1702) 3327 0 R (1706) 3329 0 R (1707) 3330 0 R (1708) 3331 0 R (1713) 3336 0 R (1714) 3337 0 R (1715) 3338 0 R (1716) 3339 0 R (1720) 3342 0 R (1721) 3343 0 R (1722) 3344 0 R (1723) 3345 0 R (1724) 3346 0 R (1725) 3347 0 R (1727) 3348 0 R (1728) 3349 0 R (1729) 3350 0 R (1730) 3351 0 R (1731) 3352 0 R (1732) 3353 0 R (1733) 3354 0 R (1734) 3355 0 R (1735) 3356 0 R (1736) 3357 0 R (1737) 3358 0 R (1738) 3359 0 R (1740) 3360 0 R (1741) 3361 0 R (1742) 3362 0 R (1743) 3363 0 R (1744) 3364 0 R (1745) 3365 0 R (1746) 3366 0 R (1747) 3367 0 R (1748) 3368 0 R (1749) 3369 0 R (1750) 3370 0 R (1751) 3371 0 R (1752) 3372 0 R (1754) 3373 0 R (1755) 3374 0 R (1756) 3375 0 R (1757) 3376 0 R (1758) 3377 0 R (1759) 3378 0 R (176) 1886 0 R (1760) 3379 0 R (1761) 3380 0 R (1762) 3381 0 R (1764) 3382 0 R (1765) 3383 0 R (1766) 3384 0 R (1767) 3385 0 R (1768) 3386 0 R (1769) 3387 0 R (177) 1887 0 R (1770) 3388 0 R (1771) 3389 0 R (1772) 3390 0 R (1773) 3391 0 R (1774) 3392 0 R (1775) 3393 0 R (1776) 3394 0 R (1777) 3395 0 R (1778) 3396 0 R (1779) 3397 0 R (1780) 3398 0 R (1781) 3399 0 R (1782) 3400 0 R (1783) 3401 0 R (1784) 3402 0 R (1785) 3403 0 R (1786) 3404 0 R (1787) 3405 0 R (1788) 3406 0 R (1789) 3407 0 R (1790) 3413 0 R (1791) 3414 0 R (1792) 3415 0 R (1793) 3416 0 R (1794) 3417 0 R (1795) 3418 0 R (1796) 3419 0 R (1797) 3420 0 R (18.0) 942 0 R (18.72.85.2) 946 0 R (18.72.85.45.3) 950 0 R (1802) 3422 0 R (1803) 3423 0 R (1804) 3424 0 R (1806) 3426 0 R (1807) 3427 0 R (1808) 3428 0 R (1809) 3429 0 R (1814) 3430 0 R (1815) 3431 0 R (1819) 3433 0 R (182) 1892 0 R (1820) 3434 0 R (1821) 3435 0 R (1822) 3436 0 R (1827) 3442 0 R (1828) 3443 0 R (183) 1893 0 R (1832) 3445 0 R (1833) 3446 0 R (1834) 3447 0 R (1835) 3448 0 R (1836) 3449 0 R (1837) 3450 0 R (1838) 3451 0 R (1839) 3452 0 R (184) 1894 0 R (1840) 3453 0 R (1841) 3454 0 R (1844) 3455 0 R (1845) 3456 0 R (1846) 3457 0 R (1847) 3458 0 R (1848) 3459 0 R (1849) 3460 0 R (185) 1897 0 R (1850) 3461 0 R (1851) 3462 0 R (1852) 3463 0 R (1853) 3464 0 R (1854) 3465 0 R (1855) 3466 0 R (1856) 3471 0 R (1857) 3472 0 R (1858) 3473 0 R (1859) 3474 0 R (1860) 3475 0 R (1861) 3476 0 R (1862) 3477 0 R (1863) 3478 0 R (1864) 3479 0 R (1865) 3480 0 R (1866) 3481 0 R (1867) 3482 0 R (187) 1900 0 R (1870) 3483 0 R (1871) 3484 0 R (1872) 3485 0 R (1873) 3486 0 R (1874) 3487 0 R (1875) 3488 0 R (1876) 3489 0 R (1877) 3490 0 R (1878) 3491 0 R (1879) 3492 0 R (188) 1901 0 R (1882) 3498 0 R (1883) 3499 0 R (1884) 3500 0 R (1885) 3501 0 R (1886) 3502 0 R (1887) 3503 0 R (1888) 3504 0 R (1889) 3505 0 R (189) 1902 0 R (1890) 3506 0 R (1891) 3507 0 R (1892) 3508 0 R (1893) 3509 0 R (1894) 3510 0 R (1895) 3511 0 R (1896) 3512 0 R (1897) 3513 0 R (1898) 3514 0 R (19.0) 954 0 R (19.72.86.2) 958 0 R (19.72.87.2) 962 0 R (19.72.88.2) 966 0 R (190) 1903 0 R (1901) 3515 0 R (1902) 3516 0 R (1903) 3517 0 R (1904) 3518 0 R (1905) 3519 0 R (1906) 3520 0 R (1907) 3521 0 R (1908) 3522 0 R (1909) 3523 0 R (191) 1904 0 R (1910) 3524 0 R (1911) 3525 0 R (1912) 3526 0 R (1913) 3527 0 R (1914) 3528 0 R (1915) 3529 0 R (1916) 3530 0 R (1917) 3531 0 R (1918) 3532 0 R (1919) 3537 0 R (192) 1905 0 R (1920) 3538 0 R (1921) 3539 0 R (1922) 3540 0 R (1923) 3541 0 R (1924) 3542 0 R (1925) 3543 0 R (1926) 3544 0 R (1927) 3545 0 R (1928) 3546 0 R (1929) 3547 0 R (193) 1906 0 R (1930) 3548 0 R (1931) 3549 0 R (1932) 3550 0 R (1933) 3551 0 R (1934) 3552 0 R (1935) 3553 0 R (1936) 3554 0 R (1937) 3555 0 R (1938) 3556 0 R (1939) 3557 0 R (194) 1907 0 R (1940) 3558 0 R (1941) 3559 0 R (1942) 3560 0 R (1943) 3561 0 R (1946) 3566 0 R (1947) 3567 0 R (1948) 3568 0 R (1949) 3569 0 R (195) 1908 0 R (1950) 3570 0 R (1951) 3571 0 R (1952) 3572 0 R (1955) 3573 0 R (1956) 3574 0 R (1957) 3575 0 R (1958) 3576 0 R (1959) 3577 0 R (1960) 3578 0 R (1961) 3579 0 R (1962) 3580 0 R (1963) 3581 0 R (1964) 3582 0 R (1965) 3583 0 R (1966) 3584 0 R (1967) 3585 0 R (1968) 3586 0 R (1969) 3587 0 R (1970) 3588 0 R (1971) 3589 0 R (1972) 3590 0 R (1977) 3592 0 R (1978) 3597 0 R (1979) 3598 0 R (198) 1910 0 R (1980) 3599 0 R (1981) 3600 0 R (1982) 3601 0 R (1983) 3602 0 R (1984) 3603 0 R (1985) 3604 0 R (1986) 3605 0 R (1987) 3606 0 R (1988) 3607 0 R (1989) 3608 0 R (1990) 3609 0 R (1991) 3610 0 R (1992) 3611 0 R (1993) 3612 0 R (1994) 3613 0 R (1995) 3614 0 R (1996) 3615 0 R (1997) 3616 0 R (1998) 3617 0 R (1999) 3618 0 R (2.0) 6 0 R (20.0) 970 0 R (20.72.89.2) 974 0 R (20.72.90.2) 978 0 R (20.72.91.2) 982 0 R (20.72.92.2) 986 0 R (2000) 3619 0 R (2001) 3620 0 R (2002) 3621 0 R (2003) 3622 0 R (2004) 3623 0 R (2005) 3624 0 R (2006) 3625 0 R (2007) 3626 0 R (2008) 3627 0 R (2009) 3628 0 R (201) 1912 0 R (2010) 3629 0 R (2011) 3630 0 R (2012) 3636 0 R (2013) 3637 0 R (2014) 3638 0 R (2015) 3639 0 R (2016) 3640 0 R (2017) 3641 0 R (2020) 3642 0 R (2021) 3643 0 R (2022) 3644 0 R (2023) 3645 0 R (2024) 3646 0 R (2025) 3647 0 R (2026) 3648 0 R (2027) 3649 0 R (2028) 3650 0 R (2029) 3651 0 R (2030) 3652 0 R (2031) 3653 0 R (2032) 3658 0 R (2033) 3635 0 R (2034) 3659 0 R (2035) 3660 0 R (2036) 3661 0 R (2037) 3662 0 R (2038) 3663 0 R (2039) 3664 0 R (204) 1914 0 R (2040) 3665 0 R (2041) 3666 0 R (2044) 3667 0 R (2045) 3668 0 R (2046) 3669 0 R (2047) 3670 0 R (2048) 3671 0 R (2049) 3672 0 R (2050) 3673 0 R (2051) 3680 0 R (2052) 3681 0 R (2055) 3682 0 R (2056) 3683 0 R (2057) 3684 0 R (2058) 3685 0 R (2059) 3686 0 R (2060) 3687 0 R (2061) 3688 0 R (2062) 3689 0 R (2063) 1534 0 R (2065) 3690 0 R (2066) 3691 0 R (2067) 3692 0 R (2068) 3693 0 R (2069) 3694 0 R (207) 1916 0 R (2070) 3695 0 R (2071) 3696 0 R (2072) 3702 0 R (2073) 3679 0 R (2075) 3703 0 R (2076) 3704 0 R (2077) 3705 0 R (2078) 3706 0 R (2079) 3707 0 R (2080) 3708 0 R (2081) 3709 0 R (2082) 3710 0 R (2083) 3711 0 R (2084) 3712 0 R (2085) 3713 0 R (2086) 3714 0 R (2087) 3715 0 R (2088) 3716 0 R (2089) 3717 0 R (2090) 1535 0 R (2092) 3718 0 R (2093) 3719 0 R (2094) 3720 0 R (2095) 3721 0 R (2096) 3722 0 R (2097) 3723 0 R (2098) 3724 0 R (2099) 3725 0 R (21.0) 990 0 R (21.72.93.2) 994 0 R (21.72.94.2) 998 0 R (210) 1918 0 R (2100) 3701 0 R (2105) 3742 0 R (2110) 3746 0 R (2111) 3747 0 R (2112) 3748 0 R (2113) 3749 0 R (2114) 3750 0 R (2115) 3751 0 R (2116) 3752 0 R (2117) 3753 0 R (2120) 3759 0 R (2121) 3760 0 R (2122) 3761 0 R (2123) 3762 0 R (2124) 3763 0 R (2127) 3764 0 R (2128) 3765 0 R (213) 1920 0 R (2131) 3766 0 R (2132) 3767 0 R (2133) 3768 0 R (2138) 3773 0 R (2139) 3774 0 R (2142) 3775 0 R (2143) 3776 0 R (2144) 3777 0 R (2145) 3778 0 R (2146) 3779 0 R (2147) 3780 0 R (2148) 3781 0 R (2149) 3782 0 R (2150) 3783 0 R (2151) 3784 0 R (2152) 3785 0 R (2153) 3786 0 R (2154) 3787 0 R (2155) 3788 0 R (2158) 3789 0 R (2159) 3790 0 R (2160) 3791 0 R (2161) 3792 0 R (2162) 3793 0 R (2163) 3794 0 R (2164) 3795 0 R (217) 1921 0 R (218) 1922 0 R (2185) 3802 0 R (2186) 3803 0 R (2187) 3804 0 R (2188) 3805 0 R (2189) 3806 0 R (219) 1923 0 R (2190) 3807 0 R (2191) 3808 0 R (2192) 3809 0 R (2193) 3810 0 R (2194) 3811 0 R (2195) 3812 0 R (2196) 3813 0 R (2197) 3814 0 R (2198) 3815 0 R (2199) 3816 0 R (22.0) 1002 0 R (22.72.95.2) 1006 0 R (220) 1924 0 R (2200) 3817 0 R (2201) 3818 0 R (2202) 3819 0 R (2203) 3820 0 R (2204) 3821 0 R (2205) 3822 0 R (2206) 3823 0 R (2207) 3824 0 R (2208) 3825 0 R (2209) 3826 0 R (2210) 3827 0 R (2211) 3828 0 R (2212) 3829 0 R (2213) 3830 0 R (2214) 3831 0 R (2215) 3832 0 R (2216) 3833 0 R (2217) 3834 0 R (2218) 3835 0 R (2219) 3836 0 R (2220) 3837 0 R (2221) 3838 0 R (2222) 3839 0 R (2223) 3840 0 R (2224) 3841 0 R (2225) 3842 0 R (2226) 3843 0 R (2227) 3844 0 R (2228) 3845 0 R (2229) 3846 0 R (223) 1928 0 R (2230) 3847 0 R (2231) 3848 0 R (2232) 3849 0 R (2233) 3850 0 R (2234) 3851 0 R (2235) 3852 0 R (2238) 3853 0 R (2240) 3855 0 R (2241) 3856 0 R (2244) 3861 0 R (2249) 3862 0 R (2250) 3863 0 R (2251) 3864 0 R (2252) 3865 0 R (2255) 3866 0 R (2256) 3871 0 R (2257) 3872 0 R (2258) 3873 0 R (2259) 3874 0 R (226) 1929 0 R (2260) 3875 0 R (2261) 3876 0 R (2262) 3877 0 R (2263) 3878 0 R (2264) 3879 0 R (2265) 3880 0 R (2266) 3881 0 R (2267) 3882 0 R (2268) 3883 0 R (2269) 3884 0 R (227) 1930 0 R (2270) 3885 0 R (2271) 3886 0 R (2274) 3887 0 R (2277) 3888 0 R (2278) 3889 0 R (2279) 3890 0 R (228) 1931 0 R (2280) 3891 0 R (2281) 3892 0 R (2282) 3893 0 R (2283) 3894 0 R (2284) 3895 0 R (2285) 3896 0 R (2286) 3897 0 R (2287) 3898 0 R (2288) 3899 0 R (2289) 3900 0 R (229) 1932 0 R (2292) 3905 0 R (2293) 3906 0 R (2294) 3907 0 R (2295) 3908 0 R (2296) 3909 0 R (2297) 3910 0 R (23.0) 1010 0 R (23.72.96.2) 1014 0 R (230) 1933 0 R (2300) 3911 0 R (2301) 3912 0 R (2302) 3913 0 R (231) 1934 0 R (232) 1935 0 R (2321) 3915 0 R (2324) 3916 0 R (2325) 3917 0 R (2326) 3918 0 R (2327) 3919 0 R (2328) 3920 0 R (2329) 3926 0 R (233) 1936 0 R (2330) 3927 0 R (2331) 3928 0 R (2332) 3929 0 R (2333) 3930 0 R (2334) 3931 0 R (2335) 3932 0 R (2336) 3933 0 R (2337) 3934 0 R (2338) 3935 0 R (2339) 3936 0 R (234) 1937 0 R (2340) 3937 0 R (2343) 3938 0 R (2344) 3939 0 R (2345) 3940 0 R (2355) 3942 0 R (2358) 3943 0 R (2361) 3948 0 R (2364) 3949 0 R (2367) 3950 0 R (237) 1938 0 R (2370) 3951 0 R (2371) 3952 0 R (2374) 3953 0 R (2377) 3954 0 R (2378) 1661 0 R (238) 1939 0 R (2380) 3955 0 R (2381) 3960 0 R (2382) 3961 0 R (239) 1940 0 R (2391) 3963 0 R (2394) 3964 0 R (2395) 3965 0 R (2396) 3966 0 R (2397) 3967 0 R (2398) 3968 0 R (24) 1801 0 R (24.0) 1018 0 R (24.72.97.2) 1022 0 R (24.72.98.2) 1026 0 R (240) 1941 0 R (2401) 3969 0 R (2402) 3970 0 R (2405) 3971 0 R (2406) 3972 0 R (2407) 3973 0 R (2408) 3974 0 R (2409) 3975 0 R (241) 1942 0 R (2410) 3980 0 R (2413) 3981 0 R (2416) 3982 0 R (2417) 3983 0 R (2418) 3984 0 R (2421) 3985 0 R (2422) 3986 0 R (2423) 3987 0 R (2424) 3988 0 R (2425) 3989 0 R (2426) 3990 0 R (2427) 3991 0 R (2428) 3992 0 R (2429) 3993 0 R (2430) 3994 0 R (2431) 3995 0 R (2432) 3996 0 R (2433) 3997 0 R (2434) 3998 0 R (2435) 3999 0 R (2436) 4005 0 R (2437) 4006 0 R (2438) 4007 0 R (2439) 4008 0 R (244) 1943 0 R (2440) 4009 0 R (2441) 4010 0 R (2442) 4011 0 R (2443) 4012 0 R (2444) 4013 0 R (2445) 4014 0 R (2446) 4015 0 R (2447) 4016 0 R (2448) 4017 0 R (2449) 4018 0 R (245) 1944 0 R (2450) 4019 0 R (2451) 4020 0 R (2452) 4021 0 R (2453) 4022 0 R (2454) 4023 0 R (2455) 4024 0 R (2456) 4025 0 R (2457) 4026 0 R (2458) 4027 0 R (2459) 4028 0 R (2460) 4029 0 R (2461) 4030 0 R (2462) 4031 0 R (2463) 4032 0 R (2466) 4033 0 R (2469) 4034 0 R (247) 1946 0 R (2472) 4040 0 R (2473) 4004 0 R (2474) 4041 0 R (2475) 4042 0 R (2476) 4043 0 R (2479) 4044 0 R (248) 1947 0 R (2480) 4045 0 R (2481) 4046 0 R (2482) 4047 0 R (2483) 4048 0 R (2484) 4049 0 R (2485) 1672 0 R (2487) 4050 0 R (2488) 4056 0 R (2489) 4039 0 R (249) 1948 0 R (2490) 4057 0 R (2491) 4058 0 R (2492) 1673 0 R (2494) 4059 0 R (2495) 4060 0 R (2498) 4061 0 R (2499) 4062 0 R (25) 1802 0 R (25.0) 1030 0 R (25.72.100.2) 1038 0 R (25.72.101.2) 1042 0 R (25.72.99.2) 1034 0 R (2500) 4063 0 R (2501) 4064 0 R (2502) 4065 0 R (2503) 4066 0 R (2504) 4067 0 R (2507) 4073 0 R (2508) 4074 0 R (2509) 4075 0 R (2510) 4076 0 R (2511) 4077 0 R (2512) 4078 0 R (2514) 4080 0 R (2515) 4081 0 R (2519) 4083 0 R (252) 1954 0 R (2520) 4084 0 R (2521) 4085 0 R (2524) 4086 0 R (2525) 4087 0 R (2526) 4088 0 R (2527) 4093 0 R (2528) 4072 0 R (2529) 4094 0 R (253) 1955 0 R (2530) 4095 0 R (2531) 4096 0 R (2534) 4097 0 R (2535) 4098 0 R (2536) 4099 0 R (2538) 4101 0 R (2539) 4102 0 R (254) 1956 0 R (2540) 4103 0 R (2541) 4104 0 R (2542) 4105 0 R (2543) 4110 0 R (2544) 1679 0 R (2546) 4111 0 R (2547) 4112 0 R (2548) 4113 0 R (255) 1957 0 R (2551) 4118 0 R (2552) 4119 0 R (2554) 4121 0 R (2558) 4123 0 R (256) 1958 0 R (2560) 4124 0 R (2564) 4126 0 R (2566) 4127 0 R (2567) 4128 0 R (257) 1959 0 R (2571) 4130 0 R (2573) 4131 0 R (2574) 4132 0 R (2575) 4133 0 R (2579) 4135 0 R (258) 1960 0 R (2581) 4136 0 R (2585) 4138 0 R (2587) 4139 0 R (2588) 4140 0 R (259) 1961 0 R (2592) 4142 0 R (2594) 4143 0 R (2595) 4144 0 R (2596) 4150 0 R (2597) 4151 0 R (2598) 4152 0 R (2599) 4153 0 R (26) 1803 0 R (26.0) 1046 0 R (26.72.102.2) 1050 0 R (260) 1962 0 R (2603) 4155 0 R (2605) 4156 0 R (2606) 4157 0 R (2607) 4158 0 R (2608) 4159 0 R (2609) 4160 0 R (261) 1963 0 R (2610) 4161 0 R (2611) 4162 0 R (2615) 4164 0 R (2616) 4165 0 R (2618) 4166 0 R (2619) 4167 0 R (2623) 4169 0 R (2624) 4170 0 R (2625) 4171 0 R (2627) 4172 0 R (2628) 4173 0 R (2629) 4149 0 R (2631) 4179 0 R (2632) 4180 0 R (2633) 4181 0 R (2634) 4182 0 R (2635) 4183 0 R (2636) 4184 0 R (2637) 4185 0 R (2638) 4186 0 R (2639) 4187 0 R (264) 1964 0 R (2640) 4188 0 R (2641) 4189 0 R (2642) 4190 0 R (2643) 4191 0 R (2644) 4192 0 R (2648) 4194 0 R (265) 1965 0 R (2653) 4196 0 R (2654) 4197 0 R (2656) 4198 0 R (2658) 4200 0 R (266) 1966 0 R (2662) 4202 0 R (2667) 4204 0 R (2669) 4209 0 R (2670) 4210 0 R (2674) 4212 0 R (2676) 4213 0 R (2678) 4215 0 R (268) 1968 0 R (2682) 4217 0 R (2687) 4219 0 R (2689) 4220 0 R (269) 1969 0 R (2690) 4221 0 R (2691) 4222 0 R (2695) 4224 0 R (2696) 4225 0 R (2698) 4226 0 R (2699) 4227 0 R (27.0) 1054 0 R (27.72.103.2) 1058 0 R (27.72.104.2) 1062 0 R (270) 1970 0 R (2700) 4228 0 R (2701) 4229 0 R (2702) 4230 0 R (2703) 4231 0 R (2704) 4232 0 R (2708) 4238 0 R (271) 1971 0 R (2710) 4239 0 R (2711) 4240 0 R (2715) 4242 0 R (272) 1972 0 R (2720) 4244 0 R (2722) 4245 0 R (2726) 4247 0 R (2727) 4248 0 R (2729) 4249 0 R (273) 1973 0 R (2733) 4251 0 R (2738) 4253 0 R (274) 1974 0 R (2743) 4255 0 R (2747) 4258 0 R (275) 1975 0 R (2751) 4264 0 R (2756) 4266 0 R (2761) 4268 0 R (2763) 4269 0 R (2764) 4270 0 R (2765) 4271 0 R (2766) 4272 0 R (2767) 4273 0 R (2768) 4274 0 R (2769) 4275 0 R (2770) 4276 0 R (2771) 4277 0 R (2772) 4278 0 R (2773) 4279 0 R (2774) 4280 0 R (2775) 4281 0 R (2776) 4282 0 R (2777) 4283 0 R (2778) 4284 0 R (2779) 4285 0 R (278) 1978 0 R (2780) 4286 0 R (2785) 4289 0 R (2787) 4290 0 R (2788) 4291 0 R (2789) 4292 0 R (279) 1979 0 R (2790) 4293 0 R (2791) 4298 0 R (2792) 4299 0 R (2796) 4301 0 R (2798) 4302 0 R (2799) 4303 0 R (28) 1805 0 R (28.0) 1066 0 R (28.72.105.2) 1070 0 R (28.72.106.2) 1074 0 R (280) 1980 0 R (2800) 4304 0 R (2801) 4305 0 R (2802) 4306 0 R (2803) 4307 0 R (2804) 4308 0 R (2805) 4309 0 R (2807) 4311 0 R (2808) 4312 0 R (2809) 4313 0 R (281) 1981 0 R (2810) 4314 0 R (2811) 4315 0 R (2812) 4316 0 R (2814) 4318 0 R (2818) 4324 0 R (282) 1982 0 R (2820) 4325 0 R (2821) 4326 0 R (2822) 4327 0 R (2823) 4328 0 R (2828) 4331 0 R (283) 1983 0 R (2831) 4333 0 R (2835) 4335 0 R (2837) 4336 0 R (284) 1984 0 R (2841) 4338 0 R (2843) 4339 0 R (2844) 4340 0 R (2845) 4341 0 R (2846) 4342 0 R (2847) 4343 0 R (2848) 4344 0 R (2849) 4345 0 R (285) 1985 0 R (2850) 4346 0 R (2851) 4347 0 R (2852) 4348 0 R (2853) 4349 0 R (2854) 4350 0 R (2855) 4356 0 R (2856) 4357 0 R (2857) 4358 0 R (2858) 4359 0 R (2859) 4360 0 R (286) 1986 0 R (2860) 4361 0 R (2861) 4362 0 R (2862) 4363 0 R (2863) 4364 0 R (2864) 4365 0 R (2868) 4367 0 R (287) 1987 0 R (2870) 4368 0 R (2871) 4369 0 R (2872) 4370 0 R (2873) 4371 0 R (2877) 4373 0 R (288) 1991 0 R (2882) 4375 0 R (2884) 4376 0 R (2885) 4377 0 R (2886) 4378 0 R (2887) 4379 0 R (2888) 4380 0 R (2889) 4381 0 R (289) 1992 0 R (2890) 4382 0 R (2891) 4383 0 R (2893) 4385 0 R (2894) 4386 0 R (2898) 4388 0 R (29.0) 1078 0 R (29.72.107.2) 1082 0 R (29.72.108.2) 1086 0 R (290) 1993 0 R (2900) 4389 0 R (2901) 4390 0 R (2902) 4391 0 R (2903) 4392 0 R (2904) 4393 0 R (2905) 4394 0 R (2906) 4395 0 R (2908) 4397 0 R (291) 1994 0 R (2912) 4399 0 R (2914) 4400 0 R (2915) 4401 0 R (2916) 4402 0 R (292) 1995 0 R (2920) 4410 0 R (2922) 4411 0 R (2923) 4412 0 R (2924) 4413 0 R (2925) 4414 0 R (2926) 4415 0 R (293) 1996 0 R (2930) 4417 0 R (2932) 4418 0 R (2933) 4419 0 R (2934) 4420 0 R (2935) 4421 0 R (2939) 4423 0 R (294) 1997 0 R (2941) 4424 0 R (2942) 4425 0 R (2943) 4426 0 R (2945) 4428 0 R (2949) 4430 0 R (295) 1998 0 R (2951) 4431 0 R (2953) 4408 0 R (2958) 4438 0 R (296) 1999 0 R (2963) 4440 0 R (2964) 4441 0 R (2966) 4442 0 R (2967) 4443 0 R (2968) 4444 0 R (2969) 4445 0 R (297) 2000 0 R (2970) 4446 0 R (2974) 4448 0 R (2976) 4449 0 R (2977) 4450 0 R (2978) 4451 0 R (2979) 4452 0 R (298) 2001 0 R (2980) 4453 0 R (2981) 4454 0 R (2982) 4455 0 R (2983) 4456 0 R (2984) 4457 0 R (2985) 4458 0 R (2986) 4459 0 R (2987) 4460 0 R (2988) 4461 0 R (2989) 4462 0 R (299) 2002 0 R (2991) 4464 0 R (2995) 4466 0 R (3.0) 10 0 R (30.0) 1090 0 R (30.72.109.2) 1094 0 R (300) 2003 0 R (3000) 4468 0 R (3002) 4474 0 R (3003) 4475 0 R (3004) 4476 0 R (3005) 4477 0 R (3006) 4478 0 R (3007) 4479 0 R (301) 2004 0 R (3011) 4481 0 R (3012) 4482 0 R (3014) 4483 0 R (302) 2005 0 R (3025) 4486 0 R (3026) 4487 0 R (303) 2006 0 R (3031) 4489 0 R (3033) 4490 0 R (3037) 4492 0 R (3038) 4493 0 R (3040) 4494 0 R (3041) 4495 0 R (3042) 4496 0 R (3043) 4497 0 R (3044) 4498 0 R (3046) 4473 0 R (305) 2008 0 R (3050) 4505 0 R (3052) 4506 0 R (3053) 4507 0 R (3054) 4508 0 R (3058) 4510 0 R (306) 2009 0 R (3060) 4511 0 R (3061) 4512 0 R (3062) 4513 0 R (3063) 4514 0 R (3067) 4516 0 R (3068) 4517 0 R (3069) 4518 0 R (307) 2010 0 R (3071) 4519 0 R (3072) 4520 0 R (3073) 4521 0 R (3077) 4523 0 R (3079) 4524 0 R (308) 2011 0 R (3080) 4525 0 R (3081) 4526 0 R (3082) 4527 0 R (3083) 4528 0 R (3084) 4529 0 R (3085) 4530 0 R (3086) 4531 0 R (3087) 4532 0 R (3088) 4533 0 R (3089) 4538 0 R (309) 2012 0 R (3090) 4539 0 R (3091) 4540 0 R (3092) 4541 0 R (3093) 4542 0 R (3094) 4543 0 R (3095) 4544 0 R (3098) 4550 0 R (31) 1806 0 R (310) 2013 0 R (3101) 4551 0 R (3102) 4552 0 R (3103) 4553 0 R (3104) 4554 0 R (3107) 4557 0 R (3108) 4558 0 R (3109) 4559 0 R (311) 2014 0 R (3110) 4560 0 R (3111) 4561 0 R (3114) 4562 0 R (3115) 4563 0 R (3116) 4564 0 R (3117) 4565 0 R (3118) 4566 0 R (312) 2015 0 R (3122) 4567 0 R (3123) 4568 0 R (3124) 4569 0 R (3125) 4570 0 R (3126) 4571 0 R (3127) 4572 0 R (3128) 4577 0 R (3131) 4578 0 R (3132) 4579 0 R (3133) 4580 0 R (3136) 4581 0 R (3137) 4582 0 R (3138) 4583 0 R (3139) 4584 0 R (314) 2017 0 R (3140) 4585 0 R (3141) 4586 0 R (3142) 4587 0 R (3143) 4588 0 R (3146) 4589 0 R (3147) 4590 0 R (3148) 4591 0 R (3149) 4596 0 R (315) 2018 0 R (3150) 4597 0 R (3151) 4598 0 R (3152) 4599 0 R (3153) 4600 0 R (3154) 4601 0 R (3155) 4602 0 R (3158) 4603 0 R (3159) 4604 0 R (316) 2019 0 R (3160) 4605 0 R (3161) 4606 0 R (3162) 4607 0 R (3163) 4608 0 R (3166) 4609 0 R (3167) 4610 0 R (3168) 4615 0 R (3169) 4616 0 R (317) 2020 0 R (3170) 4617 0 R (3171) 4618 0 R (3174) 4619 0 R (3175) 4620 0 R (3176) 4621 0 R (3177) 4622 0 R (3178) 4623 0 R (318) 2021 0 R (3181) 4624 0 R (3182) 4625 0 R (3183) 4626 0 R (3184) 4627 0 R (3185) 4628 0 R (3186) 4629 0 R (3187) 4630 0 R (3188) 1749 0 R (319) 2022 0 R (3190) 4631 0 R (3191) 4632 0 R (3192) 4637 0 R (3193) 4638 0 R (3194) 4639 0 R (3198) 4640 0 R (3199) 4641 0 R (32) 1807 0 R (320) 2023 0 R (3200) 4642 0 R (3201) 4643 0 R (3205) 4645 0 R (3206) 4646 0 R (3207) 4647 0 R (3208) 4648 0 R (3209) 4649 0 R (321) 2024 0 R (3212) 4654 0 R (3213) 4655 0 R (3216) 4656 0 R (3217) 4657 0 R (3218) 4658 0 R (3219) 4659 0 R (322) 2025 0 R (3220) 4660 0 R (3221) 4661 0 R (3222) 4662 0 R (3223) 4663 0 R (3224) 4664 0 R (3225) 4665 0 R (3226) 4666 0 R (3227) 4667 0 R (3228) 4668 0 R (3229) 4669 0 R (3230) 4670 0 R (3231) 4671 0 R (3232) 4672 0 R (3233) 4673 0 R (3234) 4674 0 R (3235) 4675 0 R (3236) 4676 0 R (3237) 4677 0 R (3238) 4678 0 R (3239) 4679 0 R (324) 2027 0 R (3240) 4680 0 R (3241) 4681 0 R (3242) 4682 0 R (3243) 4683 0 R (3244) 4684 0 R (3247) 4685 0 R (3248) 4686 0 R (3249) 4687 0 R (325) 2028 0 R (3250) 4688 0 R (3251) 4689 0 R (3252) 4690 0 R (3253) 4691 0 R (3254) 4692 0 R (3255) 4693 0 R (3260) 4699 0 R (3261) 4700 0 R (3262) 4701 0 R (3263) 4702 0 R (3264) 4703 0 R (3265) 4704 0 R (3266) 4705 0 R (3267) 4706 0 R (3268) 4707 0 R (3269) 4708 0 R (327) 2030 0 R (3270) 4709 0 R (3271) 4710 0 R (3272) 4711 0 R (3273) 4712 0 R (3274) 4713 0 R (3275) 4714 0 R (3278) 4715 0 R (3279) 4716 0 R (328) 2031 0 R (3280) 4717 0 R (3281) 4718 0 R (3282) 4719 0 R (3283) 4720 0 R (3284) 4721 0 R (3285) 4728 0 R (3286) 4722 0 R (3288) 4729 0 R (3289) 4730 0 R (3290) 4731 0 R (3291) 4732 0 R (3292) 4733 0 R (3293) 4734 0 R (3294) 4735 0 R (3295) 4736 0 R (3296) 4737 0 R (3297) 4738 0 R (3298) 4739 0 R (3299) 4740 0 R (33) 1808 0 R (330) 2033 0 R (3300) 4741 0 R (3301) 4742 0 R (3302) 4743 0 R (3303) 4744 0 R (3304) 4745 0 R (3305) 4746 0 R (3306) 4747 0 R (3307) 4748 0 R (3308) 4749 0 R (3309) 4750 0 R (331) 2034 0 R (3310) 4751 0 R (3311) 4752 0 R (3312) 4757 0 R (3313) 4727 0 R (3315) 4758 0 R (3316) 4759 0 R (3317) 4760 0 R (3318) 4761 0 R (3319) 4762 0 R (3320) 4763 0 R (3321) 4764 0 R (3322) 4765 0 R (3323) 4766 0 R (3324) 4767 0 R (3325) 4768 0 R (3326) 4769 0 R (3327) 4770 0 R (3328) 4771 0 R (3329) 4772 0 R (333) 2036 0 R (3332) 4773 0 R (3333) 4774 0 R (3334) 4775 0 R (3335) 4776 0 R (3336) 4777 0 R (3337) 4778 0 R (3338) 4779 0 R (3339) 4780 0 R (334) 2037 0 R (3340) 4781 0 R (3341) 4786 0 R (3342) 4787 0 R (3343) 4788 0 R (3344) 4789 0 R (3345) 4790 0 R (3346) 4791 0 R (3347) 4792 0 R (3348) 4793 0 R (3349) 4794 0 R (3350) 4795 0 R (3351) 4796 0 R (3352) 4797 0 R (3353) 4798 0 R (3354) 4799 0 R (3355) 4800 0 R (3356) 4801 0 R (3357) 4802 0 R (3358) 4803 0 R (3359) 4804 0 R (336) 2039 0 R (3360) 4805 0 R (3363) 4810 0 R (3364) 4811 0 R (3365) 4812 0 R (3368) 4813 0 R (3369) 4814 0 R (337) 2040 0 R (3370) 4815 0 R (3373) 4816 0 R (3374) 4817 0 R (3375) 4818 0 R (3376) 4819 0 R (3377) 4820 0 R (3378) 4821 0 R (3379) 4826 0 R (3380) 4827 0 R (3383) 4828 0 R (3384) 4829 0 R (3387) 4830 0 R (3388) 4831 0 R (3389) 4832 0 R (339) 2042 0 R (3390) 4839 0 R (3393) 4840 0 R (3394) 4841 0 R (3395) 4842 0 R (3396) 4843 0 R (3397) 4844 0 R (3398) 4845 0 R (3399) 4846 0 R (340) 2043 0 R (3400) 4847 0 R (3401) 4848 0 R (3402) 4849 0 R (3403) 4850 0 R (3404) 4851 0 R (3405) 4852 0 R (3406) 4853 0 R (3407) 4854 0 R (3408) 4855 0 R (3409) 4856 0 R (3410) 4857 0 R (3411) 4858 0 R (3412) 4859 0 R (3413) 4860 0 R (3414) 4861 0 R (3415) 4862 0 R (3416) 4863 0 R (3417) 4864 0 R (3418) 4865 0 R (3419) 4866 0 R (3420) 4867 0 R (3421) 4868 0 R (3422) 4869 0 R (3423) 4870 0 R (3424) 4838 0 R (3425) 4875 0 R (3426) 4876 0 R (3429) 4877 0 R (3430) 4878 0 R (3431) 4879 0 R (3434) 4880 0 R (3435) 4881 0 R (3438) 4882 0 R (3439) 4887 0 R (344) 2045 0 R (3442) 4888 0 R (3445) 4889 0 R (3448) 4890 0 R (3449) 4891 0 R (345) 2049 0 R (3450) 4892 0 R (3453) 4893 0 R (3454) 4894 0 R (3455) 4895 0 R (3456) 4900 0 R (3457) 4901 0 R (3459) 4906 0 R (3463) 4907 0 R (3464) 4908 0 R (3465) 4909 0 R (3466) 4910 0 R (3471) 4913 0 R (3472) 4914 0 R (3473) 4915 0 R (3474) 4916 0 R (3475) 4917 0 R (3476) 4918 0 R (3478) 4919 0 R (3479) 4920 0 R (348) 2050 0 R (3480) 4921 0 R (3481) 4922 0 R (3482) 4923 0 R (3484) 4924 0 R (3485) 4925 0 R (3486) 4926 0 R (3487) 4927 0 R (3488) 4928 0 R (3489) 4929 0 R (3490) 4930 0 R (3491) 4931 0 R (3492) 4932 0 R (3494) 4933 0 R (3495) 4934 0 R (3496) 4935 0 R (3497) 4936 0 R (3498) 4937 0 R (3499) 4938 0 R (3500) 4939 0 R (3501) 4940 0 R (3502) 4941 0 R (3503) 4942 0 R (3504) 4943 0 R (3506) 4944 0 R (3507) 4945 0 R (3508) 4946 0 R (3509) 4947 0 R (351) 2051 0 R (3510) 4948 0 R (3511) 4949 0 R (3516) 4956 0 R (3517) 4957 0 R (3518) 4958 0 R (3519) 4959 0 R (352) 2052 0 R (3520) 4960 0 R (3521) 4961 0 R (3523) 4962 0 R (3524) 4963 0 R (3525) 4964 0 R (3528) 4965 0 R (3529) 4966 0 R (353) 2053 0 R (3535) 4968 0 R (3536) 4969 0 R (3537) 4970 0 R (3538) 4971 0 R (354) 2054 0 R (3541) 4973 0 R (3542) 4974 0 R (3546) 4975 0 R (3547) 4976 0 R (3548) 4977 0 R (3549) 4978 0 R (355) 2055 0 R (3550) 4979 0 R (3553) 4980 0 R (3554) 4981 0 R (3555) 4982 0 R (3556) 4983 0 R (3557) 4990 0 R (3558) 4991 0 R (3559) 4992 0 R (356) 2056 0 R (3564) 4994 0 R (3565) 4995 0 R (3566) 4996 0 R (3567) 4997 0 R (357) 2057 0 R (3570) 4998 0 R (3571) 4999 0 R (3572) 5000 0 R (3578) 5004 0 R (3579) 5005 0 R (358) 2058 0 R (3580) 5006 0 R (3581) 5007 0 R (3582) 5008 0 R (3587) 5011 0 R (3588) 5012 0 R (359) 2059 0 R (3594) 5017 0 R (3595) 5018 0 R (3596) 5019 0 R (3597) 5020 0 R (3598) 5021 0 R (3599) 5022 0 R (36) 1809 0 R (3602) 5024 0 R (3603) 5025 0 R (3605) 5027 0 R (3606) 5028 0 R (3608) 5029 0 R (3609) 5030 0 R (3610) 5031 0 R (3611) 5032 0 R (3613) 5033 0 R (3614) 5034 0 R (3615) 5035 0 R (3616) 5036 0 R (3617) 5037 0 R (3619) 5038 0 R (362) 2060 0 R (3620) 5039 0 R (3621) 5040 0 R (3622) 5041 0 R (3629) 5044 0 R (3630) 5045 0 R (3631) 5046 0 R (3634) 5047 0 R (3635) 5048 0 R (3637) 5054 0 R (3638) 5055 0 R (3639) 5056 0 R (3640) 5057 0 R (3644) 5059 0 R (3645) 5060 0 R (3646) 5061 0 R (3647) 5062 0 R (3648) 5063 0 R (3649) 5064 0 R (365) 2061 0 R (3650) 5065 0 R (3651) 5066 0 R (3657) 5068 0 R (3658) 5069 0 R (3662) 5071 0 R (3663) 5072 0 R (3664) 5073 0 R (3669) 5075 0 R (3670) 5076 0 R (3671) 5077 0 R (3673) 5082 0 R (3674) 5083 0 R (3675) 5084 0 R (3676) 5085 0 R (3677) 5086 0 R (3678) 5087 0 R (3679) 5088 0 R (368) 2062 0 R (3680) 5089 0 R (3681) 5090 0 R (3682) 5091 0 R (3683) 5092 0 R (3684) 5093 0 R (3685) 5094 0 R (3686) 5095 0 R (3691) 5098 0 R (3692) 5099 0 R (3693) 5100 0 R (3697) 5101 0 R (3698) 5102 0 R (37) 1810 0 R (3703) 5105 0 R (3704) 5106 0 R (3705) 5107 0 R (3706) 5110 0 R (3707) 5108 0 R (3708) 5109 0 R (371) 2063 0 R (372) 2064 0 R (373) 2065 0 R (376) 2071 0 R (377) 2072 0 R (38) 1811 0 R (380) 2073 0 R (383) 2074 0 R (384) 2075 0 R (385) 2076 0 R (386) 2077 0 R (387) 2078 0 R (39) 1812 0 R (390) 2079 0 R (391) 2080 0 R (395) 2082 0 R (396) 2083 0 R (397) 2084 0 R (398) 2085 0 R (399) 2086 0 R (4.0) 14 0 R (40) 1813 0 R (400) 2087 0 R (401) 2088 0 R (402) 2089 0 R (403) 2094 0 R (404) 2095 0 R (405) 2070 0 R (407) 2096 0 R (408) 2097 0 R (41) 1814 0 R (411) 2098 0 R (416) 2102 0 R (417) 2103 0 R (42) 1815 0 R (421) 2106 0 R (422) 2107 0 R (423) 2108 0 R (424) 2109 0 R (425) 2110 0 R (426) 2111 0 R (427) 2112 0 R (428) 2113 0 R (429) 2114 0 R (43) 1816 0 R (430) 2115 0 R (431) 2116 0 R (433) 2121 0 R (434) 2122 0 R (435) 2123 0 R (436) 2124 0 R (437) 2125 0 R (438) 2126 0 R (439) 2127 0 R (44) 1817 0 R (440) 2128 0 R (441) 2129 0 R (443) 2130 0 R (444) 2131 0 R (445) 2132 0 R (446) 2133 0 R (447) 2134 0 R (448) 2135 0 R (449) 2136 0 R (45) 1818 0 R (450) 2137 0 R (453) 2139 0 R (454) 2140 0 R (455) 2141 0 R (456) 2144 0 R (458) 2146 0 R (459) 2147 0 R (46) 1819 0 R (460) 2148 0 R (461) 2149 0 R (462) 2150 0 R (463) 2151 0 R (464) 2152 0 R (465) 2153 0 R (466) 2154 0 R (467) 2155 0 R (468) 2156 0 R (469) 2163 0 R (47) 1820 0 R (470) 2164 0 R (471) 2165 0 R (472) 2166 0 R (473) 2167 0 R (474) 2168 0 R (475) 2169 0 R (476) 2170 0 R (477) 2171 0 R (48) 1821 0 R (480) 2172 0 R (481) 2173 0 R (482) 2174 0 R (484) 2175 0 R (485) 2176 0 R (486) 2177 0 R (487) 2178 0 R (489) 2180 0 R (49) 1822 0 R (490) 2181 0 R (491) 2182 0 R (492) 2183 0 R (493) 2184 0 R (494) 2185 0 R (495) 2186 0 R (496) 2187 0 R (497) 2188 0 R (498) 2189 0 R (5.0) 18 0 R (5.1.1) 22 0 R (5.2.1) 26 0 R (5.3.1) 30 0 R (5.4.1) 34 0 R (5.5.1) 38 0 R (50) 1823 0 R (500) 2190 0 R (501) 2191 0 R (502) 2192 0 R (503) 2193 0 R (504) 2194 0 R (505) 2195 0 R (506) 2196 0 R (507) 2197 0 R (508) 2198 0 R (509) 2199 0 R (51) 1824 0 R (510) 2200 0 R (511) 2201 0 R (512) 2206 0 R (513) 2162 0 R (515) 2207 0 R (516) 2208 0 R (517) 2209 0 R (518) 2210 0 R (519) 2211 0 R (52) 1829 0 R (520) 2212 0 R (521) 1241 0 R (523) 2213 0 R (524) 2214 0 R (525) 2215 0 R (526) 2216 0 R (527) 2217 0 R (528) 2218 0 R (53) 1830 0 R (531) 2219 0 R (536) 2221 0 R (537) 2222 0 R (538) 2223 0 R (540) 2224 0 R (541) 2225 0 R (542) 2226 0 R (544) 2227 0 R (545) 2228 0 R (546) 2229 0 R (547) 2230 0 R (548) 2231 0 R (549) 2232 0 R (550) 2233 0 R (551) 2239 0 R (552) 2240 0 R (553) 2241 0 R (555) 2242 0 R (556) 2243 0 R (557) 2244 0 R (558) 2245 0 R (559) 2246 0 R (56) 1831 0 R (560) 2247 0 R (561) 2248 0 R (563) 2249 0 R (564) 2250 0 R (565) 2251 0 R (566) 2252 0 R (57) 1832 0 R (570) 2253 0 R (571) 2254 0 R (572) 2255 0 R (573) 2256 0 R (574) 2257 0 R (575) 2258 0 R (576) 2259 0 R (577) 2260 0 R (578) 2261 0 R (579) 2262 0 R (580) 2263 0 R (581) 2264 0 R (582) 2265 0 R (583) 2266 0 R (584) 2267 0 R (585) 2268 0 R (586) 2269 0 R (587) 2270 0 R (588) 2271 0 R (589) 2272 0 R (59) 1833 0 R (590) 2273 0 R (591) 2274 0 R (592) 2275 0 R (593) 2238 0 R (594) 2280 0 R (595) 2281 0 R (596) 2282 0 R (6.0) 42 0 R (6.10.1) 250 0 R (6.10.22.2) 254 0 R (6.10.23.2) 258 0 R (6.10.23.21.3) 262 0 R (6.10.23.21.7.4) 266 0 R (6.10.23.21.8.4) 270 0 R (6.10.23.21.9.4) 274 0 R (6.10.24.2) 278 0 R (6.10.25.2) 282 0 R (6.10.25.22.3) 286 0 R (6.10.25.23.3) 290 0 R (6.10.26.2) 294 0 R (6.10.26.24.3) 298 0 R (6.10.27.2) 302 0 R (6.6.1) 46 0 R (6.6.1.2) 50 0 R (6.6.2.1.3) 58 0 R (6.6.2.2) 54 0 R (6.6.2.2.3) 62 0 R (6.6.3.2) 66 0 R (6.6.4.2) 70 0 R (6.6.5.10.3) 106 0 R (6.6.5.11.3) 110 0 R (6.6.5.2) 74 0 R (6.6.5.3.3) 78 0 R (6.6.5.4.3) 82 0 R (6.6.5.5.3) 86 0 R (6.6.5.6.3) 90 0 R (6.6.5.7.3) 94 0 R (6.6.5.8.3) 98 0 R (6.6.5.9.3) 102 0 R (6.6.6.2) 114 0 R (6.7.1) 118 0 R (6.7.10.14.3) 170 0 R (6.7.10.15.3) 174 0 R (6.7.10.16.3) 178 0 R (6.7.10.2) 166 0 R (6.7.11.2) 182 0 R (6.7.7.2) 122 0 R (6.7.8.12.1.4) 134 0 R (6.7.8.12.2.4) 138 0 R (6.7.8.12.3) 130 0 R (6.7.8.12.3.4) 142 0 R (6.7.8.12.4.4) 146 0 R (6.7.8.13.3) 150 0 R (6.7.8.13.5.4) 154 0 R (6.7.8.13.6.4) 158 0 R (6.7.8.2) 126 0 R (6.7.9.2) 162 0 R (6.8.1) 186 0 R (6.8.12.2) 190 0 R (6.8.13.2) 194 0 R (6.8.14.2) 198 0 R (6.8.15.2) 202 0 R (6.8.16.2) 206 0 R (6.8.17.2) 210 0 R (6.8.18.2) 214 0 R (6.9.1) 218 0 R (6.9.19.17.3) 226 0 R (6.9.19.18.3) 230 0 R (6.9.19.19.3) 234 0 R (6.9.19.2) 222 0 R (6.9.19.20.3) 238 0 R (6.9.20.2) 242 0 R (6.9.21.2) 246 0 R (60) 1834 0 R (600) 2284 0 R (601) 2285 0 R (603) 2287 0 R (604) 2288 0 R (606) 2290 0 R (607) 2291 0 R (608) 2292 0 R (609) 2293 0 R (61) 1835 0 R (610) 2294 0 R (611) 2295 0 R (612) 2296 0 R (613) 2297 0 R (614) 2298 0 R (615) 2299 0 R (616) 2300 0 R (617) 2301 0 R (618) 2302 0 R (619) 2303 0 R (62) 1836 0 R (620) 2304 0 R (621) 2305 0 R (622) 2306 0 R (623) 2307 0 R (624) 2308 0 R (627) 2314 0 R (628) 2315 0 R (630) 2317 0 R (631) 2318 0 R (633) 2320 0 R (634) 2321 0 R (635) 2322 0 R (636) 2323 0 R (637) 2324 0 R (638) 2325 0 R (639) 2326 0 R (64) 1837 0 R (640) 2327 0 R (644) 2329 0 R (645) 1248 0 R (647) 2330 0 R (648) 2331 0 R (649) 2332 0 R (65) 1838 0 R (650) 2333 0 R (651) 2336 0 R (652) 2337 0 R (653) 2338 0 R (654) 2339 0 R (655) 2340 0 R (656) 2341 0 R (657) 2342 0 R (658) 1249 0 R (66) 1839 0 R (660) 2343 0 R (661) 2344 0 R (662) 2345 0 R (663) 2346 0 R (664) 2347 0 R (665) 2348 0 R (666) 2349 0 R (667) 2350 0 R (668) 2351 0 R (669) 2356 0 R (67) 1840 0 R (670) 2357 0 R (671) 2358 0 R (672) 2359 0 R (673) 2360 0 R (676) 2361 0 R (677) 2362 0 R (678) 2363 0 R (679) 2364 0 R (680) 2365 0 R (681) 2366 0 R (684) 2367 0 R (686) 2369 0 R (687) 2370 0 R (688) 2371 0 R (689) 2372 0 R (69) 1841 0 R (690) 2373 0 R (691) 2374 0 R (692) 2375 0 R (695) 2381 0 R (696) 2382 0 R (697) 2383 0 R (698) 2384 0 R (699) 2385 0 R (7.0) 306 0 R (7.11.1) 310 0 R (7.12.1) 314 0 R (7.12.28.2) 318 0 R (7.12.29.2) 322 0 R (7.12.29.25.3) 326 0 R (7.12.29.26.3) 330 0 R (7.13.1) 334 0 R (7.14.1) 338 0 R (7.15.1) 342 0 R (7.16.1) 346 0 R (7.17.1) 350 0 R (7.17.30.2) 354 0 R (7.17.31.2) 358 0 R (7.17.31.27.3) 362 0 R (7.17.32.2) 366 0 R (7.17.33.2) 370 0 R (7.17.33.28.3) 374 0 R (7.17.33.29.3) 378 0 R (7.17.34.2) 382 0 R (7.17.34.30.10.4) 390 0 R (7.17.34.30.11.4) 394 0 R (7.17.34.30.12.4) 398 0 R (7.17.34.30.13.4) 402 0 R (7.17.34.30.14.4) 406 0 R (7.17.34.30.15.4) 410 0 R (7.17.34.30.16.4) 414 0 R (7.17.34.30.17.4) 418 0 R (7.17.34.30.18.4) 422 0 R (7.17.34.30.3) 386 0 R (7.17.34.31.3) 426 0 R (7.17.34.32.3) 430 0 R (7.18.1) 434 0 R (7.19.1) 438 0 R (7.20.1) 442 0 R (7.20.35.2) 446 0 R (7.20.36.2) 450 0 R (7.20.37.2) 454 0 R (7.20.38.2) 458 0 R (7.20.38.33.3) 462 0 R (7.20.38.34.3) 466 0 R (7.20.38.35.3) 470 0 R (7.21.1) 474 0 R (7.21.39.2) 478 0 R (7.21.40.2) 482 0 R (7.21.40.36.3) 486 0 R (7.21.40.37.3) 490 0 R (7.21.40.38.3) 494 0 R (7.21.41.2) 498 0 R (70) 1842 0 R (700) 2386 0 R (701) 2387 0 R (702) 2388 0 R (703) 2389 0 R (704) 2390 0 R (705) 2391 0 R (708) 2392 0 R (709) 2393 0 R (71) 1843 0 R (710) 2394 0 R (711) 2395 0 R (712) 2396 0 R (715) 2398 0 R (716) 2399 0 R (717) 2400 0 R (72) 1844 0 R (720) 2402 0 R (721) 2403 0 R (722) 2404 0 R (723) 2405 0 R (724) 2406 0 R (725) 2407 0 R (726) 2408 0 R (729) 2410 0 R (730) 2411 0 R (731) 2412 0 R (732) 2413 0 R (733) 2414 0 R (736) 2421 0 R (737) 2422 0 R (738) 2423 0 R (739) 2424 0 R (74) 1845 0 R (742) 2426 0 R (743) 2427 0 R (744) 2428 0 R (745) 2429 0 R (748) 2431 0 R (749) 2432 0 R (75) 1846 0 R (750) 2433 0 R (751) 2434 0 R (754) 2436 0 R (755) 2437 0 R (756) 2438 0 R (757) 2439 0 R (76) 1847 0 R (760) 2440 0 R (761) 2441 0 R (762) 2442 0 R (763) 2443 0 R (764) 2444 0 R (765) 2445 0 R (766) 2446 0 R (767) 2447 0 R (768) 2448 0 R (769) 2449 0 R (77) 1848 0 R (770) 2450 0 R (771) 2451 0 R (774) 2456 0 R (775) 2457 0 R (776) 2458 0 R (779) 2459 0 R (782) 2460 0 R (783) 2461 0 R (784) 2462 0 R (787) 2463 0 R (79) 1849 0 R (790) 2466 0 R (791) 2467 0 R (792) 2468 0 R (793) 2469 0 R (794) 2470 0 R (795) 2471 0 R (796) 2472 0 R (797) 2473 0 R (798) 2474 0 R (799) 2475 0 R (8.0) 502 0 R (8.22.1) 506 0 R (8.22.42.2) 510 0 R (8.22.43.2) 514 0 R (8.22.44.2) 518 0 R (8.23.1) 522 0 R (8.23.45.2) 526 0 R (8.23.46.2) 530 0 R (8.23.47.2) 534 0 R (8.24.1) 538 0 R (8.24.48.2) 542 0 R (8.24.49.2) 546 0 R (8.25.1) 550 0 R (8.25.50.2) 554 0 R (80) 1850 0 R (802) 2481 0 R (803) 2482 0 R (804) 2483 0 R (805) 2484 0 R (806) 2485 0 R (807) 2486 0 R (81) 1851 0 R (810) 2487 0 R (813) 2490 0 R (814) 2491 0 R (815) 2492 0 R (816) 2493 0 R (82) 1852 0 R (820) 2498 0 R (821) 2499 0 R (822) 2500 0 R (823) 2501 0 R (824) 2502 0 R (825) 2503 0 R (827) 2505 0 R (828) 2506 0 R (829) 2507 0 R (830) 2508 0 R (831) 2509 0 R (832) 2510 0 R (833) 2511 0 R (834) 2512 0 R (835) 2513 0 R (836) 2514 0 R (837) 2515 0 R (838) 2516 0 R (84) 1853 0 R (842) 2519 0 R (843) 2520 0 R (845) 2521 0 R (847) 2522 0 R (85) 1854 0 R (850) 2523 0 R (851) 2524 0 R (852) 2525 0 R (853) 2526 0 R (854) 2527 0 R (855) 2528 0 R (856) 2529 0 R (857) 2530 0 R (858) 2531 0 R (859) 2532 0 R (86) 1855 0 R (860) 2533 0 R (861) 2534 0 R (863) 2535 0 R (864) 2536 0 R (865) 2537 0 R (866) 2538 0 R (87) 1856 0 R (870) 1362 0 R (872) 2544 0 R (874) 1363 0 R (876) 2546 0 R (877) 2547 0 R (878) 2548 0 R (879) 2549 0 R (880) 2550 0 R (881) 2551 0 R (882) 1364 0 R (884) 2552 0 R (886) 2553 0 R (887) 2554 0 R (888) 2555 0 R (89) 1857 0 R (890) 2561 0 R (891) 2562 0 R (892) 2563 0 R (893) 2564 0 R (895) 2565 0 R (896) 2566 0 R (897) 2567 0 R (898) 2568 0 R (899) 2569 0 R (9.0) 558 0 R (9.26.1) 562 0 R (9.26.51.2) 566 0 R (9.26.52.2) 570 0 R (9.26.53.2) 574 0 R (9.26.54.2) 578 0 R (9.26.55.2) 582 0 R (9.26.56.2) 586 0 R (9.27.1) 590 0 R (9.28.1) 594 0 R (9.29.1) 598 0 R (9.30.1) 602 0 R (9.30.57.2) 606 0 R (9.30.57.39.3) 610 0 R (9.31.1) 614 0 R (9.31.58.2) 618 0 R (9.31.59.2) 622 0 R (9.31.60.2) 626 0 R (9.31.61.2) 630 0 R (9.31.62.2) 634 0 R (90) 1858 0 R (900) 2570 0 R (901) 2571 0 R (902) 2572 0 R (903) 2573 0 R (904) 2574 0 R (905) 2575 0 R (906) 2576 0 R (907) 2577 0 R (908) 2578 0 R (909) 1365 0 R (91) 1859 0 R (911) 2579 0 R (912) 2580 0 R (913) 2581 0 R (914) 2582 0 R (915) 2583 0 R (916) 2584 0 R (917) 2585 0 R (918) 2586 0 R (919) 2587 0 R (92) 1860 0 R (920) 2592 0 R (921) 2593 0 R (922) 2594 0 R (923) 2595 0 R (924) 2596 0 R (927) 2597 0 R (928) 1367 0 R (93) 1861 0 R (930) 2598 0 R (931) 2599 0 R (932) 2600 0 R (933) 2601 0 R (934) 2602 0 R (935) 2603 0 R (936) 2604 0 R (937) 2605 0 R (938) 2606 0 R (939) 2607 0 R (940) 2608 0 R (941) 1368 0 R (943) 2609 0 R (944) 2610 0 R (945) 2611 0 R (946) 2616 0 R (947) 2617 0 R (948) 2618 0 R (949) 2619 0 R (95) 1862 0 R (950) 2620 0 R (951) 2621 0 R (952) 2622 0 R (953) 2623 0 R (954) 2624 0 R (955) 2625 0 R (956) 2626 0 R (957) 2627 0 R (958) 2628 0 R (959) 2629 0 R (96) 1863 0 R (960) 2630 0 R (961) 2631 0 R (962) 2632 0 R (963) 2633 0 R (964) 2634 0 R (965) 2635 0 R (966) 2636 0 R (967) 2637 0 R (968) 2638 0 R (969) 2639 0 R (97) 1864 0 R (970) 2640 0 R (971) 2645 0 R (972) 2646 0 R (973) 2647 0 R (974) 1369 0 R (976) 2648 0 R (977) 1370 0 R (979) 2649 0 R (98) 1865 0 R (980) 2650 0 R (981) 2651 0 R (982) 2652 0 R (983) 2653 0 R (984) 2654 0 R (985) 2655 0 R (986) 1371 0 R (988) 2656 0 R (99) 1866 0 R (990) 2658 0 R (991) 2659 0 R (992) 2660 0 R (993) 2665 0 R (994) 2666 0 R (995) 2667 0 R (996) 2668 0 R (997) 2669 0 R (998) 2670 0 R (999) 2671 0 R (Doc-Start) 1102 0 R (about) 1211 0 R (accountsettings) 1666 0 R (administration) 1372 0 R (apache-addtype) 1254 0 R (attachments) 1664 0 R (bonsai) 1537 0 R (boolean) 1646 0 R (bug_page) 1643 0 R (bugreports) 1651 0 R (bzldap) 1253 0 R (charts) 1671 0 R (cmdline) 1753 0 R (cmdline-bugmail) 1754 0 R (commenting) 1663 0 R (components) 1380 0 R (configuration) 1236 0 R (conventions) 1216 0 R (copyright) 1212 0 R (createnewusers) 1377 0 R (credits) 1215 0 R (cust-change-permissions) 1531 0 R (cust-hooks) 1530 0 R (cust-templates) 1523 0 R (customization) 1522 0 R (cvs) 1538 0 R (database-engine) 1238 0 R (dbdoc) 1533 0 R (dbmodify) 1532 0 R (defaultuser) 1375 0 R (disclaimer) 1213 0 R (emailsettings) 1667 0 R (extraconfig) 1247 0 R (faq) 1680 0 R (faq-admin) 4257 0 R (faq-admin-cvsupdate) 4267 0 R (faq-admin-enable-unconfirmed) 4288 0 R (faq-admin-livebackup) 4265 0 R (faq-admin-midair) 4259 0 R (faq-admin-moving) 4300 0 R (faq-db) 4396 0 R (faq-db-corrupted) 4398 0 R (faq-db-manualedit) 4409 0 R (faq-db-permissions) 4416 0 R (faq-db-synchronize) 4422 0 R (faq-email) 4332 0 R (faq-email-mailif) 4372 0 R (faq-email-nomail) 4334 0 R (faq-email-nonreceived) 4387 0 R (faq-email-sendmailnow) 4374 0 R (faq-email-testing) 4337 0 R (faq-email-whine) 4366 0 R (faq-general) 4120 0 R (faq-general-bonsaitools) 4163 0 R (faq-general-bzmissing) 4141 0 R (faq-general-companies) 4129 0 R (faq-general-compare) 4137 0 R (faq-general-cookie) 4193 0 R (faq-general-license) 4122 0 R (faq-general-maintainers) 4134 0 R (faq-general-mysql) 4154 0 R (faq-general-perlpath) 4168 0 R (faq-general-support) 4125 0 R (faq-hacking) 4503 0 R (faq-hacking-bugzillabugs) 4509 0 R (faq-hacking-patches) 4522 0 R (faq-hacking-priority) 4515 0 R (faq-hacking-templatestyle) 4504 0 R (faq-mod-perl) 4195 0 R (faq-nt) 4427 0 R (faq-nt-bundle) 4437 0 R (faq-nt-dbi) 4447 0 R (faq-nt-easiest) 4429 0 R (faq-nt-mappings) 4439 0 R (faq-phb) 4199 0 R (faq-phb-backup) 4243 0 R (faq-phb-client) 4201 0 R (faq-phb-cost) 4252 0 R (faq-phb-data) 4223 0 R (faq-phb-email) 4216 0 R (faq-phb-emailapp) 4218 0 R (faq-phb-installtime) 4250 0 R (faq-phb-l10n) 4233 0 R (faq-phb-maintenance) 4246 0 R (faq-phb-priorities) 4203 0 R (faq-phb-renameBugs) 4254 0 R (faq-phb-reporting) 4211 0 R (faq-phb-reports) 4241 0 R (faq-security) 4317 0 R (faq-security-knownproblems) 4330 0 R (faq-security-mysql) 4319 0 R (faq-use) 4463 0 R (faq-use-accept) 4480 0 R (faq-use-attachment) 4485 0 R (faq-use-changeaddress) 4465 0 R (faq-use-close) 4491 0 R (faq-use-keyword) 4488 0 R (faq-use-query) 4467 0 R (flag-askto) 1387 0 R (flag-type-attachment) 1389 0 R (flag-type-bug) 1390 0 R (flag-types) 1388 0 R (flag-values) 1386 0 R (flags) 1674 0 R (flags-about) 1385 0 R (flags-admin) 1391 0 R (flags-create) 1392 0 R (flags-create-field-active) 3016 0 R (flags-create-field-category) 2978 0 R (flags-create-field-cclist) 3026 0 R (flags-create-field-description) 2976 0 R (flags-create-field-multiplicable) 3035 0 R (flags-create-field-name) 2974 0 R (flags-create-field-requestable) 3019 0 R (flags-create-field-sortkey) 3012 0 R (flags-create-field-specific) 3028 0 R (flags-delete) 1393 0 R (flags-edit) 1394 0 R (flags-overview) 1383 0 R (flags-simpleexample) 1384 0 R (general-advice) 1682 0 R (gfdl) 1759 0 R (gfdl-0) 1760 0 R (gfdl-1) 1761 0 R (gfdl-10) 1770 0 R (gfdl-2) 1762 0 R (gfdl-3) 1763 0 R (gfdl-4) 1764 0 R (gfdl-5) 1765 0 R (gfdl-6) 1766 0 R (gfdl-7) 1767 0 R (gfdl-8) 1768 0 R (gfdl-9) 1769 0 R (gfdl-howto) 1771 0 R (gloss-a) 4911 0 R (gloss-apache) 4912 0 R (gloss-b) 4951 0 R (gloss-bugzilla) 1888 0 R (gloss-c) 4967 0 R (gloss-cgi) 1950 0 R (gloss-component) 4972 0 R (gloss-contrib) 2415 0 R (gloss-cpan) 2539 0 R (gloss-d) 4993 0 R (gloss-daemon) 3301 0 R (gloss-dos) 3437 0 R (gloss-g) 5002 0 R (gloss-groups) 5003 0 R (gloss-htaccess) 3408 0 R (gloss-j) 5009 0 R (gloss-javascript) 5010 0 R (gloss-m) 4989 0 R (gloss-mta) 4403 0 R (gloss-mysql) 5023 0 R (gloss-p) 5043 0 R (gloss-ppm) 2476 0 R (gloss-product) 2835 0 R (gloss-q) 5058 0 R (gloss-r) 5067 0 R (gloss-rdbms) 5049 0 R (gloss-regexp) 5070 0 R (gloss-s) 5074 0 R (gloss-service) 3302 0 R (gloss-t) 5096 0 R (gloss-target-milestone) 5097 0 R (gloss-tcl) 2309 0 R (gloss-z) 5103 0 R (gloss-zarro) 5104 0 R (glossary) 1772 0 R (groups) 1397 0 R (hintsandtips) 1660 0 R (http) 1242 0 R (http-aol) 1245 0 R (http-apache) 1243 0 R (http-iis) 1244 0 R (index) 1103 0 R (install-MTA) 1235 0 R (install-bzfiles) 1224 0 R (install-config-bugzilla) 1246 0 R (install-database) 1220 0 R (install-modules-chart-base) 1229 0 R (install-modules-dbd-mysql) 1226 0 R (install-modules-gd) 1228 0 R (install-modules-gd-graph) 1230 0 R (install-modules-gd-text-align) 1231 0 R (install-modules-mime-parser) 1233 0 R (install-modules-patchreader) 1234 0 R (install-modules-template) 1227 0 R (install-modules-xml-parser) 1232 0 R (install-mysql) 1221 0 R (install-perl) 1219 0 R (install-perlmodules) 1225 0 R (install-perlmodules-manual) 1755 0 R (install-perlmodules-nonroot) 1366 0 R (install-pg) 1222 0 R (install-setupdatabase) 2105 0 R (install-setupdatabase-adduser) 2138 0 R (install-webserver) 1223 0 R (installation) 1218 0 R (installation-whining) 1251 0 R (installation-whining-cron) 1250 0 R (installing-bugzilla) 1217 0 R (integration) 1536 0 R (lifecycle) 1644 0 R (lifecycle-image) 1791 0 R (list) 1650 0 R (localconfig) 1237 0 R (manageusers) 1376 0 R (milestones) 1382 0 R (modifyusers) 1378 0 R (modules-manual-download) 1757 0 R (modules-manual-instructions) 1756 0 R (modules-manual-optional) 1758 0 R (multiplecharts) 1649 0 R (myaccount) 1642 0 R (mysql) 1239 0 R (negation) 1648 0 R (newversions) 1214 0 R (nonroot) 1361 0 R (os-macosx) 1359 0 R (os-mandrake) 1360 0 R (os-specific) 1255 0 R (os-win32) 1354 0 R (page.1) 1101 0 R (page.10) 2093 0 R (page.100) 4636 0 R (page.101) 4653 0 R (page.102) 4698 0 R (page.103) 4726 0 R (page.104) 4756 0 R (page.105) 4785 0 R (page.106) 4809 0 R (page.107) 4825 0 R (page.108) 4837 0 R (page.109) 4874 0 R (page.11) 2120 0 R (page.110) 4886 0 R (page.111) 4899 0 R (page.112) 4905 0 R (page.113) 4955 0 R (page.114) 4988 0 R (page.115) 5016 0 R (page.116) 5053 0 R (page.117) 5081 0 R (page.12) 2161 0 R (page.13) 2205 0 R (page.14) 2237 0 R (page.15) 2279 0 R (page.16) 2313 0 R (page.17) 2355 0 R (page.18) 2380 0 R (page.19) 2419 0 R (page.2) 1110 0 R (page.20) 2455 0 R (page.21) 2480 0 R (page.22) 2497 0 R (page.23) 2543 0 R (page.24) 2560 0 R (page.25) 2591 0 R (page.26) 2615 0 R (page.27) 2644 0 R (page.28) 2664 0 R (page.29) 2676 0 R (page.3) 1116 0 R (page.30) 2708 0 R (page.31) 2736 0 R (page.32) 2756 0 R (page.33) 2791 0 R (page.34) 2839 0 R (page.35) 2866 0 R (page.36) 2914 0 R (page.37) 2954 0 R (page.38) 2989 0 R (page.39) 3032 0 R (page.4) 1259 0 R (page.40) 3063 0 R (page.41) 3091 0 R (page.42) 3133 0 R (page.43) 3153 0 R (page.44) 3177 0 R (page.45) 3201 0 R (page.46) 3228 0 R (page.47) 3258 0 R (page.48) 3276 0 R (page.49) 3306 0 R (page.5) 1404 0 R (page.50) 3335 0 R (page.51) 3412 0 R (page.52) 3441 0 R (page.53) 3470 0 R (page.54) 3497 0 R (page.55) 3536 0 R (page.56) 3565 0 R (page.57) 3596 0 R (page.58) 3634 0 R (page.59) 3657 0 R (page.6) 1545 0 R (page.60) 3678 0 R (page.61) 3700 0 R (page.62) 3729 0 R (page.63) 3733 0 R (page.64) 3737 0 R (page.65) 3741 0 R (page.66) 3758 0 R (page.67) 3772 0 R (page.68) 3801 0 R (page.69) 3860 0 R (page.7) 1690 0 R (page.70) 3870 0 R (page.71) 3904 0 R (page.72) 3925 0 R (page.73) 3947 0 R (page.74) 3959 0 R (page.75) 3979 0 R (page.76) 4003 0 R (page.77) 4038 0 R (page.78) 4055 0 R (page.79) 4071 0 R (page.8) 1776 0 R (page.80) 4092 0 R (page.81) 4109 0 R (page.82) 4117 0 R (page.83) 4148 0 R (page.84) 4178 0 R (page.85) 4208 0 R (page.86) 4237 0 R (page.87) 4263 0 R (page.88) 4297 0 R (page.89) 4323 0 R (page.9) 2069 0 R (page.90) 4355 0 R (page.91) 4407 0 R (page.92) 4435 0 R (page.93) 4472 0 R (page.94) 4502 0 R (page.95) 4537 0 R (page.96) 4549 0 R (page.97) 4576 0 R (page.98) 4595 0 R (page.99) 4614 0 R (param-LDAPBaseDN) 2425 0 R (param-LDAPbinddn) 2420 0 R (param-LDAPmailattribute) 2435 0 R (param-LDAPserver) 2409 0 R (param-LDAPuidattribute) 2430 0 R (param-loginmethod) 2401 0 R (parameters) 1373 0 R (paranoid-security) 1746 0 R (patch-viewer) 1252 0 R (patches) 1752 0 R (patchviewer) 1652 0 R (patchviewer_bonsai_lxr) 1658 0 R (patchviewer_collapse) 1656 0 R (patchviewer_context) 1655 0 R (patchviewer_diff) 1654 0 R (patchviewer_link) 1657 0 R (patchviewer_unified_diff) 1659 0 R (patchviewer_view) 1653 0 R (permissionsettings) 1668 0 R (postgresql) 1240 0 R (products) 1379 0 R (pronouns) 1647 0 R (query) 1645 0 R (quicksearch) 1662 0 R (quips) 1396 0 R (reporting) 1669 0 R (reports) 1670 0 R (scm) 1539 0 R (security) 1508 0 R (security-bugzilla) 1520 0 R (security-bugzilla-charset) 1521 0 R (security-bugzilla-charset-ex) 1795 0 R (security-mysql) 1513 0 R (security-mysql-account) 1514 0 R (security-mysql-account-anonymous) 1793 0 R (security-mysql-account-root) 1792 0 R (security-mysql-network) 1516 0 R (security-mysql-network-ex) 1794 0 R (security-mysql-root) 1515 0 R (security-os) 1509 0 R (security-os-accounts) 1511 0 R (security-os-chroot) 1512 0 R (security-os-ports) 1510 0 R (security-webserver) 1517 0 R (security-webserver-access) 1518 0 R (security-webserver-mod-throttle) 1519 0 R (svn) 1540 0 R (table.1) 1882 0 R (table.2) 3591 0 R (table.3) 3796 0 R (table.4) 3914 0 R (table.5) 3941 0 R (table.6) 3962 0 R (table.7) 4484 0 R (template-directory) 1524 0 R (template-edit) 1526 0 R (template-formats) 1527 0 R (template-http-accept) 1529 0 R (template-method) 1525 0 R (template-specific) 1528 0 R (tinderbox) 1541 0 R (trbl-bundleBugzilla) 1685 0 R (trbl-dbdSponge) 1686 0 R (trbl-index) 1750 0 R (trbl-passwd-encryption) 1751 0 R (trbl-perlmodule) 1684 0 R (trbl-relogin-everyone) 1748 0 R (trbl-relogin-everyone-restrict) 1797 0 R (trbl-relogin-everyone-share) 1796 0 R (trbl-testserver) 1683 0 R (trouble-filetemp) 1747 0 R (troubleshooting) 1681 0 R (upgrade-cvs) 1504 0 R (upgrade-patches) 1506 0 R (upgrade-tarball) 1505 0 R (upgrading) 1501 0 R (upgrading-completion) 1507 0 R (upgrading-methods) 1503 0 R (upgrading-version-defns) 1502 0 R (useradmin) 1374 0 R (userpreferences) 1665 0 R (using) 1640 0 R (using-intro) 1641 0 R (versions) 1381 0 R (voting) 1395 0 R (whining) 1675 0 R (whining-overview) 1676 0 R (whining-query) 1678 0 R (whining-schedule) 1677 0 R (win32-code-changes) 1357 0 R (win32-http) 1358 0 R (win32-perl) 1355 0 R (win32-perl-modules) 1356 0 R]
 /Limits [(1.0) (win32-perl-modules)]
 >> endobj
-5125 0 obj <<
-/Kids [5124 0 R]
+5119 0 obj <<
+/Kids [5118 0 R]
 >> endobj
-5126 0 obj <<
-/Dests 5125 0 R
+5120 0 obj <<
+/Dests 5119 0 R
 >> endobj
-5127 0 obj <<
+5121 0 obj <<
 /Type /Catalog
-/Pages 5122 0 R
-/Outlines 5123 0 R
-/Names 5126 0 R
+/Pages 5116 0 R
+/Outlines 5117 0 R
+/Names 5120 0 R
 /PageMode /UseOutlines /URI<</Base()>>  /ViewerPreferences<<>> 
 /OpenAction 1097 0 R
 /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b)
 >> endobj
-5128 0 obj <<
+5122 0 obj <<
 /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.10b)/Keywords()
-/CreationDate (D:20050930183400)
+/CreationDate (D:20050930183300)
 >> endobj
 xref
-0 5129
+0 5123
 0000001104 65535 f 
 0000000009 00000 n 
-0000025630 00000 n 
-0000974063 00000 n 
+0000025633 00000 n 
+0000973778 00000 n 
 0000000048 00000 n 
-0000000109 00000 n 
-0000098522 00000 n 
-0000973978 00000 n 
-0000000148 00000 n 
-0000000183 00000 n 
-0000367817 00000 n 
-0000973891 00000 n 
-0000000222 00000 n 
-0000000256 00000 n 
-0000367879 00000 n 
-0000973802 00000 n 
-0000000296 00000 n 
-0000000331 00000 n 
-0000370988 00000 n 
-0000973676 00000 n 
-0000000371 00000 n 
-0000000417 00000 n 
-0000371113 00000 n 
-0000973602 00000 n 
-0000000459 00000 n 
-0000000504 00000 n 
-0000371490 00000 n 
-0000973515 00000 n 
-0000000546 00000 n 
-0000000580 00000 n 
-0000371804 00000 n 
-0000973428 00000 n 
-0000000622 00000 n 
-0000000658 00000 n 
-0000375471 00000 n 
-0000973341 00000 n 
-0000000700 00000 n 
-0000000731 00000 n 
-0000378443 00000 n 
-0000973267 00000 n 
-0000000773 00000 n 
-0000000817 00000 n 
-0000384839 00000 n 
-0000973139 00000 n 
-0000000857 00000 n 
-0000000906 00000 n 
-0000384964 00000 n 
-0000973026 00000 n 
-0000000948 00000 n 
-0000000984 00000 n 
-0000386286 00000 n 
-0000972952 00000 n 
-0000001028 00000 n 
-0000001058 00000 n 
-0000389148 00000 n 
-0000972828 00000 n 
-0000001102 00000 n 
-0000001143 00000 n 
-0000389336 00000 n 
-0000972754 00000 n 
-0000001189 00000 n 
-0000001222 00000 n 
-0000390031 00000 n 
-0000972680 00000 n 
-0000001268 00000 n 
-0000001306 00000 n 
-0000390472 00000 n 
-0000972593 00000 n 
-0000001350 00000 n 
-0000001386 00000 n 
-0000394849 00000 n 
-0000972506 00000 n 
-0000001430 00000 n 
-0000001464 00000 n 
-0000395610 00000 n 
-0000972380 00000 n 
-0000001508 00000 n 
-0000001546 00000 n 
-0000403933 00000 n 
-0000972306 00000 n 
-0000001592 00000 n 
-0000001630 00000 n 
-0000406358 00000 n 
-0000972219 00000 n 
-0000001676 00000 n 
-0000001729 00000 n 
-0000406546 00000 n 
-0000972132 00000 n 
-0000001775 00000 n 
-0000001814 00000 n 
-0000407240 00000 n 
-0000972045 00000 n 
-0000001860 00000 n 
-0000001907 00000 n 
-0000407428 00000 n 
-0000971958 00000 n 
-0000001953 00000 n 
-0000001998 00000 n 
-0000407616 00000 n 
-0000971869 00000 n 
-0000002044 00000 n 
-0000002096 00000 n 
-0000407803 00000 n 
-0000971778 00000 n 
-0000002143 00000 n 
-0000002191 00000 n 
-0000411036 00000 n 
-0000971686 00000 n 
-0000002239 00000 n 
-0000002288 00000 n 
-0000411226 00000 n 
-0000971608 00000 n 
-0000002336 00000 n 
-0000002386 00000 n 
-0000411415 00000 n 
-0000971531 00000 n 
-0000002431 00000 n 
-0000002485 00000 n 
-0000411853 00000 n 
+0000000111 00000 n 
+0000098527 00000 n 
+0000973693 00000 n 
+0000000150 00000 n 
+0000000185 00000 n 
+0000367822 00000 n 
+0000973606 00000 n 
+0000000224 00000 n 
+0000000258 00000 n 
+0000367884 00000 n 
+0000973517 00000 n 
+0000000298 00000 n 
+0000000333 00000 n 
+0000370991 00000 n 
+0000973391 00000 n 
+0000000373 00000 n 
+0000000419 00000 n 
+0000371116 00000 n 
+0000973317 00000 n 
+0000000461 00000 n 
+0000000506 00000 n 
+0000371493 00000 n 
+0000973230 00000 n 
+0000000548 00000 n 
+0000000582 00000 n 
+0000371807 00000 n 
+0000973143 00000 n 
+0000000624 00000 n 
+0000000660 00000 n 
+0000375474 00000 n 
+0000973056 00000 n 
+0000000702 00000 n 
+0000000733 00000 n 
+0000378446 00000 n 
+0000972982 00000 n 
+0000000775 00000 n 
+0000000819 00000 n 
+0000384842 00000 n 
+0000972854 00000 n 
+0000000859 00000 n 
+0000000908 00000 n 
+0000384967 00000 n 
+0000972741 00000 n 
+0000000950 00000 n 
+0000000986 00000 n 
+0000386289 00000 n 
+0000972667 00000 n 
+0000001030 00000 n 
+0000001060 00000 n 
+0000389150 00000 n 
+0000972543 00000 n 
+0000001104 00000 n 
+0000001145 00000 n 
+0000389338 00000 n 
+0000972469 00000 n 
+0000001191 00000 n 
+0000001224 00000 n 
+0000390033 00000 n 
+0000972395 00000 n 
+0000001270 00000 n 
+0000001308 00000 n 
+0000390474 00000 n 
+0000972308 00000 n 
+0000001352 00000 n 
+0000001388 00000 n 
+0000394851 00000 n 
+0000972221 00000 n 
+0000001432 00000 n 
+0000001466 00000 n 
+0000395612 00000 n 
+0000972095 00000 n 
+0000001510 00000 n 
+0000001548 00000 n 
+0000403935 00000 n 
+0000972021 00000 n 
+0000001594 00000 n 
+0000001632 00000 n 
+0000406360 00000 n 
+0000971934 00000 n 
+0000001678 00000 n 
+0000001731 00000 n 
+0000406548 00000 n 
+0000971847 00000 n 
+0000001777 00000 n 
+0000001816 00000 n 
+0000407242 00000 n 
+0000971760 00000 n 
+0000001862 00000 n 
+0000001909 00000 n 
+0000407430 00000 n 
+0000971673 00000 n 
+0000001955 00000 n 
+0000002000 00000 n 
+0000407618 00000 n 
+0000971584 00000 n 
+0000002046 00000 n 
+0000002098 00000 n 
+0000407805 00000 n 
+0000971493 00000 n 
+0000002145 00000 n 
+0000002193 00000 n 
+0000411038 00000 n 
 0000971401 00000 n 
-0000002528 00000 n 
-0000002566 00000 n 
-0000412106 00000 n 
-0000971322 00000 n 
-0000002611 00000 n 
-0000002649 00000 n 
-0000416278 00000 n 
-0000971190 00000 n 
-0000002694 00000 n 
-0000002736 00000 n 
-0000416467 00000 n 
-0000971072 00000 n 
-0000002784 00000 n 
-0000002818 00000 n 
-0000416719 00000 n 
-0000970993 00000 n 
-0000002868 00000 n 
-0000002922 00000 n 
-0000420315 00000 n 
-0000970900 00000 n 
-0000002972 00000 n 
-0000003040 00000 n 
-0000420944 00000 n 
-0000970807 00000 n 
-0000003090 00000 n 
-0000003164 00000 n 
-0000421574 00000 n 
-0000970728 00000 n 
-0000003214 00000 n 
-0000003264 00000 n 
-0000426089 00000 n 
-0000970610 00000 n 
-0000003312 00000 n 
-0000003351 00000 n 
-0000426341 00000 n 
-0000970531 00000 n 
-0000003401 00000 n 
-0000003456 00000 n 
-0000427290 00000 n 
-0000970452 00000 n 
-0000003506 00000 n 
-0000003557 00000 n 
-0000431767 00000 n 
-0000970359 00000 n 
-0000003602 00000 n 
-0000003642 00000 n 
-0000432272 00000 n 
-0000970227 00000 n 
-0000003688 00000 n 
-0000003725 00000 n 
-0000432461 00000 n 
-0000970148 00000 n 
-0000003774 00000 n 
-0000003815 00000 n 
-0000437791 00000 n 
-0000970055 00000 n 
-0000003864 00000 n 
-0000003932 00000 n 
-0000442890 00000 n 
-0000969976 00000 n 
-0000003981 00000 n 
-0000004020 00000 n 
-0000447846 00000 n 
-0000969897 00000 n 
-0000004066 00000 n 
-0000004101 00000 n 
-0000448732 00000 n 
-0000969766 00000 n 
-0000004144 00000 n 
-0000004202 00000 n 
-0000448921 00000 n 
-0000969687 00000 n 
-0000004248 00000 n 
-0000004285 00000 n 
-0000449741 00000 n 
-0000969594 00000 n 
-0000004331 00000 n 
-0000004375 00000 n 
-0000453482 00000 n 
-0000969501 00000 n 
-0000004421 00000 n 
-0000004464 00000 n 
-0000453986 00000 n 
-0000969408 00000 n 
-0000004510 00000 n 
-0000004544 00000 n 
-0000458055 00000 n 
-0000969315 00000 n 
-0000004590 00000 n 
-0000004629 00000 n 
-0000458878 00000 n 
-0000969222 00000 n 
-0000004675 00000 n 
-0000004721 00000 n 
-0000463687 00000 n 
-0000969143 00000 n 
-0000004767 00000 n 
-0000004844 00000 n 
-0000467535 00000 n 
-0000969012 00000 n 
-0000004887 00000 n 
-0000004941 00000 n 
-0000467851 00000 n 
-0000968894 00000 n 
-0000004987 00000 n 
-0000005031 00000 n 
-0000468040 00000 n 
-0000968815 00000 n 
-0000005080 00000 n 
-0000005119 00000 n 
-0000468357 00000 n 
-0000968722 00000 n 
-0000005168 00000 n 
-0000005218 00000 n 
-0000471746 00000 n 
-0000968629 00000 n 
-0000005267 00000 n 
-0000005333 00000 n 
-0000472251 00000 n 
-0000968550 00000 n 
-0000005382 00000 n 
-0000005432 00000 n 
-0000475780 00000 n 
-0000968457 00000 n 
-0000005478 00000 n 
-0000005513 00000 n 
-0000477302 00000 n 
-0000968378 00000 n 
-0000005559 00000 n 
-0000005603 00000 n 
-0000480851 00000 n 
-0000968261 00000 n 
-0000005647 00000 n 
-0000005707 00000 n 
-0000480977 00000 n 
-0000968182 00000 n 
-0000005754 00000 n 
-0000005793 00000 n 
-0000481165 00000 n 
-0000968050 00000 n 
-0000005840 00000 n 
-0000005872 00000 n 
-0000481672 00000 n 
-0000967946 00000 n 
-0000005922 00000 n 
-0000005975 00000 n 
-0000481798 00000 n 
-0000967867 00000 n 
-0000006027 00000 n 
-0000006089 00000 n 
-0000484356 00000 n 
-0000967774 00000 n 
-0000006141 00000 n 
-0000006195 00000 n 
-0000484672 00000 n 
-0000967695 00000 n 
-0000006247 00000 n 
-0000006297 00000 n 
-0000485686 00000 n 
-0000967602 00000 n 
-0000006344 00000 n 
-0000006375 00000 n 
-0000488713 00000 n 
-0000967470 00000 n 
-0000006422 00000 n 
-0000006461 00000 n 
-0000488901 00000 n 
-0000967391 00000 n 
-0000006511 00000 n 
-0000006562 00000 n 
-0000489724 00000 n 
-0000967312 00000 n 
-0000006612 00000 n 
-0000006657 00000 n 
-0000496657 00000 n 
-0000967180 00000 n 
-0000006704 00000 n 
-0000006742 00000 n 
-0000496846 00000 n 
-0000967115 00000 n 
-0000006792 00000 n 
-0000006846 00000 n 
-0000497414 00000 n 
-0000967036 00000 n 
-0000006893 00000 n 
-0000006928 00000 n 
-0000502531 00000 n 
-0000966903 00000 n 
-0000006969 00000 n 
-0000007022 00000 n 
-0000502657 00000 n 
-0000966824 00000 n 
-0000007066 00000 n 
-0000007113 00000 n 
-0000512005 00000 n 
-0000966692 00000 n 
-0000007157 00000 n 
-0000007201 00000 n 
-0000512131 00000 n 
-0000966613 00000 n 
-0000007248 00000 n 
-0000007300 00000 n 
-0000515654 00000 n 
-0000966495 00000 n 
-0000007347 00000 n 
-0000007394 00000 n 
-0000515780 00000 n 
-0000966416 00000 n 
-0000007444 00000 n 
-0000007491 00000 n 
-0000516533 00000 n 
-0000966337 00000 n 
-0000007541 00000 n 
-0000007585 00000 n 
-0000523617 00000 n 
-0000966244 00000 n 
-0000007629 00000 n 
-0000007662 00000 n 
-0000527087 00000 n 
-0000966151 00000 n 
-0000007706 00000 n 
-0000007741 00000 n 
-0000527905 00000 n 
-0000966058 00000 n 
-0000007785 00000 n 
-0000007818 00000 n 
-0000528595 00000 n 
-0000965965 00000 n 
-0000007862 00000 n 
-0000007897 00000 n 
-0000532278 00000 n 
-0000965833 00000 n 
-0000007941 00000 n 
-0000007971 00000 n 
-0000532659 00000 n 
-0000965754 00000 n 
-0000008018 00000 n 
-0000008061 00000 n 
-0000536752 00000 n 
-0000965622 00000 n 
-0000008108 00000 n 
-0000008146 00000 n 
-0000536878 00000 n 
-0000965557 00000 n 
-0000008196 00000 n 
-0000008231 00000 n 
-0000538014 00000 n 
-0000965464 00000 n 
-0000008278 00000 n 
-0000008324 00000 n 
-0000538838 00000 n 
-0000965332 00000 n 
-0000008371 00000 n 
-0000008416 00000 n 
-0000539027 00000 n 
-0000965253 00000 n 
-0000008466 00000 n 
-0000008511 00000 n 
-0000542718 00000 n 
-0000965174 00000 n 
-0000008561 00000 n 
-0000008599 00000 n 
-0000543158 00000 n 
-0000965056 00000 n 
-0000008646 00000 n 
-0000008692 00000 n 
-0000543602 00000 n 
-0000964938 00000 n 
-0000008742 00000 n 
-0000008786 00000 n 
-0000543854 00000 n 
-0000964859 00000 n 
-0000008839 00000 n 
-0000008874 00000 n 
-0000544041 00000 n 
-0000964766 00000 n 
-0000008927 00000 n 
-0000008969 00000 n 
-0000544229 00000 n 
-0000964673 00000 n 
-0000009022 00000 n 
-0000009061 00000 n 
-0000549180 00000 n 
-0000964580 00000 n 
-0000009114 00000 n 
-0000009153 00000 n 
-0000549494 00000 n 
-0000964487 00000 n 
-0000009206 00000 n 
-0000009243 00000 n 
-0000549747 00000 n 
-0000964394 00000 n 
-0000009296 00000 n 
-0000009338 00000 n 
-0000550255 00000 n 
-0000964301 00000 n 
-0000009391 00000 n 
-0000009429 00000 n 
-0000553149 00000 n 
-0000964208 00000 n 
-0000009482 00000 n 
-0000009537 00000 n 
-0000553401 00000 n 
-0000964129 00000 n 
-0000009590 00000 n 
-0000009634 00000 n 
-0000553781 00000 n 
-0000964036 00000 n 
-0000009684 00000 n 
-0000009728 00000 n 
-0000554416 00000 n 
-0000963957 00000 n 
-0000009778 00000 n 
-0000009821 00000 n 
-0000554731 00000 n 
-0000963864 00000 n 
-0000009865 00000 n 
-0000009896 00000 n 
-0000559291 00000 n 
-0000963771 00000 n 
-0000009940 00000 n 
-0000009970 00000 n 
-0000559795 00000 n 
-0000963639 00000 n 
-0000010014 00000 n 
-0000010065 00000 n 
-0000563432 00000 n 
-0000963560 00000 n 
-0000010112 00000 n 
-0000010155 00000 n 
-0000565141 00000 n 
-0000963467 00000 n 
-0000010202 00000 n 
-0000010255 00000 n 
-0000565768 00000 n 
-0000963374 00000 n 
-0000010302 00000 n 
-0000010366 00000 n 
-0000568941 00000 n 
-0000963256 00000 n 
-0000010413 00000 n 
-0000010478 00000 n 
-0000569067 00000 n 
-0000963177 00000 n 
-0000010528 00000 n 
-0000010597 00000 n 
-0000569319 00000 n 
-0000963084 00000 n 
-0000010647 00000 n 
-0000010720 00000 n 
-0000571695 00000 n 
-0000963005 00000 n 
-0000010770 00000 n 
-0000010835 00000 n 
-0000572576 00000 n 
-0000962887 00000 n 
-0000010879 00000 n 
-0000010930 00000 n 
-0000573078 00000 n 
-0000962808 00000 n 
-0000010977 00000 n 
-0000011024 00000 n 
-0000577782 00000 n 
-0000962676 00000 n 
-0000011071 00000 n 
-0000011130 00000 n 
-0000581686 00000 n 
-0000962597 00000 n 
-0000011180 00000 n 
-0000011229 00000 n 
-0000582695 00000 n 
-0000962504 00000 n 
-0000011279 00000 n 
-0000011336 00000 n 
-0000586691 00000 n 
-0000962425 00000 n 
-0000011386 00000 n 
-0000011439 00000 n 
-0000589687 00000 n 
-0000962346 00000 n 
-0000011486 00000 n 
-0000011537 00000 n 
-0000593724 00000 n 
-0000962213 00000 n 
-0000011578 00000 n 
-0000011626 00000 n 
-0000594040 00000 n 
-0000962095 00000 n 
-0000011670 00000 n 
-0000011711 00000 n 
-0000594165 00000 n 
-0000962016 00000 n 
-0000011758 00000 n 
-0000011797 00000 n 
-0000594354 00000 n 
-0000961923 00000 n 
-0000011844 00000 n 
-0000011891 00000 n 
-0000595498 00000 n 
-0000961844 00000 n 
-0000011938 00000 n 
-0000011980 00000 n 
-0000598323 00000 n 
-0000961712 00000 n 
-0000012024 00000 n 
-0000012054 00000 n 
-0000598449 00000 n 
-0000961633 00000 n 
-0000012101 00000 n 
-0000012152 00000 n 
-0000598637 00000 n 
-0000961540 00000 n 
-0000012199 00000 n 
-0000012260 00000 n 
-0000599961 00000 n 
-0000961461 00000 n 
-0000012307 00000 n 
-0000012348 00000 n 
-0000603095 00000 n 
-0000961329 00000 n 
-0000012392 00000 n 
-0000012426 00000 n 
-0000603221 00000 n 
-0000961250 00000 n 
-0000012473 00000 n 
-0000012555 00000 n 
-0000611983 00000 n 
-0000961171 00000 n 
-0000012602 00000 n 
-0000012663 00000 n 
-0000612554 00000 n 
-0000961053 00000 n 
-0000012707 00000 n 
-0000012740 00000 n 
-0000612680 00000 n 
-0000960988 00000 n 
-0000012787 00000 n 
-0000012858 00000 n 
-0000616341 00000 n 
-0000960855 00000 n 
-0000012899 00000 n 
-0000012950 00000 n 
-0000616467 00000 n 
-0000960737 00000 n 
-0000012994 00000 n 
-0000013041 00000 n 
-0000616719 00000 n 
-0000960658 00000 n 
-0000013088 00000 n 
-0000013143 00000 n 
-0000617480 00000 n 
-0000960565 00000 n 
-0000013190 00000 n 
-0000013248 00000 n 
-0000622514 00000 n 
-0000960472 00000 n 
-0000013295 00000 n 
-0000013343 00000 n 
-0000626844 00000 n 
-0000960379 00000 n 
-0000013390 00000 n 
-0000013443 00000 n 
-0000628043 00000 n 
-0000960286 00000 n 
-0000013490 00000 n 
-0000013537 00000 n 
-0000637416 00000 n 
-0000960207 00000 n 
-0000013584 00000 n 
-0000013661 00000 n 
-0000637986 00000 n 
-0000960114 00000 n 
-0000013705 00000 n 
-0000013744 00000 n 
-0000648364 00000 n 
-0000960021 00000 n 
-0000013788 00000 n 
-0000013844 00000 n 
-0000652413 00000 n 
-0000959928 00000 n 
-0000013888 00000 n 
-0000013942 00000 n 
-0000656806 00000 n 
-0000959796 00000 n 
-0000013986 00000 n 
-0000014047 00000 n 
-0000657435 00000 n 
-0000959692 00000 n 
-0000014094 00000 n 
-0000014145 00000 n 
-0000660916 00000 n 
-0000959627 00000 n 
-0000014195 00000 n 
-0000014248 00000 n 
-0000670380 00000 n 
-0000959509 00000 n 
-0000014292 00000 n 
-0000014359 00000 n 
-0000670503 00000 n 
-0000959430 00000 n 
-0000014406 00000 n 
-0000014439 00000 n 
-0000670692 00000 n 
-0000959337 00000 n 
-0000014486 00000 n 
-0000014516 00000 n 
-0000672985 00000 n 
-0000959244 00000 n 
-0000014563 00000 n 
-0000014602 00000 n 
-0000673428 00000 n 
-0000959151 00000 n 
-0000014649 00000 n 
-0000014686 00000 n 
-0000673680 00000 n 
-0000959072 00000 n 
-0000014733 00000 n 
-0000014780 00000 n 
-0000676762 00000 n 
-0000958938 00000 n 
-0000014822 00000 n 
-0000014867 00000 n 
-0000676888 00000 n 
-0000958859 00000 n 
-0000014912 00000 n 
-0000014949 00000 n 
-0000677139 00000 n 
-0000958766 00000 n 
-0000014994 00000 n 
-0000015044 00000 n 
-0000678149 00000 n 
-0000958673 00000 n 
-0000015089 00000 n 
-0000015130 00000 n 
-0000686056 00000 n 
-0000958580 00000 n 
-0000015175 00000 n 
-0000015219 00000 n 
-0000738619 00000 n 
-0000958448 00000 n 
-0000015264 00000 n 
-0000015307 00000 n 
-0000738998 00000 n 
-0000958344 00000 n 
-0000015355 00000 n 
-0000015396 00000 n 
-0000742621 00000 n 
-0000958265 00000 n 
-0000015447 00000 n 
-0000015496 00000 n 
-0000742810 00000 n 
-0000958172 00000 n 
-0000015547 00000 n 
-0000015584 00000 n 
-0000746921 00000 n 
-0000958093 00000 n 
-0000015635 00000 n 
-0000015679 00000 n 
-0000747427 00000 n 
-0000958000 00000 n 
-0000015724 00000 n 
-0000015758 00000 n 
-0000747867 00000 n 
-0000957907 00000 n 
-0000015803 00000 n 
-0000015839 00000 n 
-0000751711 00000 n 
-0000957775 00000 n 
-0000015884 00000 n 
-0000015921 00000 n 
-0000752088 00000 n 
-0000957696 00000 n 
-0000015969 00000 n 
-0000016027 00000 n 
-0000752277 00000 n 
-0000957603 00000 n 
-0000016075 00000 n 
-0000016143 00000 n 
-0000754813 00000 n 
-0000957510 00000 n 
-0000016191 00000 n 
-0000016249 00000 n 
-0000755002 00000 n 
-0000957417 00000 n 
-0000016297 00000 n 
-0000016368 00000 n 
-0000755191 00000 n 
-0000957324 00000 n 
-0000016416 00000 n 
-0000016474 00000 n 
-0000755380 00000 n 
-0000957231 00000 n 
-0000016522 00000 n 
-0000016572 00000 n 
-0000755632 00000 n 
-0000957152 00000 n 
-0000016620 00000 n 
-0000016670 00000 n 
-0000755820 00000 n 
-0000957020 00000 n 
-0000016715 00000 n 
-0000016754 00000 n 
-0000756009 00000 n 
-0000956941 00000 n 
-0000016802 00000 n 
-0000016846 00000 n 
-0000759199 00000 n 
-0000956848 00000 n 
-0000016894 00000 n 
-0000016932 00000 n 
-0000759642 00000 n 
-0000956755 00000 n 
-0000016980 00000 n 
-0000017015 00000 n 
-0000759894 00000 n 
-0000956676 00000 n 
-0000017063 00000 n 
-0000017101 00000 n 
-0000763286 00000 n 
-0000956544 00000 n 
-0000017146 00000 n 
-0000017188 00000 n 
-0000763475 00000 n 
-0000956465 00000 n 
-0000017236 00000 n 
-0000017280 00000 n 
-0000763792 00000 n 
-0000956372 00000 n 
-0000017328 00000 n 
-0000017370 00000 n 
-0000769750 00000 n 
-0000956293 00000 n 
-0000017418 00000 n 
-0000017457 00000 n 
-0000769939 00000 n 
-0000956161 00000 n 
-0000017502 00000 n 
-0000017546 00000 n 
-0000773214 00000 n 
-0000956082 00000 n 
-0000017594 00000 n 
-0000017629 00000 n 
-0000773592 00000 n 
-0000955964 00000 n 
-0000017677 00000 n 
-0000017711 00000 n 
-0000774095 00000 n 
-0000955885 00000 n 
-0000017762 00000 n 
-0000017807 00000 n 
-0000777275 00000 n 
-0000955806 00000 n 
-0000017858 00000 n 
-0000017910 00000 n 
-0000777527 00000 n 
-0000955713 00000 n 
-0000017955 00000 n 
-0000017986 00000 n 
-0000781485 00000 n 
-0000955595 00000 n 
-0000018031 00000 n 
-0000018064 00000 n 
-0000782113 00000 n 
-0000955516 00000 n 
-0000018112 00000 n 
-0000018149 00000 n 
-0000782427 00000 n 
-0000955423 00000 n 
-0000018197 00000 n 
-0000018241 00000 n 
-0000786454 00000 n 
-0000955330 00000 n 
-0000018289 00000 n 
-0000018332 00000 n 
-0000788484 00000 n 
-0000955251 00000 n 
-0000018380 00000 n 
-0000018427 00000 n 
-0000791616 00000 n 
-0000955157 00000 n 
-0000018469 00000 n 
-0000018517 00000 n 
-0000857320 00000 n 
-0000955023 00000 n 
-0000018559 00000 n 
-0000018606 00000 n 
-0000857509 00000 n 
-0000954944 00000 n 
-0000018651 00000 n 
-0000018690 00000 n 
-0000858206 00000 n 
-0000954851 00000 n 
-0000018735 00000 n 
-0000018810 00000 n 
-0000858647 00000 n 
-0000954758 00000 n 
-0000018855 00000 n 
-0000018951 00000 n 
-0000861393 00000 n 
-0000954665 00000 n 
-0000018996 00000 n 
-0000019068 00000 n 
-0000861709 00000 n 
-0000954572 00000 n 
-0000019113 00000 n 
-0000019168 00000 n 
-0000862337 00000 n 
-0000954479 00000 n 
-0000019213 00000 n 
-0000019271 00000 n 
-0000865056 00000 n 
-0000954386 00000 n 
-0000019316 00000 n 
-0000019391 00000 n 
-0000865561 00000 n 
-0000954293 00000 n 
-0000019436 00000 n 
-0000019508 00000 n 
-0000869520 00000 n 
-0000954200 00000 n 
-0000019553 00000 n 
-0000019627 00000 n 
-0000872334 00000 n 
-0000954107 00000 n 
-0000019672 00000 n 
-0000019751 00000 n 
-0000872714 00000 n 
-0000954028 00000 n 
-0000019796 00000 n 
-0000019916 00000 n 
-0000876571 00000 n 
-0000953895 00000 n 
-0000019958 00000 n 
-0000019997 00000 n 
-0000876822 00000 n 
-0000953816 00000 n 
-0000020042 00000 n 
-0000020095 00000 n 
-0000878784 00000 n 
-0000953737 00000 n 
-0000020140 00000 n 
-0000020203 00000 n 
-0000881399 00000 n 
-0000953604 00000 n 
-0000020245 00000 n 
-0000020312 00000 n 
-0000881524 00000 n 
-0000953525 00000 n 
-0000020357 00000 n 
-0000020394 00000 n 
-0000882659 00000 n 
-0000953432 00000 n 
-0000020439 00000 n 
-0000020482 00000 n 
-0000888042 00000 n 
-0000953353 00000 n 
-0000020527 00000 n 
-0000020568 00000 n 
-0000894137 00000 n 
-0000953219 00000 n 
-0000020610 00000 n 
-0000020672 00000 n 
-0000894451 00000 n 
-0000953140 00000 n 
-0000020717 00000 n 
-0000020748 00000 n 
-0000894764 00000 n 
-0000953047 00000 n 
-0000020793 00000 n 
-0000020844 00000 n 
-0000898845 00000 n 
-0000952954 00000 n 
-0000020889 00000 n 
-0000020928 00000 n 
-0000899096 00000 n 
-0000952861 00000 n 
-0000020973 00000 n 
-0000021015 00000 n 
-0000903092 00000 n 
-0000952768 00000 n 
-0000021060 00000 n 
-0000021096 00000 n 
-0000908328 00000 n 
-0000952675 00000 n 
-0000021141 00000 n 
-0000021183 00000 n 
-0000908642 00000 n 
-0000952582 00000 n 
-0000021228 00000 n 
-0000021275 00000 n 
-0000908894 00000 n 
-0000952489 00000 n 
-0000021320 00000 n 
-0000021377 00000 n 
-0000912019 00000 n 
-0000952396 00000 n 
-0000021422 00000 n 
-0000021456 00000 n 
-0000912207 00000 n 
-0000952303 00000 n 
-0000021501 00000 n 
-0000021535 00000 n 
-0000912396 00000 n 
-0000952210 00000 n 
-0000021580 00000 n 
-0000021636 00000 n 
-0000912711 00000 n 
-0000952131 00000 n 
-0000021681 00000 n 
-0000021743 00000 n 
-0000916718 00000 n 
-0000952037 00000 n 
-0000021785 00000 n 
-0000021813 00000 n 
-0000916844 00000 n 
-0000951904 00000 n 
-0000021855 00000 n 
-0000021889 00000 n 
-0000916970 00000 n 
-0000951839 00000 n 
-0000021937 00000 n 
-0000021966 00000 n 
-0000917348 00000 n 
-0000951706 00000 n 
-0000022008 00000 n 
-0000022029 00000 n 
-0000917473 00000 n 
-0000951602 00000 n 
-0000022077 00000 n 
-0000022103 00000 n 
-0000917915 00000 n 
-0000951537 00000 n 
-0000022154 00000 n 
-0000022217 00000 n 
-0000921874 00000 n 
-0000951404 00000 n 
-0000022259 00000 n 
-0000022280 00000 n 
-0000921998 00000 n 
-0000951300 00000 n 
-0000022328 00000 n 
-0000022351 00000 n 
-0000922438 00000 n 
-0000951221 00000 n 
-0000022399 00000 n 
-0000022429 00000 n 
-0000922689 00000 n 
-0000951142 00000 n 
-0000022477 00000 n 
-0000022505 00000 n 
-0000922941 00000 n 
-0000951009 00000 n 
-0000022547 00000 n 
-0000022568 00000 n 
-0000923066 00000 n 
-0000950905 00000 n 
-0000022616 00000 n 
-0000022660 00000 n 
-0000923443 00000 n 
-0000950826 00000 n 
-0000022708 00000 n 
-0000022737 00000 n 
-0000923695 00000 n 
-0000950733 00000 n 
-0000022785 00000 n 
-0000022839 00000 n 
-0000924198 00000 n 
-0000950654 00000 n 
-0000022887 00000 n 
-0000022914 00000 n 
-0000926895 00000 n 
-0000950520 00000 n 
-0000022956 00000 n 
-0000022977 00000 n 
-0000927020 00000 n 
-0000950416 00000 n 
-0000023025 00000 n 
-0000023051 00000 n 
-0000927399 00000 n 
-0000950350 00000 n 
-0000023099 00000 n 
-0000023130 00000 n 
-0000927713 00000 n 
-0000950211 00000 n 
-0000023173 00000 n 
-0000023195 00000 n 
-0000927839 00000 n 
-0000950142 00000 n 
-0000023244 00000 n 
-0000023271 00000 n 
-0000928283 00000 n 
-0000950002 00000 n 
-0000023314 00000 n 
-0000023336 00000 n 
-0000928409 00000 n 
-0000949933 00000 n 
-0000023385 00000 n 
-0000023416 00000 n 
-0000930810 00000 n 
-0000949793 00000 n 
-0000023459 00000 n 
-0000023481 00000 n 
-0000930934 00000 n 
-0000949683 00000 n 
-0000023530 00000 n 
-0000023574 00000 n 
-0000931440 00000 n 
-0000949614 00000 n 
-0000023623 00000 n 
-0000023649 00000 n 
-0000932643 00000 n 
-0000949474 00000 n 
-0000023692 00000 n 
-0000023714 00000 n 
-0000932768 00000 n 
-0000949364 00000 n 
-0000023763 00000 n 
-0000023804 00000 n 
-0000933084 00000 n 
-0000949280 00000 n 
-0000023854 00000 n 
-0000023882 00000 n 
-0000935012 00000 n 
-0000949196 00000 n 
-0000023932 00000 n 
-0000023957 00000 n 
-0000935328 00000 n 
-0000949056 00000 n 
-0000024000 00000 n 
-0000024022 00000 n 
-0000935452 00000 n 
-0000948987 00000 n 
-0000024072 00000 n 
-0000024095 00000 n 
-0000936022 00000 n 
-0000948847 00000 n 
-0000024138 00000 n 
-0000024160 00000 n 
-0000936148 00000 n 
-0000948737 00000 n 
-0000024210 00000 n 
-0000024267 00000 n 
-0000936401 00000 n 
-0000948668 00000 n 
-0000024317 00000 n 
-0000024356 00000 n 
-0000936718 00000 n 
-0000948528 00000 n 
-0000024399 00000 n 
-0000024421 00000 n 
-0000936843 00000 n 
-0000948418 00000 n 
-0000024471 00000 n 
-0000024499 00000 n 
-0000939575 00000 n 
-0000948349 00000 n 
-0000024549 00000 n 
-0000024575 00000 n 
-0000940464 00000 n 
-0000948209 00000 n 
-0000024618 00000 n 
-0000024640 00000 n 
-0000940590 00000 n 
-0000948099 00000 n 
-0000024690 00000 n 
-0000024727 00000 n 
-0000940907 00000 n 
-0000948030 00000 n 
-0000024777 00000 n 
-0000024819 00000 n 
-0000941160 00000 n 
-0000947905 00000 n 
-0000024862 00000 n 
-0000024884 00000 n 
-0000941286 00000 n 
-0000947836 00000 n 
-0000024934 00000 n 
-0000024972 00000 n 
-0000025317 00000 n 
-0000025691 00000 n 
-0000025026 00000 n 
-0000025441 00000 n 
-0000025504 00000 n 
-0000025567 00000 n 
+0000002241 00000 n 
+0000002290 00000 n 
+0000411228 00000 n 
+0000971323 00000 n 
+0000002338 00000 n 
+0000002388 00000 n 
+0000411417 00000 n 
+0000971246 00000 n 
+0000002433 00000 n 
+0000002487 00000 n 
+0000411855 00000 n 
+0000971116 00000 n 
+0000002530 00000 n 
+0000002568 00000 n 
+0000412108 00000 n 
+0000971037 00000 n 
+0000002613 00000 n 
+0000002651 00000 n 
+0000416280 00000 n 
+0000970905 00000 n 
+0000002696 00000 n 
+0000002738 00000 n 
+0000416469 00000 n 
+0000970787 00000 n 
+0000002786 00000 n 
+0000002820 00000 n 
+0000416721 00000 n 
+0000970708 00000 n 
+0000002870 00000 n 
+0000002924 00000 n 
+0000420317 00000 n 
+0000970615 00000 n 
+0000002974 00000 n 
+0000003042 00000 n 
+0000420946 00000 n 
+0000970522 00000 n 
+0000003092 00000 n 
+0000003166 00000 n 
+0000421576 00000 n 
+0000970443 00000 n 
+0000003216 00000 n 
+0000003266 00000 n 
+0000426091 00000 n 
+0000970325 00000 n 
+0000003314 00000 n 
+0000003353 00000 n 
+0000426343 00000 n 
+0000970246 00000 n 
+0000003403 00000 n 
+0000003458 00000 n 
+0000427292 00000 n 
+0000970167 00000 n 
+0000003508 00000 n 
+0000003559 00000 n 
+0000431769 00000 n 
+0000970074 00000 n 
+0000003604 00000 n 
+0000003644 00000 n 
+0000432274 00000 n 
+0000969942 00000 n 
+0000003690 00000 n 
+0000003727 00000 n 
+0000432463 00000 n 
+0000969863 00000 n 
+0000003776 00000 n 
+0000003817 00000 n 
+0000437793 00000 n 
+0000969770 00000 n 
+0000003866 00000 n 
+0000003934 00000 n 
+0000442892 00000 n 
+0000969691 00000 n 
+0000003983 00000 n 
+0000004022 00000 n 
+0000447848 00000 n 
+0000969612 00000 n 
+0000004068 00000 n 
+0000004103 00000 n 
+0000448734 00000 n 
+0000969481 00000 n 
+0000004146 00000 n 
+0000004204 00000 n 
+0000448923 00000 n 
+0000969402 00000 n 
+0000004250 00000 n 
+0000004287 00000 n 
+0000449743 00000 n 
+0000969309 00000 n 
+0000004333 00000 n 
+0000004377 00000 n 
+0000453484 00000 n 
+0000969216 00000 n 
+0000004423 00000 n 
+0000004466 00000 n 
+0000453988 00000 n 
+0000969123 00000 n 
+0000004512 00000 n 
+0000004546 00000 n 
+0000458057 00000 n 
+0000969030 00000 n 
+0000004592 00000 n 
+0000004631 00000 n 
+0000458880 00000 n 
+0000968937 00000 n 
+0000004677 00000 n 
+0000004723 00000 n 
+0000463689 00000 n 
+0000968858 00000 n 
+0000004769 00000 n 
+0000004846 00000 n 
+0000467537 00000 n 
+0000968727 00000 n 
+0000004889 00000 n 
+0000004943 00000 n 
+0000467853 00000 n 
+0000968609 00000 n 
+0000004989 00000 n 
+0000005033 00000 n 
+0000468042 00000 n 
+0000968530 00000 n 
+0000005082 00000 n 
+0000005121 00000 n 
+0000468359 00000 n 
+0000968437 00000 n 
+0000005170 00000 n 
+0000005220 00000 n 
+0000471748 00000 n 
+0000968344 00000 n 
+0000005269 00000 n 
+0000005335 00000 n 
+0000472253 00000 n 
+0000968265 00000 n 
+0000005384 00000 n 
+0000005434 00000 n 
+0000475782 00000 n 
+0000968172 00000 n 
+0000005480 00000 n 
+0000005515 00000 n 
+0000477304 00000 n 
+0000968093 00000 n 
+0000005561 00000 n 
+0000005605 00000 n 
+0000480853 00000 n 
+0000967976 00000 n 
+0000005649 00000 n 
+0000005709 00000 n 
+0000480979 00000 n 
+0000967897 00000 n 
+0000005756 00000 n 
+0000005795 00000 n 
+0000481167 00000 n 
+0000967765 00000 n 
+0000005842 00000 n 
+0000005874 00000 n 
+0000481674 00000 n 
+0000967661 00000 n 
+0000005924 00000 n 
+0000005977 00000 n 
+0000481800 00000 n 
+0000967582 00000 n 
+0000006029 00000 n 
+0000006091 00000 n 
+0000484358 00000 n 
+0000967489 00000 n 
+0000006143 00000 n 
+0000006197 00000 n 
+0000484674 00000 n 
+0000967410 00000 n 
+0000006249 00000 n 
+0000006299 00000 n 
+0000485688 00000 n 
+0000967317 00000 n 
+0000006346 00000 n 
+0000006377 00000 n 
+0000488715 00000 n 
+0000967185 00000 n 
+0000006424 00000 n 
+0000006463 00000 n 
+0000488903 00000 n 
+0000967106 00000 n 
+0000006513 00000 n 
+0000006564 00000 n 
+0000489726 00000 n 
+0000967027 00000 n 
+0000006614 00000 n 
+0000006659 00000 n 
+0000496659 00000 n 
+0000966895 00000 n 
+0000006706 00000 n 
+0000006744 00000 n 
+0000496848 00000 n 
+0000966830 00000 n 
+0000006794 00000 n 
+0000006848 00000 n 
+0000497416 00000 n 
+0000966751 00000 n 
+0000006895 00000 n 
+0000006930 00000 n 
+0000502533 00000 n 
+0000966618 00000 n 
+0000006971 00000 n 
+0000007024 00000 n 
+0000502659 00000 n 
+0000966539 00000 n 
+0000007068 00000 n 
+0000007115 00000 n 
+0000512007 00000 n 
+0000966407 00000 n 
+0000007159 00000 n 
+0000007203 00000 n 
+0000512133 00000 n 
+0000966328 00000 n 
+0000007250 00000 n 
+0000007302 00000 n 
+0000515656 00000 n 
+0000966210 00000 n 
+0000007349 00000 n 
+0000007396 00000 n 
+0000515782 00000 n 
+0000966131 00000 n 
+0000007446 00000 n 
+0000007493 00000 n 
+0000516535 00000 n 
+0000966052 00000 n 
+0000007543 00000 n 
+0000007587 00000 n 
+0000523619 00000 n 
+0000965959 00000 n 
+0000007631 00000 n 
+0000007664 00000 n 
+0000527089 00000 n 
+0000965866 00000 n 
+0000007708 00000 n 
+0000007743 00000 n 
+0000527907 00000 n 
+0000965773 00000 n 
+0000007787 00000 n 
+0000007820 00000 n 
+0000528597 00000 n 
+0000965680 00000 n 
+0000007864 00000 n 
+0000007899 00000 n 
+0000532280 00000 n 
+0000965548 00000 n 
+0000007943 00000 n 
+0000007973 00000 n 
+0000532661 00000 n 
+0000965469 00000 n 
+0000008020 00000 n 
+0000008063 00000 n 
+0000536754 00000 n 
+0000965337 00000 n 
+0000008110 00000 n 
+0000008148 00000 n 
+0000536880 00000 n 
+0000965272 00000 n 
+0000008198 00000 n 
+0000008233 00000 n 
+0000538016 00000 n 
+0000965179 00000 n 
+0000008280 00000 n 
+0000008326 00000 n 
+0000538840 00000 n 
+0000965047 00000 n 
+0000008373 00000 n 
+0000008418 00000 n 
+0000539029 00000 n 
+0000964968 00000 n 
+0000008468 00000 n 
+0000008513 00000 n 
+0000542720 00000 n 
+0000964889 00000 n 
+0000008563 00000 n 
+0000008601 00000 n 
+0000543160 00000 n 
+0000964771 00000 n 
+0000008648 00000 n 
+0000008694 00000 n 
+0000543604 00000 n 
+0000964653 00000 n 
+0000008744 00000 n 
+0000008788 00000 n 
+0000543856 00000 n 
+0000964574 00000 n 
+0000008841 00000 n 
+0000008876 00000 n 
+0000544043 00000 n 
+0000964481 00000 n 
+0000008929 00000 n 
+0000008971 00000 n 
+0000544231 00000 n 
+0000964388 00000 n 
+0000009024 00000 n 
+0000009063 00000 n 
+0000549182 00000 n 
+0000964295 00000 n 
+0000009116 00000 n 
+0000009155 00000 n 
+0000549496 00000 n 
+0000964202 00000 n 
+0000009208 00000 n 
+0000009245 00000 n 
+0000549749 00000 n 
+0000964109 00000 n 
+0000009298 00000 n 
+0000009340 00000 n 
+0000550257 00000 n 
+0000964016 00000 n 
+0000009393 00000 n 
+0000009431 00000 n 
+0000553151 00000 n 
+0000963923 00000 n 
+0000009484 00000 n 
+0000009539 00000 n 
+0000553403 00000 n 
+0000963844 00000 n 
+0000009592 00000 n 
+0000009636 00000 n 
+0000553783 00000 n 
+0000963751 00000 n 
+0000009686 00000 n 
+0000009730 00000 n 
+0000554418 00000 n 
+0000963672 00000 n 
+0000009780 00000 n 
+0000009823 00000 n 
+0000554733 00000 n 
+0000963579 00000 n 
+0000009867 00000 n 
+0000009898 00000 n 
+0000559293 00000 n 
+0000963486 00000 n 
+0000009942 00000 n 
+0000009972 00000 n 
+0000559797 00000 n 
+0000963354 00000 n 
+0000010016 00000 n 
+0000010067 00000 n 
+0000563434 00000 n 
+0000963275 00000 n 
+0000010114 00000 n 
+0000010157 00000 n 
+0000565143 00000 n 
+0000963182 00000 n 
+0000010204 00000 n 
+0000010257 00000 n 
+0000565770 00000 n 
+0000963089 00000 n 
+0000010304 00000 n 
+0000010368 00000 n 
+0000568943 00000 n 
+0000962971 00000 n 
+0000010415 00000 n 
+0000010480 00000 n 
+0000569069 00000 n 
+0000962892 00000 n 
+0000010530 00000 n 
+0000010599 00000 n 
+0000569321 00000 n 
+0000962799 00000 n 
+0000010649 00000 n 
+0000010722 00000 n 
+0000571697 00000 n 
+0000962720 00000 n 
+0000010772 00000 n 
+0000010837 00000 n 
+0000572578 00000 n 
+0000962602 00000 n 
+0000010881 00000 n 
+0000010932 00000 n 
+0000573080 00000 n 
+0000962523 00000 n 
+0000010979 00000 n 
+0000011026 00000 n 
+0000577784 00000 n 
+0000962391 00000 n 
+0000011073 00000 n 
+0000011132 00000 n 
+0000581688 00000 n 
+0000962312 00000 n 
+0000011182 00000 n 
+0000011231 00000 n 
+0000582697 00000 n 
+0000962219 00000 n 
+0000011281 00000 n 
+0000011338 00000 n 
+0000586693 00000 n 
+0000962140 00000 n 
+0000011388 00000 n 
+0000011441 00000 n 
+0000589689 00000 n 
+0000962061 00000 n 
+0000011488 00000 n 
+0000011539 00000 n 
+0000593726 00000 n 
+0000961928 00000 n 
+0000011580 00000 n 
+0000011628 00000 n 
+0000594042 00000 n 
+0000961810 00000 n 
+0000011672 00000 n 
+0000011713 00000 n 
+0000594167 00000 n 
+0000961731 00000 n 
+0000011760 00000 n 
+0000011799 00000 n 
+0000594356 00000 n 
+0000961638 00000 n 
+0000011846 00000 n 
+0000011893 00000 n 
+0000595500 00000 n 
+0000961559 00000 n 
+0000011940 00000 n 
+0000011982 00000 n 
+0000598325 00000 n 
+0000961427 00000 n 
+0000012026 00000 n 
+0000012056 00000 n 
+0000598451 00000 n 
+0000961348 00000 n 
+0000012103 00000 n 
+0000012154 00000 n 
+0000598639 00000 n 
+0000961255 00000 n 
+0000012201 00000 n 
+0000012262 00000 n 
+0000599963 00000 n 
+0000961176 00000 n 
+0000012309 00000 n 
+0000012350 00000 n 
+0000603253 00000 n 
+0000961044 00000 n 
+0000012394 00000 n 
+0000012428 00000 n 
+0000603379 00000 n 
+0000960965 00000 n 
+0000012475 00000 n 
+0000012557 00000 n 
+0000611602 00000 n 
+0000960886 00000 n 
+0000012604 00000 n 
+0000012665 00000 n 
+0000612172 00000 n 
+0000960768 00000 n 
+0000012709 00000 n 
+0000012742 00000 n 
+0000612298 00000 n 
+0000960703 00000 n 
+0000012789 00000 n 
+0000012860 00000 n 
+0000615957 00000 n 
+0000960570 00000 n 
+0000012901 00000 n 
+0000012952 00000 n 
+0000616083 00000 n 
+0000960452 00000 n 
+0000012996 00000 n 
+0000013043 00000 n 
+0000616335 00000 n 
+0000960373 00000 n 
+0000013090 00000 n 
+0000013145 00000 n 
+0000617096 00000 n 
+0000960280 00000 n 
+0000013192 00000 n 
+0000013250 00000 n 
+0000622130 00000 n 
+0000960187 00000 n 
+0000013297 00000 n 
+0000013345 00000 n 
+0000626461 00000 n 
+0000960094 00000 n 
+0000013392 00000 n 
+0000013445 00000 n 
+0000627660 00000 n 
+0000960001 00000 n 
+0000013492 00000 n 
+0000013539 00000 n 
+0000637033 00000 n 
+0000959922 00000 n 
+0000013586 00000 n 
+0000013663 00000 n 
+0000637603 00000 n 
+0000959829 00000 n 
+0000013707 00000 n 
+0000013746 00000 n 
+0000647981 00000 n 
+0000959736 00000 n 
+0000013790 00000 n 
+0000013846 00000 n 
+0000652030 00000 n 
+0000959643 00000 n 
+0000013890 00000 n 
+0000013944 00000 n 
+0000656423 00000 n 
+0000959511 00000 n 
+0000013988 00000 n 
+0000014049 00000 n 
+0000657052 00000 n 
+0000959407 00000 n 
+0000014096 00000 n 
+0000014147 00000 n 
+0000660533 00000 n 
+0000959342 00000 n 
+0000014197 00000 n 
+0000014250 00000 n 
+0000669997 00000 n 
+0000959224 00000 n 
+0000014294 00000 n 
+0000014361 00000 n 
+0000670120 00000 n 
+0000959145 00000 n 
+0000014408 00000 n 
+0000014441 00000 n 
+0000670309 00000 n 
+0000959052 00000 n 
+0000014488 00000 n 
+0000014518 00000 n 
+0000672602 00000 n 
+0000958959 00000 n 
+0000014565 00000 n 
+0000014604 00000 n 
+0000673045 00000 n 
+0000958866 00000 n 
+0000014651 00000 n 
+0000014688 00000 n 
+0000673297 00000 n 
+0000958787 00000 n 
+0000014735 00000 n 
+0000014782 00000 n 
+0000676379 00000 n 
+0000958653 00000 n 
+0000014824 00000 n 
+0000014869 00000 n 
+0000676505 00000 n 
+0000958574 00000 n 
+0000014914 00000 n 
+0000014951 00000 n 
+0000676756 00000 n 
+0000958481 00000 n 
+0000014996 00000 n 
+0000015046 00000 n 
+0000677766 00000 n 
+0000958388 00000 n 
+0000015091 00000 n 
+0000015132 00000 n 
+0000685673 00000 n 
+0000958295 00000 n 
+0000015177 00000 n 
+0000015221 00000 n 
+0000738236 00000 n 
+0000958163 00000 n 
+0000015266 00000 n 
+0000015309 00000 n 
+0000738615 00000 n 
+0000958059 00000 n 
+0000015357 00000 n 
+0000015398 00000 n 
+0000742238 00000 n 
+0000957980 00000 n 
+0000015449 00000 n 
+0000015498 00000 n 
+0000742427 00000 n 
+0000957887 00000 n 
+0000015549 00000 n 
+0000015586 00000 n 
+0000746538 00000 n 
+0000957808 00000 n 
+0000015637 00000 n 
+0000015681 00000 n 
+0000747044 00000 n 
+0000957715 00000 n 
+0000015726 00000 n 
+0000015760 00000 n 
+0000747484 00000 n 
+0000957622 00000 n 
+0000015805 00000 n 
+0000015841 00000 n 
+0000751328 00000 n 
+0000957490 00000 n 
+0000015886 00000 n 
+0000015923 00000 n 
+0000751705 00000 n 
+0000957411 00000 n 
+0000015971 00000 n 
+0000016029 00000 n 
+0000751894 00000 n 
+0000957318 00000 n 
+0000016077 00000 n 
+0000016145 00000 n 
+0000754430 00000 n 
+0000957225 00000 n 
+0000016193 00000 n 
+0000016251 00000 n 
+0000754619 00000 n 
+0000957132 00000 n 
+0000016299 00000 n 
+0000016370 00000 n 
+0000754808 00000 n 
+0000957039 00000 n 
+0000016418 00000 n 
+0000016476 00000 n 
+0000754997 00000 n 
+0000956946 00000 n 
+0000016524 00000 n 
+0000016574 00000 n 
+0000755249 00000 n 
+0000956867 00000 n 
+0000016622 00000 n 
+0000016672 00000 n 
+0000755437 00000 n 
+0000956735 00000 n 
+0000016717 00000 n 
+0000016756 00000 n 
+0000755626 00000 n 
+0000956656 00000 n 
+0000016804 00000 n 
+0000016848 00000 n 
+0000758912 00000 n 
+0000956563 00000 n 
+0000016896 00000 n 
+0000016934 00000 n 
+0000759355 00000 n 
+0000956470 00000 n 
+0000016982 00000 n 
+0000017017 00000 n 
+0000759607 00000 n 
+0000956391 00000 n 
+0000017065 00000 n 
+0000017103 00000 n 
+0000762999 00000 n 
+0000956259 00000 n 
+0000017148 00000 n 
+0000017190 00000 n 
+0000763188 00000 n 
+0000956180 00000 n 
+0000017238 00000 n 
+0000017282 00000 n 
+0000763505 00000 n 
+0000956087 00000 n 
+0000017330 00000 n 
+0000017372 00000 n 
+0000769463 00000 n 
+0000956008 00000 n 
+0000017420 00000 n 
+0000017459 00000 n 
+0000769652 00000 n 
+0000955876 00000 n 
+0000017504 00000 n 
+0000017548 00000 n 
+0000772927 00000 n 
+0000955797 00000 n 
+0000017596 00000 n 
+0000017631 00000 n 
+0000773305 00000 n 
+0000955679 00000 n 
+0000017679 00000 n 
+0000017713 00000 n 
+0000773808 00000 n 
+0000955600 00000 n 
+0000017764 00000 n 
+0000017809 00000 n 
+0000776988 00000 n 
+0000955521 00000 n 
+0000017860 00000 n 
+0000017912 00000 n 
+0000777240 00000 n 
+0000955428 00000 n 
+0000017957 00000 n 
+0000017988 00000 n 
+0000781198 00000 n 
+0000955310 00000 n 
+0000018033 00000 n 
+0000018066 00000 n 
+0000781826 00000 n 
+0000955231 00000 n 
+0000018114 00000 n 
+0000018151 00000 n 
+0000782140 00000 n 
+0000955138 00000 n 
+0000018199 00000 n 
+0000018243 00000 n 
+0000786167 00000 n 
+0000955045 00000 n 
+0000018291 00000 n 
+0000018334 00000 n 
+0000788197 00000 n 
+0000954966 00000 n 
+0000018382 00000 n 
+0000018429 00000 n 
+0000791329 00000 n 
+0000954872 00000 n 
+0000018471 00000 n 
+0000018519 00000 n 
+0000857035 00000 n 
+0000954738 00000 n 
+0000018561 00000 n 
+0000018608 00000 n 
+0000857224 00000 n 
+0000954659 00000 n 
+0000018653 00000 n 
+0000018692 00000 n 
+0000857921 00000 n 
+0000954566 00000 n 
+0000018737 00000 n 
+0000018812 00000 n 
+0000858362 00000 n 
+0000954473 00000 n 
+0000018857 00000 n 
+0000018953 00000 n 
+0000861108 00000 n 
+0000954380 00000 n 
+0000018998 00000 n 
+0000019070 00000 n 
+0000861424 00000 n 
+0000954287 00000 n 
+0000019115 00000 n 
+0000019170 00000 n 
+0000862052 00000 n 
+0000954194 00000 n 
+0000019215 00000 n 
+0000019273 00000 n 
+0000864771 00000 n 
+0000954101 00000 n 
+0000019318 00000 n 
+0000019393 00000 n 
+0000865276 00000 n 
+0000954008 00000 n 
+0000019438 00000 n 
+0000019510 00000 n 
+0000869235 00000 n 
+0000953915 00000 n 
+0000019555 00000 n 
+0000019629 00000 n 
+0000872049 00000 n 
+0000953822 00000 n 
+0000019674 00000 n 
+0000019753 00000 n 
+0000872429 00000 n 
+0000953743 00000 n 
+0000019798 00000 n 
+0000019918 00000 n 
+0000876286 00000 n 
+0000953610 00000 n 
+0000019960 00000 n 
+0000019999 00000 n 
+0000876537 00000 n 
+0000953531 00000 n 
+0000020044 00000 n 
+0000020097 00000 n 
+0000878499 00000 n 
+0000953452 00000 n 
+0000020142 00000 n 
+0000020205 00000 n 
+0000881114 00000 n 
+0000953319 00000 n 
+0000020247 00000 n 
+0000020314 00000 n 
+0000881239 00000 n 
+0000953240 00000 n 
+0000020359 00000 n 
+0000020396 00000 n 
+0000882374 00000 n 
+0000953147 00000 n 
+0000020441 00000 n 
+0000020484 00000 n 
+0000887757 00000 n 
+0000953068 00000 n 
+0000020529 00000 n 
+0000020570 00000 n 
+0000893852 00000 n 
+0000952934 00000 n 
+0000020612 00000 n 
+0000020674 00000 n 
+0000894166 00000 n 
+0000952855 00000 n 
+0000020719 00000 n 
+0000020750 00000 n 
+0000894479 00000 n 
+0000952762 00000 n 
+0000020795 00000 n 
+0000020846 00000 n 
+0000898560 00000 n 
+0000952669 00000 n 
+0000020891 00000 n 
+0000020930 00000 n 
+0000898811 00000 n 
+0000952576 00000 n 
+0000020975 00000 n 
+0000021017 00000 n 
+0000902807 00000 n 
+0000952483 00000 n 
+0000021062 00000 n 
+0000021098 00000 n 
+0000908043 00000 n 
+0000952390 00000 n 
+0000021143 00000 n 
+0000021185 00000 n 
+0000908357 00000 n 
+0000952297 00000 n 
+0000021230 00000 n 
+0000021277 00000 n 
+0000908609 00000 n 
+0000952204 00000 n 
+0000021322 00000 n 
+0000021379 00000 n 
+0000911734 00000 n 
+0000952111 00000 n 
+0000021424 00000 n 
+0000021458 00000 n 
+0000911922 00000 n 
+0000952018 00000 n 
+0000021503 00000 n 
+0000021537 00000 n 
+0000912111 00000 n 
+0000951925 00000 n 
+0000021582 00000 n 
+0000021638 00000 n 
+0000912426 00000 n 
+0000951846 00000 n 
+0000021683 00000 n 
+0000021745 00000 n 
+0000916433 00000 n 
+0000951752 00000 n 
+0000021787 00000 n 
+0000021815 00000 n 
+0000916559 00000 n 
+0000951619 00000 n 
+0000021857 00000 n 
+0000021891 00000 n 
+0000916685 00000 n 
+0000951554 00000 n 
+0000021939 00000 n 
+0000021968 00000 n 
+0000917063 00000 n 
+0000951421 00000 n 
+0000022010 00000 n 
+0000022031 00000 n 
+0000917188 00000 n 
+0000951317 00000 n 
+0000022079 00000 n 
+0000022105 00000 n 
+0000917630 00000 n 
+0000951252 00000 n 
+0000022156 00000 n 
+0000022219 00000 n 
+0000921589 00000 n 
+0000951119 00000 n 
+0000022261 00000 n 
+0000022282 00000 n 
+0000921713 00000 n 
+0000951015 00000 n 
+0000022330 00000 n 
+0000022353 00000 n 
+0000922153 00000 n 
+0000950936 00000 n 
+0000022401 00000 n 
+0000022431 00000 n 
+0000922404 00000 n 
+0000950857 00000 n 
+0000022479 00000 n 
+0000022507 00000 n 
+0000922656 00000 n 
+0000950724 00000 n 
+0000022549 00000 n 
+0000022570 00000 n 
+0000922781 00000 n 
+0000950620 00000 n 
+0000022618 00000 n 
+0000022662 00000 n 
+0000923158 00000 n 
+0000950541 00000 n 
+0000022710 00000 n 
+0000022739 00000 n 
+0000923410 00000 n 
+0000950448 00000 n 
+0000022787 00000 n 
+0000022841 00000 n 
+0000923913 00000 n 
+0000950369 00000 n 
+0000022889 00000 n 
+0000022916 00000 n 
+0000926610 00000 n 
+0000950235 00000 n 
+0000022958 00000 n 
+0000022979 00000 n 
+0000926735 00000 n 
+0000950131 00000 n 
+0000023027 00000 n 
+0000023053 00000 n 
+0000927114 00000 n 
+0000950065 00000 n 
+0000023101 00000 n 
+0000023132 00000 n 
+0000927428 00000 n 
+0000949926 00000 n 
+0000023175 00000 n 
+0000023197 00000 n 
+0000927554 00000 n 
+0000949857 00000 n 
+0000023246 00000 n 
+0000023273 00000 n 
+0000927998 00000 n 
+0000949717 00000 n 
+0000023316 00000 n 
+0000023338 00000 n 
+0000928124 00000 n 
+0000949648 00000 n 
+0000023387 00000 n 
+0000023418 00000 n 
+0000930525 00000 n 
+0000949508 00000 n 
+0000023461 00000 n 
+0000023483 00000 n 
+0000930649 00000 n 
+0000949398 00000 n 
+0000023532 00000 n 
+0000023576 00000 n 
+0000931155 00000 n 
+0000949329 00000 n 
+0000023625 00000 n 
+0000023651 00000 n 
+0000932358 00000 n 
+0000949189 00000 n 
+0000023694 00000 n 
+0000023716 00000 n 
+0000932483 00000 n 
+0000949079 00000 n 
+0000023765 00000 n 
+0000023806 00000 n 
+0000932799 00000 n 
+0000948995 00000 n 
+0000023856 00000 n 
+0000023884 00000 n 
+0000934727 00000 n 
+0000948911 00000 n 
+0000023934 00000 n 
+0000023959 00000 n 
+0000935043 00000 n 
+0000948771 00000 n 
+0000024002 00000 n 
+0000024024 00000 n 
+0000935167 00000 n 
+0000948702 00000 n 
+0000024074 00000 n 
+0000024097 00000 n 
+0000935737 00000 n 
+0000948562 00000 n 
+0000024140 00000 n 
+0000024162 00000 n 
+0000935863 00000 n 
+0000948452 00000 n 
+0000024212 00000 n 
+0000024269 00000 n 
+0000936116 00000 n 
+0000948383 00000 n 
+0000024319 00000 n 
+0000024358 00000 n 
+0000936433 00000 n 
+0000948243 00000 n 
+0000024401 00000 n 
+0000024423 00000 n 
+0000936558 00000 n 
+0000948133 00000 n 
+0000024473 00000 n 
+0000024501 00000 n 
+0000939290 00000 n 
+0000948064 00000 n 
+0000024551 00000 n 
+0000024577 00000 n 
+0000940179 00000 n 
+0000947924 00000 n 
+0000024620 00000 n 
+0000024642 00000 n 
+0000940305 00000 n 
+0000947814 00000 n 
+0000024692 00000 n 
+0000024729 00000 n 
+0000940622 00000 n 
+0000947745 00000 n 
+0000024779 00000 n 
+0000024821 00000 n 
+0000940875 00000 n 
+0000947620 00000 n 
+0000024864 00000 n 
+0000024886 00000 n 
+0000941001 00000 n 
+0000947551 00000 n 
+0000024936 00000 n 
+0000024974 00000 n 
+0000025320 00000 n 
+0000025694 00000 n 
+0000025028 00000 n 
+0000025444 00000 n 
+0000025507 00000 n 
+0000025570 00000 n 
 0000001111 00000 f 
-0000944476 00000 n 
-0000944573 00000 n 
-0000026571 00000 n 
-0000026384 00000 n 
-0000025765 00000 n 
-0000026508 00000 n 
+0000944191 00000 n 
+0000944288 00000 n 
+0000026576 00000 n 
+0000026389 00000 n 
+0000025768 00000 n 
+0000026513 00000 n 
 0000001118 00000 f 
-0000944382 00000 n 
-0000098583 00000 n 
-0000083332 00000 n 
-0000026659 00000 n 
-0000098459 00000 n 
-0000084278 00000 n 
+0000944097 00000 n 
+0000098588 00000 n 
+0000083337 00000 n 
+0000026664 00000 n 
+0000098464 00000 n 
+0000084283 00000 n 
 0000001209 00000 f 
-0000944289 00000 n 
-0000084425 00000 n 
-0000084573 00000 n 
-0000084725 00000 n 
-0000084878 00000 n 
-0000085031 00000 n 
-0000085185 00000 n 
-0000085338 00000 n 
-0000085492 00000 n 
-0000085642 00000 n 
-0000085793 00000 n 
-0000085947 00000 n 
-0000086102 00000 n 
-0000086264 00000 n 
-0000086427 00000 n 
-0000086582 00000 n 
-0000086738 00000 n 
-0000086894 00000 n 
-0000087050 00000 n 
-0000087210 00000 n 
-0000087370 00000 n 
-0000087527 00000 n 
-0000087684 00000 n 
-0000087837 00000 n 
-0000087990 00000 n 
-0000088150 00000 n 
-0000088310 00000 n 
-0000088469 00000 n 
-0000088628 00000 n 
-0000088791 00000 n 
-0000088954 00000 n 
-0000089123 00000 n 
-0000089292 00000 n 
-0000089460 00000 n 
-0000089628 00000 n 
-0000089790 00000 n 
-0000089952 00000 n 
-0000090122 00000 n 
-0000090292 00000 n 
-0000090459 00000 n 
-0000090626 00000 n 
-0000090799 00000 n 
-0000090972 00000 n 
-0000091142 00000 n 
-0000091312 00000 n 
-0000091483 00000 n 
-0000091654 00000 n 
-0000091825 00000 n 
-0000091996 00000 n 
-0000092151 00000 n 
-0000092306 00000 n 
-0000092461 00000 n 
-0000092617 00000 n 
-0000092770 00000 n 
-0000092923 00000 n 
-0000093082 00000 n 
-0000093240 00000 n 
-0000093389 00000 n 
-0000093537 00000 n 
-0000093691 00000 n 
-0000093844 00000 n 
-0000093991 00000 n 
-0000094137 00000 n 
-0000094284 00000 n 
-0000094431 00000 n 
-0000094584 00000 n 
-0000094737 00000 n 
-0000094888 00000 n 
-0000095038 00000 n 
-0000095190 00000 n 
-0000095341 00000 n 
-0000095508 00000 n 
-0000095674 00000 n 
-0000095828 00000 n 
-0000095982 00000 n 
-0000096129 00000 n 
-0000096275 00000 n 
-0000096422 00000 n 
-0000096568 00000 n 
-0000096736 00000 n 
-0000096903 00000 n 
-0000097066 00000 n 
-0000097228 00000 n 
-0000097384 00000 n 
-0000097539 00000 n 
-0000097688 00000 n 
-0000097837 00000 n 
-0000097995 00000 n 
-0000098152 00000 n 
-0000098305 00000 n 
+0000944004 00000 n 
+0000084430 00000 n 
+0000084578 00000 n 
+0000084730 00000 n 
+0000084883 00000 n 
+0000085036 00000 n 
+0000085190 00000 n 
+0000085343 00000 n 
+0000085497 00000 n 
+0000085647 00000 n 
+0000085798 00000 n 
+0000085952 00000 n 
+0000086107 00000 n 
+0000086269 00000 n 
+0000086432 00000 n 
+0000086587 00000 n 
+0000086743 00000 n 
+0000086899 00000 n 
+0000087055 00000 n 
+0000087215 00000 n 
+0000087375 00000 n 
+0000087532 00000 n 
+0000087689 00000 n 
+0000087842 00000 n 
+0000087995 00000 n 
+0000088155 00000 n 
+0000088315 00000 n 
+0000088474 00000 n 
+0000088633 00000 n 
+0000088796 00000 n 
+0000088959 00000 n 
+0000089128 00000 n 
+0000089297 00000 n 
+0000089465 00000 n 
+0000089633 00000 n 
+0000089795 00000 n 
+0000089957 00000 n 
+0000090127 00000 n 
+0000090297 00000 n 
+0000090464 00000 n 
+0000090631 00000 n 
+0000090804 00000 n 
+0000090977 00000 n 
+0000091147 00000 n 
+0000091317 00000 n 
+0000091488 00000 n 
+0000091659 00000 n 
+0000091830 00000 n 
+0000092001 00000 n 
+0000092156 00000 n 
+0000092311 00000 n 
+0000092466 00000 n 
+0000092622 00000 n 
+0000092775 00000 n 
+0000092928 00000 n 
+0000093087 00000 n 
+0000093245 00000 n 
+0000093394 00000 n 
+0000093542 00000 n 
+0000093696 00000 n 
+0000093849 00000 n 
+0000093996 00000 n 
+0000094142 00000 n 
+0000094289 00000 n 
+0000094436 00000 n 
+0000094589 00000 n 
+0000094742 00000 n 
+0000094893 00000 n 
+0000095043 00000 n 
+0000095195 00000 n 
+0000095346 00000 n 
+0000095513 00000 n 
+0000095679 00000 n 
+0000095833 00000 n 
+0000095987 00000 n 
+0000096134 00000 n 
+0000096280 00000 n 
+0000096427 00000 n 
+0000096573 00000 n 
+0000096741 00000 n 
+0000096908 00000 n 
+0000097071 00000 n 
+0000097233 00000 n 
+0000097389 00000 n 
+0000097544 00000 n 
+0000097693 00000 n 
+0000097842 00000 n 
+0000098000 00000 n 
+0000098157 00000 n 
+0000098310 00000 n 
 0000001436 00000 f 
-0000944194 00000 n 
-0000370925 00000 n 
-0000371050 00000 n 
-0000371427 00000 n 
-0000371741 00000 n 
-0000375408 00000 n 
-0000378380 00000 n 
-0000384776 00000 n 
-0000384901 00000 n 
-0000386223 00000 n 
-0000389085 00000 n 
-0000389273 00000 n 
-0000389968 00000 n 
-0000390409 00000 n 
-0000390851 00000 n 
-0000395547 00000 n 
-0000403870 00000 n 
-0000406295 00000 n 
-0000406483 00000 n 
-0000407177 00000 n 
-0000407365 00000 n 
-0000407553 00000 n 
-0000407740 00000 n 
-0000408057 00000 n 
-0000406170 00000 n 
-0000411352 00000 n 
-0000411790 00000 n 
-0000412043 00000 n 
-0000416215 00000 n 
-0000416404 00000 n 
-0000426026 00000 n 
-0000431705 00000 n 
-0000432209 00000 n 
-0000432398 00000 n 
-0000437728 00000 n 
-0000442827 00000 n 
-0000444412 00000 n 
-0000448669 00000 n 
-0000448858 00000 n 
-0000449678 00000 n 
-0000453419 00000 n 
-0000453923 00000 n 
-0000454553 00000 n 
-0000458816 00000 n 
-0000463625 00000 n 
-0000464511 00000 n 
-0000172254 00000 n 
-0000156877 00000 n 
-0000098699 00000 n 
-0000172191 00000 n 
-0000157859 00000 n 
-0000158010 00000 n 
-0000158161 00000 n 
-0000158315 00000 n 
-0000158468 00000 n 
-0000158630 00000 n 
-0000158791 00000 n 
-0000158949 00000 n 
-0000159110 00000 n 
-0000159264 00000 n 
-0000159417 00000 n 
-0000159570 00000 n 
-0000159722 00000 n 
-0000159876 00000 n 
-0000160029 00000 n 
-0000160177 00000 n 
-0000160325 00000 n 
-0000160472 00000 n 
-0000160618 00000 n 
-0000160765 00000 n 
-0000160911 00000 n 
-0000161057 00000 n 
-0000161203 00000 n 
-0000161350 00000 n 
-0000161496 00000 n 
-0000161667 00000 n 
-0000161837 00000 n 
-0000161983 00000 n 
-0000162128 00000 n 
-0000162274 00000 n 
-0000162420 00000 n 
-0000162567 00000 n 
-0000162713 00000 n 
-0000162860 00000 n 
-0000163006 00000 n 
-0000163153 00000 n 
-0000163299 00000 n 
-0000163456 00000 n 
-0000163613 00000 n 
-0000163766 00000 n 
-0000163919 00000 n 
-0000164071 00000 n 
-0000164223 00000 n 
-0000164378 00000 n 
-0000164532 00000 n 
-0000164687 00000 n 
-0000164841 00000 n 
-0000164999 00000 n 
-0000165156 00000 n 
-0000165310 00000 n 
-0000165463 00000 n 
-0000165613 00000 n 
-0000165763 00000 n 
-0000165916 00000 n 
-0000166069 00000 n 
-0000166220 00000 n 
-0000166371 00000 n 
-0000166524 00000 n 
-0000166677 00000 n 
-0000166834 00000 n 
-0000166991 00000 n 
-0000167154 00000 n 
-0000167316 00000 n 
-0000167470 00000 n 
-0000167623 00000 n 
-0000167777 00000 n 
-0000167930 00000 n 
-0000168084 00000 n 
-0000168237 00000 n 
-0000168391 00000 n 
-0000168544 00000 n 
-0000168708 00000 n 
-0000168871 00000 n 
-0000169028 00000 n 
-0000169184 00000 n 
-0000169339 00000 n 
-0000169493 00000 n 
-0000169648 00000 n 
-0000169802 00000 n 
-0000169957 00000 n 
-0000170111 00000 n 
-0000170265 00000 n 
-0000170418 00000 n 
-0000170567 00000 n 
-0000170716 00000 n 
-0000170864 00000 n 
-0000171012 00000 n 
-0000171161 00000 n 
-0000171310 00000 n 
-0000171458 00000 n 
-0000171605 00000 n 
-0000171752 00000 n 
-0000171898 00000 n 
-0000172045 00000 n 
-0000467788 00000 n 
-0000467977 00000 n 
-0000468294 00000 n 
-0000469111 00000 n 
-0000472188 00000 n 
-0000472630 00000 n 
-0000477239 00000 n 
-0000478372 00000 n 
-0000480914 00000 n 
-0000481103 00000 n 
-0000481610 00000 n 
-0000485623 00000 n 
-0000488650 00000 n 
-0000488839 00000 n 
-0000489661 00000 n 
-0000496595 00000 n 
-0000496783 00000 n 
-0000497351 00000 n 
-0000502468 00000 n 
-0000502594 00000 n 
-0000511942 00000 n 
-0000512068 00000 n 
-0000512382 00000 n 
-0000515717 00000 n 
-0000516470 00000 n 
-0000523554 00000 n 
-0000527025 00000 n 
-0000527842 00000 n 
-0000528532 00000 n 
-0000532215 00000 n 
-0000532596 00000 n 
-0000534431 00000 n 
-0000536815 00000 n 
-0000537951 00000 n 
-0000538775 00000 n 
-0000538964 00000 n 
-0000542655 00000 n 
-0000543095 00000 n 
-0000543539 00000 n 
-0000553718 00000 n 
-0000554353 00000 n 
-0000554669 00000 n 
-0000559228 00000 n 
-0000559732 00000 n 
-0000560556 00000 n 
-0000565078 00000 n 
-0000565705 00000 n 
-0000239749 00000 n 
-0000224647 00000 n 
-0000172356 00000 n 
-0000239686 00000 n 
-0000225593 00000 n 
-0000225741 00000 n 
-0000225888 00000 n 
-0000226036 00000 n 
-0000226183 00000 n 
-0000226331 00000 n 
-0000226478 00000 n 
-0000226626 00000 n 
-0000226773 00000 n 
-0000226925 00000 n 
-0000227077 00000 n 
-0000227244 00000 n 
-0000227410 00000 n 
-0000227570 00000 n 
-0000227729 00000 n 
-0000227884 00000 n 
-0000228038 00000 n 
-0000228197 00000 n 
-0000228355 00000 n 
-0000228513 00000 n 
-0000228671 00000 n 
-0000228835 00000 n 
-0000228998 00000 n 
-0000229148 00000 n 
-0000229299 00000 n 
-0000229453 00000 n 
-0000229607 00000 n 
-0000229768 00000 n 
-0000229928 00000 n 
-0000230092 00000 n 
-0000230255 00000 n 
+0000943909 00000 n 
+0000370928 00000 n 
+0000371053 00000 n 
+0000371430 00000 n 
+0000371744 00000 n 
+0000375411 00000 n 
+0000378383 00000 n 
+0000384779 00000 n 
+0000384904 00000 n 
+0000386226 00000 n 
+0000389087 00000 n 
+0000389275 00000 n 
+0000389970 00000 n 
+0000390411 00000 n 
+0000390853 00000 n 
+0000395549 00000 n 
+0000403872 00000 n 
+0000406297 00000 n 
+0000406485 00000 n 
+0000407179 00000 n 
+0000407367 00000 n 
+0000407555 00000 n 
+0000407742 00000 n 
+0000408059 00000 n 
+0000406172 00000 n 
+0000411354 00000 n 
+0000411792 00000 n 
+0000412045 00000 n 
+0000416217 00000 n 
+0000416406 00000 n 
+0000426028 00000 n 
+0000431707 00000 n 
+0000432211 00000 n 
+0000432400 00000 n 
+0000437730 00000 n 
+0000442829 00000 n 
+0000444414 00000 n 
+0000448671 00000 n 
+0000448860 00000 n 
+0000449680 00000 n 
+0000453421 00000 n 
+0000453925 00000 n 
+0000454555 00000 n 
+0000458818 00000 n 
+0000463627 00000 n 
+0000464513 00000 n 
+0000172259 00000 n 
+0000156882 00000 n 
+0000098704 00000 n 
+0000172196 00000 n 
+0000157864 00000 n 
+0000158015 00000 n 
+0000158166 00000 n 
+0000158320 00000 n 
+0000158473 00000 n 
+0000158635 00000 n 
+0000158796 00000 n 
+0000158954 00000 n 
+0000159115 00000 n 
+0000159269 00000 n 
+0000159422 00000 n 
+0000159575 00000 n 
+0000159727 00000 n 
+0000159881 00000 n 
+0000160034 00000 n 
+0000160182 00000 n 
+0000160330 00000 n 
+0000160477 00000 n 
+0000160623 00000 n 
+0000160770 00000 n 
+0000160916 00000 n 
+0000161062 00000 n 
+0000161208 00000 n 
+0000161355 00000 n 
+0000161501 00000 n 
+0000161672 00000 n 
+0000161842 00000 n 
+0000161988 00000 n 
+0000162133 00000 n 
+0000162279 00000 n 
+0000162425 00000 n 
+0000162572 00000 n 
+0000162718 00000 n 
+0000162865 00000 n 
+0000163011 00000 n 
+0000163158 00000 n 
+0000163304 00000 n 
+0000163461 00000 n 
+0000163618 00000 n 
+0000163771 00000 n 
+0000163924 00000 n 
+0000164076 00000 n 
+0000164228 00000 n 
+0000164383 00000 n 
+0000164537 00000 n 
+0000164692 00000 n 
+0000164846 00000 n 
+0000165004 00000 n 
+0000165161 00000 n 
+0000165315 00000 n 
+0000165468 00000 n 
+0000165618 00000 n 
+0000165768 00000 n 
+0000165921 00000 n 
+0000166074 00000 n 
+0000166225 00000 n 
+0000166376 00000 n 
+0000166529 00000 n 
+0000166682 00000 n 
+0000166839 00000 n 
+0000166996 00000 n 
+0000167159 00000 n 
+0000167321 00000 n 
+0000167475 00000 n 
+0000167628 00000 n 
+0000167782 00000 n 
+0000167935 00000 n 
+0000168089 00000 n 
+0000168242 00000 n 
+0000168396 00000 n 
+0000168549 00000 n 
+0000168713 00000 n 
+0000168876 00000 n 
+0000169033 00000 n 
+0000169189 00000 n 
+0000169344 00000 n 
+0000169498 00000 n 
+0000169653 00000 n 
+0000169807 00000 n 
+0000169962 00000 n 
+0000170116 00000 n 
+0000170270 00000 n 
+0000170423 00000 n 
+0000170572 00000 n 
+0000170721 00000 n 
+0000170869 00000 n 
+0000171017 00000 n 
+0000171166 00000 n 
+0000171315 00000 n 
+0000171463 00000 n 
+0000171610 00000 n 
+0000171757 00000 n 
+0000171903 00000 n 
+0000172050 00000 n 
+0000467790 00000 n 
+0000467979 00000 n 
+0000468296 00000 n 
+0000469113 00000 n 
+0000472190 00000 n 
+0000472632 00000 n 
+0000477241 00000 n 
+0000478374 00000 n 
+0000480916 00000 n 
+0000481105 00000 n 
+0000481612 00000 n 
+0000485625 00000 n 
+0000488652 00000 n 
+0000488841 00000 n 
+0000489663 00000 n 
+0000496597 00000 n 
+0000496785 00000 n 
+0000497353 00000 n 
+0000502470 00000 n 
+0000502596 00000 n 
+0000511944 00000 n 
+0000512070 00000 n 
+0000512384 00000 n 
+0000515719 00000 n 
+0000516472 00000 n 
+0000523556 00000 n 
+0000527027 00000 n 
+0000527844 00000 n 
+0000528534 00000 n 
+0000532217 00000 n 
+0000532598 00000 n 
+0000534433 00000 n 
+0000536817 00000 n 
+0000537953 00000 n 
+0000538777 00000 n 
+0000538966 00000 n 
+0000542657 00000 n 
+0000543097 00000 n 
+0000543541 00000 n 
+0000553720 00000 n 
+0000554355 00000 n 
+0000554671 00000 n 
+0000559230 00000 n 
+0000559734 00000 n 
+0000560558 00000 n 
+0000565080 00000 n 
+0000565707 00000 n 
+0000239754 00000 n 
+0000224652 00000 n 
+0000172361 00000 n 
+0000239691 00000 n 
+0000225598 00000 n 
+0000225746 00000 n 
+0000225893 00000 n 
+0000226041 00000 n 
+0000226188 00000 n 
+0000226336 00000 n 
+0000226483 00000 n 
+0000226631 00000 n 
+0000226778 00000 n 
+0000226930 00000 n 
+0000227082 00000 n 
+0000227249 00000 n 
+0000227415 00000 n 
+0000227575 00000 n 
+0000227734 00000 n 
+0000227889 00000 n 
+0000228043 00000 n 
+0000228202 00000 n 
+0000228360 00000 n 
+0000228518 00000 n 
+0000228676 00000 n 
+0000228840 00000 n 
+0000229003 00000 n 
+0000229153 00000 n 
+0000229304 00000 n 
+0000229458 00000 n 
+0000229612 00000 n 
+0000229773 00000 n 
+0000229933 00000 n 
+0000230097 00000 n 
+0000230260 00000 n 
 0000001883 00000 f 
-0000944104 00000 n 
-0000230417 00000 n 
-0000230578 00000 n 
-0000230735 00000 n 
-0000230892 00000 n 
-0000231057 00000 n 
-0000231221 00000 n 
-0000231383 00000 n 
-0000231544 00000 n 
-0000231710 00000 n 
-0000231875 00000 n 
-0000232036 00000 n 
-0000232197 00000 n 
-0000232366 00000 n 
-0000232534 00000 n 
-0000232709 00000 n 
-0000232883 00000 n 
-0000233043 00000 n 
-0000233203 00000 n 
-0000233371 00000 n 
-0000233538 00000 n 
-0000233694 00000 n 
-0000233850 00000 n 
-0000234007 00000 n 
-0000234164 00000 n 
-0000234325 00000 n 
-0000234486 00000 n 
-0000234645 00000 n 
-0000234803 00000 n 
-0000234960 00000 n 
-0000235116 00000 n 
-0000235275 00000 n 
-0000235433 00000 n 
-0000235592 00000 n 
-0000235751 00000 n 
-0000235915 00000 n 
-0000236078 00000 n 
-0000236230 00000 n 
-0000236383 00000 n 
-0000236549 00000 n 
-0000236715 00000 n 
-0000236866 00000 n 
-0000237017 00000 n 
-0000237165 00000 n 
-0000237313 00000 n 
-0000237460 00000 n 
-0000237606 00000 n 
-0000237752 00000 n 
-0000237898 00000 n 
-0000238052 00000 n 
-0000238206 00000 n 
-0000238356 00000 n 
-0000238505 00000 n 
-0000238652 00000 n 
-0000238798 00000 n 
-0000238944 00000 n 
-0000239089 00000 n 
-0000239236 00000 n 
-0000239382 00000 n 
-0000239534 00000 n 
-0000568878 00000 n 
-0000569004 00000 n 
-0000569256 00000 n 
-0000569507 00000 n 
-0000572513 00000 n 
-0000573015 00000 n 
-0000577719 00000 n 
-0000581623 00000 n 
-0000582634 00000 n 
-0000586628 00000 n 
-0000589625 00000 n 
-0000593661 00000 n 
-0000593977 00000 n 
-0000594102 00000 n 
-0000594291 00000 n 
-0000595435 00000 n 
-0000595688 00000 n 
-0000598386 00000 n 
-0000598574 00000 n 
-0000599898 00000 n 
-0000603032 00000 n 
-0000603158 00000 n 
-0000611920 00000 n 
-0000612491 00000 n 
-0000612617 00000 n 
-0000616278 00000 n 
-0000616404 00000 n 
-0000616656 00000 n 
-0000617417 00000 n 
-0000622451 00000 n 
-0000623210 00000 n 
-0000627980 00000 n 
-0000633940 00000 n 
-0000637923 00000 n 
-0000648301 00000 n 
-0000652350 00000 n 
-0000651718 00000 n 
-0000657372 00000 n 
-0000660853 00000 n 
-0000670317 00000 n 
-0000670442 00000 n 
-0000670629 00000 n 
-0000671261 00000 n 
-0000673365 00000 n 
-0000673617 00000 n 
-0000314289 00000 n 
-0000298733 00000 n 
-0000239865 00000 n 
-0000314226 00000 n 
-0000299715 00000 n 
-0000299863 00000 n 
-0000300011 00000 n 
-0000300165 00000 n 
-0000300319 00000 n 
-0000300471 00000 n 
-0000300623 00000 n 
-0000300774 00000 n 
-0000300925 00000 n 
-0000301076 00000 n 
-0000301227 00000 n 
-0000301374 00000 n 
-0000301521 00000 n 
-0000301672 00000 n 
-0000301822 00000 n 
-0000301974 00000 n 
-0000302125 00000 n 
-0000302277 00000 n 
-0000302428 00000 n 
-0000302586 00000 n 
-0000302743 00000 n 
-0000302890 00000 n 
-0000303037 00000 n 
-0000303188 00000 n 
-0000303340 00000 n 
-0000303493 00000 n 
-0000303646 00000 n 
-0000303806 00000 n 
-0000303965 00000 n 
-0000304125 00000 n 
-0000304284 00000 n 
-0000304447 00000 n 
-0000304609 00000 n 
-0000304773 00000 n 
-0000304936 00000 n 
-0000305096 00000 n 
-0000305255 00000 n 
-0000305420 00000 n 
-0000305584 00000 n 
-0000305751 00000 n 
-0000305917 00000 n 
-0000306072 00000 n 
-0000306227 00000 n 
-0000306375 00000 n 
-0000306522 00000 n 
-0000306677 00000 n 
-0000306831 00000 n 
-0000306985 00000 n 
-0000307138 00000 n 
-0000307293 00000 n 
-0000307447 00000 n 
-0000307605 00000 n 
-0000307763 00000 n 
-0000307921 00000 n 
-0000308078 00000 n 
-0000308234 00000 n 
-0000308390 00000 n 
-0000308552 00000 n 
-0000308713 00000 n 
-0000308864 00000 n 
-0000309016 00000 n 
-0000309167 00000 n 
-0000309317 00000 n 
-0000309467 00000 n 
-0000309616 00000 n 
-0000309763 00000 n 
-0000309909 00000 n 
-0000310056 00000 n 
-0000310202 00000 n 
-0000310350 00000 n 
-0000310498 00000 n 
-0000310648 00000 n 
-0000310798 00000 n 
-0000310958 00000 n 
-0000311117 00000 n 
-0000311277 00000 n 
-0000311436 00000 n 
-0000311593 00000 n 
-0000311749 00000 n 
-0000311896 00000 n 
-0000312042 00000 n 
-0000312188 00000 n 
-0000312334 00000 n 
-0000312491 00000 n 
-0000312648 00000 n 
-0000312803 00000 n 
-0000312958 00000 n 
-0000313116 00000 n 
-0000313274 00000 n 
-0000313432 00000 n 
-0000313590 00000 n 
-0000313751 00000 n 
-0000313912 00000 n 
-0000314069 00000 n 
-0000676699 00000 n 
-0000676825 00000 n 
-0000677076 00000 n 
-0000678086 00000 n 
-0000685993 00000 n 
-0000682723 00000 n 
-0000738935 00000 n 
-0000742558 00000 n 
-0000742747 00000 n 
-0000743696 00000 n 
-0000747364 00000 n 
-0000747804 00000 n 
-0000751648 00000 n 
-0000752025 00000 n 
-0000752214 00000 n 
-0000752401 00000 n 
-0000754939 00000 n 
-0000755128 00000 n 
-0000755317 00000 n 
-0000755569 00000 n 
-0000755757 00000 n 
-0000755946 00000 n 
-0000759136 00000 n 
-0000759579 00000 n 
-0000759831 00000 n 
-0000763223 00000 n 
-0000763412 00000 n 
-0000763729 00000 n 
-0000769687 00000 n 
-0000769876 00000 n 
-0000770065 00000 n 
-0000773529 00000 n 
-0000774032 00000 n 
-0000777212 00000 n 
-0000777464 00000 n 
-0000778031 00000 n 
-0000782050 00000 n 
-0000782365 00000 n 
-0000786391 00000 n 
-0000788421 00000 n 
-0000791553 00000 n 
-0000857257 00000 n 
-0000857446 00000 n 
-0000858143 00000 n 
-0000858584 00000 n 
-0000859085 00000 n 
-0000861646 00000 n 
-0000356916 00000 n 
-0000347885 00000 n 
-0000314405 00000 n 
-0000356853 00000 n 
-0000348507 00000 n 
-0000348666 00000 n 
-0000348826 00000 n 
-0000348984 00000 n 
-0000349143 00000 n 
-0000349307 00000 n 
-0000349471 00000 n 
-0000349618 00000 n 
-0000349765 00000 n 
-0000349918 00000 n 
-0000350072 00000 n 
-0000350236 00000 n 
-0000350401 00000 n 
-0000350551 00000 n 
-0000350702 00000 n 
-0000350852 00000 n 
-0000351003 00000 n 
-0000351161 00000 n 
-0000351320 00000 n 
-0000351489 00000 n 
-0000351659 00000 n 
-0000351828 00000 n 
-0000351998 00000 n 
-0000352164 00000 n 
-0000352331 00000 n 
-0000352497 00000 n 
-0000352664 00000 n 
-0000352809 00000 n 
-0000352955 00000 n 
-0000353104 00000 n 
-0000353254 00000 n 
-0000353403 00000 n 
-0000353553 00000 n 
-0000353702 00000 n 
-0000353852 00000 n 
-0000354001 00000 n 
-0000354151 00000 n 
-0000354300 00000 n 
-0000354450 00000 n 
-0000354599 00000 n 
-0000354749 00000 n 
-0000354897 00000 n 
-0000355046 00000 n 
-0000355195 00000 n 
-0000355345 00000 n 
-0000355494 00000 n 
-0000355644 00000 n 
-0000355793 00000 n 
-0000355943 00000 n 
-0000356093 00000 n 
-0000356244 00000 n 
-0000356396 00000 n 
-0000356550 00000 n 
-0000356701 00000 n 
-0000944698 00000 n 
-0000862274 00000 n 
-0000864993 00000 n 
-0000865498 00000 n 
-0000869457 00000 n 
-0000872271 00000 n 
-0000872651 00000 n 
-0000876508 00000 n 
-0000876759 00000 n 
-0000878722 00000 n 
-0000881336 00000 n 
-0000881461 00000 n 
-0000882596 00000 n 
-0000887979 00000 n 
-0000894074 00000 n 
-0000894388 00000 n 
-0000894701 00000 n 
-0000898782 00000 n 
-0000899033 00000 n 
-0000903029 00000 n 
-0000908265 00000 n 
-0000908580 00000 n 
-0000908831 00000 n 
-0000911956 00000 n 
-0000912144 00000 n 
-0000912333 00000 n 
-0000912649 00000 n 
-0000916655 00000 n 
-0000367941 00000 n 
-0000365128 00000 n 
-0000357032 00000 n 
-0000367754 00000 n 
-0000365390 00000 n 
-0000365547 00000 n 
-0000365704 00000 n 
-0000365874 00000 n 
-0000366044 00000 n 
-0000366219 00000 n 
-0000366394 00000 n 
-0000366562 00000 n 
-0000366730 00000 n 
-0000366901 00000 n 
-0000367072 00000 n 
-0000367241 00000 n 
-0000367411 00000 n 
-0000367582 00000 n 
-0000686309 00000 n 
-0000598953 00000 n 
-0000599331 00000 n 
-0000600087 00000 n 
-0000612869 00000 n 
-0000868572 00000 n 
-0000868952 00000 n 
-0000372881 00000 n 
-0000370632 00000 n 
-0000368043 00000 n 
-0000371175 00000 n 
-0000371238 00000 n 
-0000371301 00000 n 
-0000370777 00000 n 
-0000371364 00000 n 
-0000371552 00000 n 
-0000371615 00000 n 
-0000371678 00000 n 
-0000371866 00000 n 
-0000371929 00000 n 
-0000371991 00000 n 
-0000372055 00000 n 
-0000372119 00000 n 
-0000372182 00000 n 
-0000372245 00000 n 
-0000372309 00000 n 
-0000372372 00000 n 
-0000372436 00000 n 
-0000372500 00000 n 
-0000372564 00000 n 
-0000372628 00000 n 
-0000372691 00000 n 
-0000372754 00000 n 
-0000372817 00000 n 
-0000378694 00000 n 
-0000375095 00000 n 
-0000372997 00000 n 
-0000375219 00000 n 
-0000375281 00000 n 
-0000375344 00000 n 
-0000375533 00000 n 
-0000375596 00000 n 
-0000375659 00000 n 
-0000375722 00000 n 
-0000375784 00000 n 
-0000375847 00000 n 
-0000375910 00000 n 
-0000375973 00000 n 
-0000376037 00000 n 
-0000376100 00000 n 
-0000376162 00000 n 
-0000376225 00000 n 
-0000376289 00000 n 
-0000376352 00000 n 
-0000376415 00000 n 
-0000376478 00000 n 
-0000376542 00000 n 
-0000376605 00000 n 
-0000376668 00000 n 
-0000376731 00000 n 
-0000376795 00000 n 
-0000376858 00000 n 
-0000376921 00000 n 
-0000376984 00000 n 
-0000377048 00000 n 
-0000377111 00000 n 
-0000377173 00000 n 
-0000377235 00000 n 
-0000377299 00000 n 
-0000377362 00000 n 
-0000377425 00000 n 
-0000377487 00000 n 
-0000377551 00000 n 
-0000377615 00000 n 
-0000377679 00000 n 
-0000377743 00000 n 
-0000377807 00000 n 
-0000377871 00000 n 
-0000377935 00000 n 
-0000377999 00000 n 
-0000378063 00000 n 
-0000378126 00000 n 
-0000378190 00000 n 
-0000378254 00000 n 
-0000378317 00000 n 
-0000378505 00000 n 
-0000378568 00000 n 
-0000378631 00000 n 
-0000380675 00000 n 
-0000380183 00000 n 
-0000378810 00000 n 
-0000380486 00000 n 
+0000943819 00000 n 
+0000230422 00000 n 
+0000230583 00000 n 
+0000230740 00000 n 
+0000230897 00000 n 
+0000231062 00000 n 
+0000231226 00000 n 
+0000231388 00000 n 
+0000231549 00000 n 
+0000231715 00000 n 
+0000231880 00000 n 
+0000232041 00000 n 
+0000232202 00000 n 
+0000232371 00000 n 
+0000232539 00000 n 
+0000232714 00000 n 
+0000232888 00000 n 
+0000233048 00000 n 
+0000233208 00000 n 
+0000233376 00000 n 
+0000233543 00000 n 
+0000233699 00000 n 
+0000233855 00000 n 
+0000234012 00000 n 
+0000234169 00000 n 
+0000234330 00000 n 
+0000234491 00000 n 
+0000234650 00000 n 
+0000234808 00000 n 
+0000234965 00000 n 
+0000235121 00000 n 
+0000235280 00000 n 
+0000235438 00000 n 
+0000235597 00000 n 
+0000235756 00000 n 
+0000235920 00000 n 
+0000236083 00000 n 
+0000236235 00000 n 
+0000236388 00000 n 
+0000236554 00000 n 
+0000236720 00000 n 
+0000236871 00000 n 
+0000237022 00000 n 
+0000237170 00000 n 
+0000237318 00000 n 
+0000237465 00000 n 
+0000237611 00000 n 
+0000237757 00000 n 
+0000237903 00000 n 
+0000238057 00000 n 
+0000238211 00000 n 
+0000238361 00000 n 
+0000238510 00000 n 
+0000238657 00000 n 
+0000238803 00000 n 
+0000238949 00000 n 
+0000239094 00000 n 
+0000239241 00000 n 
+0000239387 00000 n 
+0000239539 00000 n 
+0000568880 00000 n 
+0000569006 00000 n 
+0000569258 00000 n 
+0000569509 00000 n 
+0000572515 00000 n 
+0000573017 00000 n 
+0000577721 00000 n 
+0000581625 00000 n 
+0000582636 00000 n 
+0000586630 00000 n 
+0000589627 00000 n 
+0000593663 00000 n 
+0000593979 00000 n 
+0000594104 00000 n 
+0000594293 00000 n 
+0000595437 00000 n 
+0000595690 00000 n 
+0000598388 00000 n 
+0000598576 00000 n 
+0000599900 00000 n 
+0000603190 00000 n 
+0000603316 00000 n 
+0000611539 00000 n 
+0000612109 00000 n 
+0000612235 00000 n 
+0000615894 00000 n 
+0000616020 00000 n 
+0000616272 00000 n 
+0000617033 00000 n 
+0000622067 00000 n 
+0000622826 00000 n 
+0000627597 00000 n 
+0000633557 00000 n 
+0000637540 00000 n 
+0000647918 00000 n 
+0000651967 00000 n 
+0000651335 00000 n 
+0000656989 00000 n 
+0000660470 00000 n 
+0000669934 00000 n 
+0000670059 00000 n 
+0000670246 00000 n 
+0000670878 00000 n 
+0000672982 00000 n 
+0000673234 00000 n 
+0000314294 00000 n 
+0000298738 00000 n 
+0000239870 00000 n 
+0000314231 00000 n 
+0000299720 00000 n 
+0000299868 00000 n 
+0000300016 00000 n 
+0000300170 00000 n 
+0000300324 00000 n 
+0000300476 00000 n 
+0000300628 00000 n 
+0000300779 00000 n 
+0000300930 00000 n 
+0000301081 00000 n 
+0000301232 00000 n 
+0000301379 00000 n 
+0000301526 00000 n 
+0000301677 00000 n 
+0000301827 00000 n 
+0000301979 00000 n 
+0000302130 00000 n 
+0000302282 00000 n 
+0000302433 00000 n 
+0000302591 00000 n 
+0000302748 00000 n 
+0000302895 00000 n 
+0000303042 00000 n 
+0000303193 00000 n 
+0000303345 00000 n 
+0000303498 00000 n 
+0000303651 00000 n 
+0000303811 00000 n 
+0000303970 00000 n 
+0000304130 00000 n 
+0000304289 00000 n 
+0000304452 00000 n 
+0000304614 00000 n 
+0000304778 00000 n 
+0000304941 00000 n 
+0000305101 00000 n 
+0000305260 00000 n 
+0000305425 00000 n 
+0000305589 00000 n 
+0000305756 00000 n 
+0000305922 00000 n 
+0000306077 00000 n 
+0000306232 00000 n 
+0000306380 00000 n 
+0000306527 00000 n 
+0000306682 00000 n 
+0000306836 00000 n 
+0000306990 00000 n 
+0000307143 00000 n 
+0000307298 00000 n 
+0000307452 00000 n 
+0000307610 00000 n 
+0000307768 00000 n 
+0000307926 00000 n 
+0000308083 00000 n 
+0000308239 00000 n 
+0000308395 00000 n 
+0000308557 00000 n 
+0000308718 00000 n 
+0000308869 00000 n 
+0000309021 00000 n 
+0000309172 00000 n 
+0000309322 00000 n 
+0000309472 00000 n 
+0000309621 00000 n 
+0000309768 00000 n 
+0000309914 00000 n 
+0000310061 00000 n 
+0000310207 00000 n 
+0000310355 00000 n 
+0000310503 00000 n 
+0000310653 00000 n 
+0000310803 00000 n 
+0000310963 00000 n 
+0000311122 00000 n 
+0000311282 00000 n 
+0000311441 00000 n 
+0000311598 00000 n 
+0000311754 00000 n 
+0000311901 00000 n 
+0000312047 00000 n 
+0000312193 00000 n 
+0000312339 00000 n 
+0000312496 00000 n 
+0000312653 00000 n 
+0000312808 00000 n 
+0000312963 00000 n 
+0000313121 00000 n 
+0000313279 00000 n 
+0000313437 00000 n 
+0000313595 00000 n 
+0000313756 00000 n 
+0000313917 00000 n 
+0000314074 00000 n 
+0000676316 00000 n 
+0000676442 00000 n 
+0000676693 00000 n 
+0000677703 00000 n 
+0000685610 00000 n 
+0000682340 00000 n 
+0000738552 00000 n 
+0000742175 00000 n 
+0000742364 00000 n 
+0000743313 00000 n 
+0000746981 00000 n 
+0000747421 00000 n 
+0000751265 00000 n 
+0000751642 00000 n 
+0000751831 00000 n 
+0000752018 00000 n 
+0000754556 00000 n 
+0000754745 00000 n 
+0000754934 00000 n 
+0000755186 00000 n 
+0000755374 00000 n 
+0000755563 00000 n 
+0000758849 00000 n 
+0000759292 00000 n 
+0000759544 00000 n 
+0000762936 00000 n 
+0000763125 00000 n 
+0000763442 00000 n 
+0000769400 00000 n 
+0000769589 00000 n 
+0000769778 00000 n 
+0000773242 00000 n 
+0000773745 00000 n 
+0000776925 00000 n 
+0000777177 00000 n 
+0000777744 00000 n 
+0000781763 00000 n 
+0000782078 00000 n 
+0000786104 00000 n 
+0000788134 00000 n 
+0000791266 00000 n 
+0000856972 00000 n 
+0000857161 00000 n 
+0000857858 00000 n 
+0000858299 00000 n 
+0000858800 00000 n 
+0000861361 00000 n 
+0000356921 00000 n 
+0000347890 00000 n 
+0000314410 00000 n 
+0000356858 00000 n 
+0000348512 00000 n 
+0000348671 00000 n 
+0000348831 00000 n 
+0000348989 00000 n 
+0000349148 00000 n 
+0000349312 00000 n 
+0000349476 00000 n 
+0000349623 00000 n 
+0000349770 00000 n 
+0000349923 00000 n 
+0000350077 00000 n 
+0000350241 00000 n 
+0000350406 00000 n 
+0000350556 00000 n 
+0000350707 00000 n 
+0000350857 00000 n 
+0000351008 00000 n 
+0000351166 00000 n 
+0000351325 00000 n 
+0000351494 00000 n 
+0000351664 00000 n 
+0000351833 00000 n 
+0000352003 00000 n 
+0000352169 00000 n 
+0000352336 00000 n 
+0000352502 00000 n 
+0000352669 00000 n 
+0000352814 00000 n 
+0000352960 00000 n 
+0000353109 00000 n 
+0000353259 00000 n 
+0000353408 00000 n 
+0000353558 00000 n 
+0000353707 00000 n 
+0000353857 00000 n 
+0000354006 00000 n 
+0000354156 00000 n 
+0000354305 00000 n 
+0000354455 00000 n 
+0000354604 00000 n 
+0000354754 00000 n 
+0000354902 00000 n 
+0000355051 00000 n 
+0000355200 00000 n 
+0000355350 00000 n 
+0000355499 00000 n 
+0000355649 00000 n 
+0000355798 00000 n 
+0000355948 00000 n 
+0000356098 00000 n 
+0000356249 00000 n 
+0000356401 00000 n 
+0000356555 00000 n 
+0000356706 00000 n 
+0000944413 00000 n 
+0000861989 00000 n 
+0000864708 00000 n 
+0000865213 00000 n 
+0000869172 00000 n 
+0000871986 00000 n 
+0000872366 00000 n 
+0000876223 00000 n 
+0000876474 00000 n 
+0000878437 00000 n 
+0000881051 00000 n 
+0000881176 00000 n 
+0000882311 00000 n 
+0000887694 00000 n 
+0000893789 00000 n 
+0000894103 00000 n 
+0000894416 00000 n 
+0000898497 00000 n 
+0000898748 00000 n 
+0000902744 00000 n 
+0000907980 00000 n 
+0000908295 00000 n 
+0000908546 00000 n 
+0000911671 00000 n 
+0000911859 00000 n 
+0000912048 00000 n 
+0000912364 00000 n 
+0000916370 00000 n 
+0000367946 00000 n 
+0000365133 00000 n 
+0000357037 00000 n 
+0000367759 00000 n 
+0000365395 00000 n 
+0000365552 00000 n 
+0000365709 00000 n 
+0000365879 00000 n 
+0000366049 00000 n 
+0000366224 00000 n 
+0000366399 00000 n 
+0000366567 00000 n 
+0000366735 00000 n 
+0000366906 00000 n 
+0000367077 00000 n 
+0000367246 00000 n 
+0000367416 00000 n 
+0000367587 00000 n 
+0000685926 00000 n 
+0000598955 00000 n 
+0000599333 00000 n 
+0000600089 00000 n 
+0000612486 00000 n 
+0000868287 00000 n 
+0000868667 00000 n 
+0000372884 00000 n 
+0000370635 00000 n 
+0000368048 00000 n 
+0000371178 00000 n 
+0000371241 00000 n 
+0000371304 00000 n 
+0000370780 00000 n 
+0000371367 00000 n 
+0000371555 00000 n 
+0000371618 00000 n 
+0000371681 00000 n 
+0000371869 00000 n 
+0000371932 00000 n 
+0000371994 00000 n 
+0000372058 00000 n 
+0000372122 00000 n 
+0000372185 00000 n 
+0000372248 00000 n 
+0000372312 00000 n 
+0000372375 00000 n 
+0000372439 00000 n 
+0000372503 00000 n 
+0000372567 00000 n 
+0000372631 00000 n 
+0000372694 00000 n 
+0000372757 00000 n 
+0000372820 00000 n 
+0000378697 00000 n 
+0000375098 00000 n 
+0000373000 00000 n 
+0000375222 00000 n 
+0000375284 00000 n 
+0000375347 00000 n 
+0000375536 00000 n 
+0000375599 00000 n 
+0000375662 00000 n 
+0000375725 00000 n 
+0000375787 00000 n 
+0000375850 00000 n 
+0000375913 00000 n 
+0000375976 00000 n 
+0000376040 00000 n 
+0000376103 00000 n 
+0000376165 00000 n 
+0000376228 00000 n 
+0000376292 00000 n 
+0000376355 00000 n 
+0000376418 00000 n 
+0000376481 00000 n 
+0000376545 00000 n 
+0000376608 00000 n 
+0000376671 00000 n 
+0000376734 00000 n 
+0000376798 00000 n 
+0000376861 00000 n 
+0000376924 00000 n 
+0000376987 00000 n 
+0000377051 00000 n 
+0000377114 00000 n 
+0000377176 00000 n 
+0000377238 00000 n 
+0000377302 00000 n 
+0000377365 00000 n 
+0000377428 00000 n 
+0000377490 00000 n 
+0000377554 00000 n 
+0000377618 00000 n 
+0000377682 00000 n 
+0000377746 00000 n 
+0000377810 00000 n 
+0000377874 00000 n 
+0000377938 00000 n 
+0000378002 00000 n 
+0000378066 00000 n 
+0000378129 00000 n 
+0000378193 00000 n 
+0000378257 00000 n 
+0000378320 00000 n 
+0000378508 00000 n 
+0000378571 00000 n 
+0000378634 00000 n 
+0000380678 00000 n 
+0000380186 00000 n 
+0000378813 00000 n 
+0000380489 00000 n 
 0000001895 00000 f 
-0000944012 00000 n 
-0000380328 00000 n 
-0000380549 00000 n 
-0000380612 00000 n 
-0000922626 00000 n 
-0000386602 00000 n 
-0000383314 00000 n 
-0000380819 00000 n 
-0000385026 00000 n 
-0000385089 00000 n 
-0000385152 00000 n 
+0000943727 00000 n 
+0000380331 00000 n 
+0000380552 00000 n 
+0000380615 00000 n 
+0000922341 00000 n 
+0000386605 00000 n 
+0000383317 00000 n 
+0000380822 00000 n 
+0000385029 00000 n 
+0000385092 00000 n 
+0000385155 00000 n 
 0000002142 00000 f 
-0000943912 00000 n 
-0000385216 00000 n 
-0000383522 00000 n 
-0000383677 00000 n 
-0000385279 00000 n 
-0000385341 00000 n 
-0000385404 00000 n 
-0000385467 00000 n 
-0000385530 00000 n 
-0000385594 00000 n 
-0000385656 00000 n 
-0000385719 00000 n 
-0000385782 00000 n 
-0000383830 00000 n 
-0000385845 00000 n 
-0000383983 00000 n 
-0000385908 00000 n 
-0000384142 00000 n 
-0000385971 00000 n 
-0000384302 00000 n 
-0000386034 00000 n 
-0000384460 00000 n 
-0000386097 00000 n 
-0000384622 00000 n 
-0000386160 00000 n 
-0000386348 00000 n 
-0000386411 00000 n 
-0000386475 00000 n 
-0000386538 00000 n 
-0000390914 00000 n 
-0000388788 00000 n 
-0000386746 00000 n 
-0000389210 00000 n 
-0000389398 00000 n 
-0000389461 00000 n 
-0000389525 00000 n 
-0000389588 00000 n 
-0000389652 00000 n 
-0000389715 00000 n 
-0000389777 00000 n 
-0000389841 00000 n 
-0000389905 00000 n 
-0000390092 00000 n 
-0000390155 00000 n 
-0000390219 00000 n 
-0000390282 00000 n 
-0000390346 00000 n 
-0000390534 00000 n 
-0000390597 00000 n 
-0000388933 00000 n 
-0000390660 00000 n 
-0000390724 00000 n 
-0000390787 00000 n 
-0000944823 00000 n 
-0000923003 00000 n 
-0000396999 00000 n 
-0000394198 00000 n 
-0000391044 00000 n 
-0000394911 00000 n 
-0000394974 00000 n 
-0000395038 00000 n 
-0000395102 00000 n 
-0000395166 00000 n 
-0000395229 00000 n 
-0000395293 00000 n 
-0000395357 00000 n 
-0000395421 00000 n 
-0000395484 00000 n 
-0000395672 00000 n 
-0000395734 00000 n 
-0000395798 00000 n 
-0000394361 00000 n 
-0000395862 00000 n 
-0000395925 00000 n 
-0000395989 00000 n 
-0000396052 00000 n 
-0000396115 00000 n 
-0000396178 00000 n 
-0000396241 00000 n 
-0000396304 00000 n 
-0000394518 00000 n 
-0000394680 00000 n 
-0000396367 00000 n 
-0000396430 00000 n 
-0000396493 00000 n 
-0000396556 00000 n 
-0000396619 00000 n 
-0000396682 00000 n 
-0000396745 00000 n 
-0000396809 00000 n 
-0000396873 00000 n 
-0000396936 00000 n 
-0000404057 00000 n 
-0000399310 00000 n 
-0000397143 00000 n 
-0000401037 00000 n 
-0000401101 00000 n 
-0000401164 00000 n 
-0000401227 00000 n 
-0000401291 00000 n 
-0000401354 00000 n 
-0000401417 00000 n 
-0000401480 00000 n 
-0000401543 00000 n 
-0000401606 00000 n 
-0000401669 00000 n 
-0000401732 00000 n 
-0000401795 00000 n 
-0000401857 00000 n 
-0000401919 00000 n 
-0000401982 00000 n 
-0000399527 00000 n 
-0000402045 00000 n 
-0000402107 00000 n 
-0000402170 00000 n 
-0000402233 00000 n 
-0000402296 00000 n 
-0000402359 00000 n 
-0000402422 00000 n 
-0000402485 00000 n 
-0000399694 00000 n 
-0000402548 00000 n 
-0000402611 00000 n 
-0000402674 00000 n 
-0000402737 00000 n 
-0000402800 00000 n 
-0000402863 00000 n 
-0000402926 00000 n 
-0000402990 00000 n 
-0000403053 00000 n 
-0000399861 00000 n 
-0000403115 00000 n 
-0000403178 00000 n 
-0000400021 00000 n 
-0000403241 00000 n 
-0000403303 00000 n 
-0000400189 00000 n 
-0000403366 00000 n 
-0000403429 00000 n 
-0000400356 00000 n 
-0000403492 00000 n 
-0000403555 00000 n 
-0000400528 00000 n 
-0000403618 00000 n 
-0000403681 00000 n 
-0000400697 00000 n 
-0000403744 00000 n 
-0000403807 00000 n 
-0000400867 00000 n 
-0000403994 00000 n 
-0000408120 00000 n 
-0000406046 00000 n 
-0000404187 00000 n 
-0000406232 00000 n 
-0000406420 00000 n 
-0000406608 00000 n 
-0000406671 00000 n 
-0000406734 00000 n 
-0000406797 00000 n 
-0000406860 00000 n 
-0000406924 00000 n 
-0000406987 00000 n 
-0000407050 00000 n 
-0000407114 00000 n 
-0000407302 00000 n 
-0000407490 00000 n 
-0000407678 00000 n 
-0000407866 00000 n 
-0000407929 00000 n 
-0000407993 00000 n 
-0000412671 00000 n 
-0000410614 00000 n 
-0000408250 00000 n 
-0000410911 00000 n 
-0000410974 00000 n 
-0000411099 00000 n 
-0000411162 00000 n 
-0000411289 00000 n 
-0000411476 00000 n 
-0000411539 00000 n 
-0000411602 00000 n 
-0000411664 00000 n 
-0000411727 00000 n 
-0000411916 00000 n 
-0000411979 00000 n 
-0000410759 00000 n 
-0000412169 00000 n 
-0000412232 00000 n 
-0000412294 00000 n 
-0000412356 00000 n 
-0000412418 00000 n 
-0000412480 00000 n 
-0000412543 00000 n 
-0000412607 00000 n 
-0000417476 00000 n 
-0000415114 00000 n 
-0000412801 00000 n 
-0000415899 00000 n 
-0000415962 00000 n 
-0000416025 00000 n 
-0000416089 00000 n 
-0000416151 00000 n 
-0000416341 00000 n 
-0000415286 00000 n 
-0000415435 00000 n 
-0000415589 00000 n 
-0000416530 00000 n 
-0000416593 00000 n 
-0000415741 00000 n 
-0000416656 00000 n 
-0000416782 00000 n 
-0000416845 00000 n 
-0000416909 00000 n 
-0000416972 00000 n 
-0000417035 00000 n 
-0000417098 00000 n 
-0000417161 00000 n 
-0000417224 00000 n 
-0000417288 00000 n 
-0000417351 00000 n 
-0000417414 00000 n 
-0000422585 00000 n 
-0000419952 00000 n 
-0000417620 00000 n 
-0000420252 00000 n 
-0000420377 00000 n 
-0000420440 00000 n 
-0000420503 00000 n 
-0000420566 00000 n 
-0000420629 00000 n 
-0000420692 00000 n 
-0000420755 00000 n 
-0000420818 00000 n 
-0000420881 00000 n 
-0000421007 00000 n 
-0000421070 00000 n 
-0000421133 00000 n 
-0000421197 00000 n 
-0000421260 00000 n 
-0000421322 00000 n 
-0000421385 00000 n 
-0000421448 00000 n 
-0000421511 00000 n 
-0000421636 00000 n 
-0000421699 00000 n 
-0000421763 00000 n 
+0000943627 00000 n 
+0000385219 00000 n 
+0000383525 00000 n 
+0000383680 00000 n 
+0000385282 00000 n 
+0000385344 00000 n 
+0000385407 00000 n 
+0000385470 00000 n 
+0000385533 00000 n 
+0000385597 00000 n 
+0000385659 00000 n 
+0000385722 00000 n 
+0000385785 00000 n 
+0000383833 00000 n 
+0000385848 00000 n 
+0000383986 00000 n 
+0000385911 00000 n 
+0000384145 00000 n 
+0000385974 00000 n 
+0000384305 00000 n 
+0000386037 00000 n 
+0000384463 00000 n 
+0000386100 00000 n 
+0000384625 00000 n 
+0000386163 00000 n 
+0000386351 00000 n 
+0000386414 00000 n 
+0000386478 00000 n 
+0000386541 00000 n 
+0000390916 00000 n 
+0000388790 00000 n 
+0000386749 00000 n 
+0000389212 00000 n 
+0000389400 00000 n 
+0000389463 00000 n 
+0000389527 00000 n 
+0000389590 00000 n 
+0000389654 00000 n 
+0000389717 00000 n 
+0000389779 00000 n 
+0000389843 00000 n 
+0000389907 00000 n 
+0000390094 00000 n 
+0000390157 00000 n 
+0000390221 00000 n 
+0000390284 00000 n 
+0000390348 00000 n 
+0000390536 00000 n 
+0000390599 00000 n 
+0000388935 00000 n 
+0000390662 00000 n 
+0000390726 00000 n 
+0000390789 00000 n 
+0000944538 00000 n 
+0000922718 00000 n 
+0000397001 00000 n 
+0000394200 00000 n 
+0000391046 00000 n 
+0000394913 00000 n 
+0000394976 00000 n 
+0000395040 00000 n 
+0000395104 00000 n 
+0000395168 00000 n 
+0000395231 00000 n 
+0000395295 00000 n 
+0000395359 00000 n 
+0000395423 00000 n 
+0000395486 00000 n 
+0000395674 00000 n 
+0000395736 00000 n 
+0000395800 00000 n 
+0000394363 00000 n 
+0000395864 00000 n 
+0000395927 00000 n 
+0000395991 00000 n 
+0000396054 00000 n 
+0000396117 00000 n 
+0000396180 00000 n 
+0000396243 00000 n 
+0000396306 00000 n 
+0000394520 00000 n 
+0000394682 00000 n 
+0000396369 00000 n 
+0000396432 00000 n 
+0000396495 00000 n 
+0000396558 00000 n 
+0000396621 00000 n 
+0000396684 00000 n 
+0000396747 00000 n 
+0000396811 00000 n 
+0000396875 00000 n 
+0000396938 00000 n 
+0000404059 00000 n 
+0000399312 00000 n 
+0000397145 00000 n 
+0000401039 00000 n 
+0000401103 00000 n 
+0000401166 00000 n 
+0000401229 00000 n 
+0000401293 00000 n 
+0000401356 00000 n 
+0000401419 00000 n 
+0000401482 00000 n 
+0000401545 00000 n 
+0000401608 00000 n 
+0000401671 00000 n 
+0000401734 00000 n 
+0000401797 00000 n 
+0000401859 00000 n 
+0000401921 00000 n 
+0000401984 00000 n 
+0000399529 00000 n 
+0000402047 00000 n 
+0000402109 00000 n 
+0000402172 00000 n 
+0000402235 00000 n 
+0000402298 00000 n 
+0000402361 00000 n 
+0000402424 00000 n 
+0000402487 00000 n 
+0000399696 00000 n 
+0000402550 00000 n 
+0000402613 00000 n 
+0000402676 00000 n 
+0000402739 00000 n 
+0000402802 00000 n 
+0000402865 00000 n 
+0000402928 00000 n 
+0000402992 00000 n 
+0000403055 00000 n 
+0000399863 00000 n 
+0000403117 00000 n 
+0000403180 00000 n 
+0000400023 00000 n 
+0000403243 00000 n 
+0000403305 00000 n 
+0000400191 00000 n 
+0000403368 00000 n 
+0000403431 00000 n 
+0000400358 00000 n 
+0000403494 00000 n 
+0000403557 00000 n 
+0000400530 00000 n 
+0000403620 00000 n 
+0000403683 00000 n 
+0000400699 00000 n 
+0000403746 00000 n 
+0000403809 00000 n 
+0000400869 00000 n 
+0000403996 00000 n 
+0000408122 00000 n 
+0000406048 00000 n 
+0000404189 00000 n 
+0000406234 00000 n 
+0000406422 00000 n 
+0000406610 00000 n 
+0000406673 00000 n 
+0000406736 00000 n 
+0000406799 00000 n 
+0000406862 00000 n 
+0000406926 00000 n 
+0000406989 00000 n 
+0000407052 00000 n 
+0000407116 00000 n 
+0000407304 00000 n 
+0000407492 00000 n 
+0000407680 00000 n 
+0000407868 00000 n 
+0000407931 00000 n 
+0000407995 00000 n 
+0000412673 00000 n 
+0000410616 00000 n 
+0000408252 00000 n 
+0000410913 00000 n 
+0000410976 00000 n 
+0000411101 00000 n 
+0000411164 00000 n 
+0000411291 00000 n 
+0000411478 00000 n 
+0000411541 00000 n 
+0000411604 00000 n 
+0000411666 00000 n 
+0000411729 00000 n 
+0000411918 00000 n 
+0000411981 00000 n 
+0000410761 00000 n 
+0000412171 00000 n 
+0000412234 00000 n 
+0000412296 00000 n 
+0000412358 00000 n 
+0000412420 00000 n 
+0000412482 00000 n 
+0000412545 00000 n 
+0000412609 00000 n 
+0000417478 00000 n 
+0000415116 00000 n 
+0000412803 00000 n 
+0000415901 00000 n 
+0000415964 00000 n 
+0000416027 00000 n 
+0000416091 00000 n 
+0000416153 00000 n 
+0000416343 00000 n 
+0000415288 00000 n 
+0000415437 00000 n 
+0000415591 00000 n 
+0000416532 00000 n 
+0000416595 00000 n 
+0000415743 00000 n 
+0000416658 00000 n 
+0000416784 00000 n 
+0000416847 00000 n 
+0000416911 00000 n 
+0000416974 00000 n 
+0000417037 00000 n 
+0000417100 00000 n 
+0000417163 00000 n 
+0000417226 00000 n 
+0000417290 00000 n 
+0000417353 00000 n 
+0000417416 00000 n 
+0000422587 00000 n 
+0000419954 00000 n 
+0000417622 00000 n 
+0000420254 00000 n 
+0000420379 00000 n 
+0000420442 00000 n 
+0000420505 00000 n 
+0000420568 00000 n 
+0000420631 00000 n 
+0000420694 00000 n 
+0000420757 00000 n 
+0000420820 00000 n 
+0000420883 00000 n 
+0000421009 00000 n 
+0000421072 00000 n 
+0000421135 00000 n 
+0000421199 00000 n 
+0000421262 00000 n 
+0000421324 00000 n 
+0000421387 00000 n 
+0000421450 00000 n 
+0000421513 00000 n 
+0000421638 00000 n 
+0000421701 00000 n 
+0000421765 00000 n 
 0000002334 00000 f 
-0000943814 00000 n 
-0000421827 00000 n 
-0000420097 00000 n 
-0000421891 00000 n 
-0000421954 00000 n 
-0000422018 00000 n 
-0000422082 00000 n 
-0000422146 00000 n 
-0000422208 00000 n 
-0000422270 00000 n 
-0000422332 00000 n 
-0000422396 00000 n 
-0000422459 00000 n 
-0000422522 00000 n 
-0000944948 00000 n 
-0000428107 00000 n 
-0000425028 00000 n 
-0000422757 00000 n 
-0000425328 00000 n 
-0000425391 00000 n 
-0000425453 00000 n 
-0000425517 00000 n 
-0000425581 00000 n 
-0000425644 00000 n 
-0000425708 00000 n 
-0000425772 00000 n 
-0000425835 00000 n 
-0000425898 00000 n 
-0000425962 00000 n 
-0000426152 00000 n 
-0000426215 00000 n 
-0000426278 00000 n 
-0000426404 00000 n 
-0000426467 00000 n 
-0000426531 00000 n 
-0000426595 00000 n 
-0000425173 00000 n 
-0000426659 00000 n 
-0000426722 00000 n 
-0000426785 00000 n 
-0000426847 00000 n 
-0000426910 00000 n 
-0000426973 00000 n 
-0000427036 00000 n 
-0000427099 00000 n 
-0000427163 00000 n 
-0000427227 00000 n 
-0000427353 00000 n 
-0000427416 00000 n 
-0000427479 00000 n 
-0000427541 00000 n 
-0000427604 00000 n 
-0000427667 00000 n 
-0000427730 00000 n 
-0000427793 00000 n 
-0000427857 00000 n 
-0000427921 00000 n 
-0000427985 00000 n 
-0000428046 00000 n 
-0000433346 00000 n 
-0000430884 00000 n 
-0000428279 00000 n 
-0000431198 00000 n 
-0000431261 00000 n 
-0000431324 00000 n 
-0000431387 00000 n 
-0000431450 00000 n 
-0000431513 00000 n 
-0000431577 00000 n 
-0000431641 00000 n 
-0000431830 00000 n 
-0000431893 00000 n 
-0000431956 00000 n 
-0000432019 00000 n 
-0000432082 00000 n 
-0000432145 00000 n 
-0000432335 00000 n 
-0000431029 00000 n 
-0000432524 00000 n 
-0000432587 00000 n 
-0000432650 00000 n 
-0000432713 00000 n 
-0000432777 00000 n 
-0000432841 00000 n 
-0000432904 00000 n 
-0000432967 00000 n 
-0000433031 00000 n 
-0000433094 00000 n 
-0000433157 00000 n 
-0000433221 00000 n 
-0000433284 00000 n 
-0000439312 00000 n 
-0000436590 00000 n 
-0000433462 00000 n 
-0000436714 00000 n 
-0000436777 00000 n 
-0000436839 00000 n 
-0000436902 00000 n 
-0000436966 00000 n 
-0000437029 00000 n 
-0000437092 00000 n 
-0000437156 00000 n 
-0000437219 00000 n 
-0000437283 00000 n 
-0000437347 00000 n 
-0000437411 00000 n 
-0000437474 00000 n 
-0000437538 00000 n 
-0000437602 00000 n 
-0000437665 00000 n 
-0000437853 00000 n 
-0000437916 00000 n 
-0000437980 00000 n 
-0000438044 00000 n 
-0000438108 00000 n 
-0000438172 00000 n 
-0000438236 00000 n 
-0000438300 00000 n 
-0000438364 00000 n 
-0000438428 00000 n 
-0000438490 00000 n 
-0000438552 00000 n 
-0000438616 00000 n 
-0000438680 00000 n 
-0000438743 00000 n 
-0000438807 00000 n 
-0000438870 00000 n 
-0000438933 00000 n 
-0000438996 00000 n 
-0000439058 00000 n 
-0000439121 00000 n 
-0000439184 00000 n 
-0000439248 00000 n 
-0000444475 00000 n 
-0000441936 00000 n 
-0000439470 00000 n 
-0000442573 00000 n 
-0000442636 00000 n 
-0000442699 00000 n 
-0000442763 00000 n 
-0000442099 00000 n 
-0000442953 00000 n 
-0000443016 00000 n 
-0000442268 00000 n 
-0000443079 00000 n 
-0000443142 00000 n 
-0000442421 00000 n 
-0000443206 00000 n 
-0000443269 00000 n 
-0000443332 00000 n 
-0000443395 00000 n 
-0000443456 00000 n 
-0000443520 00000 n 
-0000443584 00000 n 
-0000443648 00000 n 
-0000443712 00000 n 
-0000443775 00000 n 
-0000443838 00000 n 
-0000443901 00000 n 
-0000443965 00000 n 
-0000444028 00000 n 
-0000444092 00000 n 
-0000444156 00000 n 
-0000444220 00000 n 
-0000444284 00000 n 
-0000444348 00000 n 
-0000940844 00000 n 
-0000450369 00000 n 
-0000447153 00000 n 
-0000444605 00000 n 
-0000447783 00000 n 
-0000447909 00000 n 
-0000447972 00000 n 
-0000447316 00000 n 
-0000448036 00000 n 
-0000448099 00000 n 
-0000447475 00000 n 
-0000448163 00000 n 
-0000448227 00000 n 
-0000448291 00000 n 
-0000448354 00000 n 
-0000448416 00000 n 
-0000448479 00000 n 
-0000448543 00000 n 
-0000448606 00000 n 
-0000447629 00000 n 
-0000448795 00000 n 
-0000448983 00000 n 
-0000449046 00000 n 
-0000449109 00000 n 
-0000449172 00000 n 
+0000943529 00000 n 
+0000421829 00000 n 
+0000420099 00000 n 
+0000421893 00000 n 
+0000421956 00000 n 
+0000422020 00000 n 
+0000422084 00000 n 
+0000422148 00000 n 
+0000422210 00000 n 
+0000422272 00000 n 
+0000422334 00000 n 
+0000422398 00000 n 
+0000422461 00000 n 
+0000422524 00000 n 
+0000944663 00000 n 
+0000428109 00000 n 
+0000425030 00000 n 
+0000422759 00000 n 
+0000425330 00000 n 
+0000425393 00000 n 
+0000425455 00000 n 
+0000425519 00000 n 
+0000425583 00000 n 
+0000425646 00000 n 
+0000425710 00000 n 
+0000425774 00000 n 
+0000425837 00000 n 
+0000425900 00000 n 
+0000425964 00000 n 
+0000426154 00000 n 
+0000426217 00000 n 
+0000426280 00000 n 
+0000426406 00000 n 
+0000426469 00000 n 
+0000426533 00000 n 
+0000426597 00000 n 
+0000425175 00000 n 
+0000426661 00000 n 
+0000426724 00000 n 
+0000426787 00000 n 
+0000426849 00000 n 
+0000426912 00000 n 
+0000426975 00000 n 
+0000427038 00000 n 
+0000427101 00000 n 
+0000427165 00000 n 
+0000427229 00000 n 
+0000427355 00000 n 
+0000427418 00000 n 
+0000427481 00000 n 
+0000427543 00000 n 
+0000427606 00000 n 
+0000427669 00000 n 
+0000427732 00000 n 
+0000427795 00000 n 
+0000427859 00000 n 
+0000427923 00000 n 
+0000427987 00000 n 
+0000428048 00000 n 
+0000433348 00000 n 
+0000430886 00000 n 
+0000428281 00000 n 
+0000431200 00000 n 
+0000431263 00000 n 
+0000431326 00000 n 
+0000431389 00000 n 
+0000431452 00000 n 
+0000431515 00000 n 
+0000431579 00000 n 
+0000431643 00000 n 
+0000431832 00000 n 
+0000431895 00000 n 
+0000431958 00000 n 
+0000432021 00000 n 
+0000432084 00000 n 
+0000432147 00000 n 
+0000432337 00000 n 
+0000431031 00000 n 
+0000432526 00000 n 
+0000432589 00000 n 
+0000432652 00000 n 
+0000432715 00000 n 
+0000432779 00000 n 
+0000432843 00000 n 
+0000432906 00000 n 
+0000432969 00000 n 
+0000433033 00000 n 
+0000433096 00000 n 
+0000433159 00000 n 
+0000433223 00000 n 
+0000433286 00000 n 
+0000439314 00000 n 
+0000436592 00000 n 
+0000433464 00000 n 
+0000436716 00000 n 
+0000436779 00000 n 
+0000436841 00000 n 
+0000436904 00000 n 
+0000436968 00000 n 
+0000437031 00000 n 
+0000437094 00000 n 
+0000437158 00000 n 
+0000437221 00000 n 
+0000437285 00000 n 
+0000437349 00000 n 
+0000437413 00000 n 
+0000437476 00000 n 
+0000437540 00000 n 
+0000437604 00000 n 
+0000437667 00000 n 
+0000437855 00000 n 
+0000437918 00000 n 
+0000437982 00000 n 
+0000438046 00000 n 
+0000438110 00000 n 
+0000438174 00000 n 
+0000438238 00000 n 
+0000438302 00000 n 
+0000438366 00000 n 
+0000438430 00000 n 
+0000438492 00000 n 
+0000438554 00000 n 
+0000438618 00000 n 
+0000438682 00000 n 
+0000438745 00000 n 
+0000438809 00000 n 
+0000438872 00000 n 
+0000438935 00000 n 
+0000438998 00000 n 
+0000439060 00000 n 
+0000439123 00000 n 
+0000439186 00000 n 
+0000439250 00000 n 
+0000444477 00000 n 
+0000441938 00000 n 
+0000439472 00000 n 
+0000442575 00000 n 
+0000442638 00000 n 
+0000442701 00000 n 
+0000442765 00000 n 
+0000442101 00000 n 
+0000442955 00000 n 
+0000443018 00000 n 
+0000442270 00000 n 
+0000443081 00000 n 
+0000443144 00000 n 
+0000442423 00000 n 
+0000443208 00000 n 
+0000443271 00000 n 
+0000443334 00000 n 
+0000443397 00000 n 
+0000443458 00000 n 
+0000443522 00000 n 
+0000443586 00000 n 
+0000443650 00000 n 
+0000443714 00000 n 
+0000443777 00000 n 
+0000443840 00000 n 
+0000443903 00000 n 
+0000443967 00000 n 
+0000444030 00000 n 
+0000444094 00000 n 
+0000444158 00000 n 
+0000444222 00000 n 
+0000444286 00000 n 
+0000444350 00000 n 
+0000940559 00000 n 
+0000450371 00000 n 
+0000447155 00000 n 
+0000444607 00000 n 
+0000447785 00000 n 
+0000447911 00000 n 
+0000447974 00000 n 
+0000447318 00000 n 
+0000448038 00000 n 
+0000448101 00000 n 
+0000447477 00000 n 
+0000448165 00000 n 
+0000448229 00000 n 
+0000448293 00000 n 
+0000448356 00000 n 
+0000448418 00000 n 
+0000448481 00000 n 
+0000448545 00000 n 
+0000448608 00000 n 
+0000447631 00000 n 
+0000448797 00000 n 
+0000448985 00000 n 
+0000449048 00000 n 
+0000449111 00000 n 
+0000449174 00000 n 
 0000002517 00000 f 
-0000943719 00000 n 
-0000449235 00000 n 
-0000449298 00000 n 
-0000449362 00000 n 
-0000449425 00000 n 
-0000449488 00000 n 
-0000449551 00000 n 
-0000449614 00000 n 
-0000449803 00000 n 
-0000449866 00000 n 
-0000449929 00000 n 
-0000449992 00000 n 
-0000450055 00000 n 
-0000450118 00000 n 
-0000450182 00000 n 
-0000450245 00000 n 
-0000450307 00000 n 
-0000454616 00000 n 
-0000452745 00000 n 
-0000450527 00000 n 
-0000453040 00000 n 
-0000453103 00000 n 
-0000453166 00000 n 
-0000453228 00000 n 
-0000453292 00000 n 
-0000453355 00000 n 
-0000453544 00000 n 
-0000453607 00000 n 
-0000453670 00000 n 
-0000453733 00000 n 
-0000453796 00000 n 
-0000453859 00000 n 
-0000454049 00000 n 
-0000452890 00000 n 
-0000454112 00000 n 
-0000454175 00000 n 
-0000454238 00000 n 
-0000454301 00000 n 
-0000454364 00000 n 
-0000454426 00000 n 
-0000454489 00000 n 
-0000945073 00000 n 
-0000460337 00000 n 
-0000457690 00000 n 
-0000454746 00000 n 
-0000457992 00000 n 
-0000458118 00000 n 
-0000458181 00000 n 
-0000458244 00000 n 
-0000458308 00000 n 
-0000458372 00000 n 
-0000458435 00000 n 
-0000458498 00000 n 
-0000458562 00000 n 
-0000458626 00000 n 
-0000458689 00000 n 
-0000458752 00000 n 
-0000458941 00000 n 
-0000459004 00000 n 
-0000459067 00000 n 
-0000459130 00000 n 
-0000459194 00000 n 
-0000457835 00000 n 
-0000459258 00000 n 
-0000459322 00000 n 
-0000459385 00000 n 
-0000459448 00000 n 
-0000459511 00000 n 
-0000459574 00000 n 
-0000459637 00000 n 
-0000459701 00000 n 
-0000459765 00000 n 
-0000459829 00000 n 
-0000459893 00000 n 
-0000459957 00000 n 
-0000460020 00000 n 
-0000460083 00000 n 
-0000460146 00000 n 
-0000460209 00000 n 
-0000460273 00000 n 
-0000924074 00000 n 
-0000464573 00000 n 
-0000462176 00000 n 
-0000460481 00000 n 
-0000462300 00000 n 
-0000462363 00000 n 
-0000462426 00000 n 
-0000462489 00000 n 
-0000462552 00000 n 
-0000462614 00000 n 
-0000462678 00000 n 
-0000462740 00000 n 
-0000462803 00000 n 
-0000462866 00000 n 
-0000462929 00000 n 
-0000462993 00000 n 
-0000463056 00000 n 
-0000463119 00000 n 
-0000463182 00000 n 
-0000463245 00000 n 
-0000463309 00000 n 
-0000463372 00000 n 
-0000463435 00000 n 
-0000463498 00000 n 
-0000463561 00000 n 
-0000463750 00000 n 
-0000463813 00000 n 
-0000463877 00000 n 
-0000463941 00000 n 
-0000464004 00000 n 
-0000464068 00000 n 
-0000464131 00000 n 
-0000464194 00000 n 
-0000464258 00000 n 
-0000464322 00000 n 
-0000464385 00000 n 
-0000464448 00000 n 
-0000469174 00000 n 
-0000467003 00000 n 
-0000464689 00000 n 
-0000467472 00000 n 
-0000467598 00000 n 
-0000467661 00000 n 
-0000467724 00000 n 
-0000467914 00000 n 
-0000468103 00000 n 
-0000468166 00000 n 
-0000468230 00000 n 
-0000468420 00000 n 
-0000467157 00000 n 
-0000467320 00000 n 
-0000468483 00000 n 
-0000468546 00000 n 
-0000468610 00000 n 
-0000468673 00000 n 
-0000468735 00000 n 
-0000468797 00000 n 
-0000468860 00000 n 
-0000468923 00000 n 
-0000468985 00000 n 
-0000469048 00000 n 
-0000932705 00000 n 
-0000472693 00000 n 
-0000471212 00000 n 
-0000469318 00000 n 
-0000471683 00000 n 
-0000471809 00000 n 
-0000471872 00000 n 
-0000471936 00000 n 
-0000471999 00000 n 
-0000472062 00000 n 
-0000472125 00000 n 
-0000472314 00000 n 
-0000471366 00000 n 
-0000471535 00000 n 
-0000472377 00000 n 
-0000472440 00000 n 
-0000472503 00000 n 
-0000472566 00000 n 
-0000478435 00000 n 
-0000475419 00000 n 
-0000472823 00000 n 
-0000475717 00000 n 
-0000475843 00000 n 
-0000475906 00000 n 
-0000475969 00000 n 
-0000476033 00000 n 
-0000476096 00000 n 
-0000476160 00000 n 
-0000475564 00000 n 
-0000476223 00000 n 
-0000476286 00000 n 
-0000476349 00000 n 
-0000476413 00000 n 
-0000476477 00000 n 
-0000476541 00000 n 
-0000476605 00000 n 
-0000476669 00000 n 
-0000476733 00000 n 
-0000476797 00000 n 
-0000476860 00000 n 
-0000476924 00000 n 
+0000943434 00000 n 
+0000449237 00000 n 
+0000449300 00000 n 
+0000449364 00000 n 
+0000449427 00000 n 
+0000449490 00000 n 
+0000449553 00000 n 
+0000449616 00000 n 
+0000449805 00000 n 
+0000449868 00000 n 
+0000449931 00000 n 
+0000449994 00000 n 
+0000450057 00000 n 
+0000450120 00000 n 
+0000450184 00000 n 
+0000450247 00000 n 
+0000450309 00000 n 
+0000454618 00000 n 
+0000452747 00000 n 
+0000450529 00000 n 
+0000453042 00000 n 
+0000453105 00000 n 
+0000453168 00000 n 
+0000453230 00000 n 
+0000453294 00000 n 
+0000453357 00000 n 
+0000453546 00000 n 
+0000453609 00000 n 
+0000453672 00000 n 
+0000453735 00000 n 
+0000453798 00000 n 
+0000453861 00000 n 
+0000454051 00000 n 
+0000452892 00000 n 
+0000454114 00000 n 
+0000454177 00000 n 
+0000454240 00000 n 
+0000454303 00000 n 
+0000454366 00000 n 
+0000454428 00000 n 
+0000454491 00000 n 
+0000944788 00000 n 
+0000460339 00000 n 
+0000457692 00000 n 
+0000454748 00000 n 
+0000457994 00000 n 
+0000458120 00000 n 
+0000458183 00000 n 
+0000458246 00000 n 
+0000458310 00000 n 
+0000458374 00000 n 
+0000458437 00000 n 
+0000458500 00000 n 
+0000458564 00000 n 
+0000458628 00000 n 
+0000458691 00000 n 
+0000458754 00000 n 
+0000458943 00000 n 
+0000459006 00000 n 
+0000459069 00000 n 
+0000459132 00000 n 
+0000459196 00000 n 
+0000457837 00000 n 
+0000459260 00000 n 
+0000459324 00000 n 
+0000459387 00000 n 
+0000459450 00000 n 
+0000459513 00000 n 
+0000459576 00000 n 
+0000459639 00000 n 
+0000459703 00000 n 
+0000459767 00000 n 
+0000459831 00000 n 
+0000459895 00000 n 
+0000459959 00000 n 
+0000460022 00000 n 
+0000460085 00000 n 
+0000460148 00000 n 
+0000460211 00000 n 
+0000460275 00000 n 
+0000923789 00000 n 
+0000464575 00000 n 
+0000462178 00000 n 
+0000460483 00000 n 
+0000462302 00000 n 
+0000462365 00000 n 
+0000462428 00000 n 
+0000462491 00000 n 
+0000462554 00000 n 
+0000462616 00000 n 
+0000462680 00000 n 
+0000462742 00000 n 
+0000462805 00000 n 
+0000462868 00000 n 
+0000462931 00000 n 
+0000462995 00000 n 
+0000463058 00000 n 
+0000463121 00000 n 
+0000463184 00000 n 
+0000463247 00000 n 
+0000463311 00000 n 
+0000463374 00000 n 
+0000463437 00000 n 
+0000463500 00000 n 
+0000463563 00000 n 
+0000463752 00000 n 
+0000463815 00000 n 
+0000463879 00000 n 
+0000463943 00000 n 
+0000464006 00000 n 
+0000464070 00000 n 
+0000464133 00000 n 
+0000464196 00000 n 
+0000464260 00000 n 
+0000464324 00000 n 
+0000464387 00000 n 
+0000464450 00000 n 
+0000469176 00000 n 
+0000467005 00000 n 
+0000464691 00000 n 
+0000467474 00000 n 
+0000467600 00000 n 
+0000467663 00000 n 
+0000467726 00000 n 
+0000467916 00000 n 
+0000468105 00000 n 
+0000468168 00000 n 
+0000468232 00000 n 
+0000468422 00000 n 
+0000467159 00000 n 
+0000467322 00000 n 
+0000468485 00000 n 
+0000468548 00000 n 
+0000468612 00000 n 
+0000468675 00000 n 
+0000468737 00000 n 
+0000468799 00000 n 
+0000468862 00000 n 
+0000468925 00000 n 
+0000468987 00000 n 
+0000469050 00000 n 
+0000932420 00000 n 
+0000472695 00000 n 
+0000471214 00000 n 
+0000469320 00000 n 
+0000471685 00000 n 
+0000471811 00000 n 
+0000471874 00000 n 
+0000471938 00000 n 
+0000472001 00000 n 
+0000472064 00000 n 
+0000472127 00000 n 
+0000472316 00000 n 
+0000471368 00000 n 
+0000471537 00000 n 
+0000472379 00000 n 
+0000472442 00000 n 
+0000472505 00000 n 
+0000472568 00000 n 
+0000478437 00000 n 
+0000475421 00000 n 
+0000472825 00000 n 
+0000475719 00000 n 
+0000475845 00000 n 
+0000475908 00000 n 
+0000475971 00000 n 
+0000476035 00000 n 
+0000476098 00000 n 
+0000476162 00000 n 
+0000475566 00000 n 
+0000476225 00000 n 
+0000476288 00000 n 
+0000476351 00000 n 
+0000476415 00000 n 
+0000476479 00000 n 
+0000476543 00000 n 
+0000476607 00000 n 
+0000476671 00000 n 
+0000476735 00000 n 
+0000476799 00000 n 
+0000476862 00000 n 
+0000476926 00000 n 
 0000000000 00000 f 
-0000941831 00000 n 
-0000476987 00000 n 
-0000477050 00000 n 
-0000477112 00000 n 
-0000477175 00000 n 
-0000477365 00000 n 
-0000477428 00000 n 
-0000477491 00000 n 
-0000477554 00000 n 
-0000477617 00000 n 
-0000477680 00000 n 
-0000477742 00000 n 
-0000477805 00000 n 
-0000477868 00000 n 
-0000477931 00000 n 
-0000477994 00000 n 
-0000478057 00000 n 
-0000478120 00000 n 
-0000478183 00000 n 
-0000478246 00000 n 
-0000478309 00000 n 
-0000923632 00000 n 
-0000482049 00000 n 
-0000480487 00000 n 
-0000478607 00000 n 
-0000480788 00000 n 
-0000481040 00000 n 
-0000480632 00000 n 
-0000481228 00000 n 
-0000481291 00000 n 
-0000481354 00000 n 
-0000481418 00000 n 
-0000481482 00000 n 
-0000481546 00000 n 
-0000481735 00000 n 
-0000481861 00000 n 
-0000481923 00000 n 
-0000481986 00000 n 
-0000945198 00000 n 
-0000486316 00000 n 
-0000484169 00000 n 
-0000482193 00000 n 
-0000484293 00000 n 
-0000484419 00000 n 
-0000484482 00000 n 
-0000484546 00000 n 
-0000484609 00000 n 
-0000484735 00000 n 
-0000484798 00000 n 
-0000484861 00000 n 
-0000484925 00000 n 
-0000484989 00000 n 
-0000485052 00000 n 
-0000485115 00000 n 
-0000485179 00000 n 
-0000485243 00000 n 
-0000485306 00000 n 
-0000485370 00000 n 
-0000485433 00000 n 
-0000485496 00000 n 
-0000485559 00000 n 
-0000485749 00000 n 
-0000485812 00000 n 
-0000485875 00000 n 
-0000485938 00000 n 
-0000486001 00000 n 
-0000486064 00000 n 
-0000486127 00000 n 
-0000486190 00000 n 
-0000486253 00000 n 
-0000489975 00000 n 
-0000488147 00000 n 
-0000486488 00000 n 
-0000488271 00000 n 
-0000488334 00000 n 
-0000488397 00000 n 
-0000488460 00000 n 
-0000488523 00000 n 
-0000488586 00000 n 
-0000488776 00000 n 
-0000488964 00000 n 
-0000489027 00000 n 
-0000489090 00000 n 
-0000489153 00000 n 
-0000489217 00000 n 
-0000489281 00000 n 
-0000489344 00000 n 
-0000489407 00000 n 
-0000489470 00000 n 
-0000489534 00000 n 
-0000489598 00000 n 
-0000489787 00000 n 
-0000489849 00000 n 
-0000489912 00000 n 
-0000493672 00000 n 
-0000491899 00000 n 
-0000490105 00000 n 
-0000492023 00000 n 
-0000492086 00000 n 
-0000492149 00000 n 
-0000492213 00000 n 
-0000492277 00000 n 
-0000492341 00000 n 
-0000492405 00000 n 
-0000492468 00000 n 
-0000492531 00000 n 
-0000492593 00000 n 
-0000492656 00000 n 
-0000492720 00000 n 
-0000492783 00000 n 
-0000492846 00000 n 
-0000492909 00000 n 
-0000492973 00000 n 
-0000493037 00000 n 
-0000493100 00000 n 
-0000493163 00000 n 
-0000493226 00000 n 
-0000493290 00000 n 
-0000493354 00000 n 
-0000493417 00000 n 
-0000493480 00000 n 
-0000493544 00000 n 
-0000493608 00000 n 
-0000497729 00000 n 
-0000496025 00000 n 
-0000493788 00000 n 
-0000496340 00000 n 
-0000496403 00000 n 
-0000496467 00000 n 
-0000496531 00000 n 
-0000496720 00000 n 
-0000496909 00000 n 
-0000496972 00000 n 
-0000497035 00000 n 
-0000497098 00000 n 
-0000497161 00000 n 
-0000497224 00000 n 
-0000497287 00000 n 
-0000497476 00000 n 
-0000496170 00000 n 
-0000497539 00000 n 
-0000497602 00000 n 
-0000497665 00000 n 
-0000499704 00000 n 
-0000499008 00000 n 
-0000497887 00000 n 
-0000499132 00000 n 
-0000499195 00000 n 
-0000499258 00000 n 
-0000499322 00000 n 
-0000499386 00000 n 
-0000499450 00000 n 
-0000499513 00000 n 
-0000499576 00000 n 
-0000499640 00000 n 
-0000504424 00000 n 
-0000502281 00000 n 
-0000499848 00000 n 
-0000502405 00000 n 
-0000502720 00000 n 
-0000502783 00000 n 
-0000502845 00000 n 
-0000502907 00000 n 
-0000502970 00000 n 
-0000503033 00000 n 
-0000503096 00000 n 
-0000503159 00000 n 
-0000503222 00000 n 
-0000503285 00000 n 
-0000503348 00000 n 
-0000503412 00000 n 
-0000503476 00000 n 
-0000503540 00000 n 
-0000503603 00000 n 
-0000503666 00000 n 
-0000503729 00000 n 
-0000503792 00000 n 
-0000503855 00000 n 
-0000503917 00000 n 
-0000503981 00000 n 
-0000504044 00000 n 
-0000504107 00000 n 
-0000504170 00000 n 
-0000504233 00000 n 
-0000504297 00000 n 
-0000504360 00000 n 
-0000945323 00000 n 
-0000508702 00000 n 
-0000507005 00000 n 
-0000504540 00000 n 
-0000507129 00000 n 
-0000507192 00000 n 
-0000507255 00000 n 
-0000507318 00000 n 
-0000507381 00000 n 
-0000507444 00000 n 
-0000507507 00000 n 
-0000507570 00000 n 
-0000507634 00000 n 
-0000507696 00000 n 
-0000507759 00000 n 
-0000507822 00000 n 
-0000507885 00000 n 
-0000507948 00000 n 
-0000508011 00000 n 
-0000508073 00000 n 
-0000508137 00000 n 
-0000508200 00000 n 
-0000508263 00000 n 
-0000508326 00000 n 
-0000508388 00000 n 
-0000508451 00000 n 
-0000508514 00000 n 
-0000508576 00000 n 
-0000508639 00000 n 
-0000512445 00000 n 
-0000510937 00000 n 
-0000508832 00000 n 
-0000511061 00000 n 
-0000511124 00000 n 
-0000511187 00000 n 
-0000511250 00000 n 
-0000511313 00000 n 
-0000511376 00000 n 
-0000511439 00000 n 
-0000511502 00000 n 
-0000511564 00000 n 
-0000511627 00000 n 
-0000511690 00000 n 
-0000511754 00000 n 
-0000511816 00000 n 
-0000511879 00000 n 
-0000512194 00000 n 
-0000512257 00000 n 
-0000512319 00000 n 
-0000517917 00000 n 
-0000515467 00000 n 
-0000512561 00000 n 
-0000515591 00000 n 
-0000515842 00000 n 
-0000515905 00000 n 
-0000515968 00000 n 
-0000516029 00000 n 
-0000516092 00000 n 
-0000516155 00000 n 
-0000516217 00000 n 
-0000516280 00000 n 
-0000516343 00000 n 
-0000516406 00000 n 
-0000516595 00000 n 
-0000516658 00000 n 
-0000516721 00000 n 
-0000516785 00000 n 
-0000516849 00000 n 
-0000516912 00000 n 
-0000516975 00000 n 
-0000517038 00000 n 
-0000517101 00000 n 
-0000517164 00000 n 
-0000517227 00000 n 
-0000517290 00000 n 
-0000517353 00000 n 
-0000517416 00000 n 
-0000517479 00000 n 
-0000517542 00000 n 
-0000517605 00000 n 
-0000517668 00000 n 
-0000517731 00000 n 
-0000517790 00000 n 
-0000517854 00000 n 
-0000524243 00000 n 
-0000521111 00000 n 
-0000518075 00000 n 
-0000521411 00000 n 
-0000521474 00000 n 
-0000521536 00000 n 
-0000521599 00000 n 
-0000521663 00000 n 
-0000521725 00000 n 
-0000521789 00000 n 
-0000521852 00000 n 
-0000521915 00000 n 
-0000521978 00000 n 
-0000522041 00000 n 
-0000522104 00000 n 
-0000522167 00000 n 
-0000522230 00000 n 
-0000522293 00000 n 
-0000522356 00000 n 
-0000522419 00000 n 
-0000522482 00000 n 
-0000522545 00000 n 
-0000522608 00000 n 
-0000522671 00000 n 
-0000522734 00000 n 
-0000522797 00000 n 
-0000522860 00000 n 
-0000522923 00000 n 
-0000522986 00000 n 
-0000523049 00000 n 
-0000523112 00000 n 
-0000523175 00000 n 
-0000523238 00000 n 
-0000523301 00000 n 
-0000523365 00000 n 
-0000523428 00000 n 
-0000523491 00000 n 
-0000523680 00000 n 
-0000521256 00000 n 
-0000523743 00000 n 
-0000523806 00000 n 
-0000523869 00000 n 
-0000523932 00000 n 
-0000523995 00000 n 
-0000524056 00000 n 
-0000524119 00000 n 
-0000524181 00000 n 
-0000933021 00000 n 
-0000528781 00000 n 
-0000526775 00000 n 
-0000524387 00000 n 
-0000526899 00000 n 
-0000526962 00000 n 
-0000527150 00000 n 
-0000527213 00000 n 
-0000527276 00000 n 
-0000527340 00000 n 
-0000527403 00000 n 
-0000527466 00000 n 
-0000527528 00000 n 
-0000527591 00000 n 
-0000527654 00000 n 
-0000527716 00000 n 
-0000527779 00000 n 
-0000527967 00000 n 
-0000528030 00000 n 
-0000528092 00000 n 
-0000528155 00000 n 
-0000528218 00000 n 
-0000528280 00000 n 
-0000528343 00000 n 
-0000528406 00000 n 
-0000528469 00000 n 
-0000528656 00000 n 
-0000528719 00000 n 
-0000534494 00000 n 
-0000531275 00000 n 
-0000528883 00000 n 
-0000531399 00000 n 
-0000531462 00000 n 
-0000531524 00000 n 
-0000531587 00000 n 
-0000531650 00000 n 
-0000531713 00000 n 
-0000531775 00000 n 
-0000531838 00000 n 
-0000531901 00000 n 
-0000531964 00000 n 
-0000532027 00000 n 
-0000532089 00000 n 
-0000532152 00000 n 
-0000532341 00000 n 
-0000532404 00000 n 
-0000532468 00000 n 
-0000532532 00000 n 
-0000532721 00000 n 
-0000532784 00000 n 
-0000532848 00000 n 
-0000532912 00000 n 
-0000532975 00000 n 
-0000533039 00000 n 
-0000533102 00000 n 
-0000533165 00000 n 
-0000533229 00000 n 
-0000533292 00000 n 
-0000533356 00000 n 
-0000533419 00000 n 
-0000533483 00000 n 
-0000533547 00000 n 
-0000533611 00000 n 
-0000533674 00000 n 
-0000533737 00000 n 
-0000533801 00000 n 
-0000533864 00000 n 
-0000533927 00000 n 
-0000533991 00000 n 
-0000534055 00000 n 
-0000534118 00000 n 
-0000534179 00000 n 
-0000534242 00000 n 
-0000534306 00000 n 
-0000534368 00000 n 
-0000945448 00000 n 
-0000539592 00000 n 
-0000536565 00000 n 
-0000534624 00000 n 
-0000536689 00000 n 
-0000536941 00000 n 
-0000537004 00000 n 
-0000537067 00000 n 
-0000537130 00000 n 
-0000537193 00000 n 
-0000537255 00000 n 
-0000537318 00000 n 
-0000537381 00000 n 
-0000537444 00000 n 
-0000537508 00000 n 
-0000537571 00000 n 
-0000537634 00000 n 
-0000537697 00000 n 
-0000537760 00000 n 
-0000537824 00000 n 
-0000537887 00000 n 
-0000538075 00000 n 
-0000538138 00000 n 
-0000538202 00000 n 
-0000538266 00000 n 
-0000538330 00000 n 
-0000538394 00000 n 
-0000538457 00000 n 
-0000538521 00000 n 
-0000538584 00000 n 
-0000538648 00000 n 
-0000538711 00000 n 
-0000538901 00000 n 
-0000539086 00000 n 
-0000539149 00000 n 
-0000539212 00000 n 
-0000539275 00000 n 
-0000539339 00000 n 
-0000539402 00000 n 
-0000539465 00000 n 
-0000539529 00000 n 
-0000544735 00000 n 
-0000542028 00000 n 
-0000539708 00000 n 
-0000542152 00000 n 
-0000542215 00000 n 
-0000542277 00000 n 
-0000542340 00000 n 
-0000542404 00000 n 
-0000542467 00000 n 
-0000542529 00000 n 
-0000542591 00000 n 
-0000542781 00000 n 
-0000542843 00000 n 
-0000542907 00000 n 
-0000542971 00000 n 
-0000543033 00000 n 
-0000543221 00000 n 
-0000543284 00000 n 
-0000543348 00000 n 
-0000543412 00000 n 
-0000543476 00000 n 
-0000543664 00000 n 
-0000543727 00000 n 
-0000543791 00000 n 
-0000543915 00000 n 
-0000543978 00000 n 
-0000544104 00000 n 
-0000544166 00000 n 
-0000544292 00000 n 
-0000544355 00000 n 
-0000544418 00000 n 
-0000544482 00000 n 
-0000544545 00000 n 
-0000544607 00000 n 
-0000544671 00000 n 
-0000550444 00000 n 
-0000547534 00000 n 
-0000544865 00000 n 
-0000547658 00000 n 
-0000547721 00000 n 
-0000547785 00000 n 
-0000547848 00000 n 
-0000547911 00000 n 
-0000547975 00000 n 
-0000548038 00000 n 
-0000548101 00000 n 
-0000548165 00000 n 
-0000548229 00000 n 
-0000548293 00000 n 
-0000548357 00000 n 
-0000548421 00000 n 
-0000548484 00000 n 
-0000548548 00000 n 
-0000548610 00000 n 
-0000548673 00000 n 
-0000548736 00000 n 
-0000548800 00000 n 
-0000548864 00000 n 
-0000548927 00000 n 
-0000548990 00000 n 
-0000549054 00000 n 
-0000549118 00000 n 
-0000549242 00000 n 
-0000549305 00000 n 
-0000549368 00000 n 
-0000549431 00000 n 
-0000549557 00000 n 
-0000549620 00000 n 
-0000549684 00000 n 
-0000549810 00000 n 
-0000549873 00000 n 
-0000549937 00000 n 
-0000550001 00000 n 
-0000550065 00000 n 
-0000550128 00000 n 
-0000550192 00000 n 
-0000550318 00000 n 
-0000550381 00000 n 
-0000555360 00000 n 
-0000552962 00000 n 
-0000550546 00000 n 
-0000553086 00000 n 
-0000553212 00000 n 
-0000553275 00000 n 
-0000553338 00000 n 
-0000553464 00000 n 
-0000553526 00000 n 
-0000553590 00000 n 
-0000553654 00000 n 
-0000553844 00000 n 
-0000553907 00000 n 
-0000553971 00000 n 
-0000554034 00000 n 
-0000554098 00000 n 
-0000554161 00000 n 
-0000554225 00000 n 
-0000554289 00000 n 
-0000554479 00000 n 
-0000554542 00000 n 
-0000554605 00000 n 
-0000554794 00000 n 
-0000554857 00000 n 
-0000554920 00000 n 
-0000554982 00000 n 
-0000555045 00000 n 
-0000555108 00000 n 
-0000555171 00000 n 
-0000555234 00000 n 
-0000555297 00000 n 
-0000560619 00000 n 
-0000558602 00000 n 
-0000555490 00000 n 
-0000558726 00000 n 
-0000558789 00000 n 
-0000558852 00000 n 
-0000558915 00000 n 
-0000558978 00000 n 
-0000559041 00000 n 
-0000559104 00000 n 
-0000559165 00000 n 
-0000559353 00000 n 
-0000559416 00000 n 
-0000559479 00000 n 
-0000559543 00000 n 
-0000559606 00000 n 
-0000559669 00000 n 
-0000559858 00000 n 
-0000559921 00000 n 
-0000559985 00000 n 
-0000560048 00000 n 
-0000560111 00000 n 
-0000560175 00000 n 
-0000560239 00000 n 
-0000560302 00000 n 
-0000560366 00000 n 
-0000560429 00000 n 
-0000560492 00000 n 
-0000566082 00000 n 
-0000563245 00000 n 
-0000560735 00000 n 
-0000563369 00000 n 
-0000563495 00000 n 
-0000563558 00000 n 
-0000563621 00000 n 
-0000563684 00000 n 
-0000563747 00000 n 
-0000563811 00000 n 
-0000563874 00000 n 
-0000563937 00000 n 
-0000564001 00000 n 
-0000564065 00000 n 
-0000564128 00000 n 
-0000564191 00000 n 
-0000564254 00000 n 
-0000564318 00000 n 
-0000564382 00000 n 
-0000564446 00000 n 
-0000564510 00000 n 
-0000564573 00000 n 
-0000564636 00000 n 
-0000564699 00000 n 
-0000564762 00000 n 
-0000564826 00000 n 
-0000564889 00000 n 
-0000564952 00000 n 
-0000565015 00000 n 
-0000565203 00000 n 
-0000565266 00000 n 
-0000565329 00000 n 
-0000565392 00000 n 
-0000565454 00000 n 
-0000565517 00000 n 
-0000565580 00000 n 
-0000565642 00000 n 
-0000565831 00000 n 
-0000565894 00000 n 
-0000565957 00000 n 
-0000566020 00000 n 
-0000945573 00000 n 
-0000569570 00000 n 
-0000567934 00000 n 
-0000566198 00000 n 
-0000568058 00000 n 
-0000568121 00000 n 
-0000568184 00000 n 
-0000568247 00000 n 
-0000568310 00000 n 
-0000568373 00000 n 
-0000568436 00000 n 
-0000568499 00000 n 
-0000568562 00000 n 
-0000568625 00000 n 
-0000568689 00000 n 
-0000568753 00000 n 
-0000568815 00000 n 
-0000569130 00000 n 
-0000569193 00000 n 
-0000569382 00000 n 
-0000569444 00000 n 
-0000573204 00000 n 
-0000571446 00000 n 
-0000569686 00000 n 
-0000571570 00000 n 
-0000571633 00000 n 
-0000571758 00000 n 
-0000571821 00000 n 
-0000571884 00000 n 
-0000571947 00000 n 
-0000572010 00000 n 
-0000572073 00000 n 
-0000572136 00000 n 
-0000572199 00000 n 
-0000572262 00000 n 
-0000572325 00000 n 
-0000572387 00000 n 
-0000572450 00000 n 
-0000572638 00000 n 
-0000572701 00000 n 
-0000572763 00000 n 
-0000572826 00000 n 
-0000572889 00000 n 
-0000572952 00000 n 
-0000573141 00000 n 
-0000578600 00000 n 
-0000576602 00000 n 
-0000573320 00000 n 
-0000577403 00000 n 
-0000577466 00000 n 
-0000577529 00000 n 
-0000577592 00000 n 
-0000577655 00000 n 
-0000577845 00000 n 
-0000577908 00000 n 
-0000577971 00000 n 
-0000578034 00000 n 
-0000576774 00000 n 
-0000578097 00000 n 
-0000578159 00000 n 
-0000576927 00000 n 
-0000578222 00000 n 
-0000578285 00000 n 
-0000577086 00000 n 
-0000578348 00000 n 
-0000577245 00000 n 
-0000578411 00000 n 
-0000578473 00000 n 
-0000578536 00000 n 
-0000583200 00000 n 
-0000581309 00000 n 
-0000578730 00000 n 
-0000581433 00000 n 
-0000581496 00000 n 
-0000581559 00000 n 
-0000581749 00000 n 
-0000581812 00000 n 
-0000581875 00000 n 
-0000581938 00000 n 
-0000582001 00000 n 
-0000582064 00000 n 
-0000582127 00000 n 
-0000582190 00000 n 
-0000582254 00000 n 
-0000582317 00000 n 
-0000582380 00000 n 
-0000582443 00000 n 
-0000582506 00000 n 
-0000582570 00000 n 
-0000582758 00000 n 
-0000582821 00000 n 
-0000582884 00000 n 
-0000582947 00000 n 
-0000583011 00000 n 
-0000583074 00000 n 
-0000583137 00000 n 
-0000587509 00000 n 
-0000585558 00000 n 
-0000583358 00000 n 
-0000585682 00000 n 
-0000585745 00000 n 
-0000585808 00000 n 
-0000585871 00000 n 
-0000585934 00000 n 
-0000585997 00000 n 
-0000586059 00000 n 
-0000586122 00000 n 
-0000586185 00000 n 
-0000586248 00000 n 
-0000586311 00000 n 
-0000586374 00000 n 
-0000586438 00000 n 
-0000586502 00000 n 
-0000586565 00000 n 
-0000586754 00000 n 
-0000586817 00000 n 
-0000586881 00000 n 
-0000586944 00000 n 
-0000587007 00000 n 
-0000587070 00000 n 
-0000587133 00000 n 
-0000587196 00000 n 
-0000587258 00000 n 
-0000587321 00000 n 
-0000587384 00000 n 
-0000587446 00000 n 
-0000590384 00000 n 
-0000589135 00000 n 
-0000587667 00000 n 
-0000589434 00000 n 
-0000589497 00000 n 
-0000589561 00000 n 
-0000589280 00000 n 
-0000589750 00000 n 
-0000589813 00000 n 
-0000589877 00000 n 
-0000589940 00000 n 
-0000590003 00000 n 
-0000590066 00000 n 
-0000590129 00000 n 
-0000590193 00000 n 
-0000590257 00000 n 
-0000590320 00000 n 
-0000945698 00000 n 
-0000595751 00000 n 
-0000593132 00000 n 
-0000590542 00000 n 
-0000593598 00000 n 
-0000593787 00000 n 
-0000593850 00000 n 
-0000593914 00000 n 
-0000594228 00000 n 
-0000594416 00000 n 
-0000593286 00000 n 
-0000594479 00000 n 
-0000594542 00000 n 
-0000594606 00000 n 
-0000594670 00000 n 
-0000593441 00000 n 
-0000594734 00000 n 
-0000594798 00000 n 
-0000594862 00000 n 
-0000594926 00000 n 
-0000594990 00000 n 
-0000595053 00000 n 
-0000595117 00000 n 
-0000595180 00000 n 
-0000595243 00000 n 
-0000595307 00000 n 
-0000595371 00000 n 
-0000595561 00000 n 
-0000595624 00000 n 
-0000926957 00000 n 
-0000936780 00000 n 
-0000600339 00000 n 
-0000597601 00000 n 
-0000595895 00000 n 
-0000598260 00000 n 
-0000598511 00000 n 
-0000597764 00000 n 
-0000598699 00000 n 
-0000598762 00000 n 
-0000598826 00000 n 
-0000598890 00000 n 
-0000599016 00000 n 
-0000599079 00000 n 
-0000599142 00000 n 
-0000599205 00000 n 
-0000599269 00000 n 
-0000599394 00000 n 
-0000599457 00000 n 
-0000599520 00000 n 
-0000599583 00000 n 
-0000599647 00000 n 
-0000599710 00000 n 
-0000599772 00000 n 
-0000599835 00000 n 
-0000597928 00000 n 
-0000600024 00000 n 
-0000598099 00000 n 
-0000600149 00000 n 
-0000600212 00000 n 
-0000600276 00000 n 
-0000608021 00000 n 
-0000602504 00000 n 
-0000600497 00000 n 
-0000602969 00000 n 
-0000603284 00000 n 
-0000603347 00000 n 
-0000603411 00000 n 
-0000603474 00000 n 
-0000602658 00000 n 
-0000602814 00000 n 
-0000603537 00000 n 
-0000603600 00000 n 
-0000603663 00000 n 
-0000603726 00000 n 
-0000603788 00000 n 
-0000603850 00000 n 
-0000603913 00000 n 
-0000603977 00000 n 
-0000604041 00000 n 
-0000604105 00000 n 
-0000604169 00000 n 
-0000604232 00000 n 
-0000604295 00000 n 
-0000604359 00000 n 
-0000604423 00000 n 
-0000604487 00000 n 
-0000604551 00000 n 
-0000604614 00000 n 
-0000604673 00000 n 
-0000604732 00000 n 
-0000604795 00000 n 
-0000604858 00000 n 
-0000604921 00000 n 
-0000604984 00000 n 
-0000605047 00000 n 
-0000605111 00000 n 
-0000605175 00000 n 
-0000605238 00000 n 
-0000605301 00000 n 
-0000605364 00000 n 
-0000605427 00000 n 
-0000605490 00000 n 
-0000605553 00000 n 
-0000605616 00000 n 
-0000605679 00000 n 
-0000605742 00000 n 
-0000605805 00000 n 
-0000605869 00000 n 
-0000605933 00000 n 
-0000605997 00000 n 
-0000606060 00000 n 
-0000606123 00000 n 
-0000606186 00000 n 
-0000606249 00000 n 
-0000606313 00000 n 
-0000606376 00000 n 
-0000606440 00000 n 
-0000606504 00000 n 
-0000606568 00000 n 
-0000606632 00000 n 
-0000606696 00000 n 
-0000606760 00000 n 
-0000606824 00000 n 
-0000606888 00000 n 
-0000606952 00000 n 
-0000607015 00000 n 
-0000607078 00000 n 
-0000607140 00000 n 
-0000607202 00000 n 
-0000607266 00000 n 
-0000607328 00000 n 
-0000607391 00000 n 
-0000607454 00000 n 
-0000607517 00000 n 
-0000607580 00000 n 
-0000607643 00000 n 
-0000607706 00000 n 
-0000607769 00000 n 
-0000607832 00000 n 
-0000607895 00000 n 
-0000607958 00000 n 
-0000916907 00000 n 
-0000613185 00000 n 
-0000610652 00000 n 
-0000608165 00000 n 
-0000611285 00000 n 
-0000611348 00000 n 
-0000611411 00000 n 
-0000611475 00000 n 
-0000611539 00000 n 
-0000611603 00000 n 
-0000611667 00000 n 
-0000611731 00000 n 
-0000611794 00000 n 
-0000611857 00000 n 
-0000610815 00000 n 
-0000612046 00000 n 
-0000612109 00000 n 
-0000612172 00000 n 
-0000610962 00000 n 
-0000612235 00000 n 
-0000612299 00000 n 
-0000612363 00000 n 
-0000612427 00000 n 
-0000612743 00000 n 
-0000612806 00000 n 
-0000611114 00000 n 
-0000612932 00000 n 
-0000612995 00000 n 
-0000613059 00000 n 
-0000613122 00000 n 
-0000927336 00000 n 
-0000618301 00000 n 
-0000615906 00000 n 
-0000613343 00000 n 
-0000616215 00000 n 
-0000616530 00000 n 
-0000616593 00000 n 
-0000616051 00000 n 
-0000616782 00000 n 
-0000616845 00000 n 
-0000616909 00000 n 
-0000616973 00000 n 
-0000617037 00000 n 
-0000617100 00000 n 
-0000617162 00000 n 
-0000617225 00000 n 
-0000617289 00000 n 
-0000617353 00000 n 
-0000617543 00000 n 
-0000617606 00000 n 
-0000617669 00000 n 
-0000617733 00000 n 
-0000617797 00000 n 
-0000617860 00000 n 
-0000617923 00000 n 
-0000617986 00000 n 
-0000618049 00000 n 
-0000618112 00000 n 
-0000618175 00000 n 
-0000618238 00000 n 
-0000623273 00000 n 
-0000621504 00000 n 
-0000618459 00000 n 
-0000621628 00000 n 
-0000621691 00000 n 
-0000621754 00000 n 
-0000621815 00000 n 
-0000621878 00000 n 
-0000621940 00000 n 
-0000622004 00000 n 
-0000622068 00000 n 
-0000622132 00000 n 
-0000622195 00000 n 
-0000622259 00000 n 
-0000622323 00000 n 
-0000622387 00000 n 
-0000622577 00000 n 
-0000622640 00000 n 
-0000622703 00000 n 
-0000622766 00000 n 
-0000622829 00000 n 
-0000622893 00000 n 
-0000622956 00000 n 
-0000623019 00000 n 
-0000623082 00000 n 
-0000623146 00000 n 
-0000945823 00000 n 
-0000629243 00000 n 
-0000626657 00000 n 
-0000623417 00000 n 
-0000626781 00000 n 
-0000626907 00000 n 
-0000626970 00000 n 
-0000627034 00000 n 
-0000627097 00000 n 
-0000627161 00000 n 
-0000627222 00000 n 
-0000627286 00000 n 
-0000627349 00000 n 
-0000627411 00000 n 
-0000627474 00000 n 
-0000627537 00000 n 
-0000627601 00000 n 
-0000627664 00000 n 
-0000627727 00000 n 
-0000627790 00000 n 
-0000627853 00000 n 
-0000627916 00000 n 
-0000628105 00000 n 
-0000628168 00000 n 
-0000628231 00000 n 
-0000628294 00000 n 
-0000628357 00000 n 
-0000628420 00000 n 
-0000628483 00000 n 
-0000628546 00000 n 
-0000628610 00000 n 
-0000628673 00000 n 
-0000628736 00000 n 
-0000628799 00000 n 
-0000628862 00000 n 
-0000628926 00000 n 
-0000628990 00000 n 
-0000629054 00000 n 
-0000629117 00000 n 
-0000629180 00000 n 
-0000634003 00000 n 
-0000632175 00000 n 
-0000629387 00000 n 
-0000632299 00000 n 
-0000632362 00000 n 
-0000632425 00000 n 
-0000632488 00000 n 
-0000632550 00000 n 
-0000632612 00000 n 
-0000632675 00000 n 
-0000632738 00000 n 
-0000632802 00000 n 
-0000632866 00000 n 
-0000632929 00000 n 
-0000632992 00000 n 
-0000633056 00000 n 
-0000633119 00000 n 
-0000633182 00000 n 
-0000633245 00000 n 
-0000633309 00000 n 
-0000633373 00000 n 
-0000633437 00000 n 
-0000633500 00000 n 
-0000633563 00000 n 
-0000633626 00000 n 
-0000633690 00000 n 
-0000633753 00000 n 
-0000633816 00000 n 
-0000633877 00000 n 
-0000639315 00000 n 
-0000637229 00000 n 
-0000634119 00000 n 
-0000637353 00000 n 
-0000637479 00000 n 
-0000637542 00000 n 
-0000637605 00000 n 
-0000637668 00000 n 
-0000637732 00000 n 
-0000637796 00000 n 
-0000637859 00000 n 
-0000638049 00000 n 
-0000638112 00000 n 
-0000638176 00000 n 
-0000638239 00000 n 
-0000638302 00000 n 
-0000638365 00000 n 
-0000638428 00000 n 
+0000941546 00000 n 
+0000476989 00000 n 
+0000477052 00000 n 
+0000477114 00000 n 
+0000477177 00000 n 
+0000477367 00000 n 
+0000477430 00000 n 
+0000477493 00000 n 
+0000477556 00000 n 
+0000477619 00000 n 
+0000477682 00000 n 
+0000477744 00000 n 
+0000477807 00000 n 
+0000477870 00000 n 
+0000477933 00000 n 
+0000477996 00000 n 
+0000478059 00000 n 
+0000478122 00000 n 
+0000478185 00000 n 
+0000478248 00000 n 
+0000478311 00000 n 
+0000923347 00000 n 
+0000482051 00000 n 
+0000480489 00000 n 
+0000478609 00000 n 
+0000480790 00000 n 
+0000481042 00000 n 
+0000480634 00000 n 
+0000481230 00000 n 
+0000481293 00000 n 
+0000481356 00000 n 
+0000481420 00000 n 
+0000481484 00000 n 
+0000481548 00000 n 
+0000481737 00000 n 
+0000481863 00000 n 
+0000481925 00000 n 
+0000481988 00000 n 
+0000944913 00000 n 
+0000486318 00000 n 
+0000484171 00000 n 
+0000482195 00000 n 
+0000484295 00000 n 
+0000484421 00000 n 
+0000484484 00000 n 
+0000484548 00000 n 
+0000484611 00000 n 
+0000484737 00000 n 
+0000484800 00000 n 
+0000484863 00000 n 
+0000484927 00000 n 
+0000484991 00000 n 
+0000485054 00000 n 
+0000485117 00000 n 
+0000485181 00000 n 
+0000485245 00000 n 
+0000485308 00000 n 
+0000485372 00000 n 
+0000485435 00000 n 
+0000485498 00000 n 
+0000485561 00000 n 
+0000485751 00000 n 
+0000485814 00000 n 
+0000485877 00000 n 
+0000485940 00000 n 
+0000486003 00000 n 
+0000486066 00000 n 
+0000486129 00000 n 
+0000486192 00000 n 
+0000486255 00000 n 
+0000489977 00000 n 
+0000488149 00000 n 
+0000486490 00000 n 
+0000488273 00000 n 
+0000488336 00000 n 
+0000488399 00000 n 
+0000488462 00000 n 
+0000488525 00000 n 
+0000488588 00000 n 
+0000488778 00000 n 
+0000488966 00000 n 
+0000489029 00000 n 
+0000489092 00000 n 
+0000489155 00000 n 
+0000489219 00000 n 
+0000489283 00000 n 
+0000489346 00000 n 
+0000489409 00000 n 
+0000489472 00000 n 
+0000489536 00000 n 
+0000489600 00000 n 
+0000489789 00000 n 
+0000489851 00000 n 
+0000489914 00000 n 
+0000493674 00000 n 
+0000491901 00000 n 
+0000490107 00000 n 
+0000492025 00000 n 
+0000492088 00000 n 
+0000492151 00000 n 
+0000492215 00000 n 
+0000492279 00000 n 
+0000492343 00000 n 
+0000492407 00000 n 
+0000492470 00000 n 
+0000492533 00000 n 
+0000492595 00000 n 
+0000492658 00000 n 
+0000492722 00000 n 
+0000492785 00000 n 
+0000492848 00000 n 
+0000492911 00000 n 
+0000492975 00000 n 
+0000493039 00000 n 
+0000493102 00000 n 
+0000493165 00000 n 
+0000493228 00000 n 
+0000493292 00000 n 
+0000493356 00000 n 
+0000493419 00000 n 
+0000493482 00000 n 
+0000493546 00000 n 
+0000493610 00000 n 
+0000497731 00000 n 
+0000496027 00000 n 
+0000493790 00000 n 
+0000496342 00000 n 
+0000496405 00000 n 
+0000496469 00000 n 
+0000496533 00000 n 
+0000496722 00000 n 
+0000496911 00000 n 
+0000496974 00000 n 
+0000497037 00000 n 
+0000497100 00000 n 
+0000497163 00000 n 
+0000497226 00000 n 
+0000497289 00000 n 
+0000497478 00000 n 
+0000496172 00000 n 
+0000497541 00000 n 
+0000497604 00000 n 
+0000497667 00000 n 
+0000499706 00000 n 
+0000499010 00000 n 
+0000497889 00000 n 
+0000499134 00000 n 
+0000499197 00000 n 
+0000499260 00000 n 
+0000499324 00000 n 
+0000499388 00000 n 
+0000499452 00000 n 
+0000499515 00000 n 
+0000499578 00000 n 
+0000499642 00000 n 
+0000504426 00000 n 
+0000502283 00000 n 
+0000499850 00000 n 
+0000502407 00000 n 
+0000502722 00000 n 
+0000502785 00000 n 
+0000502847 00000 n 
+0000502909 00000 n 
+0000502972 00000 n 
+0000503035 00000 n 
+0000503098 00000 n 
+0000503161 00000 n 
+0000503224 00000 n 
+0000503287 00000 n 
+0000503350 00000 n 
+0000503414 00000 n 
+0000503478 00000 n 
+0000503542 00000 n 
+0000503605 00000 n 
+0000503668 00000 n 
+0000503731 00000 n 
+0000503794 00000 n 
+0000503857 00000 n 
+0000503919 00000 n 
+0000503983 00000 n 
+0000504046 00000 n 
+0000504109 00000 n 
+0000504172 00000 n 
+0000504235 00000 n 
+0000504299 00000 n 
+0000504362 00000 n 
+0000945038 00000 n 
+0000508704 00000 n 
+0000507007 00000 n 
+0000504542 00000 n 
+0000507131 00000 n 
+0000507194 00000 n 
+0000507257 00000 n 
+0000507320 00000 n 
+0000507383 00000 n 
+0000507446 00000 n 
+0000507509 00000 n 
+0000507572 00000 n 
+0000507636 00000 n 
+0000507698 00000 n 
+0000507761 00000 n 
+0000507824 00000 n 
+0000507887 00000 n 
+0000507950 00000 n 
+0000508013 00000 n 
+0000508075 00000 n 
+0000508139 00000 n 
+0000508202 00000 n 
+0000508265 00000 n 
+0000508328 00000 n 
+0000508390 00000 n 
+0000508453 00000 n 
+0000508516 00000 n 
+0000508578 00000 n 
+0000508641 00000 n 
+0000512447 00000 n 
+0000510939 00000 n 
+0000508834 00000 n 
+0000511063 00000 n 
+0000511126 00000 n 
+0000511189 00000 n 
+0000511252 00000 n 
+0000511315 00000 n 
+0000511378 00000 n 
+0000511441 00000 n 
+0000511504 00000 n 
+0000511566 00000 n 
+0000511629 00000 n 
+0000511692 00000 n 
+0000511756 00000 n 
+0000511818 00000 n 
+0000511881 00000 n 
+0000512196 00000 n 
+0000512259 00000 n 
+0000512321 00000 n 
+0000517919 00000 n 
+0000515469 00000 n 
+0000512563 00000 n 
+0000515593 00000 n 
+0000515844 00000 n 
+0000515907 00000 n 
+0000515970 00000 n 
+0000516031 00000 n 
+0000516094 00000 n 
+0000516157 00000 n 
+0000516219 00000 n 
+0000516282 00000 n 
+0000516345 00000 n 
+0000516408 00000 n 
+0000516597 00000 n 
+0000516660 00000 n 
+0000516723 00000 n 
+0000516787 00000 n 
+0000516851 00000 n 
+0000516914 00000 n 
+0000516977 00000 n 
+0000517040 00000 n 
+0000517103 00000 n 
+0000517166 00000 n 
+0000517229 00000 n 
+0000517292 00000 n 
+0000517355 00000 n 
+0000517418 00000 n 
+0000517481 00000 n 
+0000517544 00000 n 
+0000517607 00000 n 
+0000517670 00000 n 
+0000517733 00000 n 
+0000517792 00000 n 
+0000517856 00000 n 
+0000524245 00000 n 
+0000521113 00000 n 
+0000518077 00000 n 
+0000521413 00000 n 
+0000521476 00000 n 
+0000521538 00000 n 
+0000521601 00000 n 
+0000521665 00000 n 
+0000521727 00000 n 
+0000521791 00000 n 
+0000521854 00000 n 
+0000521917 00000 n 
+0000521980 00000 n 
+0000522043 00000 n 
+0000522106 00000 n 
+0000522169 00000 n 
+0000522232 00000 n 
+0000522295 00000 n 
+0000522358 00000 n 
+0000522421 00000 n 
+0000522484 00000 n 
+0000522547 00000 n 
+0000522610 00000 n 
+0000522673 00000 n 
+0000522736 00000 n 
+0000522799 00000 n 
+0000522862 00000 n 
+0000522925 00000 n 
+0000522988 00000 n 
+0000523051 00000 n 
+0000523114 00000 n 
+0000523177 00000 n 
+0000523240 00000 n 
+0000523303 00000 n 
+0000523367 00000 n 
+0000523430 00000 n 
+0000523493 00000 n 
+0000523682 00000 n 
+0000521258 00000 n 
+0000523745 00000 n 
+0000523808 00000 n 
+0000523871 00000 n 
+0000523934 00000 n 
+0000523997 00000 n 
+0000524058 00000 n 
+0000524121 00000 n 
+0000524183 00000 n 
+0000932736 00000 n 
+0000528783 00000 n 
+0000526777 00000 n 
+0000524389 00000 n 
+0000526901 00000 n 
+0000526964 00000 n 
+0000527152 00000 n 
+0000527215 00000 n 
+0000527278 00000 n 
+0000527342 00000 n 
+0000527405 00000 n 
+0000527468 00000 n 
+0000527530 00000 n 
+0000527593 00000 n 
+0000527656 00000 n 
+0000527718 00000 n 
+0000527781 00000 n 
+0000527969 00000 n 
+0000528032 00000 n 
+0000528094 00000 n 
+0000528157 00000 n 
+0000528220 00000 n 
+0000528282 00000 n 
+0000528345 00000 n 
+0000528408 00000 n 
+0000528471 00000 n 
+0000528658 00000 n 
+0000528721 00000 n 
+0000534496 00000 n 
+0000531277 00000 n 
+0000528885 00000 n 
+0000531401 00000 n 
+0000531464 00000 n 
+0000531526 00000 n 
+0000531589 00000 n 
+0000531652 00000 n 
+0000531715 00000 n 
+0000531777 00000 n 
+0000531840 00000 n 
+0000531903 00000 n 
+0000531966 00000 n 
+0000532029 00000 n 
+0000532091 00000 n 
+0000532154 00000 n 
+0000532343 00000 n 
+0000532406 00000 n 
+0000532470 00000 n 
+0000532534 00000 n 
+0000532723 00000 n 
+0000532786 00000 n 
+0000532850 00000 n 
+0000532914 00000 n 
+0000532977 00000 n 
+0000533041 00000 n 
+0000533104 00000 n 
+0000533167 00000 n 
+0000533231 00000 n 
+0000533294 00000 n 
+0000533358 00000 n 
+0000533421 00000 n 
+0000533485 00000 n 
+0000533549 00000 n 
+0000533613 00000 n 
+0000533676 00000 n 
+0000533739 00000 n 
+0000533803 00000 n 
+0000533866 00000 n 
+0000533929 00000 n 
+0000533993 00000 n 
+0000534057 00000 n 
+0000534120 00000 n 
+0000534181 00000 n 
+0000534244 00000 n 
+0000534308 00000 n 
+0000534370 00000 n 
+0000945163 00000 n 
+0000539594 00000 n 
+0000536567 00000 n 
+0000534626 00000 n 
+0000536691 00000 n 
+0000536943 00000 n 
+0000537006 00000 n 
+0000537069 00000 n 
+0000537132 00000 n 
+0000537195 00000 n 
+0000537257 00000 n 
+0000537320 00000 n 
+0000537383 00000 n 
+0000537446 00000 n 
+0000537510 00000 n 
+0000537573 00000 n 
+0000537636 00000 n 
+0000537699 00000 n 
+0000537762 00000 n 
+0000537826 00000 n 
+0000537889 00000 n 
+0000538077 00000 n 
+0000538140 00000 n 
+0000538204 00000 n 
+0000538268 00000 n 
+0000538332 00000 n 
+0000538396 00000 n 
+0000538459 00000 n 
+0000538523 00000 n 
+0000538586 00000 n 
+0000538650 00000 n 
+0000538713 00000 n 
+0000538903 00000 n 
+0000539088 00000 n 
+0000539151 00000 n 
+0000539214 00000 n 
+0000539277 00000 n 
+0000539341 00000 n 
+0000539404 00000 n 
+0000539467 00000 n 
+0000539531 00000 n 
+0000544737 00000 n 
+0000542030 00000 n 
+0000539710 00000 n 
+0000542154 00000 n 
+0000542217 00000 n 
+0000542279 00000 n 
+0000542342 00000 n 
+0000542406 00000 n 
+0000542469 00000 n 
+0000542531 00000 n 
+0000542593 00000 n 
+0000542783 00000 n 
+0000542845 00000 n 
+0000542909 00000 n 
+0000542973 00000 n 
+0000543035 00000 n 
+0000543223 00000 n 
+0000543286 00000 n 
+0000543350 00000 n 
+0000543414 00000 n 
+0000543478 00000 n 
+0000543666 00000 n 
+0000543729 00000 n 
+0000543793 00000 n 
+0000543917 00000 n 
+0000543980 00000 n 
+0000544106 00000 n 
+0000544168 00000 n 
+0000544294 00000 n 
+0000544357 00000 n 
+0000544420 00000 n 
+0000544484 00000 n 
+0000544547 00000 n 
+0000544609 00000 n 
+0000544673 00000 n 
+0000550446 00000 n 
+0000547536 00000 n 
+0000544867 00000 n 
+0000547660 00000 n 
+0000547723 00000 n 
+0000547787 00000 n 
+0000547850 00000 n 
+0000547913 00000 n 
+0000547977 00000 n 
+0000548040 00000 n 
+0000548103 00000 n 
+0000548167 00000 n 
+0000548231 00000 n 
+0000548295 00000 n 
+0000548359 00000 n 
+0000548423 00000 n 
+0000548486 00000 n 
+0000548550 00000 n 
+0000548612 00000 n 
+0000548675 00000 n 
+0000548738 00000 n 
+0000548802 00000 n 
+0000548866 00000 n 
+0000548929 00000 n 
+0000548992 00000 n 
+0000549056 00000 n 
+0000549120 00000 n 
+0000549244 00000 n 
+0000549307 00000 n 
+0000549370 00000 n 
+0000549433 00000 n 
+0000549559 00000 n 
+0000549622 00000 n 
+0000549686 00000 n 
+0000549812 00000 n 
+0000549875 00000 n 
+0000549939 00000 n 
+0000550003 00000 n 
+0000550067 00000 n 
+0000550130 00000 n 
+0000550194 00000 n 
+0000550320 00000 n 
+0000550383 00000 n 
+0000555362 00000 n 
+0000552964 00000 n 
+0000550548 00000 n 
+0000553088 00000 n 
+0000553214 00000 n 
+0000553277 00000 n 
+0000553340 00000 n 
+0000553466 00000 n 
+0000553528 00000 n 
+0000553592 00000 n 
+0000553656 00000 n 
+0000553846 00000 n 
+0000553909 00000 n 
+0000553973 00000 n 
+0000554036 00000 n 
+0000554100 00000 n 
+0000554163 00000 n 
+0000554227 00000 n 
+0000554291 00000 n 
+0000554481 00000 n 
+0000554544 00000 n 
+0000554607 00000 n 
+0000554796 00000 n 
+0000554859 00000 n 
+0000554922 00000 n 
+0000554984 00000 n 
+0000555047 00000 n 
+0000555110 00000 n 
+0000555173 00000 n 
+0000555236 00000 n 
+0000555299 00000 n 
+0000560621 00000 n 
+0000558604 00000 n 
+0000555492 00000 n 
+0000558728 00000 n 
+0000558791 00000 n 
+0000558854 00000 n 
+0000558917 00000 n 
+0000558980 00000 n 
+0000559043 00000 n 
+0000559106 00000 n 
+0000559167 00000 n 
+0000559355 00000 n 
+0000559418 00000 n 
+0000559481 00000 n 
+0000559545 00000 n 
+0000559608 00000 n 
+0000559671 00000 n 
+0000559860 00000 n 
+0000559923 00000 n 
+0000559987 00000 n 
+0000560050 00000 n 
+0000560113 00000 n 
+0000560177 00000 n 
+0000560241 00000 n 
+0000560304 00000 n 
+0000560368 00000 n 
+0000560431 00000 n 
+0000560494 00000 n 
+0000566084 00000 n 
+0000563247 00000 n 
+0000560737 00000 n 
+0000563371 00000 n 
+0000563497 00000 n 
+0000563560 00000 n 
+0000563623 00000 n 
+0000563686 00000 n 
+0000563749 00000 n 
+0000563813 00000 n 
+0000563876 00000 n 
+0000563939 00000 n 
+0000564003 00000 n 
+0000564067 00000 n 
+0000564130 00000 n 
+0000564193 00000 n 
+0000564256 00000 n 
+0000564320 00000 n 
+0000564384 00000 n 
+0000564448 00000 n 
+0000564512 00000 n 
+0000564575 00000 n 
+0000564638 00000 n 
+0000564701 00000 n 
+0000564764 00000 n 
+0000564828 00000 n 
+0000564891 00000 n 
+0000564954 00000 n 
+0000565017 00000 n 
+0000565205 00000 n 
+0000565268 00000 n 
+0000565331 00000 n 
+0000565394 00000 n 
+0000565456 00000 n 
+0000565519 00000 n 
+0000565582 00000 n 
+0000565644 00000 n 
+0000565833 00000 n 
+0000565896 00000 n 
+0000565959 00000 n 
+0000566022 00000 n 
+0000945288 00000 n 
+0000569572 00000 n 
+0000567936 00000 n 
+0000566200 00000 n 
+0000568060 00000 n 
+0000568123 00000 n 
+0000568186 00000 n 
+0000568249 00000 n 
+0000568312 00000 n 
+0000568375 00000 n 
+0000568438 00000 n 
+0000568501 00000 n 
+0000568564 00000 n 
+0000568627 00000 n 
+0000568691 00000 n 
+0000568755 00000 n 
+0000568817 00000 n 
+0000569132 00000 n 
+0000569195 00000 n 
+0000569384 00000 n 
+0000569446 00000 n 
+0000573206 00000 n 
+0000571448 00000 n 
+0000569688 00000 n 
+0000571572 00000 n 
+0000571635 00000 n 
+0000571760 00000 n 
+0000571823 00000 n 
+0000571886 00000 n 
+0000571949 00000 n 
+0000572012 00000 n 
+0000572075 00000 n 
+0000572138 00000 n 
+0000572201 00000 n 
+0000572264 00000 n 
+0000572327 00000 n 
+0000572389 00000 n 
+0000572452 00000 n 
+0000572640 00000 n 
+0000572703 00000 n 
+0000572765 00000 n 
+0000572828 00000 n 
+0000572891 00000 n 
+0000572954 00000 n 
+0000573143 00000 n 
+0000578602 00000 n 
+0000576604 00000 n 
+0000573322 00000 n 
+0000577405 00000 n 
+0000577468 00000 n 
+0000577531 00000 n 
+0000577594 00000 n 
+0000577657 00000 n 
+0000577847 00000 n 
+0000577910 00000 n 
+0000577973 00000 n 
+0000578036 00000 n 
+0000576776 00000 n 
+0000578099 00000 n 
+0000578161 00000 n 
+0000576929 00000 n 
+0000578224 00000 n 
+0000578287 00000 n 
+0000577088 00000 n 
+0000578350 00000 n 
+0000577247 00000 n 
+0000578413 00000 n 
+0000578475 00000 n 
+0000578538 00000 n 
+0000583202 00000 n 
+0000581311 00000 n 
+0000578732 00000 n 
+0000581435 00000 n 
+0000581498 00000 n 
+0000581561 00000 n 
+0000581751 00000 n 
+0000581814 00000 n 
+0000581877 00000 n 
+0000581940 00000 n 
+0000582003 00000 n 
+0000582066 00000 n 
+0000582129 00000 n 
+0000582192 00000 n 
+0000582256 00000 n 
+0000582319 00000 n 
+0000582382 00000 n 
+0000582445 00000 n 
+0000582508 00000 n 
+0000582572 00000 n 
+0000582760 00000 n 
+0000582823 00000 n 
+0000582886 00000 n 
+0000582949 00000 n 
+0000583013 00000 n 
+0000583076 00000 n 
+0000583139 00000 n 
+0000587511 00000 n 
+0000585560 00000 n 
+0000583360 00000 n 
+0000585684 00000 n 
+0000585747 00000 n 
+0000585810 00000 n 
+0000585873 00000 n 
+0000585936 00000 n 
+0000585999 00000 n 
+0000586061 00000 n 
+0000586124 00000 n 
+0000586187 00000 n 
+0000586250 00000 n 
+0000586313 00000 n 
+0000586376 00000 n 
+0000586440 00000 n 
+0000586504 00000 n 
+0000586567 00000 n 
+0000586756 00000 n 
+0000586819 00000 n 
+0000586883 00000 n 
+0000586946 00000 n 
+0000587009 00000 n 
+0000587072 00000 n 
+0000587135 00000 n 
+0000587198 00000 n 
+0000587260 00000 n 
+0000587323 00000 n 
+0000587386 00000 n 
+0000587448 00000 n 
+0000590386 00000 n 
+0000589137 00000 n 
+0000587669 00000 n 
+0000589436 00000 n 
+0000589499 00000 n 
+0000589563 00000 n 
+0000589282 00000 n 
+0000589752 00000 n 
+0000589815 00000 n 
+0000589879 00000 n 
+0000589942 00000 n 
+0000590005 00000 n 
+0000590068 00000 n 
+0000590131 00000 n 
+0000590195 00000 n 
+0000590259 00000 n 
+0000590322 00000 n 
+0000945413 00000 n 
+0000595753 00000 n 
+0000593134 00000 n 
+0000590544 00000 n 
+0000593600 00000 n 
+0000593789 00000 n 
+0000593852 00000 n 
+0000593916 00000 n 
+0000594230 00000 n 
+0000594418 00000 n 
+0000593288 00000 n 
+0000594481 00000 n 
+0000594544 00000 n 
+0000594608 00000 n 
+0000594672 00000 n 
+0000593443 00000 n 
+0000594736 00000 n 
+0000594800 00000 n 
+0000594864 00000 n 
+0000594928 00000 n 
+0000594992 00000 n 
+0000595055 00000 n 
+0000595119 00000 n 
+0000595182 00000 n 
+0000595245 00000 n 
+0000595309 00000 n 
+0000595373 00000 n 
+0000595563 00000 n 
+0000595626 00000 n 
+0000926672 00000 n 
+0000936495 00000 n 
+0000600341 00000 n 
+0000597603 00000 n 
+0000595897 00000 n 
+0000598262 00000 n 
+0000598513 00000 n 
+0000597766 00000 n 
+0000598701 00000 n 
+0000598764 00000 n 
+0000598828 00000 n 
+0000598892 00000 n 
+0000599018 00000 n 
+0000599081 00000 n 
+0000599144 00000 n 
+0000599207 00000 n 
+0000599271 00000 n 
+0000599396 00000 n 
+0000599459 00000 n 
+0000599522 00000 n 
+0000599585 00000 n 
+0000599649 00000 n 
+0000599712 00000 n 
+0000599774 00000 n 
+0000599837 00000 n 
+0000597930 00000 n 
+0000600026 00000 n 
+0000598101 00000 n 
+0000600151 00000 n 
+0000600214 00000 n 
+0000600278 00000 n 
+0000607862 00000 n 
+0000602662 00000 n 
+0000600499 00000 n 
+0000603127 00000 n 
+0000603442 00000 n 
+0000603505 00000 n 
+0000603569 00000 n 
+0000603632 00000 n 
+0000602816 00000 n 
+0000602972 00000 n 
+0000603695 00000 n 
+0000603758 00000 n 
+0000603821 00000 n 
+0000603884 00000 n 
+0000603946 00000 n 
+0000604008 00000 n 
+0000604071 00000 n 
+0000604135 00000 n 
+0000604199 00000 n 
+0000604263 00000 n 
+0000604327 00000 n 
+0000604390 00000 n 
+0000604453 00000 n 
+0000604516 00000 n 
+0000604579 00000 n 
+0000604642 00000 n 
+0000604701 00000 n 
+0000604764 00000 n 
+0000604827 00000 n 
+0000604891 00000 n 
+0000604955 00000 n 
+0000605018 00000 n 
+0000605081 00000 n 
+0000605144 00000 n 
+0000605207 00000 n 
+0000605270 00000 n 
+0000605333 00000 n 
+0000605396 00000 n 
+0000605459 00000 n 
+0000605523 00000 n 
+0000605586 00000 n 
+0000605649 00000 n 
+0000605712 00000 n 
+0000605775 00000 n 
+0000605838 00000 n 
+0000605901 00000 n 
+0000605964 00000 n 
+0000606027 00000 n 
+0000606091 00000 n 
+0000606154 00000 n 
+0000606218 00000 n 
+0000606282 00000 n 
+0000606346 00000 n 
+0000606410 00000 n 
+0000606474 00000 n 
+0000606538 00000 n 
+0000606602 00000 n 
+0000606666 00000 n 
+0000606730 00000 n 
+0000606792 00000 n 
+0000606855 00000 n 
+0000606918 00000 n 
+0000606981 00000 n 
+0000607045 00000 n 
+0000607108 00000 n 
+0000607170 00000 n 
+0000607232 00000 n 
+0000607295 00000 n 
+0000607358 00000 n 
+0000607421 00000 n 
+0000607484 00000 n 
+0000607547 00000 n 
+0000607610 00000 n 
+0000607673 00000 n 
+0000607736 00000 n 
+0000607799 00000 n 
+0000916622 00000 n 
+0000612801 00000 n 
+0000610333 00000 n 
+0000608006 00000 n 
+0000610967 00000 n 
+0000611030 00000 n 
+0000611094 00000 n 
+0000611158 00000 n 
+0000611222 00000 n 
+0000611286 00000 n 
+0000611350 00000 n 
+0000611413 00000 n 
+0000611476 00000 n 
+0000610496 00000 n 
+0000611664 00000 n 
+0000611727 00000 n 
+0000611790 00000 n 
+0000610643 00000 n 
+0000611853 00000 n 
+0000611917 00000 n 
+0000611981 00000 n 
+0000612045 00000 n 
+0000612361 00000 n 
+0000612424 00000 n 
+0000610795 00000 n 
+0000612548 00000 n 
+0000612611 00000 n 
+0000612675 00000 n 
+0000612738 00000 n 
+0000927051 00000 n 
+0000617917 00000 n 
+0000615522 00000 n 
+0000612959 00000 n 
+0000615831 00000 n 
+0000616146 00000 n 
+0000616209 00000 n 
+0000615667 00000 n 
+0000616398 00000 n 
+0000616461 00000 n 
+0000616525 00000 n 
+0000616589 00000 n 
+0000616653 00000 n 
+0000616716 00000 n 
+0000616778 00000 n 
+0000616841 00000 n 
+0000616905 00000 n 
+0000616969 00000 n 
+0000617159 00000 n 
+0000617222 00000 n 
+0000617285 00000 n 
+0000617349 00000 n 
+0000617413 00000 n 
+0000617476 00000 n 
+0000617539 00000 n 
+0000617602 00000 n 
+0000617665 00000 n 
+0000617728 00000 n 
+0000617791 00000 n 
+0000617854 00000 n 
+0000622889 00000 n 
+0000621120 00000 n 
+0000618075 00000 n 
+0000621244 00000 n 
+0000621307 00000 n 
+0000621370 00000 n 
+0000621431 00000 n 
+0000621494 00000 n 
+0000621556 00000 n 
+0000621620 00000 n 
+0000621684 00000 n 
+0000621748 00000 n 
+0000621811 00000 n 
+0000621875 00000 n 
+0000621939 00000 n 
+0000622003 00000 n 
+0000622193 00000 n 
+0000622256 00000 n 
+0000622319 00000 n 
+0000622382 00000 n 
+0000622445 00000 n 
+0000622509 00000 n 
+0000622572 00000 n 
+0000622635 00000 n 
+0000622698 00000 n 
+0000622762 00000 n 
+0000945538 00000 n 
+0000628860 00000 n 
+0000626274 00000 n 
+0000623033 00000 n 
+0000626398 00000 n 
+0000626524 00000 n 
+0000626587 00000 n 
+0000626651 00000 n 
+0000626714 00000 n 
+0000626778 00000 n 
+0000626839 00000 n 
+0000626903 00000 n 
+0000626966 00000 n 
+0000627028 00000 n 
+0000627091 00000 n 
+0000627154 00000 n 
+0000627218 00000 n 
+0000627281 00000 n 
+0000627344 00000 n 
+0000627407 00000 n 
+0000627470 00000 n 
+0000627533 00000 n 
+0000627722 00000 n 
+0000627785 00000 n 
+0000627848 00000 n 
+0000627911 00000 n 
+0000627974 00000 n 
+0000628037 00000 n 
+0000628100 00000 n 
+0000628163 00000 n 
+0000628227 00000 n 
+0000628290 00000 n 
+0000628353 00000 n 
+0000628416 00000 n 
+0000628479 00000 n 
+0000628543 00000 n 
+0000628607 00000 n 
+0000628671 00000 n 
+0000628734 00000 n 
+0000628797 00000 n 
+0000633620 00000 n 
+0000631792 00000 n 
+0000629004 00000 n 
+0000631916 00000 n 
+0000631979 00000 n 
+0000632042 00000 n 
+0000632105 00000 n 
+0000632167 00000 n 
+0000632229 00000 n 
+0000632292 00000 n 
+0000632355 00000 n 
+0000632419 00000 n 
+0000632483 00000 n 
+0000632546 00000 n 
+0000632609 00000 n 
+0000632673 00000 n 
+0000632736 00000 n 
+0000632799 00000 n 
+0000632862 00000 n 
+0000632926 00000 n 
+0000632990 00000 n 
+0000633054 00000 n 
+0000633117 00000 n 
+0000633180 00000 n 
+0000633243 00000 n 
+0000633307 00000 n 
+0000633370 00000 n 
+0000633433 00000 n 
+0000633494 00000 n 
+0000638932 00000 n 
+0000636846 00000 n 
+0000633736 00000 n 
+0000636970 00000 n 
+0000637096 00000 n 
+0000637159 00000 n 
+0000637222 00000 n 
+0000637285 00000 n 
+0000637349 00000 n 
+0000637413 00000 n 
+0000637476 00000 n 
+0000637666 00000 n 
+0000637729 00000 n 
+0000637793 00000 n 
+0000637856 00000 n 
+0000637919 00000 n 
+0000637982 00000 n 
+0000638045 00000 n 
+0000638108 00000 n 
+0000638172 00000 n 
+0000638236 00000 n 
+0000638299 00000 n 
+0000638363 00000 n 
+0000638427 00000 n 
 0000638491 00000 n 
-0000638555 00000 n 
-0000638619 00000 n 
-0000638682 00000 n 
-0000638746 00000 n 
-0000638810 00000 n 
-0000638874 00000 n 
-0000638937 00000 n 
-0000639000 00000 n 
-0000639062 00000 n 
-0000639126 00000 n 
-0000639189 00000 n 
-0000639252 00000 n 
-0000644658 00000 n 
-0000642316 00000 n 
-0000639459 00000 n 
-0000642440 00000 n 
-0000642503 00000 n 
-0000642566 00000 n 
-0000642629 00000 n 
-0000642692 00000 n 
-0000642755 00000 n 
-0000642818 00000 n 
-0000642882 00000 n 
-0000642945 00000 n 
-0000643009 00000 n 
-0000643073 00000 n 
-0000643137 00000 n 
-0000643200 00000 n 
-0000643263 00000 n 
-0000643326 00000 n 
-0000643390 00000 n 
-0000643453 00000 n 
-0000643516 00000 n 
-0000643579 00000 n 
-0000643642 00000 n 
-0000643706 00000 n 
-0000643769 00000 n 
-0000643832 00000 n 
-0000643895 00000 n 
-0000643958 00000 n 
-0000644021 00000 n 
-0000644084 00000 n 
+0000638554 00000 n 
+0000638617 00000 n 
+0000638679 00000 n 
+0000638743 00000 n 
+0000638806 00000 n 
+0000638869 00000 n 
+0000644275 00000 n 
+0000641933 00000 n 
+0000639076 00000 n 
+0000642057 00000 n 
+0000642120 00000 n 
+0000642183 00000 n 
+0000642246 00000 n 
+0000642309 00000 n 
+0000642372 00000 n 
+0000642435 00000 n 
+0000642499 00000 n 
+0000642562 00000 n 
+0000642626 00000 n 
+0000642690 00000 n 
+0000642754 00000 n 
+0000642817 00000 n 
+0000642880 00000 n 
+0000642943 00000 n 
+0000643007 00000 n 
+0000643070 00000 n 
+0000643133 00000 n 
+0000643196 00000 n 
+0000643259 00000 n 
+0000643323 00000 n 
+0000643386 00000 n 
+0000643449 00000 n 
+0000643512 00000 n 
+0000643575 00000 n 
+0000643638 00000 n 
+0000643701 00000 n 
+0000643764 00000 n 
+0000643828 00000 n 
+0000643892 00000 n 
+0000643956 00000 n 
+0000644020 00000 n 
+0000644083 00000 n 
 0000644147 00000 n 
 0000644211 00000 n 
-0000644275 00000 n 
-0000644339 00000 n 
-0000644403 00000 n 
-0000644466 00000 n 
-0000644530 00000 n 
-0000644594 00000 n 
-0000649187 00000 n 
-0000647673 00000 n 
-0000644760 00000 n 
-0000647797 00000 n 
-0000647860 00000 n 
-0000647922 00000 n 
-0000647985 00000 n 
-0000648048 00000 n 
-0000648111 00000 n 
-0000648175 00000 n 
-0000648238 00000 n 
-0000648426 00000 n 
-0000648489 00000 n 
-0000648553 00000 n 
-0000648616 00000 n 
-0000648679 00000 n 
-0000648742 00000 n 
-0000648806 00000 n 
-0000648870 00000 n 
-0000648933 00000 n 
-0000648997 00000 n 
-0000649060 00000 n 
-0000649123 00000 n 
-0000652920 00000 n 
-0000651531 00000 n 
-0000649317 00000 n 
-0000651655 00000 n 
-0000651780 00000 n 
-0000651843 00000 n 
-0000651906 00000 n 
-0000651968 00000 n 
-0000652031 00000 n 
-0000652095 00000 n 
-0000652159 00000 n 
-0000652222 00000 n 
-0000652286 00000 n 
-0000652476 00000 n 
-0000652539 00000 n 
-0000652603 00000 n 
-0000652666 00000 n 
-0000652729 00000 n 
-0000652793 00000 n 
-0000652857 00000 n 
-0000945948 00000 n 
-0000657940 00000 n 
-0000656431 00000 n 
-0000653064 00000 n 
-0000656555 00000 n 
-0000656618 00000 n 
-0000656680 00000 n 
-0000656743 00000 n 
-0000656868 00000 n 
-0000656931 00000 n 
-0000656994 00000 n 
-0000657057 00000 n 
-0000657120 00000 n 
-0000657183 00000 n 
-0000657246 00000 n 
-0000657309 00000 n 
-0000657498 00000 n 
-0000657561 00000 n 
-0000657624 00000 n 
-0000657687 00000 n 
-0000657751 00000 n 
-0000657814 00000 n 
-0000657877 00000 n 
-0000661485 00000 n 
-0000659592 00000 n 
-0000658056 00000 n 
-0000659716 00000 n 
-0000659779 00000 n 
-0000659841 00000 n 
-0000659904 00000 n 
-0000659968 00000 n 
-0000660032 00000 n 
-0000660095 00000 n 
-0000660159 00000 n 
-0000660223 00000 n 
-0000660286 00000 n 
-0000660349 00000 n 
-0000660411 00000 n 
-0000660473 00000 n 
-0000660536 00000 n 
-0000660600 00000 n 
-0000660664 00000 n 
-0000660727 00000 n 
-0000660790 00000 n 
-0000660979 00000 n 
-0000661042 00000 n 
-0000661105 00000 n 
-0000661168 00000 n 
-0000661232 00000 n 
-0000661295 00000 n 
-0000661359 00000 n 
-0000661422 00000 n 
-0000663583 00000 n 
-0000663396 00000 n 
-0000661629 00000 n 
-0000663520 00000 n 
-0000665493 00000 n 
-0000665306 00000 n 
-0000663671 00000 n 
-0000665430 00000 n 
-0000667410 00000 n 
-0000667223 00000 n 
-0000665581 00000 n 
-0000667347 00000 n 
-0000671324 00000 n 
-0000669639 00000 n 
-0000667498 00000 n 
-0000670254 00000 n 
-0000670566 00000 n 
-0000669802 00000 n 
-0000669949 00000 n 
-0000670102 00000 n 
-0000670755 00000 n 
-0000670818 00000 n 
-0000670881 00000 n 
-0000670944 00000 n 
-0000671007 00000 n 
-0000671070 00000 n 
-0000671134 00000 n 
-0000671197 00000 n 
-0000946073 00000 n 
-0000673933 00000 n 
-0000672798 00000 n 
-0000671440 00000 n 
-0000672922 00000 n 
-0000673048 00000 n 
-0000673111 00000 n 
-0000673174 00000 n 
-0000673238 00000 n 
-0000673302 00000 n 
-0000673491 00000 n 
-0000673553 00000 n 
-0000673743 00000 n 
-0000673806 00000 n 
-0000673869 00000 n 
-0000678715 00000 n 
-0000676512 00000 n 
-0000674035 00000 n 
-0000676636 00000 n 
-0000676951 00000 n 
-0000677014 00000 n 
-0000677201 00000 n 
-0000677264 00000 n 
-0000677327 00000 n 
-0000677390 00000 n 
-0000677452 00000 n 
-0000677515 00000 n 
-0000677579 00000 n 
-0000677643 00000 n 
-0000677706 00000 n 
-0000677769 00000 n 
-0000677832 00000 n 
-0000677895 00000 n 
-0000677959 00000 n 
-0000678023 00000 n 
-0000678212 00000 n 
-0000678275 00000 n 
-0000678338 00000 n 
-0000678401 00000 n 
-0000678463 00000 n 
-0000678526 00000 n 
-0000678589 00000 n 
-0000678652 00000 n 
-0000687647 00000 n 
-0000686372 00000 n 
-0000682357 00000 n 
-0000678817 00000 n 
-0000682660 00000 n 
-0000682785 00000 n 
-0000682848 00000 n 
-0000682911 00000 n 
-0000682974 00000 n 
-0000683037 00000 n 
-0000683100 00000 n 
-0000683163 00000 n 
-0000683226 00000 n 
-0000683289 00000 n 
-0000683352 00000 n 
-0000683415 00000 n 
-0000683478 00000 n 
-0000683541 00000 n 
-0000683603 00000 n 
-0000683666 00000 n 
-0000683729 00000 n 
-0000683792 00000 n 
-0000683855 00000 n 
-0000683918 00000 n 
-0000683981 00000 n 
-0000684044 00000 n 
-0000684107 00000 n 
-0000684168 00000 n 
-0000684231 00000 n 
-0000684294 00000 n 
-0000684357 00000 n 
-0000684419 00000 n 
-0000684481 00000 n 
-0000684544 00000 n 
-0000684607 00000 n 
-0000684670 00000 n 
-0000684733 00000 n 
-0000684796 00000 n 
-0000684859 00000 n 
-0000684922 00000 n 
-0000684985 00000 n 
-0000685048 00000 n 
-0000685111 00000 n 
-0000685174 00000 n 
-0000685237 00000 n 
-0000685300 00000 n 
-0000685363 00000 n 
-0000685426 00000 n 
-0000685489 00000 n 
-0000685552 00000 n 
-0000685615 00000 n 
-0000685678 00000 n 
-0000685741 00000 n 
-0000685804 00000 n 
-0000685867 00000 n 
-0000685930 00000 n 
-0000686118 00000 n 
-0000682502 00000 n 
-0000686181 00000 n 
-0000686245 00000 n 
-0000739124 00000 n 
-0000687523 00000 n 
-0000686474 00000 n 
-0000738493 00000 n 
-0000738556 00000 n 
-0000738682 00000 n 
-0000738745 00000 n 
-0000738809 00000 n 
-0000738872 00000 n 
-0000739061 00000 n 
-0000743759 00000 n 
-0000741361 00000 n 
-0000739277 00000 n 
-0000741485 00000 n 
-0000741548 00000 n 
-0000741611 00000 n 
-0000741674 00000 n 
-0000741737 00000 n 
-0000741801 00000 n 
-0000741865 00000 n 
-0000741928 00000 n 
-0000741991 00000 n 
-0000742054 00000 n 
-0000742117 00000 n 
-0000742180 00000 n 
-0000742243 00000 n 
-0000742306 00000 n 
-0000742369 00000 n 
-0000742432 00000 n 
-0000742495 00000 n 
-0000742684 00000 n 
-0000742872 00000 n 
-0000742935 00000 n 
-0000742998 00000 n 
-0000743061 00000 n 
-0000743125 00000 n 
-0000743188 00000 n 
-0000743252 00000 n 
-0000743315 00000 n 
-0000743379 00000 n 
-0000743442 00000 n 
-0000743506 00000 n 
-0000743569 00000 n 
-0000743633 00000 n 
-0000748246 00000 n 
-0000746734 00000 n 
-0000743861 00000 n 
-0000746858 00000 n 
-0000746984 00000 n 
-0000747047 00000 n 
-0000747111 00000 n 
-0000747174 00000 n 
-0000747238 00000 n 
-0000747301 00000 n 
-0000747489 00000 n 
-0000747552 00000 n 
-0000747615 00000 n 
-0000747678 00000 n 
-0000747741 00000 n 
-0000747930 00000 n 
-0000747993 00000 n 
-0000748057 00000 n 
-0000748120 00000 n 
-0000748183 00000 n 
-0000946198 00000 n 
-0000752464 00000 n 
-0000750705 00000 n 
-0000748348 00000 n 
-0000750829 00000 n 
-0000750892 00000 n 
-0000750955 00000 n 
-0000751019 00000 n 
-0000751083 00000 n 
-0000751146 00000 n 
-0000751208 00000 n 
-0000751271 00000 n 
-0000751334 00000 n 
-0000751397 00000 n 
-0000751460 00000 n 
-0000751523 00000 n 
-0000751585 00000 n 
-0000751773 00000 n 
-0000751836 00000 n 
-0000751899 00000 n 
-0000751962 00000 n 
-0000752151 00000 n 
-0000752338 00000 n 
-0000756135 00000 n 
-0000754626 00000 n 
-0000752566 00000 n 
-0000754750 00000 n 
-0000754876 00000 n 
-0000755065 00000 n 
-0000755254 00000 n 
-0000755443 00000 n 
-0000755506 00000 n 
-0000755694 00000 n 
-0000755883 00000 n 
-0000756072 00000 n 
-0000760271 00000 n 
-0000758696 00000 n 
-0000756237 00000 n 
-0000758820 00000 n 
-0000758883 00000 n 
-0000758947 00000 n 
-0000759010 00000 n 
-0000759073 00000 n 
-0000759262 00000 n 
-0000759325 00000 n 
-0000759388 00000 n 
-0000759452 00000 n 
-0000759515 00000 n 
-0000759705 00000 n 
-0000759768 00000 n 
-0000759957 00000 n 
-0000760020 00000 n 
-0000760083 00000 n 
-0000760146 00000 n 
-0000760209 00000 n 
-0000764803 00000 n 
-0000762973 00000 n 
-0000760387 00000 n 
-0000763097 00000 n 
-0000763160 00000 n 
-0000763349 00000 n 
-0000763538 00000 n 
-0000763601 00000 n 
-0000763665 00000 n 
-0000763855 00000 n 
-0000763918 00000 n 
-0000763981 00000 n 
-0000764045 00000 n 
-0000764108 00000 n 
-0000764171 00000 n 
-0000764234 00000 n 
-0000764298 00000 n 
-0000764362 00000 n 
-0000764425 00000 n 
-0000764488 00000 n 
-0000764551 00000 n 
-0000764613 00000 n 
-0000764677 00000 n 
-0000764740 00000 n 
-0000770128 00000 n 
-0000767672 00000 n 
-0000764933 00000 n 
-0000767796 00000 n 
-0000767859 00000 n 
-0000767921 00000 n 
-0000767984 00000 n 
-0000768048 00000 n 
-0000768111 00000 n 
-0000768174 00000 n 
-0000768238 00000 n 
-0000768301 00000 n 
-0000768364 00000 n 
-0000768428 00000 n 
-0000768490 00000 n 
-0000768553 00000 n 
-0000768617 00000 n 
-0000768680 00000 n 
-0000768743 00000 n 
-0000768807 00000 n 
-0000768870 00000 n 
-0000768933 00000 n 
-0000768996 00000 n 
-0000769059 00000 n 
-0000769122 00000 n 
-0000769186 00000 n 
-0000769249 00000 n 
-0000769312 00000 n 
-0000769376 00000 n 
-0000769438 00000 n 
-0000769502 00000 n 
-0000769565 00000 n 
-0000769628 00000 n 
-0000769813 00000 n 
-0000770002 00000 n 
-0000774221 00000 n 
-0000772965 00000 n 
-0000770244 00000 n 
-0000773089 00000 n 
-0000773152 00000 n 
-0000773277 00000 n 
-0000773340 00000 n 
-0000773403 00000 n 
-0000773466 00000 n 
-0000773654 00000 n 
-0000773717 00000 n 
-0000773780 00000 n 
-0000773843 00000 n 
-0000773906 00000 n 
-0000773969 00000 n 
-0000774158 00000 n 
-0000946323 00000 n 
-0000778094 00000 n 
-0000776836 00000 n 
-0000774337 00000 n 
-0000776960 00000 n 
-0000777023 00000 n 
-0000777086 00000 n 
-0000777149 00000 n 
-0000777338 00000 n 
-0000777401 00000 n 
-0000777590 00000 n 
-0000777653 00000 n 
-0000777716 00000 n 
-0000777779 00000 n 
-0000777842 00000 n 
-0000777905 00000 n 
-0000777968 00000 n 
-0000782679 00000 n 
-0000780873 00000 n 
-0000778196 00000 n 
-0000781360 00000 n 
-0000781423 00000 n 
-0000781546 00000 n 
-0000781608 00000 n 
-0000781671 00000 n 
-0000781735 00000 n 
-0000781798 00000 n 
-0000781861 00000 n 
-0000781027 00000 n 
-0000781924 00000 n 
-0000781987 00000 n 
-0000781191 00000 n 
-0000782176 00000 n 
-0000782239 00000 n 
-0000782302 00000 n 
-0000782490 00000 n 
-0000782553 00000 n 
-0000782616 00000 n 
-0000787020 00000 n 
-0000785783 00000 n 
-0000782795 00000 n 
-0000786075 00000 n 
-0000786138 00000 n 
-0000786202 00000 n 
-0000786265 00000 n 
-0000786328 00000 n 
-0000786517 00000 n 
-0000786580 00000 n 
-0000786642 00000 n 
-0000785928 00000 n 
-0000786705 00000 n 
-0000786768 00000 n 
-0000786831 00000 n 
-0000786894 00000 n 
-0000786957 00000 n 
-0000788736 00000 n 
-0000788170 00000 n 
-0000787136 00000 n 
-0000788294 00000 n 
-0000788357 00000 n 
-0000788547 00000 n 
-0000788610 00000 n 
-0000788673 00000 n 
-0000793381 00000 n 
-0000791366 00000 n 
-0000788852 00000 n 
-0000791490 00000 n 
-0000791679 00000 n 
-0000791742 00000 n 
-0000791805 00000 n 
-0000791868 00000 n 
-0000791930 00000 n 
-0000791993 00000 n 
-0000792056 00000 n 
-0000792120 00000 n 
-0000792183 00000 n 
-0000792246 00000 n 
-0000792309 00000 n 
-0000792371 00000 n 
-0000792434 00000 n 
-0000792496 00000 n 
-0000792560 00000 n 
-0000792623 00000 n 
-0000792685 00000 n 
-0000792748 00000 n 
-0000792811 00000 n 
-0000792875 00000 n 
-0000792938 00000 n 
-0000793001 00000 n 
-0000793064 00000 n 
-0000793128 00000 n 
-0000793191 00000 n 
-0000793254 00000 n 
-0000793317 00000 n 
-0000798595 00000 n 
-0000796827 00000 n 
-0000793511 00000 n 
-0000796951 00000 n 
-0000797014 00000 n 
-0000797076 00000 n 
-0000797139 00000 n 
-0000797203 00000 n 
-0000797267 00000 n 
-0000797331 00000 n 
-0000797394 00000 n 
-0000797457 00000 n 
-0000797520 00000 n 
-0000797584 00000 n 
-0000797647 00000 n 
-0000797711 00000 n 
-0000797774 00000 n 
-0000797837 00000 n 
-0000797900 00000 n 
-0000797963 00000 n 
-0000798027 00000 n 
-0000798089 00000 n 
-0000798153 00000 n 
-0000798216 00000 n 
-0000798279 00000 n 
-0000798343 00000 n 
-0000798406 00000 n 
-0000798469 00000 n 
-0000798532 00000 n 
-0000946448 00000 n 
-0000802945 00000 n 
-0000801113 00000 n 
-0000798711 00000 n 
-0000801237 00000 n 
-0000801300 00000 n 
-0000801363 00000 n 
-0000801426 00000 n 
-0000801489 00000 n 
-0000801553 00000 n 
-0000801615 00000 n 
-0000801678 00000 n 
-0000801742 00000 n 
-0000801806 00000 n 
-0000801869 00000 n 
-0000801932 00000 n 
-0000801996 00000 n 
-0000802059 00000 n 
-0000802123 00000 n 
-0000802187 00000 n 
-0000802250 00000 n 
-0000802313 00000 n 
-0000802376 00000 n 
-0000802440 00000 n 
-0000802503 00000 n 
-0000802567 00000 n 
-0000802630 00000 n 
-0000802693 00000 n 
-0000802756 00000 n 
-0000802819 00000 n 
-0000802882 00000 n 
-0000807758 00000 n 
-0000805883 00000 n 
-0000803089 00000 n 
-0000806181 00000 n 
-0000806244 00000 n 
-0000806307 00000 n 
-0000806371 00000 n 
-0000806433 00000 n 
-0000806496 00000 n 
-0000806028 00000 n 
-0000806560 00000 n 
-0000806623 00000 n 
-0000806685 00000 n 
-0000806748 00000 n 
-0000806811 00000 n 
-0000806874 00000 n 
-0000806936 00000 n 
-0000806999 00000 n 
-0000807062 00000 n 
-0000807125 00000 n 
-0000807188 00000 n 
-0000807251 00000 n 
-0000807314 00000 n 
-0000807377 00000 n 
-0000807440 00000 n 
-0000807504 00000 n 
-0000807568 00000 n 
-0000807631 00000 n 
-0000807695 00000 n 
-0000812427 00000 n 
-0000810738 00000 n 
-0000807902 00000 n 
-0000811041 00000 n 
-0000811104 00000 n 
-0000811167 00000 n 
-0000811229 00000 n 
-0000811293 00000 n 
-0000811356 00000 n 
-0000811419 00000 n 
-0000811482 00000 n 
-0000811545 00000 n 
-0000811608 00000 n 
-0000811671 00000 n 
-0000811735 00000 n 
-0000811798 00000 n 
-0000811861 00000 n 
-0000811924 00000 n 
-0000811987 00000 n 
-0000812050 00000 n 
-0000812112 00000 n 
-0000812175 00000 n 
-0000810883 00000 n 
-0000812238 00000 n 
-0000812301 00000 n 
-0000812364 00000 n 
-0000817837 00000 n 
-0000815641 00000 n 
-0000812529 00000 n 
-0000815939 00000 n 
-0000816002 00000 n 
-0000816065 00000 n 
-0000816126 00000 n 
-0000816189 00000 n 
-0000816252 00000 n 
-0000816315 00000 n 
-0000816378 00000 n 
-0000816441 00000 n 
-0000816505 00000 n 
-0000816568 00000 n 
-0000816631 00000 n 
-0000816695 00000 n 
-0000816758 00000 n 
-0000816822 00000 n 
-0000816886 00000 n 
-0000816949 00000 n 
-0000817012 00000 n 
-0000817076 00000 n 
-0000817140 00000 n 
-0000817204 00000 n 
-0000817267 00000 n 
-0000817330 00000 n 
-0000817394 00000 n 
-0000815786 00000 n 
-0000817457 00000 n 
-0000817520 00000 n 
-0000817583 00000 n 
-0000817646 00000 n 
-0000817709 00000 n 
-0000817773 00000 n 
-0000822151 00000 n 
-0000820451 00000 n 
-0000817981 00000 n 
-0000820759 00000 n 
-0000820822 00000 n 
-0000820885 00000 n 
-0000820949 00000 n 
-0000821012 00000 n 
-0000821075 00000 n 
-0000821138 00000 n 
-0000821202 00000 n 
-0000821265 00000 n 
-0000821329 00000 n 
-0000821393 00000 n 
-0000821457 00000 n 
-0000821521 00000 n 
-0000820596 00000 n 
-0000821584 00000 n 
-0000821647 00000 n 
-0000821711 00000 n 
-0000821773 00000 n 
-0000821836 00000 n 
-0000821899 00000 n 
-0000821963 00000 n 
-0000822026 00000 n 
-0000822089 00000 n 
-0000826710 00000 n 
-0000824702 00000 n 
-0000822295 00000 n 
-0000825005 00000 n 
-0000825068 00000 n 
-0000825131 00000 n 
-0000825194 00000 n 
-0000825257 00000 n 
-0000825320 00000 n 
-0000824847 00000 n 
-0000825384 00000 n 
-0000825447 00000 n 
-0000825509 00000 n 
-0000825572 00000 n 
-0000825635 00000 n 
-0000825698 00000 n 
-0000825761 00000 n 
-0000825825 00000 n 
-0000825888 00000 n 
-0000825951 00000 n 
-0000826014 00000 n 
-0000826078 00000 n 
-0000826142 00000 n 
-0000826205 00000 n 
-0000826268 00000 n 
-0000826331 00000 n 
-0000826395 00000 n 
-0000826458 00000 n 
-0000826521 00000 n 
-0000826585 00000 n 
-0000826647 00000 n 
-0000946573 00000 n 
-0000832920 00000 n 
-0000829639 00000 n 
-0000826868 00000 n 
-0000829937 00000 n 
-0000830000 00000 n 
-0000830064 00000 n 
-0000830128 00000 n 
-0000830192 00000 n 
-0000830255 00000 n 
-0000830319 00000 n 
-0000830383 00000 n 
-0000830447 00000 n 
-0000830510 00000 n 
-0000830574 00000 n 
-0000830638 00000 n 
-0000830701 00000 n 
-0000830764 00000 n 
-0000830828 00000 n 
-0000830891 00000 n 
-0000830954 00000 n 
-0000831016 00000 n 
-0000831079 00000 n 
-0000831142 00000 n 
-0000831205 00000 n 
-0000831268 00000 n 
-0000831332 00000 n 
-0000831396 00000 n 
-0000831460 00000 n 
-0000831524 00000 n 
-0000831588 00000 n 
-0000831652 00000 n 
-0000831715 00000 n 
-0000829784 00000 n 
-0000831778 00000 n 
-0000831842 00000 n 
-0000831906 00000 n 
-0000831968 00000 n 
-0000832031 00000 n 
-0000832095 00000 n 
-0000832159 00000 n 
-0000832222 00000 n 
-0000832285 00000 n 
-0000832349 00000 n 
-0000832412 00000 n 
-0000832476 00000 n 
-0000832539 00000 n 
-0000832602 00000 n 
-0000832665 00000 n 
-0000832728 00000 n 
-0000832792 00000 n 
-0000832856 00000 n 
-0000930872 00000 n 
-0000837532 00000 n 
-0000835832 00000 n 
-0000833036 00000 n 
-0000835956 00000 n 
-0000836019 00000 n 
-0000836081 00000 n 
-0000836144 00000 n 
-0000836207 00000 n 
-0000836271 00000 n 
-0000836333 00000 n 
-0000836397 00000 n 
-0000836460 00000 n 
-0000836524 00000 n 
-0000836586 00000 n 
-0000836649 00000 n 
-0000836713 00000 n 
-0000836776 00000 n 
-0000836839 00000 n 
-0000836903 00000 n 
-0000836966 00000 n 
-0000837029 00000 n 
-0000837092 00000 n 
-0000837155 00000 n 
-0000837219 00000 n 
-0000837281 00000 n 
-0000837343 00000 n 
-0000837406 00000 n 
-0000837469 00000 n 
-0000842652 00000 n 
-0000840269 00000 n 
-0000837676 00000 n 
-0000840566 00000 n 
-0000840414 00000 n 
-0000840629 00000 n 
-0000840692 00000 n 
-0000840755 00000 n 
-0000840817 00000 n 
-0000840881 00000 n 
-0000840944 00000 n 
-0000841007 00000 n 
-0000841071 00000 n 
-0000841134 00000 n 
-0000841197 00000 n 
-0000841261 00000 n 
-0000841324 00000 n 
-0000841387 00000 n 
-0000841451 00000 n 
-0000841514 00000 n 
-0000841578 00000 n 
-0000841637 00000 n 
-0000841701 00000 n 
-0000841764 00000 n 
-0000841828 00000 n 
-0000841891 00000 n 
-0000841955 00000 n 
-0000842018 00000 n 
-0000842082 00000 n 
-0000842146 00000 n 
-0000842210 00000 n 
-0000842274 00000 n 
-0000842337 00000 n 
-0000842400 00000 n 
-0000842463 00000 n 
-0000842526 00000 n 
-0000842589 00000 n 
-0000847759 00000 n 
-0000845932 00000 n 
-0000842768 00000 n 
-0000846056 00000 n 
-0000846119 00000 n 
-0000846181 00000 n 
-0000846244 00000 n 
-0000846307 00000 n 
-0000846371 00000 n 
-0000846434 00000 n 
-0000846497 00000 n 
-0000846560 00000 n 
-0000846622 00000 n 
-0000846685 00000 n 
-0000846748 00000 n 
-0000846811 00000 n 
-0000846874 00000 n 
-0000846937 00000 n 
-0000847001 00000 n 
-0000847064 00000 n 
-0000847127 00000 n 
-0000847189 00000 n 
-0000847253 00000 n 
-0000847316 00000 n 
-0000847380 00000 n 
-0000847443 00000 n 
-0000847506 00000 n 
-0000847570 00000 n 
-0000847633 00000 n 
-0000847696 00000 n 
-0000852236 00000 n 
-0000850085 00000 n 
-0000847889 00000 n 
-0000850209 00000 n 
-0000850272 00000 n 
-0000850335 00000 n 
-0000850398 00000 n 
-0000850460 00000 n 
-0000850523 00000 n 
-0000850586 00000 n 
-0000850649 00000 n 
-0000850712 00000 n 
-0000850775 00000 n 
-0000850839 00000 n 
-0000850902 00000 n 
-0000850966 00000 n 
-0000851030 00000 n 
-0000851093 00000 n 
-0000851156 00000 n 
-0000851220 00000 n 
-0000851283 00000 n 
-0000851347 00000 n 
-0000851411 00000 n 
-0000851475 00000 n 
-0000851538 00000 n 
-0000851601 00000 n 
-0000851664 00000 n 
-0000851725 00000 n 
-0000851789 00000 n 
-0000851853 00000 n 
-0000851917 00000 n 
-0000851980 00000 n 
-0000852044 00000 n 
-0000852108 00000 n 
-0000852172 00000 n 
-0000854088 00000 n 
-0000853457 00000 n 
-0000852352 00000 n 
-0000853581 00000 n 
-0000853644 00000 n 
-0000853708 00000 n 
-0000853771 00000 n 
-0000853834 00000 n 
-0000853897 00000 n 
-0000853961 00000 n 
-0000854024 00000 n 
-0000946698 00000 n 
-0000859147 00000 n 
-0000856727 00000 n 
-0000854176 00000 n 
-0000857194 00000 n 
-0000857383 00000 n 
-0000857572 00000 n 
-0000857635 00000 n 
-0000857699 00000 n 
-0000857763 00000 n 
-0000856881 00000 n 
-0000857037 00000 n 
-0000857826 00000 n 
-0000857889 00000 n 
-0000857952 00000 n 
-0000858016 00000 n 
-0000858079 00000 n 
-0000858269 00000 n 
-0000858332 00000 n 
-0000858395 00000 n 
-0000858458 00000 n 
-0000858521 00000 n 
-0000858709 00000 n 
-0000858772 00000 n 
-0000858835 00000 n 
-0000858897 00000 n 
-0000858960 00000 n 
-0000859022 00000 n 
-0000862590 00000 n 
-0000861143 00000 n 
-0000859291 00000 n 
-0000861267 00000 n 
-0000861330 00000 n 
-0000861456 00000 n 
-0000861519 00000 n 
-0000861583 00000 n 
-0000861771 00000 n 
-0000861834 00000 n 
-0000861897 00000 n 
-0000861960 00000 n 
-0000862024 00000 n 
-0000862087 00000 n 
-0000862150 00000 n 
-0000862213 00000 n 
-0000862400 00000 n 
-0000862463 00000 n 
-0000862527 00000 n 
-0000865751 00000 n 
-0000864361 00000 n 
-0000862720 00000 n 
-0000864485 00000 n 
-0000864548 00000 n 
-0000864611 00000 n 
-0000864675 00000 n 
-0000864739 00000 n 
-0000864803 00000 n 
-0000864866 00000 n 
-0000864929 00000 n 
-0000865118 00000 n 
-0000865181 00000 n 
-0000865245 00000 n 
-0000865308 00000 n 
-0000865371 00000 n 
-0000865435 00000 n 
-0000865624 00000 n 
-0000865687 00000 n 
-0000869709 00000 n 
-0000868134 00000 n 
-0000865895 00000 n 
-0000868258 00000 n 
-0000868321 00000 n 
-0000868384 00000 n 
-0000868448 00000 n 
-0000868509 00000 n 
-0000868635 00000 n 
-0000868698 00000 n 
-0000868761 00000 n 
-0000868825 00000 n 
-0000868889 00000 n 
-0000869015 00000 n 
-0000869078 00000 n 
-0000869140 00000 n 
-0000869204 00000 n 
-0000869268 00000 n 
-0000869331 00000 n 
-0000869394 00000 n 
-0000869583 00000 n 
-0000869646 00000 n 
-0000873093 00000 n 
-0000871718 00000 n 
-0000869825 00000 n 
-0000872017 00000 n 
-0000872080 00000 n 
-0000872143 00000 n 
-0000872207 00000 n 
-0000872397 00000 n 
-0000872460 00000 n 
-0000872523 00000 n 
-0000872587 00000 n 
-0000871863 00000 n 
-0000872777 00000 n 
-0000872840 00000 n 
-0000872903 00000 n 
-0000872966 00000 n 
-0000873029 00000 n 
-0000879410 00000 n 
-0000876321 00000 n 
-0000873223 00000 n 
-0000876445 00000 n 
-0000876634 00000 n 
-0000876697 00000 n 
-0000876884 00000 n 
-0000876947 00000 n 
-0000877011 00000 n 
-0000877074 00000 n 
-0000877138 00000 n 
-0000877202 00000 n 
-0000877265 00000 n 
-0000877329 00000 n 
-0000877392 00000 n 
-0000877455 00000 n 
-0000877518 00000 n 
-0000877581 00000 n 
-0000877643 00000 n 
-0000877705 00000 n 
-0000877769 00000 n 
-0000877833 00000 n 
-0000877897 00000 n 
-0000877961 00000 n 
-0000878025 00000 n 
-0000878089 00000 n 
-0000878152 00000 n 
-0000878215 00000 n 
-0000878278 00000 n 
-0000878341 00000 n 
-0000878405 00000 n 
-0000878468 00000 n 
-0000878531 00000 n 
-0000878594 00000 n 
-0000878658 00000 n 
-0000878843 00000 n 
-0000878906 00000 n 
-0000878969 00000 n 
-0000879033 00000 n 
-0000879095 00000 n 
-0000879159 00000 n 
-0000879223 00000 n 
-0000879286 00000 n 
-0000879348 00000 n 
-0000946823 00000 n 
-0000883228 00000 n 
-0000881149 00000 n 
-0000879554 00000 n 
-0000881273 00000 n 
-0000881587 00000 n 
-0000881649 00000 n 
-0000881712 00000 n 
-0000881775 00000 n 
-0000881838 00000 n 
-0000881901 00000 n 
-0000881964 00000 n 
-0000882027 00000 n 
-0000882090 00000 n 
-0000882153 00000 n 
-0000882216 00000 n 
-0000882279 00000 n 
-0000882343 00000 n 
-0000882407 00000 n 
-0000882469 00000 n 
-0000882532 00000 n 
-0000882722 00000 n 
-0000882785 00000 n 
-0000882848 00000 n 
-0000882911 00000 n 
-0000882974 00000 n 
-0000883038 00000 n 
-0000883102 00000 n 
-0000883166 00000 n 
-0000885922 00000 n 
-0000884086 00000 n 
-0000883358 00000 n 
-0000884210 00000 n 
-0000884273 00000 n 
-0000884335 00000 n 
-0000884398 00000 n 
-0000884462 00000 n 
-0000884524 00000 n 
-0000884587 00000 n 
-0000884651 00000 n 
-0000884715 00000 n 
-0000884778 00000 n 
-0000884841 00000 n 
-0000884905 00000 n 
-0000884969 00000 n 
-0000885033 00000 n 
-0000885095 00000 n 
-0000885158 00000 n 
-0000885222 00000 n 
-0000885286 00000 n 
-0000885350 00000 n 
-0000885413 00000 n 
-0000885476 00000 n 
-0000885540 00000 n 
-0000885604 00000 n 
-0000885668 00000 n 
-0000885731 00000 n 
-0000885794 00000 n 
-0000885858 00000 n 
-0000888675 00000 n 
-0000886777 00000 n 
-0000886010 00000 n 
-0000886901 00000 n 
-0000886964 00000 n 
-0000887027 00000 n 
-0000887091 00000 n 
-0000887153 00000 n 
-0000887216 00000 n 
-0000887280 00000 n 
-0000887344 00000 n 
-0000887408 00000 n 
-0000887471 00000 n 
-0000887534 00000 n 
-0000887598 00000 n 
-0000887662 00000 n 
-0000887724 00000 n 
-0000887787 00000 n 
-0000887851 00000 n 
-0000887915 00000 n 
-0000888104 00000 n 
-0000888167 00000 n 
-0000888230 00000 n 
-0000888294 00000 n 
-0000888358 00000 n 
-0000888422 00000 n 
-0000888485 00000 n 
-0000888548 00000 n 
-0000888612 00000 n 
-0000891030 00000 n 
-0000889572 00000 n 
-0000888777 00000 n 
-0000889696 00000 n 
-0000889759 00000 n 
-0000889823 00000 n 
-0000889886 00000 n 
-0000889949 00000 n 
-0000890013 00000 n 
-0000890076 00000 n 
-0000890140 00000 n 
-0000890203 00000 n 
-0000890266 00000 n 
-0000890330 00000 n 
-0000890394 00000 n 
-0000890458 00000 n 
-0000890521 00000 n 
-0000890584 00000 n 
-0000890648 00000 n 
-0000890712 00000 n 
-0000890775 00000 n 
-0000890838 00000 n 
-0000890902 00000 n 
-0000890966 00000 n 
-0000895205 00000 n 
-0000893887 00000 n 
-0000891118 00000 n 
-0000894011 00000 n 
-0000894200 00000 n 
-0000894263 00000 n 
-0000894325 00000 n 
-0000894513 00000 n 
-0000894576 00000 n 
-0000894639 00000 n 
-0000894827 00000 n 
-0000894890 00000 n 
-0000894953 00000 n 
-0000895016 00000 n 
-0000895079 00000 n 
-0000895142 00000 n 
-0000899348 00000 n 
-0000898469 00000 n 
-0000895307 00000 n 
-0000898593 00000 n 
-0000898656 00000 n 
-0000898719 00000 n 
-0000898908 00000 n 
-0000898970 00000 n 
-0000899159 00000 n 
-0000899222 00000 n 
-0000899285 00000 n 
-0000946948 00000 n 
-0000905105 00000 n 
-0000902717 00000 n 
-0000899450 00000 n 
-0000902841 00000 n 
-0000902904 00000 n 
-0000902966 00000 n 
-0000903155 00000 n 
-0000903218 00000 n 
-0000903281 00000 n 
-0000903344 00000 n 
-0000903407 00000 n 
-0000903470 00000 n 
-0000903533 00000 n 
-0000903596 00000 n 
-0000903659 00000 n 
-0000903721 00000 n 
-0000903784 00000 n 
-0000903847 00000 n 
-0000903910 00000 n 
-0000903973 00000 n 
-0000904036 00000 n 
-0000904099 00000 n 
-0000904162 00000 n 
-0000904225 00000 n 
-0000904287 00000 n 
-0000904350 00000 n 
-0000904413 00000 n 
-0000904476 00000 n 
-0000904538 00000 n 
-0000904601 00000 n 
-0000904664 00000 n 
-0000904727 00000 n 
-0000904790 00000 n 
-0000904853 00000 n 
-0000904916 00000 n 
-0000904979 00000 n 
-0000905042 00000 n 
-0000909020 00000 n 
-0000907952 00000 n 
-0000905207 00000 n 
-0000908076 00000 n 
-0000908139 00000 n 
-0000908202 00000 n 
-0000908391 00000 n 
-0000908454 00000 n 
-0000908517 00000 n 
-0000908705 00000 n 
-0000908768 00000 n 
-0000908957 00000 n 
-0000912963 00000 n 
-0000911706 00000 n 
-0000909122 00000 n 
-0000911830 00000 n 
-0000911893 00000 n 
-0000912081 00000 n 
-0000912270 00000 n 
-0000912459 00000 n 
-0000912522 00000 n 
-0000912586 00000 n 
-0000912774 00000 n 
-0000912837 00000 n 
-0000912900 00000 n 
-0000914248 00000 n 
-0000913935 00000 n 
-0000913065 00000 n 
-0000914059 00000 n 
-0000914122 00000 n 
-0000914185 00000 n 
-0000920003 00000 n 
-0000916292 00000 n 
-0000914336 00000 n 
-0000916592 00000 n 
-0000916781 00000 n 
-0000917031 00000 n 
-0000917094 00000 n 
-0000917157 00000 n 
-0000917221 00000 n 
-0000917285 00000 n 
-0000917410 00000 n 
-0000917536 00000 n 
-0000917599 00000 n 
-0000917662 00000 n 
-0000917726 00000 n 
-0000917790 00000 n 
-0000917852 00000 n 
-0000917977 00000 n 
-0000918040 00000 n 
-0000918103 00000 n 
-0000918166 00000 n 
-0000918229 00000 n 
-0000918293 00000 n 
-0000918356 00000 n 
-0000918419 00000 n 
-0000918482 00000 n 
-0000918545 00000 n 
-0000918608 00000 n 
-0000918671 00000 n 
-0000918734 00000 n 
-0000918798 00000 n 
-0000918862 00000 n 
-0000918925 00000 n 
-0000918988 00000 n 
-0000919051 00000 n 
-0000919114 00000 n 
-0000919178 00000 n 
-0000919242 00000 n 
-0000919306 00000 n 
-0000919370 00000 n 
-0000919434 00000 n 
-0000919498 00000 n 
-0000919562 00000 n 
-0000919625 00000 n 
-0000919688 00000 n 
-0000919751 00000 n 
-0000919813 00000 n 
-0000919877 00000 n 
-0000916437 00000 n 
-0000919940 00000 n 
-0000924450 00000 n 
-0000921687 00000 n 
-0000920133 00000 n 
-0000921811 00000 n 
-0000921935 00000 n 
-0000922058 00000 n 
-0000922121 00000 n 
-0000922183 00000 n 
-0000922247 00000 n 
-0000922311 00000 n 
-0000922375 00000 n 
-0000922501 00000 n 
-0000922563 00000 n 
-0000922752 00000 n 
-0000922815 00000 n 
-0000922878 00000 n 
-0000923129 00000 n 
-0000923192 00000 n 
-0000923254 00000 n 
-0000923316 00000 n 
-0000923380 00000 n 
-0000923506 00000 n 
-0000923569 00000 n 
-0000923757 00000 n 
-0000923820 00000 n 
-0000923883 00000 n 
-0000923946 00000 n 
-0000924010 00000 n 
-0000924136 00000 n 
-0000924260 00000 n 
-0000924323 00000 n 
-0000924386 00000 n 
-0000947073 00000 n 
-0000928599 00000 n 
-0000926196 00000 n 
-0000924580 00000 n 
-0000926516 00000 n 
-0000926579 00000 n 
-0000926641 00000 n 
-0000926705 00000 n 
-0000926768 00000 n 
-0000926832 00000 n 
-0000927083 00000 n 
-0000927146 00000 n 
-0000927209 00000 n 
-0000927273 00000 n 
-0000927461 00000 n 
-0000927524 00000 n 
-0000927587 00000 n 
-0000926341 00000 n 
-0000927650 00000 n 
-0000927776 00000 n 
-0000927903 00000 n 
-0000927966 00000 n 
-0000928029 00000 n 
-0000928093 00000 n 
-0000928157 00000 n 
-0000928220 00000 n 
-0000928346 00000 n 
-0000928473 00000 n 
-0000928536 00000 n 
-0000933273 00000 n 
-0000930280 00000 n 
-0000928729 00000 n 
-0000930747 00000 n 
-0000930998 00000 n 
-0000931061 00000 n 
-0000931123 00000 n 
-0000931186 00000 n 
-0000931250 00000 n 
-0000931314 00000 n 
-0000931377 00000 n 
-0000931504 00000 n 
-0000931567 00000 n 
-0000930434 00000 n 
-0000931630 00000 n 
-0000931694 00000 n 
-0000931757 00000 n 
-0000931820 00000 n 
-0000931883 00000 n 
-0000931946 00000 n 
-0000932010 00000 n 
-0000932073 00000 n 
-0000932136 00000 n 
-0000932199 00000 n 
-0000932263 00000 n 
-0000932327 00000 n 
-0000932390 00000 n 
-0000932453 00000 n 
-0000932516 00000 n 
-0000930589 00000 n 
-0000932580 00000 n 
-0000932832 00000 n 
-0000932895 00000 n 
-0000932958 00000 n 
-0000933147 00000 n 
-0000933210 00000 n 
-0000936085 00000 n 
-0000937097 00000 n 
-0000934762 00000 n 
-0000933389 00000 n 
-0000934886 00000 n 
-0000934949 00000 n 
-0000935075 00000 n 
-0000935138 00000 n 
-0000935201 00000 n 
-0000935265 00000 n 
-0000935389 00000 n 
-0000935515 00000 n 
-0000935577 00000 n 
-0000935640 00000 n 
-0000935703 00000 n 
-0000935767 00000 n 
-0000935831 00000 n 
-0000935895 00000 n 
-0000935959 00000 n 
-0000936212 00000 n 
-0000936275 00000 n 
-0000936338 00000 n 
-0000936465 00000 n 
-0000936528 00000 n 
-0000936591 00000 n 
-0000936655 00000 n 
-0000936907 00000 n 
-0000936970 00000 n 
-0000937033 00000 n 
-0000941729 00000 n 
-0000939262 00000 n 
-0000937199 00000 n 
-0000939386 00000 n 
-0000939449 00000 n 
-0000939512 00000 n 
-0000939639 00000 n 
-0000939702 00000 n 
-0000939765 00000 n 
-0000939828 00000 n 
-0000939891 00000 n 
-0000939955 00000 n 
-0000940019 00000 n 
-0000940083 00000 n 
-0000940146 00000 n 
-0000940210 00000 n 
-0000940274 00000 n 
-0000940338 00000 n 
-0000940402 00000 n 
-0000940527 00000 n 
-0000940654 00000 n 
-0000940717 00000 n 
-0000940780 00000 n 
-0000940971 00000 n 
-0000941034 00000 n 
-0000941097 00000 n 
-0000941223 00000 n 
-0000941350 00000 n 
-0000941413 00000 n 
-0000941476 00000 n 
-0000941539 00000 n 
-0000941602 00000 n 
-0000941665 00000 n 
-0000941907 00000 n 
-0000947189 00000 n 
-0000947315 00000 n 
-0000947441 00000 n 
-0000947567 00000 n 
-0000947666 00000 n 
-0000947758 00000 n 
-0000974135 00000 n 
-0001031674 00000 n 
-0001031715 00000 n 
-0001031755 00000 n 
-0001031987 00000 n 
+0000648804 00000 n 
+0000647290 00000 n 
+0000644377 00000 n 
+0000647414 00000 n 
+0000647477 00000 n 
+0000647539 00000 n 
+0000647602 00000 n 
+0000647665 00000 n 
+0000647728 00000 n 
+0000647792 00000 n 
+0000647855 00000 n 
+0000648043 00000 n 
+0000648106 00000 n 
+0000648170 00000 n 
+0000648233 00000 n 
+0000648296 00000 n 
+0000648359 00000 n 
+0000648423 00000 n 
+0000648487 00000 n 
+0000648550 00000 n 
+0000648614 00000 n 
+0000648677 00000 n 
+0000648740 00000 n 
+0000652537 00000 n 
+0000651148 00000 n 
+0000648934 00000 n 
+0000651272 00000 n 
+0000651397 00000 n 
+0000651460 00000 n 
+0000651523 00000 n 
+0000651585 00000 n 
+0000651648 00000 n 
+0000651712 00000 n 
+0000651776 00000 n 
+0000651839 00000 n 
+0000651903 00000 n 
+0000652093 00000 n 
+0000652156 00000 n 
+0000652220 00000 n 
+0000652283 00000 n 
+0000652346 00000 n 
+0000652410 00000 n 
+0000652474 00000 n 
+0000945663 00000 n 
+0000657557 00000 n 
+0000656048 00000 n 
+0000652681 00000 n 
+0000656172 00000 n 
+0000656235 00000 n 
+0000656297 00000 n 
+0000656360 00000 n 
+0000656485 00000 n 
+0000656548 00000 n 
+0000656611 00000 n 
+0000656674 00000 n 
+0000656737 00000 n 
+0000656800 00000 n 
+0000656863 00000 n 
+0000656926 00000 n 
+0000657115 00000 n 
+0000657178 00000 n 
+0000657241 00000 n 
+0000657304 00000 n 
+0000657368 00000 n 
+0000657431 00000 n 
+0000657494 00000 n 
+0000661102 00000 n 
+0000659209 00000 n 
+0000657673 00000 n 
+0000659333 00000 n 
+0000659396 00000 n 
+0000659458 00000 n 
+0000659521 00000 n 
+0000659585 00000 n 
+0000659649 00000 n 
+0000659712 00000 n 
+0000659776 00000 n 
+0000659840 00000 n 
+0000659903 00000 n 
+0000659966 00000 n 
+0000660028 00000 n 
+0000660090 00000 n 
+0000660153 00000 n 
+0000660217 00000 n 
+0000660281 00000 n 
+0000660344 00000 n 
+0000660407 00000 n 
+0000660596 00000 n 
+0000660659 00000 n 
+0000660722 00000 n 
+0000660785 00000 n 
+0000660849 00000 n 
+0000660912 00000 n 
+0000660976 00000 n 
+0000661039 00000 n 
+0000663200 00000 n 
+0000663013 00000 n 
+0000661246 00000 n 
+0000663137 00000 n 
+0000665110 00000 n 
+0000664923 00000 n 
+0000663288 00000 n 
+0000665047 00000 n 
+0000667027 00000 n 
+0000666840 00000 n 
+0000665198 00000 n 
+0000666964 00000 n 
+0000670941 00000 n 
+0000669256 00000 n 
+0000667115 00000 n 
+0000669871 00000 n 
+0000670183 00000 n 
+0000669419 00000 n 
+0000669566 00000 n 
+0000669719 00000 n 
+0000670372 00000 n 
+0000670435 00000 n 
+0000670498 00000 n 
+0000670561 00000 n 
+0000670624 00000 n 
+0000670687 00000 n 
+0000670751 00000 n 
+0000670814 00000 n 
+0000945788 00000 n 
+0000673550 00000 n 
+0000672415 00000 n 
+0000671057 00000 n 
+0000672539 00000 n 
+0000672665 00000 n 
+0000672728 00000 n 
+0000672791 00000 n 
+0000672855 00000 n 
+0000672919 00000 n 
+0000673108 00000 n 
+0000673170 00000 n 
+0000673360 00000 n 
+0000673423 00000 n 
+0000673486 00000 n 
+0000678332 00000 n 
+0000676129 00000 n 
+0000673652 00000 n 
+0000676253 00000 n 
+0000676568 00000 n 
+0000676631 00000 n 
+0000676818 00000 n 
+0000676881 00000 n 
+0000676944 00000 n 
+0000677007 00000 n 
+0000677069 00000 n 
+0000677132 00000 n 
+0000677196 00000 n 
+0000677260 00000 n 
+0000677323 00000 n 
+0000677386 00000 n 
+0000677449 00000 n 
+0000677512 00000 n 
+0000677576 00000 n 
+0000677640 00000 n 
+0000677829 00000 n 
+0000677892 00000 n 
+0000677955 00000 n 
+0000678018 00000 n 
+0000678080 00000 n 
+0000678143 00000 n 
+0000678206 00000 n 
+0000678269 00000 n 
+0000687264 00000 n 
+0000685989 00000 n 
+0000681974 00000 n 
+0000678434 00000 n 
+0000682277 00000 n 
+0000682402 00000 n 
+0000682465 00000 n 
+0000682528 00000 n 
+0000682591 00000 n 
+0000682654 00000 n 
+0000682717 00000 n 
+0000682780 00000 n 
+0000682843 00000 n 
+0000682906 00000 n 
+0000682969 00000 n 
+0000683032 00000 n 
+0000683095 00000 n 
+0000683158 00000 n 
+0000683220 00000 n 
+0000683283 00000 n 
+0000683346 00000 n 
+0000683409 00000 n 
+0000683472 00000 n 
+0000683535 00000 n 
+0000683598 00000 n 
+0000683661 00000 n 
+0000683724 00000 n 
+0000683785 00000 n 
+0000683848 00000 n 
+0000683911 00000 n 
+0000683974 00000 n 
+0000684036 00000 n 
+0000684098 00000 n 
+0000684161 00000 n 
+0000684224 00000 n 
+0000684287 00000 n 
+0000684350 00000 n 
+0000684413 00000 n 
+0000684476 00000 n 
+0000684539 00000 n 
+0000684602 00000 n 
+0000684665 00000 n 
+0000684728 00000 n 
+0000684791 00000 n 
+0000684854 00000 n 
+0000684917 00000 n 
+0000684980 00000 n 
+0000685043 00000 n 
+0000685106 00000 n 
+0000685169 00000 n 
+0000685232 00000 n 
+0000685295 00000 n 
+0000685358 00000 n 
+0000685421 00000 n 
+0000685484 00000 n 
+0000685547 00000 n 
+0000685735 00000 n 
+0000682119 00000 n 
+0000685798 00000 n 
+0000685862 00000 n 
+0000738741 00000 n 
+0000687140 00000 n 
+0000686091 00000 n 
+0000738110 00000 n 
+0000738173 00000 n 
+0000738299 00000 n 
+0000738362 00000 n 
+0000738426 00000 n 
+0000738489 00000 n 
+0000738678 00000 n 
+0000743376 00000 n 
+0000740978 00000 n 
+0000738894 00000 n 
+0000741102 00000 n 
+0000741165 00000 n 
+0000741228 00000 n 
+0000741291 00000 n 
+0000741354 00000 n 
+0000741418 00000 n 
+0000741482 00000 n 
+0000741545 00000 n 
+0000741608 00000 n 
+0000741671 00000 n 
+0000741734 00000 n 
+0000741797 00000 n 
+0000741860 00000 n 
+0000741923 00000 n 
+0000741986 00000 n 
+0000742049 00000 n 
+0000742112 00000 n 
+0000742301 00000 n 
+0000742489 00000 n 
+0000742552 00000 n 
+0000742615 00000 n 
+0000742678 00000 n 
+0000742742 00000 n 
+0000742805 00000 n 
+0000742869 00000 n 
+0000742932 00000 n 
+0000742996 00000 n 
+0000743059 00000 n 
+0000743123 00000 n 
+0000743186 00000 n 
+0000743250 00000 n 
+0000747863 00000 n 
+0000746351 00000 n 
+0000743478 00000 n 
+0000746475 00000 n 
+0000746601 00000 n 
+0000746664 00000 n 
+0000746728 00000 n 
+0000746791 00000 n 
+0000746855 00000 n 
+0000746918 00000 n 
+0000747106 00000 n 
+0000747169 00000 n 
+0000747232 00000 n 
+0000747295 00000 n 
+0000747358 00000 n 
+0000747547 00000 n 
+0000747610 00000 n 
+0000747674 00000 n 
+0000747737 00000 n 
+0000747800 00000 n 
+0000945913 00000 n 
+0000752081 00000 n 
+0000750322 00000 n 
+0000747965 00000 n 
+0000750446 00000 n 
+0000750509 00000 n 
+0000750572 00000 n 
+0000750636 00000 n 
+0000750700 00000 n 
+0000750763 00000 n 
+0000750825 00000 n 
+0000750888 00000 n 
+0000750951 00000 n 
+0000751014 00000 n 
+0000751077 00000 n 
+0000751140 00000 n 
+0000751202 00000 n 
+0000751390 00000 n 
+0000751453 00000 n 
+0000751516 00000 n 
+0000751579 00000 n 
+0000751768 00000 n 
+0000751955 00000 n 
+0000755752 00000 n 
+0000754243 00000 n 
+0000752183 00000 n 
+0000754367 00000 n 
+0000754493 00000 n 
+0000754682 00000 n 
+0000754871 00000 n 
+0000755060 00000 n 
+0000755123 00000 n 
+0000755311 00000 n 
+0000755500 00000 n 
+0000755689 00000 n 
+0000759984 00000 n 
+0000758409 00000 n 
+0000755854 00000 n 
+0000758533 00000 n 
+0000758596 00000 n 
+0000758660 00000 n 
+0000758723 00000 n 
+0000758786 00000 n 
+0000758975 00000 n 
+0000759038 00000 n 
+0000759101 00000 n 
+0000759165 00000 n 
+0000759228 00000 n 
+0000759418 00000 n 
+0000759481 00000 n 
+0000759670 00000 n 
+0000759733 00000 n 
+0000759796 00000 n 
+0000759859 00000 n 
+0000759922 00000 n 
+0000764516 00000 n 
+0000762686 00000 n 
+0000760100 00000 n 
+0000762810 00000 n 
+0000762873 00000 n 
+0000763062 00000 n 
+0000763251 00000 n 
+0000763314 00000 n 
+0000763378 00000 n 
+0000763568 00000 n 
+0000763631 00000 n 
+0000763694 00000 n 
+0000763758 00000 n 
+0000763821 00000 n 
+0000763884 00000 n 
+0000763947 00000 n 
+0000764011 00000 n 
+0000764075 00000 n 
+0000764138 00000 n 
+0000764201 00000 n 
+0000764264 00000 n 
+0000764326 00000 n 
+0000764390 00000 n 
+0000764453 00000 n 
+0000769841 00000 n 
+0000767385 00000 n 
+0000764646 00000 n 
+0000767509 00000 n 
+0000767572 00000 n 
+0000767634 00000 n 
+0000767697 00000 n 
+0000767761 00000 n 
+0000767824 00000 n 
+0000767887 00000 n 
+0000767951 00000 n 
+0000768014 00000 n 
+0000768077 00000 n 
+0000768141 00000 n 
+0000768203 00000 n 
+0000768266 00000 n 
+0000768330 00000 n 
+0000768393 00000 n 
+0000768456 00000 n 
+0000768520 00000 n 
+0000768583 00000 n 
+0000768646 00000 n 
+0000768709 00000 n 
+0000768772 00000 n 
+0000768835 00000 n 
+0000768899 00000 n 
+0000768962 00000 n 
+0000769025 00000 n 
+0000769089 00000 n 
+0000769151 00000 n 
+0000769215 00000 n 
+0000769278 00000 n 
+0000769341 00000 n 
+0000769526 00000 n 
+0000769715 00000 n 
+0000773934 00000 n 
+0000772678 00000 n 
+0000769957 00000 n 
+0000772802 00000 n 
+0000772865 00000 n 
+0000772990 00000 n 
+0000773053 00000 n 
+0000773116 00000 n 
+0000773179 00000 n 
+0000773367 00000 n 
+0000773430 00000 n 
+0000773493 00000 n 
+0000773556 00000 n 
+0000773619 00000 n 
+0000773682 00000 n 
+0000773871 00000 n 
+0000946038 00000 n 
+0000777807 00000 n 
+0000776549 00000 n 
+0000774050 00000 n 
+0000776673 00000 n 
+0000776736 00000 n 
+0000776799 00000 n 
+0000776862 00000 n 
+0000777051 00000 n 
+0000777114 00000 n 
+0000777303 00000 n 
+0000777366 00000 n 
+0000777429 00000 n 
+0000777492 00000 n 
+0000777555 00000 n 
+0000777618 00000 n 
+0000777681 00000 n 
+0000782392 00000 n 
+0000780586 00000 n 
+0000777909 00000 n 
+0000781073 00000 n 
+0000781136 00000 n 
+0000781259 00000 n 
+0000781321 00000 n 
+0000781384 00000 n 
+0000781448 00000 n 
+0000781511 00000 n 
+0000781574 00000 n 
+0000780740 00000 n 
+0000781637 00000 n 
+0000781700 00000 n 
+0000780904 00000 n 
+0000781889 00000 n 
+0000781952 00000 n 
+0000782015 00000 n 
+0000782203 00000 n 
+0000782266 00000 n 
+0000782329 00000 n 
+0000786733 00000 n 
+0000785496 00000 n 
+0000782508 00000 n 
+0000785788 00000 n 
+0000785851 00000 n 
+0000785915 00000 n 
+0000785978 00000 n 
+0000786041 00000 n 
+0000786230 00000 n 
+0000786293 00000 n 
+0000786355 00000 n 
+0000785641 00000 n 
+0000786418 00000 n 
+0000786481 00000 n 
+0000786544 00000 n 
+0000786607 00000 n 
+0000786670 00000 n 
+0000788449 00000 n 
+0000787883 00000 n 
+0000786849 00000 n 
+0000788007 00000 n 
+0000788070 00000 n 
+0000788260 00000 n 
+0000788323 00000 n 
+0000788386 00000 n 
+0000793094 00000 n 
+0000791079 00000 n 
+0000788565 00000 n 
+0000791203 00000 n 
+0000791392 00000 n 
+0000791455 00000 n 
+0000791518 00000 n 
+0000791581 00000 n 
+0000791643 00000 n 
+0000791706 00000 n 
+0000791769 00000 n 
+0000791833 00000 n 
+0000791896 00000 n 
+0000791959 00000 n 
+0000792022 00000 n 
+0000792084 00000 n 
+0000792147 00000 n 
+0000792209 00000 n 
+0000792273 00000 n 
+0000792336 00000 n 
+0000792398 00000 n 
+0000792461 00000 n 
+0000792524 00000 n 
+0000792588 00000 n 
+0000792651 00000 n 
+0000792714 00000 n 
+0000792777 00000 n 
+0000792841 00000 n 
+0000792904 00000 n 
+0000792967 00000 n 
+0000793030 00000 n 
+0000798308 00000 n 
+0000796540 00000 n 
+0000793224 00000 n 
+0000796664 00000 n 
+0000796727 00000 n 
+0000796789 00000 n 
+0000796852 00000 n 
+0000796916 00000 n 
+0000796980 00000 n 
+0000797044 00000 n 
+0000797107 00000 n 
+0000797170 00000 n 
+0000797233 00000 n 
+0000797297 00000 n 
+0000797360 00000 n 
+0000797424 00000 n 
+0000797487 00000 n 
+0000797550 00000 n 
+0000797613 00000 n 
+0000797676 00000 n 
+0000797740 00000 n 
+0000797802 00000 n 
+0000797866 00000 n 
+0000797929 00000 n 
+0000797992 00000 n 
+0000798056 00000 n 
+0000798119 00000 n 
+0000798182 00000 n 
+0000798245 00000 n 
+0000946163 00000 n 
+0000802658 00000 n 
+0000800826 00000 n 
+0000798424 00000 n 
+0000800950 00000 n 
+0000801013 00000 n 
+0000801076 00000 n 
+0000801139 00000 n 
+0000801202 00000 n 
+0000801266 00000 n 
+0000801328 00000 n 
+0000801391 00000 n 
+0000801455 00000 n 
+0000801519 00000 n 
+0000801582 00000 n 
+0000801645 00000 n 
+0000801709 00000 n 
+0000801772 00000 n 
+0000801836 00000 n 
+0000801900 00000 n 
+0000801963 00000 n 
+0000802026 00000 n 
+0000802089 00000 n 
+0000802153 00000 n 
+0000802216 00000 n 
+0000802280 00000 n 
+0000802343 00000 n 
+0000802406 00000 n 
+0000802469 00000 n 
+0000802532 00000 n 
+0000802595 00000 n 
+0000807471 00000 n 
+0000805596 00000 n 
+0000802802 00000 n 
+0000805894 00000 n 
+0000805957 00000 n 
+0000806020 00000 n 
+0000806084 00000 n 
+0000806146 00000 n 
+0000806209 00000 n 
+0000805741 00000 n 
+0000806273 00000 n 
+0000806336 00000 n 
+0000806398 00000 n 
+0000806461 00000 n 
+0000806524 00000 n 
+0000806587 00000 n 
+0000806649 00000 n 
+0000806712 00000 n 
+0000806775 00000 n 
+0000806838 00000 n 
+0000806901 00000 n 
+0000806964 00000 n 
+0000807027 00000 n 
+0000807090 00000 n 
+0000807153 00000 n 
+0000807217 00000 n 
+0000807281 00000 n 
+0000807344 00000 n 
+0000807408 00000 n 
+0000812140 00000 n 
+0000810451 00000 n 
+0000807615 00000 n 
+0000810754 00000 n 
+0000810817 00000 n 
+0000810880 00000 n 
+0000810942 00000 n 
+0000811006 00000 n 
+0000811069 00000 n 
+0000811132 00000 n 
+0000811195 00000 n 
+0000811258 00000 n 
+0000811321 00000 n 
+0000811384 00000 n 
+0000811448 00000 n 
+0000811511 00000 n 
+0000811574 00000 n 
+0000811637 00000 n 
+0000811700 00000 n 
+0000811763 00000 n 
+0000811825 00000 n 
+0000811888 00000 n 
+0000810596 00000 n 
+0000811951 00000 n 
+0000812014 00000 n 
+0000812077 00000 n 
+0000817550 00000 n 
+0000815354 00000 n 
+0000812242 00000 n 
+0000815652 00000 n 
+0000815715 00000 n 
+0000815778 00000 n 
+0000815839 00000 n 
+0000815902 00000 n 
+0000815965 00000 n 
+0000816028 00000 n 
+0000816091 00000 n 
+0000816154 00000 n 
+0000816218 00000 n 
+0000816281 00000 n 
+0000816344 00000 n 
+0000816408 00000 n 
+0000816471 00000 n 
+0000816535 00000 n 
+0000816599 00000 n 
+0000816662 00000 n 
+0000816725 00000 n 
+0000816789 00000 n 
+0000816853 00000 n 
+0000816917 00000 n 
+0000816980 00000 n 
+0000817043 00000 n 
+0000817107 00000 n 
+0000815499 00000 n 
+0000817170 00000 n 
+0000817233 00000 n 
+0000817296 00000 n 
+0000817359 00000 n 
+0000817422 00000 n 
+0000817486 00000 n 
+0000821864 00000 n 
+0000820164 00000 n 
+0000817694 00000 n 
+0000820472 00000 n 
+0000820535 00000 n 
+0000820598 00000 n 
+0000820662 00000 n 
+0000820725 00000 n 
+0000820788 00000 n 
+0000820851 00000 n 
+0000820915 00000 n 
+0000820978 00000 n 
+0000821042 00000 n 
+0000821106 00000 n 
+0000821170 00000 n 
+0000821234 00000 n 
+0000820309 00000 n 
+0000821297 00000 n 
+0000821360 00000 n 
+0000821424 00000 n 
+0000821486 00000 n 
+0000821549 00000 n 
+0000821612 00000 n 
+0000821676 00000 n 
+0000821739 00000 n 
+0000821802 00000 n 
+0000826423 00000 n 
+0000824415 00000 n 
+0000822008 00000 n 
+0000824718 00000 n 
+0000824781 00000 n 
+0000824844 00000 n 
+0000824907 00000 n 
+0000824970 00000 n 
+0000825033 00000 n 
+0000824560 00000 n 
+0000825097 00000 n 
+0000825160 00000 n 
+0000825222 00000 n 
+0000825285 00000 n 
+0000825348 00000 n 
+0000825411 00000 n 
+0000825474 00000 n 
+0000825538 00000 n 
+0000825601 00000 n 
+0000825664 00000 n 
+0000825727 00000 n 
+0000825791 00000 n 
+0000825855 00000 n 
+0000825918 00000 n 
+0000825981 00000 n 
+0000826044 00000 n 
+0000826108 00000 n 
+0000826171 00000 n 
+0000826234 00000 n 
+0000826298 00000 n 
+0000826360 00000 n 
+0000946288 00000 n 
+0000832633 00000 n 
+0000829352 00000 n 
+0000826581 00000 n 
+0000829650 00000 n 
+0000829713 00000 n 
+0000829777 00000 n 
+0000829841 00000 n 
+0000829905 00000 n 
+0000829968 00000 n 
+0000830032 00000 n 
+0000830096 00000 n 
+0000830160 00000 n 
+0000830223 00000 n 
+0000830287 00000 n 
+0000830351 00000 n 
+0000830414 00000 n 
+0000830477 00000 n 
+0000830541 00000 n 
+0000830604 00000 n 
+0000830667 00000 n 
+0000830729 00000 n 
+0000830792 00000 n 
+0000830855 00000 n 
+0000830918 00000 n 
+0000830981 00000 n 
+0000831045 00000 n 
+0000831109 00000 n 
+0000831173 00000 n 
+0000831237 00000 n 
+0000831301 00000 n 
+0000831365 00000 n 
+0000831428 00000 n 
+0000829497 00000 n 
+0000831491 00000 n 
+0000831555 00000 n 
+0000831619 00000 n 
+0000831681 00000 n 
+0000831744 00000 n 
+0000831808 00000 n 
+0000831872 00000 n 
+0000831935 00000 n 
+0000831998 00000 n 
+0000832062 00000 n 
+0000832125 00000 n 
+0000832189 00000 n 
+0000832252 00000 n 
+0000832315 00000 n 
+0000832378 00000 n 
+0000832441 00000 n 
+0000832505 00000 n 
+0000832569 00000 n 
+0000930587 00000 n 
+0000837245 00000 n 
+0000835545 00000 n 
+0000832749 00000 n 
+0000835669 00000 n 
+0000835732 00000 n 
+0000835794 00000 n 
+0000835857 00000 n 
+0000835920 00000 n 
+0000835984 00000 n 
+0000836046 00000 n 
+0000836110 00000 n 
+0000836173 00000 n 
+0000836237 00000 n 
+0000836299 00000 n 
+0000836362 00000 n 
+0000836426 00000 n 
+0000836489 00000 n 
+0000836552 00000 n 
+0000836616 00000 n 
+0000836679 00000 n 
+0000836742 00000 n 
+0000836805 00000 n 
+0000836868 00000 n 
+0000836932 00000 n 
+0000836994 00000 n 
+0000837056 00000 n 
+0000837119 00000 n 
+0000837182 00000 n 
+0000842365 00000 n 
+0000839982 00000 n 
+0000837389 00000 n 
+0000840279 00000 n 
+0000840127 00000 n 
+0000840342 00000 n 
+0000840405 00000 n 
+0000840468 00000 n 
+0000840530 00000 n 
+0000840594 00000 n 
+0000840657 00000 n 
+0000840720 00000 n 
+0000840784 00000 n 
+0000840847 00000 n 
+0000840910 00000 n 
+0000840974 00000 n 
+0000841037 00000 n 
+0000841100 00000 n 
+0000841164 00000 n 
+0000841227 00000 n 
+0000841291 00000 n 
+0000841350 00000 n 
+0000841414 00000 n 
+0000841477 00000 n 
+0000841541 00000 n 
+0000841604 00000 n 
+0000841668 00000 n 
+0000841731 00000 n 
+0000841795 00000 n 
+0000841859 00000 n 
+0000841923 00000 n 
+0000841987 00000 n 
+0000842050 00000 n 
+0000842113 00000 n 
+0000842176 00000 n 
+0000842239 00000 n 
+0000842302 00000 n 
+0000847472 00000 n 
+0000845645 00000 n 
+0000842481 00000 n 
+0000845769 00000 n 
+0000845832 00000 n 
+0000845894 00000 n 
+0000845957 00000 n 
+0000846020 00000 n 
+0000846084 00000 n 
+0000846147 00000 n 
+0000846210 00000 n 
+0000846273 00000 n 
+0000846335 00000 n 
+0000846398 00000 n 
+0000846461 00000 n 
+0000846524 00000 n 
+0000846587 00000 n 
+0000846650 00000 n 
+0000846714 00000 n 
+0000846777 00000 n 
+0000846840 00000 n 
+0000846902 00000 n 
+0000846966 00000 n 
+0000847029 00000 n 
+0000847093 00000 n 
+0000847156 00000 n 
+0000847219 00000 n 
+0000847283 00000 n 
+0000847346 00000 n 
+0000847409 00000 n 
+0000851951 00000 n 
+0000849800 00000 n 
+0000847602 00000 n 
+0000849924 00000 n 
+0000849987 00000 n 
+0000850050 00000 n 
+0000850113 00000 n 
+0000850175 00000 n 
+0000850238 00000 n 
+0000850301 00000 n 
+0000850364 00000 n 
+0000850427 00000 n 
+0000850490 00000 n 
+0000850554 00000 n 
+0000850617 00000 n 
+0000850681 00000 n 
+0000850745 00000 n 
+0000850808 00000 n 
+0000850871 00000 n 
+0000850935 00000 n 
+0000850998 00000 n 
+0000851062 00000 n 
+0000851126 00000 n 
+0000851190 00000 n 
+0000851253 00000 n 
+0000851316 00000 n 
+0000851379 00000 n 
+0000851440 00000 n 
+0000851504 00000 n 
+0000851568 00000 n 
+0000851632 00000 n 
+0000851695 00000 n 
+0000851759 00000 n 
+0000851823 00000 n 
+0000851887 00000 n 
+0000853803 00000 n 
+0000853172 00000 n 
+0000852067 00000 n 
+0000853296 00000 n 
+0000853359 00000 n 
+0000853423 00000 n 
+0000853486 00000 n 
+0000853549 00000 n 
+0000853612 00000 n 
+0000853676 00000 n 
+0000853739 00000 n 
+0000946413 00000 n 
+0000858862 00000 n 
+0000856442 00000 n 
+0000853891 00000 n 
+0000856909 00000 n 
+0000857098 00000 n 
+0000857287 00000 n 
+0000857350 00000 n 
+0000857414 00000 n 
+0000857478 00000 n 
+0000856596 00000 n 
+0000856752 00000 n 
+0000857541 00000 n 
+0000857604 00000 n 
+0000857667 00000 n 
+0000857731 00000 n 
+0000857794 00000 n 
+0000857984 00000 n 
+0000858047 00000 n 
+0000858110 00000 n 
+0000858173 00000 n 
+0000858236 00000 n 
+0000858424 00000 n 
+0000858487 00000 n 
+0000858550 00000 n 
+0000858612 00000 n 
+0000858675 00000 n 
+0000858737 00000 n 
+0000862305 00000 n 
+0000860858 00000 n 
+0000859006 00000 n 
+0000860982 00000 n 
+0000861045 00000 n 
+0000861171 00000 n 
+0000861234 00000 n 
+0000861298 00000 n 
+0000861486 00000 n 
+0000861549 00000 n 
+0000861612 00000 n 
+0000861675 00000 n 
+0000861739 00000 n 
+0000861802 00000 n 
+0000861865 00000 n 
+0000861928 00000 n 
+0000862115 00000 n 
+0000862178 00000 n 
+0000862242 00000 n 
+0000865466 00000 n 
+0000864076 00000 n 
+0000862435 00000 n 
+0000864200 00000 n 
+0000864263 00000 n 
+0000864326 00000 n 
+0000864390 00000 n 
+0000864454 00000 n 
+0000864518 00000 n 
+0000864581 00000 n 
+0000864644 00000 n 
+0000864833 00000 n 
+0000864896 00000 n 
+0000864960 00000 n 
+0000865023 00000 n 
+0000865086 00000 n 
+0000865150 00000 n 
+0000865339 00000 n 
+0000865402 00000 n 
+0000869424 00000 n 
+0000867849 00000 n 
+0000865610 00000 n 
+0000867973 00000 n 
+0000868036 00000 n 
+0000868099 00000 n 
+0000868163 00000 n 
+0000868224 00000 n 
+0000868350 00000 n 
+0000868413 00000 n 
+0000868476 00000 n 
+0000868540 00000 n 
+0000868604 00000 n 
+0000868730 00000 n 
+0000868793 00000 n 
+0000868855 00000 n 
+0000868919 00000 n 
+0000868983 00000 n 
+0000869046 00000 n 
+0000869109 00000 n 
+0000869298 00000 n 
+0000869361 00000 n 
+0000872808 00000 n 
+0000871433 00000 n 
+0000869540 00000 n 
+0000871732 00000 n 
+0000871795 00000 n 
+0000871858 00000 n 
+0000871922 00000 n 
+0000872112 00000 n 
+0000872175 00000 n 
+0000872238 00000 n 
+0000872302 00000 n 
+0000871578 00000 n 
+0000872492 00000 n 
+0000872555 00000 n 
+0000872618 00000 n 
+0000872681 00000 n 
+0000872744 00000 n 
+0000879125 00000 n 
+0000876036 00000 n 
+0000872938 00000 n 
+0000876160 00000 n 
+0000876349 00000 n 
+0000876412 00000 n 
+0000876599 00000 n 
+0000876662 00000 n 
+0000876726 00000 n 
+0000876789 00000 n 
+0000876853 00000 n 
+0000876917 00000 n 
+0000876980 00000 n 
+0000877044 00000 n 
+0000877107 00000 n 
+0000877170 00000 n 
+0000877233 00000 n 
+0000877296 00000 n 
+0000877358 00000 n 
+0000877420 00000 n 
+0000877484 00000 n 
+0000877548 00000 n 
+0000877612 00000 n 
+0000877676 00000 n 
+0000877740 00000 n 
+0000877804 00000 n 
+0000877867 00000 n 
+0000877930 00000 n 
+0000877993 00000 n 
+0000878056 00000 n 
+0000878120 00000 n 
+0000878183 00000 n 
+0000878246 00000 n 
+0000878309 00000 n 
+0000878373 00000 n 
+0000878558 00000 n 
+0000878621 00000 n 
+0000878684 00000 n 
+0000878748 00000 n 
+0000878810 00000 n 
+0000878874 00000 n 
+0000878938 00000 n 
+0000879001 00000 n 
+0000879063 00000 n 
+0000946538 00000 n 
+0000882943 00000 n 
+0000880864 00000 n 
+0000879269 00000 n 
+0000880988 00000 n 
+0000881302 00000 n 
+0000881364 00000 n 
+0000881427 00000 n 
+0000881490 00000 n 
+0000881553 00000 n 
+0000881616 00000 n 
+0000881679 00000 n 
+0000881742 00000 n 
+0000881805 00000 n 
+0000881868 00000 n 
+0000881931 00000 n 
+0000881994 00000 n 
+0000882058 00000 n 
+0000882122 00000 n 
+0000882184 00000 n 
+0000882247 00000 n 
+0000882437 00000 n 
+0000882500 00000 n 
+0000882563 00000 n 
+0000882626 00000 n 
+0000882689 00000 n 
+0000882753 00000 n 
+0000882817 00000 n 
+0000882881 00000 n 
+0000885637 00000 n 
+0000883801 00000 n 
+0000883073 00000 n 
+0000883925 00000 n 
+0000883988 00000 n 
+0000884050 00000 n 
+0000884113 00000 n 
+0000884177 00000 n 
+0000884239 00000 n 
+0000884302 00000 n 
+0000884366 00000 n 
+0000884430 00000 n 
+0000884493 00000 n 
+0000884556 00000 n 
+0000884620 00000 n 
+0000884684 00000 n 
+0000884748 00000 n 
+0000884810 00000 n 
+0000884873 00000 n 
+0000884937 00000 n 
+0000885001 00000 n 
+0000885065 00000 n 
+0000885128 00000 n 
+0000885191 00000 n 
+0000885255 00000 n 
+0000885319 00000 n 
+0000885383 00000 n 
+0000885446 00000 n 
+0000885509 00000 n 
+0000885573 00000 n 
+0000888390 00000 n 
+0000886492 00000 n 
+0000885725 00000 n 
+0000886616 00000 n 
+0000886679 00000 n 
+0000886742 00000 n 
+0000886806 00000 n 
+0000886868 00000 n 
+0000886931 00000 n 
+0000886995 00000 n 
+0000887059 00000 n 
+0000887123 00000 n 
+0000887186 00000 n 
+0000887249 00000 n 
+0000887313 00000 n 
+0000887377 00000 n 
+0000887439 00000 n 
+0000887502 00000 n 
+0000887566 00000 n 
+0000887630 00000 n 
+0000887819 00000 n 
+0000887882 00000 n 
+0000887945 00000 n 
+0000888009 00000 n 
+0000888073 00000 n 
+0000888137 00000 n 
+0000888200 00000 n 
+0000888263 00000 n 
+0000888327 00000 n 
+0000890745 00000 n 
+0000889287 00000 n 
+0000888492 00000 n 
+0000889411 00000 n 
+0000889474 00000 n 
+0000889538 00000 n 
+0000889601 00000 n 
+0000889664 00000 n 
+0000889728 00000 n 
+0000889791 00000 n 
+0000889855 00000 n 
+0000889918 00000 n 
+0000889981 00000 n 
+0000890045 00000 n 
+0000890109 00000 n 
+0000890173 00000 n 
+0000890236 00000 n 
+0000890299 00000 n 
+0000890363 00000 n 
+0000890427 00000 n 
+0000890490 00000 n 
+0000890553 00000 n 
+0000890617 00000 n 
+0000890681 00000 n 
+0000894920 00000 n 
+0000893602 00000 n 
+0000890833 00000 n 
+0000893726 00000 n 
+0000893915 00000 n 
+0000893978 00000 n 
+0000894040 00000 n 
+0000894228 00000 n 
+0000894291 00000 n 
+0000894354 00000 n 
+0000894542 00000 n 
+0000894605 00000 n 
+0000894668 00000 n 
+0000894731 00000 n 
+0000894794 00000 n 
+0000894857 00000 n 
+0000899063 00000 n 
+0000898184 00000 n 
+0000895022 00000 n 
+0000898308 00000 n 
+0000898371 00000 n 
+0000898434 00000 n 
+0000898623 00000 n 
+0000898685 00000 n 
+0000898874 00000 n 
+0000898937 00000 n 
+0000899000 00000 n 
+0000946663 00000 n 
+0000904820 00000 n 
+0000902432 00000 n 
+0000899165 00000 n 
+0000902556 00000 n 
+0000902619 00000 n 
+0000902681 00000 n 
+0000902870 00000 n 
+0000902933 00000 n 
+0000902996 00000 n 
+0000903059 00000 n 
+0000903122 00000 n 
+0000903185 00000 n 
+0000903248 00000 n 
+0000903311 00000 n 
+0000903374 00000 n 
+0000903436 00000 n 
+0000903499 00000 n 
+0000903562 00000 n 
+0000903625 00000 n 
+0000903688 00000 n 
+0000903751 00000 n 
+0000903814 00000 n 
+0000903877 00000 n 
+0000903940 00000 n 
+0000904002 00000 n 
+0000904065 00000 n 
+0000904128 00000 n 
+0000904191 00000 n 
+0000904253 00000 n 
+0000904316 00000 n 
+0000904379 00000 n 
+0000904442 00000 n 
+0000904505 00000 n 
+0000904568 00000 n 
+0000904631 00000 n 
+0000904694 00000 n 
+0000904757 00000 n 
+0000908735 00000 n 
+0000907667 00000 n 
+0000904922 00000 n 
+0000907791 00000 n 
+0000907854 00000 n 
+0000907917 00000 n 
+0000908106 00000 n 
+0000908169 00000 n 
+0000908232 00000 n 
+0000908420 00000 n 
+0000908483 00000 n 
+0000908672 00000 n 
+0000912678 00000 n 
+0000911421 00000 n 
+0000908837 00000 n 
+0000911545 00000 n 
+0000911608 00000 n 
+0000911796 00000 n 
+0000911985 00000 n 
+0000912174 00000 n 
+0000912237 00000 n 
+0000912301 00000 n 
+0000912489 00000 n 
+0000912552 00000 n 
+0000912615 00000 n 
+0000913963 00000 n 
+0000913650 00000 n 
+0000912780 00000 n 
+0000913774 00000 n 
+0000913837 00000 n 
+0000913900 00000 n 
+0000919718 00000 n 
+0000916007 00000 n 
+0000914051 00000 n 
+0000916307 00000 n 
+0000916496 00000 n 
+0000916746 00000 n 
+0000916809 00000 n 
+0000916872 00000 n 
+0000916936 00000 n 
+0000917000 00000 n 
+0000917125 00000 n 
+0000917251 00000 n 
+0000917314 00000 n 
+0000917377 00000 n 
+0000917441 00000 n 
+0000917505 00000 n 
+0000917567 00000 n 
+0000917692 00000 n 
+0000917755 00000 n 
+0000917818 00000 n 
+0000917881 00000 n 
+0000917944 00000 n 
+0000918008 00000 n 
+0000918071 00000 n 
+0000918134 00000 n 
+0000918197 00000 n 
+0000918260 00000 n 
+0000918323 00000 n 
+0000918386 00000 n 
+0000918449 00000 n 
+0000918513 00000 n 
+0000918577 00000 n 
+0000918640 00000 n 
+0000918703 00000 n 
+0000918766 00000 n 
+0000918829 00000 n 
+0000918893 00000 n 
+0000918957 00000 n 
+0000919021 00000 n 
+0000919085 00000 n 
+0000919149 00000 n 
+0000919213 00000 n 
+0000919277 00000 n 
+0000919340 00000 n 
+0000919403 00000 n 
+0000919466 00000 n 
+0000919528 00000 n 
+0000919592 00000 n 
+0000916152 00000 n 
+0000919655 00000 n 
+0000924165 00000 n 
+0000921402 00000 n 
+0000919848 00000 n 
+0000921526 00000 n 
+0000921650 00000 n 
+0000921773 00000 n 
+0000921836 00000 n 
+0000921898 00000 n 
+0000921962 00000 n 
+0000922026 00000 n 
+0000922090 00000 n 
+0000922216 00000 n 
+0000922278 00000 n 
+0000922467 00000 n 
+0000922530 00000 n 
+0000922593 00000 n 
+0000922844 00000 n 
+0000922907 00000 n 
+0000922969 00000 n 
+0000923031 00000 n 
+0000923095 00000 n 
+0000923221 00000 n 
+0000923284 00000 n 
+0000923472 00000 n 
+0000923535 00000 n 
+0000923598 00000 n 
+0000923661 00000 n 
+0000923725 00000 n 
+0000923851 00000 n 
+0000923975 00000 n 
+0000924038 00000 n 
+0000924101 00000 n 
+0000946788 00000 n 
+0000928314 00000 n 
+0000925911 00000 n 
+0000924295 00000 n 
+0000926231 00000 n 
+0000926294 00000 n 
+0000926356 00000 n 
+0000926420 00000 n 
+0000926483 00000 n 
+0000926547 00000 n 
+0000926798 00000 n 
+0000926861 00000 n 
+0000926924 00000 n 
+0000926988 00000 n 
+0000927176 00000 n 
+0000927239 00000 n 
+0000927302 00000 n 
+0000926056 00000 n 
+0000927365 00000 n 
+0000927491 00000 n 
+0000927618 00000 n 
+0000927681 00000 n 
+0000927744 00000 n 
+0000927808 00000 n 
+0000927872 00000 n 
+0000927935 00000 n 
+0000928061 00000 n 
+0000928188 00000 n 
+0000928251 00000 n 
+0000932988 00000 n 
+0000929995 00000 n 
+0000928444 00000 n 
+0000930462 00000 n 
+0000930713 00000 n 
+0000930776 00000 n 
+0000930838 00000 n 
+0000930901 00000 n 
+0000930965 00000 n 
+0000931029 00000 n 
+0000931092 00000 n 
+0000931219 00000 n 
+0000931282 00000 n 
+0000930149 00000 n 
+0000931345 00000 n 
+0000931409 00000 n 
+0000931472 00000 n 
+0000931535 00000 n 
+0000931598 00000 n 
+0000931661 00000 n 
+0000931725 00000 n 
+0000931788 00000 n 
+0000931851 00000 n 
+0000931914 00000 n 
+0000931978 00000 n 
+0000932042 00000 n 
+0000932105 00000 n 
+0000932168 00000 n 
+0000932231 00000 n 
+0000930304 00000 n 
+0000932295 00000 n 
+0000932547 00000 n 
+0000932610 00000 n 
+0000932673 00000 n 
+0000932862 00000 n 
+0000932925 00000 n 
+0000935800 00000 n 
+0000936812 00000 n 
+0000934477 00000 n 
+0000933104 00000 n 
+0000934601 00000 n 
+0000934664 00000 n 
+0000934790 00000 n 
+0000934853 00000 n 
+0000934916 00000 n 
+0000934980 00000 n 
+0000935104 00000 n 
+0000935230 00000 n 
+0000935292 00000 n 
+0000935355 00000 n 
+0000935418 00000 n 
+0000935482 00000 n 
+0000935546 00000 n 
+0000935610 00000 n 
+0000935674 00000 n 
+0000935927 00000 n 
+0000935990 00000 n 
+0000936053 00000 n 
+0000936180 00000 n 
+0000936243 00000 n 
+0000936306 00000 n 
+0000936370 00000 n 
+0000936622 00000 n 
+0000936685 00000 n 
+0000936748 00000 n 
+0000941444 00000 n 
+0000938977 00000 n 
+0000936914 00000 n 
+0000939101 00000 n 
+0000939164 00000 n 
+0000939227 00000 n 
+0000939354 00000 n 
+0000939417 00000 n 
+0000939480 00000 n 
+0000939543 00000 n 
+0000939606 00000 n 
+0000939670 00000 n 
+0000939734 00000 n 
+0000939798 00000 n 
+0000939861 00000 n 
+0000939925 00000 n 
+0000939989 00000 n 
+0000940053 00000 n 
+0000940117 00000 n 
+0000940242 00000 n 
+0000940369 00000 n 
+0000940432 00000 n 
+0000940495 00000 n 
+0000940686 00000 n 
+0000940749 00000 n 
+0000940812 00000 n 
+0000940938 00000 n 
+0000941065 00000 n 
+0000941128 00000 n 
+0000941191 00000 n 
+0000941254 00000 n 
+0000941317 00000 n 
+0000941380 00000 n 
+0000941622 00000 n 
+0000946904 00000 n 
+0000947030 00000 n 
+0000947156 00000 n 
+0000947282 00000 n 
+0000947381 00000 n 
+0000947473 00000 n 
+0000973850 00000 n 
+0001031293 00000 n 
+0001031334 00000 n 
+0001031374 00000 n 
+0001031606 00000 n 
 trailer
 <<
-/Size 5129
-/Root 5127 0 R
-/Info 5128 0 R
+/Size 5123
+/Root 5121 0 R
+/Info 5122 0 R
 >>
 startxref
-1032143
+1031762
 %%EOF
diff --git a/docs/txt/Bugzilla-Guide.txt b/docs/txt/Bugzilla-Guide.txt
index 8f1ac2d07ad9d62b0263e9d024ae51946eded9a5..0b415bc959f279c8fc0b03268a0a38863448b5ac 100644
--- a/docs/txt/Bugzilla-Guide.txt
+++ b/docs/txt/Bugzilla-Guide.txt
@@ -1,5 +1,5 @@
 
-The Bugzilla Guide - 2.20 Development Release
+The Bugzilla Guide - 2.21.1 Development Release
 
 The Bugzilla Team
 
@@ -175,9 +175,9 @@ Chapter 1. About This Guide
 
 1.3. New Versions
 
-   This is the 2.20 version of The Bugzilla Guide. It is so named to match the
-   current version of Bugzilla. This version of the guide, like its associated
-   Bugzilla version, is a development version.
+   This is the 2.21.1 version of The Bugzilla Guide. It is so named to match
+   the current version of Bugzilla. This version of the guide, like its
+   associated Bugzilla version, is a development version.
 
    The latest version of this guide can always be found at
    http://www.bugzilla.org, or checked out via CVS by following the Mozilla CVS
@@ -335,7 +335,7 @@ Chapter 2. Installing Bugzilla
    Installed Version Test: mysql -V
 
    If you don't have it and your OS doesn't provide official packages, visit
-   http://www.mysql.com. You need MySQL version 3.23.41 or higher.
+   http://www.mysql.com. You need MySQL version 4.0.14 or higher.
 
    Note Many of the binary versions of MySQL store their data files in /var. On
    some Unix systems, this is part of a smaller root partition, and may not
@@ -2687,7 +2687,6 @@ skip-networking
 
      * In the main Bugzilla directory, you should:
           + Block: *.pl, *localconfig*
-          + But allow: localconfig.js, localconfig.rdf
      * In data:
           + Block everything
           + But allow: duplicates.rdf
@@ -2878,7 +2877,7 @@ Chapter 5. Customising Bugzilla
    (such as simple or complex) in the URL.
 
    To see if a CGI supports multiple output formats and types, grep the CGI for
-   "GetFormat". If it's not present, adding multiple format/type support isn't
+   "get_format". If it's not present, adding multiple format/type support isn't
    too hard - see how it's done in other CGIs, e.g. config.cgi.
 
    To make a new format template for a CGI which supports this, open a current
@@ -3986,9 +3985,10 @@ Chapter 6. Using Bugzilla
    indicate what is to be searched. For example, typing "foo|bar" into
    Quicksearch would search for "foo" or "bar" in the summary and status
    whiteboard of a bug; adding ":BazProduct" would search only in that product.
+   You can use it to find a bug by its number or its alias, too.
 
-   You'll find the Quicksearch box on Bugzilla's front page, along with a Help
-   link which details how to use it.
+   You'll find the Quicksearch box in Bugzilla's footer area. On Bugzilla's
+   front page, there is an additional Help link which details how to use it.
      _________________________________________________________________
 
 6.9.3. Comments
@@ -5292,9 +5292,9 @@ password=mypassword
 
    Try this link to view current bugs or requests for enhancement for Bugzilla.
 
-   You can view bugs marked for 2.20.1 release here. This list includes bugs
-   for the 2.20.1 release that have already been fixed and checked into CVS.
-   Please consult the Bugzilla Project Page for details on how to check current
+   You can view bugs marked for 2.22 release here. This list includes bugs for
+   the 2.22 release that have already been fixed and checked into CVS. Please
+   consult the Bugzilla Project Page for details on how to check current
    sources out of CVS so you can have these bug fixes early!
 
    A.9.3. How can I change the default priority to a null value? For instance,
diff --git a/docs/xml/Bugzilla-Guide.xml b/docs/xml/Bugzilla-Guide.xml
index bc5aba2f022d5291c9669fb881cdc104761e9239..d03ac1b71c0cb23e4106441742e32b4b14590bfb 100644
--- a/docs/xml/Bugzilla-Guide.xml
+++ b/docs/xml/Bugzilla-Guide.xml
@@ -31,8 +31,8 @@
      For a devel release, simple bump bz-ver and bz-date
 -->
 
-<!ENTITY bz-ver "2.20">
-<!ENTITY bz-nextver "2.20.1">
+<!ENTITY bz-ver "2.21.1">
+<!ENTITY bz-nextver "2.22">
 <!ENTITY bz-date "2005-09-30">
 <!ENTITY current-year "2005">
 
@@ -42,7 +42,7 @@
 <!ENTITY mysql "http://www.mysql.com/">
 
 <!-- For minimum versions -->
-<!ENTITY min-mysql-ver "3.23.41">
+<!ENTITY min-mysql-ver "4.0.14">
 <!ENTITY min-pg-ver "7.3.x">
 <!ENTITY min-perl-ver "5.6.1">
 <!ENTITY min-perl-ver-win "5.8.1">
diff --git a/docs/xml/CVS/Entries b/docs/xml/CVS/Entries
index fe270d907de8053ed5169617f86a8411b4a7df04..01ca07c2f99fe55ba0579c5d9a52ef523dc45218 100644
--- a/docs/xml/CVS/Entries
+++ b/docs/xml/CVS/Entries
@@ -1,21 +1,21 @@
-/Bugzilla-Guide.xml/1.50.2.4/Fri Sep 30 22:38:03 2005//TBUGZILLA-2_20
-/about.xml/1.19/Fri Jan 14 12:08:47 2005//TBUGZILLA-2_20
-/administration.xml/1.50.2.1/Thu Sep  8 18:34:20 2005//TBUGZILLA-2_20
-/conventions.xml/1.9/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_20
-/customization.xml/1.20/Wed Jun 29 15:17:39 2005//TBUGZILLA-2_20
-/dbschema.mysql/1.2/Wed May  8 23:19:09 2002//TBUGZILLA-2_20
-/faq.xml/1.35.2.1/Thu Sep  8 18:34:20 2005//TBUGZILLA-2_20
-/filetemp.patch/1.1/Wed Apr  2 00:40:56 2003//TBUGZILLA-2_20
-/gfdl.xml/1.9/Sat Jan 24 18:31:00 2004//TBUGZILLA-2_20
-/glossary.xml/1.16/Thu Dec  2 04:21:27 2004//TBUGZILLA-2_20
-/index.xml/1.4/Wed Apr 23 02:04:25 2003//TBUGZILLA-2_20
-/installation.xml/1.98.2.5/Mon Aug  1 08:41:43 2005//TBUGZILLA-2_20
-/integration.xml/1.13/Sat Sep  4 09:27:15 2004//TBUGZILLA-2_20
-/introduction.xml/1.5/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_20
-/modules.xml/1.3/Mon Jan 10 07:21:26 2005//TBUGZILLA-2_20
-/patches.xml/1.21/Thu Nov 25 09:26:22 2004//TBUGZILLA-2_20
-/requiredsoftware.xml/1.6/Mon May 12 19:31:48 2003//TBUGZILLA-2_20
-/security.xml/1.6/Wed Jun 29 23:43:33 2005//TBUGZILLA-2_20
-/troubleshooting.xml/1.5.4.1/Thu Sep  8 20:57:06 2005//TBUGZILLA-2_20
-/using.xml/1.33.2.1/Tue Jul 12 10:55:56 2005//TBUGZILLA-2_20
+/Bugzilla-Guide.xml/1.55/Fri Sep 30 22:35:52 2005//TBUGZILLA-2_21_1
+/about.xml/1.19/Fri Jan 14 12:08:47 2005//TBUGZILLA-2_21_1
+/administration.xml/1.51/Thu Sep  8 18:35:42 2005//TBUGZILLA-2_21_1
+/conventions.xml/1.9/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_21_1
+/customization.xml/1.21/Thu Aug 25 14:02:41 2005//TBUGZILLA-2_21_1
+/dbschema.mysql/1.2/Wed May  8 23:19:09 2002//TBUGZILLA-2_21_1
+/faq.xml/1.36/Thu Sep  8 18:35:42 2005//TBUGZILLA-2_21_1
+/filetemp.patch/1.1/Wed Apr  2 00:40:56 2003//TBUGZILLA-2_21_1
+/gfdl.xml/1.9/Sat Jan 24 18:31:00 2004//TBUGZILLA-2_21_1
+/glossary.xml/1.16/Thu Dec  2 04:21:27 2004//TBUGZILLA-2_21_1
+/index.xml/1.4/Wed Apr 23 02:04:25 2003//TBUGZILLA-2_21_1
+/installation.xml/1.103/Mon Aug  1 08:39:32 2005//TBUGZILLA-2_21_1
+/integration.xml/1.13/Sat Sep  4 09:27:15 2004//TBUGZILLA-2_21_1
+/introduction.xml/1.5/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_21_1
+/modules.xml/1.3/Mon Jan 10 07:21:26 2005//TBUGZILLA-2_21_1
+/patches.xml/1.21/Thu Nov 25 09:26:22 2004//TBUGZILLA-2_21_1
+/requiredsoftware.xml/1.6/Mon May 12 19:31:48 2003//TBUGZILLA-2_21_1
+/security.xml/1.7/Sun Aug 21 18:16:41 2005//TBUGZILLA-2_21_1
+/troubleshooting.xml/1.6/Thu Sep  8 20:57:44 2005//TBUGZILLA-2_21_1
+/using.xml/1.35/Sun Aug 21 18:16:41 2005//TBUGZILLA-2_21_1
 D
diff --git a/docs/xml/CVS/Tag b/docs/xml/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/docs/xml/CVS/Tag
+++ b/docs/xml/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/docs/xml/customization.xml b/docs/xml/customization.xml
index 49b73319e24e498cc8e7beb6dcf8f603a757c0ab..37c64cca0d4410b34835e0ee4caecf620f35d1b8 100644
--- a/docs/xml/customization.xml
+++ b/docs/xml/customization.xml
@@ -202,7 +202,7 @@
       
       <para>
         To see if a CGI supports multiple output formats and types, grep the
-        CGI for <quote>GetFormat</quote>. If it's not present, adding
+        CGI for <quote>get_format</quote>. If it's not present, adding
         multiple format/type support isn't too hard - see how it's done in
         other CGIs, e.g. config.cgi.
       </para>
diff --git a/docs/xml/installation.xml b/docs/xml/installation.xml
index ec67e5ca9192b1134eacdec453486628805a8592..863fbb11feabeb7648a7f5ed298db936194b290c 100644
--- a/docs/xml/installation.xml
+++ b/docs/xml/installation.xml
@@ -1,5 +1,5 @@
 <!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> -->
-<!-- $Id: installation.xml,v 1.98.2.5 2005/08/01 08:41:43 mozilla%colinogilvie.co.uk Exp $ -->
+<!-- $Id: installation.xml,v 1.103 2005/08/01 08:39:32 mozilla%colinogilvie.co.uk Exp $ -->
 <chapter id="installing-bugzilla">
   <title>Installing Bugzilla</title>
 
@@ -827,9 +827,9 @@
           you will need to add a new line to it as follows:</para>
 
           <para>
-            <computeroutput>host   all    bugs   127.0.0.1    255.255.255.255  md5</computeroutput>
+	    <computeroutput>host   all    bugs   127.0.0.1    255.255.255.255  md5</computeroutput>
           </para>
-
+	  
           <para>This means that for TCP/IP (host) connections, allow connections from
           '127.0.0.1' to 'all' databases on this server from the 'bugs' user, and use
           password authentication (md5) for that user.</para>
@@ -840,15 +840,15 @@
           You will need to make a single line change, changing</para>
 
           <para>
-	    <computeroutput># tcpip_socket = false</computeroutput>
+            <computeroutput># tcpip_socket = false</computeroutput>
           </para>
-
+  
           <para>to</para>
             
 	  <para>
-	    <computeroutput>tcpip_socket = true</computeroutput>
-          </para>
-	  
+            <computeroutput>tcpip_socket = true</computeroutput>
+	  </para>
+  
           <para>Now, you will need to restart PostgreSQL, but you will need to fully
           stop and start the server rather than just restarting due to the possibility
           of a change to <filename>postgresql.conf</filename>. After the server has
diff --git a/docs/xml/security.xml b/docs/xml/security.xml
index a638ae26a9ea89f08575405f7b2a8d32df3147d2..e68577b4ce83a0021e58f47999246e5d93a66d93 100644
--- a/docs/xml/security.xml
+++ b/docs/xml/security.xml
@@ -1,5 +1,5 @@
 <!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> -->
-<!-- $Id: security.xml,v 1.6 2005/06/29 23:43:33 zach%zachlipton.com Exp $ -->
+<!-- $Id: security.xml,v 1.7 2005/08/21 18:16:41 lpsolit%gmail.com Exp $ -->
 
 <chapter id="security">
 <title>Bugzilla Security</title>
@@ -207,14 +207,6 @@ skip-networking
               </simplelist>
               </para>
             </listitem>
-            <listitem>
-              <para>But allow:
-              <simplelist type="inline">
-                <member><filename>localconfig.js</filename></member>
-                <member><filename>localconfig.rdf</filename></member>
-              </simplelist>
-              </para>
-            </listitem>
           </itemizedlist>
         </listitem>
 
diff --git a/docs/xml/troubleshooting.xml b/docs/xml/troubleshooting.xml
index 46308bdc6611728164a41f36026f6b445993eec6..fa21d579b43aa123a5ce7fe2599284b38a00b774 100644
--- a/docs/xml/troubleshooting.xml
+++ b/docs/xml/troubleshooting.xml
@@ -1,5 +1,5 @@
 <!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> -->
-<!-- $Id: troubleshooting.xml,v 1.5.4.1 2005/09/08 20:57:06 mozilla%colinogilvie.co.uk Exp $ -->
+<!-- $Id: troubleshooting.xml,v 1.6 2005/09/08 20:57:44 mozilla%colinogilvie.co.uk Exp $ -->
 
 <appendix id="troubleshooting">
 <title>Troubleshooting</title>
diff --git a/docs/xml/using.xml b/docs/xml/using.xml
index 720f461e9dc90ccc0bc8b0061c9e053b04b0aa6a..5a11730cccf9a9252f423523436535dc994afe42 100644
--- a/docs/xml/using.xml
+++ b/docs/xml/using.xml
@@ -725,11 +725,12 @@
       summary and status whiteboard of a bug; adding 
       "<filename>:BazProduct</filename>" would
       search only in that product.
+      You can use it to find a bug by its number or its alias, too.
       </para>
 
-      <para>You'll find the Quicksearch box on Bugzilla's
-      front page, along with a 
-      <ulink url="../../quicksearch.html">Help</ulink> 
+      <para>You'll find the Quicksearch box in Bugzilla's footer area.
+      On Bugzilla's front page, there is an additional
+      <ulink url="../../page.cgi?id=quicksearch.html">Help</ulink>
       link which details how to use it.</para>
     </section>
     
diff --git a/doeditparams.cgi b/doeditparams.cgi
index 028f28a60ff4290d6754438c1eb79a4f4efee90a..8d69f56bc2df969afb385221dabfd777ebab54ca 100755
--- a/doeditparams.cgi
+++ b/doeditparams.cgi
@@ -28,22 +28,22 @@ use lib qw(.);
 use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::Config qw(:DEFAULT :admin $datadir);
-use Bugzilla::User;
 
-require "CGI.pl";
+require "globals.pl";
 
-Bugzilla->login(LOGIN_REQUIRED);
+my $user = Bugzilla->login(LOGIN_REQUIRED);
 
 my $cgi = Bugzilla->cgi;
+my $template = Bugzilla->template;
 
 print $cgi->header();
 
-UserInGroup("tweakparams")
+$user->in_group('tweakparams')
   || ThrowUserError("auth_failure", {group  => "tweakparams",
                                      action => "modify",
                                      object => "parameters"});
 
-PutHeader("Saving new parameters");
+$template->put_header("Saving new parameters");
 
 my $howto = "";
 
@@ -90,7 +90,7 @@ foreach my $i (GetParamList()) {
                 print "New value for " . html_quote($name) .
                   " is invalid: $ok<p>\n";
                 print "Please hit <b>Back</b> and try again.\n";
-                PutFooter();
+                $template->put_footer();
                 exit;
             }
         }
@@ -115,4 +115,4 @@ print $howto;
 print "<a href=\"editparams.cgi\">Edit the params some more.</a><p>\n";
 print "<a href=\"query.cgi\">Go back to the query page.</a>\n";
     
-PutFooter();
+$template->put_footer();
diff --git a/duplicates.cgi b/duplicates.cgi
index 744ad814730f2305edb1c59114536915e61d57f7..6348748bf9439aebe2db5a45df97384c6a407fd8 100644
--- a/duplicates.cgi
+++ b/duplicates.cgi
@@ -30,7 +30,6 @@ use AnyDBM_File;
 use lib qw(.);
 
 require "globals.pl";
-require "CGI.pl";
 
 use Bugzilla;
 use Bugzilla::Search;
@@ -266,12 +265,12 @@ $vars->{'openonly'} = $openonly;
 $vars->{'reverse'} = $reverse;
 $vars->{'format'} = $cgi->param('format');
 $vars->{'query_products'} = \@query_products;
-my @selectable_products = GetSelectableProducts();
-$vars->{'products'} = \@selectable_products;
+$vars->{'products'} = Bugzilla->user->get_selectable_products;
 
 
-my $format = GetFormat("reports/duplicates", scalar($cgi->param('format')),
-                       scalar($cgi->param('ctype')));
+my $format = $template->get_format("reports/duplicates",
+                                   scalar($cgi->param('format')),
+                                   scalar($cgi->param('ctype')));
 
 print $cgi->header($format->{'ctype'});
 
diff --git a/editclassifications.cgi b/editclassifications.cgi
index 4fdd948ea352b884ee35cd6c04097581b76dd2ab..e70d256c10346009eb2b9272ae9dda6c970a67c6 100755
--- a/editclassifications.cgi
+++ b/editclassifications.cgi
@@ -28,43 +28,17 @@ use Bugzilla::Constants;
 use Bugzilla::Util;
 use Bugzilla::Error;
 use Bugzilla::Config qw($datadir);
+use Bugzilla::Classification;
+use Bugzilla::Product;
 
-require "CGI.pl";
+require "globals.pl";
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
 my $template = Bugzilla->template;
 my $vars = {};
 
-# TestClassification:  just returns if the specified classification does exist
-# CheckClassification: same check, optionally  emit an error text
-
-sub TestClassification ($) {
-    my $cl = shift;
-    my $dbh = Bugzilla->dbh;
-
-    trick_taint($cl);
-    # does the classification exist?
-    my $sth = $dbh->prepare("SELECT name
-                             FROM classifications
-                             WHERE name=?");
-    $sth->execute($cl);
-    my @row = $sth->fetchrow_array();
-    return $row[0];
-}
-
-sub CheckClassification ($) {
-    my $cl = shift;
-
-    unless ($cl) {
-        ThrowUserError("classification_not_specified");
-    }
-    if (! TestClassification($cl)) {
-        ThrowUserError("classification_doesnt_exist", { name => $cl });
-    }
-}
-
-sub LoadTemplate ($) {
+sub LoadTemplate {
     my $action = shift;
 
     $action =~ /(\w+)/;
@@ -93,44 +67,16 @@ ThrowUserError("auth_classification_not_enabled") unless Param("useclassificatio
 #
 # often used variables
 #
-my $action = trim($cgi->param('action') || '');
-my $classification = trim($cgi->param('classification') || '');
-trick_taint($classification);
-$vars->{'classification'} = $classification;
-
+my $action     = trim($cgi->param('action')         || '');
+my $class_name = trim($cgi->param('classification') || '');
+    
 #
 # action='' -> Show nice list of classifications
 #
 
 unless ($action) {
-    my @classifications;
-    # left join is tricky
-    #   - must select "classifications" fields if you want a REAL value
-    #   - must use "count(products.classification_id)" if you want a true
-    #     count.  If you use count(classifications.id), it will return 1 for NULL
-    #   - must use "group by classifications.id" instead of
-    #     products.classification_id. Otherwise it won't look for all
-    #     classification ids, just the ones used by the products.
-    my $sth = $dbh->prepare("SELECT classifications.id, classifications.name,
-                                    classifications.description,
-                                    COUNT(classification_id) AS total
-                             FROM classifications
-                             LEFT JOIN products
-                             ON classifications.id = products.classification_id
-                            " . $dbh->sql_group_by('classifications.id',
-                                         'classifications.name,
-                                          classifications.description') . "
-                             ORDER BY name");
-    $sth->execute();
-    while (my ($id,$classification,$description,$total) = $sth->fetchrow_array()) {
-        my $cl = {};
-        $cl->{'id'} = $id;
-        $cl->{'classification'} = $classification;
-        $cl->{'description'} = $description if (defined $description);
-        $cl->{'total'} = $total;
-
-        push(@classifications, $cl);
-    }
+    my @classifications =
+        Bugzilla::Classification::get_all_classifications();
 
     $vars->{'classifications'} = \@classifications;
     LoadTemplate("select");
@@ -151,19 +97,24 @@ if ($action eq 'add') {
 #
 
 if ($action eq 'new') {
-    unless ($classification) {
-        ThrowUserError("classification_not_specified");
-    }
-    if (TestClassification($classification)) {
-        ThrowUserError("classification_already_exists", { name => $classification });
+
+    $class_name || ThrowUserError("classification_not_specified");
+
+    my $classification =
+        new Bugzilla::Classification({name => $class_name});
+
+    if ($classification) {
+        ThrowUserError("classification_already_exists",
+                       { name => $classification->name });
     }
+    
     my $description = trim($cgi->param('description')  || '');
     trick_taint($description);
+    trick_taint($class_name);
 
     # Add the new classification.
-    my $sth = $dbh->prepare("INSERT INTO classifications (name,description)
-                            VALUES (?,?)");
-    $sth->execute($classification,$description);
+    $dbh->do("INSERT INTO classifications (name, description)
+              VALUES (?, ?)", undef, ($class_name, $description));
 
     # Make versioncache flush
     unlink "$datadir/versioncache";
@@ -178,25 +129,20 @@ if ($action eq 'new') {
 #
 
 if ($action eq 'del') {
-    CheckClassification($classification);
-    my $sth;
 
-    # display some data about the classification
-    $sth = $dbh->prepare("SELECT id, description
-                          FROM classifications
-                          WHERE name=?");
-    $sth->execute($classification);
-    my ($classification_id, $description) = $sth->fetchrow_array();
+    my $classification =
+        Bugzilla::Classification::check_classification($class_name);
 
-    ThrowUserError("classification_not_deletable") if ($classification_id eq "1");
+    if ($classification->id == 1) {
+        ThrowUserError("classification_not_deletable");
+    }
 
-    $sth = $dbh->prepare("SELECT name
-                          FROM products
-                          WHERE classification_id=$classification_id");
-    $sth->execute();
-    ThrowUserError("classification_has_products") if ($sth->fetchrow_array());
+    if ($classification->product_count()) {
+        ThrowUserError("classification_has_products");
+    }
 
-    $vars->{'description'} = $description if (defined $description);
+    $vars->{'description'} = $classification->description;
+    $vars->{'classification'} = $classification->name;
 
     LoadTemplate($action);
 }
@@ -206,32 +152,31 @@ if ($action eq 'del') {
 #
 
 if ($action eq 'delete') {
-    CheckClassification($classification);
 
-    my $sth;
-    my $classification_id = get_classification_id($classification);
+    my $classification =
+        Bugzilla::Classification::check_classification($class_name);
 
-    if ($classification_id == 1) {
-        ThrowUserError("cant_delete_default_classification", { name => $classification });
+    if ($classification->id == 1) {
+        ThrowUserError("classification_not_deletable");
     }
 
     # lock the tables before we start to change everything:
     $dbh->bz_lock_tables('classifications WRITE', 'products WRITE');
 
     # delete
-    $sth = $dbh->prepare("DELETE FROM classifications WHERE id=?");
-    $sth->execute($classification_id);
+    $dbh->do("DELETE FROM classifications WHERE id = ?", undef,
+             $classification->id);
 
     # update products just in case
-    $sth = $dbh->prepare("UPDATE products 
-                          SET classification_id=1
-                          WHERE classification_id=?");
-    $sth->execute($classification_id);
+    $dbh->do("UPDATE products SET classification_id = 1
+              WHERE classification_id = ?", undef, $classification->id);
 
     $dbh->bz_unlock_tables();
 
     unlink "$datadir/versioncache";
 
+    $vars->{'classification'} = $classification->name;
+
     LoadTemplate($action);
 }
 
@@ -242,34 +187,17 @@ if ($action eq 'delete') {
 #
 
 if ($action eq 'edit') {
-    CheckClassification($classification);
 
-    my @products = ();
-    my $has_products = 0;
-    my $sth;
-    
+    my $classification =
+        Bugzilla::Classification::check_classification($class_name);
 
-    # get data of classification
-    $sth = $dbh->prepare("SELECT id,description
-                          FROM classifications
-                          WHERE name=?");
-    $sth->execute($classification);
-    my ($classification_id,$description) = $sth->fetchrow_array();
-    $vars->{'description'} = $description if (defined $description);
-
-    $sth = $dbh->prepare("SELECT name,description
-                          FROM products
-                          WHERE classification_id=?
-                          ORDER BY name");
-    $sth->execute($classification_id);
-    while ( my ($product, $prod_description) = $sth->fetchrow_array()) {
-        my $prod = {};
-        $has_products = 1;
-        $prod->{'name'} = $product;
-        $prod->{'description'} = $prod_description if (defined $prod_description);
-        push(@products, $prod);
-    }
-    $vars->{'products'} = \@products if ($has_products);
+    my @products =
+        Bugzilla::Product::get_products_by_classification(
+            $classification->id);
+
+    $vars->{'description'} = $classification->description;
+    $vars->{'classification'} = $classification->name;
+    $vars->{'products'} = \@products;
 
     LoadTemplate($action);
 }
@@ -279,48 +207,46 @@ if ($action eq 'edit') {
 #
 
 if ($action eq 'update') {
-    my $classificationold   = trim($cgi->param('classificationold')   || '');
-    my $description         = trim($cgi->param('description')         || '');
-    my $descriptionold      = trim($cgi->param('descriptionold')      || '');
-    my $checkvotes = 0;
-    my $sth;
 
-    CheckClassification($classificationold);
+    $class_name || ThrowUserError("classification_not_specified");
 
-    my $classification_id = get_classification_id($classificationold);
-    trick_taint($description);
+    my $class_old_name = trim($cgi->param('classificationold') || '');
+    my $description    = trim($cgi->param('description')       || '');
 
-    # Note that we got the $classification_id using $classificationold
-    # above so it will remain static even after we rename the
-    # classification in the database.
+    my $class_old =
+        Bugzilla::Classification::check_classification($class_old_name);
 
     $dbh->bz_lock_tables('classifications WRITE');
 
-    if ($classification ne $classificationold) {
-        unless ($classification) {
-            ThrowUserError("classification_not_specified");
+    if ($class_name ne $class_old->name) {
+
+        my $class = new Bugzilla::Classification({name => $class_name});
+        if ($class) {
+            ThrowUserError("classification_already_exists",
+                           { name => $class->name });
         }
+        trick_taint($class_name);
+        $dbh->do("UPDATE classifications SET name = ? WHERE id = ?",
+                 undef, ($class_name, $class_old->id));
         
-        if (TestClassification($classification)) {
-            ThrowUserError("classification_already_exists", { name => $classification });
-        }
-        $sth = $dbh->prepare("UPDATE classifications
-                              SET name=? WHERE id=?");
-        $sth->execute($classification,$classification_id);
         $vars->{'updated_classification'} = 1;
+
+        unlink "$datadir/versioncache";
     }
 
-    if ($description ne $descriptionold) {
-        $sth = $dbh->prepare("UPDATE classifications
-                              SET description=?
-                              WHERE id=?");
-        $sth->execute($description,$classification_id);
+    if ($description ne $class_old->description) {
+        trick_taint($description);
+        $dbh->do("UPDATE classifications SET description = ?
+                  WHERE id = ?", undef,
+                 ($description, $class_old->id));
+
         $vars->{'updated_description'} = 1;
+
+        unlink "$datadir/versioncache";
     }
 
     $dbh->bz_unlock_tables();
 
-    unlink "$datadir/versioncache";
     LoadTemplate($action);
 }
 
@@ -329,26 +255,20 @@ if ($action eq 'update') {
 #
 
 if ($action eq 'reclassify') {
-    CheckClassification($classification);
-    my $sth;
 
-    # display some data about the classification
-    $sth = $dbh->prepare("SELECT id, description
-                          FROM classifications
-                          WHERE name=?");
-    $sth->execute($classification);
-    my ($classification_id, $description) = $sth->fetchrow_array();
+    my $classification =
+        Bugzilla::Classification::check_classification($class_name);
+   
+    $vars->{'description'} = $classification->description;
 
-    $vars->{'description'} = $description if (defined $description);
+    my $sth = $dbh->prepare("UPDATE products SET classification_id = ?
+                             WHERE name = ?");
 
-    $sth = $dbh->prepare("UPDATE products
-                          SET classification_id=?
-                          WHERE name=?");
     if (defined $cgi->param('add_products')) {
         if (defined $cgi->param('prodlist')) {
             foreach my $prod ($cgi->param("prodlist")) {
                 trick_taint($prod);
-                $sth->execute($classification_id,$prod);
+                $sth->execute($classification->id, $prod);
             }
         }
     } elsif (defined $cgi->param('remove_products')) {
@@ -358,44 +278,24 @@ if ($action eq 'reclassify') {
                 $sth->execute(1,$prod);
             }
         }
-    } elsif (defined $cgi->param('migrate_products')) {
-        if (defined $cgi->param('clprodlist')) {
-            foreach my $prod ($cgi->param("clprodlist")) {
-                trick_taint($prod);
-                $sth->execute($classification_id,$prod);
-            }
-        }
     }
 
     my @selected_products = ();
-    my @class_products = ();
-
-    $sth = $dbh->prepare("SELECT classifications.id,
-                                 products.name,
-                                 classifications.name,
-                                 classifications.id > 1 as unknown
-                           FROM products
-                           INNER JOIN classifications
-                           ON classifications.id = products.classification_id
-                           ORDER BY unknown, products.name,
-                                    classifications.name");
-    $sth->execute();
-    while ( my ($clid, $name, $clname) = $sth->fetchrow_array() ) {
-        if ($clid == $classification_id) {
-            push(@selected_products,$name);
+    my @unselected_products = ();
+
+    my @products = Bugzilla::Product::get_all_products();
+
+    foreach my $product (@products) {
+        if ($product->classification_id == $classification->id) {
+            push @selected_products, $product;
         } else {
-            my $cl = {};
-            if ($clid == 1) {
-                $cl->{'name'} = "[$clname] $name";
-            } else {
-                $cl->{'name'} = "$name [$clname]";
-            }
-            $cl->{'value'} = $name;
-            push(@class_products,$cl);
+            push @unselected_products, $product;
         }
     }
-    $vars->{'selected_products'} = \@selected_products;
-    $vars->{'class_products'} = \@class_products;
+    
+    $vars->{'selected_products'}   = \@selected_products;
+    $vars->{'unselected_products'} = \@unselected_products;
+    $vars->{'classification'} = $classification->name;
 
     LoadTemplate($action);
 }
@@ -404,4 +304,4 @@ if ($action eq 'reclassify') {
 # No valid action found
 #
 
-ThrowCodeError("action_unrecognized", $vars);
+ThrowCodeError("action_unrecognized", {action => $action});
diff --git a/editcomponents.cgi b/editcomponents.cgi
index 6f8bc99f22efad1b068ab48f2b44a6ce9a62eaf5..096570d82df4d70d2ef98069186ad6b3b22bf61c 100755
--- a/editcomponents.cgi
+++ b/editcomponents.cgi
@@ -28,7 +28,6 @@
 use strict;
 use lib ".";
 
-require "CGI.pl";
 require "globals.pl";
 
 use Bugzilla::Constants;
@@ -36,78 +35,15 @@ use Bugzilla::Config qw(:DEFAULT $datadir);
 use Bugzilla::Series;
 use Bugzilla::Util;
 use Bugzilla::User;
+use Bugzilla::Product;
+use Bugzilla::Component;
+use Bugzilla::Bug;
 
 use vars qw($template $vars);
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
 
-my $showbugcounts = (defined $cgi->param('showbugcounts'));
-
-# TestProduct:    just returns if the specified product does exists
-# CheckProduct:   same check, optionally  emit an error text
-# TestComponent:  just returns if the specified product/component combination exists
-# CheckComponent: same check, optionally emit an error text
-
-sub TestProduct ($)
-{
-    my $prod = shift;
-
-    # does the product exist?
-    SendSQL("SELECT name
-             FROM products
-             WHERE name = " . SqlQuote($prod));
-    return FetchOneColumn();
-}
-
-sub CheckProduct ($)
-{
-    my $prod = shift;
-
-    # do we have a product?
-    unless ($prod) {
-        ThrowUserError('product_not_specified');
-    }
-
-    unless (TestProduct $prod) {
-        ThrowUserError('product_doesnt_exist',
-                       {'product' => $prod});
-    }
-}
-
-sub TestComponent ($$)
-{
-    my ($prod, $comp) = @_;
-
-    # does the product/component combination exist?
-    SendSQL("SELECT components.name
-             FROM components
-             INNER JOIN products
-                ON products.id = components.product_id
-             WHERE products.name = " . SqlQuote($prod) . "
-             AND components.name = " . SqlQuote($comp));
-    return FetchOneColumn();
-}
-
-sub CheckComponent ($$)
-{
-    my ($prod, $comp) = @_;
-
-    # do we have the component?
-    unless ($comp) {
-        ThrowUserError('component_not_specified');
-    }
-
-    CheckProduct($prod);
-
-    unless (TestComponent $prod, $comp) {
-        ThrowUserError('component_not_valid',
-                       {'product' => $prod,
-                        'name' => $comp});
-    }
-}
-
-
 #
 # Preliminary checks:
 #
@@ -115,9 +51,9 @@ sub CheckComponent ($$)
 my $user = Bugzilla->login(LOGIN_REQUIRED);
 my $whoid = $user->id;
 
-print Bugzilla->cgi->header();
+print $cgi->header();
 
-UserInGroup("editcomponents")
+$user->in_group('editcomponents')
   || ThrowUserError("auth_failure", {group  => "editcomponents",
                                      action => "edit",
                                      object => "components"});
@@ -125,44 +61,18 @@ UserInGroup("editcomponents")
 #
 # often used variables
 #
-my $product   = trim($cgi->param('product')   || '');
-my $component = trim($cgi->param('component') || '');
-my $action    = trim($cgi->param('action')    || '');
-
-
+my $product_name  = trim($cgi->param('product')     || '');
+my $comp_name     = trim($cgi->param('component')   || '');
+my $action        = trim($cgi->param('action')      || '');
+my $showbugcounts = (defined $cgi->param('showbugcounts'));
 
 #
 # product = '' -> Show nice list of products
 #
 
-unless ($product) {
-
-    my @products = ();
+unless ($product_name) {
 
-    if ($showbugcounts){
-        SendSQL("SELECT products.name, products.description, COUNT(bug_id)
-                 FROM products LEFT JOIN bugs
-                   ON products.id = bugs.product_id " .
-                $dbh->sql_group_by('products.name', 'products.description') . "
-                 ORDER BY products.name");
-    } else {
-        SendSQL("SELECT products.name, products.description
-                 FROM products 
-                 ORDER BY products.name");
-    }
-
-    while ( MoreSQLData() ) {
-
-        my $prod = {};
-
-        my ($name, $description, $bug_count) = FetchSQLData();
-
-        $prod->{'name'} = $name;
-        $prod->{'description'} = $description;
-        $prod->{'bug_count'} = $bug_count;
-
-        push(@products, $prod);
-    }
+    my @products = Bugzilla::Product::get_all_products();
 
     $vars->{'showbugcounts'} = $showbugcounts;
     $vars->{'products'} = \@products;
@@ -174,7 +84,7 @@ unless ($product) {
     exit;
 }
 
-
+my $product = Bugzilla::Product::check_product($product_name);
 
 #
 # action='' -> Show nice list of components
@@ -182,51 +92,14 @@ unless ($product) {
 
 unless ($action) {
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
-    my @components = ();
-
-    if ($showbugcounts) {
-        SendSQL("SELECT name, description, initialowner,
-                        initialqacontact, COUNT(bug_id)
-                 FROM components LEFT JOIN bugs
-                   ON components.id = bugs.component_id
-                 WHERE components.product_id = $product_id " .
-                $dbh->sql_group_by('name',
-                    'description, initialowner, initialqacontact'));
-    } else {
-        SendSQL("SELECT name, description, initialowner, initialqacontact
-                 FROM components 
-                 WHERE product_id = $product_id " .
-                $dbh->sql_group_by('name',
-                    'description, initialowner, initialqacontact'));
-    }        
-
-    while (MoreSQLData()) {
-
-        my $component = {};
-        my ($name, $desc, $initialownerid, $initialqacontactid, $bug_count)
-            = FetchSQLData();
-
-        $component->{'name'} = $name;
-        $component->{'description'} = $desc;
-        $component->{'initialowner'} = DBID_to_name($initialownerid)
-            if ($initialownerid);
-        $component->{'initialqacontact'} = DBID_to_name($initialqacontactid)
-            if ($initialqacontactid);
-        $component->{'bug_count'} = $bug_count;
-
-        push(@components, $component);
+    my @components =
+        Bugzilla::Component::get_components_by_product($product->id);
 
-    }
-
-    
     $vars->{'showbugcounts'} = $showbugcounts;
-    $vars->{'product'} = $product;
+    $vars->{'product'} = $product->name;
     $vars->{'components'} = \@components;
-    $template->process("admin/components/list.html.tmpl",
-                       $vars)
-      || ThrowTemplateError($template->error());
+    $template->process("admin/components/list.html.tmpl", $vars)
+        || ThrowTemplateError($template->error());
 
     exit;
 }
@@ -240,13 +113,9 @@ unless ($action) {
 
 if ($action eq 'add') {
 
-    CheckProduct($product);
-
-    $vars->{'product'} = $product;
-    $template->process("admin/components/create.html.tmpl",
-                       $vars)
-      || ThrowTemplateError($template->error());
-
+    $vars->{'product'} = $product->name;
+    $template->process("admin/components/create.html.tmpl", $vars)
+        || ThrowTemplateError($template->error());
 
     exit;
 }
@@ -258,67 +127,52 @@ if ($action eq 'add') {
 #
 
 if ($action eq 'new') {
+    
+    # Do the user matching
+    Bugzilla::User::match_field ($cgi, {
+        'initialowner'     => { 'type' => 'single' },
+        'initialqacontact' => { 'type' => 'single' },
+    });
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
-
+    my $default_assignee   = trim($cgi->param('initialowner')     || '');
+    my $default_qa_contact = trim($cgi->param('initialqacontact') || '');
+    my $description        = trim($cgi->param('description')      || '');
 
-    # Cleanups and valididy checks
+    $comp_name || ThrowUserError('component_blank_name');
 
-    unless ($component) {
-        ThrowUserError('component_blank_name',
-                       {'name' => $component});
-    }
-    if (TestComponent($product, $component)) {
-        ThrowUserError('component_already_exists',
-                       {'name' => $component});
-    }
-
-    if (length($component) > 64) {
+    if (length($comp_name) > 64) {
         ThrowUserError('component_name_too_long',
-                       {'name' => $component});
+                       {'name' => $comp_name});
     }
 
-    my $description = trim($cgi->param('description') || '');
+    my $component =
+        new Bugzilla::Component({product_id => $product->id,
+                                 name => $comp_name});
 
-    if ($description eq '') {
-        ThrowUserError('component_blank_description',
-                       {'name' => $component});
+    if ($component) {
+        ThrowUserError('component_already_exists',
+                       {'name' => $component->name});
     }
 
-    my $initialowner = trim($cgi->param('initialowner') || '');
+    $description || ThrowUserError('component_blank_description',
+                                   {name => $comp_name});
 
-    if ($initialowner eq '') {
-        ThrowUserError('component_need_initialowner',
-                       {'name' => $component});
-    }
+    $default_assignee || ThrowUserError('component_need_initialowner',
+                                        {name => $comp_name});
 
-    my $initialownerid = login_to_id ($initialowner);
-    if (!$initialownerid) {
-        ThrowUserError('component_need_valid_initialowner',
-                       {'name' => $component});
-    }
+    my $default_assignee_id   = login_to_id($default_assignee);
+    my $default_qa_contact_id = Param('useqacontact') ?
+        (login_to_id($default_qa_contact) || undef) : undef;
 
-    my $initialqacontact = trim($cgi->param('initialqacontact') || '');
-    my $initialqacontactid = login_to_id ($initialqacontact);
-    if (Param('useqacontact')) {
-        if (!$initialqacontactid && $initialqacontact ne '') {
-            ThrowUserError('component_need_valid_initialqacontact',
-                           {'name' => $component});
-        }
-    }
-    my $initialqacontactsql =
-              $initialqacontact ne '' ? SqlQuote($initialqacontactid) : 'NULL';
-
-    # Add the new component
-    SendSQL("INSERT INTO components ( " .
-          "product_id, name, description, initialowner, initialqacontact " .
-          " ) VALUES ( " .
-          $product_id . "," .
-          SqlQuote($component) . "," .
-          SqlQuote($description) . "," .
-          SqlQuote($initialownerid) . "," .
-          $initialqacontactsql . ")");
+    trick_taint($comp_name);
+    trick_taint($description);
+
+    $dbh->do("INSERT INTO components
+                (product_id, name, description, initialowner,
+                 initialqacontact)
+              VALUES (?, ?, ?, ?, ?)", undef,
+             ($product->id, $comp_name, $description,
+              $default_assignee_id, $default_qa_contact_id));
 
     # Insert default charting queries for this product.
     # If they aren't using charting, this won't do any harm.
@@ -326,8 +180,8 @@ if ($action eq 'new') {
 
     my @series;
 
-    my $prodcomp = "&product=" . url_quote($product) . 
-                   "&component=" . url_quote($component);
+    my $prodcomp = "&product="   . url_quote($product->name) .
+                   "&component=" . url_quote($comp_name);
 
     # For localisation reasons, we get the title of the queries from the
     # submitted form.
@@ -351,17 +205,17 @@ if ($action eq 'new') {
     push(@series, [$closed_name, $resolved]);
 
     foreach my $sdata (@series) {
-        my $series = new Bugzilla::Series(undef, $product, $component,
-                                          $sdata->[0], $::userid, 1,
-                                          $sdata->[1], 1);
+        my $series = new Bugzilla::Series(undef, $product->name,
+                                          $comp_name, $sdata->[0],
+                                          $::userid, 1, $sdata->[1], 1);
         $series->writeToDatabase();
     }
 
     # Make versioncache flush
     unlink "$datadir/versioncache";
 
-    $vars->{'name'} = $component;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $comp_name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/components/created.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -378,54 +232,14 @@ if ($action eq 'new') {
 #
 
 if ($action eq 'del') {
-
-    CheckComponent($product, $component);
-    my $component_id = get_component_id(get_product_id($product), $component);
-
-    # display some data about the component
-    SendSQL("SELECT products.name, products.description,
-                    products.milestoneurl, products.disallownew,
-                    components.name, components.initialowner,
-                    components.initialqacontact, components.description
-             FROM products
-             LEFT JOIN components ON products.id = components.product_id
-             WHERE components.id = $component_id");
-
-
-    my ($product, $product_description, $milestoneurl, $disallownew,
-        $component, $initialownerid, $initialqacontactid, $description) =
-            FetchSQLData();
-
-
-    my $initialowner = $initialownerid ? DBID_to_name ($initialownerid) : '';
-    my $initialqacontact = $initialqacontactid ? DBID_to_name ($initialqacontactid) : '';
-    $milestoneurl        ||= '';
-    $product_description ||= '';
-    $disallownew         ||= 0;
-    $description         ||= '';
     
-    if (Param('useqacontact')) {
-        $vars->{'initialqacontact'} = $initialqacontact;
-    }
+    $vars->{'comp'} =
+        Bugzilla::Component::check_component($product, $comp_name);
 
-    if (Param('usetargetmilestone')) {
-        $vars->{'milestoneurl'} = $milestoneurl;
-    }
+    $vars->{'prod'} = $product;
 
-    SendSQL("SELECT count(bug_id)
-             FROM bugs
-             WHERE component_id = $component_id");
-    $vars->{'bug_count'} = FetchOneColumn() || 0;
-
-    $vars->{'name'} = $component;
-    $vars->{'description'} = $description;
-    $vars->{'initialowner'} = $initialowner;
-    $vars->{'product'} = $product;
-    $vars->{'product_description'} = $product_description;
-    $vars->{'disallownew'} = $disallownew;
-    $template->process("admin/components/confirm-delete.html.tmpl",
-                       $vars)
-      || ThrowTemplateError($template->error());
+    $template->process("admin/components/confirm-delete.html.tmpl", $vars)
+        || ThrowTemplateError($template->error());
 
     exit;
 }
@@ -437,43 +251,40 @@ if ($action eq 'del') {
 #
 
 if ($action eq 'delete') {
-    CheckComponent($product, $component);
-    my $component_id = get_component_id(get_product_id($product), $component);
 
-    my $bug_ids =
-      $dbh->selectcol_arrayref("SELECT bug_id FROM bugs WHERE component_id = ?",
-                               undef, $component_id);
+    my $component =
+        Bugzilla::Component::check_component($product, $comp_name);
 
-    my $nb_bugs = scalar(@$bug_ids);
-    if ($nb_bugs) {
+    if ($component->bug_count) {
         if (Param("allowbugdeletion")) {
-            foreach my $bug_id (@$bug_ids) {
+            foreach my $bug_id (@{$component->bug_ids}) {
                 my $bug = new Bugzilla::Bug($bug_id, $whoid);
                 $bug->remove_from_db();
             }
-        }
-        else {
-            ThrowUserError("component_has_bugs", { nb => $nb_bugs });
+        } else {
+            ThrowUserError("component_has_bugs",
+                           {nb => $component->bug_count });
         }
     }
 
-    $vars->{'deleted_bug_count'} = $nb_bugs;
+    $vars->{'deleted_bug_count'} = $component->bug_count;
 
     $dbh->bz_lock_tables('components WRITE', 'flaginclusions WRITE',
                          'flagexclusions WRITE');
 
     $dbh->do("DELETE FROM flaginclusions WHERE component_id = ?",
-             undef, $component_id);
+             undef, $component->id);
     $dbh->do("DELETE FROM flagexclusions WHERE component_id = ?",
-             undef, $component_id);
-    $dbh->do("DELETE FROM components WHERE id = ?", undef, $component_id);
+             undef, $component->id);
+    $dbh->do("DELETE FROM components WHERE id = ?",
+             undef, $component->id);
 
     $dbh->bz_unlock_tables();
 
     unlink "$datadir/versioncache";
 
-    $vars->{'name'} = $component;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $component->name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/components/deleted.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
     exit;
@@ -489,34 +300,10 @@ if ($action eq 'delete') {
 
 if ($action eq 'edit') {
 
-    CheckComponent($product, $component);
-    my $component_id = get_component_id(get_product_id($product), $component);
-
-    # get data of component
-    SendSQL("SELECT products.name,
-                    components.name, components.initialowner,
-                    components.initialqacontact, components.description
-             FROM products LEFT JOIN components ON 
-                  products.id = components.product_id
-             WHERE components.id = $component_id");
+    $vars->{'comp'} =
+        Bugzilla::Component::check_component($product, $comp_name);
 
-    my ($product, $component, $initialownerid, $initialqacontactid,
-        $description) = FetchSQLData();
-
-    my $initialowner = $initialownerid ? DBID_to_name ($initialownerid) : '';
-    my $initialqacontact = $initialqacontactid ? DBID_to_name ($initialqacontactid) : '';
-
-    SendSQL("SELECT count(*)
-             FROM bugs
-             WHERE component_id = $component_id");
-
-    $vars->{'bug_count'} = FetchOneColumn() || 0;
-
-    $vars->{'name'} = $component;
-    $vars->{'description'} = $description;
-    $vars->{'initialowner'} = $initialowner;
-    $vars->{'initialqacontact'} = $initialqacontact;
-    $vars->{'product'} = $product;
+    $vars->{'prod'} = $product;
 
     $template->process("admin/components/edit.html.tmpl",
                        $vars)
@@ -533,99 +320,94 @@ if ($action eq 'edit') {
 
 if ($action eq 'update') {
 
-    my $componentold        = trim($cgi->param('componentold')        || '');
-    my $description         = trim($cgi->param('description')         || '');
-    my $descriptionold      = trim($cgi->param('descriptionold')      || '');
-    my $initialowner        = trim($cgi->param('initialowner')        || '');
-    my $initialownerold     = trim($cgi->param('initialownerold')     || '');
-    my $initialqacontact    = trim($cgi->param('initialqacontact')    || '');
-    my $initialqacontactold = trim($cgi->param('initialqacontactold') || '');
+    # Do the user matching
+    Bugzilla::User::match_field ($cgi, {
+        'initialowner'     => { 'type' => 'single' },
+        'initialqacontact' => { 'type' => 'single' },
+    });
+
+    my $comp_old_name         = trim($cgi->param('componentold')     || '');
+    my $default_assignee      = trim($cgi->param('initialowner')     || '');
+    my $default_qa_contact    = trim($cgi->param('initialqacontact') || '');
+    my $description           = trim($cgi->param('description')      || '');
+
+    my $component_old =
+        Bugzilla::Component::check_component($product, $comp_old_name);
+
+    $comp_name || ThrowUserError('component_blank_name');
 
-    if (length($component) > 64) {
+    if (length($comp_name) > 64) {
         ThrowUserError('component_name_too_long',
-                       {'name' => $component});
+                       {'name' => $comp_name});
     }
 
-    # Note that the order of this tests is important. If you change
-    # them, be sure to test for WHERE='$component' or WHERE='$componentold'
-
-    $dbh->bz_lock_tables('components WRITE', 'products READ',
-                         'profiles READ');
-    CheckComponent($product, $componentold);
-    my $component_id = get_component_id(get_product_id($product),
-                                        $componentold);
-
-    if ($description ne $descriptionold) {
-        unless ($description) {
-            ThrowUserError('component_blank_description',
-                           {'name' => $componentold});
+    if ($comp_name ne $component_old->name) {
+        my $component =
+            new Bugzilla::Component({product_id => $product->id,
+                                     name => $comp_name});
+        if ($component) {
+            ThrowUserError('component_already_exists',
+                           {'name' => $component->name});
         }
-        SendSQL("UPDATE components
-                 SET description=" . SqlQuote($description) . "
-                 WHERE id=$component_id");
-
-        $vars->{'updated_description'} = 1;
-        $vars->{'description'} = $description;
     }
 
+    $description || ThrowUserError('component_blank_description',
+                                   {'name' => $component_old->name});
 
-    if ($initialowner ne $initialownerold) {
+    $default_assignee || ThrowUserError('component_need_initialowner',
+                                        {name => $comp_name});
 
-        my $initialownerid = login_to_id($initialowner);
-        unless ($initialownerid) {
-            ThrowUserError('component_need_valid_initialowner',
-                           {'name' => $componentold});
-        }
+    my $default_assignee_id   = login_to_id($default_assignee);
+    my $default_qa_contact_id = login_to_id($default_qa_contact) || undef;
 
-        SendSQL("UPDATE components
-                 SET initialowner=" . SqlQuote($initialownerid) . "
-                 WHERE id = $component_id");
+    $dbh->bz_lock_tables('components WRITE', 'products READ',
+                         'profiles READ');
 
-        $vars->{'updated_initialowner'} = 1;
-        $vars->{'initialowner'} = $initialowner;
+    if ($comp_name ne $component_old->name) {
 
-    }
+        trick_taint($comp_name);
+        $dbh->do("UPDATE components SET name = ? WHERE id = ?",
+                 undef, ($comp_name, $component_old->id));
 
-    if (Param('useqacontact') && $initialqacontact ne $initialqacontactold) {
-        my $initialqacontactid = login_to_id($initialqacontact);
-        if (!$initialqacontactid && $initialqacontact ne '') {
-            ThrowUserError('component_need_valid_initialqacontact',
-                           {'name' => $componentold});
-        }
-        my $initialqacontactsql =
-              $initialqacontact ne '' ? SqlQuote($initialqacontactid) : 'NULL';
+        unlink "$datadir/versioncache";
+        $vars->{'updated_name'} = 1;
+
+    }
 
-        SendSQL("UPDATE components
-                 SET initialqacontact = $initialqacontactsql
-                 WHERE id = $component_id");
+    if ($description ne $component_old->description) {
+    
+        trick_taint($description);
+        $dbh->do("UPDATE components SET description = ? WHERE id = ?",
+                 undef, ($description, $component_old->id));
 
-        $vars->{'updated_initialqacontact'} = 1;
-        $vars->{'initialqacontact'} = $initialqacontact;
+        $vars->{'updated_description'} = 1;
+        $vars->{'description'} = $description;
     }
 
+    if ($default_assignee ne $component_old->default_assignee->login) {
 
-    if ($component ne $componentold) {
-        unless ($component) {
-            ThrowUserError('component_must_have_a_name',
-                           {'name' => $componentold});
-        }
-        if (TestComponent($product, $component)) {
-            ThrowUserError('component_already_exists',
-                           {'name' => $component});
-        }
+        $dbh->do("UPDATE components SET initialowner = ? WHERE id = ?",
+                 undef, ($default_assignee_id, $component_old->id));
 
-        SendSQL("UPDATE components SET name=" . SqlQuote($component) . 
-                 "WHERE id=$component_id");
+        $vars->{'updated_initialowner'} = 1;
+        $vars->{'initialowner'} = $default_assignee;
 
-        unlink "$datadir/versioncache";
-        $vars->{'updated_name'} = 1;
+    }
+
+    if (Param('useqacontact')
+        && $default_qa_contact ne $component_old->default_qa_contact->login) {
+        $dbh->do("UPDATE components SET initialqacontact = ?
+                  WHERE id = ?", undef,
+                 ($default_qa_contact_id, $component_old->id));
 
+        $vars->{'updated_initialqacontact'} = 1;
+        $vars->{'initialqacontact'} = $default_qa_contact;
     }
 
     $dbh->bz_unlock_tables();
 
-    $vars->{'name'} = $component;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $comp_name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/components/updated.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -633,8 +415,6 @@ if ($action eq 'update') {
     exit;
 }
 
-
-
 #
 # No valid action found
 #
diff --git a/editflagtypes.cgi b/editflagtypes.cgi
index bdf0779b4d19527bcfae91e580b51359c4159d29..3e70e901c8994024d2fdb1b541bf5cef8a8ea227 100755
--- a/editflagtypes.cgi
+++ b/editflagtypes.cgi
@@ -29,20 +29,21 @@ use strict;
 use lib ".";
 
 # Include the Bugzilla CGI and general utility library.
-require "CGI.pl";
+require "globals.pl";
 
 # Use Bugzilla's flag modules for handling flag types.
 use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::Flag;
 use Bugzilla::FlagType;
-use Bugzilla::User;
+use Bugzilla::Group;
+use Bugzilla::Util;
 
 use vars qw( $template $vars );
 
 # Make sure the user is logged in and is an administrator.
-Bugzilla->login(LOGIN_REQUIRED);
-UserInGroup("editcomponents")
+my $user = Bugzilla->login(LOGIN_REQUIRED);
+$user->in_group('editcomponents')
   || ThrowUserError("auth_failure", {group  => "editcomponents",
                                      action => "edit",
                                      object => "flagtypes"});
@@ -111,6 +112,7 @@ sub list {
 
 sub edit {
     $action eq 'enter' ? validateTargetType() : (my $id = validateID());
+    my $dbh = Bugzilla->dbh;
     
     # Get this installation's products and components.
     GetVersionTable();
@@ -139,8 +141,9 @@ sub edit {
         foreach my $group ("grant_gid", "request_gid") {
             my $gid = $vars->{'type'}->{$group};
             next if (!$gid);
-            SendSQL("SELECT name FROM groups WHERE id = $gid");
-            $vars->{'type'}->{$group} = FetchOneColumn();
+            ($vars->{'type'}->{$group}) =
+                $dbh->selectrow_array('SELECT name FROM groups WHERE id = ?',
+                                       undef, $gid);
         }
     }
     # Otherwise set the target type (the minimal information about the type
@@ -152,7 +155,9 @@ sub edit {
         $vars->{'type'} = { 'target_type' => scalar $cgi->param('target_type'),
                             'inclusions'  => \%inclusions };
     }
-    
+    # Get a list of groups available to restrict this flag type against.
+    my @groups = Bugzilla::Group::get_all_groups();
+    $vars->{'groups'} = \@groups;
     # Return the appropriate HTTP response headers.
     print $cgi->header();
 
@@ -202,7 +207,8 @@ sub processCategoryChange {
     $vars->{'products'} = \@::legal_product;
     $vars->{'components'} = \@::legal_components;
     $vars->{'components_by_product'} = \%::components;
-    
+    my @groups = Bugzilla::Group::get_all_groups();
+    $vars->{'groups'} = \@groups;
     $vars->{'action'} = $cgi->param('action');
     my $type = {};
     foreach my $key ($cgi->param()) { $type->{$key} = $cgi->param($key) }
@@ -234,9 +240,9 @@ sub clusion_array_to_hash {
 }
 
 sub insert {
-    validateName();
-    validateDescription();
-    validateCCList();
+    my $name = validateName();
+    my $description = validateDescription();
+    my $cc_list = validateCCList();
     validateTargetType();
     validateSortKey();
     validateIsActive();
@@ -247,9 +253,6 @@ sub insert {
 
     my $dbh = Bugzilla->dbh;
 
-    my $name = SqlQuote($cgi->param('name'));
-    my $description = SqlQuote($cgi->param('description'));
-    my $cc_list = SqlQuote($cgi->param('cc_list'));
     my $target_type = $cgi->param('target_type') eq "bug" ? "b" : "a";
 
     $dbh->bz_lock_tables('flagtypes WRITE', 'products READ',
@@ -257,23 +260,21 @@ sub insert {
                          'flagexclusions WRITE');
 
     # Determine the new flag type's unique identifier.
-    SendSQL("SELECT MAX(id) FROM flagtypes");
-    my $id = FetchSQLData() + 1;
-    
+    my $id = $dbh->selectrow_array('SELECT MAX(id) FROM flagtypes') + 1;
+
     # Insert a record for the new flag type into the database.
-    SendSQL("INSERT INTO flagtypes (id, name, description, cc_list, 
-                 target_type, sortkey, is_active, is_requestable, 
-                 is_requesteeble, is_multiplicable, 
-                 grant_group_id, request_group_id) 
-             VALUES ($id, $name, $description, $cc_list, '$target_type', " .
-                 $cgi->param('sortkey') . ", " .
-                 $cgi->param('is_active') . ", " .
-                 $cgi->param('is_requestable') . ", " .
-                 $cgi->param('is_requesteeble') . ", " .
-                 $cgi->param('is_multiplicable') . ", " .
-                 $cgi->param('grant_gid') . ", " .
-                 $cgi->param('request_gid') . ")");
-    
+    $dbh->do('INSERT INTO flagtypes
+                          (id, name, description, cc_list, target_type,
+                           sortkey, is_active, is_requestable, 
+                           is_requesteeble, is_multiplicable, 
+                           grant_group_id, request_group_id) 
+                   VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
+              undef, ($id, $name, $description, $cc_list, $target_type,
+                      $cgi->param('sortkey'), $cgi->param('is_active'),
+                      $cgi->param('is_requestable'), $cgi->param('is_requesteeble'),
+                      $cgi->param('is_multiplicable'), scalar($cgi->param('grant_gid')),
+                      scalar($cgi->param('request_gid'))));
+
     # Populate the list of inclusions/exclusions for this flag type.
     validateAndSubmit($id);
 
@@ -293,9 +294,9 @@ sub insert {
 
 sub update {
     my $id = validateID();
-    validateName();
-    validateDescription();
-    validateCCList();
+    my $name = validateName();
+    my $description = validateDescription();
+    my $cc_list = validateCCList();
     validateTargetType();
     validateSortKey();
     validateIsActive();
@@ -305,26 +306,20 @@ sub update {
     validateGroups();
 
     my $dbh = Bugzilla->dbh;
-
-    my $name = SqlQuote($cgi->param('name'));
-    my $description = SqlQuote($cgi->param('description'));
-    my $cc_list = SqlQuote($cgi->param('cc_list'));
-
     $dbh->bz_lock_tables('flagtypes WRITE', 'products READ',
                          'components READ', 'flaginclusions WRITE',
                          'flagexclusions WRITE');
-    SendSQL("UPDATE  flagtypes 
-                SET  name = $name , 
-                     description = $description , 
-                     cc_list = $cc_list , 
-                     sortkey = " . $cgi->param('sortkey') . ",
-                     is_active = " . $cgi->param('is_active') . ",
-                     is_requestable = " . $cgi->param('is_requestable') . ",
-                     is_requesteeble = " . $cgi->param('is_requesteeble') . ",
-                     is_multiplicable = " . $cgi->param('is_multiplicable') . ",
-                     grant_group_id = " . $cgi->param('grant_gid') . ",
-                     request_group_id = " . $cgi->param('request_gid') . "
-              WHERE  id = $id");
+    $dbh->do('UPDATE flagtypes
+                 SET name = ?, description = ?, cc_list = ?,
+                     sortkey = ?, is_active = ?, is_requestable = ?,
+                     is_requesteeble = ?, is_multiplicable = ?,
+                     grant_group_id = ?, request_group_id = ?
+               WHERE id = ?',
+              undef, ($name, $description, $cc_list, $cgi->param('sortkey'),
+                      $cgi->param('is_active'), $cgi->param('is_requestable'),
+                      $cgi->param('is_requesteeble'), $cgi->param('is_multiplicable'),
+                      scalar($cgi->param('grant_gid')), scalar($cgi->param('request_gid')),
+                      $id));
     
     # Update the list of inclusions/exclusions for this flag type.
     validateAndSubmit($id);
@@ -333,34 +328,40 @@ sub update {
     
     # Clear existing flags for bugs/attachments in categories no longer on 
     # the list of inclusions or that have been added to the list of exclusions.
-    SendSQL("
-        SELECT flags.id 
-        FROM flags
-        INNER JOIN bugs
-          ON flags.bug_id = bugs.bug_id
-        LEFT OUTER JOIN flaginclusions AS i
-          ON (flags.type_id = i.type_id 
-            AND (bugs.product_id = i.product_id OR i.product_id IS NULL)
-            AND (bugs.component_id = i.component_id OR i.component_id IS NULL))
-        WHERE flags.type_id = $id
-        AND flags.is_active = 1
-        AND i.type_id IS NULL
-    ");
-    Bugzilla::Flag::clear(FetchOneColumn()) while MoreSQLData();
+    my $flag_ids = $dbh->selectcol_arrayref('SELECT flags.id
+                                               FROM flags
+                                         INNER JOIN bugs
+                                                 ON flags.bug_id = bugs.bug_id
+                                    LEFT OUTER JOIN flaginclusions AS i
+                                                 ON (flags.type_id = i.type_id 
+                                                     AND (bugs.product_id = i.product_id
+                                                          OR i.product_id IS NULL)
+                                                     AND (bugs.component_id = i.component_id
+                                                          OR i.component_id IS NULL))
+                                              WHERE flags.type_id = ?
+                                                AND flags.is_active = 1
+                                                AND i.type_id IS NULL',
+                                             undef, $id);
+    foreach my $flag_id (@$flag_ids) {
+        Bugzilla::Flag::clear($flag_id);
+    }
     
-    SendSQL("
-        SELECT flags.id 
-        FROM flags
-        INNER JOIN bugs 
-           ON flags.bug_id = bugs.bug_id
-        INNER JOIN flagexclusions AS e
-           ON flags.type_id = e.type_id
-        WHERE flags.type_id = $id
-        AND flags.is_active = 1
-        AND (bugs.product_id = e.product_id OR e.product_id IS NULL)
-        AND (bugs.component_id = e.component_id OR e.component_id IS NULL)
-    ");
-    Bugzilla::Flag::clear(FetchOneColumn()) while MoreSQLData();
+    $flag_ids = $dbh->selectcol_arrayref('SELECT flags.id 
+                                            FROM flags
+                                      INNER JOIN bugs 
+                                              ON flags.bug_id = bugs.bug_id
+                                      INNER JOIN flagexclusions AS e
+                                              ON flags.type_id = e.type_id
+                                           WHERE flags.type_id = ?
+                                             AND flags.is_active = 1
+                                             AND (bugs.product_id = e.product_id
+                                                  OR e.product_id IS NULL)
+                                             AND (bugs.component_id = e.component_id
+                                                  OR e.component_id IS NULL)',
+                                          undef, $id);
+    foreach my $flag_id (@$flag_ids) {
+        Bugzilla::Flag::clear($flag_id);
+    }
     
     $vars->{'name'} = $cgi->param('name');
     $vars->{'message'} = "flag_type_changes_saved";
@@ -409,13 +410,13 @@ sub deleteType {
     
     # Get the name of the flag type so we can tell users
     # what was deleted.
-    SendSQL("SELECT name FROM flagtypes WHERE id = $id");
-    $vars->{'name'} = FetchOneColumn();
-    
-    SendSQL("DELETE FROM flags WHERE type_id = $id");
-    SendSQL("DELETE FROM flaginclusions WHERE type_id = $id");
-    SendSQL("DELETE FROM flagexclusions WHERE type_id = $id");
-    SendSQL("DELETE FROM flagtypes WHERE id = $id");
+    ($vars->{'name'}) = $dbh->selectrow_array('SELECT name FROM flagtypes
+                                               WHERE id = ?', undef, $id);
+
+    $dbh->do('DELETE FROM flags WHERE type_id = ?', undef, $id);
+    $dbh->do('DELETE FROM flaginclusions WHERE type_id = ?', undef, $id);
+    $dbh->do('DELETE FROM flagexclusions WHERE type_id = ?', undef, $id);
+    $dbh->do('DELETE FROM flagtypes WHERE id = ?', undef, $id);
     $dbh->bz_unlock_tables();
 
     $vars->{'message'} = "flag_type_deleted";
@@ -436,7 +437,7 @@ sub deactivate {
     my $dbh = Bugzilla->dbh;
 
     $dbh->bz_lock_tables('flagtypes WRITE');
-    SendSQL("UPDATE flagtypes SET is_active = 0 WHERE id = $id");
+    $dbh->do('UPDATE flagtypes SET is_active = 0 WHERE id = ?', undef, $id);
     $dbh->bz_unlock_tables();
     
     $vars->{'message'} = "flag_type_deactivated";
@@ -456,39 +457,52 @@ sub deactivate {
 ################################################################################
 
 sub validateID {
+    my $dbh = Bugzilla->dbh;
     # $flagtype_id is destroyed if detaint_natural fails.
     my $flagtype_id = $cgi->param('id');
     detaint_natural($flagtype_id)
       || ThrowCodeError("flag_type_id_invalid",
                         { id => scalar $cgi->param('id') });
 
-    SendSQL("SELECT 1 FROM flagtypes WHERE id = $flagtype_id");
-    FetchOneColumn()
+    my $flagtype_exists =
+        $dbh->selectrow_array('SELECT 1 FROM flagtypes WHERE id = ?',
+                               undef, $flagtype_id);
+    $flagtype_exists
       || ThrowCodeError("flag_type_nonexistent", { id => $flagtype_id });
 
     return $flagtype_id;
 }
 
 sub validateName {
-    $cgi->param('name')
-      && $cgi->param('name') !~ /[ ,]/
-      && length($cgi->param('name')) <= 50
+    my $name = $cgi->param('name');
+    ($name && $name !~ /[ ,]/ && length($name) <= 50)
       || ThrowUserError("flag_type_name_invalid",
-                        { name => scalar $cgi->param('name') });
+                        { name => $name });
+    trick_taint($name);
+    return $name;
 }
 
 sub validateDescription {
-    length($cgi->param('description')) < 2**16-1
+    my $description = $cgi->param('description');
+    length($description) < 2**16-1
       || ThrowUserError("flag_type_description_invalid");
+    trick_taint($description);
+    return $description;
 }
 
 sub validateCCList {
-    length($cgi->param('cc_list')) <= 200
+    my $cc_list = $cgi->param('cc_list');
+    length($cc_list) <= 200
       || ThrowUserError("flag_type_cc_list_invalid", 
-                        { cc_list => $cgi->param('cc_list') });
-    
-    my @addresses = split(/[, ]+/, $cgi->param('cc_list'));
-    foreach my $address (@addresses) { CheckEmailSyntax($address) }
+                        { cc_list => $cc_list });
+
+    my @addresses = split(/[, ]+/, $cc_list);
+    foreach my $address (@addresses) {
+        validate_email_syntax($address)
+          || ThrowUserError('illegal_email_address', {addr => $address});
+    }
+    trick_taint($cc_list);
+    return $cc_list;
 }
 
 sub validateProduct {
@@ -548,17 +562,20 @@ sub validateAllowMultiple {
 }
 
 sub validateGroups {
+    my $dbh = Bugzilla->dbh;
     # Convert group names to group IDs
     foreach my $col ("grant_gid", "request_gid") {
       my $name = $cgi->param($col);
-      $cgi->param($col, "NULL") unless $name;
-      next if (!$name);
-      SendSQL("SELECT id FROM groups WHERE name = " . SqlQuote($name));
-      my $gid = FetchOneColumn();
-      if (!$gid) {
-        ThrowUserError("group_unknown", { name => $name });
+      if ($name) {
+          trick_taint($name);
+          my $gid = $dbh->selectrow_array('SELECT id FROM groups
+                                           WHERE name = ?', undef, $name);
+          $gid || ThrowUserError("group_unknown", { name => $name });
+          $cgi->param($col, $gid);
+      }
+      else {
+          $cgi->delete($col);
       }
-      $cgi->param($col, $gid);
     }
 }
 
@@ -566,7 +583,7 @@ sub validateGroups {
 # added by the user and have passed all validation tests.
 # The only way to have invalid product/component combinations is to
 # hack the URL. So we silently ignore them, if any.
-sub validateAndSubmit ($) {
+sub validateAndSubmit {
     my ($id) = @_;
     my $dbh = Bugzilla->dbh;
 
diff --git a/editgroups.cgi b/editgroups.cgi
index 5e74163dafd73a7d85c2089b8d310e1a60682003..d457303f1efe272b19b5e5a17f68181fc0a610ce 100755
--- a/editgroups.cgi
+++ b/editgroups.cgi
@@ -31,19 +31,19 @@ use lib ".";
 
 use Bugzilla;
 use Bugzilla::Constants;
-use Bugzilla::User;
-require "CGI.pl";
+use Bugzilla::Group;
+require "globals.pl";
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
 
 use vars qw($template $vars);
 
-Bugzilla->login(LOGIN_REQUIRED);
+my $user = Bugzilla->login(LOGIN_REQUIRED);
 
-print Bugzilla->cgi->header();
+print $cgi->header();
 
-UserInGroup("creategroups")
+$user->in_group('creategroups')
   || ThrowUserError("auth_failure", {group  => "creategroups",
                                      action => "edit",
                                      object => "groups"});
@@ -51,25 +51,26 @@ UserInGroup("creategroups")
 my $action = trim($cgi->param('action') || '');
 
 # RederiveRegexp: update user_group_map with regexp-based grants
-sub RederiveRegexp ($$)
+sub RederiveRegexp
 {
     my $regexp = shift;
     my $gid = shift;
     my $dbh = Bugzilla->dbh;
-    my $sth = $dbh->prepare("SELECT userid, login_name FROM profiles");
-    my $sthqry = $dbh->prepare("SELECT 1 FROM user_group_map
-                                 WHERE user_id = ? AND group_id = ?
-                                 AND grant_type = ? and isbless = 0");
+    my $sth = $dbh->prepare("SELECT userid, login_name, group_id
+                               FROM profiles
+                          LEFT JOIN user_group_map
+                                 ON user_group_map.user_id = profiles.userid
+                                AND group_id = ?
+                                AND grant_type = ?
+                                AND isbless = 0");
     my $sthadd = $dbh->prepare("INSERT INTO user_group_map
                                  (user_id, group_id, grant_type, isbless)
                                  VALUES (?, ?, ?, 0)");
     my $sthdel = $dbh->prepare("DELETE FROM user_group_map
                                  WHERE user_id = ? AND group_id = ?
                                  AND grant_type = ? and isbless = 0");
-    $sth->execute();
-    while (my ($uid, $login) = $sth->fetchrow_array()) {
-        my $present = $dbh->selectrow_array($sthqry, undef,
-                                            $uid, $gid, GRANT_REGEXP);
+    $sth->execute($gid, GRANT_REGEXP);
+    while (my ($uid, $login, $present) = $sth->fetchrow_array()) {
         if (($regexp =~ /\S+/) && ($login =~ m/$regexp/i))
         {
             $sthadd->execute($uid, $gid, GRANT_REGEXP) unless $present;
@@ -145,32 +146,12 @@ sub CheckGroupRegexp {
 # If no action is specified, get a list of all groups available.
 
 unless ($action) {
-    my @groups;
-
-    SendSQL("SELECT id,name,description,userregexp,isactive,isbuggroup " .
-            "FROM groups " .
-            "ORDER BY isbuggroup, name");
-
-    while (MoreSQLData()) {
-        my ($id, $name, $description, $regexp, $isactive, $isbuggroup)
-            = FetchSQLData();
-        my $group = {};
-        $group->{'id'}          = $id;
-        $group->{'name'}        = $name;
-        $group->{'description'} = $description;
-        $group->{'regexp'}      = $regexp;
-        $group->{'isactive'}    = $isactive;
-        $group->{'isbuggroup'}  = $isbuggroup;
-
-        push(@groups, $group);
-    }
-
+    my @groups = Bugzilla::Group::get_all_groups();
     $vars->{'groups'} = \@groups;
     
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/list.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
-
     exit;
 }
 
@@ -194,29 +175,34 @@ if ($action eq 'changeform') {
     # this one
 
     my @groups;
-    SendSQL("SELECT groups.id, groups.name, groups.description," .
-             " CASE WHEN group_group_map.member_id IS NOT NULL THEN 1 ELSE 0 END," .
-             " CASE WHEN B.member_id IS NOT NULL THEN 1 ELSE 0 END," .
-             " CASE WHEN C.member_id IS NOT NULL THEN 1 ELSE 0 END" .
-             " FROM groups" .
-             " LEFT JOIN group_group_map" .
-             " ON group_group_map.member_id = groups.id" .
-             " AND group_group_map.grantor_id = $group_id" .
-             " AND group_group_map.grant_type = " . GROUP_MEMBERSHIP .
-             " LEFT JOIN group_group_map as B" .
-             " ON B.member_id = groups.id" .
-             " AND B.grantor_id = $group_id" .
-             " AND B.grant_type = " . GROUP_BLESS .
-             " LEFT JOIN group_group_map as C" .
-             " ON C.member_id = groups.id" .
-             " AND C.grantor_id = $group_id" .
-             " AND C.grant_type = " . GROUP_VISIBLE .
-             " ORDER by name");
-
-    while (MoreSQLData()) {
-        my ($grpid, $grpnam, $grpdesc, $grpmember, $blessmember, $membercansee) 
-            = FetchSQLData();
-
+    my $group_list =
+      $dbh->selectall_arrayref('SELECT groups.id, groups.name, groups.description,
+                                       CASE WHEN group_group_map.member_id IS NOT NULL
+                                            THEN 1 ELSE 0 END,
+                                       CASE WHEN B.member_id IS NOT NULL
+                                            THEN 1 ELSE 0 END,
+                                       CASE WHEN C.member_id IS NOT NULL
+                                            THEN 1 ELSE 0 END
+                                  FROM groups
+                                  LEFT JOIN group_group_map
+                                    ON group_group_map.member_id = groups.id
+                                   AND group_group_map.grantor_id = ?
+                                   AND group_group_map.grant_type = ?
+                                  LEFT JOIN group_group_map as B
+                                    ON B.member_id = groups.id
+                                   AND B.grantor_id = ?
+                                   AND B.grant_type = ?
+                                  LEFT JOIN group_group_map as C
+                                    ON C.member_id = groups.id
+                                   AND C.grantor_id = ?
+                                   AND C.grant_type = ?
+                                 ORDER by name',
+                                undef, ($group_id, GROUP_MEMBERSHIP,
+                                        $group_id, GROUP_BLESS,
+                                        $group_id, GROUP_VISIBLE));
+
+    foreach (@$group_list) {
+        my ($grpid, $grpnam, $grpdesc, $grpmember, $blessmember, $membercansee) = @$_;
         my $group = {};
         $group->{'grpid'}       = $grpid;
         $group->{'grpnam'}      = $grpnam;
@@ -235,7 +221,7 @@ if ($action eq 'changeform') {
     $vars->{'isbuggroup'}  = $isbuggroup;
     $vars->{'groups'}      = \@groups;
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/edit.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
@@ -249,7 +235,7 @@ if ($action eq 'changeform') {
 #
 
 if ($action eq 'add') {
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/create.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
     
@@ -272,37 +258,35 @@ if ($action eq 'new') {
     my $isactive = $cgi->param('isactive') ? 1 : 0;
 
     # Add the new group
-    SendSQL("INSERT INTO groups ( " .
-            "name, description, isbuggroup, userregexp, isactive, last_changed " .
-            " ) VALUES ( " .
-            SqlQuote($name) . ", " .
-            SqlQuote($desc) . ", " .
-            "1," .
-            SqlQuote($regexp) . ", " . 
-            $isactive . ", NOW())" );
+    $dbh->do('INSERT INTO groups
+              (name, description, isbuggroup,
+               userregexp, isactive, last_changed)
+              VALUES (?, ?, 1, ?, ?, NOW())',
+              undef, ($name, $desc, $regexp, $isactive));
+
     my $gid = $dbh->bz_last_key('groups', 'id');
     my $admin = GroupNameToId('admin');
     # Since we created a new group, give the "admin" group all privileges
     # initially.
-    SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type)
-             VALUES ($admin, $gid, " . GROUP_MEMBERSHIP . ")");
-    SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type)
-             VALUES ($admin, $gid, " . GROUP_BLESS . ")");
-    SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type)
-             VALUES ($admin, $gid, " . GROUP_VISIBLE . ")");
+    my $sth = $dbh->prepare('INSERT INTO group_group_map
+                             (member_id, grantor_id, grant_type)
+                             VALUES (?, ?, ?)');
+
+    $sth->execute($admin, $gid, GROUP_MEMBERSHIP);
+    $sth->execute($admin, $gid, GROUP_BLESS);
+    $sth->execute($admin, $gid, GROUP_VISIBLE);
+
     # Permit all existing products to use the new group if makeproductgroups.
     if ($cgi->param('insertnew')) {
-        SendSQL("INSERT INTO group_control_map " .
-                "(group_id, product_id, entry, membercontrol, " .
-                "othercontrol, canedit) " .
-                "SELECT $gid, products.id, 0, " .
-                CONTROLMAPSHOWN . ", " .
-                CONTROLMAPNA . ", 0 " .
-                "FROM products");
+        $dbh->do('INSERT INTO group_control_map
+                  (group_id, product_id, entry, membercontrol,
+                   othercontrol, canedit)
+                  SELECT ?, products.id, 0, ?, ?, 0 FROM products',
+                  undef, ($gid, CONTROLMAPSHOWN, CONTROLMAPNA));
     }
     RederiveRegexp($regexp, $gid);
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/created.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
     exit;
@@ -326,38 +310,24 @@ if ($action eq 'del') {
         ThrowUserError("system_group_not_deletable", { name => $name });
     }
 
-    my $hasusers = 0;
-    SendSQL("SELECT user_id FROM user_group_map 
-             WHERE group_id = $gid AND isbless = 0");
-    if (FetchOneColumn()) {
-        $hasusers = 1;
-    }
+    my $hasusers = $dbh->selectrow_array('SELECT 1 FROM user_group_map 
+                                          WHERE group_id = ? AND isbless = 0 ' .
+                                          $dbh->sql_limit(1),
+                                          undef, $gid) || 0;
 
-    my $hasbugs = 0;
-    my $buglist = "0";
-    SendSQL("SELECT bug_id FROM bug_group_map WHERE group_id = $gid");
+    my $bug_ids = $dbh->selectcol_arrayref('SELECT bug_id FROM bug_group_map
+                                            WHERE group_id = ?', undef, $gid);
 
-    if (MoreSQLData()) {
-        $hasbugs = 1;
+    my $hasbugs = scalar(@$bug_ids) ? 1 : 0;
+    my $buglist = join(',', @$bug_ids);
 
-        while (MoreSQLData()) {
-            my ($bug) = FetchSQLData();
-            $buglist .= "," . $bug;
-        }
-    }
+    my $hasproduct = get_product_id($name) ? 1 : 0;
 
-    my $hasproduct = 0;
-    SendSQL("SELECT name FROM products WHERE name=" . SqlQuote($name));
-    if (MoreSQLData()) {
-        $hasproduct = 1;
-    }
-
-    my $hasflags = 0;
-    SendSQL("SELECT id FROM flagtypes 
-             WHERE grant_group_id = $gid OR request_group_id = $gid");
-    if (FetchOneColumn()) {
-        $hasflags = 1;
-    }
+    my $hasflags = $dbh->selectrow_array('SELECT 1 FROM flagtypes 
+                                           WHERE grant_group_id = ?
+                                              OR request_group_id = ? ' .
+                                          $dbh->sql_limit(1),
+                                          undef, ($gid, $gid)) || 0;
 
     $vars->{'gid'}         = $gid;
     $vars->{'name'}        = $name;
@@ -368,7 +338,7 @@ if ($action eq 'del') {
     $vars->{'hasflags'}    = $hasflags;
     $vars->{'buglist'}     = $buglist;
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/delete.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
     
@@ -393,53 +363,62 @@ if ($action eq 'delete') {
 
     my $cantdelete = 0;
 
-    SendSQL("SELECT user_id FROM user_group_map 
-             WHERE group_id = $gid AND isbless = 0");
-    if (FetchOneColumn()) {
-        if (!defined $cgi->param('removeusers')) {
-            $cantdelete = 1;
-        }
+    my $hasusers = $dbh->selectrow_array('SELECT 1 FROM user_group_map 
+                                          WHERE group_id = ? AND isbless = 0 ' .
+                                          $dbh->sql_limit(1),
+                                          undef, $gid) || 0;
+    if ($hasusers && !defined $cgi->param('removeusers')) {
+        $cantdelete = 1;
     }
-    SendSQL("SELECT bug_id FROM bug_group_map WHERE group_id = $gid");
-    if (FetchOneColumn()) {
-        if (!defined $cgi->param('removebugs')) {
-            $cantdelete = 1;
-        }
+
+    my $hasbugs = $dbh->selectrow_array('SELECT 1 FROM bug_group_map
+                                         WHERE group_id = ? ' .
+                                         $dbh->sql_limit(1),
+                                         undef, $gid) || 0;
+    if ($hasbugs && !defined $cgi->param('removebugs')) {
+        $cantdelete = 1;
     }
-    SendSQL("SELECT name FROM products WHERE name=" . SqlQuote($name));
-    if (FetchOneColumn()) {
-        if (!defined $cgi->param('unbind')) {
-            $cantdelete = 1;
-        }
+
+    if (get_product_id($name) && !defined $cgi->param('unbind')) {
+        $cantdelete = 1;
     }
-    SendSQL("SELECT id FROM flagtypes 
-             WHERE grant_group_id = $gid OR request_group_id = $gid");
-    if (FetchOneColumn()) {
-        if (!defined $cgi->param('removeflags')) {
-            $cantdelete = 1;
-        }
+
+    my $hasflags = $dbh->selectrow_array('SELECT 1 FROM flagtypes 
+                                           WHERE grant_group_id = ?
+                                              OR request_group_id = ? ' .
+                                          $dbh->sql_limit(1),
+                                          undef, ($gid, $gid)) || 0;
+    if ($hasflags && !defined $cgi->param('removeflags')) {
+        $cantdelete = 1;
     }
 
     if (!$cantdelete) {
-        SendSQL("UPDATE flagtypes SET grant_group_id = NULL 
-                 WHERE grant_group_id = $gid");
-        SendSQL("UPDATE flagtypes SET request_group_id = NULL 
-                 WHERE request_group_id = $gid");
-        SendSQL("DELETE FROM user_group_map WHERE group_id = $gid");
-        SendSQL("DELETE FROM group_group_map WHERE grantor_id = $gid");
-        SendSQL("DELETE FROM bug_group_map WHERE group_id = $gid");
-        SendSQL("DELETE FROM group_control_map WHERE group_id = $gid");
-        SendSQL("DELETE FROM whine_schedules WHERE " .
-                "mailto_type = " . MAILTO_GROUP . " " .
-                "AND mailto = $gid");
-        SendSQL("DELETE FROM groups WHERE id = $gid");
+        $dbh->do('UPDATE flagtypes SET grant_group_id = ?
+                   WHERE grant_group_id = ?',
+                  undef, (undef, $gid));
+        $dbh->do('UPDATE flagtypes SET request_group_id = ?
+                   WHERE request_group_id = ?',
+                  undef, (undef, $gid));
+        $dbh->do('DELETE FROM user_group_map WHERE group_id = ?',
+                  undef, $gid);
+        $dbh->do('DELETE FROM group_group_map WHERE grantor_id = ?',
+                  undef, $gid);
+        $dbh->do('DELETE FROM bug_group_map WHERE group_id = ?',
+                  undef, $gid);
+        $dbh->do('DELETE FROM group_control_map WHERE group_id = ?',
+                  undef, $gid);
+        $dbh->do('DELETE FROM whine_schedules
+                   WHERE mailto_type = ? AND mailto = ?',
+                  undef, (MAILTO_GROUP, $gid));
+        $dbh->do('DELETE FROM groups WHERE id = ?',
+                  undef, $gid);
     }
 
     $vars->{'gid'}        = $gid;
     $vars->{'name'}       = $name;
     $vars->{'cantdelete'} = $cantdelete;
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/deleted.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
@@ -473,7 +452,7 @@ if ($action eq 'postchanges') {
         $vars->{'regexp'} = $regexp;
     }
     
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/change.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
     exit;
@@ -486,19 +465,20 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) {
 
     my $gid = CheckGroupID($cgi->param('group'));
 
-    my $sth = $dbh->prepare("SELECT name, userregexp FROM groups
-                             WHERE id = ?");
-    $sth->execute($gid);
-    my ($name, $regexp) = $sth->fetchrow_array();
+    my ($name, $regexp) =
+      $dbh->selectrow_array('SELECT name, userregexp FROM groups
+                             WHERE id = ?', undef, $gid);
+
     $dbh->bz_lock_tables('groups WRITE', 'profiles READ',
                          'user_group_map WRITE');
-    $sth = $dbh->prepare("SELECT user_group_map.user_id, profiles.login_name
-                            FROM user_group_map
-                      INNER JOIN profiles
-                              ON user_group_map.user_id = profiles.userid
-                           WHERE user_group_map.group_id = ?
-                             AND grant_type = ?
-                             AND isbless = 0");
+
+    my $sth = $dbh->prepare("SELECT user_group_map.user_id, profiles.login_name
+                               FROM user_group_map
+                         INNER JOIN profiles
+                                 ON user_group_map.user_id = profiles.userid
+                              WHERE user_group_map.group_id = ?
+                                AND grant_type = ?
+                                AND isbless = 0");
     $sth->execute($gid, GRANT_DIRECT);
 
     my @users;
@@ -506,11 +486,12 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) {
                               WHERE user_id = ?
                               AND isbless = 0
                               AND group_id = ?");
+
     while ( my ($userid, $userlogin) = $sth->fetchrow_array() ) {
         if ((($regexp =~ /\S/) && ($userlogin =~ m/$regexp/i))
             || ($action eq 'remove_all'))
         {
-            $sth2->execute($userid,$gid);
+            $sth2->execute($userid, $gid);
 
             my $user = {};
             $user->{'login'} = $userlogin;
@@ -518,10 +499,8 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) {
         }
     }
 
-    $sth = $dbh->prepare("UPDATE groups
-             SET last_changed = NOW()
-             WHERE id = ?");
-    $sth->execute($gid);
+    $dbh->do('UPDATE groups SET last_changed = NOW()
+              WHERE id = ?', undef, $gid);
     $dbh->bz_unlock_tables();
 
     $vars->{'users'}      = \@users;
@@ -530,7 +509,7 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) {
     $vars->{'remove_all'} = ($action eq 'remove_all');
     $vars->{'gid'}        = $gid;
     
-    print Bugzilla->cgi->header();
+    print $cgi->header();
     $template->process("admin/groups/remove.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
@@ -549,7 +528,6 @@ ThrowCodeError("action_unrecognized", $vars);
 sub doGroupChanges {
     my $cgi = Bugzilla->cgi;
     my $dbh = Bugzilla->dbh;
-    my $sth;
 
     $dbh->bz_lock_tables('groups WRITE', 'group_group_map WRITE',
                          'user_group_map WRITE', 'profiles READ',
@@ -562,8 +540,8 @@ sub doGroupChanges {
 
     # The name and the description of system groups cannot be edited.
     # We then need to know if the group being edited is a system group.
-    SendSQL("SELECT isbuggroup FROM groups WHERE id = $gid");
-    my ($isbuggroup) = FetchSQLData();
+    my $isbuggroup = $dbh->selectrow_array('SELECT isbuggroup FROM groups
+                                            WHERE id = ?', undef, $gid);
     my $name;
     my $desc;
     my $isactive;
@@ -582,27 +560,36 @@ sub doGroupChanges {
 
         if ($name ne $cgi->param('oldname')) {
             $chgs = 1;
-            $sth = $dbh->do("UPDATE groups SET name = ? WHERE id = ?",
-                            undef, $name, $gid);
+            $dbh->do('UPDATE groups SET name = ? WHERE id = ?',
+                      undef, ($name, $gid));
         }
         if ($desc ne $cgi->param('olddesc')) {
             $chgs = 1;
-            $sth = $dbh->do("UPDATE groups SET description = ? WHERE id = ?",
-                            undef, $desc, $gid);
+            $dbh->do('UPDATE groups SET description = ? WHERE id = ?',
+                      undef, ($desc, $gid));
         }
         if ($isactive ne $cgi->param('oldisactive')) {
             $chgs = 1;
-            $sth = $dbh->do("UPDATE groups SET isactive = ? WHERE id = ?",
-                            undef, $isactive, $gid);
+            $dbh->do('UPDATE groups SET isactive = ? WHERE id = ?',
+                      undef, ($isactive, $gid));
         }
     }
     if ($regexp ne $cgi->param('oldregexp')) {
         $chgs = 1;
-        $sth = $dbh->do("UPDATE groups SET userregexp = ? WHERE id = ?",
-                        undef, $regexp, $gid);
+        $dbh->do('UPDATE groups SET userregexp = ? WHERE id = ?',
+                  undef, ($regexp, $gid));
         RederiveRegexp($regexp, $gid);
     }
 
+    my $sthInsert = $dbh->prepare('INSERT INTO group_group_map
+                                   (member_id, grantor_id, grant_type)
+                                   VALUES (?, ?, ?)');
+
+    my $sthDelete = $dbh->prepare('DELETE FROM group_group_map
+                                    WHERE member_id = ?
+                                      AND grantor_id = ?
+                                      AND grant_type = ?');
+
     foreach my $b (grep {/^oldgrp-\d*$/} $cgi->param()) {
         if (defined($cgi->param($b))) {
             $b =~ /^oldgrp-(\d+)$/;
@@ -611,13 +598,9 @@ sub doGroupChanges {
             if (($v != $gid) && ($cgi->param("oldgrp-$v") != $grp)) {
                 $chgs = 1;
                 if ($grp != 0) {
-                    SendSQL("INSERT INTO group_group_map 
-                             (member_id, grantor_id, grant_type)
-                             VALUES ($v, $gid," . GROUP_MEMBERSHIP . ")");
+                    $sthInsert->execute($v, $gid, GROUP_MEMBERSHIP);
                 } else {
-                    SendSQL("DELETE FROM group_group_map
-                             WHERE member_id = $v AND grantor_id = $gid
-                             AND grant_type = " . GROUP_MEMBERSHIP);
+                    $sthDelete->execute($v, $gid, GROUP_MEMBERSHIP);
                 }
             }
 
@@ -626,13 +609,9 @@ sub doGroupChanges {
             if ((defined $oldbless) and ($oldbless != $bless)) {
                 $chgs = 1;
                 if ($bless != 0) {
-                    SendSQL("INSERT INTO group_group_map 
-                             (member_id, grantor_id, grant_type)
-                             VALUES ($v, $gid," . GROUP_BLESS . ")");
+                    $sthInsert->execute($v, $gid, GROUP_BLESS);
                 } else {
-                    SendSQL("DELETE FROM group_group_map
-                             WHERE member_id = $v AND grantor_id = $gid
-                             AND grant_type = " . GROUP_BLESS);
+                    $sthDelete->execute($v, $gid, GROUP_BLESS);
                 }
             }
 
@@ -641,22 +620,19 @@ sub doGroupChanges {
                && ($cgi->param("oldcansee-$v") != $cansee)) {
                 $chgs = 1;
                 if ($cansee != 0) {
-                    SendSQL("INSERT INTO group_group_map 
-                             (member_id, grantor_id, grant_type)
-                             VALUES ($v, $gid," . GROUP_VISIBLE . ")");
+                    $sthInsert->execute($v, $gid, GROUP_VISIBLE);
                 } else {
-                    SendSQL("DELETE FROM group_group_map
-                             WHERE member_id = $v AND grantor_id = $gid
-                             AND grant_type = " . GROUP_VISIBLE);
+                    $sthDelete->execute($v, $gid, GROUP_VISIBLE);
                 }
             }
 
         }
     }
-    
+
     if ($chgs) {
         # mark the changes
-        SendSQL("UPDATE groups SET last_changed = NOW() WHERE id = $gid");
+        $dbh->do('UPDATE groups SET last_changed = NOW()
+                  WHERE id = ?', undef, $gid);
     }
     $dbh->bz_unlock_tables();
     return $gid, $chgs, $name, $regexp;
diff --git a/editkeywords.cgi b/editkeywords.cgi
index 8ad74710e80b85da812042e6f3016d7be702513a..77b8f0a22cdf1f43587458c910227d6c8bd75298 100755
--- a/editkeywords.cgi
+++ b/editkeywords.cgi
@@ -23,11 +23,11 @@
 use strict;
 use lib ".";
 
-require "CGI.pl";
+require "globals.pl";
 
+use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::Config qw(:DEFAULT $datadir);
-use Bugzilla::User;
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
@@ -35,7 +35,7 @@ my $dbh = Bugzilla->dbh;
 use vars qw($template $vars);
 
 
-sub Validate ($$) {
+sub Validate {
     my ($name, $description) = @_;
     if ($name eq "") {
         ThrowUserError("keyword_blank_name");
@@ -46,6 +46,12 @@ sub Validate ($$) {
     if ($description eq "") {
         ThrowUserError("keyword_blank_description");
     }
+    # It is safe to detaint these values as they are only
+    # used in placeholders.
+    trick_taint($name);
+    $_[0] = $name;
+    trick_taint($description);
+    $_[1] = $description;
 }
 
 
@@ -53,11 +59,11 @@ sub Validate ($$) {
 # Preliminary checks:
 #
 
-Bugzilla->login(LOGIN_REQUIRED);
+my $user = Bugzilla->login(LOGIN_REQUIRED);
 
-print Bugzilla->cgi->header();
+print $cgi->header();
 
-UserInGroup("editkeywords")
+$user->in_group('editkeywords')
   || ThrowUserError("auth_failure", {group  => "editkeywords",
                                      action => "edit",
                                      object => "keywords"});
@@ -69,29 +75,18 @@ $vars->{'action'} = $action;
 if ($action eq "") {
     my @keywords;
 
-    SendSQL("SELECT keyworddefs.id, keyworddefs.name, keyworddefs.description,
-                    COUNT(keywords.bug_id)
-             FROM keyworddefs LEFT JOIN keywords
-               ON keyworddefs.id = keywords.keywordid " .
-             $dbh->sql_group_by('keyworddefs.id',
-                    'keyworddefs.name, keyworddefs.description') . "
-             ORDER BY keyworddefs.name");
-
-    while (MoreSQLData()) {
-        my ($id, $name, $description, $bugs) = FetchSQLData();
-        my $keyword = {};
-        $keyword->{'id'} = $id;
-        $keyword->{'name'} = $name;
-        $keyword->{'description'} = $description;
-        $keyword->{'bug_count'} = $bugs;
-        push(@keywords, $keyword);
-    }
-
-    print Bugzilla->cgi->header();
-
-    $vars->{'keywords'} = \@keywords;
-    $template->process("admin/keywords/list.html.tmpl",
-                       $vars)
+    $vars->{'keywords'} =
+      $dbh->selectall_arrayref('SELECT keyworddefs.id, keyworddefs.name,
+                                       keyworddefs.description,
+                                       COUNT(keywords.bug_id) AS bug_count
+                                  FROM keyworddefs
+                             LEFT JOIN keywords
+                                    ON keyworddefs.id = keywords.keywordid ' .
+                                  $dbh->sql_group_by('id', 'name, description') . '
+                                 ORDER BY keyworddefs.name', {'Slice' => {}});
+
+    print $cgi->header();
+    $template->process("admin/keywords/list.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
     exit;
@@ -99,10 +94,9 @@ if ($action eq "") {
     
 
 if ($action eq 'add') {
-    print Bugzilla->cgi->header();
+    print $cgi->header();
 
-    $template->process("admin/keywords/create.html.tmpl",
-                       $vars)
+    $template->process("admin/keywords/create.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
     exit;
@@ -119,10 +113,11 @@ if ($action eq 'new') {
     my $description  = trim($cgi->param('description')  || '');
 
     Validate($name, $description);
-    
-    SendSQL("SELECT id FROM keyworddefs WHERE name = " . SqlQuote($name));
 
-    if (FetchOneColumn()) {
+    my $id = $dbh->selectrow_array('SELECT id FROM keyworddefs
+                                    WHERE name = ?', undef, $name);
+
+    if ($id) {
         $vars->{'name'} = $name;
         ThrowUserError("keyword_already_exists");
     }
@@ -133,12 +128,12 @@ if ($action eq 'new') {
     # rarely enough, and there really aren't ever going to be that many
     # keywords anyway.
 
-    SendSQL("SELECT id FROM keyworddefs ORDER BY id");
+    my $existing_ids =
+        $dbh->selectcol_arrayref('SELECT id FROM keyworddefs ORDER BY id');
 
     my $newid = 1;
 
-    while (MoreSQLData()) {
-        my $oldid = FetchOneColumn();
+    foreach my $oldid (@$existing_ids) {
         if ($oldid > $newid) {
             last;
         }
@@ -146,18 +141,17 @@ if ($action eq 'new') {
     }
 
     # Add the new keyword.
-    SendSQL("INSERT INTO keyworddefs (id, name, description) VALUES ($newid, " .
-            SqlQuote($name) . "," .
-            SqlQuote($description) . ")");
+    $dbh->do('INSERT INTO keyworddefs
+              (id, name, description) VALUES (?, ?, ?)',
+              undef, ($newid, $name, $description));
 
     # Make versioncache flush
     unlink "$datadir/versioncache";
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
 
     $vars->{'name'} = $name;
-    $template->process("admin/keywords/created.html.tmpl",
-                       $vars)
+    $template->process("admin/keywords/created.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
     exit;
@@ -176,30 +170,27 @@ if ($action eq 'edit') {
     detaint_natural($id);
 
     # get data of keyword
-    SendSQL("SELECT name,description
-             FROM keyworddefs
-             WHERE id=$id");
-    my ($name, $description) = FetchSQLData();
+    my ($name, $description) =
+        $dbh->selectrow_array('SELECT name, description FROM keyworddefs
+                               WHERE id = ?', undef, $id);
+
     if (!$name) {
         $vars->{'id'} = $id;
         ThrowCodeError("invalid_keyword_id", $vars);
     }
 
-    SendSQL("SELECT count(*)
-             FROM keywords
-             WHERE keywordid = $id");
-    my $bugs = '';
-    $bugs = FetchOneColumn() if MoreSQLData();
+    my $bugs = $dbh->selectrow_array('SELECT COUNT(*) FROM keywords
+                                      WHERE keywordid = ?',
+                                      undef, $id);
 
     $vars->{'keyword_id'} = $id;
     $vars->{'name'} = $name;
     $vars->{'description'} = $description;
     $vars->{'bug_count'} = $bugs;
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
 
-    $template->process("admin/keywords/edit.html.tmpl",
-                       $vars)
+    $template->process("admin/keywords/edit.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
     exit;
@@ -219,27 +210,24 @@ if ($action eq 'update') {
 
     Validate($name, $description);
 
-    SendSQL("SELECT id FROM keyworddefs WHERE name = " . SqlQuote($name));
-
-    my $tmp = FetchOneColumn();
+    my $tmp = $dbh->selectrow_array('SELECT id FROM keyworddefs
+                                     WHERE name = ?', undef, $name);
 
     if ($tmp && $tmp != $id) {
         $vars->{'name'} = $name;
         ThrowUserError("keyword_already_exists", $vars);
     }
 
-    SendSQL("UPDATE keyworddefs SET name = " . SqlQuote($name) .
-            ", description = " . SqlQuote($description) .
-            " WHERE id = $id");
+    $dbh->do('UPDATE keyworddefs SET name = ?, description = ?
+              WHERE id = ?', undef, ($name, $description, $id));
 
     # Make versioncache flush
     unlink "$datadir/versioncache";
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
 
     $vars->{'name'} = $name;
-    $template->process("admin/keywords/rebuild-cache.html.tmpl",
-                       $vars)
+    $template->process("admin/keywords/rebuild-cache.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
     exit;
@@ -250,42 +238,38 @@ if ($action eq 'delete') {
     my $id = $cgi->param('id');
     detaint_natural($id);
 
-    SendSQL("SELECT name FROM keyworddefs WHERE id=$id");
-    my $name = FetchOneColumn();
+    my $name = $dbh->selectrow_array('SELECT name FROM keyworddefs
+                                      WHERE id= ?', undef, $id);
 
     if (!$cgi->param('reallydelete')) {
-        SendSQL("SELECT count(*)
-                 FROM keywords
-                 WHERE keywordid = $id");
-        
-        my $bugs = FetchOneColumn();
-        
+        my $bugs = $dbh->selectrow_array('SELECT COUNT(*) FROM keywords
+                                          WHERE keywordid = ?',
+                                          undef, $id);
+
         if ($bugs) {
             $vars->{'bug_count'} = $bugs;
             $vars->{'keyword_id'} = $id;
             $vars->{'name'} = $name;
 
-            print Bugzilla->cgi->header();
+            print $cgi->header();
 
-            $template->process("admin/keywords/confirm-delete.html.tmpl",
-                               $vars)
+            $template->process("admin/keywords/confirm-delete.html.tmpl", $vars)
               || ThrowTemplateError($template->error());
 
             exit;
         }
     }
 
-    SendSQL("DELETE FROM keywords WHERE keywordid = $id");
-    SendSQL("DELETE FROM keyworddefs WHERE id = $id");
+    $dbh->do('DELETE FROM keywords WHERE keywordid = ?', undef, $id);
+    $dbh->do('DELETE FROM keyworddefs WHERE id = ?', undef, $id);
 
     # Make versioncache flush
     unlink "$datadir/versioncache";
 
-    print Bugzilla->cgi->header();
+    print $cgi->header();
 
     $vars->{'name'} = $name;
-    $template->process("admin/keywords/rebuild-cache.html.tmpl",
-                       $vars)
+    $template->process("admin/keywords/rebuild-cache.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
 
     exit;
diff --git a/editmilestones.cgi b/editmilestones.cgi
index 32e6790c26710f6c0018786d6cdee07a1ea29fa4..3e484bbfca307a3232785477be6a16f04921b274 100755
--- a/editmilestones.cgi
+++ b/editmilestones.cgi
@@ -19,117 +19,18 @@
 use strict;
 use lib ".";
 
-require "CGI.pl";
 require "globals.pl";
 
 use Bugzilla::Constants;
 use Bugzilla::Config qw(:DEFAULT $datadir);
-use Bugzilla::User;
+use Bugzilla::Product;
+use Bugzilla::Milestone;
+use Bugzilla::Bug;
 
 use vars qw($template $vars);
 
 my $cgi = Bugzilla->cgi;
-
-# TestProduct:  just returns if the specified product does exists
-# CheckProduct: same check, optionally  emit an error text
-# TestMilestone:  just returns if the specified product/version combination exists
-# CheckMilestone: same check, optionally emit an error text
-
-sub TestProduct ($)
-{
-    my $product = shift;
-
-    trick_taint($product);
-
-    # does the product exist?
-    my $dbh = Bugzilla->dbh;
-    my $sth = $dbh->prepare_cached("SELECT name
-                                    FROM products
-                                    WHERE name = ?");
-    $sth->execute($product);
-
-    my ($row) = $sth->fetchrow_array;
-
-    $sth->finish;
-
-    return $row;
-}
-
-sub CheckProduct ($)
-{
-    my $product = shift;
-
-    # do we have a product?
-    unless ($product) {
-        ThrowUserError('product_not_specified');    
-    }
-
-    # Does it exist in the DB?
-    unless (TestProduct $product) {
-        ThrowUserError('product_doesnt_exist',
-                       {'product' => $product});
-    }
-}
-
-sub TestMilestone ($$)
-{
-    my ($product, $milestone) = @_;
-
-    my $dbh = Bugzilla->dbh;
-
-    # does the product exist?
-    my $sth = $dbh->prepare_cached("
-             SELECT products.name, value
-             FROM milestones
-             INNER JOIN products
-                ON milestones.product_id = products.id
-             WHERE products.name = ?
-               AND value = ?");
-
-    trick_taint($product);
-    trick_taint($milestone);
-
-    $sth->execute($product, $milestone);
-
-    my ($db_milestone) = $sth->fetchrow_array();
-
-    $sth->finish();
-
-    return $db_milestone;
-}
-
-sub CheckMilestone ($$)
-{
-    my ($product, $milestone) = @_;
-
-    # do we have the milestone and product combination?
-    unless ($milestone) {
-        ThrowUserError('milestone_not_specified');
-    }
-
-    CheckProduct($product);
-
-    unless (TestMilestone $product, $milestone) {
-        ThrowUserError('milestone_not_valid',
-                       {'product' => $product,
-                        'milestone' => $milestone});
-    }
-}
-
-sub CheckSortkey ($$)
-{
-    my ($milestone, $sortkey) = @_;
-    # Keep a copy in case detaint_signed() clears the sortkey
-    my $stored_sortkey = $sortkey;
-
-    if (!detaint_signed($sortkey) || $sortkey < -32768 || $sortkey > 32767) {
-        ThrowUserError('milestone_sortkey_invalid',
-                       {'name' => $milestone,
-                        'sortkey' => $stored_sortkey});
-    }
-
-    return $sortkey;
-}
+my $dbh = Bugzilla->dbh;
 
 #
 # Preliminary checks:
@@ -138,9 +39,9 @@ sub CheckSortkey ($$)
 my $user = Bugzilla->login(LOGIN_REQUIRED);
 my $whoid = $user->id;
 
-print Bugzilla->cgi->header();
+print $cgi->header();
 
-UserInGroup("editcomponents")
+$user->in_group('editcomponents')
   || ThrowUserError("auth_failure", {group  => "editcomponents",
                                      action => "edit",
                                      object => "milestones"});
@@ -148,39 +49,21 @@ UserInGroup("editcomponents")
 #
 # often used variables
 #
-my $product = trim($cgi->param('product')     || '');
-my $milestone = trim($cgi->param('milestone') || '');
-my $sortkey = trim($cgi->param('sortkey')     || '0');
-my $action  = trim($cgi->param('action')      || '');
+my $product_name   = trim($cgi->param('product')     || '');
+my $milestone_name = trim($cgi->param('milestone')   || '');
+my $sortkey        = trim($cgi->param('sortkey')     || 0);
+my $action         = trim($cgi->param('action')      || '');
+my $showbugcounts = (defined $cgi->param('showbugcounts'));
 
 #
-# product = '' -> Show nice list of milestones
+# product = '' -> Show nice list of products
 #
 
-unless ($product) {
-
-    my @products = ();
-
-    my $dbh = Bugzilla->dbh;
-
-    my $sth = $dbh->prepare_cached('SELECT products.name, products.description
-                                    FROM products 
-                                    ORDER BY products.name');
-
-    my $data = $dbh->selectall_arrayref($sth);
-
-    foreach my $aref (@$data) {
-
-        my $prod = {};
-
-        my ($name, $description) = @$aref;
-
-        $prod->{'name'} = $name;
-        $prod->{'description'} = $description;
-
-        push(@products, $prod);
-    }
+unless ($product_name) {
+    
+    my @products = Bugzilla::Product::get_all_products();
 
+    $vars->{'showbugcounts'} = $showbugcounts;
     $vars->{'products'} = \@products;
     $template->process("admin/milestones/select-product.html.tmpl",
                        $vars)
@@ -189,7 +72,7 @@ unless ($product) {
     exit;
 }
 
-
+my $product = Bugzilla::Product::check_product($product_name);
 
 #
 # action='' -> Show nice list of milestones
@@ -197,34 +80,13 @@ unless ($product) {
 
 unless ($action) {
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
-    my @milestones = ();
-
-    my $dbh = Bugzilla->dbh;
-
-    my $sth = $dbh->prepare_cached('SELECT value, sortkey
-                                    FROM milestones
-                                    WHERE product_id = ?
-                                    ORDER BY sortkey, value');
-
-    my $data = $dbh->selectall_arrayref($sth,
-                                        undef,
-                                        $product_id);
-
-    foreach my $aref (@$data) {
-
-        my $milestone = {};
-        my ($name, $sortkey) = @$aref;
+    my @milestones =
+        Bugzilla::Milestone::get_milestones_by_product($product->id);
 
-        $milestone->{'name'} = $name;
-        $milestone->{'sortkey'} = $sortkey;
-
-        push(@milestones, $milestone);
-    }
-
-    $vars->{'product'} = $product;
+    $vars->{'showbugcounts'} = $showbugcounts;
+    $vars->{'product'} = $product->name;
     $vars->{'milestones'} = \@milestones;
+    $vars->{'default_milestone'} = $product->default_milestone;
     $template->process("admin/milestones/list.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -243,10 +105,7 @@ unless ($action) {
 
 if ($action eq 'add') {
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
-
-    $vars->{'product'} = $product;
+    $vars->{'product'} = $product->name;
     $template->process("admin/milestones/create.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -262,43 +121,36 @@ if ($action eq 'add') {
 
 if ($action eq 'new') {
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
+    $milestone_name || ThrowUserError('milestone_blank_name');
 
-    # Cleanups and valididy checks
-    unless ($milestone) {
-        ThrowUserError('milestone_blank_name',
-                       {'name' => $milestone});
-    }
-
-    if (length($milestone) > 20) {
+    if (length($milestone_name) > 20) {
         ThrowUserError('milestone_name_too_long',
-                       {'name' => $milestone});
+                       {'name' => $milestone_name});
     }
 
-    $sortkey = CheckSortkey($milestone, $sortkey);
+    $sortkey = Bugzilla::Milestone::check_sort_key($milestone_name,
+                                                   $sortkey);
+
+    my $milestone = new Bugzilla::Milestone($product->id,
+                                            $milestone_name);
 
-    if (TestMilestone($product, $milestone)) {
+    if ($milestone) {
         ThrowUserError('milestone_already_exists',
-                       {'name' => $milestone,
-                        'product' => $product});
+                       {'name' => $milestone->name,
+                        'product' => $product->name});
     }
 
     # Add the new milestone
-    my $dbh = Bugzilla->dbh;
-    trick_taint($milestone);
+    trick_taint($milestone_name);
     $dbh->do('INSERT INTO milestones ( value, product_id, sortkey )
               VALUES ( ?, ?, ? )',
-             undef,
-             $milestone,
-             $product_id,
-             $sortkey);
+             undef, $milestone_name, $product->id, $sortkey);
 
     # Make versioncache flush
     unlink "$datadir/versioncache";
 
-    $vars->{'name'} = $milestone;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $milestone_name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/milestones/created.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -316,28 +168,18 @@ if ($action eq 'new') {
 #
 
 if ($action eq 'del') {
-    CheckMilestone($product, $milestone);
-    my $product_id = get_product_id($product);
-    my $dbh = Bugzilla->dbh;
-
-    $vars->{'default_milestone'} =
-      $dbh->selectrow_array('SELECT defaultmilestone
-                             FROM products WHERE id = ?',
-                             undef, $product_id);
-
-    trick_taint($milestone);
-    $vars->{'name'} = $milestone;
-    $vars->{'product'} = $product;
+    my $milestone = Bugzilla::Milestone::check_milestone($product,
+                                                         $milestone_name);
+    
+    $vars->{'name'}    = $milestone->name;
+    $vars->{'product'} = $product->name;
 
     # The default milestone cannot be deleted.
-    if ($vars->{'default_milestone'} eq $milestone) {
+    if ($product->default_milestone eq $milestone->name) {
         ThrowUserError("milestone_is_default", $vars);
     }
 
-    $vars->{'bug_count'} =
-      $dbh->selectrow_array("SELECT COUNT(bug_id) FROM bugs
-                             WHERE product_id = ? AND target_milestone = ?",
-                             undef, ($product_id, $milestone)) || 0;
+    $vars->{'bug_count'} = $milestone->bug_count;
 
     $template->process("admin/milestones/confirm-delete.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
@@ -351,21 +193,15 @@ if ($action eq 'del') {
 #
 
 if ($action eq 'delete') {
-    CheckMilestone($product, $milestone);
-    my $product_id = get_product_id($product);
-    my $dbh = Bugzilla->dbh;
 
-    my $default_milestone =
-      $dbh->selectrow_array("SELECT defaultmilestone
-                             FROM products WHERE id = ?",
-                             undef, $product_id);
-
-    trick_taint($milestone);
-    $vars->{'name'} = $milestone;
-    $vars->{'product'} = $product;
+    my $milestone =
+        Bugzilla::Milestone::check_milestone($product,
+                                             $milestone_name);
+    $vars->{'name'} = $milestone->name;
+    $vars->{'product'} = $product->name;
 
     # The default milestone cannot be deleted.
-    if ($milestone eq $default_milestone) {
+    if ($milestone->name eq $product->default_milestone) {
         ThrowUserError("milestone_is_default", $vars);
     }
 
@@ -374,7 +210,7 @@ if ($action eq 'delete') {
     my $bug_ids =
       $dbh->selectcol_arrayref("SELECT bug_id FROM bugs
                                 WHERE product_id = ? AND target_milestone = ?",
-                                undef, ($product_id, $milestone));
+                                undef, ($product->id, $milestone->name));
 
     my $nb_bugs = scalar(@$bug_ids);
     if ($nb_bugs) {
@@ -382,17 +218,20 @@ if ($action eq 'delete') {
         foreach my $bug_id (@$bug_ids) {
             $dbh->do("UPDATE bugs SET target_milestone = ?,
                       delta_ts = ? WHERE bug_id = ?",
-                      undef, ($default_milestone, $timestamp, $bug_id));
+                      undef, ($product->default_milestone, $timestamp,
+                              $bug_id));
             # We have to update the 'bugs_activity' table too.
-            LogActivityEntry($bug_id, 'target_milestone', $milestone,
-                             $default_milestone, $whoid, $timestamp);
+            LogActivityEntry($bug_id, 'target_milestone',
+                             $milestone->name,
+                             $product->default_milestone,
+                             $whoid, $timestamp);
         }
     }
 
     $vars->{'bug_count'} = $nb_bugs;
 
     $dbh->do("DELETE FROM milestones WHERE product_id = ? AND value = ?",
-             undef, ($product_id, $milestone));
+             undef, ($product->id, $milestone->name));
 
     unlink "$datadir/versioncache";
 
@@ -411,25 +250,13 @@ if ($action eq 'delete') {
 
 if ($action eq 'edit') {
 
-    CheckMilestone($product, $milestone);
-    my $product_id = get_product_id($product);
-
-    my $dbh = Bugzilla->dbh;
-
-    my $sth = $dbh->prepare_cached('SELECT sortkey
-                                    FROM milestones
-                                    WHERE product_id = ?
-                                    AND value = ?');
-
-    trick_taint($milestone);
+    my $milestone =
+        Bugzilla::Milestone::check_milestone($product,
+                                             $milestone_name);
 
-    $vars->{'sortkey'} = $dbh->selectrow_array($sth,
-                                               undef,
-                                               $product_id,
-                                               $milestone) || 0;
-
-    $vars->{'name'} = $milestone;
-    $vars->{'product'} = $product;
+    $vars->{'sortkey'} = $milestone->sortkey;
+    $vars->{'name'}    = $milestone->name;
+    $vars->{'product'} = $product->name;
 
     $template->process("admin/milestones/edit.html.tmpl",
                        $vars)
@@ -446,80 +273,77 @@ if ($action eq 'edit') {
 
 if ($action eq 'update') {
 
-    my $milestoneold = trim($cgi->param('milestoneold') || '');
-    my $sortkeyold = trim($cgi->param('sortkeyold')     || '0');
-
-    CheckMilestone($product, $milestoneold);
-    my $product_id = get_product_id($product);
+    my $milestone_old_name = trim($cgi->param('milestoneold') || '');
+    my $milestone_old =
+        Bugzilla::Milestone::check_milestone($product,
+                                             $milestone_old_name);
 
-    if (length($milestone) > 20) {
+    if (length($milestone_name) > 20) {
         ThrowUserError('milestone_name_too_long',
-                       {'name' => $milestone});
+                       {'name' => $milestone_name});
     }
 
-    my $dbh = Bugzilla->dbh;
-
     $dbh->bz_lock_tables('bugs WRITE',
                          'milestones WRITE',
                          'products WRITE');
 
-    if ($sortkey ne $sortkeyold) {
-        $sortkey = CheckSortkey($milestone, $sortkey);
-
-        trick_taint($milestoneold);
+    if ($sortkey ne $milestone_old->sortkey) {
+        $sortkey = Bugzilla::Milestone::check_sort_key($milestone_name,
+                                                       $sortkey);
 
         $dbh->do('UPDATE milestones SET sortkey = ?
                   WHERE product_id = ?
                   AND value = ?',
                  undef,
                  $sortkey,
-                 $product_id,
-                 $milestoneold);
+                 $product->id,
+                 $milestone_old->name);
 
         unlink "$datadir/versioncache";
         $vars->{'updated_sortkey'} = 1;
         $vars->{'sortkey'} = $sortkey;
     }
 
-    if ($milestone ne $milestoneold) {
-        unless ($milestone) {
+    if ($milestone_name ne $milestone_old->name) {
+        unless ($milestone_name) {
             ThrowUserError('milestone_blank_name');
         }
-        if (TestMilestone($product, $milestone)) {
+        my $milestone = 
+            new Bugzilla::Milestone($product->id, $milestone_name);
+        if ($milestone) {
             ThrowUserError('milestone_already_exists',
-                           {'name' => $milestone,
-                            'product' => $product});
+                           {'name' => $milestone->name,
+                            'product' => $product->name});
         }
 
-        trick_taint($milestone);
-        trick_taint($milestoneold);
+        trick_taint($milestone_name);
 
         $dbh->do('UPDATE bugs
                   SET target_milestone = ?
                   WHERE target_milestone = ?
                   AND product_id = ?',
                  undef,
-                 $milestone,
-                 $milestoneold,
-                 $product_id);
+                 $milestone_name,
+                 $milestone_old->name,
+                 $product->id);
 
         $dbh->do("UPDATE milestones
                   SET value = ?
                   WHERE product_id = ?
                   AND value = ?",
                  undef,
-                 $milestone,
-                 $product_id,
-                 $milestoneold);
+                 $milestone_name,
+                 $product->id,
+                 $milestone_old->name);
 
         $dbh->do("UPDATE products
                   SET defaultmilestone = ?
                   WHERE id = ?
                   AND defaultmilestone = ?",
                  undef,
-                 $milestone,
-                 $product_id,
-                 $milestoneold);
+                 $milestone_name,
+                 $product->id,
+                 $milestone_old->name);
 
         unlink "$datadir/versioncache";
 
@@ -528,8 +352,8 @@ if ($action eq 'update') {
 
     $dbh->bz_unlock_tables();
 
-    $vars->{'name'} = $milestone;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $milestone_name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/milestones/updated.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
diff --git a/editparams.cgi b/editparams.cgi
index 620ae6baee1cb71446578362bbe5965d2dc1bc78..8924a0edcffd085e2afc3ec9feb8a15ad5638668 100755
--- a/editparams.cgi
+++ b/editparams.cgi
@@ -27,20 +27,21 @@ use lib ".";
 
 use Bugzilla::Constants;
 use Bugzilla::Config qw(:DEFAULT :admin);
-use Bugzilla::User;
 
-require "CGI.pl";
+require "globals.pl";
 
-Bugzilla->login(LOGIN_REQUIRED);
+my $user = Bugzilla->login(LOGIN_REQUIRED);
+
+my $template = Bugzilla->template;
 
 print Bugzilla->cgi->header();
 
-UserInGroup("tweakparams")
+$user->in_group('tweakparams')
   || ThrowUserError("auth_failure", {group  => "tweakparams",
                                      action => "modify",
                                      object => "parameters"});
 
-PutHeader("Edit parameters");
+$template->put_header("Edit parameters");
 
 print "This lets you edit the basic operating parameters of bugzilla.\n";
 print "Be careful!\n";
@@ -141,4 +142,4 @@ print "<input type=submit value=\"Submit changes\">\n";
 print "</form>\n";
 
 print "<p><a href=query.cgi>Skip all this, and go back to the query page</a>\n";
-PutFooter();
+$template->put_footer();
diff --git a/editproducts.cgi b/editproducts.cgi
index 568f463fb1524625c53773573220da825db13541..82ce7433dec94c3bebd1be6aeb8da557c72a3388 100755
--- a/editproducts.cgi
+++ b/editproducts.cgi
@@ -23,7 +23,7 @@
 #               Dawn Endico <endico@mozilla.org>
 #               Joe Robins <jmrobins@tgix.com>
 #               Gavin Shelley <bugzilla@chimpychompy.org>
-#               Fr�d�ric Buclin <LpSolit@gmail.com>
+#               Fr��ic Buclin <LpSolit@gmail.com>
 #               Greg Hendricks <ghendricks@novell.com>
 #
 # Direct any questions on this source code to
@@ -34,28 +34,19 @@ use strict;
 use lib ".";
 use vars qw ($template $vars);
 use Bugzilla::Constants;
-require "CGI.pl";
 require "globals.pl";
 use Bugzilla::Bug;
 use Bugzilla::Series;
-use Bugzilla::User;
 use Bugzilla::Config qw(:DEFAULT $datadir);
 
 # Shut up misguided -w warnings about "used only once".  "use vars" just
 # doesn't work for me.
 use vars qw(@legal_bug_status @legal_resolution);
 
-my %ctl = ( 
-    &::CONTROLMAPNA => 'NA',
-    &::CONTROLMAPSHOWN => 'Shown',
-    &::CONTROLMAPDEFAULT => 'Default',
-    &::CONTROLMAPMANDATORY => 'Mandatory'
-);
-
 # TestProduct:  just returns if the specified product does exists
 # CheckProduct: same check, optionally  emit an error text
 
-sub TestProduct ($)
+sub TestProduct
 {
     my $prod = shift;
 
@@ -66,28 +57,26 @@ sub TestProduct ($)
     return FetchOneColumn();
 }
 
-sub CheckProduct ($)
+sub CheckProduct
 {
     my $prod = shift;
 
     # do we have a product?
     unless ($prod) {
-        print "Sorry, you haven't specified a product.";
-        PutTrailer();
-        exit;
+        ThrowUserError('product_not_specified');
     }
 
-    unless (TestProduct $prod) {
-        print "Sorry, product '$prod' does not exist.";
-        PutTrailer();
-        exit;
+    unless (TestProduct($prod)) {
+        ThrowUserError('product_doesnt_exist',
+                       {'product' => $prod});
     }
 }
 
+
 # TestClassification:  just returns if the specified classification does exists
 # CheckClassification: same check, optionally  emit an error text
 
-sub TestClassification ($)
+sub TestClassification
 {
     my $cl = shift;
 
@@ -98,29 +87,7 @@ sub TestClassification ($)
     return FetchOneColumn();
 }
 
-sub CheckClassification ($)
-{
-    my $cl = shift;
-
-    # do we have a classification?
-    unless ($cl) {
-        print "Sorry, you haven't specified a classification.";
-        PutTrailer();
-        exit;
-    }
-
-    unless (TestClassification $cl) {
-        print "Sorry, classification '$cl' does not exist.";
-        PutTrailer();
-        exit;
-    }
-}
-
-# For the transition period, as this file is templatised bit by bit,
-# we need this routine, which does things properly, and will
-# eventually be the only version. (The older versions assume a
-# PutHeader() call has been made)
-sub CheckClassificationNew ($)
+sub CheckClassification
 {
     my $cl = shift;
 
@@ -129,46 +96,18 @@ sub CheckClassificationNew ($)
         ThrowUserError('classification_not_specified');    
     }
 
-    unless (TestClassification $cl) {
+    unless (TestClassification($cl)) {
         ThrowUserError('classification_doesnt_exist',
                        {'name' => $cl});
     }
 }
 
-
-sub CheckClassificationProduct ($$)
-{
-    my $cl = shift;
-    my $prod = shift;
-    my $dbh = Bugzilla->dbh;
-
-    CheckClassification($cl);
-    CheckProduct($prod);
-
-    trick_taint($prod);
-    trick_taint($cl);
-
-    my $query = q{SELECT products.name
-                  FROM products
-                  INNER JOIN classifications
-                    ON products.classification_id = classifications.id
-                  WHERE products.name = ?
-                    AND classifications.name = ?};
-    my $res = $dbh->selectrow_array($query, undef, ($prod, $cl));
-
-    unless ($res) {
-        print "Sorry, classification->product '$cl'->'$prod' does not exist.";
-        PutTrailer();
-        exit;
-    }
-}
-
-sub CheckClassificationProductNew ($$)
+sub CheckClassificationProduct
 {
     my ($cl, $prod) = @_;
     my $dbh = Bugzilla->dbh;
     
-    CheckClassificationNew($cl);
+    CheckClassification($cl);
 
     trick_taint($prod);
     trick_taint($cl);
@@ -187,100 +126,6 @@ sub CheckClassificationProductNew ($$)
     }
 }
 
-#
-# Displays the form to edit a products parameters
-#
-
-sub EmitFormElements ($$$$$$$$$)
-{
-    my ($classification, $product, $description, $milestoneurl, $disallownew,
-        $votesperuser, $maxvotesperbug, $votestoconfirm, $defaultmilestone)
-        = @_;
-
-    $product = value_quote($product);
-    $description = value_quote($description);
-
-    if (Param('useclassification')) {
-        print "  <TH ALIGN=\"right\">Classification:</TH>\n";
-        print "  <TD><b>",html_quote($classification),"</b></TD>\n";
-        print "</TR><TR>\n";
-    }
-
-    print "  <TH ALIGN=\"right\">Product:</TH>\n";
-    print "  <TD><INPUT SIZE=64 MAXLENGTH=64 NAME=\"product\" VALUE=\"$product\"></TD>\n";
-    print "</TR><TR>\n";
-
-    print "  <TH ALIGN=\"right\">Description:</TH>\n";
-    print "  <TD><TEXTAREA ROWS=4 COLS=64 WRAP=VIRTUAL NAME=\"description\">$description</TEXTAREA></TD>\n";
-
-    $defaultmilestone = value_quote($defaultmilestone);
-    if (Param('usetargetmilestone')) {
-        $milestoneurl = value_quote($milestoneurl);
-        print "</TR><TR>\n";
-        print "  <TH ALIGN=\"right\">URL describing milestones for this product:</TH>\n";
-        print "  <TD><INPUT TYPE=TEXT SIZE=64 MAXLENGTH=255 NAME=\"milestoneurl\" VALUE=\"$milestoneurl\"></TD>\n";
-
-        print "</TR><TR>\n";
-        print "  <TH ALIGN=\"right\">Default milestone:</TH>\n";
-        
-        print "  <TD><INPUT TYPE=TEXT SIZE=20 MAXLENGTH=20 NAME=\"defaultmilestone\" VALUE=\"$defaultmilestone\"></TD>\n";
-    } else {
-        print qq{<INPUT TYPE=HIDDEN NAME="defaultmilestone" VALUE="$defaultmilestone">\n};
-    }
-
-
-    print "</TR><TR>\n";
-    print "  <TH ALIGN=\"right\">Closed for bug entry:</TH>\n";
-    my $closed = $disallownew ? "CHECKED" : "";
-    print "  <TD><INPUT TYPE=CHECKBOX NAME=\"disallownew\" $closed VALUE=\"1\"></TD>\n";
-
-    print "</TR><TR>\n";
-    print "  <TH ALIGN=\"right\">Maximum votes per person:</TH>\n";
-    print "  <TD><INPUT SIZE=5 MAXLENGTH=5 NAME=\"votesperuser\" VALUE=\"$votesperuser\"></TD>\n";
-
-    print "</TR><TR>\n";
-    print "  <TH ALIGN=\"right\">Maximum votes a person can put on a single bug:</TH>\n";
-    print "  <TD><INPUT SIZE=5 MAXLENGTH=5 NAME=\"maxvotesperbug\" VALUE=\"$maxvotesperbug\"></TD>\n";
-
-    print "</TR><TR>\n";
-    print "  <TH ALIGN=\"right\">Number of votes a bug in this product needs to automatically get out of the <A HREF=\"page.cgi?id=fields.html#status\">UNCONFIRMED</A> state:</TH>\n";
-    print "  <TD><INPUT SIZE=5 MAXLENGTH=5 NAME=\"votestoconfirm\" VALUE=\"$votestoconfirm\"></TD>\n";
-}
-
-
-#
-# Displays a text like "a.", "a or b.", "a, b or c.", "a, b, c or d."
-#
-
-sub PutTrailer (@)
-{
-    my (@links) = ("Back to the <A HREF=\"query.cgi\">query page</A>", @_);
-
-    my $count = $#links;
-    my $num = 0;
-    print "<P>\n";
-    foreach (@links) {
-        print $_;
-        if ($num == $count) {
-            print ".\n";
-        }
-        elsif ($num == $count-1) {
-            print " or ";
-        }
-        else {
-            print ", ";
-        }
-        $num++;
-    }
-    PutFooter();
-}
-
-
-
-
-
-
-
 #
 # Preliminary checks:
 #
@@ -291,7 +136,7 @@ my $whoid = $user->id;
 my $cgi = Bugzilla->cgi;
 print $cgi->header();
 
-UserInGroup("editcomponents")
+$user->in_group('editcomponents')
   || ThrowUserError("auth_failure", {group  => "editcomponents",
                                      action => "edit",
                                      object => "products"});
@@ -302,10 +147,6 @@ UserInGroup("editcomponents")
 my $classification = trim($cgi->param('classification') || '');
 my $product = trim($cgi->param('product') || '');
 my $action  = trim($cgi->param('action')  || '');
-my $headerdone = 0;
-my $localtrailer = "<A HREF=\"editproducts.cgi\">edit</A> more products";
-my $classhtmlvarstart = "";
-my $classhtmlvar = "";
 my $dbh = Bugzilla->dbh;
 
 #
@@ -313,33 +154,29 @@ my $dbh = Bugzilla->dbh;
 # classifications enabled)
 #
 
-if (Param('useclassification')) {
-    if ($classification) {
-        $classhtmlvar = "&classification=" . url_quote($classification);
-        $classhtmlvarstart = "?classification=" . url_quote($classification);
-        $localtrailer .= ", <A HREF=\"editproducts.cgi" . $classhtmlvarstart . "\">edit</A> in this classification";    
-    }
-    elsif (!$product) {
-        my $query = 
-            "SELECT classifications.name, classifications.description,
-                    COUNT(classification_id) AS product_count
-             FROM classifications
-             LEFT JOIN products
-                  ON classifications.id = products.classification_id " .
-                  $dbh->sql_group_by('classifications.id',
-                                     'classifications.name,
-                                      classifications.description') . "
-             ORDER BY name";
-
-        $vars->{'classifications'} = $dbh->selectall_arrayref($query,
-                                                              {'Slice' => {}});
-
-        $template->process("admin/products/list-classifications.html.tmpl",
-                           $vars)
-            || ThrowTemplateError($template->error());
+if (Param('useclassification') 
+    && !$classification
+    && !$product)
+{
+    my $query = 
+        "SELECT classifications.name, classifications.description,
+                COUNT(classification_id) AS product_count
+         FROM classifications
+         LEFT JOIN products
+              ON classifications.id = products.classification_id " .
+              $dbh->sql_group_by('classifications.id',
+                                 'classifications.name,
+                                  classifications.description') . "
+         ORDER BY name";
+
+    $vars->{'classifications'} = $dbh->selectall_arrayref($query,
+                                                          {'Slice' => {}});
+
+    $template->process("admin/products/list-classifications.html.tmpl",
+                       $vars)
+        || ThrowTemplateError($template->error());
 
-        exit;
-    }
+    exit;
 }
 
 
@@ -351,7 +188,7 @@ if (Param('useclassification')) {
 if (!$action && !$product) {
 
     if (Param('useclassification')) {
-        CheckClassificationNew($classification);
+        CheckClassification($classification);
     }
 
     my @execute_params = ();
@@ -409,48 +246,23 @@ if (!$action && !$product) {
 #
 
 if ($action eq 'add') {
-    PutHeader("Add product");
 
     if (Param('useclassification')) {
         CheckClassification($classification);
     }
-    #print "This page lets you add a new product to bugzilla.\n";
-
-    print "<FORM METHOD=POST ACTION=editproducts.cgi>\n";
-    print "<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n";
-
-    EmitFormElements($classification,'', '', '', 0, 0, 10000, 0, "---");
-
-    print "</TR><TR>\n";
-    print "  <TH ALIGN=\"right\">Version:</TH>\n";
-    print "  <TD><INPUT SIZE=64 MAXLENGTH=255 NAME=\"version\" VALUE=\"unspecified\"></TD>\n";
-    print "</TR><TR>\n";
-    print "  <TH ALIGN=\"right\">Create chart datasets for this product:</TH>\n";
-    print "  <TD><INPUT TYPE=CHECKBOX NAME=\"createseries\" VALUE=1></TD>";
-    print "</TR>\n";
-
-    print "</TABLE>\n<HR>\n";
-    print "<INPUT TYPE=SUBMIT VALUE=\"Add\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"new\">\n";
-    print "<INPUT TYPE=HIDDEN NAME='subcategory' VALUE='-All-'>\n";
-    print "<INPUT TYPE=HIDDEN NAME='open_name' VALUE='All Open'>\n";
-    print "<INPUT TYPE=HIDDEN NAME='classification' VALUE='",html_quote($classification),"'>\n";
-    print "</FORM>";
-
-    my $other = $localtrailer;
-    $other =~ s/more/other/;
-    PutTrailer($other);
+    $vars->{'classification'} = $classification;
+    $template->process("admin/products/create.html.tmpl", $vars)
+      || ThrowTemplateError($template->error());
+
     exit;
 }
 
 
-
 #
 # action='new' -> add product entered in the 'action=add' screen
 #
 
 if ($action eq 'new') {
-    PutHeader("Adding new product");
 
     # Cleanups and validity checks
 
@@ -458,13 +270,11 @@ if ($action eq 'new') {
     if (Param('useclassification')) {
         CheckClassification($classification);
         $classification_id = get_classification_id($classification);
+        $vars->{'classification'} = $classification;
     }
 
     unless ($product) {
-        print "You must enter a name for the new product. Please press\n";
-        print "<b>Back</b> and try again.\n";
-        PutTrailer($localtrailer);
-        exit;
+        ThrowUserError("product_blank_name");  
     }
 
     my $existing_product = TestProduct($product);
@@ -473,38 +283,30 @@ if ($action eq 'new') {
 
         # Check for exact case sensitive match:
         if ($existing_product eq $product) {
-            print "The product '$product' already exists. Please press\n";
-            print "<b>Back</b> and try again.\n";
-            PutTrailer($localtrailer);
-            exit;
+            ThrowUserError("prod_name_already_in_use",
+                           {'product' => $product});
         }
 
         # Next check for a case-insensitive match:
         if (lc($existing_product) eq lc($product)) {
-            print "The new product '$product' differs from existing product ";
-            print "'$existing_product' only in case. Please press\n";
-            print "<b>Back</b> and try again.\n";
-            PutTrailer($localtrailer);
-            exit;
+            ThrowUserError("prod_name_diff_in_case",
+                           {'product' => $product,
+                            'existing_product' => $existing_product}); 
         }
     }
 
     my $version = trim($cgi->param('version') || '');
 
     if ($version eq '') {
-        print "You must enter a version for product '$product'. Please press\n";
-        print "<b>Back</b> and try again.\n";
-        PutTrailer($localtrailer);
-        exit;
+        ThrowUserError("product_must_have_version",
+                       {'product' => $product});
     }
 
     my $description  = trim($cgi->param('description')  || '');
 
     if ($description eq '') {
-        print "You must enter a description for product '$product'. Please press\n";
-        print "<b>Back</b> and try again.\n";
-        PutTrailer($localtrailer);
-        exit;
+        ThrowUserError('product_must_have_description',
+                       {'product' => $product});
     }
 
     my $milestoneurl = trim($cgi->param('milestoneurl') || '');
@@ -623,21 +425,12 @@ if ($action eq 'new') {
     # Make versioncache flush
     unlink "$datadir/versioncache";
 
-    print "OK, done.<p>\n";
-    print "<div style='border: 1px red solid; padding: 1ex;'><b>You will need to    
-           <a href=\"editcomponents.cgi?action=add&product=" .
-           url_quote($product) . "\">add at least one 
-           component</a> before you can enter bugs against this product.</b></div>";
-    PutTrailer($localtrailer,
-        "<a href=\"editproducts.cgi?action=add\">add</a> a new product",
-        "<a href=\"editcomponents.cgi?action=add&product=" .
-        url_quote($product) . $classhtmlvar .
-        "\">add</a> components to this new product");
+    $vars->{'product'} = $product;
+    $template->process("admin/products/created.html.tmpl", $vars)
+        || ThrowTemplateError($template->error());
     exit;
 }
 
-
-
 #
 # action='del' -> ask if user really wants to delete
 #
@@ -657,7 +450,7 @@ if ($action eq 'del') {
     my $classification_id = 1;
 
     if (Param('useclassification')) {
-        CheckClassificationProductNew($classification, $product);
+        CheckClassificationProduct($classification, $product);
         $classification_id = get_classification_id($classification);
         $vars->{'classification'} = $classification;
     }
@@ -791,8 +584,9 @@ if ($action eq 'delete') {
 #
 
 if ($action eq 'edit' || (!$action && $product)) {
-    PutHeader("Edit product");
     CheckProduct($product);
+    trick_taint($product);
+    my $product_id = get_product_id($product); 
     my $classification_id=1;
     if (Param('useclassification')) {
         # If a product has been given with no classification associated
@@ -800,7 +594,6 @@ if ($action eq 'edit' || (!$action && $product)) {
         if ($classification) {
             CheckClassificationProduct($classification, $product);
         } else {
-            trick_taint($product);
             $classification =
                 $dbh->selectrow_array("SELECT classifications.name
                                        FROM products, classifications
@@ -810,144 +603,79 @@ if ($action eq 'edit' || (!$action && $product)) {
         }
         $classification_id = get_classification_id($classification);
     }
+    
+    $vars->{'classification'} = $classification;
 
     # get data of product
-    SendSQL("SELECT classifications.description,
-                    products.id,products.description,milestoneurl,disallownew,
-                    votesperuser,maxvotesperbug,votestoconfirm,defaultmilestone
-             FROM products,classifications
-             WHERE products.name=" . SqlQuote($product) .
-            " AND classifications.id=" . SqlQuote($classification_id));
-    my ($class_description, $product_id,$prod_description, $milestoneurl, $disallownew,
-        $votesperuser, $maxvotesperbug, $votestoconfirm, $defaultmilestone) =
-        FetchSQLData();
-
-    print "<FORM METHOD=POST ACTION=editproducts.cgi>\n";
-    print "<TABLE  BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n";
-
-    EmitFormElements($classification, $product, $prod_description, $milestoneurl, 
-                     $disallownew, $votesperuser, $maxvotesperbug,
-                     $votestoconfirm, $defaultmilestone);
+    $vars->{'product'} = $dbh->selectrow_hashref(qq{
+            SELECT id, name, classification_id, description,
+                   milestoneurl, disallownew, votesperuser,
+                   maxvotesperbug, votestoconfirm, defaultmilestone
+              FROM products
+             WHERE id = ?}, undef, $product_id);
     
-    print "</TR><TR VALIGN=top>\n";
-    print "  <TH ALIGN=\"right\"><A HREF=\"editcomponents.cgi?product=", url_quote($product), $classhtmlvar, "\">Edit components:</A></TH>\n";
-    print "  <TD>";
-    SendSQL("SELECT name,description
-             FROM components
-             WHERE product_id=$product_id");
-    if (MoreSQLData()) {
-        print "<table>";
-        while ( MoreSQLData() ) {
-            my ($component, $description) = FetchSQLData();
-            $description ||= "<FONT COLOR=\"red\">description missing</FONT>";
-            print "<tr><th align=right valign=top>$component:</th>";
-            print "<td valign=top>$description</td></tr>\n";
-        }
-        print "</table>\n";
-    } else {
-        print "<FONT COLOR=\"red\">missing</FONT>";
-    }
-
-
-    print "</TD>\n</TR><TR>\n";
-    print "  <TH ALIGN=\"right\" VALIGN=\"top\"><A HREF=\"editversions.cgi?product=", url_quote($product), $classhtmlvar, "\">Edit versions:</A></TH>\n";
-    print "  <TD>";
-    SendSQL("SELECT value
-             FROM versions
-             WHERE product_id=$product_id
-             ORDER BY value");
-    if (MoreSQLData()) {
-        my $br = 0;
-        while ( MoreSQLData() ) {
-            my ($version) = FetchSQLData();
-            print "<BR>" if $br;
-            print $version;
-            $br = 1;
-        }
-    } else {
-        print "<FONT COLOR=\"red\">missing</FONT>";
-    }
+   
+    $vars->{'components'} = $dbh->selectall_arrayref(qq{
+            SELECT name, description
+              FROM components
+             WHERE product_id = ?
+          ORDER BY name}, {'Slice' => {}},$product_id); 
+    
+    
+    $vars->{'versions'} = $dbh->selectcol_arrayref(q{
+        SELECT value FROM versions
+         WHERE product_id = ?
+      ORDER BY value}, undef, $product_id);
 
-    #
-    # Adding listing for associated target milestones - matthew@zeroknowledge.com
-    #
     if (Param('usetargetmilestone')) {
-        print "</TD>\n</TR><TR>\n";
-        print "  <TH ALIGN=\"right\" VALIGN=\"top\"><A HREF=\"editmilestones.cgi?product=", url_quote($product), $classhtmlvar, "\">Edit milestones:</A></TH>\n";
-        print "  <TD>";
-        SendSQL("SELECT value
-                 FROM milestones
-                 WHERE product_id=$product_id
-                 ORDER BY sortkey,value");
-        if(MoreSQLData()) {
-            my $br = 0;
-            while ( MoreSQLData() ) {
-                my ($milestone) = FetchSQLData();
-                print "<BR>" if $br;
-                print $milestone;
-                $br = 1;
-            }
-        } else {
-            print "<FONT COLOR=\"red\">missing</FONT>";
-        }
+        $vars->{'milestones'} = $dbh->selectcol_arrayref(q{
+                                    SELECT value 
+                                      FROM milestones
+                                     WHERE product_id = ?
+                                  ORDER BY sortkey, value}, 
+                                     undef, $product_id);
     }
-
-    print "</TD>\n</TR><TR>\n";
-    print "  <TH ALIGN=\"right\" VALIGN=\"top\"><A HREF=\"editproducts.cgi?action=editgroupcontrols&product=", url_quote($product), $classhtmlvar,"\">Edit Group Access Controls</A></TH>\n";
-    print "<TD>\n";
-    SendSQL("SELECT id, name, isactive, entry, membercontrol, othercontrol, canedit " .
-            "FROM groups, " .
-            "group_control_map " .
-            "WHERE group_control_map.group_id = id AND product_id = $product_id " .
-            "AND isbuggroup != 0 ORDER BY name");
-    while (MoreSQLData()) {
-        my ($id, $name, $isactive, $entry, $membercontrol, $othercontrol, $canedit) 
-            = FetchSQLData();
-        print "<B>" . html_quote($name) . ":</B> ";
-        if ($isactive) {
-            print $ctl{$membercontrol} . "/" . $ctl{$othercontrol}; 
-            print ", ENTRY" if $entry;
-            print ", CANEDIT" if $canedit;
-        } else {
-            print "DISABLED";
-        }
-        print "<BR>\n";
+        
+    my $query = qq{SELECT
+                       groups.id, groups.name, groups.isactive,
+                       group_control_map.entry,
+                       group_control_map.membercontrol,
+                       group_control_map.othercontrol,
+                       group_control_map.canedit
+                  FROM groups
+                 INNER JOIN group_control_map
+                        ON groups.id = group_control_map.group_id
+                  WHERE group_control_map.product_id = ?
+                  AND   groups.isbuggroup != 0
+                  ORDER BY groups.name};
+    my $groups = $dbh->selectall_arrayref($query, {'Slice' => {}},
+                                          $product_id);
+    
+    # Convert Group Controls(membercontrol and othercontrol) from 
+    # integer to string to display Membercontrol/Othercontrol names
+    # at the template. <gabriel@async.com.br>
+    my $constants = {
+        (CONTROLMAPNA) => 'NA',
+        (CONTROLMAPSHOWN) => 'Shown',
+        (CONTROLMAPDEFAULT) => 'Default',
+        (CONTROLMAPMANDATORY) => 'Mandatory'};
+
+    foreach my $group (@$groups) {
+        $group->{'membercontrol'} =
+            $constants->{$group->{'membercontrol'}};
+        $group->{'othercontrol'} =
+            $constants->{$group->{'othercontrol'}};
     }
-    print "</TD>\n</TR><TR>\n";
-    print "  <TH ALIGN=\"right\">Bugs:</TH>\n";
-    print "  <TD>";
-    SendSQL("SELECT count(bug_id), product_id
-             FROM bugs " .
-            $dbh->sql_group_by('product_id') . "
-             HAVING product_id = $product_id");
-    my $bugs = '';
-    $bugs = FetchOneColumn() if MoreSQLData();
-    print $bugs || 'none';
-
-    print "</TD>\n</TR></TABLE>\n";
-
-    print "<INPUT TYPE=HIDDEN NAME=\"classification\" VALUE=\"" .
-        html_quote($classification) . "\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"productold\" VALUE=\"" .
-        html_quote($product) . "\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"descriptionold\" VALUE=\"" .
-        html_quote($prod_description) . "\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"milestoneurlold\" VALUE=\"" .
-        html_quote($milestoneurl) . "\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"disallownewold\" VALUE=\"$disallownew\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"votesperuserold\" VALUE=\"$votesperuser\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"maxvotesperbugold\" VALUE=\"$maxvotesperbug\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"votestoconfirmold\" VALUE=\"$votestoconfirm\">\n";
-    $defaultmilestone = value_quote($defaultmilestone);
-    print "<INPUT TYPE=HIDDEN NAME=\"defaultmilestoneold\" VALUE=\"$defaultmilestone\">\n";
-    print "<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"update\">\n";
-    print "<INPUT TYPE=SUBMIT VALUE=\"Update\">\n";
-
-    print "</FORM>";
-
-    my $x = $localtrailer;
-    $x =~ s/more/other/;
-    PutTrailer($x);
+   
+    $vars->{'groups'} = $groups;
+    
+    $vars->{'bug_count'} = $dbh->selectrow_array(qq{
+            SELECT COUNT(*) FROM bugs
+            WHERE product_id = ?}, undef, $product_id);
+    
+    $template->process("admin/products/edit.html.tmpl", $vars)
+        || ThrowTemplateError($template->error());
+
     exit;
 }
 
@@ -1017,8 +745,6 @@ if ($action eq 'updategroupcontrols') {
             exit;                
         }
     }
-    PutHeader("Update group access controls for product \"$product\"");
-    $headerdone = 1;
     SendSQL("SELECT id, name FROM groups " .
             "WHERE isbuggroup != 0 AND isactive != 0");
     while (MoreSQLData()){
@@ -1037,8 +763,7 @@ if ($action eq 'updategroupcontrols') {
               || (($newmembercontrol == CONTROLMAPDEFAULT)
                && ($newothercontrol != CONTROLMAPSHOWN))) {
             ThrowUserError('illegal_group_control_combination',
-                            {groupname => $groupname,
-                             header_done => 1});
+                            {groupname => $groupname});
         }
     }
     $dbh->bz_lock_tables('groups READ',
@@ -1103,9 +828,8 @@ if ($action eq 'updategroupcontrols') {
         }
     }
 
+    my @removed_na;
     foreach my $groupid (@now_na) {
-        print "Removing bugs from NA group " 
-             . html_quote(GroupIdToName($groupid)) . "<P>\n";
         my $count = 0;
         SendSQL("SELECT bugs.bug_id, 
                  (lastdiffed >= delta_ts)
@@ -1132,12 +856,14 @@ if ($action eq 'updategroupcontrols') {
             PopGlobalSQLState();
             $count++;
         }
-        print "dropped $count bugs<p>\n";
+        my %group = (name => GroupIdToName($groupid),
+                     bug_count => $count);
+
+        push(@removed_na, \%group);
     }
 
+    my @added_mandatory;
     foreach my $groupid (@now_mandatory) {
-        print "Adding bugs to Mandatory group " 
-             . html_quote(GroupIdToName($groupid)) . "<P>\n";
         my $count = 0;
         SendSQL("SELECT bugs.bug_id,
                  (lastdiffed >= delta_ts)
@@ -1166,22 +892,32 @@ if ($action eq 'updategroupcontrols') {
             PopGlobalSQLState();
             $count++;
         }
-        print "added $count bugs<p>\n";
+        my %group = (name => GroupIdToName($groupid),
+                     bug_count => $count);
+
+        push(@added_mandatory, \%group);
     }
     $dbh->bz_unlock_tables();
 
-    print "Group control updates done<P>\n";
+    $vars->{'removed_na'} = \@removed_na;
+
+    $vars->{'added_mandatory'} = \@added_mandatory;
 
-    PutTrailer($localtrailer);
+    $vars->{'classification'} = $classification;
+
+    $vars->{'product'} = $product;
+
+    $template->process("admin/products/groupcontrol/updated.html.tmpl", $vars)
+        || ThrowTemplateError($template->error());
     exit;
 }
 
 #
 # action='update' -> update the product
 #
-
 if ($action eq 'update') {
-    PutHeader("Update product");
+
+    $vars->{'classification'} = $classification;
 
     my $productold          = trim($cgi->param('productold')          || '');
     my $description         = trim($cgi->param('description')         || '');
@@ -1204,22 +940,22 @@ if ($action eq 'update') {
     CheckProduct($productold);
     my $product_id = get_product_id($productold);
 
+    my $stored_maxvotesperbug = $maxvotesperbug;
     if (!detaint_natural($maxvotesperbug)) {
-        print "Sorry, the max votes per bug must be an integer >= 0.";
-        PutTrailer($localtrailer);
-        exit;
+        ThrowUserError('prod_votes_per_bug_must_be_nonnegative',
+                       {maxvotesperbug => $stored_maxvotesperbug});
     }
 
+    my $stored_votesperuser = $votesperuser;
     if (!detaint_natural($votesperuser)) {
-        print "Sorry, the votes per user must be an integer >= 0.";
-        PutTrailer($localtrailer);
-        exit;
+        ThrowUserError('prod_votes_per_user_must_be_nonnegative',
+                       {votesperuser => $stored_votesperuser});
     }
 
+    my $stored_votestoconfirm = $votestoconfirm;
     if (!detaint_natural($votestoconfirm)) {
-        print "Sorry, the votes to confirm must be an integer >= 0.";
-        PutTrailer($localtrailer);
-        exit;
+        ThrowUserError('prod_votes_to_confirm_must_be_nonnegative',
+                       {votestoconfirm => $stored_votestoconfirm});
     }
 
     # Note that we got the $product_id using $productold above so it will
@@ -1237,27 +973,31 @@ if ($action eq 'update') {
         SendSQL("UPDATE products
                  SET disallownew=$disallownew
                  WHERE id=$product_id");
-        print "Updated bug submit status.<BR>\n";
+        $vars->{'updated_bugsubmitstatus'} = 1;
+        $vars->{'new_bugsubmitstatus'} = $disallownew;        
     }
 
     if ($description ne $descriptionold) {
         unless ($description) {
-            print "Sorry, I can't delete the description.";
-            $dbh->bz_unlock_tables(UNLOCK_ABORT);
-            PutTrailer($localtrailer);
-            exit;
+            ThrowUserError('prod_cant_delete_description',
+                           {product => $productold});
         }
         SendSQL("UPDATE products
                  SET description=" . SqlQuote($description) . "
                  WHERE id=$product_id");
-        print "Updated description.<BR>\n";
+        $vars->{'updated_description'} = 1;
+        $vars->{'old_description'} = $descriptionold;        
+        $vars->{'new_description'} = $description;        
     }
 
-    if (Param('usetargetmilestone') && $milestoneurl ne $milestoneurlold) {
+    if (Param('usetargetmilestone')
+        && ($milestoneurl ne $milestoneurlold)) {
         SendSQL("UPDATE products
                  SET milestoneurl=" . SqlQuote($milestoneurl) . "
                  WHERE id=$product_id");
-        print "Updated milestone URL.<BR>\n";
+        $vars->{'updated_milestoneurl'} = 1;
+        $vars->{'old_milestoneurl'} = $milestoneurlold;        
+        $vars->{'new_milestoneurl'} = $milestoneurl;        
     }
 
 
@@ -1265,7 +1005,10 @@ if ($action eq 'update') {
         SendSQL("UPDATE products
                  SET votesperuser=$votesperuser
                  WHERE id=$product_id");
-        print "Updated votes per user.<BR>\n";
+        $vars->{'updated_votesperuser'} = 1;
+        $vars->{'old_votesperuser'} = $votesperuserold;        
+        $vars->{'new_votesperuser'} = $votesperuser;        
+
         $checkvotes = 1;
     }
 
@@ -1274,7 +1017,10 @@ if ($action eq 'update') {
         SendSQL("UPDATE products
                  SET maxvotesperbug=$maxvotesperbug
                  WHERE id=$product_id");
-        print "Updated max votes per bug.<BR>\n";
+        $vars->{'updated_maxvotesperbug'} = 1;
+        $vars->{'old_maxvotesperbug'} = $maxvotesperbugold;        
+        $vars->{'new_maxvotesperbug'} = $maxvotesperbug;        
+
         $checkvotes = 1;
     }
 
@@ -1283,7 +1029,11 @@ if ($action eq 'update') {
         SendSQL("UPDATE products
                  SET votestoconfirm=$votestoconfirm
                  WHERE id=$product_id");
-        print "Updated votes to confirm.<BR>\n";
+
+        $vars->{'updated_votestoconfirm'} = 1;
+        $vars->{'old_votestoconfirm'} = $votestoconfirmold;
+        $vars->{'new_votestoconfirm'} = $votestoconfirm;
+
         $checkvotes = 1;
     }
 
@@ -1293,15 +1043,18 @@ if ($action eq 'update') {
                 "WHERE value = " . SqlQuote($defaultmilestone) .
                 "  AND product_id = $product_id");
         if (!FetchOneColumn()) {
-            print "Sorry, the milestone $defaultmilestone must be defined first.";
-            $dbh->bz_unlock_tables(UNLOCK_ABORT);
-            PutTrailer($localtrailer);
-            exit;
+            ThrowUserError('prod_must_define_defaultmilestone',
+                           {product          => $productold,
+                            defaultmilestone => $defaultmilestone,
+                            classification   => $classification});
         }
         SendSQL("UPDATE products " .
                 "SET defaultmilestone = " . SqlQuote($defaultmilestone) .
                 "WHERE id=$product_id");
-        print "Updated default milestone.<BR>\n";
+
+        $vars->{'updated_defaultmilestone'} = 1;
+        $vars->{'old_defaultmilestone'} = $defaultmilestoneold;
+        $vars->{'new_defaultmilestone'} = $defaultmilestone;
     }
 
     my $qp = SqlQuote($product);
@@ -1309,30 +1062,33 @@ if ($action eq 'update') {
 
     if ($product ne $productold) {
         unless ($product) {
-            print "Sorry, I can't delete the product name.";
-            $dbh->bz_unlock_tables(UNLOCK_ABORT);
-            PutTrailer($localtrailer);
-            exit;
+            ThrowUserError('prod_cant_delete_name',
+                           {product => $productold});
         }
 
         if (lc($product) ne lc($productold) &&
             TestProduct($product)) {
-            print "Sorry, product name '$product' is already in use.";
-            $dbh->bz_unlock_tables(UNLOCK_ABORT);
-            PutTrailer($localtrailer);
-            exit;
+            ThrowUserError('prod_name_already_in_use',
+                           {product => $product});
         }
 
         SendSQL("UPDATE products SET name=$qp WHERE id=$product_id");
-        print "Updated product name.<BR>\n";
+
+        $vars->{'updated_product'} = 1;
+        $vars->{'old_product'} = $productold;
+        $vars->{'new_product'} = $product;
+
     }
     $dbh->bz_unlock_tables();
     unlink "$datadir/versioncache";
 
     if ($checkvotes) {
+        $vars->{'checkvotes'} = 1;
+
         # 1. too many votes for a single user on a single bug.
+        my @toomanyvotes_list = ();
         if ($maxvotesperbug < $votesperuser) {
-            print "<br>Checking existing votes in this product for anybody who now has too many votes for a single bug.";
+
             SendSQL("SELECT votes.who, votes.bug_id " .
                     "FROM votes, bugs " .
                     "WHERE bugs.bug_id = votes.bug_id " .
@@ -1343,19 +1099,27 @@ if ($action eq 'update') {
                 my ($who, $id) = (FetchSQLData());
                 push(@list, [$who, $id]);
             }
+
+
             foreach my $ref (@list) {
                 my ($who, $id) = (@$ref);
                 RemoveVotes($id, $who, "The rules for voting on this product has changed;\nyou had too many votes for a single bug.");
                 my $name = DBID_to_name($who);
-                print qq{<br>Removed votes for bug <A HREF="show_bug.cgi?id=$id">$id</A> from $name\n};
+
+                push(@toomanyvotes_list,
+                     {id => $id, name => $name});
             }
+
         }
 
+        $vars->{'toomanyvotes'} = \@toomanyvotes_list;
+
+
         # 2. too many total votes for a single user.
         # This part doesn't work in the general case because RemoveVotes
         # doesn't enforce votesperuser (except per-bug when it's less
         # than maxvotesperbug).  See RemoveVotes in globals.pl.
-        print "<br>Checking existing votes in this product for anybody who now has too many total votes.";
+
         SendSQL("SELECT votes.who, votes.vote_count FROM votes, bugs " .
                 "WHERE bugs.bug_id = votes.bug_id " .
                 " AND bugs.product_id = $product_id");
@@ -1368,6 +1132,7 @@ if ($action eq 'update') {
                 $counts{$who} += $count;
             }
         }
+        my @toomanytotalvotes_list = ();
         foreach my $who (keys(%counts)) {
             if ($counts{$who} > $votesperuser) {
                 SendSQL("SELECT votes.bug_id FROM votes, bugs " .
@@ -1379,37 +1144,36 @@ if ($action eq 'update') {
                     RemoveVotes($id, $who,
                                 "The rules for voting on this product has changed; you had too many\ntotal votes, so all votes have been removed.");
                     my $name = DBID_to_name($who);
-                    print qq{<br>Removed votes for bug <A HREF="show_bug.cgi?id=$id">$id</A> from $name\n};
+
+                    push(@toomanytotalvotes_list,
+                         {id => $id, name => $name});
                 }
             }
         }
+        $vars->{'toomanytotalvotes'} = \@toomanytotalvotes_list;
+
         # 3. enough votes to confirm
         my $bug_list = $dbh->selectcol_arrayref("SELECT bug_id FROM bugs
                                                  WHERE product_id = ?
                                                  AND bug_status = 'UNCONFIRMED'
                                                  AND votes >= ?",
                                                  undef, ($product_id, $votestoconfirm));
-        if (scalar(@$bug_list)) {
-            print "<br>Checking unconfirmed bugs in this product for any which now have sufficient votes.";
-        }
+
         my @updated_bugs = ();
         foreach my $bug_id (@$bug_list) {
             my $confirmed = CheckIfVotedConfirmed($bug_id, $whoid);
             push (@updated_bugs, $bug_id) if $confirmed;
         }
 
-        $vars->{'type'} = "votes";
-        $vars->{'mailrecipients'} = { 'changer' => $whoid };
-        $vars->{'header_done'} = 1;
+        $vars->{'confirmedbugs'} = \@updated_bugs;
+        $vars->{'changer'} = $whoid;
 
-        foreach my $bug_id (@updated_bugs) {
-            $vars->{'id'} = $bug_id;
-            $template->process("bug/process/results.html.tmpl", $vars)
-              || ThrowTemplateError($template->error());
-        }
     }
 
-    PutTrailer($localtrailer);
+    $vars->{'name'} = $product;
+    $template->process("admin/products/updated.html.tmpl", $vars)
+        || ThrowTemplateError($template->error());
+
     exit;
 }
 
@@ -1453,7 +1217,6 @@ if ($action eq 'editgroupcontrols') {
         $group{'bugcount'} = $bugcount;
         push @groups,\%group;
     }
-    $vars->{'header_done'} = $headerdone;
     $vars->{'product'} = $product;
     $vars->{'classification'} = $classification;
     $vars->{'groups'} = \@groups;
@@ -1474,5 +1237,4 @@ if ($action eq 'editgroupcontrols') {
 # No valid action found
 #
 
-PutHeader("Error");
-print "I don't have a clue what you want.<BR>\n";
+ThrowUserError('no_valid_action', {field => "product"});
diff --git a/editsettings.cgi b/editsettings.cgi
index 80a8921d561518aaf09d0ac986c44ab36394c0b1..883666074fca51034851afe2bb321ffd94179d29 100644
--- a/editsettings.cgi
+++ b/editsettings.cgi
@@ -21,10 +21,9 @@ use lib qw(.);
 
 use Bugzilla;
 use Bugzilla::Constants;
-use Bugzilla::User;
 use Bugzilla::User::Setting;
 
-require "CGI.pl";
+require "globals.pl";
 
 # Use global template variables.
 use vars qw($template $vars);
@@ -69,12 +68,12 @@ sub SaveSettings{
 ###  Live code  ###
 ###################
 
-Bugzilla->login(LOGIN_REQUIRED);
+my $user = Bugzilla->login(LOGIN_REQUIRED);
 
 my $cgi = Bugzilla->cgi;
 print $cgi->header;
 
-UserInGroup("tweakparams")
+$user->in_group('tweakparams')
   || ThrowUserError("auth_failure", {group  => "tweakparams",
                                      action => "modify",
                                      object => "settings"});
diff --git a/editusers.cgi b/editusers.cgi
index 3eb0061e0533adcf995cddea7fe065e6acaa9be3..049bfabf7b064866161a4b0c3fa9fcd638a4152a 100755
--- a/editusers.cgi
+++ b/editusers.cgi
@@ -14,21 +14,23 @@
 # The Original Code is the Bugzilla Bug Tracking System.
 #
 # Contributor(s): Marc Schumann <wurblzap@gmail.com>
+#                 Lance Larsh <lance.larsh@oracle.com>
 
 use strict;
 use lib ".";
 
-require "CGI.pl";
 require "globals.pl";
 
 use vars qw( $vars );
 
 use Bugzilla;
 use Bugzilla::User;
+use Bugzilla::Bug;
 use Bugzilla::Flag;
 use Bugzilla::Config;
 use Bugzilla::Constants;
 use Bugzilla::Util;
+use Bugzilla::Field;
 
 Bugzilla->login(LOGIN_REQUIRED);
 
@@ -41,7 +43,7 @@ my $editusers = $user->in_group('editusers');
 
 # Reject access if there is no sense in continuing.
 $editusers
-    || Bugzilla->user->can_bless()
+    || $user->can_bless()
     || ThrowUserError("auth_failure", {group  => "editusers",
                                        reason => "cant_bless",
                                        action => "edit",
@@ -85,7 +87,7 @@ if ($action eq 'search') {
 
     if (!$editusers && Param('usevisibilitygroups')) {
         # Show only users in visible groups.
-        $visibleGroups = visibleGroupsAsString();
+        $visibleGroups = $user->visible_groups_as_string();
 
         if ($visibleGroups) {
             $query .= qq{, user_group_map AS ugm
@@ -109,15 +111,19 @@ if ($action eq 'search') {
     else {
         # Handle selection by user name.
         if (defined($matchtype)) {
-            $query .= " $nextCondition profiles.login_name ";
+            $query .= " $nextCondition ";
+            my $expr = "profiles.login_name";
             if ($matchtype eq 'regexp') {
-                $query .= $dbh->sql_regexp . ' ?';
+                $query .= $dbh->sql_regexp($expr, '?');
                 $matchstr = '.' unless $matchstr;
             } elsif ($matchtype eq 'notregexp') {
-                $query .= $dbh->sql_not_regexp . ' ?';
+                $query .= $dbh->sql_not_regexp($expr, '?');
+                $matchstr = '.' unless $matchstr;
+            } elsif ($matchtype eq 'exact') {
+                $query .= $expr . ' = ?';
                 $matchstr = '.' unless $matchstr;
             } else { # substr or unknown
-                $query .= 'like ?';
+                $query .= $expr . ' like ?';
                 $matchstr = "%$matchstr%";
             }
             $nextCondition = 'AND';
@@ -129,22 +135,28 @@ if ($action eq 'search') {
 
         # Handle selection by group.
         if ($grouprestrict eq '1') {
+            detaint_natural($groupid);
+            my $grouplist = join(',',
+                @{Bugzilla::User->flatten_group_membership($groupid)});
             $query .= " $nextCondition profiles.userid = ugm.user_id " .
-                      'AND ugm.group_id = ?';
-            # We can trick_taint because we use the value in a SELECT only,
-            # using a placeholder.
-            trick_taint($groupid);
-            push(@bindValues, $groupid);
+                      "AND ugm.group_id IN($grouplist)";
         }
         $query .= ' ORDER BY profiles.login_name';
 
         $vars->{'users'} = $dbh->selectall_arrayref($query,
                                                     {'Slice' => {}},
                                                     @bindValues);
+
     }
 
-    $template->process('admin/users/list.html.tmpl', $vars)
-       || ThrowTemplateError($template->error());
+    if ($matchtype eq 'exact' && scalar(@{$vars->{'users'}}) == 1) {
+        $otherUserID = $vars->{'users'}[0]->{'userid'};
+        $otherUser = new Bugzilla::User($otherUserID);
+        edit_processing();
+    } else {
+        $template->process('admin/users/list.html.tmpl', $vars)
+            || ThrowTemplateError($template->error());
+    }
 
 ###########################################################################
 } elsif ($action eq 'add') {
@@ -171,9 +183,10 @@ if ($action eq 'search') {
 
     # Validity checks
     $login || ThrowUserError('user_login_required');
-    CheckEmailSyntax($login);
-    is_available_username($login) || ThrowUserError('account_exists',
-                                                    {'email' => $login});
+    validate_email_syntax($login)
+      || ThrowUserError('illegal_email_address', {addr => $login});
+    is_available_username($login)
+      || ThrowUserError('account_exists', {email => $login});
     ValidatePassword($password);
 
     # Login and password are validated now, and realname and disabledtext
@@ -184,9 +197,11 @@ if ($action eq 'search') {
     trick_taint($disabledtext);
 
     insert_new_user($login, $realname, $password, $disabledtext);
-    my $userid = $dbh->bz_last_key('profiles', 'userid');
+    $otherUserID = $dbh->bz_last_key('profiles', 'userid');
     $dbh->bz_unlock_tables();
-    userDataToVars($userid);
+    my $newprofile = new Bugzilla::User($otherUserID);
+    $newprofile->derive_regexp_groups();
+    userDataToVars($otherUserID);
 
     $vars->{'message'} = 'account_created';
     $template->process('admin/users/edit.html.tmpl', $vars)
@@ -194,18 +209,8 @@ if ($action eq 'search') {
 
 ###########################################################################
 } elsif ($action eq 'edit') {
-    $otherUser 
-        || ThrowCodeError('invalid_user_id', {'userid' => $cgi->param('userid')});
 
-    $editusers || canSeeUser($otherUserID)
-        || ThrowUserError('auth_failure', {reason => "not_visible",
-                                           action => "modify",
-                                           object => "user"});
-
-    userDataToVars($otherUserID);
-
-    $template->process('admin/users/edit.html.tmpl', $vars)
-       || ThrowTemplateError($template->error());
+    edit_processing();
 
 ###########################################################################
 } elsif ($action eq 'update') {
@@ -228,7 +233,7 @@ if ($action eq 'search') {
                          'group_group_map READ',
                          'group_group_map AS ggm READ');
  
-    $editusers || canSeeUser($otherUserID)
+    $editusers || $user->can_see_user($otherUser)
         || ThrowUserError('auth_failure', {reason => "not_visible",
                                            action => "modify",
                                            object => "user"});
@@ -247,9 +252,11 @@ if ($action eq 'search') {
         if ($login ne $loginold) {
             # Validate, then trick_taint.
             $login || ThrowUserError('user_login_required');
-            CheckEmailSyntax($login);
-            is_available_username($login) || ThrowUserError('account_exists',
-                                                            {'email' => $login});
+            validate_email_syntax($login)
+              || ThrowUserError('illegal_email_address', {addr => $login});
+            is_available_username($login)
+              || ThrowUserError('account_exists', {email => $login});
+
             trick_taint($login);
             push(@changedFields, 'login_name');
             push(@values, $login);
@@ -289,6 +296,12 @@ if ($action eq 'search') {
                      'WHERE userid = ?',
                      undef, @values);
             # XXX: should create profiles_activity entries.
+            #
+            # We create a new user object here because it needs to
+            # read information that may have changed since this
+            # script started.
+            my $newprofile = new Bugzilla::User($otherUserID);
+            $newprofile->derive_regexp_groups();
         }
     }
 
@@ -365,7 +378,7 @@ if ($action eq 'search') {
                    },
                  undef,
                  ($otherUserID, $userid,
-                  GetFieldID('bug_group'),
+                  get_field_id('bug_group'),
                   join(', ', @groupsRemovedFrom), join(', ', @groupsAddedTo)));
         $dbh->do('UPDATE profiles SET refreshed_when=? WHERE userid = ?',
                  undef, ('1900-01-01 00:00:00', $otherUserID));
@@ -699,36 +712,6 @@ sub mirrorListSelectionValues {
     }
 }
 
-# Give a list of IDs of groups the user can see.
-sub visibleGroupsAsString {
-    return join(', ', @{$user->visible_groups_direct()});
-}
-
-# Determine whether the user can see a user. (Checks for existence, too.)
-sub canSeeUser {
-    my $otherUserID = shift;
-    my $query;
-
-    if (Param('usevisibilitygroups')) {
-        # If the user can see no groups, then no users are visible either.
-        my $visibleGroups = visibleGroupsAsString() || return 0;
-
-        $query = qq{SELECT COUNT(DISTINCT userid)
-                    FROM profiles, user_group_map
-                    WHERE userid = ?
-                    AND user_id = userid
-                    AND isbless = 0
-                    AND group_id IN ($visibleGroups)
-                   };
-    } else {
-        $query = qq{SELECT COUNT(userid)
-                    FROM profiles
-                    WHERE userid = ?
-                   };
-    }
-    return $dbh->selectrow_array($query, undef, $otherUserID);
-}
-
 # Retrieve user data for the user editing form. User creation and user
 # editing code rely on this to call derive_groups().
 sub userDataToVars {
@@ -737,7 +720,7 @@ sub userDataToVars {
     my $query;
     my $dbh = Bugzilla->dbh;
 
-    $otheruser->derive_groups();
+    my $grouplist = $otheruser->groups_as_string;
 
     $vars->{'otheruser'} = $otheruser;
     $vars->{'groups'} = $user->bless_groups();
@@ -746,7 +729,11 @@ sub userDataToVars {
         qq{SELECT id,
                   COUNT(directmember.group_id) AS directmember,
                   COUNT(regexpmember.group_id) AS regexpmember,
-                  COUNT(derivedmember.group_id) AS derivedmember,
+                  (CASE WHEN (groups.id IN ($grouplist)
+                              AND COUNT(directmember.group_id) = 0
+                              AND COUNT(regexpmember.group_id) = 0
+                             ) THEN 1 ELSE 0 END) 
+                      AS derivedmember,
                   COUNT(directbless.group_id) AS directbless
            FROM groups
            LEFT JOIN user_group_map AS directmember
@@ -759,11 +746,6 @@ sub userDataToVars {
                  AND regexpmember.user_id = ?
                  AND regexpmember.isbless = 0
                  AND regexpmember.grant_type = ?
-           LEFT JOIN user_group_map AS derivedmember
-                  ON derivedmember.group_id = id
-                 AND derivedmember.user_id = ?
-                 AND derivedmember.isbless = 0
-                 AND derivedmember.grant_type = ?
            LEFT JOIN user_group_map AS directbless
                   ON directbless.group_id = id
                  AND directbless.user_id = ?
@@ -773,21 +755,35 @@ sub userDataToVars {
         'id', undef,
         ($otheruserid, GRANT_DIRECT,
          $otheruserid, GRANT_REGEXP,
-         $otheruserid, GRANT_DERIVED,
          $otheruserid, GRANT_DIRECT));
 
     # Find indirect bless permission.
     $query = qq{SELECT groups.id
-                FROM groups, user_group_map AS ugm, group_group_map AS ggm
-                WHERE ugm.user_id = ?
-                  AND groups.id = ggm.grantor_id
-                  AND ggm.member_id = ugm.group_id
-                  AND ugm.isbless = 0
+                FROM groups, group_group_map AS ggm
+                WHERE groups.id = ggm.grantor_id
+                  AND ggm.member_id IN ($grouplist)
                   AND ggm.grant_type = ?
                } . $dbh->sql_group_by('id');
     foreach (@{$dbh->selectall_arrayref($query, undef,
-                                        ($otheruserid, GROUP_BLESS))}) {
+                                        (GROUP_BLESS))}) {
         # Merge indirect bless permissions into permission variable.
         $vars->{'permissions'}{${$_}[0]}{'indirectbless'} = 1;
     }
 }
+
+sub edit_processing
+{
+    $otherUser 
+        || ThrowCodeError('invalid_user_id', {'userid' => $cgi->param('userid')});
+
+    $editusers || $user->can_see_user($otherUser)
+        || ThrowUserError('auth_failure', {reason => "not_visible",
+                                           action => "modify",
+                                           object => "user"});
+
+    userDataToVars($otherUserID);
+
+    $template->process('admin/users/edit.html.tmpl', $vars)
+       || ThrowTemplateError($template->error());
+
+}
diff --git a/editvalues.cgi b/editvalues.cgi
index abeab549a8b082503f4bb195c8530cf3d416a5eb..897498db3ffa8c9f6f37f60f214655b964f18852 100644
--- a/editvalues.cgi
+++ b/editvalues.cgi
@@ -20,8 +20,6 @@
 use strict;
 use lib ".";
 
-require "CGI.pl";
-
 use Bugzilla;
 use Bugzilla::Util;
 use Bugzilla::Error;
@@ -41,14 +39,14 @@ our @valid_fields = ('op_sys', 'rep_platform', 'priority', 'bug_severity',);
 ######################################################################
 
 # Returns whether or not the specified table exists in the @tables array.
-sub FieldExists ($) {
+sub FieldExists {
   my ($field) = @_;
 
   return lsearch(\@valid_fields, $field) >= 0;
 }
 
 # Same as FieldExists, but emits and error and dies if it fails.
-sub FieldMustExist ($) {
+sub FieldMustExist {
     my ($field)= @_;
 
     $field ||
@@ -60,7 +58,7 @@ sub FieldMustExist ($) {
 }
 
 # Returns if the specified value exists for the field specified.
-sub ValueExists ($$) {
+sub ValueExists {
     my ($field, $value) = @_;
     FieldMustExist($field);
     trick_taint($field);
@@ -77,7 +75,7 @@ sub ValueExists ($$) {
 }
 
 # Same check as ValueExists, emits an error text and dies if it fails.
-sub ValueMustExist ($$) {
+sub ValueMustExist {
     my ($field, $value)= @_;
 
     # Values may not be empty (it's very difficult to deal 
diff --git a/editversions.cgi b/editversions.cgi
index 8d3f4dc8b6c110fa64e8715fe0683fd057408023..d29e4d8504f9e1822c6537bb72f76d33c246862c 100755
--- a/editversions.cgi
+++ b/editversions.cgi
@@ -31,90 +31,27 @@
 use strict;
 use lib ".";
 
-require "CGI.pl";
 require "globals.pl";
 
 use Bugzilla::Constants;
 use Bugzilla::Config qw(:DEFAULT $datadir);
-use Bugzilla::User;
+use Bugzilla::Product;
+use Bugzilla::Version;
 
 use vars qw($template $vars);
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
 
-# TestProduct:  just returns if the specified product does exists
-# CheckProduct: same check, optionally  emit an error text
-# TestVersion:  just returns if the specified product/version combination exists
-# CheckVersion: same check, optionally emit an error text
-
-sub TestProduct ($)
-{
-    my $prod = shift;
-
-    # does the product exist?
-    SendSQL("SELECT name
-             FROM products
-             WHERE name = " . SqlQuote($prod));
-    return FetchOneColumn();
-}
-
-sub CheckProduct ($)
-{
-    my $prod = shift;
-
-    # do we have a product?
-    unless ($prod) {
-        ThrowUserError('product_not_specified');    
-    }
-
-    unless (TestProduct $prod) {
-        ThrowUserError('product_doesnt_exist',
-                       {'product' => $prod});
-    }
-}
-
-sub TestVersion ($$)
-{
-    my ($prod,$ver) = @_;
-
-    # does the product exist?
-    SendSQL("SELECT products.name, value
-             FROM versions, products
-             WHERE versions.product_id = products.id
-               AND products.name = " . SqlQuote($prod) . "
-               AND value = " . SqlQuote($ver));
-    return FetchOneColumn();
-}
-
-sub CheckVersion ($$)
-{
-    my ($prod, $ver) = @_;
-
-    # do we have the version?
-    unless ($ver) {
-        ThrowUserError('version_not_specified');
-    }
-
-    CheckProduct($prod);
-
-    unless (TestVersion $prod, $ver) {
-        ThrowUserError('version_not_valid',
-                       {'product' => $prod,
-                        'version' => $ver});
-    }
-}
-
-
 #
 # Preliminary checks:
 #
 
-Bugzilla->login(LOGIN_REQUIRED);
+my $user = Bugzilla->login(LOGIN_REQUIRED);
 
-print Bugzilla->cgi->header();
+print $cgi->header();
 
-UserInGroup("editcomponents")
+$user->in_group('editcomponents')
   || ThrowUserError("auth_failure", {group  => "editcomponents",
                                      action => "edit",
                                      object => "versions"});
@@ -122,34 +59,20 @@ UserInGroup("editcomponents")
 #
 # often used variables
 #
-my $product = trim($cgi->param('product') || '');
-my $version = trim($cgi->param('version') || '');
-my $action  = trim($cgi->param('action')  || '');
-
+my $product_name = trim($cgi->param('product') || '');
+my $version_name = trim($cgi->param('version') || '');
+my $action       = trim($cgi->param('action')  || '');
+my $showbugcounts = (defined $cgi->param('showbugcounts'));
 
 #
-# product = '' -> Show nice list of versions
+# product = '' -> Show nice list of products
 #
 
-unless ($product) {
-
-    my @products = ();
-
-    SendSQL("SELECT products.name, products.description
-             FROM products 
-             ORDER BY products.name");
+unless ($product_name) {
 
-    while ( MoreSQLData() ) {
-        my ($product, $description) = FetchSQLData();
-
-        my $prod = {};
-
-        $prod->{'name'} = $product;
-        $prod->{'description'} = $description;
-
-        push(@products, $prod);
-    }
+    my @products = Bugzilla::Product::get_all_products();
 
+    $vars->{'showbugcounts'} = $showbugcounts;
     $vars->{'products'} = \@products;
     $template->process("admin/versions/select-product.html.tmpl",
                        $vars)
@@ -158,33 +81,18 @@ unless ($product) {
     exit;
 }
 
+my $product = Bugzilla::Product::check_product($product_name);
+
 #
 # action='' -> Show nice list of versions
 #
 
 unless ($action) {
+    my @versions =
+        Bugzilla::Version::get_versions_by_product($product->id);
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
-    my @versions = ();
-
-    SendSQL("SELECT value
-             FROM versions
-             WHERE product_id = $product_id
-             ORDER BY value");
-
-    while ( MoreSQLData() ) {
-        my $name = FetchOneColumn();
-
-        my $version = {};
-
-        $version->{'name'} = $name;
-
-        push(@versions, $version);
-
-    }
-
-    $vars->{'product'} = $product;
+    $vars->{'showbugcounts'} = $showbugcounts;
+    $vars->{'product'} = $product->name;
     $vars->{'versions'} = \@versions;
     $template->process("admin/versions/list.html.tmpl",
                        $vars)
@@ -204,10 +112,7 @@ unless ($action) {
 
 if ($action eq 'add') {
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
-
-    $vars->{'product'} = $product;
+    $vars->{'product'} = $product->name;
     $template->process("admin/versions/create.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -223,33 +128,26 @@ if ($action eq 'add') {
 
 if ($action eq 'new') {
 
-    CheckProduct($product);
-    my $product_id = get_product_id($product);
-
     # Cleanups and valididy checks
+    $version_name || ThrowUserError('version_blank_name');
 
-    unless ($version) {
-        ThrowUserError('version_blank_name',
-                       {'name' => $version});
-    }
-
-    if (TestVersion($product,$version)) {
+    my $version = new Bugzilla::Version($product->id, $version_name);
+    if ($version) {
         ThrowUserError('version_already_exists',
-                       {'name' => $version,
-                        'product' => $product});
+                       {'name' => $version->name,
+                        'product' => $product->name});
     }
 
     # Add the new version
-    SendSQL("INSERT INTO versions ( " .
-            "value, product_id" .
-            " ) VALUES ( " .
-            SqlQuote($version) . ", $product_id)");
+    trick_taint($version_name);
+    $dbh->do("INSERT INTO versions (value, product_id)
+              VALUES (?, ?)", undef, ($version_name, $product->id));
 
     # Make versioncache flush
     unlink "$datadir/versioncache";
 
-    $vars->{'name'} = $version;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $version_name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/versions/created.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -268,18 +166,13 @@ if ($action eq 'new') {
 
 if ($action eq 'del') {
 
-    CheckVersion($product, $version);
-    my $product_id = get_product_id($product);
-
-    SendSQL("SELECT count(bug_id)
-             FROM bugs
-             WHERE product_id = $product_id
-               AND version = " . SqlQuote($version));
-    my $bugs = FetchOneColumn() || 0;
+    my $version = Bugzilla::Version::check_version($product,
+                                                   $version_name);
+    my $bugs = $version->bug_count;
 
     $vars->{'bug_count'} = $bugs;
-    $vars->{'name'} = $version;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $version->name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/versions/confirm-delete.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
@@ -294,29 +187,24 @@ if ($action eq 'del') {
 #
 
 if ($action eq 'delete') {
-    CheckVersion($product, $version);
-    my $product_id = get_product_id($product);
 
-    trick_taint($version);
-
-    my $nb_bugs =
-      $dbh->selectrow_array("SELECT COUNT(bug_id) FROM bugs
-                             WHERE product_id = ? AND version = ?",
-                             undef, ($product_id, $version));
+    my $version = Bugzilla::Version::check_version($product,
+                                                   $version_name);
 
     # The version cannot be removed if there are bugs
     # associated with it.
-    if ($nb_bugs) {
-        ThrowUserError("version_has_bugs", { nb => $nb_bugs });
+    if ($version->bug_count) {
+        ThrowUserError("version_has_bugs",
+                       { nb => $version->bug_count });
     }
 
     $dbh->do("DELETE FROM versions WHERE product_id = ? AND value = ?",
-              undef, ($product_id, $version));
+              undef, ($product->id, $version->name));
 
     unlink "$datadir/versioncache";
 
-    $vars->{'name'} = $version;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $version->name;
+    $vars->{'product'} = $product->name;
 
     $template->process("admin/versions/deleted.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
@@ -333,11 +221,11 @@ if ($action eq 'delete') {
 
 if ($action eq 'edit') {
 
-    CheckVersion($product,$version);
-    my $product_id = get_product_id($product);
+    my $version = Bugzilla::Version::check_version($product,
+                                                   $version_name);
 
-    $vars->{'name'} = $version;
-    $vars->{'product'} = $product;
+    $vars->{'name'}    = $version->name;
+    $vars->{'product'} = $product->name;
 
     $template->process("admin/versions/edit.html.tmpl",
                        $vars)
@@ -354,10 +242,11 @@ if ($action eq 'edit') {
 
 if ($action eq 'update') {
 
-    my $versionold = trim($cgi->param('versionold') || '');
-
-    CheckVersion($product,$versionold);
-    my $product_id = get_product_id($product);
+    $version_name || ThrowUserError('version_not_specified');
+    my $version_old_name = trim($cgi->param('versionold') || '');
+    my $version_old =
+        Bugzilla::Version::check_version($product,
+                                         $version_old_name);
 
     # Note that the order of this tests is important. If you change
     # them, be sure to test for WHERE='$version' or WHERE='$versionold'
@@ -366,23 +255,28 @@ if ($action eq 'update') {
                          'versions WRITE',
                          'products READ');
 
-    if ($version ne $versionold) {
-        unless ($version) {
-            ThrowUserError('version_blank_name');
-        }
-        if (TestVersion($product,$version)) {
+    if ($version_name ne $version_old->name) {
+        
+        my $version = new Bugzilla::Version($product->id,
+                                            $version_name);
+
+        if ($version) {
             ThrowUserError('version_already_exists',
-                           {'name' => $version,
-                            'product' => $product});
+                           {'name' => $version->name,
+                            'product' => $product->name});
         }
-        SendSQL("UPDATE bugs
-                 SET version=" . SqlQuote($version) . "
-                 WHERE version=" . SqlQuote($versionold) . "
-                   AND product_id = $product_id");
-        SendSQL("UPDATE versions
-                 SET value = " . SqlQuote($version) . "
-                 WHERE product_id = $product_id
-                   AND value = " . SqlQuote($versionold));
+        
+        trick_taint($version_name);
+        $dbh->do("UPDATE bugs
+                  SET version = ?
+                  WHERE version = ? AND product_id = ?", undef,
+                  ($version_name, $version_old->name, $product->id));
+        
+        $dbh->do("UPDATE versions
+                  SET value = ?
+                  WHERE product_id = ? AND value = ?", undef,
+                  ($version_name, $product->id, $version_old->name));
+
         unlink "$datadir/versioncache";
 
         $vars->{'updated_name'} = 1;
@@ -390,8 +284,8 @@ if ($action eq 'update') {
 
     $dbh->bz_unlock_tables(); 
 
-    $vars->{'name'} = $version;
-    $vars->{'product'} = $product;
+    $vars->{'name'} = $version_name;
+    $vars->{'product'} = $product->name;
     $template->process("admin/versions/updated.html.tmpl",
                        $vars)
       || ThrowTemplateError($template->error());
diff --git a/editwhines.cgi b/editwhines.cgi
index f7e773fcc78f940c688f1a908194188c999f14fb..2b70acc139a903de3d1fe19f69bdab3ff56df7cb 100755
--- a/editwhines.cgi
+++ b/editwhines.cgi
@@ -28,7 +28,6 @@
 use strict;
 
 use lib ".";
-require "CGI.pl";
 require "globals.pl";
 
 use vars qw( $vars );
@@ -37,7 +36,7 @@ use Bugzilla::Constants;
 use Bugzilla::User;
 use Bugzilla::Group;
 # require the user to have logged in
-Bugzilla->login(LOGIN_REQUIRED);
+my $user = Bugzilla->login(LOGIN_REQUIRED);
 
 ###############################################################################
 # Main Body Execution
@@ -47,7 +46,6 @@ my $cgi      = Bugzilla->cgi;
 my $template = Bugzilla->template;
 my $dbh      = Bugzilla->dbh;
 
-my $user     = Bugzilla->user;
 my $userid   = $user->id;
 
 my $sth; # database statement handle
@@ -74,7 +72,7 @@ my $sth; # database statement handle
 my $events = get_events($userid);
 
 # First see if this user may use whines
-UserInGroup("bz_canusewhines")
+$user->in_group('bz_canusewhines')
   || ThrowUserError("auth_failure", {group  => "bz_canusewhines",
                                      action => "schedule",
                                      object => "reports"});
diff --git a/enter_bug.cgi b/enter_bug.cgi
index 00f790de5df0afd304bb46d1c35b70459005831d..66e182423808d6e51a3d8afb6cf8244f499aea5f 100755
--- a/enter_bug.cgi
+++ b/enter_bug.cgi
@@ -41,7 +41,7 @@ use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::Bug;
 use Bugzilla::User;
-require "CGI.pl";
+require "globals.pl";
 
 use vars qw(
   $template
@@ -80,21 +80,13 @@ if (!defined $product || $product eq "") {
    }
 
    if (!$cgi->param('classification')) {
-       my %classdesc;
-       my %classifications;
-    
-       foreach my $c (GetSelectableClassifications()) {
-           $classdesc{$c} = $::classdesc{$c};
-           $classifications{$c} = $::classifications{$c};
-       }
+       my $classifications = Bugzilla->user->get_selectable_classifications();
 
-       my $classification_size = scalar(keys %classdesc);
-       if ($classification_size == 0) {
+       if (scalar(@$classifications) == 0) {
            ThrowUserError("no_products");
        } 
-       elsif ($classification_size > 1) {
-           $vars->{'classdesc'} = \%classdesc;
-           $vars->{'classifications'} = \%classifications;
+       elsif (scalar(@$classifications) > 1) {
+           $vars->{'classifications'} = $classifications;
 
            $vars->{'target'} = "enter_bug.cgi";
            $vars->{'format'} = $cgi->param('format');
@@ -106,7 +98,7 @@ if (!defined $product || $product eq "") {
              || ThrowTemplateError($template->error());
            exit;        
        }
-       $cgi->param(-name => 'classification', -value => (keys %classdesc)[0]);
+       $cgi->param(-name => 'classification', -value => @$classifications[0]->name);
    }
 
     my %products;
@@ -475,15 +467,18 @@ if ( ($cloned_bug_id) &&
     $default{'version'} = $vars->{'version'}->[$#{$vars->{'version'}}];
 }
 
+# Only used with placeholders below
+trick_taint($product);
+
 # Get list of milestones.
 if ( Param('usetargetmilestone') ) {
     $vars->{'target_milestone'} = $::target_milestone{$product};
     if (formvalue('target_milestone')) {
        $default{'target_milestone'} = formvalue('target_milestone');
     } else {
-       SendSQL("SELECT defaultmilestone FROM products WHERE " .
-               "name = " . SqlQuote($product));
-       $default{'target_milestone'} = FetchOneColumn();
+       $default{'target_milestone'} =
+                $dbh->selectrow_array('SELECT defaultmilestone FROM products
+                                       WHERE name = ?', undef, $product);
     }
 }
 
@@ -498,9 +493,9 @@ my @status;
 #  confirmation, user cannot confirm    UNCONFIRMED
 #  confirmation, user can confirm       NEW, UNCONFIRMED.
 
-SendSQL("SELECT votestoconfirm FROM products WHERE name = " .
-        SqlQuote($product));
-if (FetchOneColumn()) {
+my $votestoconfirm = $dbh->selectrow_array('SELECT votestoconfirm FROM products
+                                            WHERE name = ?', undef, $product);
+if ($votestoconfirm) {
     if (UserInGroup("editbugs") || UserInGroup("canconfirm")) {
         push(@status, "NEW");
     }
@@ -520,17 +515,19 @@ if (formvalue('bug_status') && (lsearch(\@status, formvalue('bug_status')) >= 0)
     $default{'bug_status'} = $status[0];
 }
  
-SendSQL("SELECT DISTINCT groups.id, groups.name, groups.description, " .
-        "membercontrol, othercontrol " .
-        "FROM groups LEFT JOIN group_control_map " .
-        "ON group_id = id AND product_id = $product_id " .
-        "WHERE isbuggroup != 0 AND isactive != 0 ORDER BY description");
+my $grouplist = $dbh->selectall_arrayref(
+                  q{SELECT DISTINCT groups.id, groups.name, groups.description,
+                                    membercontrol, othercontrol
+                      FROM groups
+                 LEFT JOIN group_control_map
+                        ON group_id = id AND product_id = ?
+                     WHERE isbuggroup != 0 AND isactive != 0
+                  ORDER BY description}, undef, $product_id);
 
 my @groups;
 
-while (MoreSQLData()) {
-    my ($id, $groupname, $description, $membercontrol, $othercontrol) 
-        = FetchSQLData();
+foreach my $row (@$grouplist) {
+    my ($id, $groupname, $description, $membercontrol, $othercontrol) = @$row;
     # Only include groups if the entering user will have an option.
     next if ((!$membercontrol) 
                || ($membercontrol == CONTROLMAPNA) 
@@ -581,9 +578,9 @@ $vars->{'group'} = \@groups;
 
 $vars->{'default'} = \%default;
 
-my $format = 
-  GetFormat("bug/create/create", scalar $cgi->param('format'), 
-            scalar $cgi->param('ctype'));
+my $format = $template->get_format("bug/create/create",
+                                   scalar $cgi->param('format'), 
+                                   scalar $cgi->param('ctype'));
 
 print $cgi->header($format->{'ctype'});
 $template->process($format->{'template'}, $vars)
diff --git a/globals.pl b/globals.pl
index 71d2bbe4706adb6f98d9bef22e64f8eca5c9e851..ac502f39ac21858f43c2b51c22a6d810d372a25f 100644
--- a/globals.pl
+++ b/globals.pl
@@ -35,8 +35,8 @@ use Bugzilla::Constants;
 use Bugzilla::Util;
 # Bring ChmodDataFile in until this is all moved to the module
 use Bugzilla::Config qw(:DEFAULT ChmodDataFile $localconfig $datadir);
-use Bugzilla::BugMail;
 use Bugzilla::User;
+use Bugzilla::Error;
 
 # Shut up misguided -w warnings about "used only once".  For some reason,
 # "use vars" chokes on me when I try it here.
@@ -108,14 +108,6 @@ $::SIG{PIPE} = 'IGNORE';
 #}
 #$::SIG{__DIE__} = \&die_with_dignity;
 
-sub GetFieldID {
-    my ($f) = (@_);
-    SendSQL("SELECT fieldid FROM fielddefs WHERE name = " . SqlQuote($f));
-    my $fieldid = FetchOneColumn();
-    die "Unknown field id: $f" if !$fieldid;
-    return $fieldid;
-}
-
 # XXXX - this needs to go away
 sub GenerateVersionTable {
     my $dbh = Bugzilla->dbh;
@@ -325,32 +317,22 @@ sub GetKeywordIdFromName {
 $::VersionTableLoaded = 0;
 sub GetVersionTable {
     return if $::VersionTableLoaded;
-    my $mtime = file_mod_time("$datadir/versioncache");
-    if (!defined $mtime || $mtime eq "" || !-r "$datadir/versioncache") {
-        $mtime = 0;
-    }
-    if (time() - $mtime > 3600) {
-        use Bugzilla::Token;
-        Bugzilla::Token::CleanTokenTable() if Bugzilla->dbwritesallowed;
+    my $file_generated = 0;
+    if (!-r "$datadir/versioncache") {
         GenerateVersionTable();
+        $file_generated = 1;
     }
     require "$datadir/versioncache";
-    if (!defined %::versions) {
+    if (!defined %::versions && !$file_generated) {
         GenerateVersionTable();
         do "$datadir/versioncache";
-
-        if (!defined %::versions) {
-            die "Can't generate file $datadir/versioncache";
-        }
+    }
+    if (!defined %::versions) {
+        die "Can't generate file $datadir/versioncache";
     }
     $::VersionTableLoaded = 1;
 }
 
-sub GenerateRandomPassword {
-    my $size = (shift or 10); # default to 10 chars if nothing specified
-    return join("", map{ ('0'..'9','a'..'z','A'..'Z')[rand 62] } (1..$size));
-}
-
 #
 # This function checks if there are any entry groups defined.
 # If called with no arguments, it identifies
@@ -528,113 +510,6 @@ sub GetEnterableProducts {
     return (@products);
 }
 
-
-#
-# This function returns an alphabetical list of product names to which
-# the user can enter bugs.  If the $by_id parameter is true, also retrieves IDs
-# and pushes them onto the list as id, name [, id, name...] for easy slurping
-# into a hash by the calling code.
-sub GetSelectableProducts {
-    my ($by_id,$by_classification) = @_;
-
-    my $extra_sql = $by_id ? "id, " : "";
-
-    my $extra_from_sql = $by_classification ? " INNER JOIN classifications"
-        . " ON classifications.id = products.classification_id" : "";
-
-    my $query = "SELECT $extra_sql products.name " .
-                "FROM products $extra_from_sql " .
-                "LEFT JOIN group_control_map " .
-                "ON group_control_map.product_id = products.id ";
-    if (Param('useentrygroupdefault')) {
-        $query .= "AND group_control_map.entry != 0 ";
-    } else {
-        $query .= "AND group_control_map.membercontrol = " .
-                  CONTROLMAPMANDATORY . " ";
-    }
-    if (%{Bugzilla->user->groups}) {
-        $query .= "AND group_id NOT IN(" . 
-                   join(',', values(%{Bugzilla->user->groups})) . ") ";
-    }
-    $query .= "WHERE group_id IS NULL ";
-    if ($by_classification) {
-        $query .= "AND classifications.name = ";
-        $query .= SqlQuote($by_classification) . " ";
-    }
-    $query .= "ORDER BY name";
-    PushGlobalSQLState();
-    SendSQL($query);
-    my @products = ();
-    push(@products, FetchSQLData()) while MoreSQLData();
-    PopGlobalSQLState();
-    return (@products);
-}
-
-# GetSelectableProductHash
-# returns a hash containing 
-# legal_products => an enterable product list
-# legal_(components|versions|milestones) =>
-#   the list of components, versions, and milestones of enterable products
-# (components|versions|milestones)_by_product
-#    => a hash of component lists for each enterable product
-# Milestones only get returned if the usetargetmilestones parameter is set.
-sub GetSelectableProductHash {
-    # The hash of selectable products and their attributes that gets returned
-    # at the end of this function.
-    my $selectables = {};
-
-    my %products = GetSelectableProducts(1);
-
-    $selectables->{legal_products} = [sort values %products];
-
-    # Run queries that retrieve the list of components, versions,
-    # and target milestones (if used) for the selectable products.
-    my @tables = qw(components versions);
-    push(@tables, 'milestones') if Param('usetargetmilestone');
-
-    PushGlobalSQLState();
-    foreach my $table (@tables) {
-        my %values;
-        my %values_by_product;
-
-        if (scalar(keys %products)) {
-            # Why oh why can't we standardize on these names?!?
-            my $fld = ($table eq "components" ? "name" : "value");
-
-            my $query = "SELECT $fld, product_id FROM $table WHERE product_id " .
-                        "IN (" . join(",", keys %products) . ") ORDER BY $fld";
-            SendSQL($query);
-
-            while (MoreSQLData()) {
-                my ($name, $product_id) = FetchSQLData();
-                next unless $name;
-                $values{$name} = 1;
-                push @{$values_by_product{$products{$product_id}}}, $name;
-            }
-        }
-
-        $selectables->{"legal_$table"} = [sort keys %values];
-        $selectables->{"${table}_by_product"} = \%values_by_product;
-    }
-    PopGlobalSQLState();
-
-    return $selectables;
-}
-
-#
-# This function returns an alphabetical list of classifications that has products the user can enter bugs.
-sub GetSelectableClassifications {
-    my @selectable_classes = ();
-
-    foreach my $c (sort keys %::classdesc) {
-        if ( scalar(GetSelectableProducts(0,$c)) > 0) {
-           push(@selectable_classes,$c);
-        }
-    }
-    return (@selectable_classes);
-}
-
-
 sub ValidatePassword {
     # Determines whether or not a password is valid (i.e. meets Bugzilla's
     # requirements for length and content).    
@@ -692,19 +567,6 @@ sub get_classification_id {
     return $classification_id;
 }
 
-sub get_classification_name {
-    my ($classification_id) = @_;
-    die "non-numeric classification_id '$classification_id' passed to get_classification_name"
-      unless ($classification_id =~ /^\d+$/);
-    PushGlobalSQLState();
-    SendSQL("SELECT name FROM classifications WHERE id = $classification_id");
-    my ($classification) = FetchSQLData();
-    PopGlobalSQLState();
-    return $classification;
-}
-
-
-
 sub get_product_id {
     my ($prod) = @_;
     PushGlobalSQLState();
@@ -830,7 +692,7 @@ sub quoteUrls {
                               "<a href=\"#c$4\">$1</a>")
               ~egox;
 
-    # Duplicate markers
+    # Old duplicate markers
     $text =~ s~(?<=^\*\*\*\ This\ bug\ has\ been\ marked\ as\ a\ duplicate\ of\ )
                (\d+)
                (?=\ \*\*\*\Z)
@@ -977,51 +839,6 @@ sub GetBugLink {
     }
 }
 
-sub GetLongDescriptionAsText {
-    my ($id, $start, $end) = (@_);
-    my $result = "";
-    my $count = 0;
-    my $anyprivate = 0;
-    my $dbh = Bugzilla->dbh;
-    my ($query) = ("SELECT profiles.login_name, " .
-                   $dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i') . ", " .
-                   "       longdescs.thetext, longdescs.isprivate, " .
-                   "       longdescs.already_wrapped " .
-                   "FROM   longdescs, profiles " .
-                   "WHERE  profiles.userid = longdescs.who " .
-                   "AND    longdescs.bug_id = $id ");
-
-    # $start will be undef for New bugs, and defined for pre-existing bugs.
-    if ($start) {
-        # If $start is not NULL, obtain the count-index
-        # of this comment for the leading "Comment #xxx" line.)
-        SendSQL("SELECT count(*) FROM longdescs " .
-                " WHERE bug_id = $id AND bug_when <= '$start'");
-        ($count) = (FetchSQLData());
-         
-        $query .= " AND longdescs.bug_when > '$start'"
-                . " AND longdescs.bug_when <= '$end' ";
-    }
-
-    $query .= "ORDER BY longdescs.bug_when";
-    SendSQL($query);
-    while (MoreSQLData()) {
-        my ($who, $when, $text, $isprivate, $work_time, $already_wrapped) = 
-            (FetchSQLData());
-        if ($count) {
-            $result .= "\n\n------- Comment #$count from $who".Param('emailsuffix')."  ".
-                Bugzilla::Util::format_time($when) . " -------\n";
-        }
-        if (($isprivate > 0) && Param("insidergroup")) {
-            $anyprivate = 1;
-        }
-        $result .= ($already_wrapped ? $text : wrap_comment($text));
-        $count++;
-    }
-
-    return ($result, $anyprivate);
-}
-
 # Returns a list of all the legal values for a field that has a
 # list of legal values, like rep_platform or resolution.
 sub get_legal_field_values {
@@ -1105,54 +922,6 @@ sub OpenStates {
     return ('NEW', 'REOPENED', 'ASSIGNED', 'UNCONFIRMED');
 }
 
-
-###############################################################################
-
-# Constructs a format object from URL parameters. You most commonly call it 
-# like this:
-# my $format = GetFormat("foo/bar", scalar($cgi->param('format')),
-#                        scalar($cgi->param('ctype')));
-
-sub GetFormat {
-    my ($template, $format, $ctype) = @_;
-
-    $ctype ||= "html";
-    $format ||= "";
-
-    # Security - allow letters and a hyphen only
-    $ctype =~ s/[^a-zA-Z\-]//g;
-    $format =~ s/[^a-zA-Z\-]//g;
-    trick_taint($ctype);
-    trick_taint($format);
-
-    $template .= ($format ? "-$format" : "");
-    $template .= ".$ctype.tmpl";
-
-    # Now check that the template actually exists. We only want to check
-    # if the template exists; any other errors (eg parse errors) will
-    # end up being detected later.
-    eval {
-        Bugzilla->template->context->template($template);
-    };
-    # This parsing may seem fragile, but its OK:
-    # http://lists.template-toolkit.org/pipermail/templates/2003-March/004370.html
-    # Even if it is wrong, any sort of error is going to cause a failure
-    # eventually, so the only issue would be an incorrect error message
-    if ($@ && $@->info =~ /: not found$/) {
-        ThrowUserError("format_not_found", { 'format' => $format,
-                                             'ctype' => $ctype,
-                                           });
-    }
-
-    # Else, just return the info
-    return
-    {
-        'template'    => $template ,
-        'extension'   => $ctype ,
-        'ctype'       => Bugzilla::Constants::contenttypes->{$ctype} ,
-    };
-}
-
 ############# Live code below here (that is, not subroutine defs) #############
 
 use Bugzilla;
diff --git a/images/CVS/Entries b/images/CVS/Entries
index 444102d3e29ec6a93bd5be7e8db4878bf2a3c750..68badf318bc4150734373fc39b3f065ea7435b31 100644
--- a/images/CVS/Entries
+++ b/images/CVS/Entries
@@ -1,2 +1,2 @@
-/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-2_20
+/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-2_21_1
 D
diff --git a/images/CVS/Tag b/images/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/images/CVS/Tag
+++ b/images/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/importxml.pl b/importxml.pl
index 0d9dcb8683782e1eadee2fa8745ef743f0b5a999..9c56b3d1a3856f45b1e5bc7d02c87b976a9d61fb 100755
--- a/importxml.pl
+++ b/importxml.pl
@@ -69,7 +69,6 @@ $Data::Dumper::Useqq = 1;
 use Bugzilla::BugMail;
 use Bugzilla::User;
 
-require "CGI.pl";
 require "globals.pl";
 
 GetVersionTable();
diff --git a/index.cgi b/index.cgi
index 124c81b7a3b1bbaef367e4b92d6b05a0bbccdfea..694292fc7bf0446d6ffab3793011633881125c96 100755
--- a/index.cgi
+++ b/index.cgi
@@ -30,11 +30,9 @@ use strict;
 
 # Include the Bugzilla CGI and general utility library.
 use lib ".";
-require "CGI.pl";
+require "globals.pl";
 
-use vars qw(
-  $vars
-);
+use vars qw($vars);
 
 # Check whether or not the user is logged in and, if so, set the $::userid 
 use Bugzilla::Constants;
diff --git a/js/CVS/Entries b/js/CVS/Entries
index ab104526d617b38eec45740a8222ca5f251b0bff..35c6343a53db1df10ba2aa85d73a3a30ee7f9d99 100644
--- a/js/CVS/Entries
+++ b/js/CVS/Entries
@@ -1,3 +1,4 @@
-/duplicates.js/1.2/Sun Jan 25 18:47:16 2004//TBUGZILLA-2_20
-/productform.js/1.2/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20
+/TUI.js/1.1/Tue Jul 12 12:32:16 2005//TBUGZILLA-2_21_1
+/duplicates.js/1.2/Sun Jan 25 18:47:16 2004//TBUGZILLA-2_21_1
+/productform.js/1.2/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_21_1
 D
diff --git a/js/CVS/Tag b/js/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/js/CVS/Tag
+++ b/js/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/js/TUI.js b/js/TUI.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ebc7c717c57b1915e6599958b8f8180d72d10d3
--- /dev/null
+++ b/js/TUI.js
@@ -0,0 +1,168 @@
+/* The contents of this file are subject to the Mozilla Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ * 
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ * 
+ * The Original Code is the Bugzilla Bug Tracking System.
+ * 
+ * The Initial Developer of the Original Code is Netscape Communications
+ * Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All
+ * Rights Reserved.
+ * 
+ * Contributor(s): Dennis Melentyev <dennis.melentyev@infopulse.com.ua>
+ */
+
+ /* This file provides JavaScript functions to be included once one wish
+  * to add a hide/reveal/collapse per-class functionality
+  *
+  * 
+  * This file contains hide/reveal API for customizable page views
+  * TUI stands for Tweak UI.
+  *
+  * See bug 262592 for usage examples.
+  * 
+  * Note: this interface is experimental and under development.
+  * We may and probably will make breaking changes to it in the future.
+  */
+
+  var TUIClasses = new Array;
+  var TUICookiesEnabled = -1;
+
+  // Internal function to demangle cookies
+  function TUI_demangle(value) {
+    var pair;
+    var pairs = value.split(",");
+    for (i = 0; i < pairs.length; i++) {
+      pair = pairs[i].split(":");
+      if (pair[0] != null && pair[1] != null)
+        TUIClasses[pair[0]] = pair[1];
+    }
+  }
+
+ /*  TUI_tweak: Function to redraw whole document. 
+  *  Also, initialize TUIClasses array with defaults, then override it 
+  *  with values from cookie
+  */
+
+  function TUI_tweak( cookiesuffix, classes  ) {
+    var dc = document.cookie;
+    var begin = -1;
+    var end = 0;
+
+    // Register classes and their defaults
+    TUI_demangle(classes);
+
+    if (TUICookiesEnabled > 0) {
+      // If cookies enabled, process them
+      TUI_demangle(TUI_getCookie(cookiesuffix));
+    }
+    else if (TUICookiesEnabled == -1) {
+      // If cookies availability not checked yet since browser does 
+      // not has navigator.cookieEnabled property, let's check it manualy
+      var cookie = TUI_getCookie(cookiesuffix);
+      if (cookie.length == 0)
+      {
+        TUI_setCookie(cookiesuffix);
+	// Cookies are definitely disabled for JS.
+        if (TUI_getCookie(cookiesuffix).length == 0)
+          TUICookiesEnabled = 0;
+        else
+          TUICookiesEnabled = 1;
+      }
+      else {
+        // Have cookie set, pretend to be able to reset them later on
+        TUI_demangle(cookie);
+        TUICookiesEnabled = 1;
+      }
+    }
+      
+    if (TUICookiesEnabled > 0) {
+      var els = document.getElementsByTagName('*');
+      for (i = 0; i < els.length; i++) {
+        if (null != TUIClasses[els[i].className]) {
+          TUI_apply(els[i], TUIClasses[els[i].className]);
+        }
+      }
+    }
+    return;
+  }
+
+  // TUI_apply: Function to draw certain element. 
+  // Receives element itself and style value: hide, reveal or collapse
+
+  function TUI_apply(element, value) {
+    if (TUICookiesEnabled > 0 && element != null) {
+      switch (value)
+      {
+        case 'hide':
+          element.style.visibility="hidden";
+          break;
+        case 'collapse':
+          element.style.visibility="hidden";
+          element.style.display="none";
+          break;
+        case 'reveal': // Shown item must expand
+        default:     // The default is to show & expand
+          element.style.visibility="visible";
+          element.style.display="";
+          break;
+      }
+    }
+  }
+
+  // TUI_change: Function to process class. 
+  // Usualy called from onclick event of button
+
+  function TUI_change(cookiesuffix, clsname, action) {
+    if (TUICookiesEnabled > 0) {
+      var els, i;
+      els = document.getElementsByTagName('*');
+      for (i=0; i<els.length; i++) {
+        if (els[i].className.match(clsname)) {
+          TUI_apply(els[i], action);
+        }
+      }
+      TUIClasses[clsname]=action;
+      TUI_setCookie(cookiesuffix);
+    }
+  }
+  
+  // TUI_setCookie: Function to set TUI cookie. 
+  // Used internally
+
+  function TUI_setCookie(cookiesuffix) {
+    var cookieval = "";
+    var expireOn = new Date();
+    expireOn.setYear(expireOn.getFullYear() + 25); 
+    for (clsname in TUIClasses) {
+      if (cookieval.length > 0)
+        cookieval += ",";
+      cookieval += clsname+":"+TUIClasses[clsname];
+    }
+    document.cookie="Bugzilla_TUI_"+cookiesuffix+"="+cookieval+"; expires="+expireOn.toString();
+  }
+
+  // TUI_getCookie: Function to get TUI cookie. 
+  // Used internally
+
+  function TUI_getCookie(cookiesuffix) {
+    var dc = document.cookie;
+    var begin, end;
+    var cookiePrefix = "Bugzilla_TUI_"+cookiesuffix+"="; 
+    begin = dc.indexOf(cookiePrefix, end);
+    if (begin != -1) {
+      begin += cookiePrefix.length;
+      end = dc.indexOf(";", begin);
+      if (end == -1) {
+        end = dc.length;
+      }
+      return unescape(dc.substring(begin, end));
+    }
+    return "";
+  }
diff --git a/localconfig.js b/localconfig.js
deleted file mode 100644
index 2cbe6f24f721a21f6bd78fac169e477d27f29ee4..0000000000000000000000000000000000000000
--- a/localconfig.js
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// This file contains the installation specific values for QuickSearch.
-// See quicksearch.js for more details.
-//
-
-// the global bugzilla url
-
-var bugzilla = "";
-//var bugzilla = "http://bugzilla.mozilla.org/";
-
-// Status and Resolution
-// ---------------------
-
-var statuses_open     = new Array("UNCONFIRMED","NEW","ASSIGNED","REOPENED");
-var statuses_resolved = new Array("RESOLVED","VERIFIED","CLOSED");
-var resolutions       = new Array("FIXED","INVALID","WONTFIX","LATER",
-                                  "REMIND","DUPLICATE","WORKSFORME","MOVED");
-
-// Keywords
-// --------
-//
-// Enumerate all your keywords here. This is necessary to avoid 
-// "foo is not a legal keyword" errors. This makes it possible
-// to include the keywords field in the search by default.
-
-var keywords = new Array(
-// "foo", "bar", "baz"
-);
-
-// Platforms
-// ---------
-//
-// A list of words <w> (substrings of platform values) 
-// that will automatically be translated to "platform:<w>" 
-// E.g. if "mac" is defined as a platform, then searching 
-// for it will find all bugs with platform="Macintosh", 
-// but no other bugs with e.g. "mac" in the summary.
-
-var platforms = new Array(
-"pc","sun","macintosh","mac" //shortcut added
-//,"dec","hp","sgi" 
-//,"all"   //this is a legal value for OpSys, too :(
-//,"other" 
-);
-
-// Severities
-// ----------
-//
-// A list of words <w> (substrings of severity values)
-// that will automatically be translated to "severity:<w>"
-// E.g with this default set of severities, searching for
-// "blo,cri,maj" will find all severe bugs.
-
-var severities = new Array("blo","cri","maj","nor","min","tri","enh");
-
-// Products and Components
-// -----------------------
-//
-// It is not necessary to list all products and components here.
-// Instead, you can define a "blacklist" for some commonly used 
-// words or word fragments that occur in a product or component name
-// but should _not_ trigger product/component search.
-
-var product_exceptions = new Array(
-"row"   // [Browser]
-        //   ^^^
-,"new"  // [MailNews]
-        //      ^^^
-);
-
-var component_exceptions = new Array(
-"hang"  // [mozilla.org] Bugzilla: Component/Keyword Changes
-        //                                            ^^^^
-);
-
diff --git a/long_list.cgi b/long_list.cgi
index 04758729d0b2bd3d9019964ab4753813a6a68d35..a5d59909bc87b01a3675e008e17a8fefd4e50ceb 100755
--- a/long_list.cgi
+++ b/long_list.cgi
@@ -23,10 +23,9 @@
 
 use strict;
 use lib qw(.);
+use Bugzilla;
 
-require "CGI.pl";
-
-our $cgi;
+my $cgi = Bugzilla->cgi;
 
 # Convert comma/space separated elements into separate params
 my @ids = ();
diff --git a/move.pl b/move.pl
deleted file mode 100755
index 96e964b55e3744ee29ad6a0abc78dc21efb16238..0000000000000000000000000000000000000000
--- a/move.pl
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/perl -wT
-# -*- Mode: perl; indent-tabs-mode: nil -*-
-#
-# The contents of this file are subject to the Mozilla Public
-# License Version 1.1 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS
-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): Dawn Endico    <endico@mozilla.org>
-#                 Terry Weissman <terry@mozilla.org>
-#                 Dave Miller    <justdave@bugzilla.org>
-
-use strict;
-
-use lib qw(.);
-
-require "CGI.pl";
-
-use vars qw($template $userid);
-
-use Bugzilla;
-use Bugzilla::Constants;
-use Bugzilla::Bug;
-use Bugzilla::Config qw(:DEFAULT $datadir);
-use Bugzilla::BugMail;
-
-my $cgi = Bugzilla->cgi;
-
-unless ( Param("move-enabled") ) {
-  print $cgi->header();
-  PutHeader("Move Bugs");
-  print "\n<P>Sorry. Bug moving is not enabled here. ";
-  print "If you need to move a bug, contact " . Param("maintainer");
-  PutFooter();
-  exit;
-}
-
-my $user = Bugzilla->login(LOGIN_REQUIRED);
-
-if (!defined $cgi->param('buglist')) {
-  print $cgi->header();
-  PutHeader("Move Bugs");
-  print "Move bugs either from the bug display page or perform a ";
-  print "<A HREF=\"query.cgi\">query</A> and change several bugs at once.\n";
-  print "If you don't see the move button, then you either aren't ";
-  print "logged in or aren't permitted to.";
-  PutFooter();
-  exit;
-}
-
-unless ($user->is_mover) {
-  print $cgi->header();
-  PutHeader("Move Bugs");
-  print "<P>You do not have permission to move bugs<P>\n";
-  PutFooter();
-  exit;
-}
-
-my @bugs;
-my $exporterid = $user->id;
-
-print $cgi->header();
-PutHeader("Move Bugs");
-
-foreach my $id (split(/:/, scalar($cgi->param('buglist')))) {
-  my $bug = new Bugzilla::Bug($id, $exporterid);
-  push @bugs, $bug;
-  if (!$bug->error) {
-    my $fieldid = GetFieldID("bug_status");
-    my $cur_status= $bug->bug_status;
-    SendSQL("INSERT INTO bugs_activity " .
-            "(bug_id,who,bug_when,fieldid,removed,added) VALUES " .
-            "($id,$exporterid,now(),$fieldid,'$cur_status','RESOLVED')");
-    $fieldid = GetFieldID("resolution");
-    my $cur_res= $bug->resolution;
-    SendSQL("INSERT INTO bugs_activity " .
-            "(bug_id,who,bug_when,fieldid,removed,added) VALUES " .
-            "($id,$exporterid,now(),$fieldid,'$cur_res','MOVED')");
-
-    SendSQL("UPDATE bugs SET bug_status =\"RESOLVED\",
-                             resolution =\"MOVED\",
-                             delta_ts = NOW()
-              WHERE bug_id=\"$id\"");
-
-    my $comment = "";
-    if (defined $cgi->param('comment') && $cgi->param('comment') !~ /^\s*$/) {
-        $comment .= $cgi->param('comment') . "\n\n";
-    }
-    $comment .= "Bug moved to " . Param("move-to-url") . ".\n\n";
-    $comment .= "If the move succeeded, " . $user->login . " will receive a mail\n";
-    $comment .= "containing the number of the new bug in the other database.\n";
-    $comment .= "If all went well,  please mark this bug verified, and paste\n";
-    $comment .= "in a link to the new bug. Otherwise, reopen this bug.\n";
-    SendSQL("INSERT INTO longdescs (bug_id, who, bug_when, thetext) VALUES " .
-        "($id,  $exporterid, now(), " . SqlQuote($comment) . ")");
-
-    print "<P>Bug $id moved to " . Param("move-to-url") . ".<BR>\n";
-    Bugzilla::BugMail::Send($id, { 'changer' => $user->login });
-  }
-}
-
-my $buglist = $cgi->param('buglist');
-$buglist =~ s/:/,/g;
-my $host = Param("urlbase");
-$host =~ s#http://([^/]+)/.*#$1#;
-my $to = Param("move-to-address");
-$to =~ s/@/\@/;
-my $msg = "To: $to\n";
-my $from = Param("moved-from-address");
-$from =~ s/@/\@/;
-$msg .= "From: Bugzilla <" . $from . ">\n";
-$msg .= "Subject: Moving bug(s) $buglist\n\n";
-
-my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment');
-my %displayfields;
-foreach (@fieldlist) {
-    $displayfields{$_} = 1;
-}
-
-$template->process("bug/show.xml.tmpl", { bugs => \@bugs,
-                                          displayfields => \%displayfields,
-                                        }, \$msg)
-  || ThrowTemplateError($template->error());
-
-$msg .= "\n";
-
-Bugzilla::BugMail::MessageToMTA($msg);
-PutFooter();
diff --git a/page.cgi b/page.cgi
index 6e78317fc06f88cf215de5da79df44848aae115b..97f425ba22fd1dc3ae83e2de79ccee0ff00281db 100755
--- a/page.cgi
+++ b/page.cgi
@@ -34,7 +34,7 @@ use lib ".";
 
 use Bugzilla;
 
-require "CGI.pl";
+require "globals.pl";
 
 use vars qw($template $vars);
 
@@ -52,7 +52,7 @@ if ($id) {
         ThrowCodeError("bad_page_cgi_id", { "page_id" => $id });
     }
 
-    my $format = GetFormat("pages/$1", undef, $2);
+    my $format = $template->get_format("pages/$1", undef, $2);
     
     $cgi->param('id', $id);
 
diff --git a/post_bug.cgi b/post_bug.cgi
index 84c74bddd5f604cf2667cd39205dfba34036b683..f32ef9b1475a27d89129f8f22e018aa18c8e4729 100755
--- a/post_bug.cgi
+++ b/post_bug.cgi
@@ -26,19 +26,18 @@
 use strict;
 use lib qw(.);
 
+require "globals.pl";
 use Bugzilla;
 use Bugzilla::Constants;
-require "CGI.pl";
-
+use Bugzilla::Util;
 use Bugzilla::Bug;
-
 use Bugzilla::User;
+use Bugzilla::Field;
 
 # Shut up misguided -w warnings about "used only once". For some reason,
 # "use vars" chokes on me when I try it here.
 sub sillyness {
     my $zz;
-    $zz = $::buffer;
     $zz = %::components;
     $zz = %::versions;
     $zz = @::legal_opsys;
@@ -53,9 +52,7 @@ sub sillyness {
 use vars qw($vars $template);
 
 my $user = Bugzilla->login(LOGIN_REQUIRED);
-
 my $cgi = Bugzilla->cgi;
-
 my $dbh = Bugzilla->dbh;
 
 # do a match on the fields if applicable
@@ -70,8 +67,8 @@ my $dbh = Bugzilla->dbh;
 # enter_bug template and then referencing them in the comment template.
 my $comment;
 
-my $format = GetFormat("bug/create/comment",
-                       scalar($cgi->param('format')), "txt");
+my $format = $template->get_format("bug/create/comment",
+                                   scalar($cgi->param('format')), "txt");
 
 $template->process($format->{'template'}, $vars, \$comment)
   || ThrowTemplateError($template->error());
@@ -95,7 +92,7 @@ if (defined $cgi->param('product')) {
 }
 
 if (defined $cgi->param('maketemplate')) {
-    $vars->{'url'} = $::buffer;
+    $vars->{'url'} = $cgi->query_string();
     
     print $cgi->header();
     $template->process("bug/create/make-template.html.tmpl", $vars)
@@ -196,18 +193,18 @@ if (!Param('letsubmitterchoosepriority')) {
 GetVersionTable();
 
 # Some more sanity checking
-CheckFormField($cgi, 'product',      \@::legal_product);
-CheckFormField($cgi, 'rep_platform', \@::legal_platform);
-CheckFormField($cgi, 'bug_severity', \@::legal_severity);
-CheckFormField($cgi, 'priority',     \@::legal_priority);
-CheckFormField($cgi, 'op_sys',       \@::legal_opsys);
-CheckFormField($cgi, 'bug_status',   ['UNCONFIRMED', 'NEW']);
-CheckFormField($cgi, 'version',          $::versions{$product});
-CheckFormField($cgi, 'component',        $::components{$product});
-CheckFormField($cgi, 'target_milestone', $::target_milestone{$product});
-CheckFormFieldDefined($cgi, 'assigned_to');
-CheckFormFieldDefined($cgi, 'bug_file_loc');
-CheckFormFieldDefined($cgi, 'comment');
+check_form_field($cgi, 'product',      \@::legal_product);
+check_form_field($cgi, 'rep_platform', \@::legal_platform);
+check_form_field($cgi, 'bug_severity', \@::legal_severity);
+check_form_field($cgi, 'priority',     \@::legal_priority);
+check_form_field($cgi, 'op_sys',       \@::legal_opsys);
+check_form_field($cgi, 'bug_status',   ['UNCONFIRMED', 'NEW']);
+check_form_field($cgi, 'version',          $::versions{$product});
+check_form_field($cgi, 'component',        $::components{$product});
+check_form_field($cgi, 'target_milestone', $::target_milestone{$product});
+check_form_field_defined($cgi, 'assigned_to');
+check_form_field_defined($cgi, 'bug_file_loc');
+check_form_field_defined($cgi, 'comment');
 
 my $everconfirmed = ($cgi->param('bug_status') eq 'UNCONFIRMED') ? 0 : 1;
 $cgi->param(-name => 'everconfirmed', -value => $everconfirmed);
@@ -273,9 +270,8 @@ foreach my $field ("dependson", "blocked") {
 # Gather the dependency list, and make sure there are no circular refs
 my %deps;
 if (UserInGroup("editbugs")) {
-    %deps = Bugzilla::Bug::ValidateDependencies($cgi->param('dependson'),
-                                                $cgi->param('blocked'),
-                                                undef);
+    %deps = Bugzilla::Bug::ValidateDependencies(scalar($cgi->param('dependson')),
+                                                scalar($cgi->param('blocked')));
 }
 
 # get current time
@@ -314,7 +310,9 @@ if (UserInGroup(Param("timetrackinggroup")) &&
 }
 
 if ((UserInGroup(Param("timetrackinggroup"))) && ($cgi->param('deadline'))) {
-    Bugzilla::Util::ValidateDate($cgi->param('deadline'), 'YYYY-MM-DD');
+    validate_date($cgi->param('deadline'))
+      || ThrowUserError('illegal_date', {date => $cgi->param('deadline'),
+                                         format => 'YYYY-MM-DD'});
     $sql .= SqlQuote($cgi->param('deadline'));  
 } else {
     $sql .= "NULL";
@@ -337,11 +335,7 @@ foreach my $b (grep(/^bit-\d*$/, $cgi->param())) {
             $vars->{'bit'} = $v;
             ThrowCodeError("inactive_group");
         }
-        SendSQL("SELECT user_id FROM user_group_map 
-                 WHERE user_id = $::userid
-                 AND group_id = $v
-                 AND isbless = 0");
-        my ($permit) = FetchSQLData();
+        my ($permit) = $user->in_group_id($v);
         if (!$permit) {
             SendSQL("SELECT othercontrol FROM group_control_map
                      WHERE group_id = $v AND product_id = $product_id");
@@ -376,7 +370,8 @@ while (MoreSQLData()) {
 # Add the bug report to the DB.
 $dbh->bz_lock_tables('bugs WRITE', 'bug_group_map WRITE', 'longdescs WRITE',
                      'cc WRITE', 'keywords WRITE', 'dependencies WRITE',
-                     'bugs_activity WRITE', 'groups READ', 'user_group_map READ',
+                     'bugs_activity WRITE', 'groups READ',
+                     'user_group_map READ', 'group_group_map READ',
                      'keyworddefs READ', 'fielddefs READ');
 
 SendSQL($sql);
diff --git a/process_bug.cgi b/process_bug.cgi
index cf10e0c6ffd086f40ddf11e4a915c151bf3cc903..e98005a9cbc97e3a9f65e744d2b23f240454bbb5 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -46,13 +46,14 @@ my $PrivilegesRequired = 0;
 
 use lib qw(.);
 
+require "globals.pl";
 use Bugzilla;
 use Bugzilla::Constants;
-require "CGI.pl";
-
 use Bugzilla::Bug;
+use Bugzilla::BugMail;
 use Bugzilla::User;
 use Bugzilla::Util;
+use Bugzilla::Field;
 
 # Use the Flag module to modify flag data if the user set flags.
 use Bugzilla::Flag;
@@ -73,6 +74,7 @@ use vars qw(@legal_product
 
 my $user = Bugzilla->login(LOGIN_REQUIRED);
 my $whoid = $user->id;
+my $grouplist = $user->groups_as_string;
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
@@ -163,7 +165,7 @@ foreach my $field ("dependson", "blocked") {
     'newcc'                     => { 'type' => 'multi'  },
     'masscc'                    => { 'type' => 'multi'  },
     'assigned_to'               => { 'type' => 'single' },
-    '^requestee(_type)?-(\d+)$' => { 'type' => 'single' },
+    '^requestee(_type)?-(\d+)$' => { 'type' => 'multi'  },
 });
 
 # Validate flags in all cases. validate() should not detect any
@@ -193,34 +195,24 @@ if (defined $cgi->param('id')) {
 }
 
 # Set up the vars for nagiavtional <link> elements
-my $next_bug;
+my @bug_list;
 if ($cgi->cookie("BUGLIST") && defined $cgi->param('id')) {
-    my @bug_list = split(/:/, $cgi->cookie("BUGLIST"));
+    @bug_list = split(/:/, $cgi->cookie("BUGLIST"));
     $vars->{'bug_list'} = \@bug_list;
-    my $cur = lsearch(\@bug_list, $cgi->param("id"));
-    if ($cur >= 0 && $cur < $#bug_list) {
-        $next_bug = $bug_list[$cur + 1];
-
-        # Note that we only bother with the bug_id here, and get
-        # the full bug object at the end, before showing the edit
-        # page. If you change this, remember that we have not
-        # done the security checks on the next bug yet
-        $vars->{'bug'} = { bug_id => $next_bug };
-    }
 }
 
 GetVersionTable();
 
-CheckFormFieldDefined($cgi, 'product');
-CheckFormFieldDefined($cgi, 'version');
-CheckFormFieldDefined($cgi, 'component');
+check_form_field_defined($cgi, 'product');
+check_form_field_defined($cgi, 'version');
+check_form_field_defined($cgi, 'component');
 
 
 # This function checks if there is a comment required for a specific
 # function and tests, if the comment was given.
 # If comments are required for functions is defined by params.
 #
-sub CheckonComment( $ ) {
+sub CheckonComment {
     my ($function) = (@_);
     
     # Param is 1 if comment should be added !
@@ -302,7 +294,7 @@ if (((defined $cgi->param('id') && $cgi->param('product') ne $oldproduct)
 
     my $mok = 1;   # so it won't affect the 'if' statement if milestones aren't used
     if ( Param("usetargetmilestone") ) {
-       CheckFormFieldDefined($cgi, 'target_milestone');
+       check_form_field_defined($cgi, 'target_milestone');
        $mok = lsearch($::target_milestone{$prod},
                       $cgi->param('target_milestone')) >= 0;
     }
@@ -574,21 +566,21 @@ if (defined $cgi->param('id')) {
     # (XXX those error checks need to happen too, but implementing them 
     # is more work in the current architecture of this script...)
     #
-    CheckFormField($cgi, 'product', \@::legal_product);
-    CheckFormField($cgi, 'component', 
+    check_form_field($cgi, 'product', \@::legal_product);
+    check_form_field($cgi, 'component', 
                    \@{$::components{$cgi->param('product')}});
-    CheckFormField($cgi, 'version', \@{$::versions{$cgi->param('product')}});
+    check_form_field($cgi, 'version', \@{$::versions{$cgi->param('product')}});
     if ( Param("usetargetmilestone") ) {
-        CheckFormField($cgi, 'target_milestone', 
+        check_form_field($cgi, 'target_milestone', 
                        \@{$::target_milestone{$cgi->param('product')}});
     }
-    CheckFormField($cgi, 'rep_platform', \@::legal_platform);
-    CheckFormField($cgi, 'op_sys', \@::legal_opsys);
-    CheckFormField($cgi, 'priority', \@::legal_priority);
-    CheckFormField($cgi, 'bug_severity', \@::legal_severity);
-    CheckFormFieldDefined($cgi, 'bug_file_loc');
-    CheckFormFieldDefined($cgi, 'short_desc');
-    CheckFormFieldDefined($cgi, 'longdesclength');
+    check_form_field($cgi, 'rep_platform', \@::legal_platform);
+    check_form_field($cgi, 'op_sys', \@::legal_opsys);
+    check_form_field($cgi, 'priority', \@::legal_priority);
+    check_form_field($cgi, 'bug_severity', \@::legal_severity);
+    check_form_field_defined($cgi, 'bug_file_loc');
+    check_form_field_defined($cgi, 'short_desc');
+    check_form_field_defined($cgi, 'longdesclength');
 
     if (trim($cgi->param('short_desc')) eq "") {
         ThrowUserError("require_summary");
@@ -598,9 +590,99 @@ if (defined $cgi->param('id')) {
 my $action = trim($cgi->param('action') || '');
 
 if ($action eq Param('move-button-text')) {
-  $cgi->param('buglist', join (":", @idlist));
-  do "move.pl" || die "Error executing move.cgi: $!";
-  exit;
+    Param('move-enabled') || ThrowUserError("move_bugs_disabled");
+
+    $user->is_mover || ThrowUserError("auth_failure", {action => 'move',
+                                                       object => 'bugs'});
+
+    # Moved bugs are marked as RESOLVED MOVED.
+    my $sth = $dbh->prepare("UPDATE bugs
+                                SET bug_status = 'RESOLVED',
+                                    resolution = 'MOVED',
+                                    delta_ts = ?
+                              WHERE bug_id = ?");
+    # Bugs cannot be a dupe and moved at the same time.
+    my $sth2 = $dbh->prepare("DELETE FROM duplicates WHERE dupe = ?");
+
+    my $comment = "";
+    if (defined $cgi->param('comment') && $cgi->param('comment') !~ /^\s*$/) {
+        $comment = $cgi->param('comment') . "\n\n";
+    }
+    $comment .= "Bug moved to " . Param('move-to-url') . ".\n\n";
+    $comment .= "If the move succeeded, " . $user->login . " will receive a mail\n";
+    $comment .= "containing the number of the new bug in the other database.\n";
+    $comment .= "If all went well,  please mark this bug verified, and paste\n";
+    $comment .= "in a link to the new bug. Otherwise, reopen this bug.\n";
+
+    $dbh->bz_lock_tables('bugs WRITE', 'bugs_activity WRITE', 'duplicates WRITE',
+                         'longdescs WRITE', 'profiles READ', 'groups READ',
+                         'bug_group_map READ', 'group_group_map READ',
+                         'user_group_map READ', 'classifications READ',
+                         'products READ', 'components READ', 'votes READ',
+                         'cc READ', 'fielddefs READ');
+
+    my $timestamp = $dbh->selectrow_array("SELECT NOW()");
+    my @bugs;
+    # First update all moved bugs.
+    foreach my $id (@idlist) {
+        my $bug = new Bugzilla::Bug($id, $whoid);
+        push(@bugs, $bug);
+
+        $sth->execute($timestamp, $id);
+        $sth2->execute($id);
+
+        AppendComment($id, $whoid, $comment, 0, $timestamp);
+
+        if ($bug->bug_status ne 'RESOLVED') {
+            LogActivityEntry($id, 'bug_status', $bug->bug_status,
+                             'RESOLVED', $whoid, $timestamp);
+        }
+        if ($bug->resolution ne 'MOVED') {
+            LogActivityEntry($id, 'resolution', $bug->resolution,
+                             'MOVED', $whoid, $timestamp);
+        }
+    }
+    $dbh->bz_unlock_tables();
+
+    # Now send emails.
+    foreach my $id (@idlist) {
+        $vars->{'mailrecipients'} = { 'changer' => $user->login };
+        $vars->{'id'} = $id;
+        $vars->{'type'} = "move";
+
+        $template->process("bug/process/results.html.tmpl", $vars)
+          || ThrowTemplateError($template->error());
+        $vars->{'header_done'} = 1;
+    }
+    # Prepare and send all data about these bugs to the new database
+    my $to = Param('move-to-address');
+    $to =~ s/@/\@/;
+    my $from = Param('moved-from-address');
+    $from =~ s/@/\@/;
+    my $msg = "To: $to\n";
+    $msg .= "From: Bugzilla <" . $from . ">\n";
+    $msg .= "Subject: Moving bug(s) " . join(', ', @idlist) . "\n\n";
+
+    my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment');
+    my %displayfields;
+    foreach (@fieldlist) {
+        $displayfields{$_} = 1;
+    }
+
+    $template->process("bug/show.xml.tmpl", { bugs => \@bugs,
+                                              displayfields => \%displayfields,
+                                            }, \$msg)
+      || ThrowTemplateError($template->error());
+
+    $msg .= "\n";
+    Bugzilla::BugMail::MessageToMTA($msg);
+
+    # End the response page.
+    $template->process("bug/navigate.html.tmpl", $vars)
+      || ThrowTemplateError($template->error());
+    $template->process("global/footer.html.tmpl", $vars)
+      || ThrowTemplateError($template->error());
+    exit;
 }
 
 
@@ -711,10 +793,9 @@ sub ChangeResolution {
 my @groupAdd = ();
 my @groupDel = ();
 
-SendSQL("SELECT groups.id, isactive FROM groups INNER JOIN user_group_map " .
-        "ON groups.id = user_group_map.group_id " .
-        "WHERE user_group_map.user_id = $whoid " .
-        "AND isbless = 0 AND isbuggroup = 1");
+SendSQL("SELECT groups.id, isactive FROM groups " .
+        "WHERE id IN($grouplist) " .
+        "AND isbuggroup = 1");
 while (my ($b, $isactive) = FetchSQLData()) {
     # The multiple change page may not show all groups a bug is in
     # (eg product groups when listing more than one product)
@@ -913,7 +994,7 @@ if (defined $cgi->param('qa_contact')
     }
 }
 
-CheckFormFieldDefined($cgi, 'knob');
+check_form_field_defined($cgi, 'knob');
 SWITCH: for ($cgi->param('knob')) {
     /^none$/ && do {
         last SWITCH;
@@ -937,7 +1018,7 @@ SWITCH: for ($cgi->param('knob')) {
     };
     /^resolve$/ && CheckonComment( "resolve" ) && do {
         # Check here, because its the only place we require the resolution
-        CheckFormField($cgi, 'resolution', \@::settable_resolution);
+        check_form_field($cgi, 'resolution', \@::settable_resolution);
 
         # don't resolve as fixed while still unresolved blocking bugs
         if (Param("noresolveonopenblockers")
@@ -1027,7 +1108,7 @@ SWITCH: for ($cgi->param('knob')) {
         }
 
         # Make sure we can change the original bug (issue A on bug 96085)
-        CheckFormFieldDefined($cgi, 'dup_id');
+        check_form_field_defined($cgi, 'dup_id');
         $duplicate = $cgi->param('dup_id');
         ValidateBugID($duplicate, 'dup_id');
         $cgi->param('dup_id', $duplicate);
@@ -1075,7 +1156,7 @@ SWITCH: for ($cgi->param('knob')) {
         ChangeResolution('DUPLICATE');
         my $comment = $cgi->param('comment');
         $comment .= "\n\n*** This bug has been marked " .
-                    "as a duplicate of $duplicate ***";
+                    "as a duplicate of bug $duplicate ***";
         $cgi->param('comment', $comment);
         last SWITCH;
     };
@@ -1134,7 +1215,9 @@ if (UserInGroup(Param('timetrackinggroup'))) {
         DoComma();
         $::query .= "deadline = ";
         if ($cgi->param('deadline')) {
-            Bugzilla::Util::ValidateDate($cgi->param('deadline'), 'YYYY-MM-DD');
+            validate_date($cgi->param('deadline'))
+              || ThrowUserError('illegal_date', {date => $cgi->param('deadline'),
+                                                 format => 'YYYY-MM-DD'});
             $::query .= SqlQuote($cgi->param('deadline'));
         } else {
             $::query .= "NULL" ;
@@ -1199,16 +1282,11 @@ foreach my $id (@idlist) {
                                 # whether we do LOW_PRIORITY ...
     $dbh->bz_lock_tables("bugs $write", "bugs_activity $write",
             "cc $write", "cc AS selectVisible_cc $write",
-            "profiles $write", "dependencies $write", "votes $write",
+            "profiles READ", "dependencies $write", "votes $write",
             "products READ", "components READ",
             "keywords $write", "longdescs $write", "fielddefs $write",
             "bug_group_map $write", "flags $write", "duplicates $write",
-            # user_group_map would be a READ lock except that Flag::process
-            # may call Flag::notify, which creates a new user object,
-            # which might call derive_groups, which wants a WRITE lock on that
-            # table. group_group_map is in here at all because derive_groups
-            # needs it.
-            "user_group_map $write", "group_group_map READ", "flagtypes READ",
+            "user_group_map READ", "group_group_map READ", "flagtypes READ",
             "flaginclusions AS i READ", "flagexclusions AS e READ",
             "keyworddefs READ", "groups READ", "attachments READ",
             "group_control_map AS oldcontrolmap READ",
@@ -1319,8 +1397,8 @@ foreach my $id (@idlist) {
     }   
     if (defined $cgi->param('delta_ts') && $cgi->param('delta_ts') ne $delta_ts)
     {
-        ($vars->{'operations'}) = GetBugActivity($cgi->param('id'),
-                                                 $cgi->param('delta_ts'));
+        ($vars->{'operations'}) =
+            Bugzilla::Bug::GetBugActivity($id, $cgi->param('delta_ts'));
 
         $vars->{'start_at'} = $cgi->param('longdesclength');
 
@@ -1341,8 +1419,8 @@ foreach my $id (@idlist) {
     }
 
     # Gather the dependency list, and make sure there are no circular refs
-    my %deps = Bugzilla::Bug::ValidateDependencies($cgi->param('dependson'),
-                                                   $cgi->param('blocked'),
+    my %deps = Bugzilla::Bug::ValidateDependencies(scalar($cgi->param('dependson')),
+                                                   scalar($cgi->param('blocked')),
                                                    $id);
 
     #
@@ -1366,8 +1444,8 @@ foreach my $id (@idlist) {
     }
 
     if ($cgi->param('comment') || $work_time) {
-        AppendComment($id, $whoid, $cgi->param('comment'),
-                      $cgi->param('commentprivacy'), $timestamp, $work_time);
+        AppendComment($id, $whoid, scalar($cgi->param('comment')),
+                      scalar($cgi->param('commentprivacy')), $timestamp, $work_time);
         $bug_changed = 1;
     }
 
@@ -1589,7 +1667,7 @@ foreach my $id (@idlist) {
         # - Is the bug in this group?
         SendSQL("SELECT DISTINCT groups.id, isactive, " .
                 "oldcontrolmap.membercontrol, newcontrolmap.membercontrol, " .
-                "user_group_map.user_id IS NOT NULL, " .
+                "CASE WHEN groups.id IN ($grouplist) THEN 1 ELSE 0 END, " .
                 "bug_group_map.group_id IS NOT NULL " .
                 "FROM groups " .
                 "LEFT JOIN group_control_map AS oldcontrolmap " .
@@ -1598,10 +1676,6 @@ foreach my $id (@idlist) {
                 " LEFT JOIN group_control_map AS newcontrolmap " .
                 "ON newcontrolmap.group_id = groups.id " .
                 "AND newcontrolmap.product_id = $newproduct_id " .
-                "LEFT JOIN user_group_map " .
-                "ON user_group_map.group_id = groups.id " .
-                "AND user_group_map.user_id = $whoid " .
-                "AND user_group_map.isbless = 0 " .
                 "LEFT JOIN bug_group_map " .
                 "ON bug_group_map.group_id = groups.id " .
                 "AND bug_group_map.bug_id = $id "
@@ -1766,8 +1840,7 @@ foreach my $id (@idlist) {
         }
     }
     # Set and update flags.
-    my $target = Bugzilla::Flag::GetTarget($id);
-    Bugzilla::Flag::process($target, $timestamp, $cgi);
+    Bugzilla::Flag::process($id, undef, $timestamp, $cgi);
 
     if ($bug_changed) {
         SendSQL("UPDATE bugs SET delta_ts = $sql_timestamp WHERE bug_id = $id");
@@ -1800,7 +1873,7 @@ foreach my $id (@idlist) {
                       " has been marked as a duplicate of this bug. ***",
                       0, $timestamp);
 
-        CheckFormFieldDefined($cgi,'comment');
+        check_form_field_defined($cgi,'comment');
         SendSQL("INSERT INTO duplicates VALUES ($duplicate, " .
                 $cgi->param('id') . ")");
     }
@@ -1851,28 +1924,54 @@ foreach my $id (@idlist) {
     }
 }
 
-# now show the next bug
-if ($next_bug) {
-    if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) {
-        my $bug = new Bugzilla::Bug($next_bug, $whoid);
-        ThrowCodeError("bug_error", { bug => $bug }) if $bug->error;
+# Determine if Patch Viewer is installed, for Diff link
+# (NB: Duplicate code with show_bug.cgi.)
+eval {
+    require PatchReader;
+    $vars->{'patchviewerinstalled'} = 1;
+};
+
+if (defined $cgi->param('id')) {
+    $action = Bugzilla->user->settings->{'post_bug_submit_action'}->{'value'};
+} else {
+    # param('id') is not defined when changing multiple bugs
+    $action = 'nothing';
+}
+
+if ($action eq 'next_bug') {
+    my $next_bug;
+    my $cur = lsearch(\@bug_list, $cgi->param("id"));
+    if ($cur >= 0 && $cur < $#bug_list) {
+        $next_bug = $bug_list[$cur + 1];
+    }
+    if ($next_bug) {
+        if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) {
+            my $bug = new Bugzilla::Bug($next_bug, $whoid);
+            ThrowCodeError("bug_error", { bug => $bug }) if $bug->error;
+
+            $vars->{'bugs'} = [$bug];
+            $vars->{'nextbug'} = $bug->bug_id;
 
-        # next.html.tmpl includes edit.html.tmpl, and therefore we
-        # need $bug defined in $vars.
-        $vars->{'bug'} = $bug;
+            $template->process("bug/show.html.tmpl", $vars)
+              || ThrowTemplateError($template->error());
+
+            exit;
+        }
+    }
+} elsif ($action eq 'same_bug') {
+    if (Bugzilla->user->can_see_bug($cgi->param('id'))) {
+        my $bug = new Bugzilla::Bug($cgi->param('id'), $whoid);
+        ThrowCodeError("bug_error", { bug => $bug }) if $bug->error;
 
-        # And we need to determine if Patch Viewer is installed, for
-        # Diff link (NB: Duplicate code with show_bug.cgi.)
-        eval {
-            require PatchReader;
-            $vars->{'patchviewerinstalled'} = 1;
-        };
+        $vars->{'bugs'} = [$bug];
 
-        $template->process("bug/process/next.html.tmpl", $vars)
+        $template->process("bug/show.html.tmpl", $vars)
           || ThrowTemplateError($template->error());
 
         exit;
     }
+} elsif ($action ne 'nothing') {
+    ThrowCodeError("invalid_post_bug_submit_action");
 }
 
 # End the response page.
diff --git a/productmenu.js b/productmenu.js
index e633ab3279d844c62fac8428a9f126f27500a840..90bb18195df15b8e9aec030c5be62dca853934a9 100644
--- a/productmenu.js
+++ b/productmenu.js
@@ -181,6 +181,12 @@ function selectProduct( f , productfield, componentfield, blank ) {
         return;
     }
 
+    // Do nothing if no products are defined (this avoids the
+    // "a has no properties" error from merge_arrays function)
+    if (f[productfield].length == blank ? 1 : 0) {
+        return;
+    }
+
     // if this is the first load and nothing is selected, no need to
     // merge and sort all components; perl gives it to us sorted.
 
@@ -219,7 +225,8 @@ function selectProduct( f , productfield, componentfield, blank ) {
         for ( var i = blank ? 1 : 0 ; i < f[productfield].length ; i++ ) {
             sel[sel.length] = f[productfield].options[i].value;
         }
-        single = 0;
+        // If there is only one product, then only one product can be selected
+        single = ( sel.length == 1 );
     } else {
 
         for ( i = blank ? 1 : 0 ; i < f[productfield].length ; i++ ) {
diff --git a/query.cgi b/query.cgi
index f05a8b567eedd181bd53b1778b8df004b38f6641..4a414d46c6234a151a2d6b1de6a8d1bbe40c8d54 100755
--- a/query.cgi
+++ b/query.cgi
@@ -28,14 +28,14 @@
 use strict;
 use lib ".";
 
-require "CGI.pl";
+require "globals.pl";
 
 use Bugzilla::Constants;
 use Bugzilla::Search;
 use Bugzilla::User;
+use Bugzilla::Util;
 
 use vars qw(
-    @CheckOptionValues
     @legal_resolution
     @legal_bug_status
     @legal_components
@@ -56,6 +56,7 @@ use vars qw(
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
+my $buffer = $cgi->query_string();
 
 if ($cgi->param("GoAheadAndLogIn")) {
     # We got here from a login page, probably from relogin.cgi.  We better
@@ -65,7 +66,8 @@ if ($cgi->param("GoAheadAndLogIn")) {
     Bugzilla->login();
 }
 
-my $userid = Bugzilla->user->id;
+my $user = Bugzilla->user;
+my $userid = $user->id;
 
 # Backwards compatibility hack -- if there are any of the old QUERY_*
 # cookies around, and we are logged in, then move them into the database
@@ -111,7 +113,7 @@ if ($cgi->param('nukedefaultquery')) {
                  " WHERE userid = ? AND name = ?", 
                  undef, ($userid, DEFAULT_QUERY_NAME));
     }
-    $::buffer = "";
+    $buffer = "";
 }
 
 my $userdefaultquery;
@@ -165,7 +167,7 @@ sub PrefillForm {
         my $name = $el[0];
         my $value;
         if ($#el > 0) {
-            $value = url_decode($el[1]);
+            $value = Bugzilla::Util::url_decode($el[1]);
         } else {
             $value = "";
         }
@@ -199,7 +201,7 @@ sub PrefillForm {
 }
 
 
-if (!PrefillForm($::buffer)) {
+if (!PrefillForm($buffer)) {
     # Ah-hah, there was no form stuff specified.  Do it again with the
     # default query.
     if ($userdefaultquery) {
@@ -218,23 +220,26 @@ GetVersionTable();
 # if using groups for entry, then we don't want people to see products they 
 # don't have access to. Remove them from the list.
 
-my @products = ();
+my @selectable_product_objects = @{$user->get_selectable_products};
+
 my %component_set;
 my %version_set;
 my %milestone_set;
-foreach my $p (GetSelectableProducts()) {
+# extract product names
+my @products = map { $_->name } @selectable_product_objects;
+
+foreach my $prod_name (@products) {
     # We build up boolean hashes in the "-set" hashes for each of these things 
     # before making a list because there may be duplicates names across products.
-    push @products, $p;
-    if ($::components{$p}) {
-        foreach my $c (@{$::components{$p}}) {
+    if ($::components{$prod_name}) {
+        foreach my $c (@{$::components{$prod_name}}) {
             $component_set{$c} = 1;
         }
     }
-    foreach my $v (@{$::versions{$p}}) {
+    foreach my $v (@{$::versions{$prod_name}}) {
         $version_set{$v} = 1;
     }
-    foreach my $m (@{$::target_milestone{$p}}) {
+    foreach my $m (@{$::target_milestone{$prod_name}}) {
         $milestone_set{$m} = 1;
     }
 }
@@ -295,11 +300,16 @@ $vars->{'product'} = \@products;
 if (Param('useclassification')) {
     my @classifications = ();
 
-    foreach my $c (GetSelectableClassifications()) {
+    my $class = $user->get_selectable_classifications;
+    foreach my $c (@$class) {
+        # Extract the name of products being in this classification.
+        my @prod_in_class
+            = grep { $_->classification_id == $c->id } @selectable_product_objects;
+        @prod_in_class = map { $_->name } @prod_in_class;
         # Create hash to hold attributes for each classification.
         my %classification = (
-            'name'       => $c,
-            'products'   => [ GetSelectableProducts(0,$c) ]
+            'name'       => $c->name,
+            'products'   => \@prod_in_class
         );
         # Assign hash back to classification array.
         push @classifications, \%classification;
@@ -453,9 +463,9 @@ if (defined($vars->{'format'}) && IsValidQueryType($vars->{'format'})) {
 # If we submit back to ourselves (for e.g. boolean charts), we need to
 # preserve format information; hence query_format taking priority over
 # format.
-my $format = GetFormat("search/search", 
-                       $vars->{'query_format'} || $vars->{'format'}, 
-                       scalar $cgi->param('ctype'));
+my $format = $template->get_format("search/search", 
+                                   $vars->{'query_format'} || $vars->{'format'}, 
+                                   scalar $cgi->param('ctype'));
 
 print $cgi->header($format->{'ctype'});
 
diff --git a/quicksearch.html b/quicksearch.html
deleted file mode 100644
index 1b1ecb1a67c4a90a706500c503dd0489b084df0d..0000000000000000000000000000000000000000
--- a/quicksearch.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-  <title>Bugzilla QuickSearch</title>
-</head>
-
-<body bgcolor="#ffffff">
-
-<p>
-<small>If you are already familiar with the original 
-<a href="query.cgi">Bugzilla Query Form</a>, 
-you may prefer <a href="quicksearchhack.html">this form</a>.
-</small>
-</p>
-
-<script src="localconfig.js" type="text/javascript"></script>
-<script src="quicksearch.js" type="text/javascript"></script>
-
-<h1>Bugzilla QuickSearch</h1>
-
-<p>
-Type in one or more words (or word fragments) to search for:
-</p>
-
-<form name="f" action="show_bug.cgi" method="get"
-      onsubmit="QuickSearch(f.id.value); return false;">
-  <table>
-    <tr>
-      <td><input type="text" size="40" name="id"></td>
-      <td align="left"><input type="submit" value="Search"></td>
-      <!-- <td><a href="javascript:QuickSearch_Help();">[Help]</a></td> -->
-    </tr>
-  </table>
-</form>
-
-<script type="text/javascript">
-<!--
-document.forms['f'].id.focus();
-//-->
-</script>
-
-<h2>Getting Started</h2>
-
-<ul>
-<li> This is <b>case-insensitive</b> search.
-     <ul>
-     <li> &nbsp;<tt>table</tt>&nbsp;, &nbsp;<tt>Table</tt>&nbsp; 
-     and &nbsp;<tt>TABLE</tt>&nbsp; are all the same.</li>
-     </ul>
-</li>
-<li> This is <b>all words as substrings</b> search.<br>
-     Therefore you should <b>use stems</b> to get better results: 
-     <ul> 
-     <li> Use <tt>localiz</tt> instead of <tt>localize</tt> or 
-     <tt>localization</tt>.</li>
-     <li> Use <tt>bookmark</tt> instead of <tt>bookmarks</tt> or 
-     <tt>bookmarking</tt>.</li>
-     </ul>
-</li>
-</ul>
-
-<h2><a name="features">Features</a></h2>
-
-<ul>
-<li> Boolean operations: ``<tt>-foo</tt>''(NOT), ``<tt>foo bar</tt>''(AND), 
-     ``<tt>foo|bar</tt>''(OR).
-     <ul>
-     <li> <b>NOT</b>: Use &nbsp;<tt><b>-</b><i>foo</i></tt>&nbsp; to exclude bugs 
-          with &nbsp;<tt><i>foo</i></tt>&nbsp; in the summary.</li>
-     <li> <b>AND</b>: Space-separated words are treated as a conjunction.</li>
-     <li> <b>OR</b>: Within a word, "|"-separated parts denote alternatives. </li>
-     <li> Besides "|", a comma can be used to separate alternatives.</li>
-     <li> OR has higher precedence than AND; AND is the top level operation</li>
-     </ul>
-     <i>Example:</i> &nbsp;<tt>url,location bar,field -focus</tt>&nbsp; 
-     means
-     (<tt>url</tt> OR <tt>location</tt>) AND (<tt>bar</tt> OR <tt>field</tt>) AND (NOT <tt>focus</tt>)
-<p>
-</li>
-<li>Use &nbsp;<tt>+foo</tt>&nbsp; to search for bugs where the <b>summary</b> contains &nbsp;<tt>foo</tt>&nbsp; as a <b>substring</b>.<br>
-     Use &nbsp;<tt>#foo</tt>&nbsp; to search for bugs where the <b>summary</b> contains the <b>word</b> &nbsp;<tt>foo</tt>&nbsp; 
-     <ul>
-     <li> &nbsp;<tt>+brow</tt>&nbsp; does not find all bugs in the &nbsp;<tt>Browser</tt>&nbsp; product</li>
-     <li> &nbsp;<tt>#title</tt>&nbsp; does not find bugs bugs with &nbsp;<tt>titlebar</tt>&nbsp; or &nbsp;<tt>titled</tt>&nbsp;</li>
-     </ul>
-     Phrases with special chars (space, comma, +, -, #, ...) can be <b>quoted</b>:
-     <ul>
-     <li> &nbsp;<tt>"lock icon"</tt>&nbsp;</li>
-     </ul>
-<p>
-</li>
-<li> <b>Open vs. Resolved Bugs</b>:<br>
-     By default, only open (i.e. unresolved) bugs are shown.
-     Use &nbsp;<tt>+DUP</tt>&nbsp; as first word in your query 
-     to include duplicate bugs in your search, 
-     &nbsp;<tt>FIXED</tt>&nbsp; to search for fixed bugs only,
-     or &nbsp;<tt>ALL</tt>&nbsp; to search all bugs, 
-     regardless of status or resolution. Searching for duplicates is
-     recommended if you can't find an open bug directly.
-     <ul>
-     <li> &nbsp;<tt>+DUP,FIXED table border</tt>&nbsp;</li>
-     <li> &nbsp;<tt>ALL mouse wheel</tt>&nbsp;</li>
-     </ul>
-<p></li>
-<li> <b>Focus the Search with Products &amp; Components</b>:<br>
-     To search for bugs in product "Foo Bar" only, add 
-     &nbsp;<tt>:foo</tt>&nbsp; or &nbsp;<tt>:bar</tt>&nbsp; or both
-     to your query.
-     You can do this with any substring of a 
-     <a href="describecomponents.cgi">product or component</a> 
-     to focus the search.
-</li>
-</ul>
-
-<h2>More Tips</h2>
-
-<ul>
-<li> You can also use this tool to <b>lookup</b> a bug by its number.
-     <ul>
-     <li> &nbsp;<tt>12345</tt>&nbsp;</li>
-     </ul>
-</li>
-<li> A comma-separated list of bug numbers gives you a list of these bugs.
-     <ul>
-     <li> &nbsp;<tt>12345,23456,34567</tt>&nbsp;</li>
-     </ul>
-</li>
-</ul>
-
-<p>
-By default, the following fields are searched: Summary, Keywords, Product, 
-Component, Status Whiteboard. If a word looks like a part of a URL, that field
-is included in the search, too.
-</p>
-<!--
-<small>For further details, see 
-<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=61561">Bug 61561</a> and 
-<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=69793">Bug 69793</a>.
-</small>
-  -->
-<hr>
-
-<p>
-Use the powerful 
-<a href="query.cgi">Bugzilla Query Form</a>
-for advanced queries.
-</p>
-
-</body>
-</html>
diff --git a/quicksearch.js b/quicksearch.js
deleted file mode 100644
index 29ab6eb6b365b3a20764258512ce41a2dbe50a31..0000000000000000000000000000000000000000
--- a/quicksearch.js
+++ /dev/null
@@ -1,740 +0,0 @@
-//
-// This is the main JS file for QuickSearch.
-//
-// Derived from:
-//
-//   * C. Begle's SimpleSearch tool:
-//     http://www.mozilla.org/quality/help/simplesearch.html
-//     http://www.mozilla.org/quality/help/bugreport.js 
-//
-//   * Jesse Ruderman's bugzilla search page:
-//     http://www.cs.hmc.edu/~jruderma/s/bugz.html
-//
-// Created by
-//     Andreas Franke <afranke@mathweb.org>
-//
-// Contributors:
-//     Stephen Lee <slee@uk.bnsmc.com>
-
-
-// Use no_result variable to avoid problems with "undefined" on some browsers
-
-var no_result="---";
-
-// do_unshift(l, s) is equivalent to l.unshift(s), but some browsers do not
-// support the built-in function.
-
-function do_unshift(l, s) {
-  l.length = l.length + 1;
-  for (var i=l.length-1; i>0; i--) {
-    l[i] = l[i-1];
-  }
-  l[0] = s;
-  return l.length;
-}
-
-// do_shift(l) is equivalent to l.shift(s), but some browsers do not
-// support the built-in function.
-
-function do_shift(l) {
-  var l0=l[0];
-  for (var i=0; i<l.length-1; i++) {
-    l[i] = l[i+1];
-  }
-  l.length = l.length - 1;
-  return l0;
-}
-
-function go_to (url) {
-    // XXX specifying "sidebar" here indicates you want to use a
-    // function to do the actual loading instead of using the specified
-    // url directly. bug 236025 covers clarifying this. Pages that specify
-    // sidebar=1 *must* specify a load_absolute_url function meanwhile.
-    if ( typeof sidebar != "undefined" && sidebar == 1 ) {
-        load_absolute_url(url);
-    } else {
-        document.location.href = url;
-    }
-}
-
-function map(l, f) {
-    var l1 = new Array();
-    for (var i=0; i<l.length; i++) {
-        l1[i] = f(l[i]);
-    }
-    return l1;
-}
-
-function isPrefix(s1, s2) {
-    return (s1.length <= s2.length) &&
-           (s1 == s2.substring(0,s1.length))
-}
-
-function member(s, l) {
-    for (var i=0; i<l.length; i++) {
-        if (l[i] == s) return true;
-    }
-    return false;
-}
-
-function add(s, l) {
-    if (! member(s, l)) {
-        do_unshift(l,s);
-    }
-}
-
-function addAll(l1, l2) {
-    for (var i=0; i<l1.length; i++) {
-        add(l1[i],l2);
-    }        
-}
-
-function isSubset (l1, l2) {
-    return (l1.length == 0)
-    || (member(l1[0],l2) && subset(l1.slice(1),l2));
-}
-
-// fields
-
-var f1 = new Array();
-var f2 = new Array();
-
-function add_mapping(from,to) {
-    f1[f1.length] = from;
-    f2[f2.length] = to;
-}
-
-// Status, Resolution, Platform, OS, Priority, Severity
-add_mapping("status",             "bug_status");
-add_mapping("resolution",         "resolution");  // no change
-add_mapping("platform",           "rep_platform");
-add_mapping("os",                 "op_sys");
-add_mapping("opsys",              "op_sys");
-add_mapping("priority",           "priority");    // no change
-add_mapping("pri",                "priority");
-add_mapping("severity",           "bug_severity");
-add_mapping("sev",                "bug_severity");
-// People: AssignedTo, Reporter, QA Contact, CC, Added comment (?)
-add_mapping("owner",              "assigned_to");
-add_mapping("assignee",           "assigned_to");
-add_mapping("assignedto",         "assigned_to");
-add_mapping("reporter",           "reporter");    // no change
-add_mapping("rep",                "reporter");
-add_mapping("qa",                 "qa_contact"); 
-add_mapping("qacontact",          "qa_contact");
-add_mapping("cc",                 "cc");          // no change
-// Product, Version, Component, Target Milestone
-add_mapping("product",            "product");     // no change
-add_mapping("prod",               "product");
-add_mapping("version",            "version");     // no change
-add_mapping("ver",                "version");
-add_mapping("component",          "component");   // no change
-add_mapping("comp",               "component");
-add_mapping("milestone",          "target_milestone");
-add_mapping("target",             "target_milestone");
-add_mapping("targetmilestone",    "target_milestone");
-// Summary, Description, URL, Status whiteboard, Keywords
-add_mapping("summary",            "short_desc");
-add_mapping("shortdesc",          "short_desc");
-add_mapping("desc",               "longdesc");
-add_mapping("description",        "longdesc");
-//add_mapping("comment",          "longdesc");    // ???
-          // reserve "comment" for "added comment" email search?
-add_mapping("longdesc",           "longdesc");
-add_mapping("url",                "bug_file_loc");
-add_mapping("whiteboard",         "status_whiteboard");
-add_mapping("statuswhiteboard",   "status_whiteboard");
-add_mapping("sw",                 "status_whiteboard");
-add_mapping("keywords",           "keywords");    // no change
-add_mapping("kw",                 "keywords");
-// Attachments
-add_mapping("attachment",         "attachments.description");
-add_mapping("attachmentdesc",     "attachments.description");
-add_mapping("attachdesc",         "attachments.description");
-add_mapping("attachmentdata",     "attachments.thedata");
-add_mapping("attachdata",         "attachments.thedata");
-add_mapping("attachmentmimetype", "attachments.mimetype");
-add_mapping("attachmimetype",     "attachments.mimetype");
-
-// disabled because of bug 30823:
-// "BugsThisDependsOn"       --> "dependson"
-// "OtherBugsDependingOnThis"--> "blocked"
-//add_mapping("dependson",        "dependson"); 
-//add_mapping("blocked",          "blocked");
-
-// Substring search doesn't make much sense for the following fields: 
-// "Attachment is patch"    --> "attachments.ispatch"
-// "Last changed date"      --> "delta_ts"
-// "Days since bug changed" --> "(to_days(now()) - to_days(bugs.delta_ts))"
-//"groupset"
-//"everconfirmed"
-//"bug","bugid","bugno"     --> "bug_id"
-// "votes"                  --> "votes"
-//     "votes>5", "votes>=5", "votes=>5" works now, see below
-//     "votes:5" is interpreted as "votes>=5"
-
-function findIndex(array,value) {
-    for (var i=0; i<array.length; i++)
-        if (array[i] == value) return i;
-    return -1;
-}
-
-function mapField(fieldname) {
-    var i = findIndex(f1,fieldname);
-    if (i >= 0) return f2[i];
-    return no_result;
-} 
-
-// `keywords' is defined externally
- 
-function is_keyword(s) {
-    return member(s, keywords);
-}
-
-// `platforms' is defined externally
-
-function is_platform(str) {
-    return member (str.toLowerCase(),platforms);
-}
-
-// `severities' is defined externally
-
-function is_severity(str) {
-    return member(str.toLowerCase(),severities);
-}
-
-// `product_exceptions' is defined externally
-
-function match_product(str) {
-    var s = str.toLowerCase();
-    return (s.length > 2) && (! member(s,product_exceptions));
-}
-
-// `component_exceptions are defined externally
-
-function match_component(str) {
-    var s = str.toLowerCase();
-    return (s.length > 2) && (! member(s,component_exceptions));
-}
-
-var status_and_resolution = ""; // for pretty debug output only; these vars
-var charts = "";                // always hold the data from the last query
-
-// derived from http://www.mozilla.org/quality/help/bugreport.js
-
-function make_chart(expr, field, type, value) {
-    charts += "<tr>" +
-              "<td><tt>" + expr + "</tt></td>" + 
-              "<td><tt>" + field + "</tt></td>" + 
-              "<td><tt>" + type + "</tt></td>" + 
-              "<td><tt>" + value + "</tt></td>" +
-              "</tr>";
-    return "&field" + expr + "=" + field +
-           "&type"  + expr + "=" + type  +
-           "&value" + expr + "=" + escape(value).replace(/[+]/g,"%2B");
-}
-
-// returns true if at least one of comparelist had the prefix, false otherwise
-function addPrefixMatches(prefix, comparelist, resultlist) {
-    var foundMatch = false;
-    for (var i=0; i<comparelist.length; i++) {
-        if (isPrefix(prefix,comparelist[i])) {
-            foundMatch = true;
-            add(comparelist[i],resultlist);
-        }
-    }
-    return foundMatch;
-}
-
-function prefixesNotFoundError(prefixes,statusValues,resolutionValues) {
-    var txt;
-    if (prefixes.length == 1) {
-        txt = "is not a prefix ";
-    } else {
-        txt = "are not prefixes ";
-    }
-    alert(prefixes + "\n" + txt + 
-          "of one of these status or resolution values:\n" +
-          statusValues + "\n" + resolutionValues + "\n");
-}
-
-function make_query_URL(url, input, searchLong) {
-
-    status_and_resolution = "";
-    charts = "";
-
-    // declare all variables used in this function
-    
-    var searchURL = url;  // bugzilla + "buglist.cgi" (or "query.cgi")
-    var abort = false;    // global flag, checked upon return
-   
-    var i,j,k,l;          // index counters used in 'for' loops
-    var parts,input2;     // escape "quoted" parts of input
-
-    var word;                  // array of words 
-                               //  (space-separated parts of input2)
-    var alternative;           // array of parts of an element of 'word'
-                               //  (separated by '|', sometimes by comma)
-    var comma_separated_words; // array of parts of an element of 'alternative'
-    var w;                     // current element of one of these arrays:
-                               //  word, alternative, comma_separated_words
-    
-    var w0;               // first element of 'word'
-    var prefixes;         // comma-separated parts of w0 
-                          //  (prefixes of status/resolution values)
-
-    var expr;             // used for 'priority' support
-    var n,separator;      // used for 'votes' support
- 
-    var colon_separated_parts, fields,values,field;
-                          // used for generic fields:values notation
-
-    var chart,and,or;     // counters used in add_chart
-    var negation;         // boolean flag used in add_chart
-
-    // `statuses_open' and `statuses_resolved' are defined externally
-    var statusOpen     = statuses_open;
-    var statusResolved = statuses_resolved;
-    var statusAll      = statusOpen.concat(statusResolved);
-
-    // `resolutions' is defined externally
-    var bug_status = statusOpen.slice().reverse(); //reverse is just cosmetic
-    var resolution = new Array();
-    
-    // escape everything between quotes: "foo bar" --> "foo%20bar"
-    parts = input.split('"');
-    if ((parts.length % 2) != 1) {
-        alert('Unterminated quote');
-        abort = true;
-        return no_result;      
-    }
-    for (i=1; i<parts.length; i+=2) {
-        parts[i] = escape(parts[i]);
-    }
-    input2 = parts.join('"');
-
-    // abort if there are still brackets
-    if (input2.match(/[(]|[\)]/)) {
-        alert('Brackets (...) are not supported.\n' + 
-              'Use quotes "..." for values that contain special characters.');
-        abort = true;
-        return no_result;
-    }
-
-    // translate " AND "," OR "," NOT " to space,comma,dash
-    input2 = input2.replace(/[\s]+AND[\s]+/g," ");
-    input2 = input2.replace(/[\s]+OR[\s]+/g,"|");
-    input2 = input2.replace(/[\s]+NOT[\s]+/g," -");
-
-    // now split into words at space positions
-    word = input2.split(/[\s]+/);
-
-    // determine bug_status and resolution 
-    // the first word may contain relevant info
-
-    // This function matches the given prefixes against the given statuses and
-    // resolutions. Matched statuses are added to bug_status, matched 
-    // resolutions are added to resolution. Returns true if and only if
-    // some matches were found for at least one of the given prefixes.
-    function matchPrefixes(prefixes,statuses,resolutions) {
-        var failedPrefixes = new Array();
-        var foundMatch = false;
-        for (var j=0; j<prefixes.length; j++) {
-            var ok1 = addPrefixMatches(prefixes[j],statuses,bug_status);
-            var ok2 = addPrefixMatches(prefixes[j],resolutions,resolution);
-            if ((! ok1) && (! ok2)) {
-                add(prefixes[j],failedPrefixes);
-            } else {
-                foundMatch = true;
-            }
-        }
-        //report an error if some (but not all) prefixes didn't match anything
-        if (foundMatch && (failedPrefixes.length > 0)) {
-            prefixesNotFoundError(failedPrefixes,statuses,resolutions);
-            abort = true;
-        }
-        return foundMatch;
-    }
-    
-    if (word[0] == "ALL") {
-        // special case: search for bugs regardless of status
-        addAll(statusResolved,bug_status);
-        do_shift(word);
-    } else if (word[0] == "OPEN") {
-        // special case: search for open bugs only
-        do_shift(word);
-    } else if (word[0].match("^[+][A-Z]+(,[A-Z]+)*$")) {
-        // e.g. +DUP,FIX 
-        w0 = do_shift(word);
-        prefixes = w0.substring(1).split(",");
-        if (! matchPrefixes(prefixes,statusResolved,resolutions)) {
-            do_unshift(word,w0);
-        }
-    } else if (word[0].match("^[A-Z]+(,[A-Z]+)*$")) {
-        // e.g. NEW,ASSI,REOP,FIX
-        bug_status = new Array(); // reset
-        w0 = do_shift(word);
-        prefixes = w0.split(",");
-        if (! matchPrefixes(prefixes,statusAll,resolutions)) {
-            do_unshift(word,w0);
-            bug_status = statusOpen.reverse(); //reset to default bug_status
-        }
-    } else {
-        // default case: 
-        // search for unresolved bugs only
-        // uncomment this to include duplicate bugs in the search
-        // add("DUPLICATE",resolution);
-    }
-    if (resolution.length > 0) {
-        resolution = resolution.reverse();
-        do_unshift(resolution,"---");
-        addAll(statusResolved,bug_status);
-    }
-    bug_status = bug_status.reverse();
-    bug_status = map(bug_status,escape);
-    searchURL += "?bug_status=" +  bug_status.join("&bug_status=");
-    status_and_resolution += 'Status: <tt>'+bug_status+'</tt>';
-
-    if (resolution.length > 0) {
-        resolution = map(resolution,escape);
-        searchURL += "&resolution=" + resolution.join("&resolution=");
-        status_and_resolution += '<br>'+'Resolution: <tt>'+resolution+'</tt>';
-    }
-                              
-    // end of bug_status & resolution stuff
-
-    chart = 0;
-    and   = 0;
-    or    = 0;
-
-    negation = false;
-
-    function negate_comparison_type(type) {
-        switch(type) {
-            case "substring": return "notsubstring";
-            case "anywords":  return "nowords";
-            case "regexp":    return "notregexp";
-            default:
-                // e.g. "greaterthan" 
-                alert("Can't negate comparison type: `" + type + "'");
-                abort = true;
-                return "dummy";
-        }
-    }
-
-    function add_chart(field,type,value) {
-        // undo escaping for value: '"foo%20bar"' --> 'foo bar'
-        var parts = value.split('"');
-        if ((parts.length % 2) != 1) {
-            alert('Internal error: unescaping failure');
-            abort = true;
-        }
-        for (var i=1; i<parts.length; i+=2) {
-            parts[i] = unescape(parts[i]);
-        }
-        var value2 = parts.join('');
-
-        // negate type if negation is set
-        var type2 = type;
-        if (negation) {
-            type2 = negate_comparison_type(type2);
-        }
-        searchURL += make_chart(chart+"-"+and+"-"+or,field,type2,value2);
-        or++;
-        if (negation) {
-            and++;
-            or=0;
-        }
-    }
-
-    for (i=0; i<word.length; i++, chart++) {
-
-        w = word[i];
-        
-        negation = false;
-        if (w.charAt(0) == "-") {
-            negation = true;
-            w = w.substring(1);
-        }
-
-        switch (w.charAt(0)) {
-            case "+":
-                alternative = w.substring(1).split(/[|,]/);
-                for (j=0; j<alternative.length; j++)
-                    add_chart("short_desc","substring",alternative[j]);
-                break;
-            case "#":
-                alternative = w.substring(1).replace(/[|,]/g," ");
-                add_chart("short_desc","anywords",alternative);
-                if (searchLong)
-                    add_chart("longdesc","anywords",alternative);
-                break;
-            case ":":
-                alternative = w.substring(1).split(",");
-                for (j=0; j<alternative.length; j++) {
-                    add_chart("product","substring",alternative[j]);
-                    add_chart("component","substring",alternative[j]);
-                }
-                break;
-            case "@":
-                alternative = w.substring(1).split(",");
-                for (j=0; j<alternative.length; j++)
-                    add_chart("assigned_to","substring",alternative[j]);
-                break;
-            case "[":
-                add_chart("short_desc","substring",w);
-                add_chart("status_whiteboard","substring",w);
-                break;
-            case "!":
-                add_chart("keywords","anywords",w.substring(1));
-                break;
-            default:
-                alternative=w.split("|");
-                for (j=0; j<alternative.length; j++) {
-
-                    w=alternative[j];
-
-                    // votes:xx ("at least xx votes")
-                    if (w.match("^votes[:][0-9]+$")) {
-                        n = w.split(/[:]/)[1];
-                        add_chart("votes","greaterthan",String(n-1));
-                        continue;
-                    }
-                    // generic field1,field2,field3:value1,value2 notation
-                    if (w.match("^[^:]+[:][^:\/][^:]*$")) {
-                        colon_separated_parts = w.split(":");
-                        fields = colon_separated_parts[0].split(/[,]+/);
-                        values = colon_separated_parts[1].split(/[,]+/);
-                        for (k=0; k<fields.length; k++) {
-                            field = mapField(fields[k]);
-                            if (field == no_result) {
-                                alert("`"+fields[k]+"'"+
-                                      " is not a valid field name.");
-                                abort = true;
-                                return no_result;
-                            } else {
-                                 for (l=0; l<values.length; l++) {
-                                     add_chart(field,"substring",values[l]);
-                                 }
-                            }  
-                        }
-                        continue;
-                    }
-                    comma_separated_words=w.split(/[,]+/);
-                    for (k=0; k<comma_separated_words.length; k++) {
-                        w=comma_separated_words[k];
-
-                        // platform
-                        if (is_platform(w)) {
-                            add_chart("rep_platform","substring",w);
-                            continue;
-                        }
-                        // priority
-                        if (w.match("^[pP][1-5](,[pP]?[1-5])*$")) {
-                            expr = "["+w.replace(/[p,]/g,"")+"]";
-                            add_chart("priority","regexp",expr);
-                            continue;
-                        }
-                        if (w.match("^[pP][1-5]-[1-5]$")) {
-                            expr = "["+w.substring(1)+"]";
-                            add_chart("priority","regexp",expr);
-                            continue;
-                        }
-                        // severity
-                        if (is_severity(w)) {
-                            add_chart("bug_severity","substring",w);
-                            continue;
-                        }
-                        // votes>xx
-                        if (w.match("^votes>[0-9]+$")) {
-                            n = w.split(">")[1];
-                            add_chart("votes","greaterthan",n);
-                            continue;
-                        }
-                        // votes>=xx, votes=>xx
-                        if (w.match("^votes(>=|=>)[0-9]+$")) {
-                            separator = w.match("^votes(>=|=>)[0-9]+$")[1];
-                            n = w.split(separator)[1];
-                            add_chart("votes","greaterthan",String(n-1));
-                            continue;
-                        }
-                        // really default case
-                        if (match_product(w)) {
-                            add_chart("product","substring",w);
-                        }
-                        if (match_component(w)) {
-                            add_chart("component","substring",w);
-                        }
-                        if (is_keyword(w)) {
-                            add_chart("keywords","substring",w);
-                            if (w.length > 2) {
-                                add_chart("short_desc","substring",w);
-                                add_chart("status_whiteboard","substring",w);
-                            }
-                        } else {
-                            add_chart("short_desc","substring",w);
-                            add_chart("status_whiteboard","substring",w);
-                        }
-                        if (searchLong)
-                            add_chart("longdesc","substring",w);
-                 
-                        // URL field (for IP addrs, host.names, scheme://urls)
-                        if (w.match(/[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/)
-                           || w.match(/^[A-Za-z]+([.][A-Za-z]+)+/)
-                           || w.match(/[:][\/][\/]/)
-                           || w.match(/localhost/)
-                           || w.match(/mailto[:]?/)
-                           // || w.match(/[A-Za-z]+[:][0-9]+/) //host:port
-                           )
-                            add_chart("bug_file_loc","substring",w);
-                    }
-                }
-        }
-        and = 0;
-        or = 0;
-    }
-
-    //searchURL += "&cmdtype=doit";
-
-    if (abort == false) {
-        return searchURL;
-    } else {
-        return no_result;
-    }
-}
-
-function unique_id () {
-    return (new Date()).getTime();
-}
-
-function ShowURL(mode,input) {
-    var searchURL = make_query_URL(bugzilla+"buglist.cgi", input, false);
-    if (searchURL != no_result) {
-        var pieces = searchURL.replace(/[\?]/g,"\n?").replace(/[\&]/g,"\n&");
-        if (mode == "alert") {
-            alert(pieces);
-        } else {
-            var table = "<table border=1>" + 
-                          "<thead>" + 
-                            "<tr>" + 
-                              "<th>Chart-And-Or</th>" + 
-                              "<th>Field</th>" + 
-                              "<th>Type</th>" + 
-                              "<th>Value</th>" + 
-                            "</tr>" + 
-                          "</thead>" + 
-                          "<tbody>" + charts + "</tbody>" +
-                        "</table>";
-            var html = '<html>' + 
-                         '<head>' + 
-                           '<title>' + input + '</title>' +
-                         '</head>' +
-                         '<body>' + 
-                           '<a href="' + searchURL + '">' +
-                             'Submit Query' +
-                           '</a>' +
-                           '<p>' + status_and_resolution + 
-                           '<p>' + table + 
-                           '<pre>' +
-                             pieces.replace(/[\n]/g,"<br>") +
-                           '</pre>' +  
-                         '</body>' +
-                       '</html>';
-            var w = window.open("","preview_"+unique_id());
-            w.document.write(html);
-            w.document.close();
-        }
-    }
-}
-
-//
-// new interface: 
-// searchLong is a boolean now (not a checkbox/radiobutton)
-//
-function Search(url, input, searchLong) {
-    var inputstring = new String(input);
-    var word = inputstring.split(/[\s]+/);
-  
-    // Check for empty input
-    if ( word.length == 1 && word[0] == "" )
-        return;
-    
-    // Check for potential Bugzilla-busting intensive queries
-    if ((searchLong!=false) && word.length > 4) {  
-        var message = "Searching Descriptions for more than four words " +
-                      "will take a very long time indeed. Please choose " +
-                      "no more than four keywords for your query.";
-        alert(message);
-        return;
-    }
-    var searchURL = make_query_URL(url, inputstring, searchLong);
-    if (searchURL != no_result) {
-        go_to(searchURL);
-         //window.open(searchURL, "other" );
-    } else {
-        return;
-    }
-}
-
-//
-// original interface, untested
-//
-//function SearchForBugs (input, searchRadio) {
-//    if (searchRadio[0].checked) {
-//        return Search(bugzilla + "buglist.cgi", input, false);
-//    } else {
-//        return Search(bugzilla + "buglist.cgi", input, true);
-//    }
-//}
-
-// derived from http://www.cs.hmc.edu/~jruderma/s/bugz.html
-
-// QuickSearch combines lookup-by-bug-number and search
-// in a single textbox. 
-//
-// type nothing:
-//    --> go to bugzilla front page
-// type a number:
-//    --> go to that bug number
-// type several numbers, separated by commas:
-//    --> go to a buglist of just those bug numbers
-// type anything else:
-//    --> search summary, product, component, keywords, status whiteboard
-//        (and URL if it's an IP address, a host.name, or an absolute://URL)
-
-function QuickSearch (input)
-{
-    //remove leading and trailing whitespace
-    input = input.replace(/^[\s]+/,"").replace(/[\s]+$/,"");
-
-    if (input == "") 
-    {
-        //once this _is_ on http://bugzilla.mozilla.org, it should just return;
-        go_to(bugzilla);
-    } 
-    else if (input.match(/^[0-9, ]*$/)) 
-    {
-        if (input.indexOf(",") == -1) {
-            // only _one_ bug number --> show_bug
-            go_to(bugzilla+"show_bug.cgi?id="+escape(input));
-        } else {
-            // comma-separated bug numbers --> buglist
-            go_to(bugzilla+"buglist.cgi?bug_id="+escape(input)
-                  + "&bugidtype=include&order=bugs.bug_id");
-        }
-    }
-    else
-    {
-        Search(bugzilla+"buglist.cgi",input,false);
-    }
-    return;
-}
-
-function LoadQuery(input) {
-    //remove leading and trailing whitespace
-    input = input.replace(/^[\s]+/,"").replace(/[\s]+$/,"");
-
-    Search(bugzilla+"query.cgi",input,false);
-    return;
-}
-
diff --git a/quicksearchhack.html b/quicksearchhack.html
deleted file mode 100644
index d514082f839d2e420b65c840eca8e13e744a33fe..0000000000000000000000000000000000000000
--- a/quicksearchhack.html
+++ /dev/null
@@ -1,357 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-  <title>Bugzilla QuickSearch (for Hackers)</title>
-</head>
-
-<body bgcolor="#ffffff">
-
-<script src="localconfig.js" type="text/javascript"></script>
-<script src="quicksearch.js" type="text/javascript"></script>
-
-<h1>Bugzilla QuickSearch (for Hackers)</h1>
-
-<p>
-Type in one or more words (or word fragments) to search for:
-</p>
-
-<form name="f" action="show_bug.cgi" method="get"
-      onsubmit="QuickSearch(f.id.value); return false;">
-  <table>
-    <tr>
-      <td><input type="text" size="40" name="id"></td>
-      <td align="left"><input type="submit" name="run"  value="Search"></td>
-      <td align="left"><input type="button" name="load" value="Load Query"
-                      onclick="LoadQuery(f.id.value);">
-      </td>
-    </tr>
-  </table>
-</form>
-
-<script type="text/javascript">
-<!--
-document.forms['f'].id.focus();
-//-->
-</script>
-
-<p>
-This is a case-insensitive ``all words as substrings'' search;
-words are separated by spaces. 
-By default, the following fields are relevant: Summary, Keywords, 
-Product, Component, Status Whiteboard. If a word looks like a part of a
-URL, that field is included in the search, too.
-</p>
-<p>
-The generic format for a ``word'' is
-&nbsp;<tt>field1,...,fieldN:value1,...,valueM</tt>&nbsp;.
-A bug qualifies if at least one of the values occurs as a substring in 
-at least one of the fields. 
-For example, &nbsp;<tt>assignee,reporter,qa:ibm,sun</tt>&nbsp;
-will give you bugs where the assignee, reporter, or qa contact 
-has an email address that contains 
-&nbsp;<tt>ibm</tt>&nbsp; or &nbsp;<tt>sun</tt>&nbsp;.
-If only &nbsp;<tt>value1,...,valueM</tt>&nbsp; is given,
-the prefix (roughly) defaults to &nbsp;<tt>summary,keywords,product,component,statuswhiteboard:</tt>&nbsp; as noted above.
-You can use &nbsp;<tt>-<i>word</i></tt>&nbsp; to express the logical negation
-of &nbsp;<tt><i>word</i></tt>.&nbsp;
-</p>
-<p>
-Here is a complete listing of available fields (the Shortcut column is just 
-for access speed):
-</p>
-
-<table border="1">
-<thead>
-<tr>
-  <td><b>Searched by default</b></td>
-  <td><b>Shortcut</b></td>
-  <td><b>Field Name</b></td>
-  <td><b>Aliases</b></td>
-  <td><b>Description</b></td>
-</tr>
-</thead>
-
-<!-- Status, Resolution, Platform, OS, Priority, Severity -->
-
-<tr>
-  <td>&nbsp;</td>
-  <td rowspan="2"><tt>UNCO,NEW,...,CLOS,<br>FIX,DUP,...<i>(as first word)</i></tt></td>
-  <td><tt>status</tt></td>
-  <td>&nbsp;</td>
-  <td><a href="page.cgi?id=fields.html#status">Status</a> 
-      <i>("bug_status")</i>
-  </td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td><tt>resolution</tt></td>
-  <td>&nbsp;</td>
-  <td><a href="page.cgi?id=fields.html#resolution">Resolution</a></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td><i>as-is</i></td>
-  <td><tt>platform</tt></td>
-  <td>&nbsp;</td>
-  <td><a href="page.cgi?id=fields.html#rep_platform">Platform</a> <i>("rep_platform")</i></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>os</tt></td>
-  <td><tt>opsys</tt></td>
-  <td><a href="page.cgi?id=fields.html#op_sys">OS</a> <i>("op_sys")</i></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td><tt>p1,p2</tt> <i>or</i> <tt>p1-2</tt></td>
-  <td><tt>priority</tt></td>
-  <td><tt>pri</tt></td>
-  <td><a href="page.cgi?id=fields.html#priority">Priority</a></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td><tt>blo,cri,...,enh</tt></td>
-  <td><tt>severity</tt></td>
-  <td><tt>sev</tt></td>
-  <td><a href="page.cgi?id=fields.html#bug_severity">Severity</a> <i>("bug_severity")</i></td>
-</tr>
-
-<!-- People: AssignedTo, Reporter, QA Contact, CC, Added comment -->
-<!-- Added comment is missing!!!! -->
-
-<tr>
-  <td>&nbsp;</td>
-  <td><b>@</b><i>assignee</i></td>
-  <td><tt>assignedto</tt></td>
-  <td><tt>assignee, owner</tt></td>
-  <td><a href="page.cgi?id=fields.html#assigned_to">Assignee</a> <i>("assigned_to")</i></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>reporter</tt></td>
-  <td><tt>rep</tt></td>
-  <td>Reporter (email)</td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>qa</tt></td>
-  <td><tt>qacontact</tt></td>
-  <td>QA Contact (email) <i>("qa_contact")</i></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>cc</tt></td>
-  <td>&nbsp;</td>
-  <td>CC (email)</td>
-</tr>
-
-<!-- Product, Version, Component, Target Milestone -->
-
-<tr>
-  <td><i>yes</i></td>
-  <td rowspan="2"><b>:</b><i>area</i></td>
-  <td><tt>product</tt></td>
-  <td><tt>prod</tt></td>
-  <td>Product (enum)</td>
-</tr>
-<tr>
-  <td><i>yes</i></td>
-  <td><tt>component</tt></td>
-  <td><tt>comp</tt></td>
-  <td><a href="describecomponents.cgi">Component</a></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>version</tt></td>
-  <td><tt>ver</tt></td>
-  <td>Version (enum)</td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>milestone</tt></td>
-  <td><tt>target, targetmilestone</tt></td>
-  <td>Target Milestone <i>("target_milestone")</i></td>
-</tr>
-
-<!-- Summary, Description, URL, Status whiteboard, Keywords -->
-
-<tr>
-  <td><i>yes</i></td>
-  <td>&nbsp;</td>
-  <td><tt>summary</tt></td>
-  <td><tt>shortdesc</tt></td>
-  <td>Bug Summary (short text)<i>("short_desc")</i></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>description</tt></td>
-  <td><tt>desc, longdesc<!--, comment--></tt></td>
-  <!-- reserve "comment" for "added comment" email search?! -->
-  <td>Bug Description / Comments (long text)</td>
-</tr>
-<tr>
-  <td><i>depends</i></td>
-  <td>&nbsp;</td>
-  <td><tt>url</tt></td>
-  <td>&nbsp;</td>
-  <td>URL <i>("bug_file_loc")</i></td>
-</tr>
-<tr>
-  <td><i>yes</i></td>
-  <td>&nbsp;</td>
-  <td><tt>statuswhiteboard</tt></td>
-  <td><tt>sw, whiteboard</tt></td>
-  <td>Status Whiteboard <i>("status_whiteboard")</i></td>
-</tr>
-<tr>
-  <td><i>yes</i></td>
-  <td><b>!</b><i>keyword</i></td>
-  <td><tt>keywords</tt></td>
-  <td><tt>kw</tt></td>
-  <td><a href="describekeywords.cgi">Keywords</a></td>
-</tr>
-
-<!-- Attachments -->
-
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>attachmentdesc</tt></td>
-  <td><tt>attachdesc</tt></td>
-  <td>Attachment Description <i>("attachments.description")</i></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>attachmentdata</tt></td>
-  <td><tt>attachdata</tt></td>
-  <td>Attachment Data <i>("attachments.thedata")</i></td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td>&nbsp;</td>
-  <td><tt>attachmentmimetype</tt></td>
-  <td><tt>attachmimetype</tt></td>
-  <td>Attachment mime-type <i>("attachments.mimetype")</i></td>
-</tr>
-
-</table>
-
-<p>
-Examples for some useful abbreviations:
-</p>
-<table border="1">
-<thead>
-<tr>
-  <td><b>Syntax</b></td>
-  <td><b>Semantics and Examples</b></td>
-</tr>
-</thead>
-
-<!--
-<tr>
-  <td><i>STAT</i> <i>(as first word)</i></td>
-  <td><b>status,resolution:</b><i>STAT</i></td>
-</tr>
-<tr>
-  <td></td>
-  <td></td>
-</tr>
-<tr>
-  <td><tt>ALL</tt> <i>(as first word)</i></td>
-  <td><i>include all resolved bugs in your query</i></td>
-</tr>
-<tr>
-  <td><tt>+DUP,FIXED</tt> <i>(as first word)</i></td>
-  <td><i>include DUPLICATE and FIXED bugs in your search</i></td>
-</tr>
--->
-
-<tr>
-  <td><b>:</b><i>area</i></td>
-  <td><b>product,component:</b><i>area</i></td>
-</tr>
-<!--
-<tr>
-  <td><tt>:browser</tt></td>
-  <td><i>bugs in the Browser product</i></td>
-</tr>
- <td><tt>:mail</tt></td>
-  <td><i>bugs in the MailNews product</td>
-</tr>
-<tr>
-  <td><tt>:xbl</tt></td>
-  <td><i>bugs in the XBL component</i></td>
-</tr>
-  -->
-<tr>
-  <td><i>sev</i></td>
-  <td><b>severity:</b><i>sev</i></td>
-</tr>
-<tr>
-  <td><tt>blo,cri,maj</tt></td>
-  <td><i>severe bugs</i></td>
-</tr>
-<tr>
-  <td><tt>enh</tt></td>
-  <td><i>enhancement requests</i></td>
-</tr>
-<tr>
-  <td><b>p</b><i>level</i></td>
-  <td><b>priority:</b><i>level</i></td>
-</tr>
-<tr>
-  <td><tt>p1</tt></td>
-  <td><i>very high-priority bugs</i></td>
-</tr>
-<tr>
-  <td><tt>p1-2</tt></td>
-  <td><i>high-priority bugs</i></td>
-</tr>
-<tr>
-  <td><b>@</b><i>assignee</i></td>
-  <td><b>assignedto:</b><i>assignee</i></td>
-</tr>
-<!--
-<tr>
-  <td><tt>@nobody</tt></td>
-  <td><i>ownerless bugs</i></td>
-</tr>
-<tr>
-  <td><tt>@mozilla.org</tt></td>
-  <td><i>bugs assigned to mozilla.org members</i></td>
-</tr>
-  -->
-<tr>
-  <td><b>!</b><i>keyword</i></td>
-  <td><b>keywords:</b><i>keyword</i></td>
-</tr>
-<!--
-<tr>
-  <td><tt>!crash</tt></td>
-  <td><i>crasher bugs</i></td>
-</tr>
-<tr>
-  <td><tt>!helpwanted</tt></td>
-  <td><i>bugs waiting for your help</i></td>
-</tr>
-  -->
-</table>
-
-<p>
-More information can be found in the
-<a href="quicksearch.html#features">&quot;Features&quot;</a> section 
-on the <a href="quicksearch.html">introductory page</a>.
-</p>
-
-</body>
-</html>
-
diff --git a/quips.cgi b/quips.cgi
index d811ee5fe45d05ec8dad0c7c3b2e45fb761229d3..364f51448d8e59a0d81bb54053222cffac56aea4 100755
--- a/quips.cgi
+++ b/quips.cgi
@@ -25,15 +25,11 @@
 
 use strict;
 
-use vars qw(
-  $userid
-  $template
-  $vars
-);
+use vars qw($userid $template $vars);
 
 use lib qw(.);
 
-require "CGI.pl";
+require "globals.pl";
 
 use Bugzilla::Constants;
 
diff --git a/relogin.cgi b/relogin.cgi
index 7c1ffe6f8aeecf75d103dbd1976c03a6d8de896a..1d682965db0a613dedf97df167a43b84710d030c 100755
--- a/relogin.cgi
+++ b/relogin.cgi
@@ -23,12 +23,10 @@
 
 use strict;
 
-use vars qw($template $vars);
-
 use lib qw(.);
-
+use Bugzilla;
 use Bugzilla::Constants;
-require "CGI.pl";
+use Bugzilla::Error;
 
 # We don't want to remove a random logincookie from the db, so
 # call Bugzilla->login(). If we're logged in after this, then
@@ -37,9 +35,11 @@ Bugzilla->login(LOGIN_OPTIONAL);
 
 Bugzilla->logout();
 
+my $template = Bugzilla->template;
 my $cgi = Bugzilla->cgi;
 print $cgi->header();
 
+my $vars = {};
 $vars->{'message'} = "logged_out";
 $template->process("global/message.html.tmpl", $vars)
   || ThrowTemplateError($template->error());
diff --git a/report.cgi b/report.cgi
index 30c7cade8731519d20d03da5442e40ea650c4df7..f9a56588f5d930a5ded9a62c676259e4de3347ba 100755
--- a/report.cgi
+++ b/report.cgi
@@ -24,7 +24,7 @@
 use strict;
 use lib ".";
 
-require "CGI.pl";
+require "globals.pl";
 
 use vars qw($template $vars @legal_opsys @legal_platform @legal_severity);
 
@@ -32,6 +32,7 @@ use Bugzilla;
 use Bugzilla::Constants;
 
 my $cgi = Bugzilla->cgi;
+my $buffer = $cgi->query_string();
 
 # Go straight back to query.cgi if we are adding a boolean chart.
 if (grep(/^cmd-/, $cgi->param())) {
@@ -266,9 +267,9 @@ if ($action eq "wrap") {
     # We need to keep track of the defined restrictions on each of the 
     # axes, because buglistbase, below, throws them away. Without this, we
     # get buglistlinks wrong if there is a restriction on an axis field.
-    $vars->{'col_vals'} = join("&", $::buffer =~ /[&?]($col_field=[^&]+)/g);
-    $vars->{'row_vals'} = join("&", $::buffer =~ /[&?]($row_field=[^&]+)/g);
-    $vars->{'tbl_vals'} = join("&", $::buffer =~ /[&?]($tbl_field=[^&]+)/g);
+    $vars->{'col_vals'} = join("&", $buffer =~ /[&?]($col_field=[^&]+)/g);
+    $vars->{'row_vals'} = join("&", $buffer =~ /[&?]($row_field=[^&]+)/g);
+    $vars->{'tbl_vals'} = join("&", $buffer =~ /[&?]($tbl_field=[^&]+)/g);
     
     # We need a number of different variants of the base URL for different
     # URLs in the HTML.
@@ -292,7 +293,8 @@ else {
     ThrowUserError("unknown_action", {action => $cgi->param('action')});
 }
 
-my $format = GetFormat("reports/report", $formatparam, $cgi->param('ctype'));
+my $format = $template->get_format("reports/report", $formatparam,
+                                   scalar($cgi->param('ctype')));
 
 # If we get a template or CGI error, it comes out as HTML, which isn't valid
 # PNG data, and the browser just displays a "corrupt PNG" message. So, you can
diff --git a/reports.cgi b/reports.cgi
index deeffff584e0a1e6a2e53515160a9c73efc630a6..c060045eb0d5049587065af4171c4c6bed317374 100755
--- a/reports.cgi
+++ b/reports.cgi
@@ -39,8 +39,6 @@ use lib qw(.);
 
 use Bugzilla::Config qw(:DEFAULT $datadir);
 
-require "CGI.pl";
-
 require "globals.pl";
 use vars qw(@legal_product); # globals from er, globals.pl
 
@@ -56,23 +54,25 @@ use Bugzilla;
 
 # If we're using bug groups for products, we should apply those restrictions
 # to viewing reports, as well.  Time to check the login in that case.
-Bugzilla->login();
+my $user = Bugzilla->login();
 
 GetVersionTable();
 
 Bugzilla->switch_to_shadow_db();
 
 my $cgi = Bugzilla->cgi;
+my $template = Bugzilla->template;
 
 # We only want those products that the user has permissions for.
 my @myproducts;
 push( @myproducts, "-All-");
-push( @myproducts, GetSelectableProducts());
+# Extract product names from objects and add them to the list.
+push( @myproducts, map { $_->name } @{$user->get_selectable_products} );
 
 if (! defined $cgi->param('product')) {
 
     choose_product(@myproducts);
-    PutFooter();
+    $template->put_footer();
 
 } else {
     my $product = $cgi->param('product');
@@ -89,11 +89,11 @@ if (! defined $cgi->param('product')) {
 
     print $cgi->header(-Content_Disposition=>'inline; filename=bugzilla_report.html');
 
-    PutHeader("Bug Charts");
+    $template->put_header("Bug Charts");
 
     show_chart($product);
 
-    PutFooter();
+    $template->put_footer();
 }
 
 
@@ -115,7 +115,7 @@ sub choose_product {
       || ThrowCodeError("chart_file_open_fail", {filename => "$dir/$datafile"});
  
     print $cgi->header();
-    PutHeader("Bug Charts");
+    $template->put_header("Bug Charts");
 
     print <<FIN;
 <center>
@@ -254,7 +254,11 @@ sub generate_chart {
     my ($data_file, $image_file, $type, $product, $datasets) = @_;
     
     if (! open FILE, $data_file) {
-        ThrowCodeError("chart_data_not_generated");
+        if ($product eq '-All-') {
+            $product = '';
+        }
+
+        ThrowCodeError("chart_data_not_generated", {'product' => $product});
     }
 
     my @fields;
diff --git a/request.cgi b/request.cgi
index 4c6e7600f227b56ce88c1a136bb0bf5d2733226b..c7705f38dc53e729f876971e9a249e227b3d68bd 100755
--- a/request.cgi
+++ b/request.cgi
@@ -27,26 +27,38 @@
 # Make it harder for us to do dangerous things in Perl.
 use strict;
 
-# Include the Bugzilla CGI and general utility library.
 use lib qw(.);
-require "CGI.pl";
-
-# Use Bugzilla's Request module which contains utilities for handling requests.
+require "globals.pl";
+use Bugzilla;
 use Bugzilla::Flag;
 use Bugzilla::FlagType;
-
-# use Bugzilla's User module which contains utilities for handling users.
 use Bugzilla::User;
 
-use vars qw($template $vars @legal_product @legal_components %components);
+use vars qw($template $vars);
 
 # Make sure the user is logged in.
-Bugzilla->login();
+my $user = Bugzilla->login();
+my $userid = $user->id;
+
+my $cgi = Bugzilla->cgi;
+
 
 ################################################################################
 # Main Body Execution
 ################################################################################
 
+my $fields;
+$fields->{'requester'}->{'type'} = 'single';
+# If the user doesn't restrict his search to requests from the wind
+# (requestee ne '-'), include the requestee for completion.
+unless (defined $cgi->param('requestee')
+        && $cgi->param('requestee') eq '-')
+{
+    $fields->{'requestee'}->{'type'} = 'single';
+}
+
+Bugzilla::User::match_field($cgi, $fields);
+
 queue();
 exit;
 
@@ -102,17 +114,17 @@ sub queue {
            LEFT JOIN bug_group_map AS bgmap
                   ON bgmap.bug_id = bugs.bug_id
                  AND bgmap.group_id NOT IN (" .
-                     join(', ', (-1, values(%{Bugzilla->user->groups}))) . ")
+                     join(', ', (-1, values(%{$user->groups}))) . ")
            LEFT JOIN cc AS ccmap
-                  ON ccmap.who = $::userid
-                 AND ccmap.bug_id = bugs.bug_id
+                  ON ccmap.who = $userid
+                 AND ccmap.bug_id = bugs.bug_id
     " .
 
     # Weed out bug the user does not have access to
     " WHERE     ((bgmap.group_id IS NULL) OR
                  (ccmap.who IS NOT NULL AND cclist_accessible = 1) OR
-                 (bugs.reporter = $::userid AND bugs.reporter_accessible = 1) OR
-                 (bugs.assigned_to = $::userid))";
+                 (bugs.reporter = $userid AND bugs.reporter_accessible = 1) OR
+                 (bugs.assigned_to = $userid))";
     
     # Non-deleted flags only
     $query .= " AND flags.is_active = 1 ";
@@ -265,15 +277,7 @@ sub queue {
     SendSQL("SELECT DISTINCT(name) FROM flagtypes ORDER BY name");
     push(@types, FetchOneColumn()) while MoreSQLData();
     
-    # products and components and the function used to modify the components
-    # menu when the products menu changes; used by the template to populate
-    # the menus and keep the components menu consistent with the products menu
-    GetVersionTable();
-    my $selectable = GetSelectableProductHash();
-    $vars->{'products'} = $selectable->{legal_products};
-    $vars->{'components'} = $selectable->{legal_components};
-    $vars->{'components_by_product'} = $selectable->{components_by_product};
-    
+    $vars->{'products'} = $user->get_selectable_products;
     $vars->{'excluded_columns'} = \@excluded_columns;
     $vars->{'group_field'} = $form_group;
     $vars->{'requests'} = \@requests;
diff --git a/sanitycheck.cgi b/sanitycheck.cgi
index c091e1041d95974b9bde2b9bf389f01faf15138a..0ae58591c58c8635036ce2ec3e71b6aff37b2a54 100755
--- a/sanitycheck.cgi
+++ b/sanitycheck.cgi
@@ -27,7 +27,7 @@ use strict;
 
 use lib qw(.);
 
-require "CGI.pl";
+require "globals.pl";
 use Bugzilla::Constants;
 use Bugzilla::User;
 
@@ -75,6 +75,7 @@ Bugzilla->login(LOGIN_REQUIRED);
 
 my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
+my $template = Bugzilla->template;
 
 # Make sure the user is authorized to access sanitycheck.cgi.  Access
 # is restricted to logged-in users who have "editbugs" privileges,
@@ -92,7 +93,7 @@ print $cgi->header();
 
 my @row;
 
-PutHeader("Bugzilla Sanity Check");
+$template->put_header("Bugzilla Sanity Check");
 
 ###########################################################################
 # Fix vote cache
@@ -116,66 +117,6 @@ if (defined $cgi->param('rebuildvotecache')) {
     Status("Vote cache has been rebuilt.");
 }
 
-###########################################################################
-# Fix group derivations
-###########################################################################
-
-if (defined $cgi->param('rederivegroups')) {
-    Status("OK, All users' inherited permissions will be rechecked when " .
-           "they next access Bugzilla.");
-    SendSQL("UPDATE groups SET last_changed = NOW() " . $dbh->sql_limit(1));
-}
-
-# rederivegroupsnow is REALLY only for testing.
-# If it wasn't, then we'd do this the faster way as a per-group
-# thing rather than per-user for group inheritance
-if (defined $cgi->param('rederivegroupsnow')) {
-    require Bugzilla::User;
-    Status("OK, now rederiving groups.");
-    SendSQL("SELECT userid FROM profiles");
-    while ((my $id) = FetchSQLData()) {
-        my $user = new Bugzilla::User($id);
-        $user->derive_groups();
-        Status("User $id");
-    }
-}
-
-if (defined $cgi->param('cleangroupsnow')) {
-    Status("OK, now cleaning stale groups.");
-    # Only users that were out of date already long ago should be cleaned
-    # and the cleaning is done with tables locked.  This is require in order
-    # to keep another session from proceeding with permission checks
-    # after the groups have been cleaned unless it first had an opportunity
-    # to get the groups up to date.
-    # If any page starts taking longer than one hour to load, this interval
-    # should be revised.
-    SendSQL("SELECT MAX(last_changed) FROM groups WHERE last_changed < NOW() - " . 
-            $dbh->sql_interval('1 HOUR'));
-    (my $cutoff) = FetchSQLData();
-    Status("Cutoff is $cutoff");
-    SendSQL("SELECT COUNT(*) FROM user_group_map");
-    (my $before) = FetchSQLData();
-    $dbh->bz_lock_tables('user_group_map WRITE', 'profiles WRITE');
-    SendSQL("SELECT userid FROM profiles " .
-            "WHERE refreshed_when > 0 " .
-            "AND refreshed_when < " . SqlQuote($cutoff) . " " .
-            $dbh->sql_limit(1000));
-    my $count = 0;
-    while ((my $id) = FetchSQLData()) {
-        $count++;
-        PushGlobalSQLState();
-        SendSQL("DELETE FROM user_group_map WHERE " .
-            "user_id = $id AND isderived = 1 AND isbless = 0");
-        SendSQL("UPDATE profiles SET refreshed_when = 0 WHERE userid = $id");
-        PopGlobalSQLState();
-    }
-    $dbh->bz_unlock_tables();
-    SendSQL("SELECT COUNT(*) FROM user_group_map");
-    (my $after) = FetchSQLData();
-    Status("Cleaned table for $count users " .
-           "- reduced from $before records to $after records");
-}
-
 ###########################################################################
 # Create missing group_control_map entries
 ###########################################################################
@@ -272,7 +213,7 @@ if (defined $cgi->param('rescanallBugMail')) {
         Status("Unsent mail has been sent.");
     }
 
-    PutFooter();
+    $template->put_footer();
     exit;
 }
 
@@ -726,7 +667,7 @@ if (defined $cgi->param('rebuildkeywordcache')) {
 # General bug checks
 ###########################################################################
 
-sub BugCheck ($$;$$) {
+sub BugCheck {
     my ($middlesql, $errortext, $repairparam, $repairtext) = @_;
     
     SendSQL("SELECT DISTINCT bugs.bug_id " .
@@ -887,4 +828,4 @@ if (@badbugs > 0) {
 ###########################################################################
 
 Status("Sanity check completed.");
-PutFooter();
+$template->put_footer();
diff --git a/show_activity.cgi b/show_activity.cgi
index 5ab4e366e69c87ab12aea251cc7d12ebf7c2f4a2..b0ad42379c07ddac3ef7b451f033abf9a79f1ae9 100755
--- a/show_activity.cgi
+++ b/show_activity.cgi
@@ -27,7 +27,10 @@ use strict;
 use lib qw(.);
 use vars qw ($template $vars);
 
-require "CGI.pl";
+require "globals.pl";
+
+use Bugzilla::Bug;
+
 my $cgi = Bugzilla->cgi;
 
 ###############################################################################
@@ -47,11 +50,11 @@ ValidateBugID($bug_id);
 ###############################################################################
 
 ($vars->{'operations'}, $vars->{'incomplete_data'}) = 
-                                                 GetBugActivity($bug_id);
+    Bugzilla::Bug::GetBugActivity($bug_id);
 
 $vars->{'bug_id'} = $bug_id;
 
-print Bugzilla->cgi->header();
+print $cgi->header();
 
 $template->process("bug/activity/show.html.tmpl", $vars)
   || ThrowTemplateError($template->error());
diff --git a/show_bug.cgi b/show_bug.cgi
index 8e964b765a4a04d8ae47f1cf22c18458ce219f95..31619800b4fcd2398e1c104e310b7182b9e5ffbb 100755
--- a/show_bug.cgi
+++ b/show_bug.cgi
@@ -28,7 +28,7 @@ use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::User;
 
-require "CGI.pl";
+require "globals.pl";
 
 use vars qw($template $vars $userid);
 
@@ -54,8 +54,8 @@ if (!$cgi->param('id') && $single) {
     exit;
 }
 
-my $format = GetFormat("bug/show", scalar $cgi->param('format'), 
-                       scalar $cgi->param('ctype'));
+my $format = $template->get_format("bug/show", scalar $cgi->param('format'), 
+                                   scalar $cgi->param('ctype'));
 
 GetVersionTable();
 
@@ -108,7 +108,8 @@ $vars->{'bug_list'} = \@bug_list;
 # If no explicit list is defined, we show all fields. We then exclude any
 # on the exclusion list. This is so you can say e.g. "Everything except 
 # attachments" without listing almost all the fields.
-my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment');
+my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 
+                 'attachment', 'attachmentdata');
 my %displayfields;
 
 if ($cgi->param("field")) {
diff --git a/showdependencygraph.cgi b/showdependencygraph.cgi
index b6739d32eabf376704c260b2e38651e0dd03f251..01ac1e2e32b90c99a7294c8051a3dfc57df8d9d7 100755
--- a/showdependencygraph.cgi
+++ b/showdependencygraph.cgi
@@ -29,9 +29,9 @@ use File::Temp;
 use Bugzilla;
 use Bugzilla::Config qw(:DEFAULT $webdotdir);
 use Bugzilla::Util;
-use Bugzilla::BugMail;
+use Bugzilla::Bug;
 
-require "CGI.pl";
+require "globals.pl";
 
 Bugzilla->login();
 
@@ -220,7 +220,7 @@ my $webdotbase = Param('webdotbase');
 
 if ($webdotbase =~ /^https?:/) {
      # Remote dot server
-     my $url = PerformSubsts($webdotbase) . $filename;
+     my $url = perform_substs($webdotbase) . $filename;
      $vars->{'image_url'} = $url . ".gif";
      $vars->{'map_url'} = $url . ".map";
 } else {
diff --git a/showdependencytree.cgi b/showdependencytree.cgi
index 76ef0ddeec267f3f61ff1a259a1ec02796dfea25..7c3b9946512f50822914f6f04206a99fe24c277f 100755
--- a/showdependencytree.cgi
+++ b/showdependencytree.cgi
@@ -26,8 +26,9 @@
 use strict;
 
 use lib qw(.);
-require "CGI.pl";
+require "globals.pl";
 use Bugzilla::User;
+use Bugzilla::Bug;
 
 # Use global template variables.
 use vars qw($template $vars);
diff --git a/sidebar.cgi b/sidebar.cgi
index 73a22d1b339a80c81a1815e1b0fadac9634549d5..15506eba43e9e2564d51c4ac520afc45355c2cae 100755
--- a/sidebar.cgi
+++ b/sidebar.cgi
@@ -18,13 +18,10 @@
 use strict;
 
 use lib ".";
-require "CGI.pl";
+require "globals.pl";
 
 # Shut up "Used Only Once" errors
-use vars qw(
-  $template
-  $vars
-);
+use vars qw($template $vars);
 
 Bugzilla->login();
 
diff --git a/skins/CVS/Tag b/skins/CVS/Tag
index 84507d26c5041aeb69e8ccabe5e10972bfb1ecb2..e19db48255e1f5409c807de0ec533bf4e0e0d1be 100644
--- a/skins/CVS/Tag
+++ b/skins/CVS/Tag
@@ -1 +1 @@
-TBUGZILLA-2_20
+TBUGZILLA-2_21_1
diff --git a/skins/standard/CVS/Entries b/skins/standard/CVS/Entries
index eed9117253344b32048904ec913478bda6d95297..4ec765e95c5fb896cad4e3da580313c5e1bff7f6 100644
--- a/skins/standard/CVS/Entries
+++ b/skins/standard/CVS/Entries
@@ -1,12 +1,12 @@
-/admin.css/1.1/Mon Feb 28 20:41:43 2005//TBUGZILLA-2_20
-/buglist.css/1.9/Mon Apr 11 22:52:50 2005//TBUGZILLA-2_20
-/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-2_20
-/editusers.css/1.1/Mon Feb 28 20:41:43 2005//TBUGZILLA-2_20
-/global.css/1.12.4.1/Sat Aug 13 14:43:33 2005//TBUGZILLA-2_20
-/index.css/1.2/Thu Feb  3 17:43:38 2005//TBUGZILLA-2_20
-/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-2_20
-/show_multiple.css/1.2/Tue Nov  2 22:39:16 2004//TBUGZILLA-2_20
-/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-2_20
-/voting.css/1.1/Tue Feb  8 15:49:57 2005//TBUGZILLA-2_20
+/admin.css/1.1/Mon Feb 28 20:41:43 2005//TBUGZILLA-2_21_1
+/buglist.css/1.9/Mon Apr 11 22:52:50 2005//TBUGZILLA-2_21_1
+/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-2_21_1
+/editusers.css/1.1/Mon Feb 28 20:41:43 2005//TBUGZILLA-2_21_1
+/global.css/1.15/Sun Aug 21 18:16:41 2005//TBUGZILLA-2_21_1
+/index.css/1.2/Thu Feb  3 17:43:38 2005//TBUGZILLA-2_21_1
+/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-2_21_1
+/show_multiple.css/1.2/Tue Nov  2 22:39:16 2004//TBUGZILLA-2_21_1
+/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-2_21_1
+/voting.css/1.1/Tue Feb  8 15:49:57 2005//TBUGZILLA-2_21_1
 D/global////
 D/index////
diff --git a/skins/standard/CVS/Tag b/skins/standard/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/skins/standard/CVS/Tag
+++ b/skins/standard/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/skins/standard/global.css b/skins/standard/global.css
index bf4765c51818169ff6c088166e15fd62510c2cf2..ea95e74602f34dea87272dd68f79ca6182e2e41c 100644
--- a/skins/standard/global.css
+++ b/skins/standard/global.css
@@ -176,13 +176,14 @@ body
         margin-top: 5px;
         width: 100%;
         font-family: sans-serif;
+        background: #edf2f2;
+        border-top: 1px solid #ddd;
+        border-bottom: 1px solid #ddd;
     }
 
     #footer form
     {
-        background: #edf2f2;
-        border-top: 1px solid #ddd;
-        border-bottom: 1px solid #ddd;
+        display: inline;
     }
 
     #footer span
@@ -316,21 +317,24 @@ body
     padding: 1em 0;
 }
 
-.selected_tab
+td.tab
 {
-    background: #fff;
-    border: 1px solid black;
+    background: #eee;
+    text-align: center;
+    border-style: solid;
+    border-color: black;
+    border-width: 0px 0px 2px 0px;
 }
-
-.unselected_tab
+    
+td.tab.selected
 {
-    background: #eee;
-    border: 1px solid black;
+    background: white;
+    border-width: 2px 2px 0px 2px;
 }
 
-.spacer
+td.tab.spacer
 {
-    border: 1px solid black;
+    background: white;
 }
 
 table#flags th, table#flags td { vertical-align: baseline; text-align: left; }
diff --git a/skins/standard/global/CVS/Entries b/skins/standard/global/CVS/Entries
index 028eff6de770525bea47f3fe35eba3db26b6a381..388bd3a11fbf875b2ce32a599dd54c0a06b8aa5e 100644
--- a/skins/standard/global/CVS/Entries
+++ b/skins/standard/global/CVS/Entries
@@ -1,3 +1,3 @@
-/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-2_20
-/header.png/1.1/Thu Feb  3 19:23:17 2005/-kb/TBUGZILLA-2_20
+/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-2_21_1
+/header.png/1.1/Thu Feb  3 19:23:17 2005/-kb/TBUGZILLA-2_21_1
 D
diff --git a/skins/standard/global/CVS/Tag b/skins/standard/global/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/skins/standard/global/CVS/Tag
+++ b/skins/standard/global/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/skins/standard/index/CVS/Entries b/skins/standard/index/CVS/Entries
index 38bf186cc87f66cd57f0b9e6ee90d28066861591..a22c8d4ed98cd75a99ee55febe7ea13cc08cde1b 100644
--- a/skins/standard/index/CVS/Entries
+++ b/skins/standard/index/CVS/Entries
@@ -1,3 +1,3 @@
-/front.jpg/1.1/Tue Nov  9 00:16:58 2004/-kb/TBUGZILLA-2_20
-/front.png/1.1/Thu Feb  3 19:23:17 2005/-kb/TBUGZILLA-2_20
+/front.jpg/1.1/Tue Nov  9 00:16:58 2004/-kb/TBUGZILLA-2_21_1
+/front.png/1.1/Thu Feb  3 19:23:17 2005/-kb/TBUGZILLA-2_21_1
 D
diff --git a/skins/standard/index/CVS/Tag b/skins/standard/index/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/skins/standard/index/CVS/Tag
+++ b/skins/standard/index/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/summarize_time.cgi b/summarize_time.cgi
index eb3aff23067c110fd6fca695f36a99712ee56709..c04a956d763e78850f776a8e27f913e57f3b92c5 100644
--- a/summarize_time.cgi
+++ b/summarize_time.cgi
@@ -27,7 +27,7 @@ use Bugzilla::Bug;       # EmitDependList
 use Bugzilla::Util;      # trim
 use Bugzilla::Constants; # LOGIN_*
 use Bugzilla::User;      # UserInGroup
-require "CGI.pl";
+require "globals.pl";
 
 GetVersionTable();
 
@@ -485,10 +485,9 @@ $vars->{'check_time'} = \&check_time;
 $vars->{'sort_bug_keys'} = \&sort_bug_keys;
 $vars->{'GetBugLink'} = \&GetBugLink;
 
-$ctype = "html" if !$ctype;
-my $format = GetFormat("bug/summarize-time", undef, $ctype);
+my $format = $template->get_format("bug/summarize-time", undef, $ctype);
 
 # Get the proper content-type
-print $cgi->header(-type=> Bugzilla::Constants::contenttypes->{$ctype});
+print $cgi->header(-type=> $format->{'ctype'});
 $template->process("$format->{'template'}", $vars)
   || ThrowTemplateError($template->error());
diff --git a/t/004template.t b/t/004template.t
index 4edb6a3acbbad869c17c75e991d56fb8334bc84a..9cbfadf6e31215c5daa6ff8a45220a34e387d77b 100644
--- a/t/004template.t
+++ b/t/004template.t
@@ -96,6 +96,7 @@ foreach my $include_path (@include_paths) {
             html_linebreak => sub { return $_; },
             no_break => sub { return $_; } ,
             js        => sub { return $_ } ,
+            base64   => sub { return $_ } ,
             inactive => [ sub { return sub { return $_; } }, 1] ,
             closed => [ sub { return sub { return $_; } }, 1] ,
             obsolete => [ sub { return sub { return $_; } }, 1] ,
diff --git a/t/008filter.t b/t/008filter.t
index 59d3a2bd708835d8b2621ee639819cfa566e6067..61b3dc2b6360c887b8a743ebf88d12bcc0b006dd 100644
--- a/t/008filter.t
+++ b/t/008filter.t
@@ -218,7 +218,7 @@ sub directive_ok {
     # Things which are already filtered
     # Note: If a single directive prints two things, and only one is 
     # filtered, we may not catch that case.
-    return 1 if $directive =~ /FILTER\ (html|csv|js|url_quote|css_class_quote|
+    return 1 if $directive =~ /FILTER\ (html|csv|js|base64|url_quote|css_class_quote|
                                         ics|quoteUrls|time|uri|xml|lower|
                                         obsolete|inactive|closed|unitconvert|
                                         none)/x;
diff --git a/t/CVS/Entries b/t/CVS/Entries
index 9d6289a77bce315bae3b119bf42e2a685500a744..e6d218eba2fd4c515be13c1ac995fd9060c044cf 100644
--- a/t/CVS/Entries
+++ b/t/CVS/Entries
@@ -1,14 +1,14 @@
-/001compile.t/1.13/Thu May 26 20:07:35 2005//TBUGZILLA-2_20
-/002goodperl.t/1.15/Wed Sep  8 22:46:34 2004//TBUGZILLA-2_20
-/003safesys.t/1.6/Sun Dec  5 14:13:27 2004//TBUGZILLA-2_20
-/004template.t/1.35.4.1/Fri Aug  5 23:49:16 2005//TBUGZILLA-2_20
-/005no_tabs.t/1.12.10.1/Fri Aug  5 23:49:16 2005//TBUGZILLA-2_20
-/006spellcheck.t/1.5/Wed Feb  2 16:06:51 2005//TBUGZILLA-2_20
-/007util.t/1.6/Tue May 10 20:30:13 2005//TBUGZILLA-2_20
-/008filter.t/1.17.6.1/Fri Aug  5 23:49:16 2005//TBUGZILLA-2_20
-/009bugwords.t/1.2.10.1/Fri Aug  5 23:49:16 2005//TBUGZILLA-2_20
-/011pod.t/1.1.2.2/Wed Jul 27 19:22:25 2005//TBUGZILLA-2_20
-/testchart.gif/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_20
-/testchart.png/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_20
-/testgd.png/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_20
+/001compile.t/1.13/Thu May 26 20:07:35 2005//TBUGZILLA-2_21_1
+/002goodperl.t/1.15/Wed Sep  8 22:46:34 2004//TBUGZILLA-2_21_1
+/003safesys.t/1.6/Sun Dec  5 14:13:27 2004//TBUGZILLA-2_21_1
+/004template.t/1.37/Wed Sep  7 12:05:12 2005//TBUGZILLA-2_21_1
+/005no_tabs.t/1.13/Fri Aug  5 23:47:27 2005//TBUGZILLA-2_21_1
+/006spellcheck.t/1.5/Wed Feb  2 16:06:51 2005//TBUGZILLA-2_21_1
+/007util.t/1.6/Tue May 10 20:30:13 2005//TBUGZILLA-2_21_1
+/008filter.t/1.19/Wed Sep  7 12:05:12 2005//TBUGZILLA-2_21_1
+/009bugwords.t/1.3/Fri Aug  5 23:47:27 2005//TBUGZILLA-2_21_1
+/011pod.t/1.1/Tue Jul 26 14:23:50 2005//TBUGZILLA-2_21_1
+/testchart.gif/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_21_1
+/testchart.png/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_21_1
+/testgd.png/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_21_1
 D/Support////
diff --git a/t/CVS/Tag b/t/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/t/CVS/Tag
+++ b/t/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/t/Support/CVS/Entries b/t/Support/CVS/Entries
index 374504b64d41f0cab0ce9cdf493d9ef898cd250f..d08df8157817b03fbf1ecd959fe369bd24ae8d86 100644
--- a/t/Support/CVS/Entries
+++ b/t/Support/CVS/Entries
@@ -1,4 +1,4 @@
-/Files.pm/1.20/Mon Dec  6 17:03:00 2004//TBUGZILLA-2_20
-/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-2_20
-/Templates.pm/1.13.10.1/Fri Aug  5 23:49:16 2005//TBUGZILLA-2_20
+/Files.pm/1.20/Mon Dec  6 17:03:00 2004//TBUGZILLA-2_21_1
+/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-2_21_1
+/Templates.pm/1.14/Fri Aug  5 23:47:28 2005//TBUGZILLA-2_21_1
 D
diff --git a/t/Support/CVS/Tag b/t/Support/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/t/Support/CVS/Tag
+++ b/t/Support/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/CVS/Entries b/template/CVS/Entries
index e8735082ee8c5e905c400bee2780d35c0b226815..7920b434bd077ef7eea14d5e7617708fb3aa10a2 100644
--- a/template/CVS/Entries
+++ b/template/CVS/Entries
@@ -1,2 +1,2 @@
-/.cvsignore/1.3/Tue May  7 21:33:53 2002//TBUGZILLA-2_20
+/.cvsignore/1.3/Tue May  7 21:33:53 2002//TBUGZILLA-2_21_1
 D/en////
diff --git a/template/CVS/Tag b/template/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/CVS/Tag
+++ b/template/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/CVS/Entries b/template/en/CVS/Entries
index 11c27560ba3ef4e0a672b1340b3d59fed4430c1f..e2d5cb8fae43a0639f45b63d38116261f2626c1c 100644
--- a/template/en/CVS/Entries
+++ b/template/en/CVS/Entries
@@ -1,3 +1,3 @@
-/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-2_20
+/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-2_21_1
 D/default////
 D/extension////
diff --git a/template/en/CVS/Tag b/template/en/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/CVS/Tag
+++ b/template/en/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/CVS/Entries b/template/en/default/CVS/Entries
index 19a1c247eddd73019eec06ed79fe942ee2f9b6e8..1abd05348637d816cb2b65bfd677807ee30fd0ad 100644
--- a/template/en/default/CVS/Entries
+++ b/template/en/default/CVS/Entries
@@ -1,8 +1,8 @@
-/config.js.tmpl/1.4/Mon Jun 23 18:01:38 2003//TBUGZILLA-2_20
-/config.rdf.tmpl/1.4/Mon Jun 23 18:01:39 2003//TBUGZILLA-2_20
-/filterexceptions.pl/1.43.2.2/Thu Aug  4 18:29:34 2005//TBUGZILLA-2_20
-/index.html.tmpl/1.23/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_20
-/sidebar.xul.tmpl/1.17/Fri Mar 18 21:32:46 2005//TBUGZILLA-2_20
+/config.js.tmpl/1.6/Fri Sep  2 21:12:08 2005//TBUGZILLA-2_21_1
+/config.rdf.tmpl/1.6/Fri Sep  2 21:12:08 2005//TBUGZILLA-2_21_1
+/filterexceptions.pl/1.55/Tue Sep 27 22:08:12 2005//TBUGZILLA-2_21_1
+/index.html.tmpl/1.24/Sun Aug 21 18:16:42 2005//TBUGZILLA-2_21_1
+/sidebar.xul.tmpl/1.18/Sun Aug 21 18:16:42 2005//TBUGZILLA-2_21_1
 D/account////
 D/admin////
 D/attachment////
diff --git a/template/en/default/CVS/Tag b/template/en/default/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/CVS/Tag
+++ b/template/en/default/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/account/CVS/Entries b/template/en/default/account/CVS/Entries
index 44a4641ba094eb3cb59d9cc443246663299b1d7d..ca218ce77d3ce3ff811ed32526a90c47b988fd01 100644
--- a/template/en/default/account/CVS/Entries
+++ b/template/en/default/account/CVS/Entries
@@ -1,7 +1,7 @@
-/cancel-token.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.8/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_20
-/created.html.tmpl/1.6/Sat Mar 12 21:51:16 2005//TBUGZILLA-2_20
-/exists.html.tmpl/1.7/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_20
+/cancel-token.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.8/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_21_1
+/created.html.tmpl/1.6/Sat Mar 12 21:51:16 2005//TBUGZILLA-2_21_1
+/exists.html.tmpl/1.7/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_21_1
 D/auth////
 D/email////
 D/password////
diff --git a/template/en/default/account/CVS/Tag b/template/en/default/account/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/account/CVS/Tag
+++ b/template/en/default/account/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/account/auth/CVS/Entries b/template/en/default/account/auth/CVS/Entries
index aab5f0abb933969ec9cedaf6b42dd534c9fda4ed..7f2d40e743bf2af13601ff29d6121762674e9297 100644
--- a/template/en/default/account/auth/CVS/Entries
+++ b/template/en/default/account/auth/CVS/Entries
@@ -1,4 +1,4 @@
-/ldap-error.html.tmpl/1.3/Thu Mar 18 16:10:17 2004//TBUGZILLA-2_20
-/login-small.html.tmpl/1.1/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_20
-/login.html.tmpl/1.13/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_20
+/ldap-error.html.tmpl/1.3/Thu Mar 18 16:10:17 2004//TBUGZILLA-2_21_1
+/login-small.html.tmpl/1.1/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_21_1
+/login.html.tmpl/1.13/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/account/auth/CVS/Tag b/template/en/default/account/auth/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/account/auth/CVS/Tag
+++ b/template/en/default/account/auth/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/account/email/CVS/Entries b/template/en/default/account/email/CVS/Entries
index e2530ef3c0edb027c1a1471097fd9ad0a3b14b17..485efef0ba118bb36a627365ea87276ff46dc488 100644
--- a/template/en/default/account/email/CVS/Entries
+++ b/template/en/default/account/email/CVS/Entries
@@ -1,4 +1,4 @@
-/change-new.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20
-/change-old.txt.tmpl/1.9/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20
-/confirm.html.tmpl/1.9/Thu Mar 18 16:08:52 2004//TBUGZILLA-2_20
+/change-new.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_21_1
+/change-old.txt.tmpl/1.9/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_21_1
+/confirm.html.tmpl/1.9/Thu Mar 18 16:08:52 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/account/email/CVS/Tag b/template/en/default/account/email/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/account/email/CVS/Tag
+++ b/template/en/default/account/email/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/account/password/CVS/Entries b/template/en/default/account/password/CVS/Entries
index 7cc4f9e9152a916034b9792b18d8e0c2da662e51..195fc8d4bf265f4c1e5e534f99d859685eac8253 100644
--- a/template/en/default/account/password/CVS/Entries
+++ b/template/en/default/account/password/CVS/Entries
@@ -1,3 +1,3 @@
-/forgotten-password.txt.tmpl/1.7/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20
-/set-forgotten-password.html.tmpl/1.6/Sun Jan 18 18:39:13 2004//TBUGZILLA-2_20
+/forgotten-password.txt.tmpl/1.7/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_21_1
+/set-forgotten-password.html.tmpl/1.6/Sun Jan 18 18:39:13 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/account/password/CVS/Tag b/template/en/default/account/password/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/account/password/CVS/Tag
+++ b/template/en/default/account/password/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/account/prefs/CVS/Entries b/template/en/default/account/prefs/CVS/Entries
index 3261ff1016130cdb974a2b0ab7996cb47dd237be..88c9c7e3a7df583f5b53dd3ccae25fb99b7e1a4c 100644
--- a/template/en/default/account/prefs/CVS/Entries
+++ b/template/en/default/account/prefs/CVS/Entries
@@ -1,8 +1,8 @@
-/account.html.tmpl/1.6/Thu Mar 18 16:11:27 2004//TBUGZILLA-2_20
-/email.html.tmpl/1.21.2.2/Sat Aug 13 14:31:34 2005//TBUGZILLA-2_20
-/footer.html.tmpl/1.5/Thu Mar 18 21:51:16 2004//TBUGZILLA-2_20
-/permissions.html.tmpl/1.6/Sun Jan 18 18:39:13 2004//TBUGZILLA-2_20
-/prefs.html.tmpl/1.18/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_20
-/saved-searches.html.tmpl/1.5.6.1/Wed Aug  3 00:49:12 2005//TBUGZILLA-2_20
-/settings.html.tmpl/1.1.4.1/Tue Sep 27 22:02:30 2005//TBUGZILLA-2_20
+/account.html.tmpl/1.6/Thu Mar 18 16:11:27 2004//TBUGZILLA-2_21_1
+/email.html.tmpl/1.23/Sat Aug 13 14:28:38 2005//TBUGZILLA-2_21_1
+/footer.html.tmpl/1.5/Thu Mar 18 21:51:16 2004//TBUGZILLA-2_21_1
+/permissions.html.tmpl/1.6/Sun Jan 18 18:39:13 2004//TBUGZILLA-2_21_1
+/prefs.html.tmpl/1.20/Sat Jul 30 01:01:53 2005//TBUGZILLA-2_21_1
+/saved-searches.html.tmpl/1.8/Thu Aug 25 13:39:20 2005//TBUGZILLA-2_21_1
+/settings.html.tmpl/1.2/Tue Sep 27 21:59:30 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/account/prefs/CVS/Tag b/template/en/default/account/prefs/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/account/prefs/CVS/Tag
+++ b/template/en/default/account/prefs/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/account/prefs/prefs.html.tmpl b/template/en/default/account/prefs/prefs.html.tmpl
index d909f3b8ac623c136d31a8bf3a94004382ae2bce..e849a4e99121c3296bd6f2d36827761162e67f93 100644
--- a/template/en/default/account/prefs/prefs.html.tmpl
+++ b/template/en/default/account/prefs/prefs.html.tmpl
@@ -38,57 +38,33 @@
 [% PROCESS global/header.html.tmpl
    title = "User Preferences"
    h2 = filtered_login
-   style = "td.selected_tab {
-              border-width: 2px 2px 0px;
-              border-style: solid; 
-              border-color: black;
-            }
-            td.unselected_tab, td.spacer {
-              border-width: 0px 0px 2px 0px;
-              border-style: solid; 
-              border-color: black;
-            }"
  %]
 
-[% tabs = [ { name => "account", description => "Account Preferences", 
-              saveable => "1" },
-            { name => "settings", description => "General Preferences", 
-              saveable => "1" }, 
-            { name => "email", description => "Email Preferences", 
-              saveable => "1" },
-            { name => "saved-searches", description => "Saved searches", 
-              saveable => "1" },
-            { name => "permissions", description => "Permissions", 
-              saveable => "0" } ] %]
+[% tabs = [ { name => "account", label => "Account Preferences", 
+              link => "userprefs.cgi?tab=account", saveable => "1" },
+            { name => "settings", label => "General Preferences", 
+              link => "userprefs.cgi?tab=settings", saveable => "1" },
+            { name => "email", label => "Email Preferences", 
+              link => "userprefs.cgi?tab=email", saveable => "1" },
+            { name => "saved-searches", label => "Saved searches", 
+              link => "userprefs.cgi?tab=saved-searches", saveable => "1" },
+            { name => "permissions", label => "Permissions", 
+              link => "userprefs.cgi?tab=permissions", saveable => "0" } ] %]
 
-<center>
-  <table cellspacing="0" cellpadding="10" border="0" width="100%">
-    <tr>
-      <td class="spacer">&nbsp;</td>
- 
-      [% FOREACH tab = tabs %]
-        [% IF tab.name == current_tab_name %]
-          [% current_tab = tab %]
-          <td align="center" bgcolor="lightblue" class="selected_tab">
-            [% tab.description %]
-          </td>
-        [% ELSE %]
-          <td align="center" bgcolor="#BBBBEE" class="unselected_tab">
-            <a href="userprefs.cgi?tab=[% tab.name %]">[% tab.description %]</a>
-          </td>
-        [% END %]
-       [% END %]
- 
-       <td class="spacer">&nbsp;</td>
-     </tr>
-   </table>
-</center>
+[% FOREACH tab IN tabs %]
+  [% IF tab.name == current_tab_name %]
+    [% current_tab = tab %]
+    [% LAST %]
+  [% END %]
+[% END %]
+
+[% PROCESS global/tabs.html.tmpl %]
 
 [% IF changes_saved %]
   <p>
     <font color="red">
       The changes to your 
-      [% current_tab.description FILTER lower %] have been saved.
+      [% current_tab.label FILTER lower %] have been saved.
     </font>
   </p>
   [% IF email_changes_saved %]
@@ -99,7 +75,7 @@
   [% END %]
 [% END %]
 
-<h3>[% current_tab.description %]</h3>
+<h3>[% current_tab.label %]</h3>
 
 <form name="userprefsform" method="post" action="userprefs.cgi">
   <input type="hidden" name="tab" value="[% current_tab.name %]">
diff --git a/template/en/default/account/prefs/saved-searches.html.tmpl b/template/en/default/account/prefs/saved-searches.html.tmpl
index 8827a89ba22fe5cc3f8701a844f1203901f3e410..7f0052bba34afcf479fec87c73a13123a4f84f05 100644
--- a/template/en/default/account/prefs/saved-searches.html.tmpl
+++ b/template/en/default/account/prefs/saved-searches.html.tmpl
@@ -64,7 +64,7 @@
       <tr>
         <td>[% q.name FILTER html %]</td>
         <td>
-          <a href="buglist.cgi?[% q.query FILTER html %]">Run</a>
+          <a href="buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% q.name FILTER url_quote %]">Run</a>
         </td>
         <td>
           <a href="query.cgi?[% q.query FILTER html %]&amp;known_name=[% q.name FILTER url_quote %]">Edit</a>
@@ -74,7 +74,7 @@
             Remove from <a href="editwhines.cgi">whining</a> first
           [% ELSE %]
             <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
-                     [% q.name FILTER html %]">Forget</a>
+                     [% q.name FILTER url_quote %]">Forget</a>
           [% END %]
         </td>
         <td align="center">
diff --git a/template/en/default/admin/CVS/Entries b/template/en/default/admin/CVS/Entries
index 3e0ee636a6c24fc38525c4aa2d585c5745b499a4..e5d5843713404785d90cc122698f8d299d4906e9 100644
--- a/template/en/default/admin/CVS/Entries
+++ b/template/en/default/admin/CVS/Entries
@@ -1,4 +1,4 @@
-/table.html.tmpl/1.5/Tue May 31 15:42:44 2005//TBUGZILLA-2_20
+/table.html.tmpl/1.6/Sun Aug 28 17:41:53 2005//TBUGZILLA-2_21_1
 D/classifications////
 D/components////
 D/fieldvalues////
diff --git a/template/en/default/admin/CVS/Tag b/template/en/default/admin/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/CVS/Tag
+++ b/template/en/default/admin/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/classifications/CVS/Entries b/template/en/default/admin/classifications/CVS/Entries
index 14a951b6304895ce1b0f6adb4af776725bb8c1b7..c4e52266fe8932fc7e8cb2692c284bc2bbc0bc12 100644
--- a/template/en/default/admin/classifications/CVS/Entries
+++ b/template/en/default/admin/classifications/CVS/Entries
@@ -1,9 +1,9 @@
-/add.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20
-/del.html.tmpl/1.2/Thu Oct  7 07:12:40 2004//TBUGZILLA-2_20
-/delete.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20
-/edit.html.tmpl/1.3/Mon Dec 27 09:58:29 2004//TBUGZILLA-2_20
-/new.html.tmpl/1.2/Mon Dec 27 09:58:29 2004//TBUGZILLA-2_20
-/reclassify.html.tmpl/1.2/Thu Oct  7 07:12:40 2004//TBUGZILLA-2_20
-/select.html.tmpl/1.3/Mon Dec 27 09:58:29 2004//TBUGZILLA-2_20
-/update.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20
+/add.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_21_1
+/del.html.tmpl/1.2/Thu Oct  7 07:12:40 2004//TBUGZILLA-2_21_1
+/delete.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.4/Fri Jul 29 14:14:41 2005//TBUGZILLA-2_21_1
+/new.html.tmpl/1.2/Mon Dec 27 09:58:29 2004//TBUGZILLA-2_21_1
+/reclassify.html.tmpl/1.3/Fri Jul 29 14:14:41 2005//TBUGZILLA-2_21_1
+/select.html.tmpl/1.4/Fri Jul 29 14:14:41 2005//TBUGZILLA-2_21_1
+/update.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/classifications/CVS/Tag b/template/en/default/admin/classifications/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/classifications/CVS/Tag
+++ b/template/en/default/admin/classifications/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/classifications/edit.html.tmpl b/template/en/default/admin/classifications/edit.html.tmpl
index fba32ca30201dd93cae3e00a1da9174c3ef9bf6d..65299df2270f1758344af7938e24f29d6a1341a1 100644
--- a/template/en/default/admin/classifications/edit.html.tmpl
+++ b/template/en/default/admin/classifications/edit.html.tmpl
@@ -59,7 +59,6 @@
   </table>
 
   <input type=hidden name="classificationold" value="[% classification FILTER html %]">
-  <input type=hidden name="descriptionold" value="[% description FILTER html %]">
   <input type=hidden name="action" value="update">
   <input type=submit value="Update">
 </form>
diff --git a/template/en/default/admin/classifications/reclassify.html.tmpl b/template/en/default/admin/classifications/reclassify.html.tmpl
index 5d4cb73e4a1bda9a98210fff1261d6090806018f..3f7982bb3214a6ffaa8940d7af15802b18c5ef9c 100644
--- a/template/en/default/admin/classifications/reclassify.html.tmpl
+++ b/template/en/default/admin/classifications/reclassify.html.tmpl
@@ -51,9 +51,9 @@
       <td></td>
       <td valign="top">
       <select name="prodlist" id="prodlist" multiple="multiple" size="20">
-        [% FOREACH cl = class_products %]
-          <option value="[% cl.value FILTER html %]">
-             [% cl.name FILTER html %]
+        [% FOREACH product = unselected_products %]
+          <option value="[% product.name FILTER html %]">
+            [[% product.classification.name FILTER html %]]&nbsp;[% product.name FILTER html %]
           </option>
         [% END %]
       </select></td>
@@ -66,8 +66,8 @@
       <td valign="middle" rowspan=2>
         <select name="myprodlist" id="myprodlist" multiple="multiple" size="20">
           [% FOREACH product = selected_products %]
-            <option value="[% product FILTER html %]">
-              [% product FILTER html %]
+            <option value="[% product.name FILTER html %]">
+              [% product.name FILTER html %]
             </option>
           [% END %]
       </select></td>
diff --git a/template/en/default/admin/classifications/select.html.tmpl b/template/en/default/admin/classifications/select.html.tmpl
index 3cfa3fcaaaba3ea313f1e5490f1ea0eb66556b50..60ae8121663685c29d8e9210a9b2fd8853e33789 100644
--- a/template/en/default/admin/classifications/select.html.tmpl
+++ b/template/en/default/admin/classifications/select.html.tmpl
@@ -23,8 +23,6 @@
   title = "Select classification"
 %]
 
-[% filt_classification = classification FILTER html %]
-
 <table border=1 cellpadding=4 cellspacing=0>
   <tr bgcolor="#6666ff">
     <th align="left">Edit Classification ...</th>
@@ -35,7 +33,7 @@
 
   [% FOREACH cl = classifications %]
     <tr>
-      <td valign="top"><a href="editclassifications.cgi?action=edit&amp;classification=[% cl.classification FILTER url_quote %]"><b>[% cl.classification FILTER html %]</b></a></td>
+      <td valign="top"><a href="editclassifications.cgi?action=edit&amp;classification=[% cl.name FILTER url_quote %]"><b>[% cl.name FILTER html %]</b></a></td>
       <td valign="top"> 
       [% IF cl.description %]
         [% cl.description %]
@@ -44,16 +42,16 @@
       [% END %]
       </td>
       [% IF (cl.id == 1) %]
-        <td valign="top">[% cl.total FILTER html %]</td>
+        <td valign="top">[% cl.product_count FILTER html %]</td>
       [% ELSE %]
-        <td valign="top"><a href="editclassifications.cgi?action=reclassify&amp;classification=[% cl.classification FILTER url_quote %]">reclassify ([% cl.total FILTER html %])</a></td>
+        <td valign="top"><a href="editclassifications.cgi?action=reclassify&amp;classification=[% cl.name FILTER url_quote %]">reclassify ([% cl.product_count FILTER html %])</a></td>
       [% END %]
 
       [%# don't allow user to delete the default id. %]
       [% IF (cl.id == 1) %]
         <td valign="top">&nbsp;</td>
       [% ELSE %]
-        <td valign="top"><a href="editclassifications.cgi?action=del&amp;classification=[% cl.classification FILTER url_quote %]">delete</a></td>
+        <td valign="top"><a href="editclassifications.cgi?action=del&amp;classification=[% cl.name FILTER url_quote %]">delete</a></td>
       [% END %]
     </tr>
   [% END %]
diff --git a/template/en/default/admin/components/CVS/Entries b/template/en/default/admin/components/CVS/Entries
index 0024963825aa263a603567bc7b7cc794609500ac..d3b58b6d9eb0e13accab586bf48da89c1b0200eb 100644
--- a/template/en/default/admin/components/CVS/Entries
+++ b/template/en/default/admin/components/CVS/Entries
@@ -1,10 +1,10 @@
-/confirm-delete.html.tmpl/1.3/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.3/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20
-/created.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_20
-/deleted.html.tmpl/1.3/Wed Apr  6 00:19:54 2005//TBUGZILLA-2_20
-/edit.html.tmpl/1.4/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20
-/footer.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_20
-/list.html.tmpl/1.2/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20
-/select-product.html.tmpl/1.1.8.1/Mon Sep 12 18:56:58 2005//TBUGZILLA-2_20
-/updated.html.tmpl/1.2/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.4/Tue Sep  6 23:53:59 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.3/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_21_1
+/created.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_21_1
+/deleted.html.tmpl/1.3/Wed Apr  6 00:19:54 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.5/Tue Sep  6 23:53:59 2005//TBUGZILLA-2_21_1
+/footer.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_21_1
+/list.html.tmpl/1.4/Tue Sep 27 22:08:13 2005//TBUGZILLA-2_21_1
+/select-product.html.tmpl/1.2/Tue Sep 27 22:08:13 2005//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.2/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/components/CVS/Tag b/template/en/default/admin/components/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/components/CVS/Tag
+++ b/template/en/default/admin/components/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/components/confirm-delete.html.tmpl b/template/en/default/admin/components/confirm-delete.html.tmpl
index 5e108e7a88d87729f1221b237f621fb672ef5905..dabace15457e273d3195783e99b1bf9ec03092b7 100644
--- a/template/en/default/admin/components/confirm-delete.html.tmpl
+++ b/template/en/default/admin/components/confirm-delete.html.tmpl
@@ -20,29 +20,13 @@
   #%]
 
 [%# INTERFACE:
-  # name: string; The name of the component
-  #
-  # description: string; Component description, may be empty
-  #
-  # bug_count: number; The number of bugs belonging to the component
-  #
-  # initialowner: string; default assignee, may be empty
-  #
-  # initialqacontact: string; if system parameter is set to use the default
-  #                           qa contact field, then this will be it, 
-  #                           may be empty
-  #
-  # milestoneurl: string; milestone url, if milestones are in use, 
-  #                       may be empty
-  #
-  # product: string; The name of the product
-  #
-  # disallownew: boolean; Are new bugs allowed for the product flag
-  #
-  # product_description: string; Description of product
+  # comp: object; Bugzilla::Component object representing the component the
+  #               user wants to delete.
+  # prod: object; Bugzilla::Product object representing the product to
+  #               which the component belongs.
   #%]
 
-[% title = BLOCK %]Delete Component of Product '[% product FILTER html %]'
+[% title = BLOCK %]Delete Component of Product '[% prod.name FILTER html %]'
   [% END %]
 
 [% PROCESS global/header.html.tmpl
@@ -56,54 +40,58 @@
 </tr>
 <tr>
   <td valign="top">Component:</td>
-  <td valign="top">[% name FILTER html %]</td>
+  <td valign="top">[% comp.name FILTER html %]</td>
 </tr>
 <tr>
   <td valign="top">Component Description:</td>
-  <td valign="top">[% description FILTER html %]</td>
+  <td valign="top">[% comp.description FILTER html %]</td>
 </tr>
 <tr>
   <td valign="top">Default assignee:</td>
-  <td valign="top">[% initialowner FILTER html %]</td>
+  <td valign="top">[% comp.default_assignee.login FILTER html %]</td>
   
 [% IF Param('useqacontact') %]
 </tr>
 <tr>
   <td valign="top">Default QA contact:</td>
-  <td valign="top">[% initialqacontact FILTER html %]</td>
+  <td valign="top">[% comp.default_qa_contact.login FILTER html %]</td>
 [% END %]
   
 </tr>
 <tr>
   <td valign="top">Component of Product:</td>
-  <td valign="top">[% product FILTER html %]</td>
+  <td valign="top">[% prod.name FILTER html %]</td>
 
-[% IF product_description %]  
+[% IF prod.description %]
 </tr>
 <tr>
   <td valign="top">Product Description:</td>
-  <td valign="top">[% product_description FILTER html %]</td>
+  <td valign="top">[% prod.description FILTER html %]</td>
 [% END %]
 
 [% IF Param('usetargetmilestone') %]
 </tr>
 <tr>
   <td valign="top">Product Milestone URL:</td>
-  <td valign="top"><a href="[% milestoneurl FILTER uri %]">[% milestoneurl FILTER html %]</a></td>
+  <td valign="top">
+    <a href="[% prod.milestone_url FILTER uri %]">
+      [% prod.milestone_url FILTER html %]
+    </a>
+  </td>
 [% END %]
 
 </tr>
 <tr>
   <TD VALIGN="top">Closed for [% terms.bugs %]:</TD>
-  <TD VALIGN="top">[% IF $disallownew %]Yes[% ELSE %]No[% END %]</td>
+  <TD VALIGN="top">[% IF prod.disallow_new %]Yes[% ELSE %]No[% END %]</td>
 </tr>
 <tr>
   <td valign="top">[% terms.Bugs %]:</td>
   <td valign="top">
-[% IF bug_count %]
-  <a title="List of [% terms.bugs %] for component '[% name FILTER html %]'"
-     href="buglist.cgi?component=[% name FILTER url_quote %]&amp;product=
-          [%- product FILTER url_quote %]">[% bug_count %]</a>
+[% IF comp.bug_count %]
+  <a title="List of [% terms.bugs %] for component '[% comp.name FILTER html %]'"
+     href="buglist.cgi?component=[% comp.name FILTER url_quote %]&amp;product=
+          [%- prod.name FILTER url_quote %]">[% comp.bug_count %]</a>
 [% ELSE %]
   None
 [% END %]
@@ -113,21 +101,21 @@
 
 <h2>Confirmation</h2>
   
-[% IF bug_count %]
+[% IF comp.bug_count %]
 
   [% IF !Param("allowbugdeletion") %]
 
     Sorry, there
 
-    [% IF bug_count > 1 %] 
-      are [% bug_count %] [%+ terms.bugs %] 
+    [% IF comp.bug_count > 1 %] 
+      are [% comp.bug_count %] [%+ terms.bugs %] 
     [% ELSE %]
-      is [% bug_count %] [%+ terms.bug %] 
+      is [% comp.bug_count %] [%+ terms.bug %] 
     [% END %]
 
     outstanding for this component.  You must reassign 
 
-    [% IF bug_count > 1 %]
+    [% IF comp.bug_count > 1 %]
        those [% terms.bugs %] 
     [% ELSE %]
        that [% terms.bug %]
@@ -139,8 +127,8 @@
 
     <table border="0" cellpadding="20" width="70%" bgcolor="red"><tr><td>
 
-      There [% IF bug_count > 1 %] 
-        are [% bug_count %] [%+ terms.bugs %] 
+      There [% IF comp.bug_count > 1 %] 
+        are [% comp.bug_count %] [%+ terms.bugs %] 
       [% ELSE %]
         is 1 [% terms.bug %]
       [% END %]
@@ -153,19 +141,22 @@
 
 [% END %]
 
-[% IF bug_count == 0 || Param('allowbugdeletion') %]
+[% IF comp.bug_count == 0 || Param('allowbugdeletion') %]
 
   <p>Do you really want to delete this component?<p>
   
   <form method="post" action="editcomponents.cgi">
   <input type="submit" value="Yes, delete">
   <input type="hidden" name="action" value="delete">
-  <input type="hidden" name="product" value="[% product FILTER html %]">
-  <input type="hidden" name="component" value="[% name FILTER html %]">
+  <input type="hidden" name="product" value="[% prod.name FILTER html %]">
+  <input type="hidden" name="component" value="[% comp.name FILTER html %]">
   </form>
 
 [% END %]
 
-[% PROCESS admin/components/footer.html.tmpl %]
+[% PROCESS admin/components/footer.html.tmpl
+  name = comp.name
+  product = prod.name
+%]
 
 [% PROCESS global/footer.html.tmpl %] 
diff --git a/template/en/default/admin/components/edit.html.tmpl b/template/en/default/admin/components/edit.html.tmpl
index 64959ad9629d92a162b94b85bb8f485a38e7698b..8b350d9e8570f382338445cb220896c5a231d379 100644
--- a/template/en/default/admin/components/edit.html.tmpl
+++ b/template/en/default/admin/components/edit.html.tmpl
@@ -20,22 +20,15 @@
   #%]
 
 [%# INTERFACE:
-  # name: string; The name of the component.
-  #
-  # description: string; Component description, may be empty
-  #
-  # initialowner: string; default assignee, may be empty
-  #
-  # initialqacontact: string; default qa contact, may be empty
-  #
-  # product: string; The product the component belongs to
-  #
-  # bug_count: number; number of bugs belonging to the component
+  # comp: object; Bugzilla::Component object representing the component the
+  #               user wants to edit.
+  # prod: object; Bugzilla::Product object representing the product to
+  #               which the component belongs.
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% title = BLOCK %]Edit Component '[% name FILTER html %]'[% END %]
+[% title = BLOCK %]Edit Component '[% comp.name FILTER html %]'[% END %]
 [% PROCESS global/header.html.tmpl
   title = title
 %]
@@ -46,12 +39,12 @@
     <tr>
       <td valign="top">Component:</td>
       <td><input size="64" maxlength="64" name="component" value="
-      [%- name FILTER html %]"></td>
+      [%- comp.name FILTER html %]"></td>
     </tr>
     <tr>
       <td valign="top">Component Description:</td>
       <td><textarea rows="4" cols="64" wrap="virtual"
-        name="description">[% description FILTER html %]</textarea>
+        name="description">[% comp.description FILTER html %]</textarea>
       </td>
     </tr>
     <tr>
@@ -60,7 +53,7 @@
         [% INCLUDE global/userselect.html.tmpl
            name => "initialowner"
            id => "initialowner"
-           value => initialowner
+           value => comp.default_assignee.login
            size => 64
            emptyok => 1
          %]
@@ -74,7 +67,7 @@
         [% INCLUDE global/userselect.html.tmpl
            name => "initialqacontact"
            id => "initialqacontact"
-           value => initialqacontact
+           value => comp.default_qa_contact.login
            size => 64
            emptyok => 1
          %]
@@ -85,11 +78,11 @@
     <tr>
       <td>[% terms.Bugs %]:</td>
       <td>
-[% IF bug_count > 0 %]
-        <a title="Bugs in component '[% name FILTER html %]'"
+[% IF comp.bug_count > 0 %]
+        <a title="Bugs in component '[% comp.name FILTER html %]'"
            href="buglist.cgi?component=
-                [%- name FILTER url_quote %]&amp;product=
-                [%- product FILTER url_quote %]">[% bug_count %]</a>
+                [%- comp.name FILTER url_quote %]&amp;product=
+                [%- prod.name FILTER url_quote %]">[% comp.bug_count %]</a>
 [% ELSE %]
         None
 [% END %]
@@ -98,26 +91,20 @@
 
   </table>
 
-
-   <input type="hidden" name="componentold" value="
-        [%- name FILTER html %]">
-   <input type="hidden" name="descriptionold" value="
-        [%- description FILTER html %]">
-   <input type="hidden" name="initialownerold" value="
-        [%- initialowner FILTER html %]">
-   <input type="hidden" name="initialqacontactold" value="
-        [%- initialqacontact FILTER html %]">
    <input type="hidden" name="action" value="update">
-   <input type="hidden" name="product" value="[% product FILTER html %]">
+   <input type="hidden" name="componentold" value="[% comp.name FILTER html %]">
+   <input type="hidden" name="product" value="[% prod.name FILTER html %]">
    <input type="submit" value="Update"> or <a 
         href="editcomponents.cgi?action=del&amp;product=
-        [%- product FILTER url_quote %]&amp;component=
-        [%- name FILTER url_quote %]">Delete</a> this component.
-
+        [%- prod.name FILTER url_quote %]&amp;component=
+        [%- comp.name FILTER url_quote %]">Delete</a> this component.
 
 </form>
 
 [% PROCESS admin/components/footer.html.tmpl
-  no_edit_component_link = 1 %]
+  no_edit_component_link = 1
+  name = comp.name
+  product = prod.name
+%]
 
 [% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/components/list.html.tmpl b/template/en/default/admin/components/list.html.tmpl
index c321219fc7bae612a34ce9119a33fae0f813c160..0b49986796d3a718c2189a27b3c0d9270969b366 100644
--- a/template/en/default/admin/components/list.html.tmpl
+++ b/template/en/default/admin/components/list.html.tmpl
@@ -17,25 +17,15 @@
   # Rights Reserved.
   #
   # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+  #                 Frédéric Buclin <LpSolit@gmail.com>
   #%]
 
 [%# INTERFACE:
-  # components: array of hashes having the properties:
-  #   - name: string; The name of the component.
-  #   - description: string; The description of the component.
-  #   - initialowner: string; The default assignee of the component.
-  #   - initialqacontact: string; The qa_contact of the component.
-  #   - bug_count: number; The number of bugs in the component
-  #                        (if showbugcounts defined).
-  #
+  # components: array of component objects
   # showbugcounts: if defined, then bug counts should be included in the table
-  #
   # product: string; the name of the product we are editing components for
   #%]
 
-[% USE Bugzilla %]
-[% cgi = Bugzilla.cgi %]
-
 [% PROCESS global/variables.none.tmpl %]
 
 [% title = BLOCK %]Select component of product
@@ -96,10 +86,31 @@
      contentlink => delete_contentlink
    }) %]
 
+[%# Overrides the initialowner and the initialqacontact with right values %]
+[% overrides.initialowner = [] %]
+[% overrides.initialqacontact = [] %]
+
+[% FOREACH component = components %]
+  [% overrides.initialowner.push({
+       match_value => component.name
+       match_field => 'name'
+       override_content => 1
+       content => component.default_assignee.login
+     })
+  %]
+  [% overrides.initialqacontact.push({
+       match_value => component.name
+       match_field => 'name'
+       override_content => 1
+       content => component.default_qa_contact.login
+     })
+  %]
+[% END %]
+
 [% PROCESS admin/table.html.tmpl
      columns = columns
      data = components
-     footer = footer_row
+     overrides = overrides
 %]
 
 <p><a href="editcomponents.cgi?action=add&amp;product=[% product FILTER url_quote %]">Add</a>
@@ -107,8 +118,8 @@
 
 [% IF ! showbugcounts %]
 
-<p><a href="editcomponents.cgi?showbugcounts=1&amp;[% cgi.query_string %]">
-    Redisplay table with [% terms.bug %] counts (slower)</a></p>
+  <p><a href="editcomponents.cgi?product=[% product FILTER url_quote %]&amp;showbugcounts=1">
+      Redisplay table with [% terms.bug %] counts (slower)</a></p>
 
 [% END %]
 
diff --git a/template/en/default/admin/components/select-product.html.tmpl b/template/en/default/admin/components/select-product.html.tmpl
index 37a33e8d9573552bc0fd466ec52cb7a66c0808ef..ea9342dcd335d0071fec54c16e1ab6d955d2955d 100644
--- a/template/en/default/admin/components/select-product.html.tmpl
+++ b/template/en/default/admin/components/select-product.html.tmpl
@@ -16,23 +16,16 @@
   # Copyright (C) 1998 Netscape Communications Corporation. All
   # Rights Reserved.
   #
-  # Contributor(s): Gavin Shelley (bugzilla@chimpychompy.org)
+  # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+  #                 Frédéric Buclin <LpSolit@gmail.com>
   #
   #%]
 
 [%# INTERFACE:
-  # products: array of hashes having the properties:
-  #   - name: string; The name of the product.
-  #   - description: string; The description of the product.
-  #   - bug_count: number; The number of bugs for the product (if 
-  #                showbugcounts defined).
-  #
+  # products: array of product objects
   # showbugcounts: if defined, then bug counts should be included in the table
   #%]
 
-[% USE Bugzilla %]
-[% cgi = Bugzilla.cgi %]
-
 [% PROCESS global/variables.none.tmpl %]
 
 [% PROCESS global/header.html.tmpl
@@ -55,26 +48,24 @@
 
 [% IF showbugcounts %]
 
-[%  columns.push({
+  [% columns.push({
       name => 'bug_count'
       heading => "$terms.Bugs"
       align => "right"
       contentlink => "buglist.cgi?product=%%name%%"
-    }) %]
+    })
+  %]
 
 [% END %]
 
 [% PROCESS admin/table.html.tmpl
      columns = columns
      data = products
-     footer = footer_row
 %]
 
-[% IF ! showbugcounts %]
-
-<p><a href="editcomponents.cgi?showbugcounts=1&amp;[% cgi.query_string %]">
-    Redisplay table with [% terms.bug %] counts (slower)</a></p>
-
+[% IF !showbugcounts %]
+  <p><a href="editcomponents.cgi?showbugcounts=1">
+      Redisplay table with [% terms.bug %] counts (slower)</a></p>
 [% END %]
 
 <p>
diff --git a/template/en/default/admin/fieldvalues/CVS/Entries b/template/en/default/admin/fieldvalues/CVS/Entries
index ecef91a8752ad894e4eeacf189104f931eb4c76f..0816cc39e5b8f3a831863adb22b718aa40e70699 100644
--- a/template/en/default/admin/fieldvalues/CVS/Entries
+++ b/template/en/default/admin/fieldvalues/CVS/Entries
@@ -1,10 +1,10 @@
-/confirm-delete.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
-/created.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
-/deleted.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
-/edit.html.tmpl/1.2.2.1/Thu Sep  1 21:57:33 2005//TBUGZILLA-2_20
-/footer.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
-/select-field.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
-/updated.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
+/created.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
+/deleted.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.3/Thu Sep  1 22:00:54 2005//TBUGZILLA-2_21_1
+/footer.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
+/select-field.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/fieldvalues/CVS/Tag b/template/en/default/admin/fieldvalues/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/fieldvalues/CVS/Tag
+++ b/template/en/default/admin/fieldvalues/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/flag-type/CVS/Entries b/template/en/default/admin/flag-type/CVS/Entries
index 8620eb364a3896bef69a3c91b53da19c50a4d4ce..ba7189b5adf00379bc1d3c04e70c737c569a9f03 100644
--- a/template/en/default/admin/flag-type/CVS/Entries
+++ b/template/en/default/admin/flag-type/CVS/Entries
@@ -1,4 +1,4 @@
-/confirm-delete.html.tmpl/1.5/Sun Jan 18 18:39:14 2004//TBUGZILLA-2_20
-/edit.html.tmpl/1.11/Thu May  5 19:20:45 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.10/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.5/Sun Jan 18 18:39:14 2004//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.12/Tue Aug 30 16:47:33 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.10/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/flag-type/CVS/Tag b/template/en/default/admin/flag-type/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/flag-type/CVS/Tag
+++ b/template/en/default/admin/flag-type/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/flag-type/edit.html.tmpl b/template/en/default/admin/flag-type/edit.html.tmpl
index 8491a1e7fa1bd6bf84d273fb6818b4593ed60c08..6016fcfaef1c641612c563cd04210ed72173be62 100644
--- a/template/en/default/admin/flag-type/edit.html.tmpl
+++ b/template/en/default/admin/flag-type/edit.html.tmpl
@@ -195,8 +195,8 @@
       <th>Grant Group:</th>
       <td>
         the group allowed to grant/deny flags of this type
-        (to allow all users to grant/deny these flags, leave this empty)<br>
-        <input type="text" name="grant_gid" value="[% type.grant_gid FILTER html %]" size="50" maxlength="255">
+        (to allow all users to grant/deny these flags, select no group)<br>
+        [% PROCESS select selname = "grant_gid" %]
       </td>
     </tr>
 
@@ -204,9 +204,9 @@
       <th>Request Group:</th>
       <td>
         if flags of this type are requestable, the group allowed to request them
-        (to allow all users to request these flags, leave this empty)<br>
+        (to allow all users to request these flags, select no group)<br>
         Note that the request group alone has no effect if the grant group is not defined!<br>
-        <input type="text" name="request_gid" value="[% type.request_gid FILTER html %]" size="50" maxlength="255">
+        [% PROCESS select selname = "request_gid" %]
       </td>
     </tr>
 
@@ -225,3 +225,19 @@
 </form>
 
 [% PROCESS global/footer.html.tmpl %]
+
+
+[%############################################################################%]
+[%# Block for SELECT fields                                                  #%]
+[%############################################################################%]
+
+[% BLOCK select %]
+  <select name="[% selname %]" id="[% selname %]">
+    <option value="">(no group)</option>
+    [% FOREACH group = groups %]
+      <option value="[% group.name FILTER html %]"
+        [% " selected" IF type.${selname} == group.name %]>[% group.name FILTER html %]
+      </option>
+    [% END %]
+  </select>
+[% END %]
diff --git a/template/en/default/admin/groups/CVS/Entries b/template/en/default/admin/groups/CVS/Entries
index 4ebc615ceff75ffe92252eb0eb5d2e2b2ddde336..a945f9f8d6f3fb883bec657dea1b71ab306024ce 100644
--- a/template/en/default/admin/groups/CVS/Entries
+++ b/template/en/default/admin/groups/CVS/Entries
@@ -1,9 +1,9 @@
-/change.html.tmpl/1.1/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_20
-/create.html.tmpl/1.4/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_20
-/created.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_20
-/delete.html.tmpl/1.4.4.1/Sun Jul 31 23:51:40 2005//TBUGZILLA-2_20
-/deleted.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_20
-/edit.html.tmpl/1.5/Fri Feb 18 16:38:42 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_20
-/remove.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_20
+/change.html.tmpl/1.1/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_21_1
+/create.html.tmpl/1.4/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_21_1
+/created.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_21_1
+/delete.html.tmpl/1.5/Sun Jul 31 23:48:17 2005//TBUGZILLA-2_21_1
+/deleted.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.5/Fri Feb 18 16:38:42 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.2/Tue Aug 30 16:39:07 2005//TBUGZILLA-2_21_1
+/remove.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/groups/CVS/Tag b/template/en/default/admin/groups/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/groups/CVS/Tag
+++ b/template/en/default/admin/groups/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/groups/list.html.tmpl b/template/en/default/admin/groups/list.html.tmpl
index 9e6520244d29f23f622c25cab32c6589bb299a6a..c183e4aff40cc329ddbd2e15716207316802d494 100644
--- a/template/en/default/admin/groups/list.html.tmpl
+++ b/template/en/default/admin/groups/list.html.tmpl
@@ -27,7 +27,7 @@
   #   - id: number. The ID of the group.
   #   - name: string. The name of the group.
   #   - description: string. The description of the group.
-  #   - regexp: string. The user regexp for the given group.
+  #   - userregexp: string. The user regexp for the given group.
   #   - isactive: boolean int. Specifies if the group is active or not.
   #   - isbuggroup: boolean int. Specifies if it can be used for bugs.
   #%]
@@ -52,7 +52,7 @@
     <tr>
       <td>[% group.name FILTER html %]</td>
       <td>[% group.description FILTER html %]</td>
-      <td>[% group.regexp FILTER html %]&nbsp</td>
+      <td>[% group.userregexp FILTER html %]&nbsp</td>
 
       <td align="center">
         [% IF (group.isactive != 0) && (group.isbuggroup) %]
diff --git a/template/en/default/admin/keywords/CVS/Entries b/template/en/default/admin/keywords/CVS/Entries
index 029822ee884ff744938375740e35deb927f5c3f9..6039e6c49dfdfc25f975a67659d770f7865d8bf4 100644
--- a/template/en/default/admin/keywords/CVS/Entries
+++ b/template/en/default/admin/keywords/CVS/Entries
@@ -1,7 +1,7 @@
-/confirm-delete.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20
-/create.html.tmpl/1.4/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20
-/created.html.tmpl/1.2/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20
-/edit.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20
-/list.html.tmpl/1.6/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_20
-/rebuild-cache.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_21_1
+/create.html.tmpl/1.4/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_21_1
+/created.html.tmpl/1.2/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.4/Sun Jul 10 23:41:12 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.7/Sun Jul 10 23:41:12 2005//TBUGZILLA-2_21_1
+/rebuild-cache.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/keywords/CVS/Tag b/template/en/default/admin/keywords/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/keywords/CVS/Tag
+++ b/template/en/default/admin/keywords/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/keywords/edit.html.tmpl b/template/en/default/admin/keywords/edit.html.tmpl
index 0c24aeca9fd8aaf10fa8c8e2679ec796080a616c..3809563c2c33b13884b7def8c15675666ee5c948 100755
--- a/template/en/default/admin/keywords/edit.html.tmpl
+++ b/template/en/default/admin/keywords/edit.html.tmpl
@@ -49,8 +49,9 @@
     <tr>
       <th align="right">[% terms.Bugs %]:</th>
       <td>
-        [% IF bug_count %]
-          [% bug_count %]
+        [% IF bug_count > 0 %]
+          <a href="buglist.cgi?keywords=[% name FILTER url_quote %]">
+            [% bug_count %]</a>
         [% ELSE %]
           none
         [% END %]
diff --git a/template/en/default/admin/keywords/list.html.tmpl b/template/en/default/admin/keywords/list.html.tmpl
index 113b90433593ac1a50138e25aa78128cf23ef75a..84eb6e9f19cd05f7bef67f4fc771f46c84474bdb 100755
--- a/template/en/default/admin/keywords/list.html.tmpl
+++ b/template/en/default/admin/keywords/list.html.tmpl
@@ -49,6 +49,7 @@
        name => "bug_count"
        heading => "Bugs"
        align => "right"
+       contentlink => "buglist.cgi?keywords=%%name%%"
      },
      { 
        heading => "Action" 
diff --git a/template/en/default/admin/milestones/CVS/Entries b/template/en/default/admin/milestones/CVS/Entries
index 7613257103206f8a75a8351e3dac8c4de0bd9778..b7ae1c83c25a829f6351d5cf068d5b1f74ad2e38 100644
--- a/template/en/default/admin/milestones/CVS/Entries
+++ b/template/en/default/admin/milestones/CVS/Entries
@@ -1,10 +1,10 @@
-/confirm-delete.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20
-/created.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20
-/deleted.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_20
-/edit.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20
-/footer.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20
-/list.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20
-/select-product.html.tmpl/1.2/Thu Sep 23 19:14:13 2004//TBUGZILLA-2_20
-/updated.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.4/Thu Jul 28 00:35:50 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.2/Tue Aug 23 12:39:17 2005//TBUGZILLA-2_21_1
+/created.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_21_1
+/deleted.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.3/Tue Aug 23 12:39:17 2005//TBUGZILLA-2_21_1
+/footer.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_21_1
+/list.html.tmpl/1.3/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_21_1
+/select-product.html.tmpl/1.3/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/milestones/CVS/Tag b/template/en/default/admin/milestones/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/milestones/CVS/Tag
+++ b/template/en/default/admin/milestones/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/milestones/confirm-delete.html.tmpl b/template/en/default/admin/milestones/confirm-delete.html.tmpl
index eda5add36a17662e11686b988fd2aa3140945c1b..61601d18524ea60608b594f3b94f5d2d65bf4702 100644
--- a/template/en/default/admin/milestones/confirm-delete.html.tmpl
+++ b/template/en/default/admin/milestones/confirm-delete.html.tmpl
@@ -23,8 +23,6 @@
 [%# INTERFACE:
   # name: string; The name of the milestone
   #
-  # default_milestone: string; The default milestone for the product
-  #
   # bug_count: number; The number of bugs targetted at the milestone
   #
   # product: string; The name of the product
diff --git a/template/en/default/admin/milestones/create.html.tmpl b/template/en/default/admin/milestones/create.html.tmpl
index ac707c19582ea926acef5498b6fb6e2d8546daf9..d8779dd544f161ee8941c5a72753635cd78dee19 100644
--- a/template/en/default/admin/milestones/create.html.tmpl
+++ b/template/en/default/admin/milestones/create.html.tmpl
@@ -29,9 +29,10 @@
 [% PROCESS global/header.html.tmpl
   title = title
   h2 = h2
+  onload = "document.forms['f'].milestone.focus()"
 %]
 
-<form method="post" action="editmilestones.cgi">
+<form name="f" method="post" action="editmilestones.cgi">
   <table border="0" cellpadding="4" cellspacing="0">
     <tr>
       <th align="right"><label for="milestone">Milestone:</label></th>
diff --git a/template/en/default/admin/milestones/edit.html.tmpl b/template/en/default/admin/milestones/edit.html.tmpl
index 6b5ec8fb030186f493c5c15aca83285e55c896e2..f49cacf4a9832c16e8317ee7ffec46b275d6561b 100644
--- a/template/en/default/admin/milestones/edit.html.tmpl
+++ b/template/en/default/admin/milestones/edit.html.tmpl
@@ -33,9 +33,10 @@
                    [%- product FILTER html %]'[% END %]
 [% PROCESS global/header.html.tmpl
   title = title
+  onload = "document.forms['f'].milestone.select()"
 %]
 
-<form method="post" action="editmilestones.cgi">
+<form name="f" method="post" action="editmilestones.cgi">
   <table border="0" cellpadding="4" cellspacing="0">
 
     <tr>
@@ -52,7 +53,6 @@
   </table>
 
   <input type="hidden" name="milestoneold" value="[% name FILTER html %]">
-  <input type="hidden" name="sortkeyold" value="[% sortkey FILTER html %]">
   <input type="hidden" name="action" value="update">
   <input type="hidden" name="product" value="[% product FILTER html %]">
   <input type="submit" value="Update">
diff --git a/template/en/default/admin/milestones/list.html.tmpl b/template/en/default/admin/milestones/list.html.tmpl
index 160dcd6da77ae75036df064fa7b8fcd654347b22..b9311fc1a439bcd4ea77fd14c7a235cf19b7f2c2 100644
--- a/template/en/default/admin/milestones/list.html.tmpl
+++ b/template/en/default/admin/milestones/list.html.tmpl
@@ -17,13 +17,12 @@
   # Rights Reserved.
   #
   # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+  #                 Frédéric Buclin <LpSolit@gmail.com>
   #%]
 
 [%# INTERFACE:
-  # milestones: array of hashes having the following properties:
-  #   - name: string; The name of the milestone.
-  #   - sortkey: number; The sortkey used to order the milestone.
-  #
+  # milestones: array of milestone objects
+  # showbugcounts: if defined, then bug counts should be included in the table
   # product: string; the name of the product we are editing milestones for
   #%]
 
@@ -42,6 +41,8 @@
   [%- product FILTER url_quote %]&amp;milestone=%%name%%[% END %]
 [% delete_contentlink = BLOCK %]editmilestones.cgi?action=del&amp;product=
   [%- product FILTER url_quote %]&amp;milestone=%%name%%[% END %]
+[% bug_count_contentlink = BLOCK %]buglist.cgi?target_milestone=%%name%%&amp;product=
+  [%- product FILTER url_quote %][% END %]
 
 
 [% columns = [
@@ -53,25 +54,59 @@
      { 
        name => "sortkey"
        heading => "Sortkey"
-     },
+     }
    ]
 %]
 
+[% IF showbugcounts %]
+
+  [% columns.push({
+       name => "bug_count"
+       heading => "$terms.Bugs"
+       align => "right"
+       contentlink => bug_count_contentlink
+     })
+  %]
+
+[% END %]
+
 [% columns.push({
-     heading => "Action"
-     content => "Delete"
-     contentlink => delete_contentlink
-   }) %]
+       name => "action"
+       heading => "Action"
+       content => "Delete"
+       contentlink => delete_contentlink
+     })
+%]
+
+[%# We want to override the usual 'Delete' link for the default
+    milestone %]
+[% overrides.action = [ {
+     match_value => "$default_milestone"
+     match_field => 'name'
+     override_content => 1
+     content => "(Default milestone)"
+     override_contentlink => 1
+     contentlink => undef
+   } ]
+%] 
 
 [% PROCESS admin/table.html.tmpl
      columns = columns
      data = milestones
+     overrides = overrides
 %]
 
 <p>
 
+[% IF ! showbugcounts %]
+
+  <p><a href="editmilestones.cgi?product=[% product FILTER url_quote %]&amp;showbugcounts=1">
+      Redisplay table with [% terms.bug %] counts (slower)</a></p>
+
+[% END %]
+
 [% PROCESS admin/milestones/footer.html.tmpl
   no_edit_other_milestones_link = 1
- %]
+%]
 
 [% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/milestones/select-product.html.tmpl b/template/en/default/admin/milestones/select-product.html.tmpl
index b2510ded966210226fdee4330c9a495ee23ddf25..508af6881a0e50b07eabb5b7e02e8b386da087aa 100644
--- a/template/en/default/admin/milestones/select-product.html.tmpl
+++ b/template/en/default/admin/milestones/select-product.html.tmpl
@@ -16,28 +16,22 @@
   # Copyright (C) 1998 Netscape Communications Corporation. All
   # Rights Reserved.
   #
-  # Contributor(s): Gavin Shelley (bugzilla@chimpychompy.org)
+  # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+  #                 Frédéric Buclin <LpSolit@gmail.com>
   #
   #%]
 
 [%# INTERFACE:
-  # products: array of hashes having the following properties:
-  #   - name: string; The name of the product.
-  #   - description: string; The description of the product.
+  # products: array of product objects
+  # showbugcounts: if defined, then bug counts should be included in the table
   #%]
 
-[% USE Bugzilla %]
-[% cgi = Bugzilla.cgi %]
-
 [% PROCESS global/variables.none.tmpl %]
 
 [% PROCESS global/header.html.tmpl
   title = "Edit milestones for which product?"
 %]
 
-[% bug_count_contentlink = BLOCK %]buglist.cgi?target_milestone=%%name%%&amp;product=
-  [%- product FILTER url_quote %][% END %]
-
 [% columns = [
      { 
        name => "name"
@@ -52,11 +46,28 @@
    ]
 %]
 
+[% IF showbugcounts %]
+
+  [% columns.push({
+      name => 'bug_count'
+      heading => "$terms.Bugs"
+      align => "right"
+      contentlink => "buglist.cgi?product=%%name%%"
+    })
+  %]
+
+[% END %]
+
 [% PROCESS admin/table.html.tmpl
      columns = columns
      data = products
 %]
 
+[% IF !showbugcounts %]
+  <p><a href="editmilestones.cgi?showbugcounts=1">
+      Redisplay table with [% terms.bug %] counts (slower)</a></p>
+[% END %]
+
 <p>
 
 [% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/products/CVS/Entries b/template/en/default/admin/products/CVS/Entries
index 9a96ef1e13a214c7d110ebe811ceb42f3136aefe..059f0bb0d511c121b5ebac7a1da7c7d3b6d1bdc8 100644
--- a/template/en/default/admin/products/CVS/Entries
+++ b/template/en/default/admin/products/CVS/Entries
@@ -1,6 +1,11 @@
-/confirm-delete.html.tmpl/1.1/Thu Jul  7 21:03:04 2005//TBUGZILLA-2_20
-/deleted.html.tmpl/1.1.2.1/Mon Sep 12 19:10:48 2005//TBUGZILLA-2_20
-/footer.html.tmpl/1.3.2.1/Mon Sep 12 19:10:48 2005//TBUGZILLA-2_20
-/list-classifications.html.tmpl/1.1/Thu Mar 17 14:47:06 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.1/Wed Feb 16 18:05:06 2005//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.1/Thu Jul  7 21:03:04 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.1/Thu Sep  1 21:33:07 2005//TBUGZILLA-2_21_1
+/created.html.tmpl/1.1/Mon Sep 12 13:50:41 2005//TBUGZILLA-2_21_1
+/deleted.html.tmpl/1.2/Mon Sep 12 19:06:29 2005//TBUGZILLA-2_21_1
+/edit-common.html.tmpl/1.1/Thu Sep  1 21:33:07 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.3/Tue Sep 27 22:30:20 2005//TBUGZILLA-2_21_1
+/footer.html.tmpl/1.5/Mon Sep 12 19:06:29 2005//TBUGZILLA-2_21_1
+/list-classifications.html.tmpl/1.1/Thu Mar 17 14:47:06 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.1/Wed Feb 16 18:05:06 2005//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.1/Thu Sep  8 16:58:57 2005//TBUGZILLA-2_21_1
 D/groupcontrol////
diff --git a/template/en/default/admin/products/CVS/Tag b/template/en/default/admin/products/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/products/CVS/Tag
+++ b/template/en/default/admin/products/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/products/create.html.tmpl b/template/en/default/admin/products/create.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..8dc6615b4eb3df2e1778e6c6156dc17d8496f3a2
--- /dev/null
+++ b/template/en/default/admin/products/create.html.tmpl
@@ -0,0 +1,64 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # Contributor(s): Gabriel S. Oliveira <gabriel@async.com.br>
+  #%]
+
+[%# INTERFACE:
+  # classification: string; name of the classification in which the new
+  #                         product is  created.
+  #
+  #%]
+
+[% title = BLOCK %]Add Product[% END %]
+
+[% PROCESS global/header.html.tmpl
+  title = title
+%]
+
+[% DEFAULT
+  product.votesperuser = "0",
+  product.maxvotesperbug  = "10000",
+  product.votestoconfirm = "0",
+  version = "unspecified",
+  product.defaultmilestone = "---"
+%]
+
+<form method="post" action="editproducts.cgi">
+  <table border="0" cellpadding="4" cellspacing="0">
+
+    [% PROCESS "admin/products/edit-common.html.tmpl" %]
+
+    <tr>
+      <th align="right">Version:</th>
+      <td><input size="64" maxlength="255" name="version" 
+                value="[% version FILTER html %]">
+      </td>
+    </tr>
+    <tr>
+      <th align="right">Create chart datasets for this product:</th>
+      <td><input type="checkbox" name="createseries" value="1"></td>
+    </tr>
+  </table>
+
+  <input type="submit" value="Add">
+  <input type="hidden" name="subcategory" value="-All-">
+  <input type="hidden" name="open_name"   value="All Open">
+  <input type="hidden" name="action" value="new">
+  <input type="hidden" name="classification"
+        value="[% classification FILTER html %]">
+</form>
+
+[% PROCESS "admin/products/footer.html.tmpl" no_add_product_link = 1 %]
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/products/created.html.tmpl b/template/en/default/admin/products/created.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..e4229f8a23bd47b42da617c5b44f56fdc38605f0
--- /dev/null
+++ b/template/en/default/admin/products/created.html.tmpl
@@ -0,0 +1,31 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # Contributor(s): Gabriel S. Oliveira <gabriel@async.com.br>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = 'New Product Created'
+%]
+<br>
+<div style='border: 1px red solid; padding: 1ex;'>
+  <b>You will need to   
+   <a href="editcomponents.cgi?action=add&product=[% product FILTER url_quote %]">
+     add at least one component
+   </a> before you can enter [% terms.bugs %] against this product
+  </b>
+</div>
+
+[% PROCESS "admin/products/footer.html.tmpl" name = product %]
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/products/edit-common.html.tmpl b/template/en/default/admin/products/edit-common.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..cbbbd8232b4396df35934619c669da189002514d
--- /dev/null
+++ b/template/en/default/admin/products/edit-common.html.tmpl
@@ -0,0 +1,89 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # Contributor(s): Jack Nerad     <jnerad@bellsouth.net>
+  #                 Tiago R. Mello <tiago@async.com.br>
+  #                 Gabriel S. Oliveira <gabriel@async.com.br>
+  #%]
+
+[%# INTERFACE:
+  # classification: string; name of classification product is in.
+  #        product: array;  an array of product objects.
+  #%]
+
+[% IF Param('useclassification') %]
+  <tr>
+    <th align="right"><b>Classification:</b></th>
+    <td><b>[% classification FILTER html %]</b></td>
+  </tr>
+[% END %]
+    
+<tr>
+  <th align="right">Product:</th>
+  <td><input size="64" maxlength="64" name="product" 
+             value="[% product.name FILTER html %]">
+  </td>
+</tr>
+<tr>
+  <th align="right">Description:</th>
+  <td><textarea rows="4" cols="64" wrap="virtual" name="description">
+        [% product.description FILTER none %]</textarea>
+  </td>
+</tr>
+
+[% IF Param('usetargetmilestone') -%]
+  <tr>
+    <th align="right">URL describing milestones for this product:</th>
+    <td><input type="text" size="64" maxlength="255" name="milestoneurl"
+               value="[% product.milestoneurl FILTER html %]">
+    </td>
+  </tr>
+  <tr>
+    <th align="right">Default milestone:</th>
+    <td><input type="text" size="20" maxlength="20" name="defaultmilestone"
+              value="[% product.defaultmilestone FILTER html %]">
+    </td>
+  </tr>
+[% END %]
+    
+<tr>
+  <th align="right">Closed for [% terms.bug %] entry:</th>
+  <td><input type="checkbox" name="disallownew" value="1"
+       [% IF product.disallownew == "1" %]
+             checked="checked"[% END %]>
+  </td>
+</tr>
+<tr>
+  <th align="right">Maximum votes per person:</th>
+  <td><input size="5" maxlength="5" name="votesperuser" 
+             value="[% product.votesperuser FILTER html %]">
+  </td>
+</tr>
+<tr>
+  <th align="right">
+    Maximum votes a person can put on a single [% terms.bug %]:
+  </th>
+  <td><input size="5" maxlength="5" name="maxvotesperbug" 
+             value="[% product.maxvotesperbug FILTER html %]">
+  </td>
+</tr>
+<tr>
+  <th align="right">
+    Number of votes [% terms.abug %] in this product needs to
+    automatically get out of the
+    <a href="page.cgi?id=fields.html#status">UNCONFIRMED</a> state:
+  </th>
+  <td><input size="5" maxlength="5" name="votestoconfirm" 
+             value="[% product.votestoconfirm FILTER html %]">
+  </td>
+</tr>
diff --git a/template/en/default/admin/products/edit.html.tmpl b/template/en/default/admin/products/edit.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..15843bb448708636af0d7eb996fd488965d99dc2
--- /dev/null
+++ b/template/en/default/admin/products/edit.html.tmpl
@@ -0,0 +1,153 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # Contributor(s): Jack Nerad     <jnerad@bellsouth.net>
+  #                 Tiago R. Mello <tiago@async.com.br>
+  #                 Gabriel S. Oliveira <gabriel@async.com.br>
+  #%]
+
+[%# INTERFACE:
+  # classification: string; name of classification product is in.
+  #        product: an array of product objects.
+  #     components: an array of component object(s) related to the product.
+  #         groups: an array of group objects related to the product.
+  #       versions: an array of version objects related to product.
+  #     milestones: an array of milestones objects related to product.
+  #      bug_count: integer; number of bugs in this product.
+  #%]
+
+[% title = BLOCK %]Edit Product[% END %]
+
+[% PROCESS global/header.html.tmpl
+  title = title
+%]
+
+<form method="post" action="editproducts.cgi">
+  <table border="0" cellpadding="4" cellspacing="0">
+
+    [% PROCESS "admin/products/edit-common.html.tmpl" %]
+
+    <tr>
+      <th align="right" valign="top">
+        <a href="editcomponents.cgi?product=[% product.name FILTER url_quote %]">
+        Edit components:
+        </a>
+      </th>
+      <td>
+        [% IF components.size -%]
+          [% FOREACH component = components %]
+            <b>[% component.name FILTER html %]:</b>&nbsp;
+            [% IF component.description %]
+              [% component.description FILTER none %]
+            [% ELSE %]
+              <font color="red">description missing</font>
+            [% END %]
+            <br>
+          [% END %]
+        [% ELSE %]
+          <font color="red">missing</font>
+        [% END %]
+      </td>
+    </tr>
+    <tr>
+      <th align="right" valign="top">
+        <a href="editversions.cgi?product=[% product.name FILTER url_quote %]">Edit
+versions:</a>
+      </th>
+      <td>
+        [%- IF versions.size -%]
+          [% FOREACH v = versions %]
+            [% v FILTER html %]
+            <br>
+          [% END %]
+        [% ELSE %]
+          <font color="red">missing</font>
+        [% END %]
+      </td>
+    </tr>
+    [% IF Param('usetargetmilestone') %]
+      <tr>
+        <th align="right" valign="top">
+          <a href="editmilestones.cgi?product=[% product.name FILTER url_quote %]">
+          Edit milestones:</a>
+        </th>
+        <td>
+          [%- IF milestones.size -%]
+            [%- FOREACH m = milestones -%]
+              [% m FILTER html %]
+            <br>
+            [% END %]
+          [% ELSE %]
+            <font color="red">missing</font>
+          [% END %]
+        </td>
+      </tr>
+    [% END %]
+    <tr>
+      <th align="right" valign="top">
+        <a href="editproducts.cgi?action=editgroupcontrols&product=
+          [%- product.name FILTER url_quote %]&classification=
+          [%- classification FILTER url_quote %]">
+          Edit Group Access Controls:
+        </a>
+      </th>
+      <td>
+        [% IF groups.size %]
+          [% FOREACH g = groups %]
+            <b>[% g.name FILTER html %]:</b>&nbsp;
+            [% IF g.isactive %]
+              [% g.membercontrol FILTER html %]/
+              [% g.othercontrol FILTER html %]
+              [% IF g.entry %], ENTRY[% END %]
+              [% IF g.canedit %], CANEDIT[% END %]
+            [% ELSE %]
+              DISABLED
+            [% END %]
+            <br>
+          [% END %]
+        [% ELSE %]
+          no groups
+        [% END %]
+      </td>
+    </tr>
+    <tr>
+      <th align="right">[% terms.Bugs %]:</th>
+      <td>[% bug_count FILTER html %]</td>
+    </tr>
+  </table>
+  
+  <input type="hidden" name="productold" 
+        value="[% product.name FILTER html %]">
+  <input type="hidden" name="descriptionold"
+         value="[% product.description FILTER html %]">
+  <input type="hidden" name="milestoneurlold" 
+         value="[% product.milestoneurl FILTER html %]">
+  <input type="hidden" name="disallownewold"
+         value="[% product.disallownew FILTER html %]">
+  <input type="hidden" name="votesperuserold"
+       value="[% product.votesperuser FILTER html %]">
+  <input type="hidden" name="maxvotesperbugold" 
+         value="[% product.maxvotesperbug FILTER html %]">
+  <input type="hidden" name="votestoconfirmold" 
+         value="[% product.votestoconfirm FILTER html %]">
+  <input type="hidden" name="defaultmilestoneold"
+         value="[% product.defaultmilestone FILTER html %]">
+  <input type="hidden" name="action" value="update">
+  <input type="hidden" name="classification"
+         value="[% classification FILTER html %]">
+  <input type="submit" name="submit" value="Update">
+</form>
+  
+[% PROCESS "admin/products/footer.html.tmpl" no_add_product_link = 1 %]
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/products/groupcontrol/CVS/Entries b/template/en/default/admin/products/groupcontrol/CVS/Entries
index 94515b6010ab544d331dc4f4df94350eb0afc5eb..f60e9ddedd93fd85d1b0bb381619f98c0b4837ee 100644
--- a/template/en/default/admin/products/groupcontrol/CVS/Entries
+++ b/template/en/default/admin/products/groupcontrol/CVS/Entries
@@ -1,3 +1,4 @@
-/confirm-edit.html.tmpl/1.5/Mon Feb  2 21:57:28 2004//TBUGZILLA-2_20
-/edit.html.tmpl/1.5/Thu Feb 17 16:31:02 2005//TBUGZILLA-2_20
+/confirm-edit.html.tmpl/1.5/Mon Feb  2 21:57:28 2004//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.5/Thu Feb 17 16:31:02 2005//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.1/Fri Sep 16 16:14:18 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/products/groupcontrol/CVS/Tag b/template/en/default/admin/products/groupcontrol/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/products/groupcontrol/CVS/Tag
+++ b/template/en/default/admin/products/groupcontrol/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/products/groupcontrol/updated.html.tmpl b/template/en/default/admin/products/groupcontrol/updated.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..71ae0d7eb217d6039facfc26cec0aee7b6faaccc
--- /dev/null
+++ b/template/en/default/admin/products/groupcontrol/updated.html.tmpl
@@ -0,0 +1,53 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # Contributor(s): André Batosti <batosti@async.com.br> 
+  #
+  #%]
+
+[%# INTERFACE:
+  #      removed_na: array of hashes; groups not applicable for the product.  
+  # added_mandatory: array of hashes; groups mandatory for the product.  
+  #  classification: string; product classification name.
+  #         product: string; name of the product.
+  #%]
+
+[% title = BLOCK %]
+    Update group access controls for [% product FILTER html %]
+[% END %]
+
+[% PROCESS global/header.html.tmpl
+  title = title
+%]
+<p>
+[% IF removed_na.size > 0 %]
+  [% FOREACH g = removed_na %]
+    Removing [% terms.bugs %] from group '[% g.name FILTER html %]' which
+    no longer applies to this product<p>
+    [% g.bug_count FILTER html %] [%+ terms.bugs %] removed<p>
+  [% END %]
+[% END %]
+
+[% IF added_mandatory.size > 0 %]
+  [% FOREACH g = added_mandatory %]
+    Adding [% terms.bugs %] to group '[% g.name FILTER html %]' which is 
+    mandatory for this product<p>
+    [% g.bug_count FILTER html %] [%+ terms.bugs %] added<p>
+  [% END %]
+[% END %]
+
+Group control updates done<p>
+
+[% PROCESS admin/products/footer.html.tmpl name = product %]
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/products/updated.html.tmpl b/template/en/default/admin/products/updated.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..7c00c4ae53354dbb4ce1fb3b351444fdb6b15c1a
--- /dev/null
+++ b/template/en/default/admin/products/updated.html.tmpl
@@ -0,0 +1,220 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+  #%]
+
+[%# INTERFACE:
+  #
+  # updated_XXX : boolean; is true when the 'XXX' field has been updated.
+  # old_XXX : ... string; old value of the field 'XXX'.
+  # new_XXX : ... string; new value of the field 'XXX'.
+  #
+  # updated_product: boolean; the name of the product was updated
+  #
+  # updated_description: boolean; the product description was updated
+  #
+  # updated_milestoneurl: boolean; the product milestone URL was updated
+  #
+  # updated_votesperuser: boolean; the votes per user was updated
+  #
+  # updated_maxvotesperbug: boolean; the max votes per bug was updated
+  #
+  # updated_votestoconfirm: boolean; the votes to confirm a bug was updated
+  #
+  # updated_defaultmilestone: boolean; the default milestone was updated
+  #
+  # updated_bugsubmitstatus: boolean; the open/closed for new bugs status 
+  #                          was updated (no 'old_XXX' value)
+  #
+  # classification: string; The product classification (may be empty or missing)
+  #
+  # changer: string; user id of the user making the changes, used for mailing
+  #          bug changes if necessary
+  #
+  # name: string; the product name
+  #
+  # checkvotes: boolean; is true if vote related fields have changed. If so, 
+  #             then the following parameters will be specified:
+  #
+  # toomanyvotes: list of hashes, each one with an 'id' and a 'name' hash key
+  #               detailing the bug id and the username of users who had too
+  #               many votes for a bug
+  #
+  # toomanytotalvotes: list of hashes, each one with an 'id' and a 'name' hash key
+  #                    detailing the bug id and the username of users who had
+  #                    too many total votes
+  #
+  # confirmedbugs: list of bug ids, which were confirmed by votes
+  #
+  #%]
+
+[% IF classification %]
+  [% classification_url_part = BLOCK %]&amp;classification=
+     [%- classification FILTER url_quote %]
+  [% END %]
+  [% classification_text = BLOCK %] 
+    of classification '[% classification FILTER html %]'
+  [% END %]
+[% END %]
+
+[% title = BLOCK %]Updating Product '[% name FILTER html %]' 
+                   [% classification_text FILTER none %][% END %]
+[% PROCESS global/header.html.tmpl
+  title = title
+  style_urls = ['skins/standard/admin.css']
+%]
+
+[% IF updated_product %]
+  <p>
+  Updated product name from '[% old_product FILTER html %]' to 
+  <a href="editproducts.cgi?action=edit&amp;product=
+  [%- new_product FILTER url_quote %]
+  [%- classification_url_part FILTER none %]">[% new_product FILTER html %]</a>.
+[% END %]
+
+
+[% IF updated_description %]
+  <p>
+    Updated description to:</p>
+  </p>
+  <p style="margin: 1em 3em 1em 3em">[% new_description FILTER html %]</p>
+[% END %]
+
+[% IF updated_bugsubmitstatus %]
+  <p>
+  Product is now
+  [% IF new_bugsubmitstatus %]
+    closed to
+  [% ELSE %]
+    open for 
+  [% END %]
+  new [% terms.bugs %].
+[% END %]
+
+[% IF updated_milestoneurl %]
+  <p>
+  Updated milestone URL 
+  [% IF old_milestoneurl != '' %]
+    from<br> <a href="[%- old_milestoneurl FILTER html %]">'
+    [%- old_milestoneurl FILTER html %]'</a>
+  [% END %]
+  to
+  [% IF new_milestoneurl != '' %]
+     <br><a href="[%- new_milestoneurl FILTER html %]">'
+     [%- new_milestoneurl FILTER html %]'</a>.
+  [% ELSE %]
+    be empty.
+  [% END %]
+  </p>
+[% END %]
+
+[% IF updated_defaultmilestone %]
+  <p>
+  Updated default milestone from '[% old_defaultmilestone FILTER html %]' to
+  '[% new_defaultmilestone FILTER html %]'.
+  </p>
+[% END %]
+  
+[% IF updated_votesperuser %]
+  <p>
+  Updated votes per user from
+  [%+ old_votesperuser FILTER html %] to 
+  [%+ new_votesperuser FILTER html %].
+[% END %]
+
+[% IF updated_maxvotesperbug %]
+  <p>
+  Updated maximum votes per [% terms.bug %] from 
+  [%+ old_maxvotesperbug FILTER html %] to 
+  [%+ new_maxvotesperbug FILTER html %].
+[% END %]
+
+[% IF updated_votestoconfirm %]
+  <p>
+  Updated number of votes needed to confirm a [% terms.bug %] from
+  [%+ old_votestoconfirm FILTER html %] to 
+  [%+ new_votestoconfirm FILTER html %].
+[% END %]
+
+[% UNLESS updated_bugsubmitstatus ||
+          updated_description || 
+          updated_milestoneurl ||
+          updated_votesperuser ||
+          updated_maxvotesperbug ||
+          updated_votestoconfirm ||
+          updated_defaultmilestone ||
+          updated_product %]
+  <p>Nothing changed for product '[% name FILTER html %]'.
+[% END %]
+
+[%# Note that this display of changed votes and/or confirmed bugs is
+    not very scalable. We could have a _lot_, and we just list them all.
+    One day we should limit this perhaps, or have a more scalable display %]
+
+
+[% IF checkvotes %]
+  <hr>
+
+  <p>Checking existing votes in this product for anybody who now
+  has too many votes for [% terms.abug %]...<br>
+  [% IF toomanyvotes.size > 0 %]
+    [% FOREACH detail = toomanyvotes %]
+      &rarr;removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
+     [%- detail.id FILTER url_quote %]">
+     [%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
+    [% END %]
+  [% ELSE %]
+    &rarr;there were none.
+  [% END %]
+
+  <p>Checking existing votes in this product for anybody
+  who now has too many total votes...<br>
+  [% IF toomanytotalvotes.size > 0 %]
+    [% FOREACH detail = toomanytotalvotes %]
+      &rarr;removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
+     [%- detail.id FILTER url_quote %]">
+     [%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
+    [% END %]
+  [% ELSE %]
+    &rarr;there were none.
+  [% END %]
+
+  <p>Checking unconfirmed [% terms.bugs %] in this product for any which now have
+  sufficient votes...<br>
+  [% IF confirmedbugs.size > 0 %]
+    [% FOREACH id = confirmedbugs %]
+
+      [%# This is INCLUDED instead of PROCESSED to avoid variables getting
+          overwritten, which happens otherwise %]
+      [% INCLUDE bug/process/results.html.tmpl
+        type = 'votes'
+        mailrecipients = { 'changer' => changer }
+        header_done = 1
+        id = id
+      %]
+    [% END %]
+  [% ELSE %]
+    &rarr;there were none.
+  [% END %]
+
+[% END %]
+
+[% PROCESS admin/products/footer.html.tmpl %]
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/settings/CVS/Entries b/template/en/default/admin/settings/CVS/Entries
index 54b4b1f21038df72045cf9fe1639cba1a57a80ab..39f409811b2d60309a7306efb0fb0187f87c999f 100644
--- a/template/en/default/admin/settings/CVS/Entries
+++ b/template/en/default/admin/settings/CVS/Entries
@@ -1,3 +1,3 @@
-/edit.html.tmpl/1.3/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_20
-/updated.html.tmpl/1.2/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_20
+/edit.html.tmpl/1.3/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.2/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/settings/CVS/Tag b/template/en/default/admin/settings/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/settings/CVS/Tag
+++ b/template/en/default/admin/settings/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/table.html.tmpl b/template/en/default/admin/table.html.tmpl
index ff554429a009ba54b5691ba251fe3340d1e68a60..76ed601d6a7715db1ec20385e02cef1e2a141388 100644
--- a/template/en/default/admin/table.html.tmpl
+++ b/template/en/default/admin/table.html.tmpl
@@ -50,6 +50,21 @@
   #   Each hash contains data for a single row of data. The
   #   keys are column names from columns subhashes name field.
   #
+  # overrides:
+  #   Provides a method for overriding individual table cells. This is
+  #   a hash, whose key is the column name, so the column must be
+  #   named for one of it's cells to be overwritten. The hash value is
+  #   an array. Each item in this array is a hash specifying
+  #   row-matching criteria, and any overridden values. The
+  #   row-matching criteria consist of keys:
+  #     match_field: The name of the row value we want to match
+  #     match_value: The value to match against
+  #   Each column value mentioned in the 'columns' documentation above
+  #   can be overwritten (apart from name and heading). To override a
+  #   table-cell value 'xxx', specify a new 'xxx' value, and specify a
+  #   'override_xxx' value as well. See
+  #   admin/milestones/list.html.tmpl for example
+  #
   #%]
 
 [% PROCESS "global/field-descs.none.tmpl" %]
@@ -70,12 +85,47 @@
 [%###################  TABLE CONTENT  ######################%]
 
 [% FOREACH row = data %]
+
   <tr>
     [% FOREACH c = columns %]
-      <td [% IF c.align %] align="[% c.align FILTER html %]" [% END %]>
-      
-        [% IF c.contentlink %]
-          [% link_uri = c.contentlink %]
+
+      [%# Copy to local variables, as we may update these %]
+      [% contentlink = c.contentlink
+         content = c.content
+         content_use_field = c.content_use_field
+         align = c.align
+         allow_html_content = c.allow_html_content
+         yesno_field = c.yesno_field
+       %]
+
+      [%# Are there any specific overrides for this column? %]
+      [% FOREACH override = overrides.${c.name} %]
+
+        [%# Is the override for this row? %]
+        [% IF override.match_value == row.${override.match_field} %]
+
+          [% contentlink = override.contentlink 
+             IF override.override_contentlink %]
+          [% content = override.content
+             IF override.override_content %]
+          [% content_use_field = override.content_use_field
+             IF override.override_content_use_field %]
+          [% align = override.align
+             IF override.override_align %]
+          [% allow_html_content = override.allow_html_content
+             IF override.override_allow_html_content %]
+          [% yesno_field = override.yesno_field
+             IF override.override_yesno_field %]
+
+          [% LAST %]
+
+        [% END %]
+      [% END %]
+
+      <td [% IF align %] align="[% align FILTER html %]" [% END %]>
+
+        [% IF contentlink %]
+          [% link_uri = contentlink %]
           [% WHILE link_uri.search('%%(.+?)%%')%]
             [% FOREACH m = link_uri.match('%%(.+?)%%') %]
               [% IF row.$m %]
@@ -89,20 +139,20 @@
           <a href="[% link_uri %]">
         [% END %]
         
-        [% IF c.content_use_field %]
+        [% IF content_use_field %]
            [% colname = row.${c.name} %]
            [% field_descs.${colname} FILTER html %]
-        [% ELSIF c.content %]
-            [% c.content %]
+        [% ELSIF content %]
+            [% content FILTER none %]
         [% ELSE %]
-          [% IF c.yesno_field %]
+          [% IF yesno_field %]
             [% IF row.${c.name} %]
               Yes
             [% ELSE %]
               No
             [% END %]
           [% ELSE %]
-            [% IF c.allow_html_content %]
+            [% IF allow_html_content %]
               [% row.${c.name} FILTER none %]
             [% ELSE %]
               [% row.${c.name} FILTER html %]
@@ -110,7 +160,7 @@
           [% END %]
         [% END %]
         
-        [% IF c.contentlink %]
+        [% IF contentlink %]
           </a>
         [% END %]
          
diff --git a/template/en/default/admin/users/CVS/Entries b/template/en/default/admin/users/CVS/Entries
index 9b8bfeb0f85dac33b1bd8ebc10e10edea8b05955..928e14465c5db1283e4772b731589a8948c37917 100644
--- a/template/en/default/admin/users/CVS/Entries
+++ b/template/en/default/admin/users/CVS/Entries
@@ -1,8 +1,8 @@
-/confirm-delete.html.tmpl/1.4.2.1/Thu Aug  4 18:29:34 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20
-/edit.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20
-/listselectvars.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20
-/search.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20
-/userdata.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.5/Thu Aug  4 18:24:09 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.2/Sun Sep  4 18:45:11 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_21_1
+/listselectvars.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_21_1
+/search.html.tmpl/1.2/Sun Sep  4 18:45:11 2005//TBUGZILLA-2_21_1
+/userdata.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/users/CVS/Tag b/template/en/default/admin/users/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/users/CVS/Tag
+++ b/template/en/default/admin/users/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/users/edit.html.tmpl b/template/en/default/admin/users/edit.html.tmpl
index 53ea17f210e1405fc0417fe01f6932645f9300ac..ce593ee65ba3453a4abbbbf8068d11c35ea58696 100644
--- a/template/en/default/admin/users/edit.html.tmpl
+++ b/template/en/default/admin/users/edit.html.tmpl
@@ -140,7 +140,7 @@
     [% IF listselectionvalues %],
     [% END %]
   [% END %]
-  [% IF listselectionvalues %]
+  [% IF listselectionvalues.matchtype != 'exact' %]
     go
     <a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
     to the user list</a>,
diff --git a/template/en/default/admin/users/search.html.tmpl b/template/en/default/admin/users/search.html.tmpl
index 748670a68dac0b2eaeda5c6d0988c37bbf2ecdb0..4cb51ca947eccf54b2d446c738e3a1a6bee8afa9 100644
--- a/template/en/default/admin/users/search.html.tmpl
+++ b/template/en/default/admin/users/search.html.tmpl
@@ -41,6 +41,7 @@
   <option value="substr" selected="selected">case-insensitive substring</option>
   <option value="regexp">case-insensitive regexp</option>
   <option value="notregexp">not (case-insensitive regexp)</option>
+  <option value="exact">exact (find this user)</option>
 </select>
 <input type="submit" value="Search" /></p>
 
diff --git a/template/en/default/admin/versions/CVS/Entries b/template/en/default/admin/versions/CVS/Entries
index ea0bfa4507d9526fa113c5e3a8635645a6b46327..0bc8f003af2e7efa98cdead8d91406e252c21d8c 100644
--- a/template/en/default/admin/versions/CVS/Entries
+++ b/template/en/default/admin/versions/CVS/Entries
@@ -1,10 +1,10 @@
-/confirm-delete.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20
-/created.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20
-/deleted.html.tmpl/1.2/Wed Apr  6 00:19:55 2005//TBUGZILLA-2_20
-/edit.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20
-/footer.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20
-/select-product.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20
-/updated.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20
+/confirm-delete.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_21_1
+/created.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_21_1
+/deleted.html.tmpl/1.2/Wed Apr  6 00:19:55 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_21_1
+/footer.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.2/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_21_1
+/select-product.html.tmpl/1.2/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/admin/versions/CVS/Tag b/template/en/default/admin/versions/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/admin/versions/CVS/Tag
+++ b/template/en/default/admin/versions/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/admin/versions/list.html.tmpl b/template/en/default/admin/versions/list.html.tmpl
index ec47c18d750ca15b1c083191ec62874bb2559963..b2ed2c343ab018a30edc4ecbbfd1aadcbaa854a6 100644
--- a/template/en/default/admin/versions/list.html.tmpl
+++ b/template/en/default/admin/versions/list.html.tmpl
@@ -17,18 +17,15 @@
   # Rights Reserved.
   #
   # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+  #                 Frédéric Buclin <LpSolit@gmail.com>
   #%]
 
 [%# INTERFACE:
-  # versions: array of hashes having the following properties:
-  #   - name: string; The name of the version.
-  #
+  # versions: array of version objects
+  # showbugcounts: if defined, then bug counts should be included in the table
   # product: string; the name of the product we are editing versions for
   #%]
 
-[% USE Bugzilla %]
-[% cgi = Bugzilla.cgi %]
-
 [% PROCESS global/variables.none.tmpl %]
 
 [% title = BLOCK %]Select version of product
@@ -41,6 +38,8 @@
   [%- product FILTER url_quote %]&amp;version=%%name%%[% END %]
 [% delete_contentlink = BLOCK %]editversions.cgi?action=del&amp;product=
   [%- product FILTER url_quote %]&amp;version=%%name%%[% END %]
+[% bug_count_contentlink = BLOCK %]buglist.cgi?version=%%name%%&amp;product=
+  [%- product FILTER url_quote %][% END %]
 
 
 [% columns = [
@@ -48,13 +47,27 @@
        name => "name"
        heading => "Edit version..."
        contentlink => edit_contentlink
-     },
-     {
+     }
+   ]
+%]
+
+[% IF showbugcounts %]
+
+  [% columns.push({
+       name => "bug_count"
+       heading => "$terms.Bugs"
+       align => "right"
+       contentlink => bug_count_contentlink
+     })
+  %]
+
+[% END %]
+
+[% columns.push({
        heading => "Action"
        content => "Delete"
        contentlink => delete_contentlink
-     }
-   ]
+     })
 %]
 
 [% PROCESS admin/table.html.tmpl
@@ -64,6 +77,13 @@
 
 <p>
 
+[% IF ! showbugcounts %]
+
+  <p><a href="editversions.cgi?product=[% product FILTER url_quote %]&amp;showbugcounts=1">
+      Redisplay table with [% terms.bug %] counts (slower)</a></p>
+
+[% END %]
+
 [% PROCESS admin/versions/footer.html.tmpl
   no_edit_other_versions_link = 1
  %]
diff --git a/template/en/default/admin/versions/select-product.html.tmpl b/template/en/default/admin/versions/select-product.html.tmpl
index 621649cd2bc512582ba72bd6ddb7fef6a837f870..cba4bab4ee7cb1e64c2a3672a0689ef142d8b44e 100644
--- a/template/en/default/admin/versions/select-product.html.tmpl
+++ b/template/en/default/admin/versions/select-product.html.tmpl
@@ -16,28 +16,22 @@
   # Copyright (C) 1998 Netscape Communications Corporation. All
   # Rights Reserved.
   #
-  # Contributor(s): Gavin Shelley (bugzilla@chimpychompy.org)
+  # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+  #                 Frédéric Buclin <LpSolit@gmail.com>
   #
   #%]
 
 [%# INTERFACE:
-  # products: array of hashes having the following properties:
-  #   - name: string; The name of the product.
-  #   - description: string; The description of the product.
+  # products: array of product objects
+  # showbugcounts: if defined, then bug counts should be included in the table
   #%]
 
-[% USE Bugzilla %]
-[% cgi = Bugzilla.cgi %]
-
 [% PROCESS global/variables.none.tmpl %]
 
 [% PROCESS global/header.html.tmpl
   title = "Edit versions for which product?"
 %]
 
-[% bug_count_contentlink = BLOCK %]buglist.cgi?version=%%name%%&amp;product=
-  [%- product FILTER url_quote %][% END %]
-
 [% columns = [
      { 
        name => "name"
@@ -52,11 +46,28 @@
    ]
 %]
 
+[% IF showbugcounts %]
+
+  [% columns.push({
+      name => 'bug_count'
+      heading => "$terms.Bugs"
+      align => "right"
+      contentlink => "buglist.cgi?product=%%name%%"
+    })
+  %]
+
+[% END %]
+
 [% PROCESS admin/table.html.tmpl
      columns = columns
      data = products
 %]
 
+[% IF !showbugcounts %]
+  <p><a href="editversions.cgi?showbugcounts=1">
+      Redisplay table with [% terms.bug %] counts (slower)</a></p>
+[% END %]
+
 <p>
 
 [% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/attachment/CVS/Entries b/template/en/default/attachment/CVS/Entries
index f4ff329ba106237cff2d9502ecbf63fb05f70800..dbed5e41b4863205913280e9fada3e1ac0ac084e 100644
--- a/template/en/default/attachment/CVS/Entries
+++ b/template/en/default/attachment/CVS/Entries
@@ -1,12 +1,12 @@
-/choose.html.tmpl/1.3/Mon Aug 23 15:34:30 2004//TBUGZILLA-2_20
-/content-types.html.tmpl/1.5/Sun Feb 27 10:07:52 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.20/Sun Feb 20 17:03:10 2005//TBUGZILLA-2_20
-/created.html.tmpl/1.10/Sun Jan 18 18:39:16 2004//TBUGZILLA-2_20
-/diff-file.html.tmpl/1.5/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_20
-/diff-footer.html.tmpl/1.2/Sun Jan 18 18:39:16 2004//TBUGZILLA-2_20
-/diff-header.html.tmpl/1.10/Sun May 22 23:35:22 2005//TBUGZILLA-2_20
-/edit.html.tmpl/1.27/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.21/Thu Jun 16 05:40:32 2005//TBUGZILLA-2_20
-/show-multiple.html.tmpl/1.15/Sun May 30 15:52:13 2004//TBUGZILLA-2_20
-/updated.html.tmpl/1.11/Mon Feb  2 21:57:29 2004//TBUGZILLA-2_20
+/choose.html.tmpl/1.3/Mon Aug 23 15:34:30 2004//TBUGZILLA-2_21_1
+/content-types.html.tmpl/1.5/Sun Feb 27 10:07:52 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.20/Sun Feb 20 17:03:10 2005//TBUGZILLA-2_21_1
+/created.html.tmpl/1.11/Sat Jul 30 00:46:40 2005//TBUGZILLA-2_21_1
+/diff-file.html.tmpl/1.5/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_21_1
+/diff-footer.html.tmpl/1.2/Sun Jan 18 18:39:16 2004//TBUGZILLA-2_21_1
+/diff-header.html.tmpl/1.10/Sun May 22 23:35:22 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.27/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.24/Thu Sep  1 14:02:27 2005//TBUGZILLA-2_21_1
+/show-multiple.html.tmpl/1.15/Sun May 30 15:52:13 2004//TBUGZILLA-2_21_1
+/updated.html.tmpl/1.11/Mon Feb  2 21:57:29 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/attachment/CVS/Tag b/template/en/default/attachment/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/attachment/CVS/Tag
+++ b/template/en/default/attachment/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/attachment/created.html.tmpl b/template/en/default/attachment/created.html.tmpl
index 9bfb36caf253d4419169d8bb531b195873c28422..ef318f5759c1e4cc779dd0b3a74f3a548f5c9cb5 100644
--- a/template/en/default/attachment/created.html.tmpl
+++ b/template/en/default/attachment/created.html.tmpl
@@ -44,7 +44,12 @@
       </h2>
 
       [% PROCESS "bug/process/bugmail.html.tmpl" mailing_bugid = bugid %]
-
+      [% IF convertedbmp %]
+        <p>
+          <b>Note:</b> [% terms.Bugzilla %] automatically converted your BMP image file to a 
+          compressed PNG format.
+        </p>
+      [% END %]
       [% IF contenttypemethod == 'autodetect' %]
         <p>
           <b>Note:</b> [% terms.Bugzilla %] automatically detected the content type
diff --git a/template/en/default/attachment/list.html.tmpl b/template/en/default/attachment/list.html.tmpl
index 8f6bbadb1dc4b08338f7ad1f285a641785496748..61b68ee5377feb9922bef7e6254419df375e979a 100644
--- a/template/en/default/attachment/list.html.tmpl
+++ b/template/en/default/attachment/list.html.tmpl
@@ -24,6 +24,7 @@
   <tr>
     <th bgcolor="#cccccc" align="left">Attachment</th>
     <th bgcolor="#cccccc" align="left">Type</th>
+    <th bgcolor="#cccccc" align="left">Creator</th>
     <th bgcolor="#cccccc" align="left">Created</th>
     <th bgcolor="#cccccc" align="left">Size</th>
     [% IF show_attachment_flags %]
@@ -36,7 +37,7 @@
     [% IF !attachment.isprivate || canseeprivate %]
       <tr [% "class=\"bz_private\"" IF attachment.isprivate %]>
         <td valign="top">
-          <a href="attachment.cgi?id=[% attachment.attachid %]">[% attachment.description FILTER html FILTER obsolete(attachment.isobsolete) %]</a>
+          <a href="attachment.cgi?id=[% attachment.id %]">[% attachment.description FILTER html FILTER obsolete(attachment.isobsolete) %]</a>
         </td>
 
         <td valign="top">
@@ -47,7 +48,12 @@
           [% END %]
         </td>
 
-        <td valign="top">[% attachment.date FILTER time %]</td>
+        <td valign="top">
+          <a href="mailto:[% attachment.attacher.email FILTER html %]">
+          [% attachment.attacher.name || attachment.attacher.login FILTER html %]
+          </a>
+        </td>
+        <td valign="top">[% attachment.attached FILTER time %]</td>
         <td valign="top">[% attachment.datasize FILTER unitconvert %]</td>
 
         [% IF show_attachment_flags %]
@@ -69,9 +75,9 @@
         [% END %]
 
         <td valign="top">
-          <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=edit">Edit</a>
+          <a href="attachment.cgi?id=[% attachment.id %]&amp;action=edit">Edit</a>
           [% IF attachment.ispatch && patchviewerinstalled %]
-            | <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=diff">Diff</a>
+            | <a href="attachment.cgi?id=[% attachment.id %]&amp;action=diff">Diff</a>
           [% END %]
           [% Hook.process("action") %]
         </td>
@@ -80,7 +86,7 @@
   [% END %]
 
   <tr>
-    <td colspan="[% show_attachment_flags ? 5 : 4 %]">
+    <td colspan="[% show_attachment_flags ? 6 : 5 %]">
       <a href="attachment.cgi?bugid=[% bugid %]&amp;action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.)
     </td>
     [% IF attachments.size %]
diff --git a/template/en/default/bug/CVS/Entries b/template/en/default/bug/CVS/Entries
index 9a161b6d2e9f2347924b21fb6e35b202f0c92022..8f38f94b2bc6fa7ecae155edec59b3f0ce190ea5 100644
--- a/template/en/default/bug/CVS/Entries
+++ b/template/en/default/bug/CVS/Entries
@@ -1,15 +1,15 @@
-/choose.html.tmpl/1.6/Sun Jan 18 18:39:17 2004//TBUGZILLA-2_20
-/comments.html.tmpl/1.18.2.1/Wed Aug 10 01:58:43 2005//TBUGZILLA-2_20
-/dependency-graph.html.tmpl/1.9/Sun Jan 18 18:39:17 2004//TBUGZILLA-2_20
-/dependency-tree.html.tmpl/1.15/Tue May 10 20:56:55 2005//TBUGZILLA-2_20
-/edit.html.tmpl/1.60.2.1/Sun Jul 17 09:19:00 2005//TBUGZILLA-2_20
-/knob.html.tmpl/1.18/Mon Jun 20 19:16:30 2005//TBUGZILLA-2_20
-/navigate.html.tmpl/1.7/Mon Jun 20 19:30:29 2005//TBUGZILLA-2_20
-/show-multiple.html.tmpl/1.24.6.1/Wed Aug 10 01:58:43 2005//TBUGZILLA-2_20
-/show.html.tmpl/1.10/Tue Nov  2 22:50:09 2004//TBUGZILLA-2_20
-/show.xml.tmpl/1.7/Sun Jan 16 20:34:52 2005//TBUGZILLA-2_20
-/summarize-time.html.tmpl/1.1/Mon Feb 28 17:53:09 2005//TBUGZILLA-2_20
-/time.html.tmpl/1.2/Sun Jan 18 18:39:23 2004//TBUGZILLA-2_20
+/choose.html.tmpl/1.6/Sun Jan 18 18:39:17 2004//TBUGZILLA-2_21_1
+/comments.html.tmpl/1.20/Tue Aug 30 17:12:22 2005//TBUGZILLA-2_21_1
+/dependency-graph.html.tmpl/1.9/Sun Jan 18 18:39:17 2004//TBUGZILLA-2_21_1
+/dependency-tree.html.tmpl/1.15/Tue May 10 20:56:55 2005//TBUGZILLA-2_21_1
+/edit.html.tmpl/1.63/Wed Aug 31 01:03:26 2005//TBUGZILLA-2_21_1
+/knob.html.tmpl/1.19/Wed Sep  7 12:05:12 2005//TBUGZILLA-2_21_1
+/navigate.html.tmpl/1.7/Mon Jun 20 19:30:29 2005//TBUGZILLA-2_21_1
+/show-multiple.html.tmpl/1.25/Wed Aug 10 01:53:51 2005//TBUGZILLA-2_21_1
+/show.html.tmpl/1.11/Sun Jul 10 22:37:07 2005//TBUGZILLA-2_21_1
+/show.xml.tmpl/1.10/Wed Sep  7 12:05:12 2005//TBUGZILLA-2_21_1
+/summarize-time.html.tmpl/1.1/Mon Feb 28 17:53:09 2005//TBUGZILLA-2_21_1
+/time.html.tmpl/1.2/Sun Jan 18 18:39:23 2004//TBUGZILLA-2_21_1
 D/activity////
 D/create////
 D/process////
diff --git a/template/en/default/bug/CVS/Tag b/template/en/default/bug/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/bug/CVS/Tag
+++ b/template/en/default/bug/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/bug/activity/CVS/Entries b/template/en/default/bug/activity/CVS/Entries
index eab79f409aa98d9dd06358b9789a03b4e60f4cb1..9fac9ade954815aed8077285c94181f86bd59e0e 100644
--- a/template/en/default/bug/activity/CVS/Entries
+++ b/template/en/default/bug/activity/CVS/Entries
@@ -1,3 +1,3 @@
-/show.html.tmpl/1.7/Mon Feb  2 21:57:29 2004//TBUGZILLA-2_20
-/table.html.tmpl/1.9/Wed Jun  1 00:29:55 2005//TBUGZILLA-2_20
+/show.html.tmpl/1.7/Mon Feb  2 21:57:29 2004//TBUGZILLA-2_21_1
+/table.html.tmpl/1.9/Wed Jun  1 00:29:55 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/bug/activity/CVS/Tag b/template/en/default/bug/activity/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/bug/activity/CVS/Tag
+++ b/template/en/default/bug/activity/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/bug/comments.html.tmpl b/template/en/default/bug/comments.html.tmpl
index cf279d05d63874a8392801bfdbe0463811ce8276..289593b7ac2e06b87543300468518e7dcd210438 100644
--- a/template/en/default/bug/comments.html.tmpl
+++ b/template/en/default/bug/comments.html.tmpl
@@ -77,7 +77,8 @@
         <table>
           <tr>
             <td align="left">
-              <b><a name="c0" href="#c0">Description</a>:</b>&nbsp;&nbsp;<script 
+              <b><a name="c0" href="show_bug.cgi?id=[% bug.bug_id %]#c0">
+                Description</a>:</b>&nbsp;&nbsp;<script 
                 type="text/javascript"><!-- 
                   addReplyLink(0);
                 //--></script>
@@ -91,7 +92,8 @@
         <br>
         <span class="bz_comment">
           ------- <i>Comment
-          <a name="c[% count %]" href="#c[% count %]">#[% count %]</a> From 
+          <a name="c[% count %]" href="show_bug.cgi?id=[% bug.bug_id %]#c[% count %]">
+            #[% count %]</a> From 
           <a href="mailto:[% comment.email FILTER html %]">
             [% comment.name FILTER html %]</a>
           [%+ comment.time FILTER time %] 
diff --git a/template/en/default/bug/create/CVS/Entries b/template/en/default/bug/create/CVS/Entries
index bdd1ca429c953a81e3901f169ab6c454f438b588..31c47633566080b6b94c1ee45c90825a1b9298cc 100644
--- a/template/en/default/bug/create/CVS/Entries
+++ b/template/en/default/bug/create/CVS/Entries
@@ -1,8 +1,8 @@
-/comment-guided.txt.tmpl/1.4/Thu Apr  7 23:59:59 2005//TBUGZILLA-2_20
-/comment.txt.tmpl/1.3/Thu Apr  7 23:59:59 2005//TBUGZILLA-2_20
-/create-guided.html.tmpl/1.26/Thu Jun  9 09:48:23 2005//TBUGZILLA-2_20
-/create.html.tmpl/1.51.2.1/Sun Aug 21 22:20:17 2005//TBUGZILLA-2_20
-/created.html.tmpl/1.8.10.1/Wed Jul 27 20:56:09 2005//TBUGZILLA-2_20
-/make-template.html.tmpl/1.7/Thu Mar 17 10:47:33 2005//TBUGZILLA-2_20
-/user-message.html.tmpl/1.4/Sun Mar  7 23:27:31 2004//TBUGZILLA-2_20
+/comment-guided.txt.tmpl/1.4/Thu Apr  7 23:59:59 2005//TBUGZILLA-2_21_1
+/comment.txt.tmpl/1.3/Thu Apr  7 23:59:59 2005//TBUGZILLA-2_21_1
+/create-guided.html.tmpl/1.26/Thu Jun  9 09:48:23 2005//TBUGZILLA-2_21_1
+/create.html.tmpl/1.53/Sun Aug 21 22:18:01 2005//TBUGZILLA-2_21_1
+/created.html.tmpl/1.9/Wed Jul 27 20:51:33 2005//TBUGZILLA-2_21_1
+/make-template.html.tmpl/1.7/Thu Mar 17 10:47:33 2005//TBUGZILLA-2_21_1
+/user-message.html.tmpl/1.4/Sun Mar  7 23:27:31 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/bug/create/CVS/Tag b/template/en/default/bug/create/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/bug/create/CVS/Tag
+++ b/template/en/default/bug/create/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl
index c99af7c3b8eedfa08ee4aca64f10ff657686b06d..08aa88ecfd49a51943922490e1e7cdf21bf55352 100644
--- a/template/en/default/bug/create/create.html.tmpl
+++ b/template/en/default/bug/create/create.html.tmpl
@@ -282,6 +282,15 @@ function set_assign_to() {
   </tr>
 [% END %]
 
+[% IF Param("usebugaliases") %]
+  <tr>
+    <td align="right"><strong>Alias:</strong></td>
+    <td colspan="3">
+      <input name="alias" size="20">
+    </td>
+  </tr>
+[% END %]
+
   <tr>
     <td align="right"><strong>URL:</strong></td>
     <td colspan="3">
diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl
index 9f8adbe7114f4398e87a4ca886777e2e2c6a7326..38b01f06e58d3f571f7f3aac584fb6f9904beb0b 100644
--- a/template/en/default/bug/edit.html.tmpl
+++ b/template/en/default/bug/edit.html.tmpl
@@ -130,28 +130,33 @@
     <tr>
       <td valign="top">
         <table cellspacing="1" cellpadding="1">
-  
           <tr>
             <td align="right">
-              [% IF Param('useclassification') %]
-                [% IF bug.classification_id != "1" %]
-                  <b>[[% bug.classification FILTER html %]]</b>
-                [% END %]
+              [% IF Param('useclassification') && bug.classification_id != 1 %]
+                <b>[[% bug.classification FILTER html %]]</b>
               [% END %]
               <b>[% terms.Bug %]#:</b>
             </td>
             <td>
               <a href="[% Param('urlbase') %]show_bug.cgi?id=[% bug.bug_id %]">
                 [% bug.bug_id %]</a>
-                [% IF Param("usebugaliases") %]
-                  <label for="alias" title="a name for the [% terms.bug %] that can be used in place of its ID number, f.e. when adding it to a list of dependencies">
-                    <b>alias:</b>
-                    <input id="alias" name="alias" value="[% bug.alias FILTER html %]" size="20" maxlength="20">
-                  </label>
-                [% END %]
             </td>
           </tr>
 
+          [% IF Param("usebugaliases") %]
+            <tr>
+              <td align="right">
+                <b>Alias:</b>
+              </td>
+              <td>
+                <label for="alias" title="a name for the [% terms.bug %] that can be used in place of its ID number, f.e. when adding it to a list of dependencies">
+                  <input id="alias" name="alias" value="[% bug.alias FILTER html %]"
+                         size="20" maxlength="20">
+                </label>
+              </td>
+            </tr>
+          [% END %]
+
           <tr>
             <td align="right">
               <b><u>P</u>roduct:</b>
@@ -660,5 +665,4 @@
       </select>
     </label>
   </td>
-  <td>&nbsp;</td>
 [% END %]
diff --git a/template/en/default/bug/knob.html.tmpl b/template/en/default/bug/knob.html.tmpl
index 2ade9a3737938e3fff985cdc31672d1d02645493..c76251ae97918cb6da74fb2c22624928fc1fd577 100644
--- a/template/en/default/bug/knob.html.tmpl
+++ b/template/en/default/bug/knob.html.tmpl
@@ -170,6 +170,8 @@
         &nbsp; | &nbsp;
         <a href="show_bug.cgi?format=multiple&amp;id=[% bug.bug_id %]">Format For Printing</a>
         &nbsp; | &nbsp;
+        <a href="show_bug.cgi?ctype=xml&amp;id=[% bug.bug_id %]">XML</a>
+        &nbsp; | &nbsp;
         <a href="enter_bug.cgi?cloned_bug_id=[% bug.bug_id %]">Clone This [% terms.Bug %]</a>
 
         [%# Links to more things users can do with this bug. %]
diff --git a/template/en/default/bug/process/CVS/Entries b/template/en/default/bug/process/CVS/Entries
index 564a975dc5112bb95491b08f681455f0c417648f..53bc02867dfe29e87fcdbe3f4023268f61b79530 100644
--- a/template/en/default/bug/process/CVS/Entries
+++ b/template/en/default/bug/process/CVS/Entries
@@ -1,8 +1,7 @@
-/bugmail.html.tmpl/1.4/Sun Jan 18 18:39:25 2004//TBUGZILLA-2_20
-/confirm-duplicate.html.tmpl/1.9/Fri Apr  8 00:45:47 2005//TBUGZILLA-2_20
-/header.html.tmpl/1.3/Sun Jan 18 18:39:25 2004//TBUGZILLA-2_20
-/midair.html.tmpl/1.13/Fri Apr  8 00:45:47 2005//TBUGZILLA-2_20
-/next.html.tmpl/1.5/Wed May 12 05:03:27 2004//TBUGZILLA-2_20
-/results.html.tmpl/1.9/Thu Mar 17 06:13:15 2005//TBUGZILLA-2_20
-/verify-new-product.html.tmpl/1.15.4.1/Tue Jul 12 22:28:00 2005//TBUGZILLA-2_20
+/bugmail.html.tmpl/1.4/Sun Jan 18 18:39:25 2004//TBUGZILLA-2_21_1
+/confirm-duplicate.html.tmpl/1.9/Fri Apr  8 00:45:47 2005//TBUGZILLA-2_21_1
+/header.html.tmpl/1.3/Sun Jan 18 18:39:25 2004//TBUGZILLA-2_21_1
+/midair.html.tmpl/1.13/Fri Apr  8 00:45:47 2005//TBUGZILLA-2_21_1
+/results.html.tmpl/1.10/Sun Aug 21 17:36:50 2005//TBUGZILLA-2_21_1
+/verify-new-product.html.tmpl/1.16/Tue Jul 12 22:25:11 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/bug/process/CVS/Tag b/template/en/default/bug/process/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/bug/process/CVS/Tag
+++ b/template/en/default/bug/process/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/bug/process/next.html.tmpl b/template/en/default/bug/process/next.html.tmpl
deleted file mode 100644
index 1cd9328a16a49fb189be4d0569f98945ae4e4cac..0000000000000000000000000000000000000000
--- a/template/en/default/bug/process/next.html.tmpl
+++ /dev/null
@@ -1,67 +0,0 @@
-[%# 1.0@bugzilla.org %]
-[%# The contents of this file are subject to the Mozilla Public
-  # License Version 1.1 (the "License"); you may not use this file
-  # except in compliance with the License. You may obtain a copy of
-  # the License at http://www.mozilla.org/MPL/
-  #
-  # Software distributed under the License is distributed on an "AS
-  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-  # implied. See the License for the specific language governing
-  # rights and limitations under the License.
-  #
-  # The Original Code is the Bugzilla Bug Tracking System.
-  #
-  # The Initial Developer of the Original Code is Netscape Communications
-  # Corporation. Portions created by Netscape are
-  # Copyright (C) 1998 Netscape Communications Corporation. All
-  # Rights Reserved.
-  #
-  # Contributor(s): Myk Melez <myk@mozilla.org>
-  #%]
-
-[%# INTERFACE:
-  # bug : Bug object; the next bug to show
-  #%]
-
-[% PROCESS global/variables.none.tmpl %]
-
-<hr>
-
-<p>
-  The next [% terms.bug %] in your list is [% terms.bug %]
-  <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>:
-</p>
-
-<hr>
-<table border="0" cellspacing="0" width="100%">
-  <tr>
-    <td valign="top" align="left" nowrap="nowrap">
-      <font size="+1">
-        <b>[%+ terms.Bugzilla %] [%+ terms.Bug %] [%+ bug.bug_id %]</b>
-      </font>
-    </td>
-    <td valign="middle" align="left">
-      &nbsp;
-    </td>
-    <td valign="middle" align="left">
-      [% bug.short_desc FILTER html %]
-    </td>
-    <td valign="middle" align="right">
-      Last modified: [% bug.delta_ts FILTER time %]
-    </td>
-  </tr>
-</table>
-
-[% PROCESS bug/navigate.html.tmpl %]
-
-<hr>
-
-[% PROCESS "bug/edit.html.tmpl" %]
-
-<hr>
-
-[% PROCESS bug/navigate.html.tmpl %]
-
-<br>
-
-[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/bug/process/results.html.tmpl b/template/en/default/bug/process/results.html.tmpl
index 711776419abdf71c431b3efa464d7395d8fb57c4..a21858792930830bca4d24e212877932ae4858b7 100644
--- a/template/en/default/bug/process/results.html.tmpl
+++ b/template/en/default/bug/process/results.html.tmpl
@@ -44,6 +44,7 @@
     'dep' => "Checking for dependency changes on $terms.bug $id" ,
     'votes' => "$terms.Bug $id confirmed by number of votes" ,
     'created' => "$terms.Bug $id has been added to the database" ,
+    'move' => "$terms.Bug $id has been moved to another database" ,
   }
 
   linktext = {
@@ -52,6 +53,7 @@
     'dep' => "Go To $terms.Bug $id" ,
     'votes' => "Go To $terms.Bug $id" ,
     'created' => "Go To $terms.Bug $id" ,
+    'move' => "Back To $terms.Bug $id" ,
   }
 %]
 
diff --git a/template/en/default/bug/show.html.tmpl b/template/en/default/bug/show.html.tmpl
index 8db59a9800444047e56d2f65e1af68e119fdffa3..8cb14ee4df121f64e0ff5378f8eaab1c514722d2 100644
--- a/template/en/default/bug/show.html.tmpl
+++ b/template/en/default/bug/show.html.tmpl
@@ -26,19 +26,30 @@
 [%# This script/template only handles one bug #%]
 [% bug = bugs.0 %]
 
-[% filtered_desc = bug.short_desc FILTER html %]
-[% filtered_timestamp = bug.delta_ts FILTER time %]
-[% PROCESS global/header.html.tmpl
-  title = "$terms.Bug $bug.bug_id - $bug.short_desc"
-  h1 = "$terms.Bugzilla $terms.Bug $bug.bug_id"
-  h2 = filtered_desc
-  h3 = "Last modified: $filtered_timestamp"
-  bodyclasses = ['bz_bug',
-                 "bz_status_$bug.bug_status",
-                 "bz_component_$bug.component",
-                 "bz_bug_$bug.bug_id"
-                ]
-%]
+[% IF !header_done %]
+  [% filtered_desc = bug.short_desc FILTER html %]
+  [% filtered_timestamp = bug.delta_ts FILTER time %]
+  [% PROCESS global/header.html.tmpl
+    title = "$terms.Bug $bug.bug_id - $bug.short_desc"
+    h1 = "$terms.Bugzilla $terms.Bug $bug.bug_id"
+    h2 = filtered_desc
+    h3 = "Last modified: $filtered_timestamp"
+    bodyclasses = ['bz_bug',
+                   "bz_status_$bug.bug_status",
+                   "bz_component_$bug.component",
+                   "bz_bug_$bug.bug_id"
+                  ]
+  %]
+[% END %]
+
+[% IF nextbug %]
+  <hr>
+  <p>
+    The next [% terms.bug %] in your list is [% terms.bug %]
+    <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>:
+  </p>
+  <hr>
+[% END %]
 
 [% PROCESS bug/navigate.html.tmpl %]
 
diff --git a/template/en/default/bug/show.xml.tmpl b/template/en/default/bug/show.xml.tmpl
index 6c950a2bf7577e70bbea3a7f2f482ae60267004e..0a09668903dbce427202ccffa9a765de75541a5d 100644
--- a/template/en/default/bug/show.xml.tmpl
+++ b/template/en/default/bug/show.xml.tmpl
@@ -19,7 +19,7 @@
   # Contributor(s): Bradley Baetz <bbaetz@student.usyd.edu.au>
   #
   #%]
-<?xml version="1.0" standalone="yes"?>
+<?xml version="1.0" [% IF Param('utf8') %]encoding="UTF-8" [% END %]standalone="yes" ?>
 <!DOCTYPE bugzilla SYSTEM "[% Param('urlbase') %]bugzilla.dtd">
 
 <bugzilla version="[% VERSION %]"
@@ -73,10 +73,13 @@
               ispatch="1"
             [% END %]
           >
-            <attachid>[% a.attachid %]</attachid>
-            <date>[% a.date FILTER time FILTER xml %]</date>
+            <attachid>[% a.id %]</attachid>
+            <date>[% a.attached FILTER time FILTER xml %]</date>
             <desc>[% a.description FILTER xml %]</desc>
             <ctype>[% a.contenttype FILTER xml %]</ctype>
+        [% IF displayfields.attachmentdata %]
+            <data>[% a.data FILTER base64 %]</data>
+        [% END %]        
             [% FOREACH flag = a.flags %]
               <flag name="[% flag.type.name FILTER xml %]"
                     status="[% flag.status FILTER xml %]"
diff --git a/template/en/default/bug/votes/CVS/Entries b/template/en/default/bug/votes/CVS/Entries
index 4af71c4cd299791fcd3f41d52726dc1bbf10d144..c4ce986d55f79f6e573777eaeb38f4ce81f171fc 100644
--- a/template/en/default/bug/votes/CVS/Entries
+++ b/template/en/default/bug/votes/CVS/Entries
@@ -1,4 +1,4 @@
-/delete-all.html.tmpl/1.6/Sun Jan 18 18:39:26 2004//TBUGZILLA-2_20
-/list-for-bug.html.tmpl/1.9/Sun Jan 18 18:39:26 2004//TBUGZILLA-2_20
-/list-for-user.html.tmpl/1.19/Tue Feb 15 17:13:02 2005//TBUGZILLA-2_20
+/delete-all.html.tmpl/1.6/Sun Jan 18 18:39:26 2004//TBUGZILLA-2_21_1
+/list-for-bug.html.tmpl/1.10/Fri Sep  2 21:33:36 2005//TBUGZILLA-2_21_1
+/list-for-user.html.tmpl/1.19/Tue Feb 15 17:13:02 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/bug/votes/CVS/Tag b/template/en/default/bug/votes/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/bug/votes/CVS/Tag
+++ b/template/en/default/bug/votes/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/bug/votes/list-for-bug.html.tmpl b/template/en/default/bug/votes/list-for-bug.html.tmpl
index 46fb755ffc1e8007f81ad5837239d82ce1b3db7f..4b4514a9007f3a111fbc360cbb79ff26ae340f61 100644
--- a/template/en/default/bug/votes/list-for-bug.html.tmpl
+++ b/template/en/default/bug/votes/list-for-bug.html.tmpl
@@ -22,9 +22,8 @@
 [%# INTERFACE:
   # bug_id: integer. ID of the bug we are listing the votes for.
   # users: list of hashes. May be empty. Each hash has two members:
-  #   name: string. The login name of the user whose vote is attached
-  #   count: integer. The number of times that user has votes for this bug.
-  # total: integer. The total number of votes for this bug.
+  #   login_name: string. The login name of the user whose vote is attached
+  #   vote_count: integer. The number of times that user has votes for this bug.
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
@@ -34,6 +33,7 @@
            h2 = "$terms.Bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>"
  %]
 
+[% total = 0 %]
 <table cellspacing="4">
   <tr>
     <th>Who</th>
@@ -41,14 +41,15 @@
   </tr>
 
   [% FOREACH voter = users %]
+    [% total = total + voter.vote_count %]
     <tr>
       <td>
-        <a href="votes.cgi?action=show_user&amp;user=[% voter.name FILTER url_quote %]">
-          [% voter.name FILTER html %]
+        <a href="votes.cgi?action=show_user&amp;user=[% voter.login_name FILTER url_quote %]">
+          [% voter.login_name FILTER html %]
         </a>
       </td>
       <td align="right">
-        [% voter.count %]
+        [% voter.vote_count %]
       </td>
     </tr>
   [% END %]
diff --git a/template/en/default/config.js.tmpl b/template/en/default/config.js.tmpl
index a74c5d34d6bc35515786b9a20c9a624514a99fe3..00ba589830964eafd3735882853a872bf260bcf6 100644
--- a/template/en/default/config.js.tmpl
+++ b/template/en/default/config.js.tmpl
@@ -19,8 +19,7 @@
   # Contributor(s): Myk Melez <myk@mozilla.org>
   #%]
 //
-// This file contains the installation specific values for QuickSearch
-// and other Bugzilla clients.  See quicksearch.js for more details.
+// This file contains installation specific values for third-party clients.
 //
 // Note: this interface is experimental and under development.
 // We may and probably will make breaking changes to it in the future.
@@ -74,10 +73,10 @@ var component = new Object();
 var version = new Object();
 var target_milestone = new Object();
 
-[% FOREACH p = legal_products %]
-  component['[% p FILTER js %]'] = [ [% FOREACH x = components_by_product.$p %]'[% x FILTER js %]', [% END %] ];
-  version['[% p FILTER js %]'] = [ [% FOREACH x = versions_by_product.$p %]'[% x FILTER js %]', [% END %] ];
-  target_milestone['[% p FILTER js %]'] = [ [% FOREACH x = milestones_by_product.$p %]'[% x FILTER js %]', [% END %] ];
+[% FOREACH p = products %]
+  component['[% p.name FILTER js %]'] = [ [% FOREACH x = p.components %]'[% x.name FILTER js %]', [% END %] ];
+  version['[% p.name FILTER js %]'] = [ [% FOREACH x = p.versions %]'[% x.name FILTER js %]', [% END %] ];
+  target_milestone['[% p.name FILTER js %]'] = [ [% FOREACH x = p.milestones %]'[% x.name FILTER js %]', [% END %] ];
 [% END %]
 
 // Product and Component Exceptions
diff --git a/template/en/default/config.rdf.tmpl b/template/en/default/config.rdf.tmpl
index 884c26a0c33b9c4382d8cf3fee2b765a912e0330..4c1047f503d54afa032ef7744da968784fb61f3e 100644
--- a/template/en/default/config.rdf.tmpl
+++ b/template/en/default/config.rdf.tmpl
@@ -19,7 +19,7 @@
   # Contributor(s): Myk Melez <myk@mozilla.org>
   #%]
 
-<?xml version="1.0"?>
+<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?>
 <!-- Note: this interface is experimental and under development.
    - We may and probably will make breaking changes to it in the future. -->
 
@@ -105,23 +105,23 @@
 
   <bz:products>
     <Seq>
-      [% FOREACH product = legal_products %]
+      [% FOREACH product = products %]
         <li>
-          <bz:product rdf:about="[% Param('urlbase') %]product.cgi?name=[% product FILTER uri %]">
-            <bz:name>[% product FILTER html %]</bz:name>
+          <bz:product rdf:about="[% Param('urlbase') %]product.cgi?name=[% product.name FILTER uri %]">
+            <bz:name>[% product.name FILTER html %]</bz:name>
 
             <bz:components>
               <Seq>
-                [% FOREACH component = components_by_product.$product %]
-                  <li resource="[% Param('urlbase') %]component.cgi?name=[% component FILTER uri %]"/>
+                [% FOREACH component = product.components %]
+                  <li resource="[% Param('urlbase') %]component.cgi?name=[% component.name FILTER uri %]"/>
                 [% END %]
               </Seq>
             </bz:components>
 
             <bz:versions>
               <Seq>
-                [% FOREACH version = versions_by_product.$product %]
-                  <li resource="[% Param('urlbase') %]version.cgi?name=[% version FILTER uri %]"/>
+                [% FOREACH version = product.versions %]
+                  <li resource="[% Param('urlbase') %]version.cgi?name=[% version.name FILTER uri %]"/>
                 [% END %]
               </Seq>
             </bz:versions>
@@ -129,8 +129,8 @@
             [% IF Param('usetargetmilestone') %]
               <bz:target_milestones>
                 <Seq>
-                  [% FOREACH milestone = milestones_by_product.$product %]
-                    <li resource="[% Param('urlbase') %]milestone.cgi?name=[% milestone FILTER uri %]"/>
+                  [% FOREACH milestone = product.milestones %]
+                    <li resource="[% Param('urlbase') %]milestone.cgi?name=[% milestone.name FILTER uri %]"/>
                   [% END %]
                 </Seq>
               </bz:target_milestones>
@@ -144,24 +144,28 @@
 
   <bz:components>
     <Seq>
-      [% FOREACH item = legal_components %]
-        <li>
-          <bz:component rdf:about="[% Param('urlbase') %]component.cgi?name=[% item FILTER uri %]">
-            <bz:name>[% item FILTER html %]</bz:name>
-          </bz:component>
-        </li>
+      [% FOREACH product = products %]
+        [% FOREACH component = product.components %]
+          <li>
+            <bz:component rdf:about="[% Param('urlbase') %]component.cgi?name=[% component.name FILTER uri %]">
+              <bz:name>[% component.name FILTER html %]</bz:name>
+            </bz:component>
+          </li>
+        [% END %]
       [% END %]
     </Seq>
   </bz:components>
 
   <bz:versions>
     <Seq>
-      [% FOREACH item = legal_versions %]
-        <li>
-          <bz:version rdf:about="[% Param('urlbase') %]version.cgi?name=[% item FILTER uri %]">
-            <bz:name>[% item FILTER html %]</bz:name>
-          </bz:version>
-        </li>
+      [% FOREACH product = products %]
+        [% FOREACH version = product.versions %]
+          <li>
+            <bz:version rdf:about="[% Param('urlbase') %]version.cgi?name=[% version.name FILTER uri %]">
+              <bz:name>[% version.name FILTER html %]</bz:name>
+            </bz:version>
+          </li>
+        [% END %]
       [% END %]
     </Seq>
   </bz:versions>
@@ -169,12 +173,14 @@
   [% IF Param('usetargetmilestone') %]
     <bz:target_milestones>
       <Seq>
-        [% FOREACH item = legal_milestones %]
-          <li>
-            <bz:target_milestone rdf:about="[% Param('urlbase') %]milestone.cgi?name=[% item FILTER uri %]">
-              <bz:name>[% item FILTER html %]</bz:name>
-            </bz:target_milestone>
-          </li>
+        [% FOREACH product = products %]
+          [% FOREACH milestone = product.milestones %]
+            <li>
+              <bz:target_milestone rdf:about="[% Param('urlbase') %]milestone.cgi?name=[% milestone.name FILTER uri %]">
+                <bz:name>[% milestone.name FILTER html %]</bz:name>
+              </bz:target_milestone>
+            </li>
+          [% END %]
         [% END %]
       </Seq>
     </bz:target_milestones>
diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl
index 4945c723110bb3770d5161035c829cc1814003cd..d03a772c47863ed8f465c9a429120ec74d617983 100644
--- a/template/en/default/filterexceptions.pl
+++ b/template/en/default/filterexceptions.pl
@@ -90,11 +90,6 @@
   'status.name',
 ],
 
-'search/tabs.html.tmpl' => [
-  'tab.name',
-  'tab.description',
-],
-
 'request/queue.html.tmpl' => [
   'column_headers.$group_field', 
   'column_headers.$column', 
@@ -249,7 +244,7 @@
 ],
 
 'global/choose-classification.html.tmpl' => [
-  'classdesc.$p', 
+  'class.description', 
 ],
 
 'global/choose-product.html.tmpl' => [
@@ -310,6 +305,7 @@
 'bug/comments.html.tmpl' => [
   'comment.isprivate', 
   'comment.when', 
+  'bug.bug_id',
 ],
 
 'bug/dependency-graph.html.tmpl' => [
@@ -366,9 +362,13 @@
   'bug.deadline',
 ],
 
+'bug/show.html.tmpl' => [
+  'bug.bug_id',
+],
+
 'bug/show.xml.tmpl' => [
   'VERSION', 
-  'a.attachid', 
+  'a.id', 
   'field', 
 ],
 
@@ -388,7 +388,7 @@
 ],
 
 'bug/votes/list-for-bug.html.tmpl' => [
-  'voter.count', 
+  'voter.vote_count', 
   'total', 
 ],
 
@@ -409,10 +409,6 @@
   'bug_id', 
 ],
 
-'bug/process/next.html.tmpl' => [
-  'bug.bug_id', 
-],
-
 'bug/process/results.html.tmpl' => [
   'title.$type', 
   'id', 
@@ -462,7 +458,7 @@
 ],
 
 'attachment/list.html.tmpl' => [
-  'attachment.attachid', 
+  'attachment.id', 
   'flag.status',
   'bugid',
 ],
@@ -498,8 +494,7 @@
 ],
 
 'admin/table.html.tmpl' => [
-  'link_uri',
-  'c.content'
+  'link_uri'
 ],
 
 'admin/classifications/del.html.tmpl' => [
@@ -569,6 +564,7 @@
   'type.sortkey || 1',
   'typeLabelLowerPlural',
   'typeLabelLowerSingular',
+  'selname',
 ],
 
 'admin/flag-type/list.html.tmpl' => [
@@ -578,7 +574,7 @@
 
 
 'admin/components/confirm-delete.html.tmpl' => [
-  'bug_count'
+  'comp.bug_count'
 ],
 
 'admin/components/deleted.html.tmpl' => [
@@ -612,15 +608,7 @@
 ],
 
 'admin/components/edit.html.tmpl' => [
-  'bug_count'
-],
-
-'admin/components/list.html.tmpl' => [
-  'cgi.query_string'
-],
-
-'admin/components/select-product.html.tmpl' => [
-  'cgi.query_string'
+  'comp.bug_count'
 ],
 
 'admin/milestones/confirm-delete.html.tmpl' => [
@@ -656,10 +644,8 @@
 ],
 
 'account/prefs/prefs.html.tmpl' => [
-  'tab.name', 
-  'tab.description', 
-  'current_tab.name', 
-  'current_tab.description', 
+  'current_tab.label',
+  'current_tab.name',
 ],
 
 'account/prefs/settings.html.tmpl' => [
diff --git a/template/en/default/flag/CVS/Entries b/template/en/default/flag/CVS/Entries
index 86d10bf2d2296b233ef1ce1ac94cc4cf4b4d24f6..39fe52789022510d80d911efee235085d2d9b366 100644
--- a/template/en/default/flag/CVS/Entries
+++ b/template/en/default/flag/CVS/Entries
@@ -1,2 +1,2 @@
-/list.html.tmpl/1.17/Fri Feb 18 21:11:59 2005//TBUGZILLA-2_20
+/list.html.tmpl/1.19/Sun Aug 21 21:01:33 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/flag/CVS/Tag b/template/en/default/flag/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/flag/CVS/Tag
+++ b/template/en/default/flag/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/flag/list.html.tmpl b/template/en/default/flag/list.html.tmpl
index 3d8161ff1af74ea3d7dbc8b183581032b49a3216..83992617a15ddfabcf0d12cdb736e54e391e1ad1 100644
--- a/template/en/default/flag/list.html.tmpl
+++ b/template/en/default/flag/list.html.tmpl
@@ -98,10 +98,12 @@
           [% flag.setter.nick FILTER html %]:
         </td>
         <td>
-          [% type.name FILTER html FILTER no_break %]
+          <label title="[% type.description FILTER html %]">
+            [%- type.name FILTER html FILTER no_break %]</label>
         </td>
         <td>
           <select id="flag-[% flag.id %]" name="flag-[% flag.id %]" 
+                  title="[% type.description FILTER html %]"
                   onchange="toggleRequesteeField(this);">
             <option value="X"></option>
             [% IF type.is_active %]
@@ -119,7 +121,7 @@
           <td>
             [% IF type.is_active && type.is_requesteeble %]
               <span style="white-space: nowrap;">
-                (<input type="text" size="8" maxlength="255"
+                (<input type="text" size="30" maxlength="255"
                         id="requestee-[% flag.id %]" 
                         name="requestee-[% flag.id %]"
                         [% IF flag.status == "?" && flag.requestee %]
@@ -137,9 +139,13 @@
     [% IF (!type.flags || type.flags.size == 0) && type.is_active %]
       <tr>
         <td>&nbsp;</td>
-        <td>[% type.name FILTER html FILTER no_break %]</td>
+        <td>
+          <label title="[% type.description FILTER html %]">
+            [%- type.name FILTER html FILTER no_break %]</label>
+        </td>
         <td>
           <select id="flag_type-[% type.id %]" name="flag_type-[% type.id %]" 
+                  title="[% type.description FILTER html %]"
                   onchange="toggleRequesteeField(this);">
             <option value="X"></option>
             <option value="+">+</option>
@@ -153,7 +159,7 @@
           <td>
             [% IF type.is_requesteeble %]
               <span style="white-space: nowrap;">
-                (<input type="text" size="8" maxlength="255"
+                (<input type="text" size="30" maxlength="255"
                         id="requestee_type-[% type.id %]" 
                         name="requestee_type-[% type.id %]">)
               </span>
@@ -172,9 +178,13 @@
         [% separator_displayed = 1 %]
     [% END %]
     <tr>
-      <td colspan="2">addl. [% type.name FILTER html FILTER no_break %]</td>
+      <td colspan="2">
+        addl. <label title="[% type.description FILTER html %]">
+          [%- type.name FILTER html FILTER no_break %]</label>
+      </td>
       <td>
         <select id="flag_type-[% type.id %]" name="flag_type-[% type.id %]" 
+                title="[% type.description FILTER html %]"
                 onchange="toggleRequesteeField(this);">
           <option value="X"></option>
           <option value="+">+</option>
@@ -188,7 +198,7 @@
         <td>
           [% IF type.is_requesteeble %]
               <span style="white-space: nowrap;">
-                (<input type="text" size="8" maxlength="255"
+                (<input type="text" size="30" maxlength="255"
                         id="requestee_type-[% type.id %]" 
                         name="requestee_type-[% type.id %]">)
               </span>
diff --git a/template/en/default/global/CVS/Entries b/template/en/default/global/CVS/Entries
index 2d950c5059a0b6997f6c594c68a9d97a10dd9b0b..5425f900dcd936734f0da56e4a43f2596bbc9641 100644
--- a/template/en/default/global/CVS/Entries
+++ b/template/en/default/global/CVS/Entries
@@ -1,22 +1,24 @@
-/banner.html.tmpl/1.8/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_20
-/choose-classification.html.tmpl/1.4/Fri Feb 25 17:39:52 2005//TBUGZILLA-2_20
-/choose-product.html.tmpl/1.12/Fri Feb 25 17:39:52 2005//TBUGZILLA-2_20
-/code-error.html.tmpl/1.52.2.1/Wed Jul 20 02:23:34 2005//TBUGZILLA-2_20
-/confirm-user-match.html.tmpl/1.12/Thu Jul  7 22:35:58 2005//TBUGZILLA-2_20
-/field-descs.none.tmpl/1.10.2.2/Thu Aug 11 06:20:59 2005//TBUGZILLA-2_20
-/footer.html.tmpl/1.12/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_20
-/header.html.tmpl/1.39/Tue Mar 15 17:16:24 2005//TBUGZILLA-2_20
-/help-header.html.tmpl/1.4.4.1/Wed Sep 14 20:59:10 2005//TBUGZILLA-2_20
-/help.html.tmpl/1.3/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20
-/hidden-fields.html.tmpl/1.9/Thu Apr  7 23:37:56 2005//TBUGZILLA-2_20
-/initialize.none.tmpl/1.1/Sun Jan 11 17:12:14 2004//TBUGZILLA-2_20
-/message.html.tmpl/1.7/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20
-/messages.html.tmpl/1.30.2.2/Wed Jul 27 20:01:38 2005//TBUGZILLA-2_20
-/select-menu.html.tmpl/1.4/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20
-/setting-descs.none.tmpl/1.3.4.1/Wed Jul 20 02:23:34 2005//TBUGZILLA-2_20
-/site-navigation.html.tmpl/1.15/Mon Jan 24 16:39:26 2005//TBUGZILLA-2_20
-/useful-links.html.tmpl/1.39.2.1/Sun Aug 21 19:30:08 2005//TBUGZILLA-2_20
-/user-error.html.tmpl/1.115.2.5/Sun Sep 25 21:10:56 2005//TBUGZILLA-2_20
-/userselect.html.tmpl/1.5/Thu Mar 17 15:50:45 2005//TBUGZILLA-2_20
-/variables.none.tmpl/1.3/Tue Apr 12 18:19:57 2005//TBUGZILLA-2_20
+/banner.html.tmpl/1.8/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_21_1
+/choose-classification.html.tmpl/1.5/Fri Sep  2 21:12:09 2005//TBUGZILLA-2_21_1
+/choose-product.html.tmpl/1.13/Tue Jul 19 21:54:45 2005//TBUGZILLA-2_21_1
+/code-error.html.tmpl/1.57/Thu Sep  1 21:52:20 2005//TBUGZILLA-2_21_1
+/confirm-user-match.html.tmpl/1.12/Thu Jul  7 22:35:58 2005//TBUGZILLA-2_21_1
+/field-descs.none.tmpl/1.12/Thu Aug 11 06:19:24 2005//TBUGZILLA-2_21_1
+/footer.html.tmpl/1.12/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_21_1
+/header.html.tmpl/1.39/Tue Mar 15 17:16:24 2005//TBUGZILLA-2_21_1
+/help-header.html.tmpl/1.6/Wed Aug 10 01:30:41 2005//TBUGZILLA-2_21_1
+/help.html.tmpl/1.4/Wed Aug 10 01:30:41 2005//TBUGZILLA-2_21_1
+/hidden-fields.html.tmpl/1.9/Thu Apr  7 23:37:56 2005//TBUGZILLA-2_21_1
+/initialize.none.tmpl/1.1/Sun Jan 11 17:12:14 2004//TBUGZILLA-2_21_1
+/message.html.tmpl/1.7/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_21_1
+/message.txt.tmpl/1.2/Thu Jul 14 06:05:45 2005//TBUGZILLA-2_21_1
+/messages.html.tmpl/1.32/Wed Jul 27 19:58:23 2005//TBUGZILLA-2_21_1
+/select-menu.html.tmpl/1.4/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_21_1
+/setting-descs.none.tmpl/1.5/Wed Jul 20 02:14:25 2005//TBUGZILLA-2_21_1
+/site-navigation.html.tmpl/1.15/Mon Jan 24 16:39:26 2005//TBUGZILLA-2_21_1
+/tabs.html.tmpl/1.2/Sat Jul 30 01:01:54 2005//TBUGZILLA-2_21_1
+/useful-links.html.tmpl/1.41/Sun Aug 21 19:27:40 2005//TBUGZILLA-2_21_1
+/user-error.html.tmpl/1.129/Tue Sep 27 21:47:33 2005//TBUGZILLA-2_21_1
+/userselect.html.tmpl/1.5/Thu Mar 17 15:50:45 2005//TBUGZILLA-2_21_1
+/variables.none.tmpl/1.3/Tue Apr 12 18:19:57 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/global/CVS/Tag b/template/en/default/global/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/global/CVS/Tag
+++ b/template/en/default/global/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/global/choose-classification.html.tmpl b/template/en/default/global/choose-classification.html.tmpl
index b2021f234cc595db92b2e555cb1c6a877f08f9bd..627ac860fe7b624dee54d90a215dae329246be29 100644
--- a/template/en/default/global/choose-classification.html.tmpl
+++ b/template/en/default/global/choose-classification.html.tmpl
@@ -18,8 +18,8 @@
   #%]
 
 [%# INTERFACE:
-  # classdesc: hash. May be empty. The hash keys are the classifications, and the values
-  # are their descriptions.
+  # classifications: an array of classification objects containing
+  #                  at least one product accessible by the user.
   #%]
 
 [% IF target == "enter_bug.cgi" %]
@@ -45,21 +45,19 @@
   </tr>    
 [% END %]
 
-[% FOREACH p = classdesc.keys.sort %]
-  [% IF classifications.$p.size > 0 %]
+[% FOREACH class = classifications %]
   <tr>
     <th align="right" valign="top">
-      <a href="[% target FILTER url_quote %]?classification=[% p FILTER url_quote -%]
+      <a href="[% target FILTER url_quote %]?classification=[% class.name FILTER url_quote -%]
             [%- IF cloned_bug_id %]&amp;cloned_bug_id=[% cloned_bug_id FILTER url_quote %][% END -%] 
             [%- IF format %]&amp;format=[% format FILTER url_quote %][% END %]">
-      [% p FILTER html %]</a>:
+      [% class.name FILTER html %]</a>:
     </th>
 
-    [% IF classdesc.$p %]
-      <td valign="top">&nbsp;[% classdesc.$p %]</td>
+    [% IF class.description %]
+      <td valign="top">&nbsp;[% class.description %]</td>
     [% END %]
   </tr>
-  [% END %]
 [% END %]
 
 </table>
diff --git a/template/en/default/global/choose-product.html.tmpl b/template/en/default/global/choose-product.html.tmpl
index 2fdc3b1b738a022817d48c96328ec523e28702f2..078b9b70076bdfd68dfc8c0efe69bc5fb43b0358 100644
--- a/template/en/default/global/choose-product.html.tmpl
+++ b/template/en/default/global/choose-product.html.tmpl
@@ -45,11 +45,11 @@
       <a href="[% target %]?product=[% p FILTER url_quote -%]
             [%- IF cloned_bug_id %]&amp;cloned_bug_id=[% cloned_bug_id FILTER url_quote %][% END -%] 
             [%- IF format %]&amp;format=[% format FILTER url_quote %][% END %]">
-      [% p FILTER html %]</a>:
+      [% p FILTER html %]</a>:&nbsp;
     </th>
 
     [% IF proddesc.$p %]
-      <td valign="top">&nbsp;[% proddesc.$p %]</td>
+      <td valign="top">[% proddesc.$p %]</td>
     [% END %]
   </tr>
 [% END %]
diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl
index 608e9a08fea16f352f61a5f726c7301430c7bd24..b459fa44a3001f4eb8a57d8fd2ce218c85b78f49 100644
--- a/template/en/default/global/code-error.html.tmpl
+++ b/template/en/default/global/code-error.html.tmpl
@@ -70,8 +70,18 @@
     the error [% bug.error FILTER html %].
     
   [% ELSIF error == "chart_data_not_generated" %]
-    The tool which gathers [% terms.bug %] counts has not been run yet.
-        
+    [% IF product %]
+      Charts for the <em>[% product FILTER html %]</em> product are not
+      available yet because no charting data has been collected for it since it
+      was created.
+    [% ELSE %]
+      No charting data has been collected yet.
+    [% END %]
+    Please wait a day and try again.
+    If you're seeing this message after a day, then you should contact
+    <a href="mailto:[% Param('maintainer') %]">[% Param('maintainer') %]</a>
+    and reference this error.
+
   [% ELSIF error == "chart_datafile_corrupt" %]
     The chart data file [% file FILTER html %] is corrupt.
         
@@ -149,6 +159,11 @@
     The active flag was improperly set.  There may be
     a problem with [% terms.Bugzilla %] or [% terms.abug %] in your browser.
 
+  [% ELSIF error == "invalid_numeric_argument" %]
+    [% title = "Invalid number argument" %]
+    The argument <code>[% argument FILTER html %] = [% value FILTER html %]</code>
+    of <code>[% function FILTER html %]</code> is not a natural number.
+
   [% ELSIF error == "invalid_series_id" %]
     [% title = "Invalid Series" %]
     The series_id [% series_id FILTER html %] is not valid. It may be that
@@ -174,8 +189,9 @@
     [% END %] 
 
   [% ELSIF error == "flag_requestee_disabled" %]
-    [% title = "Flag not Specifically Requestable" %]
-    The flag <em>[% name FILTER html %]</em> is not specifically requestable.
+    [% title = "Flag not Requestable from Specific Person" %]
+    You can't ask a specific person for
+    <em>[% type.name FILTER html %]</em>.
   
   [% ELSIF error == "flag_status_invalid" %]
     The flag status <em>[% status FILTER html %]</em>
@@ -301,6 +317,9 @@
     There is an internal error in the SQL query generation code,
     creating queries with implicit JOIN.
 
+  [% ELSIF error == "invalid_post_bug_submit_action" %]
+    Invalid setting for post_bug_submit_action
+
   [% ELSE %]
     [% title = "Internal error" %]
     An internal error has occured, but [% terms.Bugzilla %] doesn't know
diff --git a/template/en/default/global/help-header.html.tmpl b/template/en/default/global/help-header.html.tmpl
index 330ba9160a15355c8eeac9994322d04d5ad2b7fc..96814e93fd5185ef47f6a1301e43766d7f263830 100644
--- a/template/en/default/global/help-header.html.tmpl
+++ b/template/en/default/global/help-header.html.tmpl
@@ -22,7 +22,7 @@
 [% USE Bugzilla %]
 [% cgi = Bugzilla.cgi %]
 
-[% IF help %]
+[% IF cgi.param("help") %]
   [% IF cgi.user_agent("Mozilla/5") %]
     <style type="text/css">
     .help {
diff --git a/template/en/default/global/help.html.tmpl b/template/en/default/global/help.html.tmpl
index 2095a0dcd53d1d3438ed3bb67c32fa4eb04b1f9a..cc69534da81e22e1efbb6f1913e49fbdf7e09a03 100644
--- a/template/en/default/global/help.html.tmpl
+++ b/template/en/default/global/help.html.tmpl
@@ -22,7 +22,7 @@
 [% USE Bugzilla %]
 [% cgi = Bugzilla.cgi %]
 
-[% IF help %]
+[% IF cgi.param("help") %]
   [% IF cgi.user_agent("Mozilla/5") %]
       [% FOREACH h = help_html %]
       <div id="[% h.id %]_help" class="help" style="display: none;">
diff --git a/template/en/default/global/message.txt.tmpl b/template/en/default/global/message.txt.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..fc0ec197747b6769ed9ba7bc25a89b8eee0347d1
--- /dev/null
+++ b/template/en/default/global/message.txt.tmpl
@@ -0,0 +1,26 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Max Kanat-Alexander.
+  # Portions created by Max Kanat-Alexander are Copyright (C) 2005
+  # Max Kanat-Alexander. All Rights Reserved.
+  #
+  # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+  #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+[%# Yes, this may show some HTML. But it's the best we
+  # can do at the moment. %]
+[% PROCESS global/messages.html.tmpl %]
+[% message %]
diff --git a/template/en/default/global/setting-descs.none.tmpl b/template/en/default/global/setting-descs.none.tmpl
index f4992aa4817931549bc1d3b0fa7af179530b770c..9957cf6a48f3b812061505f43ec26769d87676c3 100644
--- a/template/en/default/global/setting-descs.none.tmpl
+++ b/template/en/default/global/setting-descs.none.tmpl
@@ -28,5 +28,9 @@
    "off"                              => "Off",
    "oldest_to_newest"                 => "Oldest to Newest",
    "on"                               => "On"
+   "post_bug_submit_action"           => "After changing $terms.abug",
+   "next_bug"                         => "Show next $terms.bug in my list",
+   "same_bug"                         => "Show the updated $terms.bug",
+   "nothing"                          => "Do Nothing",
                    } 
 %]
diff --git a/template/en/default/global/tabs.html.tmpl b/template/en/default/global/tabs.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..6f8601b86458474f45140f4c176eaf188f7c7215
--- /dev/null
+++ b/template/en/default/global/tabs.html.tmpl
@@ -0,0 +1,47 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv@gerv.net>
+  #                 Myk Melez <myk@mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # tabs: List of hashes. Must have at least one item.  Each hash has:
+  #   name: string. Name of the tab.
+  #   link: string. relative URL to the tab's resource on this installation.
+  #   label: string. text displayed in the tab.
+  # current_tab_name: string. name of the currently selected tab
+  #%]
+
+<center>
+  <table cellspacing="0" cellpadding="10" border="0" width="100%">
+    <tr>
+      <td class="tab spacer">&nbsp;</td>
+
+      [% FOREACH tab = tabs %]
+        [% IF tab.name == current_tab_name %]
+          <td class="tab selected">[% tab.label FILTER html %]</td>
+        [% ELSE %]
+          <td class="tab"><a href="[% tab.link FILTER html %]">[% tab.label FILTER html %]</a></td>
+        [% END %]
+      [% END %]
+
+       <td class="tab spacer">&nbsp;</td>
+     </tr>
+   </table>
+</center>
diff --git a/template/en/default/global/useful-links.html.tmpl b/template/en/default/global/useful-links.html.tmpl
index 63dfe0b0489a22af558eee427fb71d8c63a8e0dc..2ac89f91c6d3af5082ec62d553b88cd19cd06592 100644
--- a/template/en/default/global/useful-links.html.tmpl
+++ b/template/en/default/global/useful-links.html.tmpl
@@ -25,7 +25,6 @@
 
 [% PROCESS global/variables.none.tmpl %]
 
-<form method="get" action="show_bug.cgi">
 <div id="useful-links">
   <div id="links-actions">
     <div class="label">Actions:</div>
@@ -34,8 +33,13 @@
         <a href="enter_bug.cgi">New</a> | 
         <a href="query.cgi">Search</a> |
         
-        [% terms.bug %] # <input class="txt" name="id" size="6">
-        <input class="btn" type="submit" value="Find"> | 
+        <form action="buglist.cgi" method="get"
+              onsubmit="if (this.quicksearch.value == '')
+                        { alert('Please enter one or more search terms first.');
+                          return false; } return true;">
+            <input class="txt" type="text" name="quicksearch">
+            <input class="btn" type="submit" value="Find">
+        </form> |
         
         <a href="report.cgi">Reports</a> 
         
@@ -127,4 +131,3 @@
   [%# Sections of links to more things users can do on this installation. %]
   [% Hook.process("end") %]
 </div>
-</form>
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 15c4df00af75c510778c6add5f9e0615f19af836..f23220d2945ed9a789d45e54839fe55ce596a718 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -134,6 +134,8 @@
       delete
     [% ELSIF action == "edit" %]
       add, modify or delete
+    [% ELSIF action == "move" %]
+      move
     [% ELSIF action == "run" %]
       run
     [% ELSIF action == "schedule" %]
@@ -144,6 +146,8 @@
 
     [% IF object == "attachment" %]
       this attachment
+    [% ELSIF object == "bugs" %]
+      [%+ terms.bugs %]
     [% ELSIF object == "charts" %]
       the "New Charts" feature
     [% ELSIF object == "classifications" %]
@@ -248,10 +252,6 @@
      must reassign those products to another classification before you
      can delete this one.
 
-  [% ELSIF error == "cant_delete_default_classification" %]
-     Sorry, but you can not delete the default classification,
-     '[% name FILTER html %]'.
-
   [% ELSIF error == "component_already_exists" %]
     [% title = "Component Already Exists" %]
     A component with the name '[% name FILTER html %]' already exists.
@@ -288,21 +288,6 @@
     [% title = "Component Requires Default Assignee" %]
     You must enter a default assignee for component '[% name FILTER html %]'.
 
-  [% ELSIF error == "component_need_valid_initialowner" %]
-    [% title = "Component Requires A Valid Default Assignee" %]
-    You must use an existing [% terms.Bugzilla %] account as the default assignee for
-    component '[% name FILTER html %]'.
-
-  [% ELSIF error == "component_need_valid_initialqacontact" %]
-    [% title = "Component Requires A Valid Default QA Contact" %]
-    You must use an existing [% terms.Bugzilla %] account as default QA contact for
-    component '[% name FILTER html %]'.
-     
-  [% ELSIF error == "product_not_specified" %]
-    [% title = "No Product Specified" %]
-    No product specified when trying to edit components, milestones or
-    versions.
-
   [% ELSIF error == "component_not_specified" %]
     [% title = "No Component Specified" %]
     No component specified when trying to edit components.
@@ -432,18 +417,22 @@
     you could convert it to a compressible format like JPG or PNG and try
     again.
 
+  [% ELSIF error == "flag_not_multiplicable" %]
+    You can't ask more than one person at a time for
+    <em>[% type.name FILTER html %]</em>.
+  
   [% ELSIF error == "flag_requestee_unauthorized" %]
     [% title = "Flag Requestee Not Authorized" %]
 
     You asked [% requestee.identity FILTER html %]
     for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %] 
     [% bug_id FILTER html -%]
-    [% IF attach_id %], attachment [% attach_id FILTER html %][% END %], 
+    [% IF attachment %], attachment [% attachment.id FILTER html %][% END %], 
     but that [% terms.bug %] has been restricted to users in certain groups, 
     and the user you asked isn't in all the groups to which 
     the [% terms.bug %] has been restricted.
-    Please choose someone else to ask, or make the [% terms.bug %] accessible to users
-    on its CC: list and add that user to the list.
+    Please choose someone else to ask, or make the [% terms.bug %] accessible
+    to users on its CC: list and add that user to the list.
 
   [% ELSIF error == "flag_requestee_unauthorized_attachment" %]
     [% title = "Flag Requestee Not Authorized" %]
@@ -451,11 +440,10 @@
     You asked [% requestee.identity FILTER html %]
     for <code>[% flag_type.name FILTER html %]</code> on 
     [%+ terms.bug %] [%+ bug_id FILTER html %],
-    attachment [% attach_id FILTER html %], but that attachment is restricted 
-    to users
-    in the [% Param("insidergroup") FILTER html %] group, and the user
-    you asked isn't in that group.  Please choose someone else to ask,
-    or ask an administrator to add the user to the group.
+    attachment [% attachment.id FILTER html %], but that attachment
+    is restricted to users in the [% Param("insidergroup") FILTER html %] group,
+    and the user you asked isn't in that group.  Please choose someone else
+    to ask, or ask an administrator to add the user to the group.
 
   [% ELSIF error == "flag_type_cc_list_invalid" %]
     [% title = "Flag Type CC List Invalid" %]
@@ -638,10 +626,6 @@
     The context [% context FILTER html %] is invalid (must be a number,
     "file" or "patch").
 
-  [% ELSIF error == "invalid_field_name" %]
-    [% title = "Invalid Field Name" %]
-    The field "[% name FILTER html %]" is invalid.
-
   [% ELSIF error == "invalid_format" %]
     [% title = "Invalid Format" %]
     The format "[% format FILTER html %]" is invalid (must be one of
@@ -816,7 +800,12 @@
     [% title = "Missing Search" %]
     The search named <em>[% queryname FILTER html %]</em> does not
     exist.
-        
+
+  [% ELSIF error == "move_bugs_disabled" %]
+    [% title = BLOCK %][% terms.Bug %] Moving Disabled[% END %]
+    Sorry, [% terms.bug %] moving has been disabled. If you need
+    to move [% terms.abug %], please contact [% Param("maintainer") %].
+
   [% ELSIF error == "must_be_patch" %]
     [% title = "Attachment Must Be Patch" %]
     Attachment #[% attach_id FILTER html %] must be a patch.
@@ -957,6 +946,59 @@
     Patches cannot be more than [% Param('maxpatchsize') %] KB in size.
     Try breaking your patch into several pieces.
 
+  [% ELSIF error == "prod_votes_per_bug_must_be_nonnegative" %]
+    [% title = "Maximum Votes Must Be Non-negative" %]
+    '[% maxvotesperbug FILTER html %]' is an invalid value for the 
+    <em>'Maximum Votes Per [% terms.Bug %]'</em> field, which should
+    contain a non-negative number.
+
+  [% ELSIF error == "prod_votes_per_user_must_be_nonnegative" %]
+    [% title = "Votes Per User Must Be Non-negative" %]
+    '[% votesperuser FILTER html %]' is an invalid value for the 
+    <em>'Votes Per User'</em> field, which should contain a
+    non-negative number.
+
+  [% ELSIF error == "prod_votes_to_confirm_must_be_nonnegative" %]
+    [% title = "Votes To Confirm Must Be Non-negative" %]
+    '[% votestoconfirm FILTER html %]' is an invalid value for the 
+    <em>'Votes To Confirm'</em> field, which should contain a
+    non-negative number.
+
+  [% ELSIF error == "prod_cant_delete_description" %]
+    [% title = "Cannot delete product description" %]
+    Cannot delete the description for product
+    '[% product FILTER html %]'.
+
+  [% ELSIF error == "prod_cant_delete_name" %]
+    [% title = "Cannot delete product name" %]
+    Cannot delete the product name for product '[% product FILTER html %]'.
+
+  [% ELSIF error == "prod_name_already_in_use" %]
+    [% title = "Product name already in use" %]
+    The product name '[% product FILTER html %]' is already in use.
+  
+  [% ELSIF error == "prod_name_diff_in_case" %]
+    [% title = "Product name differs only in case" %]
+    The product name '[% product FILTER html %]' differs from existing 
+    product '[% existing_product FILTER html %]' only in case.
+
+  [% ELSIF error == "prod_must_define_defaultmilestone" %]
+    [% title = "Must define new default milestone" %]
+    [% IF classification %]
+      [% classification_url_part = BLOCK %]&amp;classification=
+        [%- classification FILTER url_quote %]
+      [% END %]
+    [% END %]
+    You must <a href="editmilestones.cgi?action=add&amp;product=
+    [%- product FILTER url_quote %]
+    [%- classification_url_part FILTER none %]">
+    create the milestone '[% defaultmilestone FILTER html %]'</a> before
+    it can be made the default milestone for product '[% product FILTER html %]'.
+
+  [% ELSIF error == "product_blank_name" %]
+    [% title = "Blank Product Name Not Allowed" %]
+    You must enter a name for the new product.
+  
   [% ELSIF error == "product_disabled" %]
     [% title = BLOCK %]Product closed for [% terms.Bugs %] Entry[% END %]
     Sorry, entering [% terms.bugs %] into the
@@ -973,6 +1015,19 @@
     You must reassign those [% terms.bugs %] to another product before you
     can delete this one.
 
+  [% ELSIF error == "product_must_have_description" %]
+    [% title = "Product needs Description" %]
+    You must enter a description for product '[% product FILTER html %]'.
+
+  [% ELSIF error == "product_must_have_version" %]
+    [% title = "Product needs Version" %]
+    You must enter a version for product '[% product FILTER html %]'.
+
+  [% ELSIF error == "product_not_specified" %]
+    [% title = "No Product Specified" %]
+    No product specified when trying to edit components, milestones, versions
+    or product.
+
   [% ELSIF error == "query_name_missing" %]
     [% title = "No Search Name Specified" %]
     You must enter a name for your search.
diff --git a/template/en/default/index.html.tmpl b/template/en/default/index.html.tmpl
index eb1cbbd58a1c115aebd38dcdf686c0e086ae03fe..a19334c3040d9d01cc60d8b70302fc9c2ef37279 100644
--- a/template/en/default/index.html.tmpl
+++ b/template/en/default/index.html.tmpl
@@ -28,11 +28,12 @@
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% title = BLOCK %]
-[% terms.Bugzilla %] Main Page
-[% END %]
-[% style_urls = [ "skins/standard/index.css" ] %]
-[% PROCESS global/header.html.tmpl %]
+
+[% PROCESS global/header.html.tmpl
+   title = "$terms.Bugzilla Main Page"
+   style_urls = [ 'skins/standard/index.css' ]
+   onload = 'document.forms[\'f\'].quicksearch.focus();'
+%]
 
 
 <script type="text/javascript">
@@ -84,25 +85,19 @@ function addSidebar() {
 
   </ul>
 
-  <form id="show-bug" name="f" action="show_bug.cgi" method="get"
-      onsubmit="QuickSearch(f.id.value); return false;">
+  <form id="show-bug" name="f" action="buglist.cgi" method="get"
+        onsubmit="if (this.quicksearch.value == '')
+                  { alert('Please enter one or more search terms first.');
+                    return false; } return true;">
   <div>
     <p>Enter [% terms.abug %] # or some search terms:</p>
-    <input id="text" type="text" name="id">
-    <input id="show" type="submit" value="Show">
-    <a href="quicksearch.html">[Help]</a>
+    <input id="quicksearch" type="text" name="quicksearch">
+    <input id="find" type="submit" value="Find">
+    <a href="page.cgi?id=quicksearch.html">[Help]</a>
   </div>
   </form>
 
   <div class="outro"></div>
 </div>
 
-<script type="text/javascript" src="localconfig.js"></script>
-<script type="text/javascript" src="quicksearch.js"></script>
-<script type="text/javascript">
-<!--
-document.forms['f'].id.focus();
-//-->
-</script>
-
 [% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/list/CVS/Entries b/template/en/default/list/CVS/Entries
index 2926c29b8b6b31be56c62478240907d80e46e737..f665676d713acbbbc46989a15dca5439955a60a6 100644
--- a/template/en/default/list/CVS/Entries
+++ b/template/en/default/list/CVS/Entries
@@ -1,13 +1,13 @@
-/change-columns.html.tmpl/1.12/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20
-/edit-multiple.html.tmpl/1.26.2.2/Thu Sep  8 23:45:16 2005//TBUGZILLA-2_20
-/list-simple.html.tmpl/1.9/Thu Oct 21 19:13:28 2004//TBUGZILLA-2_20
-/list.csv.tmpl/1.4.4.1/Wed Jul 20 02:23:34 2005//TBUGZILLA-2_20
-/list.html.tmpl/1.37/Mon Jun 20 19:16:32 2005//TBUGZILLA-2_20
-/list.ics.tmpl/1.4/Tue Mar 15 17:16:25 2005//TBUGZILLA-2_20
-/list.js.tmpl/1.2/Sat Nov  8 18:04:36 2003//TBUGZILLA-2_20
-/list.rdf.tmpl/1.4/Fri Nov 21 23:15:40 2003//TBUGZILLA-2_20
-/list.rss.tmpl/1.2.2.1/Tue Jul 19 21:19:51 2005//TBUGZILLA-2_20
-/quips.html.tmpl/1.16/Mon Jun 20 19:42:11 2005//TBUGZILLA-2_20
-/server-push.html.tmpl/1.5/Thu Mar 18 21:51:19 2004//TBUGZILLA-2_20
-/table.html.tmpl/1.27/Fri May 27 11:37:17 2005//TBUGZILLA-2_20
+/change-columns.html.tmpl/1.12/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_21_1
+/edit-multiple.html.tmpl/1.30/Thu Sep  8 23:40:10 2005//TBUGZILLA-2_21_1
+/list-simple.html.tmpl/1.9/Thu Oct 21 19:13:28 2004//TBUGZILLA-2_21_1
+/list.csv.tmpl/1.5/Wed Jul 20 02:14:26 2005//TBUGZILLA-2_21_1
+/list.html.tmpl/1.39/Wed Sep  7 12:05:13 2005//TBUGZILLA-2_21_1
+/list.ics.tmpl/1.4/Tue Mar 15 17:16:25 2005//TBUGZILLA-2_21_1
+/list.js.tmpl/1.2/Sat Nov  8 18:04:36 2003//TBUGZILLA-2_21_1
+/list.rdf.tmpl/1.5/Thu Aug  4 11:51:24 2005//TBUGZILLA-2_21_1
+/list.rss.tmpl/1.4/Thu Aug  4 11:51:25 2005//TBUGZILLA-2_21_1
+/quips.html.tmpl/1.16/Mon Jun 20 19:42:11 2005//TBUGZILLA-2_21_1
+/server-push.html.tmpl/1.5/Thu Mar 18 21:51:19 2004//TBUGZILLA-2_21_1
+/table.html.tmpl/1.27/Fri May 27 11:37:17 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/list/CVS/Tag b/template/en/default/list/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/list/CVS/Tag
+++ b/template/en/default/list/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/list/edit-multiple.html.tmpl b/template/en/default/list/edit-multiple.html.tmpl
index 5f8b1ee41122573276d4205f0515b3fe9ea4a84f..92754387d874d9911cf10a3560920d11971d4079 100644
--- a/template/en/default/list/edit-multiple.html.tmpl
+++ b/template/en/default/list/edit-multiple.html.tmpl
@@ -67,14 +67,10 @@
   </tr>
   <tr>
 
-    <th>
-      <label for="rep_platform">
-        <a href="page.cgi?id=fields.html#rep_platform">Platform</a>:
-      </label>
-    </th>
+    <th><label for="component">Component:</label></th>
     <td>
-      [% PROCESS selectmenu menuname = "rep_platform"
-                            menuitems = platforms %]
+      [% PROCESS selectmenu menuname = "component"
+                            menuitems = components %]
     </td>
 
     <th>
@@ -90,10 +86,14 @@
   </tr>
   <tr>
 
-    <th><label for="component">Component:</label></th>
+    <th>
+      <label for="rep_platform">
+        <a href="page.cgi?id=fields.html#rep_platform">Platform</a>:
+      </label>
+    </th>
     <td>
-      [% PROCESS selectmenu menuname = "component"
-                            menuitems = components %]
+      [% PROCESS selectmenu menuname = "rep_platform"
+                            menuitems = platforms %]
     </td>
 
     <th>
@@ -108,15 +108,25 @@
 
   </tr>
 
-  [% IF Param("usetargetmilestone") %]
-    <tr>
+  <tr>
+    <th>
+      <label for="op_sys">
+        <a href="page.cgi?id=fields.html#op_sys">OS</a>:
+      </label>
+    </th>
+    <td [% " colspan=\"3\"" IF !Param("usetargetmilestone") %]>
+      [% PROCESS selectmenu menuname = "op_sys"
+                            menuitems = op_sys %]
+    </td>
+
+    [% IF Param("usetargetmilestone") %]
       <th><label for="target_milestone">Target Milestone:</label></th>
-      <td colspan="3">
+      <td>
         [% PROCESS selectmenu menuname = "target_milestone"
                               menuitems = targetmilestones %]
       </td>
-    </tr>
-  [% END %]
+    [% END %]
+  </tr>
 
   [% IF UserInGroup(Param("timetrackinggroup")) %]
     <tr>
@@ -182,6 +192,18 @@
     </tr>
   [% END %]
 
+  [% IF Param('usestatuswhiteboard') %]
+    <tr>
+      <td align="right">
+        <b>Status Whiteboard:</b>
+      </td>
+      <td colspan="7">
+        <input name="status_whiteboard" 
+               value="[% dontchange FILTER html %]" size="60">
+      </td>
+    </tr>
+  [% END %]
+
 </table>
 
 <b><label for="comment">Additional Comments:</label></b><br>
diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl
index 9961bb1b34bd07f29f2c944aa9165ce69a04a368..dfe57b75572819ece92c831760b5072084a9916b 100644
--- a/template/en/default/list/list.html.tmpl
+++ b/template/en/default/list/list.html.tmpl
@@ -140,6 +140,14 @@
           <input type="hidden" name="format" value="multiple">
           <input type="submit" value="&nbsp;&nbsp;Long Format&nbsp;">
         </form>
+        <form method="post" action="show_bug.cgi">
+            <input type="hidden" name="ctype" value="xml">
+          [% FOREACH id = buglist %]
+            <input type="hidden" name="id" value="[% id FILTER html %]">
+          [% END %]
+            <input type="hidden" name="excludefield" value="attachmentdata">
+            <input type="submit" value="XML">
+        </form>
 
         [% IF UserInGroup(Param('timetrackinggroup')) %]
           <form method="post" action="summarize_time.cgi">
@@ -159,7 +167,8 @@
         <a href="buglist.cgi?
         [% urlquerypart FILTER html %]&amp;ctype=ics">iCalendar</a> |
         <a href="colchange.cgi?
-        [% urlquerypart FILTER html %]">Change&nbsp;Columns</a> |
+        [% urlquerypart FILTER html %]&amp;query_based_on=
+          [% defaultsavename OR searchname FILTER html %]">Change&nbsp;Columns</a> |
 
         [% IF bugs.size > 1 && caneditbugs && !dotweak %]
           <a href="buglist.cgi?[% urlquerypart FILTER html %]
diff --git a/template/en/default/list/list.rdf.tmpl b/template/en/default/list/list.rdf.tmpl
index 39a2350f1ecf2f692140431cfe9e367a2425a788..06376aca9923517f2bb8993ccd0bfc144c16c46d 100644
--- a/template/en/default/list/list.rdf.tmpl
+++ b/template/en/default/list/list.rdf.tmpl
@@ -19,7 +19,7 @@
   # Contributor(s): Myk Melez <myk@mozilla.org>
   #%]
 
-<?xml version="1.0"?>
+<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?>
 <!-- [% template_version %] -->
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
diff --git a/template/en/default/list/list.rss.tmpl b/template/en/default/list/list.rss.tmpl
index 96d7a903d0c5982fd013d4b6759e8f98baef601c..f1d6c4745430bf5b33ef87c3660c8a77700f336b 100644
--- a/template/en/default/list/list.rss.tmpl
+++ b/template/en/default/list/list.rss.tmpl
@@ -28,7 +28,7 @@
 
 [% DEFAULT title = "$terms.Bugzilla $terms.Bugs" %]
 
-<?xml version="1.0"?>
+<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
          xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
          xmlns:dc="http://purl.org/dc/elements/1.1/"
diff --git a/template/en/default/pages/CVS/Entries b/template/en/default/pages/CVS/Entries
index f963890af1d776bf2af9b41594e13a5f7ccf220a..bf92f44c9b3454d9b6aee609cc7ed6f49aaf172e 100644
--- a/template/en/default/pages/CVS/Entries
+++ b/template/en/default/pages/CVS/Entries
@@ -1,6 +1,8 @@
-/bug-writing.html.tmpl/1.3.4.1/Thu Sep 15 10:17:06 2005//TBUGZILLA-2_20
-/fields.html.tmpl/1.5.4.1/Thu Sep  1 22:10:26 2005//TBUGZILLA-2_20
-/linked.html.tmpl/1.8/Wed Feb  9 17:30:20 2005//TBUGZILLA-2_20
-/linkify.html.tmpl/1.5/Wed Feb  9 17:30:20 2005//TBUGZILLA-2_20
-/voting.html.tmpl/1.2/Thu Mar 18 16:21:57 2004//TBUGZILLA-2_20
+/bug-writing.html.tmpl/1.4/Thu Sep 15 10:15:22 2005//TBUGZILLA-2_21_1
+/fields.html.tmpl/1.6/Thu Sep  1 22:07:48 2005//TBUGZILLA-2_21_1
+/linked.html.tmpl/1.8/Wed Feb  9 17:30:20 2005//TBUGZILLA-2_21_1
+/linkify.html.tmpl/1.5/Wed Feb  9 17:30:20 2005//TBUGZILLA-2_21_1
+/quicksearch.html.tmpl/1.1/Sun Aug 21 18:16:43 2005//TBUGZILLA-2_21_1
+/quicksearchhack.html.tmpl/1.2/Fri Aug 26 23:11:33 2005//TBUGZILLA-2_21_1
+/voting.html.tmpl/1.2/Thu Mar 18 16:21:57 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/pages/CVS/Tag b/template/en/default/pages/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/pages/CVS/Tag
+++ b/template/en/default/pages/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/pages/quicksearch.html.tmpl b/template/en/default/pages/quicksearch.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..73a0172eeebe0aea68de0128e5735275276b810a
--- /dev/null
+++ b/template/en/default/pages/quicksearch.html.tmpl
@@ -0,0 +1,190 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # Contributor(s): N.N.
+  #                 Marc Schumann <wurblzap@gmail.com>
+  #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+[% INCLUDE global/header.html.tmpl
+   title  = "$terms.Bugzilla QuickSearch",
+   style  = 'ul {margin-bottom: 2ex}
+             ul li {margin-top: 2ex}
+             ul li ul li {margin-top: 0}'
+   onload = 'document.forms[\'f\'].quicksearch.focus()'
+ %]
+
+<p style="font-size: 80%">
+  If you are already familiar with the original
+  <a href="query.cgi">[% terms.Bugzilla %] Search Form</a>,
+  you may prefer <a href="page.cgi?id=quicksearchhack.html">this form</a>.
+</p>
+
+<p>
+  Type in one or more words (or word fragments) to search for:
+</p>
+
+<form name="f" action="buglist.cgi" method="get"
+      onsubmit="if (this.quicksearch.value == '')
+                { alert('Please enter one or more search terms first.');
+                  return false; } return true;">
+  <input type="text" size="40" name="quicksearch">
+  <input type="submit" value="Find">
+</form>
+
+<h2>Getting Started</h2>
+
+<ul>
+  <li>
+    This is <strong>case-insensitive</strong> search:<br />
+    <ul>
+      <li><tt>table</tt>, <tt>Table</tt> and <tt>TABLE</tt> are all the same.</li>
+    </ul>
+  </li>
+  <li>
+    This is <strong>all words as substrings</strong>
+    search.<br />
+    Therefore you should <strong>use stems</strong> to get better results:
+    <ul>
+      <li>
+        Use <tt>localiz</tt> instead of <tt>localize</tt> or
+        <tt>localization</tt>.
+      </li>
+     <li>
+       Use <tt>bookmark</tt> instead of <tt>bookmarks</tt> or
+       <tt>bookmarking</tt>.
+     </li>
+   </ul>
+  </li>
+</ul>
+
+<h2><a name="features">Features</a></h2>
+
+<ul>
+  <li>
+    Boolean operations: &ldquo;<tt>-foo</tt>&rdquo;&nbsp;(NOT),
+    &ldquo;<tt>foo&nbsp;bar</tt>&rdquo;&nbsp;(AND),
+    &ldquo;<tt>foo|bar</tt>&rdquo;&nbsp;(OR).
+    <ul>
+      <li>
+        <strong>NOT</strong>:<br />
+        Use <tt><b>-</b><i>foo</i></tt> to exclude [% terms.bugs %]
+        with <tt><i>foo</i></tt> in the summary.
+      </li>
+      <li>
+        <strong>AND</strong>:<br />
+        Space-separated words are treated as a conjunction.
+      </li>
+      <li>
+        <strong>OR</strong>:<br />
+        Within a word, "|"-separated parts denote alternatives.
+      </li>
+      <li>
+        Besides "|", a comma can be used to separate alternatives.
+      </li>
+      <li>
+        OR has higher precedence than AND; AND is the top level operation.
+      </li>
+    </ul>
+    <i>Example:</i>
+    <tt>url,location bar,field -focus</tt> means
+    (<tt>url</tt> OR <tt>location</tt>) AND (<tt>bar</tt> OR <tt>field</tt>)
+    AND (NOT <tt>focus</tt>)
+  </li>
+  <li>
+    Use <tt>+foo</tt> to search for [% terms.bugs %] where the
+    <strong>summary</strong> contains <tt>foo</tt> as a
+    <strong>substring</strong>.<br/>
+    Use <tt>#foo</tt> to search for [% terms.bugs %] where the
+    <strong>summary</strong> contains the <strong>word</strong> <tt>foo</tt>.
+    <ul>
+      <li>
+        <tt>+brow</tt> does not find all [% terms.bugs %] in the
+        <tt>Browser</tt> product.
+      </li>
+      <li>
+        <tt>#title</tt> does not find [% terms.bugs %] with <tt>titlebar</tt>
+        or <tt>titled</tt>.
+      </li>
+    </ul>
+    Phrases with special chars (space, comma, +, -, #, &hellip;) can be
+    <strong>quoted</strong>:
+    <ul>
+      <li>
+        <tt>"lock icon"</tt>
+      </li>
+    </ul>
+  </li>
+  <li>
+    <strong>Open vs. Resolved [% terms.Bugs %]</strong>:<br />
+    By default, only open (i.e. unresolved) [% terms.bugs %] are shown.
+    Use <tt>+DUP</tt> as first word in your search to include duplicate
+    [%+ terms.bugs %] in your search,
+    <tt>FIXED</tt> to search for fixed [%+ terms.bugs %] only,
+    or <tt>ALL</tt> to search all [% terms.bugs %],
+    regardless of status or resolution.
+    Searching for duplicates is recommended if you can't find an open
+    [%+ terms.bug %] directly.
+    <ul>
+      <li>
+        <tt>+DUP,FIXED table border</tt>
+      </li>
+      <li>
+        <tt>ALL mouse wheel</tt>
+      </li>
+    </ul>
+  </li>
+  <li>
+    <strong>Focus the Search with Products &amp;
+    Components</strong>:<br />
+    To search for [% terms.bugs %] in product "Foo Bar" only, add
+    <tt>:foo</tt> or <tt>:bar</tt> or both to your search.
+    You can do this with any substring of a
+    <a href="describecomponents.cgi">product or component</a> to focus the
+    search.
+  </li>
+</ul>
+
+<h2>More Tips</h2>
+
+<ul>
+  <li>
+    You can also use this tool to <strong>lookup</strong> a [% terms.bug %] by
+    its number:<br />
+    <ul>
+      <li><tt>12345</tt></li>
+    </ul>
+  </li>
+  <li>
+    A comma-separated list of [% terms.bug %] numbers gives you a list of these
+    [%+ terms.bugs %]:<br />
+    <ul>
+      <li><tt>12345,23456,34567</tt></li>
+    </ul>
+  </li>
+</ul>
+
+<p>
+  By default, the following fields are searched: Summary, Keywords, Product,
+  Component, Status Whiteboard. If a word looks like a part of a URL, that field
+  is included in the search, too.
+</p>
+<hr>
+
+<p>
+  Use the powerful <a href="query.cgi">[% terms.Bugzilla %] Search Form</a>
+  for advanced queries.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/pages/quicksearchhack.html.tmpl b/template/en/default/pages/quicksearchhack.html.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..22913ec4227a55e0db757f280d46ded955eb17a2
--- /dev/null
+++ b/template/en/default/pages/quicksearchhack.html.tmpl
@@ -0,0 +1,377 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # Contributor(s): N.N.
+  #                 Marc Schumann <wurblzap@gmail.com>
+  #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+[% INCLUDE global/header.html.tmpl
+   title  = "$terms.Bugzilla QuickSearch (for Hackers)",
+   style  = 'th {text-align: left}'
+   onload = 'document.forms[\'f\'].quicksearch.focus()'
+ %]
+
+<p>
+  Type in one or more words (or word fragments) to search for:
+</p>
+
+<form name="f" action="buglist.cgi" method="get"
+      onsubmit="if (this.quicksearch.value == '')
+                { alert('Please enter one or more search terms first.');
+                  return false; } return true;">
+  <input type="text" size="40" name="quicksearch">
+  <input type="submit" value="Find">
+  <input type="submit" name="load" value="Load Search Form">
+</form>
+
+<p>
+  This is a case-insensitive &ldquo;all words as substrings&rdquo; search;
+  words are separated by spaces.
+  By default, the following fields are relevant: Summary, Keywords,
+  Product, Component, Status Whiteboard.
+  If a word looks like a part of a URL, that field is included in the search,
+  too.
+</p>
+<p>
+  The generic format for a &ldquo;word&rdquo; is
+  <tt>field1,&hellip;,fieldN:value1,&hellip;,valueM</tt>.
+  A [% terms.bug %] qualifies if at least one of the values occurs as a
+  substring in at least one of the fields.
+  For example, <tt>assignee,reporter,qa:ibm,sun</tt> will give you
+  [%+ terms.bugs %] where the assignee, reporter, or qa contact has a login
+  that contains <tt>ibm</tt> or <tt>sun</tt>.
+  If only <tt>value1,&hellip;,valueM</tt> is given, the prefix (roughly) defaults to
+  <tt>summary,keywords,product,component,statuswhiteboard:</tt> as noted above.
+  You can use <tt>-<i>word</i></tt> to express the logical negation of
+  <tt><i>word</i></tt>.
+</p>
+<p>
+  Here is a complete listing of available fields (the Shortcut column is just
+  for access speed):
+</p>
+
+<table border="1">
+<thead>
+<tr>
+  <th>Searched by default</th>
+  <th>Shortcut</th>
+  <th>Field Name</th>
+  <th>Aliases</th>
+  <th>Description</th>
+</tr>
+</thead>
+
+<!-- Status, Resolution, Platform, OS, Priority, Severity -->
+
+<tr>
+  <td>&nbsp;</td>
+  <td rowspan="2">
+    <tt>UNCO,NEW,&hellip;,CLOS,<br>FIX,DUP,&hellip;<i>(as first word)</i></tt>
+  </td>
+  <td><tt>status</tt></td>
+  <td>&nbsp;</td>
+  <td>
+    <a href="page.cgi?id=fields.html#status">Status</a>
+    <i>(&ldquo;bug_status&rdquo;)</i>
+  </td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td><tt>resolution</tt></td>
+  <td>&nbsp;</td>
+  <td><a href="page.cgi?id=fields.html#resolution">Resolution</a></td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td><i>as-is</i></td>
+  <td><tt>platform</tt></td>
+  <td>&nbsp;</td>
+  <td>
+    <a href="page.cgi?id=fields.html#rep_platform">Platform</a>
+    <i>(&ldquo;rep_platform&rdquo;)</i>
+  </td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>os</tt></td>
+  <td><tt>opsys</tt></td>
+  <td>
+    <a href="page.cgi?id=fields.html#op_sys">OS</a>
+    <i>(&ldquo;op_sys&rdquo;)</i>
+  </td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td><tt>p1,p2</tt> <i>or</i> <tt>p1-2</tt></td>
+  <td><tt>priority</tt></td>
+  <td><tt>pri</tt></td>
+  <td><a href="page.cgi?id=fields.html#priority">Priority</a></td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td><tt>blo,cri,&hellip;,enh</tt></td>
+  <td><tt>severity</tt></td>
+  <td><tt>sev</tt></td>
+  <td>
+    <a href="page.cgi?id=fields.html#bug_severity">Severity</a>
+    <i>(&ldquo;bug_severity&rdquo;)</i>
+  </td>
+</tr>
+
+<!-- People: AssignedTo, Reporter, QA Contact, CC, Added comment -->
+<!-- Added comment is missing!!!! -->
+
+<tr>
+  <td>&nbsp;</td>
+  <td><b>@</b><i>assignee</i></td>
+  <td><tt>assignedto</tt></td>
+  <td><tt>assignee</tt></td>
+  <td>
+    <a href="page.cgi?id=fields.html#assigned_to">Assignee</a>
+    <i>(&ldquo;assigned_to&rdquo;)</i>
+  </td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>reporter</tt></td>
+  <td><tt>rep</tt></td>
+  <td>Reporter (login)</td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>qa</tt></td>
+  <td><tt>qacontact</tt></td>
+  <td>QA Contact (login) <i>(&ldquo;qa_contact&rdquo;)</i></td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>cc</tt></td>
+  <td>&nbsp;</td>
+  <td>CC (login)</td>
+</tr>
+
+<!-- Product, Version, Component, Target Milestone -->
+
+<tr>
+  <td><i>yes</i></td>
+  <td rowspan="2"><b>:</b><i>area</i></td>
+  <td><tt>product</tt></td>
+  <td><tt>prod</tt></td>
+  <td>Product (enum)</td>
+</tr>
+<tr>
+  <td><i>yes</i></td>
+  <td><tt>component</tt></td>
+  <td><tt>comp</tt></td>
+  <td><a href="describecomponents.cgi">Component</a></td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>version</tt></td>
+  <td><tt>ver</tt></td>
+  <td>Version (enum)</td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>milestone</tt></td>
+  <td><tt>target, targetmilestone</tt></td>
+  <td>Target Milestone <i>(&ldquo;target_milestone&rdquo;)</i></td>
+</tr>
+
+<!-- Summary, Description, URL, Status whiteboard, Keywords -->
+
+<tr>
+  <td><i>yes</i></td>
+  <td>&nbsp;</td>
+  <td><tt>summary</tt></td>
+  <td><tt>shortdesc</tt></td>
+  <td>
+    [% terms.Bug %] Summary (short text)
+    <i>(&ldquo;short_desc&rdquo;)</i>
+  </td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>description</tt></td>
+  <td><tt>desc, longdesc<!--, comment--></tt></td>
+  <!-- reserve "comment" for "added comment" login search?! -->
+  <td>[% terms.Bug %] Description / Comments (long text)</td>
+</tr>
+<tr>
+  <td><i>depends</i></td>
+  <td>&nbsp;</td>
+  <td><tt>url</tt></td>
+  <td>&nbsp;</td>
+  <td>URL <i>(&ldquo;bug_file_loc&rdquo;)</i></td>
+</tr>
+<tr>
+  <td><i>yes</i></td>
+  <td>&nbsp;</td>
+  <td><tt>statuswhiteboard</tt></td>
+  <td><tt>sw, whiteboard</tt></td>
+  <td>Status Whiteboard <i>(&ldquo;status_whiteboard&rdquo;)</i></td>
+</tr>
+<tr>
+  <td><i>yes</i></td>
+  <td><b>!</b><i>keyword</i></td>
+  <td><tt>keywords</tt></td>
+  <td><tt>kw</tt></td>
+  <td><a href="describekeywords.cgi">Keywords</a></td>
+</tr>
+
+<!-- Attachments -->
+
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>attachmentdesc</tt></td>
+  <td><tt>attachdesc</tt></td>
+  <td>
+    Attachment Description
+    <i>(&ldquo;attachments.description&rdquo;)</i>
+  </td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>attachmentdata</tt></td>
+  <td><tt>attachdata</tt></td>
+  <td>Attachment Data <i>(&ldquo;attach_data.thedata&rdquo;)</i></td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td>&nbsp;</td>
+  <td><tt>attachmentmimetype</tt></td>
+  <td><tt>attachmimetype</tt></td>
+  <td>Attachment mime-type <i>(&ldquo;attachments.mimetype&rdquo;)</i></td>
+</tr>
+
+</table>
+
+<p>
+  Examples for some useful abbreviations:
+</p>
+<table border="1">
+<thead>
+<tr>
+  <th>Syntax</th>
+  <th>Semantics and Examples</th>
+</tr>
+</thead>
+
+<!--
+<tr>
+  <td><i>STAT</i> <i>(as first word)</i></td>
+  <td><b>status,resolution:</b> <i>STAT</i></td>
+</tr>
+<tr>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td><tt>ALL</tt> <i>(as first word)</i></td>
+  <td><i>include all resolved [% terms.bugs %] in your search</i></td>
+</tr>
+<tr>
+  <td><tt>+DUP,FIXED</tt> <i>(as first word)</i></td>
+  <td><i>include DUPLICATE and FIXED [% terms.bugs %] in your search</i></td>
+</tr>
+-->
+
+<tr>
+  <td><b>:</b><i>area</i></td>
+  <td><b>product,component:</b><i>area</i></td>
+</tr>
+<!--
+<tr>
+  <td><tt>:browser</tt></td>
+  <td><i>[% terms.bugs %] in the Browser product</i></td>
+</tr>
+ <td><tt>:mail</tt></td>
+  <td><i>[% terms.bugs %] in the MailNews product</td>
+</tr>
+<tr>
+  <td><tt>:xbl</tt></td>
+  <td><i>[% terms.bugs %] in the XBL component</i></td>
+</tr>
+  -->
+<tr>
+  <td><i>sev</i></td>
+  <td><b>severity:</b><i>sev</i></td>
+</tr>
+<tr>
+  <td><tt>blo,cri,maj</tt></td>
+  <td><i>severe [% terms.bugs %]</i></td>
+</tr>
+<tr>
+  <td><tt>enh</tt></td>
+  <td><i>enhancement requests</i></td>
+</tr>
+<tr>
+  <td><b>p</b><i>level</i></td>
+  <td><b>priority:</b><i>level</i></td>
+</tr>
+<tr>
+  <td><tt>p1</tt></td>
+  <td><i>very high-priority [% terms.bugs %]</i></td>
+</tr>
+<tr>
+  <td><tt>p1-2</tt></td>
+  <td><i>high-priority [% terms.bugs %]</i></td>
+</tr>
+<tr>
+  <td><b>@</b><i>assignee</i></td>
+  <td><b>assignedto:</b><i>assignee</i></td>
+</tr>
+<!--
+<tr>
+  <td><tt>@nobody</tt></td>
+  <td><i>assigneeless [% terms.bugs %]</i></td>
+</tr>
+<tr>
+  <td><tt>@mozilla.org</tt></td>
+  <td><i>[% terms.bugs %] assigned to mozilla.org members</i></td>
+</tr>
+  -->
+<tr>
+  <td><b>!</b><i>keyword</i></td>
+  <td><b>keywords:</b><i>keyword</i></td>
+</tr>
+<!--
+<tr>
+  <td><tt>!crash</tt></td>
+  <td><i>crasher [% terms.bugs %]</i></td>
+</tr>
+<tr>
+  <td><tt>!helpwanted</tt></td>
+  <td><i>[% terms.bugs %] waiting for your help</i></td>
+</tr>
+  -->
+</table>
+
+<p>
+  More information can be found in the
+  <a href="page.cgi?id=quicksearch.html#features">&ldquo;Features&rdquo;</a>
+  section on the <a href="page.cgi?id=quicksearch.html">introductory page</a>.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/reports/CVS/Entries b/template/en/default/reports/CVS/Entries
index 2ad38d5def40b7c779a1b255cb249c164455fe49..5c0038c0662ea734ee35ee69b2240ed6d0c03caa 100644
--- a/template/en/default/reports/CVS/Entries
+++ b/template/en/default/reports/CVS/Entries
@@ -1,23 +1,23 @@
-/chart.csv.tmpl/1.1.10.1/Wed Jul 20 02:23:35 2005//TBUGZILLA-2_20
-/chart.html.tmpl/1.2/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20
-/chart.png.tmpl/1.3/Sat Jan 24 21:40:31 2004//TBUGZILLA-2_20
-/components.html.tmpl/1.9/Mon Jun 20 19:16:33 2005//TBUGZILLA-2_20
-/create-chart.html.tmpl/1.11/Fri Feb 25 15:27:26 2005//TBUGZILLA-2_20
-/duplicates-simple.html.tmpl/1.4/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20
-/duplicates-table.html.tmpl/1.11/Tue Mar 16 23:53:01 2004//TBUGZILLA-2_20
-/duplicates.html.tmpl/1.14/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20
-/duplicates.rdf.tmpl/1.1/Tue Nov  5 01:54:15 2002//TBUGZILLA-2_20
-/edit-series.html.tmpl/1.5/Thu Feb 12 22:32:57 2004//TBUGZILLA-2_20
-/keywords.html.tmpl/1.6/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20
-/menu.html.tmpl/1.6/Tue Jul  6 01:12:29 2004//TBUGZILLA-2_20
-/report-bar.png.tmpl/1.4.10.1/Wed Jul 20 12:48:23 2005//TBUGZILLA-2_20
-/report-line.png.tmpl/1.5.10.1/Wed Jul 20 12:48:23 2005//TBUGZILLA-2_20
-/report-pie.png.tmpl/1.3.12.1/Wed Jul 20 12:48:23 2005//TBUGZILLA-2_20
-/report-simple.html.tmpl/1.1/Mon Mar 14 16:24:03 2005//TBUGZILLA-2_20
-/report-table.csv.tmpl/1.6.2.1/Wed Jul 20 02:23:35 2005//TBUGZILLA-2_20
-/report-table.html.tmpl/1.11/Tue Jun 14 22:43:12 2005//TBUGZILLA-2_20
-/report.csv.tmpl/1.2/Mon Jan  6 07:54:22 2003//TBUGZILLA-2_20
-/report.html.tmpl/1.10/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20
-/series-common.html.tmpl/1.3/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_20
-/series.html.tmpl/1.6/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_20
+/chart.csv.tmpl/1.2/Wed Jul 20 02:14:34 2005//TBUGZILLA-2_21_1
+/chart.html.tmpl/1.2/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_21_1
+/chart.png.tmpl/1.3/Sat Jan 24 21:40:31 2004//TBUGZILLA-2_21_1
+/components.html.tmpl/1.9/Mon Jun 20 19:16:33 2005//TBUGZILLA-2_21_1
+/create-chart.html.tmpl/1.11/Fri Feb 25 15:27:26 2005//TBUGZILLA-2_21_1
+/duplicates-simple.html.tmpl/1.4/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_21_1
+/duplicates-table.html.tmpl/1.11/Tue Mar 16 23:53:01 2004//TBUGZILLA-2_21_1
+/duplicates.html.tmpl/1.15/Fri Sep  2 21:12:09 2005//TBUGZILLA-2_21_1
+/duplicates.rdf.tmpl/1.2/Thu Aug  4 11:51:25 2005//TBUGZILLA-2_21_1
+/edit-series.html.tmpl/1.5/Thu Feb 12 22:32:57 2004//TBUGZILLA-2_21_1
+/keywords.html.tmpl/1.6/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_21_1
+/menu.html.tmpl/1.6/Tue Jul  6 01:12:29 2004//TBUGZILLA-2_21_1
+/report-bar.png.tmpl/1.5/Wed Jul 20 12:39:48 2005//TBUGZILLA-2_21_1
+/report-line.png.tmpl/1.6/Wed Jul 20 12:39:48 2005//TBUGZILLA-2_21_1
+/report-pie.png.tmpl/1.4/Wed Jul 20 12:39:48 2005//TBUGZILLA-2_21_1
+/report-simple.html.tmpl/1.1/Mon Mar 14 16:24:03 2005//TBUGZILLA-2_21_1
+/report-table.csv.tmpl/1.7/Wed Jul 20 02:14:34 2005//TBUGZILLA-2_21_1
+/report-table.html.tmpl/1.11/Tue Jun 14 22:43:12 2005//TBUGZILLA-2_21_1
+/report.csv.tmpl/1.2/Mon Jan  6 07:54:22 2003//TBUGZILLA-2_21_1
+/report.html.tmpl/1.10/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_21_1
+/series-common.html.tmpl/1.3/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_21_1
+/series.html.tmpl/1.6/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/reports/CVS/Tag b/template/en/default/reports/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/reports/CVS/Tag
+++ b/template/en/default/reports/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/reports/duplicates.html.tmpl b/template/en/default/reports/duplicates.html.tmpl
index 5cbf84fe267c267eae40d8ba522c1b607195b2fc..897bbf17f911bcdd19fad892718b7131c7e76059 100644
--- a/template/en/default/reports/duplicates.html.tmpl
+++ b/template/en/default/reports/duplicates.html.tmpl
@@ -20,7 +20,7 @@
   #%]
 
 [%# INTERFACE:
-  # products: list of strings. The products this user can see.
+  # products: an array of product objects this user can see.
   #
   # sortby: string. the column on which we are sorting the buglist.
   # reverse: boolean. True if we are reversing the current sort.
@@ -84,9 +84,9 @@
       <td rowspan="4" valign="top">
         <select name="product" size="5" multiple="multiple">
           [% FOREACH p = products %]
-            <option name="[% p FILTER html %]"
-            [% " selected" IF lsearch(query_products, p) != -1 %]
-            >[% p FILTER html %]</option>
+            <option name="[% p.name FILTER html %]"
+            [% " selected" IF lsearch(query_products, p.name) != -1 %]
+            >[% p.name FILTER html %]</option>
           [% END %]
         </select>
       </td>
diff --git a/template/en/default/reports/duplicates.rdf.tmpl b/template/en/default/reports/duplicates.rdf.tmpl
index 941f9f70f8b38da984ac99fae6c00eb304c5d3c6..15594c7ca69c88cabfca6e2a1f56cb1f42fbd495 100644
--- a/template/en/default/reports/duplicates.rdf.tmpl
+++ b/template/en/default/reports/duplicates.rdf.tmpl
@@ -19,7 +19,7 @@
   # Contributor(s): Myk Melez <myk@mozilla.org>
   #%]
 
-<?xml version="1.0"?>
+<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?>
 <!-- [% template_version %] -->
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
diff --git a/template/en/default/request/CVS/Entries b/template/en/default/request/CVS/Entries
index 90cd2243aa9ab28c1c7fa95e2d19e89698606b48..12229580f5fd0e2a48771253b05b3177674dc8eb 100644
--- a/template/en/default/request/CVS/Entries
+++ b/template/en/default/request/CVS/Entries
@@ -1,3 +1,3 @@
-/email.txt.tmpl/1.9/Sat Apr  9 23:18:18 2005//TBUGZILLA-2_20
-/queue.html.tmpl/1.12.6.1/Mon Aug 22 21:17:25 2005//TBUGZILLA-2_20
+/email.txt.tmpl/1.9/Sat Apr  9 23:18:18 2005//TBUGZILLA-2_21_1
+/queue.html.tmpl/1.14/Fri Sep  2 21:12:10 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/request/CVS/Tag b/template/en/default/request/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/request/CVS/Tag
+++ b/template/en/default/request/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/request/queue.html.tmpl b/template/en/default/request/queue.html.tmpl
index a6edcd8a3136edade409a734757d9f17be845a02..73bbd8195fb45d36b5d4063465c82e8e976b7329 100644
--- a/template/en/default/request/queue.html.tmpl
+++ b/template/en/default/request/queue.html.tmpl
@@ -30,9 +30,9 @@
   var first_load = 1; // is this the first time we load the page?
   var last_sel = []; // caches last selection
   var cpts = new Array();
-  [% FOREACH p = products %]
-    cpts['[% p FILTER js %]'] = [
-      [%- FOREACH item = components_by_product.$p %]'[% item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
+  [% FOREACH prod = products %]
+    cpts['[% prod.name FILTER js %]'] = [
+      [%- FOREACH comp = prod.components %]'[% comp.name FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
   [% END %]
 [% END %]
 
@@ -58,9 +58,10 @@
       <td>
         <select name="product" onchange="selectProduct(this.form, 'product', 'component', 'Any');">
           <option value="">Any</option>
-          [% FOREACH item = products %]
-            <option value="[% item FILTER html %]"
-                    [% "selected" IF cgi.param('product') == item %]>[% item FILTER html %]</option>
+          [% FOREACH prod = products %]
+            <option value="[% prod.name FILTER html %]"
+                    [% "selected" IF cgi.param('product') == prod.name %]>
+              [% prod.name FILTER html %]</option>
           [% END %]
         </select>
       </td>
@@ -92,9 +93,11 @@
       <td>
         <select name="component">
           <option value="">Any</option>
-          [% FOREACH item = components %]
-            <option value="[% item FILTER html %]" [% "selected" IF cgi.param('component') == item %]>
-              [% item FILTER html %]</option>
+          [% FOREACH prod = products %]
+            [% FOREACH comp = prod.components %]
+              <option value="[% comp.name FILTER html %]" [% "selected" IF cgi.param('component') == comp.name %]>
+                [% comp.name FILTER html %]</option>
+            [% END %]
           [% END %]
         </select>
       </td>
diff --git a/template/en/default/search/CVS/Entries b/template/en/default/search/CVS/Entries
index a07094c83ca26f38abc1ee33648a5dd18990b41b..e24da61c0ac0536c300085f8e3ed05976b393cfb 100644
--- a/template/en/default/search/CVS/Entries
+++ b/template/en/default/search/CVS/Entries
@@ -1,12 +1,12 @@
-/boolean-charts.html.tmpl/1.12/Sat Dec 11 00:27:45 2004//TBUGZILLA-2_20
-/form.html.tmpl/1.32/Mon Jun 20 19:16:34 2005//TBUGZILLA-2_20
-/knob.html.tmpl/1.16/Thu Jul 22 05:14:14 2004//TBUGZILLA-2_20
-/search-advanced.html.tmpl/1.23/Wed Feb  2 23:00:24 2005//TBUGZILLA-2_20
-/search-create-series.html.tmpl/1.11/Mon Apr 11 22:34:50 2005//TBUGZILLA-2_20
-/search-help.html.tmpl/1.5/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_20
-/search-report-graph.html.tmpl/1.8/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_20
-/search-report-select.html.tmpl/1.6/Wed Mar  9 17:17:53 2005//TBUGZILLA-2_20
-/search-report-table.html.tmpl/1.9/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_20
-/search-specific.html.tmpl/1.12/Sat May  7 13:26:14 2005//TBUGZILLA-2_20
-/tabs.html.tmpl/1.4/Wed Jul  7 06:02:33 2004//TBUGZILLA-2_20
+/boolean-charts.html.tmpl/1.12/Sat Dec 11 00:27:45 2004//TBUGZILLA-2_21_1
+/form.html.tmpl/1.32/Mon Jun 20 19:16:34 2005//TBUGZILLA-2_21_1
+/knob.html.tmpl/1.16/Thu Jul 22 05:14:14 2004//TBUGZILLA-2_21_1
+/search-advanced.html.tmpl/1.25/Wed Aug 10 01:30:41 2005//TBUGZILLA-2_21_1
+/search-create-series.html.tmpl/1.11/Mon Apr 11 22:34:50 2005//TBUGZILLA-2_21_1
+/search-help.html.tmpl/1.6/Sun Jul 10 23:20:00 2005//TBUGZILLA-2_21_1
+/search-report-graph.html.tmpl/1.8/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_21_1
+/search-report-select.html.tmpl/1.6/Wed Mar  9 17:17:53 2005//TBUGZILLA-2_21_1
+/search-report-table.html.tmpl/1.9/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_21_1
+/search-specific.html.tmpl/1.13/Sat Jul 30 00:41:10 2005//TBUGZILLA-2_21_1
+/tabs.html.tmpl/1.5/Sat Jul 30 00:41:10 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/search/CVS/Tag b/template/en/default/search/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/search/CVS/Tag
+++ b/template/en/default/search/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/search/search-advanced.html.tmpl b/template/en/default/search/search-advanced.html.tmpl
index 4f53c2ce155837ec34964053f666d127d7475144..e55c71ba14ae8be4ce0e90d1fb15485918dd669d 100644
--- a/template/en/default/search/search-advanced.html.tmpl
+++ b/template/en/default/search/search-advanced.html.tmpl
@@ -41,17 +41,7 @@ var queryform = "queryform"
   onload = "doOnSelectProduct(0); initHelp();"
   javascript = js_data
   javascript_urls = [ "js/productform.js" ]
-  style = "td.selected_tab {
-             border-width: 2px 2px 0px;
-             border-style: solid; 
-             border-color: black;
-           }
-           td.unselected_tab, td.spacer {
-             border-width: 0px 0px 2px 0px;
-             border-style: solid; 
-             border-color: black;
-           }
-           dl.bug_changes dt {
+  style = "dl.bug_changes dt {
              margin-top: 15px;
            }"
 %]
@@ -61,7 +51,7 @@ var queryform = "queryform"
 [% button_name = "Search" %]
 
 [%# The decent help requires Javascript %]
-[% IF NOT help %]
+[% IF NOT cgi.param("help") %]
   [% IF cgi.user_agent("Mozilla/5") %]
     <script type="text/javascript"> <!--
       document.write("<p><a href='query.cgi?help=1&amp;format=advanced'>Give me some help</a> (reloads page.)</p>");
@@ -92,6 +82,6 @@ var queryform = "queryform"
 
 </form>
 
-[% PROCESS "search/search-help.html.tmpl" IF help %]
+[% PROCESS "search/search-help.html.tmpl" IF cgi.param("help") %]
 
 [% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/search/search-help.html.tmpl b/template/en/default/search/search-help.html.tmpl
index 0d4b53e267f981a8c63825586f69900237c45c3d..0c8529d05b5fbca87e97d9cda2d44197f329a65d 100644
--- a/template/en/default/search/search-help.html.tmpl
+++ b/template/en/default/search/search-help.html.tmpl
@@ -92,15 +92,17 @@
 { id => "chfieldfrom", 
   html => "Specify the start and end dates either in YYYY-MM-DD format<br>
            (optionally followed by HH:mm, in 24 hour clock), or in relative<br>
-           dates such as 1d, 2w, 3m, 4y, which respectively mean one day,<br>
-           two weeks, three months, or four years ago. 0d is last midnight,<br>
-           and 0w, 0m, 0y is the beginning of this week, month, or year." },
+           dates such as 1h, 2d, 3w, 4m, 5y, which respectively mean one hour,<br>
+           one day, two weeks, three months, or four years ago. 0d is last<br>
+           midnight, and 0h, 0w, 0m, 0y is the beginning of this hour, week,<br>
+           month, or year." },
 { id => "chfieldto", 
   html => "Specify the start and end dates either in YYYY-MM-DD format<br>
            (optionally followed by HH:mm, in 24 hour clock), or in relative<br>
-           dates such as 1d, 2w, 3m, 4y, which respectively mean one day,<br>
-           two weeks, three months, or four years ago. 0d is last midnight,<br>
-           and 0w, 0m, 0y is the beginning of this week, month, or year." },
+           dates such as 1h, 2d, 3w, 4m, 5y, which respectively mean one hour,<br>
+           one day, two weeks, three months, or four years ago. 0d is last<br>
+           midnight, and 0h, 0w, 0m, 0y is the beginning of this hour, week,<br>
+           month, or year." },
 { id => "chfieldvalue", 
   html => "The value the field defined above changed to during that time." },   
 ] %]
diff --git a/template/en/default/search/search-specific.html.tmpl b/template/en/default/search/search-specific.html.tmpl
index 8edda69ee2db6dbf27e53e400f5f82192afe57a1..a36be340c39cf9d8113fc6a39d058dc6223bf500 100644
--- a/template/en/default/search/search-specific.html.tmpl
+++ b/template/en/default/search/search-specific.html.tmpl
@@ -24,14 +24,6 @@
 [% PROCESS global/header.html.tmpl 
   title = "Find a Specific " _ terms.Bug
   h1 = ""
-  style = "td.selected_tab {
-             border-width: 2px 2px 0px;
-             border-style: solid; 
-           }
-           td.unselected_tab, td.spacer {
-             border-width: 0px 0px 2px 0px;
-             border-style: solid; 
-           }"
 %]
 
 [% PROCESS search/tabs.html.tmpl %]
diff --git a/template/en/default/search/tabs.html.tmpl b/template/en/default/search/tabs.html.tmpl
index 06b22f7a282d082c27fefc699a2f71ff4c06a0f9..00358cb59cb503efc0e26cd8d62c5e733aebd013 100644
--- a/template/en/default/search/tabs.html.tmpl
+++ b/template/en/default/search/tabs.html.tmpl
@@ -21,36 +21,13 @@
   #%]
 
 [%# INTERFACE:
-  # tabs: List of hashes. May not be empty. Each hash has two members:
-  #   name: string. Name of the tab and the format it represents.
-  #   description: string. Description of the tab (used in tab title).
+  # This template has no interface.
   #%]
 
-[% tabs = [ { name => 'specific', description => "Find a Specific $terms.Bug " },
-            { name => 'advanced', description => "Advanced Search" } ] %]
-
-[% current_tab = query_format || format || "advanced" %]
-
-<center>
-  <table cellspacing="0" cellpadding="10" border="0" width="100%">
-    <tr>
-      <td class="spacer">&nbsp;</td>
- 
-      [% FOREACH tab = tabs %]
-        [% IF tab.name == current_tab %]
-          <td align="center" bgcolor="lightblue" class="selected_tab">
-            [% tab.description %]
-          </td>
-        [% ELSE %]
-          <td align="center" bgcolor="#BBBBEE" class="unselected_tab">
-            <a href="query.cgi?format=[% tab.name %]" >
-              [% tab.description %]
-            </a>
-          </td>
-        [% END %]
-       [% END %]
- 
-       <td class="spacer">&nbsp;</td>
-     </tr>
-   </table>
-</center>
+[% PROCESS global/tabs.html.tmpl
+     tabs = [ { name => 'specific', label => "Find a Specific $terms.Bug",
+                link => "query.cgi?format=specific" },
+              { name => 'advanced', label => "Advanced Search",
+                link => "query.cgi?format=advanced" } ]
+     current_tab_name = query_format || format || "advanced"
+%]
diff --git a/template/en/default/sidebar.xul.tmpl b/template/en/default/sidebar.xul.tmpl
index b04aa08dcab2626a7386fbd61d4ffd63f312ee25..31f0a2c6bba2f3f0f7374f2a088679a374f28fbb 100644
--- a/template/en/default/sidebar.xul.tmpl
+++ b/template/en/default/sidebar.xul.tmpl
@@ -34,14 +34,8 @@
   orient="vertical"
   onload="document.getElementById('query-field').addEventListener('keypress', initial_keypress_handler, true)">
 
-<!-- Load QuickSearch libraries -->
-<script type="application/x-javascript" src="localconfig.js"/>
-<script type="application/x-javascript" src="quicksearch.js"/>
 <script type="application/x-javascript"><![CDATA[
 
-// Tell QuickSearch that the source of this is the sidebar
-var sidebar = 1;
-
 function load_absolute_url( aAbsoluteURL ) {
     content.location = aAbsoluteURL;
 }
@@ -59,7 +53,7 @@ function initial_keypress_handler( aEvent ) {
 
 function normal_keypress_handler( aEvent ) {
     if ( aEvent.keyCode == 13 )
-      QuickSearch(this.value);
+      load_relative_url('buglist.cgi?quicksearch=' + this.value);
 }
 
 ]]></script>
diff --git a/template/en/default/whine/CVS/Entries b/template/en/default/whine/CVS/Entries
index d60ad6cff8b2f2300ce3b2d8a0028a3af8f33e38..f4e83a03e3f774ac09d40867d6fa4bd1cc7189a1 100644
--- a/template/en/default/whine/CVS/Entries
+++ b/template/en/default/whine/CVS/Entries
@@ -1,5 +1,5 @@
-/mail.html.tmpl/1.2.4.1/Sun Aug 21 19:57:41 2005//TBUGZILLA-2_20
-/mail.txt.tmpl/1.2.4.1/Sun Aug 21 19:57:41 2005//TBUGZILLA-2_20
-/multipart-mime.txt.tmpl/1.4/Wed Mar 16 21:58:56 2005//TBUGZILLA-2_20
-/schedule.html.tmpl/1.2/Fri Feb 18 22:41:10 2005//TBUGZILLA-2_20
+/mail.html.tmpl/1.3/Sun Aug 21 19:55:42 2005//TBUGZILLA-2_21_1
+/mail.txt.tmpl/1.3/Sun Aug 21 19:55:42 2005//TBUGZILLA-2_21_1
+/multipart-mime.txt.tmpl/1.4/Wed Mar 16 21:58:56 2005//TBUGZILLA-2_21_1
+/schedule.html.tmpl/1.3/Mon Sep 12 14:03:01 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/default/whine/CVS/Tag b/template/en/default/whine/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/default/whine/CVS/Tag
+++ b/template/en/default/whine/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/template/en/default/whine/schedule.html.tmpl b/template/en/default/whine/schedule.html.tmpl
index f227987d62a20f306ddf91f7a005ca7e720ffb99..b49f713a8f2a292fe258da593041652051aad721 100644
--- a/template/en/default/whine/schedule.html.tmpl
+++ b/template/en/default/whine/schedule.html.tmpl
@@ -68,6 +68,14 @@
   terms.bug %] that matches the search will be sent in its own email message.
 </p>
 
+<p>
+  [% IF Param("timezone") %]
+    All times are server local time ([% Param("timezone") FILTER upper %]).
+  [% ELSE %]
+    All times are server local time.
+  [% END %]
+</p>
+
 <form method="post" action="editwhines.cgi">
 [%# This hidden submit button must be here to set default behavior when
     the user presses return on a form input field #%]
diff --git a/template/en/extension/CVS/Entries b/template/en/extension/CVS/Entries
index 1a0e15c61e3f68929676bfbda19623cb75743492..f0a6ebd12da2c195ea7e9e93664abc6f4a40669b 100644
--- a/template/en/extension/CVS/Entries
+++ b/template/en/extension/CVS/Entries
@@ -1,2 +1,2 @@
-/filterexceptions.pl/1.1.2.2/Tue Sep 27 17:03:14 2005//TBUGZILLA-2_20
+/filterexceptions.pl/1.1/Tue Sep 27 16:54:58 2005//TBUGZILLA-2_21_1
 D
diff --git a/template/en/extension/CVS/Tag b/template/en/extension/CVS/Tag
index 8a752cb7a306209c53bb1068054ee31c15178834..3e3ad9bce35146f98585bffa81620b90c94d4d47 100644
--- a/template/en/extension/CVS/Tag
+++ b/template/en/extension/CVS/Tag
@@ -1 +1 @@
-NBUGZILLA-2_20
+NBUGZILLA-2_21_1
diff --git a/token.cgi b/token.cgi
index 0e0753807197c27b5c247749eac8d0b26c042a78..07f6c3d85885983ec3822558b30028cf67f14c38 100755
--- a/token.cgi
+++ b/token.cgi
@@ -39,7 +39,7 @@ my $cgi = Bugzilla->cgi;
 my $dbh = Bugzilla->dbh;
 
 # Include the Bugzilla CGI and general utility library.
-require "CGI.pl";
+require "globals.pl";
 
 Bugzilla->login(LOGIN_OPTIONAL);
 
@@ -110,9 +110,10 @@ if ( $::action eq 'reqpw' ) {
         ThrowUserError("password_change_requests_not_allowed");
     }
 
-    # Make sure the login name looks like an email address.  This function
-    # displays its own error and stops execution if the login name looks wrong.
-    CheckEmailSyntax($cgi->param('loginname'));
+    # Make sure the login name looks like an email address.
+    validate_email_syntax($cgi->param('loginname'))
+      || ThrowUserError('illegal_email_address',
+                        {addr => $cgi->param('loginname')});
 
     my $quotedloginname = SqlQuote($cgi->param('loginname'));
     SendSQL("SELECT userid FROM profiles WHERE " .
@@ -267,7 +268,7 @@ sub changeEmail {
 
     # The email address has been changed, so we need to rederive the groups
     my $user = new Bugzilla::User($userid);
-    $user->derive_groups;
+    $user->derive_regexp_groups;
 
     # Return HTTP response headers.
     print $cgi->header();
@@ -312,7 +313,7 @@ sub cancelChangeEmail {
             # issue
 
             my $user = new Bugzilla::User($userid);
-            $user->derive_groups;
+            $user->derive_regexp_groups;
 
             $vars->{'message'} = "email_change_cancelled_reinstated";
         } 
diff --git a/userprefs.cgi b/userprefs.cgi
index 9ae558fa18e8955671533d1eaba4fbe90087533a..14b28f6bb8bd5ba991d7e92f37905bfbbb268c1a 100755
--- a/userprefs.cgi
+++ b/userprefs.cgi
@@ -32,7 +32,7 @@ use Bugzilla::Search;
 use Bugzilla::Util;
 use Bugzilla::User;
 
-require "CGI.pl";
+require "globals.pl";
 
 # Use global template variables.
 use vars qw($template $vars $userid);
@@ -76,12 +76,11 @@ sub SaveAccount {
     if ($cgi->param('Bugzilla_password') ne "" || 
         $pwd1 ne "" || $pwd2 ne "") 
     {
-        my $old = SqlQuote($cgi->param('Bugzilla_password'));
         SendSQL("SELECT cryptpassword FROM profiles WHERE userid = $userid");
         my $oldcryptedpwd = FetchOneColumn();
         $oldcryptedpwd || ThrowCodeError("unable_to_retrieve_password");
 
-        if (crypt($cgi->param('Bugzilla_password'), $oldcryptedpwd) ne 
+        if (crypt(scalar($cgi->param('Bugzilla_password')), $oldcryptedpwd) ne 
                   $oldcryptedpwd) 
         {
             ThrowUserError("old_password_incorrect");
@@ -118,7 +117,8 @@ sub SaveAccount {
             }
 
             # Before changing an email address, confirm one does not exist.
-            CheckEmailSyntax($new_login_name);
+            validate_email_syntax($new_login_name)
+              || ThrowUserError('illegal_email_address', {addr => $new_login_name});
             trick_taint($new_login_name);
             is_available_username($new_login_name)
               || ThrowUserError("account_exists", {email => $new_login_name});
@@ -311,11 +311,9 @@ sub DoPermissions {
     my (@has_bits, @set_bits);
     
     SendSQL("SELECT DISTINCT name, description FROM groups " .
-            "INNER JOIN user_group_map " .
-            "ON user_group_map.group_id = groups.id " .
-            "WHERE user_id = $::userid " .
-            "AND isbless = 0 " .
-            "ORDER BY name");
+            "WHERE id IN (" . 
+            Bugzilla->user->groups_as_string .
+            ") ORDER BY name");
     while (MoreSQLData()) {
         my ($nam, $desc) = FetchSQLData();
         push(@has_bits, {"desc" => $desc, "name" => $nam});
@@ -337,7 +335,7 @@ sub DoPermissions {
 # No SavePermissions() because this panel has no changeable fields.
 
 
-sub DoSavedSearches() {
+sub DoSavedSearches {
     # 2004-12-13 - colin.ogilvie@gmail.com, bug 274397
     # Need to work around the possibly missing query_format=advanced
     $vars->{'user'} = Bugzilla->user;
@@ -362,7 +360,7 @@ sub DoSavedSearches() {
     $vars->{'queries'} = \@newqueries;
 }
 
-sub SaveSavedSearches() {
+sub SaveSavedSearches {
     my $cgi = Bugzilla->cgi;
     my $dbh = Bugzilla->dbh;
     my @queries = @{Bugzilla->user->queries};
diff --git a/votes.cgi b/votes.cgi
index 48064ddada2d529195006b91d590941269406499..61a57e06f284b5b66ce9c8bc15be9929ed00a93a 100644
--- a/votes.cgi
+++ b/votes.cgi
@@ -30,7 +30,7 @@ use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::Bug;
 
-require "CGI.pl";
+require "globals.pl";
 
 # Use global template variables
 use vars qw($template $vars);
@@ -89,27 +89,19 @@ exit;
 # Display the names of all the people voting for this one bug.
 sub show_bug {
     my $cgi = Bugzilla->cgi;
+    my $dbh = Bugzilla->dbh;
 
     ThrowCodeError("missing_bug_id") unless defined $bug_id;
 
-    my $total = 0;
-    my @users;
-    
-    SendSQL("SELECT profiles.login_name, votes.who, votes.vote_count 
-               FROM votes INNER JOIN profiles 
-                 ON profiles.userid = votes.who
-              WHERE votes.bug_id = $bug_id");
-                   
-    while (MoreSQLData()) {
-        my ($name, $userid, $count) = (FetchSQLData());
-        push (@users, { name => $name, id => $userid, count => $count });
-        $total += $count;
-    }
-    
     $vars->{'bug_id'} = $bug_id;
-    $vars->{'users'} = \@users;
-    $vars->{'total'} = $total;
-    
+    $vars->{'users'} =
+        $dbh->selectall_arrayref('SELECT profiles.login_name, votes.vote_count 
+                                    FROM votes
+                              INNER JOIN profiles 
+                                      ON profiles.userid = votes.who
+                                   WHERE votes.bug_id = ?',
+                                  {'Slice' => {}}, $bug_id);
+
     print $cgi->header();
     $template->process("bug/votes/list-for-bug.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
@@ -122,28 +114,31 @@ sub show_user {
 
     my $cgi = Bugzilla->cgi;
     my $dbh = Bugzilla->dbh;
+    my $user = Bugzilla->user;
 
     # If a bug_id is given, and we're editing, we'll add it to the votes list.
     $bug_id ||= "";
     
-    my $name = $cgi->param('user') || Bugzilla->user->login;
+    my $name = $cgi->param('user') || $user->login;
     my $who = DBNameToIdAndCheck($name);
-    my $userid = Bugzilla->user->id;
+    my $userid = $user->id;
     
     my $canedit = (Param('usevotes') && $userid == $who) ? 1 : 0;
 
     $dbh->bz_lock_tables('bugs READ', 'products READ', 'votes WRITE',
              'cc READ', 'bug_group_map READ', 'user_group_map READ',
+             'group_group_map READ',
              'cc AS selectVisible_cc READ', 'groups READ');
 
     if ($canedit && $bug_id) {
         # Make sure there is an entry for this bug
         # in the vote table, just so that things display right.
-        SendSQL("SELECT votes.vote_count FROM votes 
-                 WHERE votes.bug_id = $bug_id AND votes.who = $who");
-        if (!FetchOneColumn()) {
-            SendSQL("INSERT INTO votes (who, bug_id, vote_count) 
-                     VALUES ($who, $bug_id, 0)");
+        my $has_votes = $dbh->selectrow_array('SELECT vote_count FROM votes 
+                                               WHERE bug_id = ? AND who = ?',
+                                               undef, ($bug_id, $who));
+        if (!$has_votes) {
+            $dbh->do('INSERT INTO votes (who, bug_id, vote_count) 
+                      VALUES (?, ?, 0)', undef, ($who, $bug_id));
         }
     }
     
@@ -151,10 +146,10 @@ sub show_user {
     # we can do it all in one query.
     my %maxvotesperbug;
     if($canedit) {
-        SendSQL("SELECT products.name, products.maxvotesperbug 
-                 FROM products");
-        while (MoreSQLData()) {
-            my ($prod, $max) = FetchSQLData();
+        my $products = $dbh->selectall_arrayref('SELECT name, maxvotesperbug 
+                                                 FROM products');
+        foreach (@$products) {
+            my ($prod, $max) = @$_;
             $maxvotesperbug{$prod} = $max;
         }
     }
@@ -168,27 +163,27 @@ sub show_user {
         my @bugs;
         my $total = 0;
         my $onevoteonly = 0;
-        
-        SendSQL("SELECT votes.bug_id, votes.vote_count, bugs.short_desc,
-                        bugs.bug_status 
-                  FROM  votes
-                  INNER JOIN bugs ON votes.bug_id = bugs.bug_id
-                  INNER JOIN products ON bugs.product_id = products.id 
-                  WHERE votes.who = $who 
-                    AND products.name = " . SqlQuote($product) . 
-                 "ORDER BY votes.bug_id");        
-        
-        while (MoreSQLData()) {
-            my ($id, $count, $summary, $status) = FetchSQLData();
-            next if !defined($status);
+
+        my $vote_list =
+            $dbh->selectall_arrayref('SELECT votes.bug_id, votes.vote_count,
+                                             bugs.short_desc, bugs.bug_status 
+                                        FROM  votes
+                                  INNER JOIN bugs ON votes.bug_id = bugs.bug_id
+                                  INNER JOIN products ON bugs.product_id = products.id 
+                                       WHERE votes.who = ? AND products.name = ?
+                                    ORDER BY votes.bug_id',
+                                      undef, ($who, $product));
+
+        foreach (@$vote_list) {
+            my ($id, $count, $summary, $status) = @$_;
             $total += $count;
-             
+
             # Next if user can't see this bug. So, the totals will be correct
             # and they can see there are votes 'missing', but not on what bug
             # they are. This seems a reasonable compromise; the alternative is
             # to lie in the totals.
-            next if !Bugzilla->user->can_see_bug($id);            
-            
+            next if !$user->can_see_bug($id);            
+
             push (@bugs, { id => $id, 
                            summary => $summary,
                            count => $count,
@@ -213,7 +208,7 @@ sub show_user {
         }
     }
 
-    SendSQL("DELETE FROM votes WHERE vote_count <= 0");
+    $dbh->do('DELETE FROM votes WHERE vote_count <= 0');
     $dbh->bz_unlock_tables();
 
     $vars->{'canedit'} = $canedit;
@@ -280,16 +275,18 @@ sub record_votes {
     # If the user is voting for bugs, make sure they aren't overstuffing
     # the ballot box.
     if (scalar(@buglist)) {
-        SendSQL("SELECT bugs.bug_id, products.name, products.maxvotesperbug
-                   FROM bugs
-             INNER JOIN products
-                     ON products.id = bugs.product_id
-                  WHERE bugs.bug_id IN (" . join(", ", @buglist) . ")");
+        my $product_vote_settings =
+            $dbh->selectall_arrayref('SELECT bugs.bug_id, products.name,
+                                             products.maxvotesperbug
+                                        FROM bugs
+                                  INNER JOIN products
+                                          ON products.id = bugs.product_id
+                                       WHERE bugs.bug_id IN
+                                             (' . join(', ', @buglist) . ')');
 
         my %prodcount;
-
-        while (MoreSQLData()) {
-            my ($id, $prod, $max) = FetchSQLData();
+        foreach (@$product_vote_settings) {
+            my ($id, $prod, $max) = @$_;
             $prodcount{$prod} ||= 0;
             $prodcount{$prod} += $votes{$id};
             
@@ -323,23 +320,24 @@ sub record_votes {
                          'products READ', 'fielddefs READ');
     
     # Take note of, and delete the user's old votes from the database.
-    SendSQL("SELECT bug_id FROM votes WHERE who = $who");
-    while (MoreSQLData()) {
-        my $id = FetchOneColumn();
+    my $bug_list = $dbh->selectcol_arrayref('SELECT bug_id FROM votes
+                                             WHERE who = ?', undef, $who);
+
+    foreach my $id (@$bug_list) {
         $affected{$id} = 1;
     }
-    
-    SendSQL("DELETE FROM votes WHERE who = $who");
-    
+    $dbh->do('DELETE FROM votes WHERE who = ?', undef, $who);
+
+    my $sth_insertVotes = $dbh->prepare('INSERT INTO votes (who, bug_id, vote_count)
+                                         VALUES (?, ?, ?)');
     # Insert the new values in their place
     foreach my $id (@buglist) {
         if ($votes{$id} > 0) {
-            SendSQL("INSERT INTO votes (who, bug_id, vote_count) 
-                     VALUES ($who, $id, ".$votes{$id}.")");
+            $sth_insertVotes->execute($who, $id, $votes{$id});
         }
         $affected{$id} = 1;
     }
-    
+
     # Update the cached values in the bugs table
     print $cgi->header();
     my @updated_bugs = ();
diff --git a/whine.pl b/whine.pl
index fea9d3da36be8b71be69d1efc5d086b4f10afb9a..f24db855dfae32ec4fa9cb2cb87964cbf5778230 100755
--- a/whine.pl
+++ b/whine.pl
@@ -228,10 +228,10 @@ sub get_next_event {
 
         $dbh->bz_lock_tables('whine_schedules WRITE',
                              'whine_events READ',
-                             'profiles WRITE',
+                             'profiles READ',
                              'groups READ',
                              'group_group_map READ',
-                             'user_group_map WRITE');
+                             'user_group_map READ');
 
         # Get the event ID for the first pending schedule
         $sth_next_scheduled_event->execute;
@@ -240,8 +240,7 @@ sub get_next_event {
         return undef unless $fetched;
         my ($eventid, $owner_id, $subject, $body) = @{$fetched};
 
-        my $owner = Bugzilla::User->new($owner_id,
-                                        DERIVE_GROUPS_TABLES_ALREADY_LOCKED);
+        my $owner = Bugzilla::User->new($owner_id);
 
         my $whineatothers = $owner->in_group('bz_canusewhineatothers');
 
@@ -263,7 +262,7 @@ sub get_next_event {
                             $user_objects{$mailto} = $owner;
                         }
                         elsif ($whineatothers) {
-                            $user_objects{$mailto} = Bugzilla::User->new($mailto,DERIVE_GROUPS_TABLES_ALREADY_LOCKED);
+                            $user_objects{$mailto} = Bugzilla::User->new($mailto);
                         }
                     }
                 }
@@ -275,14 +274,17 @@ sub get_next_event {
                     my $group_id = Bugzilla::Group::ValidateGroupName(
                         $groupname, $owner);
                     if ($group_id) {
+                        my $glist = join(',',
+                            @{Bugzilla::User->flatten_group_membership(
+                            $group_id)});
                         $sth = $dbh->prepare("SELECT user_id FROM " .
                                              "user_group_map " .
-                                             "WHERE group_id=?");
-                        $sth->execute($group_id);
+                                             "WHERE group_id IN ($glist)");
+                        $sth->execute();
                         for my $row (@{$sth->fetchall_arrayref}) {
                             if (not defined $user_objects{$row->[0]}) {
                                 $user_objects{$row->[0]} =
-                                    Bugzilla::User->new($row->[0],DERIVE_GROUPS_TABLES_ALREADY_LOCKED);
+                                    Bugzilla::User->new($row->[0]);
                             }
                         }
                     }
diff --git a/whineatnews.pl b/whineatnews.pl
index ae2121303b1c7e3f029d315e7d9385c8e10db998..50e06383eb3a5cd40162db3c8d85cfb2c968facf 100755
--- a/whineatnews.pl
+++ b/whineatnews.pl
@@ -33,6 +33,7 @@ use lib '.';
 require "globals.pl";
 
 use Bugzilla::BugMail;
+use Bugzilla::Util;
 
 # Whining is disabled if whinedays is zero
 exit unless Param('whinedays') >= 1;
@@ -71,7 +72,7 @@ foreach my $email (sort (keys %bugs)) {
     my %substs;
     $substs{'email'} = $email . $emailsuffix;
     $substs{'userid'} = $email;
-    my $msg = PerformSubsts($template, \%substs);
+    my $msg = perform_substs($template, \%substs);
 
     foreach my $i (@{$bugs{$email}}) {
         $msg .= "  " . shift(@{$desc{$email}}) . "\n";
diff --git a/xml.cgi b/xml.cgi
index 103838f86957e2c2a1fb4c1c5144b13aebe802e3..8316971c9ace15c702eab7caa46becba7f763d41 100755
--- a/xml.cgi
+++ b/xml.cgi
@@ -25,10 +25,9 @@
 use strict;
 
 use lib qw(.);
+use Bugzilla;
 
-require "CGI.pl";
-
-our $cgi;
+my $cgi = Bugzilla->cgi;
 
 # Convert comma/space separated elements into separate params
 my @ids = ();