diff --git a/.gitignore b/.gitignore
index b8e6b76..018ba3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/squid-3.3.8.tar.xz
+SOURCES/squid-3.5.20.tar.xz
diff --git a/.squid.metadata b/.squid.metadata
index 9672be3..d9a1a3e 100644
--- a/.squid.metadata
+++ b/.squid.metadata
@@ -1 +1 @@
-39472c7f93e14fb55a65d1730d6594407b7de9f6 SOURCES/squid-3.3.8.tar.xz
+2bb6d3568e7167c9b99fea092a97287d0e430863 SOURCES/squid-3.5.20.tar.xz
diff --git a/SOURCES/active-ftp.patch b/SOURCES/active-ftp.patch
deleted file mode 100644
index 2480c49..0000000
--- a/SOURCES/active-ftp.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./src/ftp.cc	2013-04-30 06:47:06.000000000 +0200
-+++ ./src/ftp.cc	2013-07-04 14:42:06.000000000 +0200
-@@ -2555,7 +2555,7 @@
-     /** \par
-       * Checks for previous EPSV/PASV failures on this server/session.
-       * Diverts to EPRT immediately if they are not working. */
--    if (!ftpState->flags.pasv_supported) {
-+    if (!ftpState->flags.pasv_supported && Config.Ftp.passive) {
-         ftpSendEPRT(ftpState);
-         return;
-     }
diff --git a/SOURCES/squid-3.1.0.9-location.patch b/SOURCES/squid-3.1.0.9-location.patch
index 91cff9d..0f6369d 100644
--- a/SOURCES/squid-3.1.0.9-location.patch
+++ b/SOURCES/squid-3.1.0.9-location.patch
@@ -1,7 +1,8 @@
-diff -up squid-3.1.0.9/QUICKSTART.location squid-3.1.0.9/QUICKSTART
---- squid-3.1.0.9/QUICKSTART.location	2009-06-26 12:35:27.000000000 +0200
-+++ squid-3.1.0.9/QUICKSTART	2009-07-17 14:03:10.000000000 +0200
-@@ -10,10 +10,9 @@ After you retrieved, compiled and instal
+diff --git a/QUICKSTART b/QUICKSTART
+index f0294ba..e7b14ea 100644
+--- a/QUICKSTART
++++ b/QUICKSTART
+@@ -10,10 +10,9 @@ After you retrieved, compiled and installed the Squid software (see
  INSTALL in the same directory), you have to configure the squid.conf
  file. This is the list of the values you *need* to change, because no
  sensible defaults could be defined. Do not touch the other variables
@@ -14,16 +15,16 @@ diff -up squid-3.1.0.9/QUICKSTART.location squid-3.1.0.9/QUICKSTART
  
  ==============================================================================
  
-@@ -54,7 +53,7 @@ cache_effective_user
- Some configuration lines which are optional but may be needed.
- 
+@@ -52,7 +51,7 @@ cache_effective_user
+     as after startup (typically "nobody" and "nogroup").  Do not use
+     "root", for security reasons.
  
 -cache_dir ufs /usr/local/squid/var/cache 100 16 256
 +cache_dir ufs /var/spool/squid 100 16 256
  
      Add here (first number, here 100) the amount of hard disk space 
      (in megabytes) to devote to caching.
-@@ -82,12 +81,12 @@ After editing squid.conf to your liking,
+@@ -80,12 +79,12 @@ After editing squid.conf to your liking, run Squid from the command
  line TWICE:
  
  To create any disk cache_dir configured:
diff --git a/SOURCES/squid-3.1.9-ltdl.patch b/SOURCES/squid-3.1.9-ltdl.patch
index e0e052c..6c0b0e7 100644
--- a/SOURCES/squid-3.1.9-ltdl.patch
+++ b/SOURCES/squid-3.1.9-ltdl.patch
@@ -1,8 +1,48 @@
-diff -up squid-3.1.9/aclocal.m4.ltdl squid-3.1.9/aclocal.m4
---- squid-3.1.9/aclocal.m4.ltdl	2010-10-25 13:34:41.000000000 +0200
-+++ squid-3.1.9/aclocal.m4	2010-11-01 14:14:55.297324980 +0100
-@@ -1217,7 +1217,7 @@ _LT_SET_OPTIONS([$0], [$1])
- LIBTOOL_DEPS="$ltmain"
+diff --git a/Makefile.am b/Makefile.am
+index c582a62..18ee5bb 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -6,11 +6,8 @@
+ ##
+ 
+ AUTOMAKE_OPTIONS = dist-bzip2 1.5 foreign
+-DIST_SUBDIRS	= compat lib libltdl scripts icons errors contrib doc helpers src test-suite tools
++DIST_SUBDIRS	= compat lib scripts icons errors contrib doc helpers src test-suite tools
+ SUBDIRS		= compat lib
+-if ENABLE_LOADABLE_MODULES
+-SUBDIRS += libltdl
+-endif
+ SUBDIRS += scripts icons errors doc helpers src tools test-suite
+ 
+ DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]*
+diff --git a/Makefile.in b/Makefile.in
+index 09c9304..dad017b 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -87,7 +87,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-@ENABLE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl
++#@ENABLE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl
+ subdir = .
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/acinclude/ax_with_prog.m4 \
+@@ -493,7 +493,7 @@ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = dist-bzip2 1.5 foreign
+-DIST_SUBDIRS = compat lib libltdl scripts icons errors contrib doc helpers src test-suite tools
++DIST_SUBDIRS = compat lib scripts icons errors contrib doc helpers src test-suite tools
+ SUBDIRS = compat lib $(am__append_1) scripts icons errors doc helpers \
+ 	src tools test-suite
+ DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]*
+diff --git a/aclocal.m4 b/aclocal.m4
+index 4dd204a..b66d5aa 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -108,7 +108,7 @@ _LT_SET_OPTIONS([$0], [$1])
+ LIBTOOL_DEPS=$ltmain
  
  # Always use our own libtool.
 -LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -10,11 +50,12 @@ diff -up squid-3.1.9/aclocal.m4.ltdl squid-3.1.9/aclocal.m4
  AC_SUBST(LIBTOOL)dnl
  
  _LT_SETUP
-diff -up squid-3.1.9/configure.ltdl squid-3.1.9/configure
---- squid-3.1.9/configure.ltdl	2010-10-25 13:35:32.000000000 +0200
-+++ squid-3.1.9/configure	2010-11-01 14:14:55.320299060 +0100
-@@ -10286,7 +10286,7 @@ fi
- LIBTOOL_DEPS="$ltmain"
+diff --git a/configure b/configure
+index ba4a984..6926f03 100755
+--- a/configure
++++ b/configure
+@@ -11551,7 +11551,7 @@ esac
+ LIBTOOL_DEPS=$ltmain
  
  # Always use our own libtool.
 -LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -22,40 +63,3 @@ diff -up squid-3.1.9/configure.ltdl squid-3.1.9/configure
  
  
  
-diff -up squid-3.1.9/Makefile.am.ltdl squid-3.1.9/Makefile.am
---- squid-3.1.9/Makefile.am.ltdl	2010-11-02 08:16:07.165707548 +0100
-+++ squid-3.1.9/Makefile.am	2010-11-02 08:16:52.977565320 +0100
-@@ -2,11 +2,8 @@
- #
- 
- AUTOMAKE_OPTIONS = dist-bzip2 subdir-objects 1.5 foreign
--DIST_SUBDIRS	= compat lib libltdl snmplib scripts icons errors contrib doc helpers src test-suite tools
-+DIST_SUBDIRS	= compat lib snmplib scripts icons errors contrib doc helpers src test-suite tools
- SUBDIRS		= compat lib $(makesnmplib)
--if USE_LOADABLE_MODULES
--SUBDIRS += libltdl
--endif
- SUBDIRS += scripts icons errors doc helpers src tools test-suite
- 
- DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]*
-diff -up squid-3.1.9/Makefile.in.ltdl squid-3.1.9/Makefile.in
---- squid-3.1.9/Makefile.in.ltdl	2010-11-02 08:16:13.630458557 +0100
-+++ squid-3.1.9/Makefile.in	2010-11-02 08:17:26.543714199 +0100
-@@ -35,7 +35,7 @@ PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
--@USE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl
-+# @USE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl
- subdir = .
- DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- 	$(srcdir)/Makefile.in $(top_srcdir)/configure \
-@@ -325,7 +325,7 @@ top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = dist-bzip2 subdir-objects 1.5 foreign
--DIST_SUBDIRS = compat lib libltdl snmplib scripts icons errors contrib doc helpers src test-suite tools
-+DIST_SUBDIRS = compat lib snmplib scripts icons errors contrib doc helpers src test-suite tools
- SUBDIRS = compat lib $(makesnmplib) $(am__append_1) scripts icons \
- 	errors doc helpers src tools test-suite
- DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]*
diff --git a/SOURCES/squid-3.2.0.9-fpic.patch b/SOURCES/squid-3.2.0.9-fpic.patch
index 40861f6..9a048dc 100644
--- a/SOURCES/squid-3.2.0.9-fpic.patch
+++ b/SOURCES/squid-3.2.0.9-fpic.patch
@@ -1,36 +1,45 @@
-diff -up squid-3.2.0.9/compat/Makefile.in.fpic squid-3.2.0.9/compat/Makefile.in
---- squid-3.2.0.9/compat/Makefile.in.fpic	2011-07-01 11:38:35.332618191 +0200
-+++ squid-3.2.0.9/compat/Makefile.in	2011-07-01 11:41:07.207345197 +0200
-@@ -321,7 +321,7 @@ target_alias = @target_alias@
+diff --git a/compat/Makefile.in b/compat/Makefile.in
+index 55b7ba0..ec58c7d 100644
+--- a/compat/Makefile.in
++++ b/compat/Makefile.in
+@@ -698,8 +698,8 @@ target_alias = @target_alias@
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
 -AM_CFLAGS = $(SQUID_CFLAGS)
+-AM_CXXFLAGS = $(SQUID_CXXFLAGS)
 +AM_CFLAGS = $(SQUID_CFLAGS) -fPIC
- AM_CXXFLAGS = $(SQUID_CXXFLAGS)
++AM_CXXFLAGS = $(SQUID_CXXFLAGS) -fPIC
  CLEANFILES = testHeaders
- INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \
-diff -up squid-3.2.0.9/snmplib/Makefile.am.fpic squid-3.2.0.9/snmplib/Makefile.am
---- squid-3.2.0.9/snmplib/Makefile.am.fpic	2011-07-01 11:40:12.557741046 +0200
-+++ squid-3.2.0.9/snmplib/Makefile.am	2011-07-01 11:41:10.201378312 +0200
-@@ -2,7 +2,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
+ 	-I$(top_srcdir)/lib -I$(top_srcdir)/src \
+diff --git a/lib/snmplib/Makefile.am b/lib/snmplib/Makefile.am
+index 52921e8..ad780f6 100644
+--- a/lib/snmplib/Makefile.am
++++ b/lib/snmplib/Makefile.am
+@@ -9,8 +9,8 @@
  ##
  ## Makefile for libsnmp.
  ## 
 -AM_CFLAGS = $(SQUID_CFLAGS)
+-AM_CXXFLAGS = $(SQUID_CXXFLAGS)
 +AM_CFLAGS = $(SQUID_CFLAGS) -fPIC
- AM_CXXFLAGS = $(SQUID_CXXFLAGS)
- noinst_LIBRARIES = libsnmplib.a
- libsnmplib_a_SOURCES  = asn1.c parse.c snmp_vars.c \
-diff -up squid-3.2.0.9/snmplib/Makefile.in.fpic squid-3.2.0.9/snmplib/Makefile.in
---- squid-3.2.0.9/snmplib/Makefile.in.fpic	2011-07-01 12:04:44.083181152 +0200
-+++ squid-3.2.0.9/snmplib/Makefile.in	2011-07-01 12:05:06.796437407 +0200
-@@ -290,7 +290,7 @@ target_alias = @target_alias@
++AM_CXXFLAGS = $(SQUID_CXXFLAGS) -fPIC
+ AM_CPPFLAGS = \
+ 	-I$(top_srcdir) \
+ 	-I$(top_builddir)/include \
+diff --git a/lib/snmplib/Makefile.in b/lib/snmplib/Makefile.in
+index af07cd7..f59f62e 100644
+--- a/lib/snmplib/Makefile.in
++++ b/lib/snmplib/Makefile.in
+@@ -454,8 +454,8 @@ target_alias = @target_alias@
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
 -AM_CFLAGS = $(SQUID_CFLAGS)
+-AM_CXXFLAGS = $(SQUID_CXXFLAGS)
 +AM_CFLAGS = $(SQUID_CFLAGS) -fPIC
- AM_CXXFLAGS = $(SQUID_CXXFLAGS)
- noinst_LIBRARIES = libsnmplib.a
- libsnmplib_a_SOURCES = asn1.c parse.c snmp_vars.c \
++AM_CXXFLAGS = $(SQUID_CXXFLAGS) -fPIC
+ AM_CPPFLAGS = \
+ 	-I$(top_srcdir) \
+ 	-I$(top_builddir)/include \
diff --git a/SOURCES/squid-3.3-12677.patch b/SOURCES/squid-3.3-12677.patch
deleted file mode 100644
index 5707e42..0000000
--- a/SOURCES/squid-3.3-12677.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-------------------------------------------------------------
-revno: 12677
-revision-id: squid3@treenet.co.nz-20140309023519-t6wmqou7m816tgnl
-parent: squid3@treenet.co.nz-20140309021524-wtxyrfoagz95ezwp
-author: Alex Rousskov <rousskov@measurement-factory.com>
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.3
-timestamp: Sat 2014-03-08 19:35:19 -0700
-message:
-  Avoid assertions on Range requests that trigger Squid-generated errors.
-  
-  Added HttpRequest::ignoreRange() to encapsulate range ignoring logic.
-  Currently the new method only contains the code common among all callers. More
-  work is needed to check whether further caller homogenization is possible.
-  
-  Documented that ClientSocketContext::getNextRangeOffset() may sometimes be
-  called before it is ready to do its job.
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20140309023519-t6wmqou7m816tgnl
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# testament_sha1: 0e0335663a55b0dca989893fb98f81d8d9604572
-# timestamp: 2014-03-09 02:37:50 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# base_revision_id: squid3@treenet.co.nz-20140309021524-\
-#   wtxyrfoagz95ezwp
-# 
-# Begin patch
-=== modified file 'src/HttpRequest.cc'
---- src/HttpRequest.cc	2013-09-11 01:03:45 +0000
-+++ src/HttpRequest.cc	2014-03-09 02:35:19 +0000
-@@ -658,6 +658,20 @@
-     return rangeOffsetLimit;
- }
- 
-+void
-+HttpRequest::ignoreRange(const char *reason)
-+{
-+    if (range) {
-+        debugs(73, 3, static_cast<void*>(range) << " for " << reason);
-+        delete range;
-+        range = NULL;
-+    }
-+    // Some callers also reset isRanged but it may not be safe for all callers:
-+    // isRanged is used to determine whether a weak ETag comparison is allowed,
-+    // and that check should not ignore the Range header if it was present.
-+    // TODO: Some callers also delete HDR_RANGE, HDR_REQUEST_RANGE. Should we?
-+}
-+
- bool
- HttpRequest::canHandle1xx() const
- {
-
-=== modified file 'src/HttpRequest.h'
---- src/HttpRequest.h	2013-07-26 12:21:20 +0000
-+++ src/HttpRequest.h	2014-03-09 02:35:19 +0000
-@@ -246,6 +246,8 @@
-      */
-     CbcPointer<ConnStateData> clientConnectionManager;
- 
-+    /// forgets about the cached Range header (for a reason)
-+    void ignoreRange(const char *reason);
-     int64_t getRangeOffsetLimit(); /* the result of this function gets cached in rangeOffsetLimit */
- 
- private:
-
-=== modified file 'src/client_side.cc'
---- src/client_side.cc	2013-09-29 17:28:00 +0000
-+++ src/client_side.cc	2014-03-09 02:35:19 +0000
-@@ -1281,9 +1281,7 @@
-          * offset data, but we won't be requesting it.
-          * So, we can either re-request, or generate an error
-          */
--        debugs(33, 3, "clientBuildRangeHeader: will not do ranges: " << range_err << ".");
--        delete http->request->range;
--        http->request->range = NULL;
-+        http->request->ignoreRange(range_err);
-     } else {
-         /* XXX: TODO: Review, this unconditional set may be wrong. - TODO: review. */
-         httpStatusLineSet(&rep->sline, rep->sline.version,
-@@ -1662,9 +1660,16 @@
- int64_t
- ClientSocketContext::getNextRangeOffset() const
- {
-+    debugs (33, 5, "range: " << http->request->range <<
-+            "; http offset " << http->out.offset <<
-+            "; reply " << reply);
-+
-+    // XXX: This method is called from many places, including pullData() which
-+    // may be called before prepareReply() [on some Squid-generated errors].
-+    // Hence, we may not even know yet whether we should honor/do ranges.
-+
-     if (http->request->range) {
-         /* offset in range specs does not count the prefix of an http msg */
--        debugs (33, 5, "ClientSocketContext::getNextRangeOffset: http offset " << http->out.offset);
-         /* check: reply was parsed and range iterator was initialized */
-         assert(http->range_iter.valid);
-         /* filter out data according to range specs */
-@@ -1701,7 +1706,7 @@
- void
- ClientSocketContext::pullData()
- {
--    debugs(33, 5, HERE << clientConnection << " attempting to pull upstream data");
-+    debugs(33, 5, reply << " written " << http->out.size << " into " << clientConnection);
- 
-     /* More data will be coming from the stream. */
-     StoreIOBuffer readBuffer;
-@@ -2492,7 +2497,7 @@
-         clientReplyContext *repContext = dynamic_cast<clientReplyContext *>(node->data.getRaw());
-         assert(repContext);
-         debugs(33, 5, "Responding with delated error for " << http->uri);
--        repContext->setReplyToStoreEntry(sslServerBump->entry);
-+        repContext->setReplyToStoreEntry(sslServerBump->entry, "delayed SslBump error");
- 
-         // save the original request for logging purposes
-         if (!context->http->al->request)
-
-=== modified file 'src/client_side_reply.cc'
---- src/client_side_reply.cc	2013-12-15 05:23:23 +0000
-+++ src/client_side_reply.cc	2014-03-09 02:35:19 +0000
-@@ -134,13 +134,18 @@
- 
-     http->al->http.code = errstate->httpStatus;
- 
-+    if (http->request)
-+        http->request->ignoreRange("responding with a Squid-generated error");
-+
-     createStoreEntry(method, RequestFlags());
-     assert(errstate->callback_data == NULL);
-     errorAppendEntry(http->storeEntry(), errstate);
-     /* Now the caller reads to get this */
- }
- 
--void clientReplyContext::setReplyToStoreEntry(StoreEntry *entry)
-+// Assumes that the entry contains an error response without Content-Range.
-+// To use with regular entries, make HTTP Range header removal conditional.
-+void clientReplyContext::setReplyToStoreEntry(StoreEntry *entry, const char *reason)
- {
-     entry->lock(); // removeClientStoreReference() unlocks
-     sc = storeClientListAdd(entry, this);
-@@ -149,6 +154,8 @@
- #endif
-     reqofs = 0;
-     reqsize = 0;
-+    if (http->request)
-+        http->request->ignoreRange(reason);
-     flags.storelogiccomplete = 1;
-     http->storeEntry(entry);
- }
-
-=== modified file 'src/client_side_reply.h'
---- src/client_side_reply.h	2012-09-10 12:49:35 +0000
-+++ src/client_side_reply.h	2014-03-09 02:35:19 +0000
-@@ -73,7 +73,7 @@
-     int storeOKTransferDone() const;
-     int storeNotOKTransferDone() const;
-     /// replaces current response store entry with the given one
--    void setReplyToStoreEntry(StoreEntry *e);
-+    void setReplyToStoreEntry(StoreEntry *e, const char *reason);
-     /// builds error using clientBuildError() and calls setReplyToError() below
-     void setReplyToError(err_type, http_status, const HttpRequestMethod&, char const *, Ip::Address &, HttpRequest *, const char *,
- #if USE_AUTH
-
-=== modified file 'src/client_side_request.cc'
---- src/client_side_request.cc	2014-03-09 02:10:07 +0000
-+++ src/client_side_request.cc	2014-03-09 02:35:19 +0000
-@@ -1131,8 +1131,7 @@
-     else {
-         req_hdr->delById(HDR_RANGE);
-         req_hdr->delById(HDR_REQUEST_RANGE);
--        delete request->range;
--        request->range = NULL;
-+        request->ignoreRange("neither HEAD nor GET");
-     }
- 
-     if (req_hdr->has(HDR_AUTHORIZATION))
-@@ -1664,7 +1663,7 @@
-             clientStreamNode *node = (clientStreamNode *)client_stream.tail->prev->data;
-             clientReplyContext *repContext = dynamic_cast<clientReplyContext *>(node->data.getRaw());
-             assert (repContext);
--            repContext->setReplyToStoreEntry(e);
-+            repContext->setReplyToStoreEntry(e, "immediate SslBump error");
-             errorAppendEntry(e, calloutContext->error);
-             calloutContext->error = NULL;
-             if (calloutContext->readNextRequest)
-
-=== modified file 'src/http.cc'
---- src/http.cc	2013-11-21 21:54:29 +0000
-+++ src/http.cc	2014-03-09 02:35:19 +0000
-@@ -1736,8 +1736,7 @@
-         /* don't cache the result */
-         request->flags.cachable = 0;
-         /* pretend it's not a range request */
--        delete request->range;
--        request->range = NULL;
-+        request->ignoreRange("want to request the whole object");
-         request->flags.isRanged=false;
-     }
- 
-
diff --git a/SOURCES/squid-3.3.13-dos.patch b/SOURCES/squid-3.3.13-dos.patch
deleted file mode 100644
index eb7499c..0000000
--- a/SOURCES/squid-3.3.13-dos.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-------------------------------------------------------------
-revno: 12680
-revision-id: squid3@treenet.co.nz-20140827135054-gocmdaazdumj5e2e
-parent: squid3@treenet.co.nz-20140520164322-out2c9fak6sb2u4x
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.3
-timestamp: Wed 2014-08-27 07:50:54 -0600
-message:
-  Ignore Range headers with unidentifiable byte-range values
-  
-  If squid is unable to determine the byte value for ranges, treat the
-  header as invalid.
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20140827135054-gocmdaazdumj5e2e
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# testament_sha1: 5518d5baca6f4327b40368e98fe8d9c36831fa1a
-# timestamp: 2014-08-27 13:53:27 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# base_revision_id: squid3@treenet.co.nz-20140520164322-\
-#   out2c9fak6sb2u4x
-# 
-# Begin patch
-=== modified file 'src/HttpHdrRange.cc'
---- src/HttpHdrRange.cc 2013-01-02 03:44:55 +0000
-+++ src/HttpHdrRange.cc 2014-08-27 13:50:54 +0000
-@@ -92,7 +92,7 @@
- 
-     /* is it a suffix-byte-range-spec ? */
-     if (*field == '-') {
--        if (!httpHeaderParseOffset(field + 1, &length))
-+        if (!httpHeaderParseOffset(field + 1, &length) || !known_spec(length))
-             return false;
-     } else
-         /* must have a '-' somewhere in _this_ field */
-@@ -100,7 +100,7 @@
-             debugs(64, 2, "invalid (missing '-') range-spec near: '" << field << "'");
-             return false;
-         } else {
--            if (!httpHeaderParseOffset(field, &offset))
-+            if (!httpHeaderParseOffset(field, &offset) || !known_spec(offset))
-                 return false;
- 
-             ++p;
-@@ -109,7 +109,7 @@
-             if (p - field < flen) {
-                 int64_t last_pos;
- 
--                if (!httpHeaderParseOffset(p, &last_pos))
-+                if (!httpHeaderParseOffset(p, &last_pos) || !known_spec(last_pos))
-                     return false;
- 
-                 // RFC 2616 s14.35.1 MUST: last-byte-pos >= first-byte-pos
-
diff --git a/SOURCES/squid-3.3.4-empty-pod2man.patch b/SOURCES/squid-3.3.4-empty-pod2man.patch
deleted file mode 100644
index cc5ce63..0000000
--- a/SOURCES/squid-3.3.4-empty-pod2man.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -up squid-3.3.4/helpers/basic_auth/DB/config.test~ squid-3.3.4/helpers/basic_auth/DB/config.test
---- squid-3.3.4/helpers/basic_auth/DB/config.test~	2013-04-27 06:34:48.000000000 +0300
-+++ squid-3.3.4/helpers/basic_auth/DB/config.test	2013-05-08 15:24:08.234985038 +0300
-@@ -2,6 +2,6 @@
- 
- ## Test: do we have perl to build the helper scripts?
- ## Test: do we have pod2man to build the manual?
--perl --version >/dev/null && echo | pod2man >/dev/null
-+perl --version >/dev/null && echo =pod | pod2man >/dev/null
- 
- exit $?
-diff -up squid-3.3.4/helpers/external_acl/SQL_session/config.test~ squid-3.3.4/helpers/external_acl/SQL_session/config.test
---- squid-3.3.4/helpers/external_acl/SQL_session/config.test~	2013-04-27 06:34:48.000000000 +0300
-+++ squid-3.3.4/helpers/external_acl/SQL_session/config.test	2013-05-08 15:23:49.237640257 +0300
-@@ -2,6 +2,6 @@
- 
- ## Test: do we have perl to build the helper scripts?
- ## Test: do we have pod2man to build the manual?
--perl --version >/dev/null && echo | pod2man >/dev/null
-+perl --version >/dev/null && echo =pod | pod2man >/dev/null
- 
- exit $?
-diff -up squid-3.3.4/helpers/log_daemon/DB/config.test~ squid-3.3.4/helpers/log_daemon/DB/config.test
---- squid-3.3.4/helpers/log_daemon/DB/config.test~	2013-04-27 06:34:48.000000000 +0300
-+++ squid-3.3.4/helpers/log_daemon/DB/config.test	2013-05-08 15:23:26.402225335 +0300
-@@ -2,6 +2,6 @@
- 
- ## Test: do we have perl to build the helper scripts?
- ## Test: do we have pod2man to build the manual?
--perl --version >/dev/null && echo | pod2man >/dev/null
-+perl --version >/dev/null && echo =pod | pod2man >/dev/null
- 
- exit $?
diff --git a/SOURCES/squid-3.3.8-active-ftp-1.patch b/SOURCES/squid-3.3.8-active-ftp-1.patch
new file mode 100644
index 0000000..0d4d13e
--- /dev/null
+++ b/SOURCES/squid-3.3.8-active-ftp-1.patch
@@ -0,0 +1,88 @@
+diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc
+index 2f09b12..7e13a29 100644
+--- a/src/clients/FtpGateway.cc
++++ b/src/clients/FtpGateway.cc
+@@ -136,7 +136,10 @@ public:
+ 
+     /// create a data channel acceptor and start listening.
+     void listenForDataChannel(const Comm::ConnectionPointer &conn);
+-
++    virtual bool openListenSocket() {
++        ftpOpenListenSocket(this, 0);
++        return Comm::IsConnOpen(data.conn);
++		}
+     int checkAuth(const HttpHeader * req_hdr);
+     void checkUrlpath();
+     void buildTitleUrl();
+diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc
+index 1a7b092..025df84 100644
+--- a/src/clients/FtpGateway.cc
++++ b/src/clients/FtpGateway.cc
+@@ -87,6 +87,13 @@ struct GatewayFlags {
+ class Gateway;
+ typedef void (StateMethod)(Ftp::Gateway *);
+ 
++} // namespace FTP
++
++static void ftpOpenListenSocket(Ftp::Gateway * ftpState, int fallback);
++
++namespace Ftp
++{
++
+ /// FTP Gateway: An FTP client that takes an HTTP request with an ftp:// URI,
+ /// converts it into one or more FTP commands, and then
+ /// converts one or more FTP responses into the final HTTP response.
+diff --git a/src/clients/FtpClient.cc b/src/clients/FtpClient.cc
+index a262eea..0978831 100644
+--- a/src/clients/FtpClient.cc
++++ b/src/clients/FtpClient.cc
+@@ -743,7 +743,8 @@ Ftp::Client::connectDataChannel()
+ bool
+ Ftp::Client::openListenSocket()
+ {
+-    return false;
++    debugs(9, 3, HERE);
++	  return false;
+ }
+ 
+ /// creates a data channel Comm close callback
+diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc
+index 025df84..dbc4809 100644
+--- a/src/clients/FtpGateway.cc
++++ b/src/clients/FtpGateway.cc
+@@ -144,7 +144,8 @@ public:
+     /// create a data channel acceptor and start listening.
+     void listenForDataChannel(const Comm::ConnectionPointer &conn);
+     virtual bool openListenSocket() {
+-        ftpOpenListenSocket(this, 0);
++    		debugs(9, 3, HERE);
++				ftpOpenListenSocket(this, 0);
+         return Comm::IsConnOpen(data.conn);
+ 		}
+     int checkAuth(const HttpHeader * req_hdr);
+diff --git a/src/clients/FtpClient.h b/src/clients/FtpClient.h
+index ef2aa98..10a511e 100644
+--- a/src/clients/FtpClient.h
++++ b/src/clients/FtpClient.h
+@@ -115,7 +115,7 @@ public:
+     bool sendPort();
+     bool sendPassive();
+     void connectDataChannel();
+-    bool openListenSocket();
++    virtual bool openListenSocket();
+     void switchTimeoutToDataChannel();
+ 
+     CtrlChannel ctrl; ///< FTP control channel state
+diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc
+index 8754e62..0ef1171 100644
+--- a/src/clients/FtpGateway.cc
++++ b/src/clients/FtpGateway.cc
+@@ -1979,7 +1979,7 @@ ftpReadEPRT(Ftp::Gateway * ftpState)
+         ftpSendPORT(ftpState);
+         return;
+     }
+-
++    ftpState->ctrl.message = NULL;
+     ftpRestOrList(ftpState);
+ }
+ 
diff --git a/SOURCES/squid-3.3.8-active-ftp-2.patch b/SOURCES/squid-3.3.8-active-ftp-2.patch
index 268c7f6..deca280 100644
--- a/SOURCES/squid-3.3.8-active-ftp-2.patch
+++ b/SOURCES/squid-3.3.8-active-ftp-2.patch
@@ -1,26 +1,28 @@
---- ./src/ftp.cc    2013-07-13 15:22:32.000000000 +0200
-+++ ./src/ftp.cc    2013-12-21 15:39:23.015056228 +0100
-@@ -2816,6 +2816,7 @@
+diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc
+index 524eebb..2f09b12 100644
+--- a/src/clients/FtpGateway.cc
++++ b/src/clients/FtpGateway.cc
+@@ -1834,6 +1834,7 @@ ftpOpenListenSocket(Ftp::Gateway * ftpState, int fallback)
      }
  
-     ftpState->listenForDataChannel(temp, ftpState->entry->url());
+     ftpState->listenForDataChannel(temp);
 +    ftpState->data.listenConn = temp;
  }
  
- /// \ingroup ServerProtocolFTPInternal
-@@ -2851,14 +2852,19 @@
- 
+ static void
+@@ -1869,13 +1870,19 @@ ftpSendPORT(Ftp::Gateway * ftpState)
      // pull out the internal IP address bytes to send in PORT command...
      // source them from the listen_conn->local
--
+ 
+-    struct addrinfo *AI = NULL;
 +    struct sockaddr_in addr;
 +    socklen_t addrlen = sizeof(addr);
 +    getsockname(ftpState->data.listenConn->fd, (struct sockaddr *) &addr, &addrlen);
 +    unsigned char port_high = ntohs(addr.sin_port) >> 8;
-+    unsigned char port_low  = ntohs(addr.sin_port) & 0xff;    
-+    
-     struct addrinfo *AI = NULL;
-     ftpState->data.listenConn->local.GetAddrInfo(AI, AF_INET);
++    unsigned char port_low  = ntohs(addr.sin_port) & 0xff;
++
++    struct addrinfo *AI = NULL;
+     ftpState->data.listenConn->local.getAddrInfo(AI, AF_INET);
      unsigned char *addrptr = (unsigned char *) &((struct sockaddr_in*)AI->ai_addr)->sin_addr;
 -    unsigned char *portptr = (unsigned char *) &((struct sockaddr_in*)AI->ai_addr)->sin_port;
 +    // unsigned char *portptr = (unsigned char *) &((struct sockaddr_in*)AI->ai_addr)->sin_port;
@@ -29,37 +31,36 @@
 -             portptr[0], portptr[1]);
 +             port_high, port_low);
      ftpState->writeCommand(cbuf);
-     ftpState->state = SENT_PORT;
+     ftpState->state = Ftp::Client::SENT_PORT;
  
-@@ -2907,15 +2913,25 @@
-         ftpFail(ftpState);
+@@ -1923,14 +1930,27 @@ ftpSendEPRT(Ftp::Gateway * ftpState)
          return;
      }
--
+ 
 -    char buf[MAX_IPSTRLEN];
--
++
 +    unsigned int port;
 +    struct sockaddr_storage addr;
 +    socklen_t addrlen = sizeof(addr);
 +    getsockname(ftpState->data.listenConn->fd, (struct sockaddr *) &addr, &addrlen);
 +    if (addr.ss_family == AF_INET) {
-+      struct sockaddr_in *addr4 = (struct sockaddr_in*) &addr;
-+      port = ntohs( addr4->sin_port );
++        struct sockaddr_in *addr4 = (struct sockaddr_in*) &addr;
++        port = ntohs( addr4->sin_port );
 +    } else {
-+      struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *) &addr;
-+      port = ntohs( addr6->sin6_port );
-+    }    
-+        
-+    char buf[MAX_IPSTRLEN];    
++        struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *) &addr;
++        port = ntohs( addr6->sin6_port );
++    }
++
++    char buf[MAX_IPSTRLEN];
+ 
      /* RFC 2428 defines EPRT as IPv6 equivalent to IPv4 PORT command. */
      /* Which can be used by EITHER protocol. */
 -    snprintf(cbuf, CTRL_BUFLEN, "EPRT |%d|%s|%d|\r\n",
 +    snprintf(cbuf, CTRL_BUFLEN, "EPRT |%d|%s|%u|\r\n",
-              ( ftpState->data.listenConn->local.IsIPv6() ? 2 : 1 ),
-              ftpState->data.listenConn->local.NtoA(buf,MAX_IPSTRLEN),
--             ftpState->data.listenConn->local.GetPort() );
+              ( ftpState->data.listenConn->local.isIPv6() ? 2 : 1 ),
+              ftpState->data.listenConn->local.toStr(buf,MAX_IPSTRLEN),
+-             ftpState->data.listenConn->local.port() );
 +             port);
  
      ftpState->writeCommand(cbuf);
-     ftpState->state = SENT_EPRT;
-
+     ftpState->state = Ftp::Client::SENT_EPRT;
diff --git a/SOURCES/squid-3.3.8-conf-setrlimit.patch b/SOURCES/squid-3.3.8-conf-setrlimit.patch
deleted file mode 100644
index 95b79ad..0000000
--- a/SOURCES/squid-3.3.8-conf-setrlimit.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 1d9df60..76ca114 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2705,6 +2705,7 @@ AC_ARG_WITH(maxfd,,
-   case ${withval} in
-     [[0-9]]*)
-       squid_filedescriptors_num=$withval
-+      AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
-       ;;
-     *)
-       AC_MSG_ERROR(--with-maxfd expects a numeric argument)
-@@ -2719,6 +2720,7 @@ AC_ARG_WITH(filedescriptors,
-   case ${withval} in
-     [[0-9]]*)
-       squid_filedescriptors_num=$withval
-+      AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
-       ;;
-     *)
-       AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
-@@ -2727,10 +2729,9 @@ AC_ARG_WITH(filedescriptors,
- ])
- 
- SQUID_CHECK_DEFAULT_FD_SETSIZE
--if test "x$squid_filedescriptors_num" = "x"; then
--  SQUID_CHECK_MAXFD
--else
--  AC_MSG_NOTICE([forcing use of $squid_filedescriptors_num filedescriptors (user-forced)])
-+SQUID_CHECK_MAXFD
-+if test "x$squid_filedescriptors_num" != "x"; then
-+  AC_MSG_NOTICE([Default number of fieldescriptors: $squid_filedescriptors_num])
- fi
- if test "$squid_filedescriptors_num" -lt 512 ; then
-     AC_MSG_WARN([$squid_filedescriptors_num may not be enough filedescriptors if your])
---- a/configure
-+++ b/configure
-@@ -29326,6 +29326,7 @@ for ac_func in \
- 	setgroups \
- 	setpgrp \
- 	setsid \
-+  setrlimit \
- 	sigaction \
- 	snprintf \
- 	socketpair \
diff --git a/SOURCES/squid-3.3.8-fd-leaks.patch b/SOURCES/squid-3.3.8-fd-leaks.patch
deleted file mode 100644
index dc28954..0000000
--- a/SOURCES/squid-3.3.8-fd-leaks.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-diff -Naurp squid-3.3.8.orig/src/ipc/TypedMsgHdr.cc squid-3.3.8/src/ipc/TypedMsgHdr.cc
---- squid-3.3.8.orig/src/ipc/TypedMsgHdr.cc	2013-07-13 15:25:14.000000000 +0200
-+++ squid-3.3.8/src/ipc/TypedMsgHdr.cc	2015-04-20 14:28:32.971000390 +0200
-@@ -167,10 +167,20 @@ Ipc::TypedMsgHdr::putRaw(const void *raw
-     }
- }
- 
-+bool
-+Ipc::TypedMsgHdr::hasFd() const
-+{
-+	struct cmsghdr *cmsg = CMSG_FIRSTHDR(this);
-+	return cmsg &&
-+	    cmsg->cmsg_level == SOL_SOCKET &&
-+	    cmsg->cmsg_type == SCM_RIGHTS;
-+}
-+
- void
- Ipc::TypedMsgHdr::putFd(int fd)
- {
-     Must(fd >= 0);
-+    Must(!hasFd());
-     allocControl();
- 
-     const int fdCount = 1;
-@@ -183,12 +193,15 @@ Ipc::TypedMsgHdr::putFd(int fd)
-     int *fdStore = reinterpret_cast<int*>(CMSG_DATA(cmsg));
-     memcpy(fdStore, &fd, fdCount * sizeof(int));
-     msg_controllen = cmsg->cmsg_len;
-+
-+    Must(hasFd());
- }
- 
- int
- Ipc::TypedMsgHdr::getFd() const
- {
-     Must(msg_control && msg_controllen);
-+    Must(hasFd());
- 
-     struct cmsghdr *cmsg = CMSG_FIRSTHDR(this);
-     Must(cmsg->cmsg_level == SOL_SOCKET);
-diff -Naurp squid-3.3.8.orig/src/ipc/TypedMsgHdr.h squid-3.3.8/src/ipc/TypedMsgHdr.h
---- squid-3.3.8.orig/src/ipc/TypedMsgHdr.h	2013-07-13 15:25:14.000000000 +0200
-+++ squid-3.3.8/src/ipc/TypedMsgHdr.h	2015-04-20 14:12:57.509303004 +0200
-@@ -59,8 +59,8 @@ public:
- 
-     /* access to a "file" descriptor that can be passed between processes */
-     void putFd(int aFd); ///< stores descriptor
--    int getFd() const; ///< returns descriptor
--
-+    int getFd() const; ///< returns stored descriptor
-+    bool hasFd() const; ///< whether the message has a descriptor stored
-     /* raw, type-independent access for I/O */
-     void prepForReading(); ///< reset and provide all buffers
-     char *raw() { return reinterpret_cast<char*>(this); }
-diff -Naurp squid-3.3.8.orig/src/snmp/Inquirer.cc squid-3.3.8/src/snmp/Inquirer.cc
---- squid-3.3.8.orig/src/snmp/Inquirer.cc	2013-07-13 15:25:14.000000000 +0200
-+++ squid-3.3.8/src/snmp/Inquirer.cc	2015-04-20 14:15:12.324970907 +0200
-@@ -28,6 +28,10 @@ Snmp::Inquirer::Inquirer(const Request&
-     closer = asyncCall(49, 5, "Snmp::Inquirer::noteCommClosed",
-                        CommCbMemFunT<Inquirer, CommCloseCbParams>(this, &Inquirer::noteCommClosed));
-     comm_add_close_handler(conn->fd, closer);
-+
-+    // forget client FD to avoid sending it to strands that may forget to close
-+    if (Request *snmpRequest = dynamic_cast<Request*>(request.getRaw()))
-+	snmpRequest->fd = -1;
- }
- 
- /// closes our copy of the client connection socket
-diff -Naurp squid-3.3.8.orig/src/snmp/Request.cc squid-3.3.8/src/snmp/Request.cc
---- squid-3.3.8.orig/src/snmp/Request.cc	2013-07-13 15:25:14.000000000 +0200
-+++ squid-3.3.8/src/snmp/Request.cc	2015-04-20 14:21:16.676074181 +0200
-@@ -33,7 +33,8 @@ Snmp::Request::Request(const Ipc::TypedM
-     session.unpack(msg);
-     msg.getPod(address);
- 
--    fd = msg.getFd();
-+    // Requests from strands have FDs. Requests from Coordinator do not.
-+    fd = msg.hasFd() ? msg.getFd() : -1;
- }
- 
- void
-@@ -46,7 +47,9 @@ Snmp::Request::pack(Ipc::TypedMsgHdr& ms
-     session.pack(msg);
-     msg.putPod(address);
- 
--    msg.putFd(fd);
-+    // Requests sent to Coordinator have FDs. Requests sent to strands do not.
-+    if (fd >= 0)
-+	msg.putFd(fd);
- }
- 
- Ipc::Request::Pointer
diff --git a/SOURCES/squid-3.3.8-incorrect-cert.patch b/SOURCES/squid-3.3.8-incorrect-cert.patch
deleted file mode 100644
index 76dfc9f..0000000
--- a/SOURCES/squid-3.3.8-incorrect-cert.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/src/ssl/support.cc
-+++ b/src/ssl/support.cc
-@@ -208,7 +208,13 @@ static int check_domain( void *check_data, ASN1_STRING *cn_data)
-     if (cn_data->length > (int)sizeof(cn) - 1) {
-         return 1; //if does not fit our buffer just ignore
-     }
--    memcpy(cn, cn_data->data, cn_data->length);
-+    char *s = reinterpret_cast<char*>(cn_data->data);
-+    char *d = cn;
-+    for (int i = 0; i < cn_data->length; ++i, ++d, ++s){
-+        if (*s == '\0')
-+            return 1; // always a domain mismatch. contains 0x00
-+        *d = *s;
-+    }
-     cn[cn_data->length] = '\0';
-     debugs(83, 4, "Verifying server domain " << server << " to certificate name/subjectAltName " << cn);
-     return matchDomainName(server, cn[0] == '*' ? cn + 1 : cn);
diff --git a/SOURCES/squid-3.3.8-incorrect-ssl.patch b/SOURCES/squid-3.3.8-incorrect-ssl.patch
deleted file mode 100644
index 0fe4463..0000000
--- a/SOURCES/squid-3.3.8-incorrect-ssl.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -Naurp squid-3.3.8.orig/src/client_side.cc squid-3.3.8/src/client_side.cc
---- squid-3.3.8.orig/src/client_side.cc	2015-03-26 12:46:28.000000000 +0100
-+++ squid-3.3.8/src/client_side.cc	2015-03-26 11:11:17.000000000 +0100
-@@ -3859,8 +3859,18 @@ ConnStateData::getSslContextDone(SSL_CTX
-     // Try to add generated ssl context to storage.
-     if (port->generateHostCertificates && isNew) {
- 
--        if (signAlgorithm == Ssl::algSignTrusted)
-+        if (signAlgorithm == Ssl::algSignTrusted) {
-+            // Add signing certificate to the certificates chain
-+            X509 *cert = port->signingCert.get();
-+            if (SSL_CTX_add_extra_chain_cert(sslContext, cert)) {
-+                // increase the certificate lock
-+                CRYPTO_add(&(cert->references),1,CRYPTO_LOCK_X509);
-+            } else {
-+                const int ssl_error = ERR_get_error();
-+                debugs(33, DBG_IMPORTANT, "WARNING: can not add signing certificate to SSL context chain: " << ERR_error_string(ssl_error, NULL));
-+            }
-             Ssl::addChainToSslContext(sslContext, port->certsToChain.get());
-+        }
-         //else it is self-signed or untrusted do not attrach any certificate
- 
-         Ssl::LocalContextStorage & ssl_ctx_cache(Ssl::TheGlobalContextStorage.getLocalStorage(port->s));
-diff -Naurp squid-3.3.8.orig/src/ssl/support.cc squid-3.3.8/src/ssl/support.cc
---- squid-3.3.8.orig/src/ssl/support.cc	2013-07-13 15:25:14.000000000 +0200
-+++ squid-3.3.8/src/ssl/support.cc	2015-03-26 12:44:15.104570937 +0100
-@@ -1488,11 +1488,7 @@ static X509 * readSslX509CertificatesCha
-         if (X509_check_issued(certificate, certificate) == X509_V_OK)
-             debugs(83, 5, "Certificate is self-signed, will not be chained");
-         else {
--            if (sk_X509_push(chain, certificate))
--                CRYPTO_add(&(certificate->references), 1, CRYPTO_LOCK_X509);
--            else
--                debugs(83, DBG_IMPORTANT, "WARNING: unable to add signing certificate to cert chain");
--            // and add to the chain any certificate loaded from the file
-+            // and add to the chain any other certificate exist in the file
-             while (X509 *ca = PEM_read_bio_X509(bio.get(), NULL, NULL, NULL)) {
-                 if (!sk_X509_push(chain, ca))
-                     debugs(83, DBG_IMPORTANT, "WARNING: unable to add CA certificate to cert chain");
diff --git a/SOURCES/squid-3.3.8-le-looping.patch b/SOURCES/squid-3.3.8-le-looping.patch
deleted file mode 100644
index c7eeb96..0000000
--- a/SOURCES/squid-3.3.8-le-looping.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-=== modified file 'lib/base64.c'
---- lib/base64.c	2015-01-13 09:13:49 +0000
-+++ lib/base64.c	2015-09-21 11:43:00 +0000
-@@ -149,7 +149,7 @@
-     int char_count = 0;
-     int out_cnt = 0;
- 
--    if (!data || !*data || !result || result_size < 1 || data_size < 1)
-+    if (!data || !result || result_size < 1 || data_size < 1)
-         return 0;
- 
-     if (!base64_initialized)
diff --git a/SOURCES/squid-3.3.8-segfault-reboot.patch b/SOURCES/squid-3.3.8-segfault-reboot.patch
deleted file mode 100644
index 8ca47bf..0000000
--- a/SOURCES/squid-3.3.8-segfault-reboot.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/src/comm.cc
-+++ b/src/comm.cc
-@@ -2001,7 +2001,7 @@ DeferredReadManager::popHead(CbDataListContainer<DeferredRead> &deferredReads)
-     //       amount of time. We must re-validate that it is active and usable.
- 
-     // If the connection has been closed already. Cancel this read.
--    if (!Comm::IsConnOpen(read.theRead.conn)) {
-+    if (!fd_table || !Comm::IsConnOpen(read.theRead.conn)) {
-         if (read.closer != NULL) {
-             read.closer->cancel("Connection closed before.");
-             read.closer = NULL;
diff --git a/SOURCES/squid-3.3.8-vary-headers.patch b/SOURCES/squid-3.3.8-vary-headers.patch
deleted file mode 100644
index fdada52..0000000
--- a/SOURCES/squid-3.3.8-vary-headers.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-diff -Naurp squid-3.3.8.orig/src/client_side_reply.cc squid-3.3.8/src/client_side_reply.cc
---- squid-3.3.8.orig/src/client_side_reply.cc	2015-04-22 13:38:31.000000000 +0200
-+++ squid-3.3.8/src/client_side_reply.cc	2015-04-22 13:42:29.332950760 +0200
-@@ -506,6 +506,7 @@ clientReplyContext::cacheHit(StoreIOBuff
- 
-     if (strcmp(e->mem_obj->url, urlCanonical(r)) != 0) {
-         debugs(33, DBG_IMPORTANT, "clientProcessHit: URL mismatch, '" << e->mem_obj->url << "' != '" << urlCanonical(r) << "'");
-+        http->logType = LOG_TCP_MISS; // we lack a more precise LOG_*_MISS code
-         processMiss();
-         return;
-     }
-@@ -537,6 +538,7 @@ clientReplyContext::cacheHit(StoreIOBuff
-     case VARY_CANCEL:
-         /* varyEvaluateMatch found a object loop. Process as miss */
-         debugs(88, DBG_IMPORTANT, "clientProcessHit: Vary object loop!");
-+        http->logType = LOG_TCP_MISS; // we lack a more precise LOG_*_MISS code
-         processMiss();
-         return;
-     }
-diff -Naurp squid-3.3.8.orig/src/MemStore.cc squid-3.3.8/src/MemStore.cc
---- squid-3.3.8.orig/src/MemStore.cc	2013-07-13 15:25:14.000000000 +0200
-+++ squid-3.3.8/src/MemStore.cc	2015-04-22 13:25:35.879901955 +0200
-@@ -310,6 +310,12 @@ MemStore::considerKeeping(StoreEntry &e)
-         return;
-     }
- 
-+    if (e.mem_obj->vary_headers) {
-+        // XXX: We must store/load SerialisedMetaData to cache Vary in RAM
-+        debugs(20, 5, "Vary not yet supported: " << e.mem_obj->vary_headers);
-+        return;
-+    }
-+
-     keep(e); // may still fail
- }
- 
-diff -Naurp squid-3.3.8.orig/src/store.cc squid-3.3.8/src/store.cc
---- squid-3.3.8.orig/src/store.cc	2013-07-13 15:25:14.000000000 +0200
-+++ squid-3.3.8/src/store.cc	2015-04-22 13:43:44.675657018 +0200
-@@ -761,7 +761,7 @@ StoreEntry::setPublicKey()
-             StoreEntry *pe = storeCreateEntry(mem_obj->url, mem_obj->log_url, request->flags, request->method);
-             /* We are allowed to do this typecast */
-             HttpReply *rep = new HttpReply;
--            rep->setHeaders(HTTP_OK, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000);
-+            rep->setHeaders(HTTP_OK, "Internal marker object", "x-squid-internal/vary", 0, -1, squid_curtime + 100000);
-             vary = mem_obj->getReply()->header.getList(HDR_VARY);
- 
-             if (vary.size()) {
-@@ -780,12 +780,13 @@ StoreEntry::setPublicKey()
-             }
- 
- #endif
--            pe->replaceHttpReply(rep);
--
-+            pe->replaceHttpReply(rep, false); // no write until key is public
-             pe->timestampsSet();
- 
-             pe->makePublic();
- 
-+            pe->startWriting(); // after makePublic()
-+
-             pe->complete();
- 
-             pe->unlock();
diff --git a/SOURCES/squid-3.3.8.tar.xz.asc b/SOURCES/squid-3.3.8.tar.xz.asc
deleted file mode 100644
index 99883eb..0000000
--- a/SOURCES/squid-3.3.8.tar.xz.asc
+++ /dev/null
@@ -1,20 +0,0 @@
-File: squid-3.3.8.tar.xz
-Date: Sat Jul 13 13:51:57 UTC 2013
-Size: 2182240
-MD5 : 6a8fa0075f2fbdd899ac4c9d95fe67cb
-SHA1: 39472c7f93e14fb55a65d1730d6594407b7de9f6
-Key : 0xFF5CF463 <squid3@treenet.co.nz>
-      fingerprint = EA31 CC5E 9488 E516 8D2D  CC5E B268 E706 FF5C F463
-      keyring = http://www.squid-cache.org/pgp.asc
-      keyserver = subkeys.pgp.net
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.12 (GNU/Linux)
-
-iQEcBAABAgAGBQJR4V+DAAoJELJo5wb/XPRjiQ8H/RYpMtqppi4BeCYNGyDDJ2up
-4jQidizhmNaTnfxZi1vnDCQcamWr4yD6dAhUOPR50vaogbpFhYN6C6KjSiYbIdhp
-w/nFgPZUQY7n9A7t/sHKLHOSgtPg17Vhtky0FXFfwArvnSC+6U1J+JTC4Dr3mWXU
-rhMmEMIWtdTZF93pg7KeM0osZnc6qySmnc04ow6rE1yvBc2Ky4H/ljOZhXO4PzCP
-uVjmAQKvzsd+ZMmksxMWHm9cPnkw0YPfhiruk9KG95xAz1cLWcoaE0fAAAsgxN8u
-0e5YR4NXLsNvGm50cGsWNG7NVTMlV87wIFTPZMkGrV4Xo2DqCSP38VUe3Wrpfxs=
-=gkZw
------END PGP SIGNATURE-----
diff --git a/SOURCES/squid-3.5.10-ssl-helper.patch b/SOURCES/squid-3.5.10-ssl-helper.patch
new file mode 100644
index 0000000..e20de4c
--- /dev/null
+++ b/SOURCES/squid-3.5.10-ssl-helper.patch
@@ -0,0 +1,73 @@
+diff --git a/configure b/configure
+index 752a86d..fa0f0e3 100755
+--- a/configure
++++ b/configure
+@@ -40311,7 +40311,7 @@ $as_echo "$as_me: BUILD Tools C++ FLAGS: $BUILDCXXFLAGS" >&6;}
+ 
+ rm -f core
+ 
+-ac_config_files="$ac_config_files Makefile compat/Makefile lib/Makefile lib/ntlmauth/Makefile lib/libTrie/Makefile lib/libTrie/test/Makefile lib/profiler/Makefile lib/rfcnb/Makefile lib/smblib/Makefile lib/snmplib/Makefile scripts/Makefile src/Makefile src/anyp/Makefile src/ftp/Makefile src/base/Makefile src/acl/Makefile src/clients/Makefile src/servers/Makefile src/fs/Makefile src/repl/Makefile src/auth/Makefile src/auth/basic/Makefile src/auth/digest/Makefile src/auth/negotiate/Makefile src/auth/ntlm/Makefile src/adaptation/Makefile src/adaptation/icap/Makefile src/adaptation/ecap/Makefile src/comm/Makefile src/esi/Makefile src/eui/Makefile src/format/Makefile src/helper/Makefile src/http/Makefile src/icmp/Makefile src/ident/Makefile src/ip/Makefile src/log/Makefile src/ipc/Makefile src/ssl/Makefile src/mgr/Makefile src/parser/Makefile src/snmp/Makefile contrib/Makefile icons/Makefile errors/Makefile test-suite/Makefile doc/Makefile doc/manuals/Makefile doc/release-notes/Makefile helpers/Makefile helpers/basic_auth/Makefile helpers/basic_auth/DB/Makefile helpers/basic_auth/fake/Makefile helpers/basic_auth/getpwnam/Makefile helpers/basic_auth/LDAP/Makefile helpers/basic_auth/MSNT-multi-domain/Makefile helpers/basic_auth/NCSA/Makefile helpers/basic_auth/NIS/Makefile helpers/basic_auth/PAM/Makefile helpers/basic_auth/POP3/Makefile helpers/basic_auth/RADIUS/Makefile helpers/basic_auth/SASL/Makefile helpers/basic_auth/SMB/Makefile helpers/basic_auth/SMB_LM/Makefile helpers/basic_auth/SSPI/Makefile helpers/digest_auth/Makefile helpers/digest_auth/eDirectory/Makefile helpers/digest_auth/file/Makefile helpers/digest_auth/LDAP/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fake/Makefile helpers/ntlm_auth/smb_lm/Makefile helpers/ntlm_auth/SSPI/Makefile helpers/negotiate_auth/Makefile helpers/negotiate_auth/kerberos/Makefile helpers/negotiate_auth/SSPI/Makefile helpers/negotiate_auth/wrapper/Makefile helpers/external_acl/Makefile helpers/external_acl/AD_group/Makefile helpers/external_acl/delayer/Makefile helpers/external_acl/eDirectory_userip/Makefile helpers/external_acl/file_userip/Makefile helpers/external_acl/kerberos_ldap_group/Makefile helpers/external_acl/LDAP_group/Makefile helpers/external_acl/LM_group/Makefile helpers/external_acl/session/Makefile helpers/external_acl/SQL_session/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile helpers/external_acl/time_quota/Makefile helpers/log_daemon/Makefile helpers/log_daemon/DB/Makefile helpers/log_daemon/file/Makefile helpers/url_rewrite/Makefile helpers/url_rewrite/fake/Makefile helpers/ssl/Makefile helpers/storeid_rewrite/Makefile helpers/storeid_rewrite/file/Makefile tools/Makefile tools/purge/Makefile tools/squidclient/Makefile tools/systemd/Makefile tools/sysvinit/Makefile"
++ac_config_files="$ac_config_files Makefile compat/Makefile lib/Makefile lib/ntlmauth/Makefile lib/libTrie/Makefile lib/libTrie/test/Makefile lib/profiler/Makefile lib/rfcnb/Makefile lib/smblib/Makefile lib/snmplib/Makefile scripts/Makefile src/Makefile src/anyp/Makefile src/ftp/Makefile src/base/Makefile src/acl/Makefile src/clients/Makefile src/servers/Makefile src/fs/Makefile src/repl/Makefile src/auth/Makefile src/auth/basic/Makefile src/auth/digest/Makefile src/auth/negotiate/Makefile src/auth/ntlm/Makefile src/adaptation/Makefile src/adaptation/icap/Makefile src/adaptation/ecap/Makefile src/comm/Makefile src/esi/Makefile src/eui/Makefile src/format/Makefile src/helper/Makefile src/http/Makefile src/icmp/Makefile src/ident/Makefile src/ip/Makefile src/log/Makefile src/ipc/Makefile src/ssl/Makefile src/mgr/Makefile src/parser/Makefile src/snmp/Makefile contrib/Makefile icons/Makefile errors/Makefile test-suite/Makefile doc/Makefile doc/manuals/Makefile doc/release-notes/Makefile helpers/Makefile helpers/basic_auth/Makefile helpers/basic_auth/DB/Makefile helpers/basic_auth/fake/Makefile helpers/basic_auth/getpwnam/Makefile helpers/basic_auth/LDAP/Makefile helpers/basic_auth/MSNT-multi-domain/Makefile helpers/basic_auth/NCSA/Makefile helpers/basic_auth/NIS/Makefile helpers/basic_auth/PAM/Makefile helpers/basic_auth/POP3/Makefile helpers/basic_auth/RADIUS/Makefile helpers/basic_auth/SASL/Makefile helpers/basic_auth/SMB/Makefile helpers/basic_auth/SMB_LM/Makefile helpers/basic_auth/SSPI/Makefile helpers/digest_auth/Makefile helpers/digest_auth/eDirectory/Makefile helpers/digest_auth/file/Makefile helpers/digest_auth/LDAP/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fake/Makefile helpers/ntlm_auth/smb_lm/Makefile helpers/ntlm_auth/SSPI/Makefile helpers/negotiate_auth/Makefile helpers/negotiate_auth/kerberos/Makefile helpers/negotiate_auth/SSPI/Makefile helpers/negotiate_auth/wrapper/Makefile helpers/external_acl/Makefile helpers/external_acl/AD_group/Makefile helpers/external_acl/delayer/Makefile helpers/external_acl/eDirectory_userip/Makefile helpers/external_acl/file_userip/Makefile helpers/external_acl/kerberos_ldap_group/Makefile helpers/external_acl/LDAP_group/Makefile helpers/external_acl/LM_group/Makefile helpers/external_acl/session/Makefile helpers/external_acl/SQL_session/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile helpers/external_acl/time_quota/Makefile helpers/log_daemon/Makefile helpers/log_daemon/DB/Makefile helpers/log_daemon/file/Makefile helpers/url_rewrite/Makefile helpers/url_rewrite/fake/Makefile helpers/storeid_rewrite/Makefile helpers/storeid_rewrite/file/Makefile tools/Makefile tools/purge/Makefile tools/squidclient/Makefile tools/systemd/Makefile tools/sysvinit/Makefile"
+ 
+ 
+ # must configure libltdl subdir unconditionally for "make distcheck" to work
+@@ -41710,7 +41710,6 @@ do
+     "helpers/log_daemon/file/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/log_daemon/file/Makefile" ;;
+     "helpers/url_rewrite/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/url_rewrite/Makefile" ;;
+     "helpers/url_rewrite/fake/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/url_rewrite/fake/Makefile" ;;
+-    "helpers/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/ssl/Makefile" ;;
+     "helpers/storeid_rewrite/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/storeid_rewrite/Makefile" ;;
+     "helpers/storeid_rewrite/file/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/storeid_rewrite/file/Makefile" ;;
+     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
+diff --git a/configure.ac b/configure.ac
+index 6054369..0728672 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3885,7 +3885,6 @@ AC_CONFIG_FILES([
+ 	helpers/log_daemon/file/Makefile
+ 	helpers/url_rewrite/Makefile
+ 	helpers/url_rewrite/fake/Makefile
+-	helpers/ssl/Makefile
+ 	helpers/storeid_rewrite/Makefile
+ 	helpers/storeid_rewrite/file/Makefile
+ 	tools/Makefile
+diff --git a/helpers/Makefile.am b/helpers/Makefile.am
+index 043ec10..d835535 100644
+--- a/helpers/Makefile.am
++++ b/helpers/Makefile.am
+@@ -15,7 +15,6 @@ DIST_SUBDIRS = \
+ 	negotiate_auth \
+ 	ntlm_auth \
+ 	url_rewrite \
+-	ssl \
+ 	storeid_rewrite
+ 
+ SUBDIRS = \
+@@ -31,7 +30,4 @@ if ENABLE_AUTH_NTLM
+ SUBDIRS += ntlm_auth
+ endif
+ 
+-if ENABLE_SSL
+-SUBDIRS += ssl
+-endif
+ 
+diff --git a/helpers/Makefile.in b/helpers/Makefile.in
+index cf47dd2..9c53427 100644
+--- a/helpers/Makefile.in
++++ b/helpers/Makefile.in
+@@ -88,7 +88,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ @ENABLE_AUTH_NTLM_TRUE@am__append_1 = ntlm_auth
+-@ENABLE_SSL_TRUE@am__append_2 = ssl
+ subdir = helpers
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/acinclude/ax_with_prog.m4 \
+@@ -473,7 +472,6 @@ DIST_SUBDIRS = \
+ 	negotiate_auth \
+ 	ntlm_auth \
+ 	url_rewrite \
+-	ssl \
+ 	storeid_rewrite
+ 
+ SUBDIRS = basic_auth digest_auth external_acl log_daemon \
diff --git a/SOURCES/squid-3.5.20-conf-casecmp.patch b/SOURCES/squid-3.5.20-conf-casecmp.patch
new file mode 100644
index 0000000..42d6c31
--- /dev/null
+++ b/SOURCES/squid-3.5.20-conf-casecmp.patch
@@ -0,0 +1,583 @@
+diff --git a/src/acl/Ip.cc b/src/acl/Ip.cc
+index 4aa2c90..99b0bf9 100644
+--- a/src/acl/Ip.cc
++++ b/src/acl/Ip.cc
+@@ -221,7 +221,7 @@ acl_ip_data::FactoryParse(const char *t)
+     debugs(28, 5, "aclIpParseIpData: " << t);
+ 
+     /* Special ACL RHS "all" matches entire Internet */
+-    if (strcmp(t, "all") == 0) {
++    if (strcasecmp(t, "all") == 0) {
+         debugs(28, 9, "aclIpParseIpData: magic 'all' found.");
+         q->addr1.setAnyAddr();
+         q->addr2.setEmpty();
+@@ -231,8 +231,8 @@ acl_ip_data::FactoryParse(const char *t)
+ 
+     /* Detect some old broken strings equivalent to 'all'.
+      * treat them nicely. But be loud until its fixed.  */
+-    if (strcmp(t, "0/0") == 0 || strcmp(t, "0.0.0.0/0") == 0 || strcmp(t, "0.0.0.0/0.0.0.0") == 0 ||
+-            strcmp(t, "0.0.0.0-255.255.255.255") == 0 || strcmp(t, "0.0.0.0-0.0.0.0/0") == 0) {
++    if (strcasecmp(t, "0/0") == 0 || strcasecmp(t, "0.0.0.0/0") == 0 || strcasecmp(t, "0.0.0.0/0.0.0.0") == 0 ||
++            strcasecmp(t, "0.0.0.0-255.255.255.255") == 0 || strcasecmp(t, "0.0.0.0-0.0.0.0/0") == 0) {
+ 
+         debugs(28,DBG_CRITICAL, "ERROR: '" << t << "' needs to be replaced by the term 'all'.");
+         debugs(28,DBG_CRITICAL, "SECURITY NOTICE: Overriding config setting. Using 'all' instead.");
+@@ -245,14 +245,14 @@ acl_ip_data::FactoryParse(const char *t)
+     /* Special ACL RHS "ipv4" matches IPv4 Internet
+      * A nod to IANA; we include the entire class space in case
+      * they manage to find a way to recover and use it */
+-    if (strcmp(t, "ipv4") == 0) {
++    if (strcasecmp(t, "ipv4") == 0) {
+         q->mask.setNoAddr();
+         q->mask.applyMask(0, AF_INET);
+         return q;
+     }
+ 
+     /* Special ACL RHS "ipv6" matches IPv6-Unicast Internet */
+-    if (strcmp(t, "ipv6") == 0) {
++    if (strcasecmp(t, "ipv6") == 0) {
+         debugs(28, 9, "aclIpParseIpData: magic 'ipv6' found.");
+         r = q; // save head of the list for result.
+ 
+diff --git a/src/adaptation/ServiceConfig.cc b/src/adaptation/ServiceConfig.cc
+index cbae4d4..127b591 100644
+--- a/src/adaptation/ServiceConfig.cc
++++ b/src/adaptation/ServiceConfig.cc
+@@ -55,10 +55,10 @@ Adaptation::ServiceConfig::parseVectPoint(const char *service_configConfig) cons
+     if (q)
+         t = q + 1;
+ 
+-    if (!strcmp(t, "precache"))
++    if (!strcasecmp(t, "precache"))
+         return Adaptation::pointPreCache;
+ 
+-    if (!strcmp(t, "postcache"))
++    if (!strcasecmp(t, "postcache"))
+         return Adaptation::pointPostCache;
+ 
+     return Adaptation::pointNone;
+diff --git a/src/auth/Config.cc b/src/auth/Config.cc
+index d8129c7..a02ccac 100644
+--- a/src/auth/Config.cc
++++ b/src/auth/Config.cc
+@@ -73,7 +73,7 @@ Auth::Config::registerWithCacheManager(void)
+ void
+ Auth::Config::parse(Auth::Config * scheme, int n_configured, char *param_str)
+ {
+-    if (strcmp(param_str, "program") == 0) {
++    if (strcasecmp(param_str, "program") == 0) {
+         if (authenticateProgram)
+             wordlistDestroy(&authenticateProgram);
+ 
+@@ -81,7 +81,7 @@ Auth::Config::parse(Auth::Config * scheme, int n_configured, char *param_str)
+ 
+         requirePathnameExists("Authentication helper program", authenticateProgram->key);
+ 
+-    } else if (strcmp(param_str, "realm") == 0) {
++    } else if (strcasecmp(param_str, "realm") == 0) {
+         realm.clear();
+ 
+         char *token = ConfigParser::NextQuotedOrToEol();
+@@ -97,10 +97,10 @@ Auth::Config::parse(Auth::Config * scheme, int n_configured, char *param_str)
+ 
+         realm = token;
+ 
+-    } else if (strcmp(param_str, "children") == 0) {
++    } else if (strcasecmp(param_str, "children") == 0) {
+         authenticateChildren.parseConfig();
+ 
+-    } else if (strcmp(param_str, "key_extras") == 0) {
++    } else if (strcasecmp(param_str, "key_extras") == 0) {
+         keyExtrasLine = ConfigParser::NextQuotedToken();
+         Format::Format *nlf =  new ::Format::Format(scheme->type());
+         if (!nlf->parse(keyExtrasLine.termedBuf())) {
+diff --git a/src/auth/basic/Config.cc b/src/auth/basic/Config.cc
+index ae84bed..fb800d3 100644
+--- a/src/auth/basic/Config.cc
++++ b/src/auth/basic/Config.cc
+@@ -133,11 +133,11 @@ Auth::Basic::Config::Config() :
+ void
+ Auth::Basic::Config::parse(Auth::Config * scheme, int n_configured, char *param_str)
+ {
+-    if (strcmp(param_str, "credentialsttl") == 0) {
++    if (strcasecmp(param_str, "credentialsttl") == 0) {
+         parse_time_t(&credentialsTTL);
+-    } else if (strcmp(param_str, "casesensitive") == 0) {
++    } else if (strcasecmp(param_str, "casesensitive") == 0) {
+         parse_onoff(&casesensitive);
+-    } else if (strcmp(param_str, "utf8") == 0) {
++    } else if (strcasecmp(param_str, "utf8") == 0) {
+         parse_onoff(&utf8);
+     } else
+         Auth::Config::parse(scheme, n_configured, param_str);
+diff --git a/src/auth/digest/Config.cc b/src/auth/digest/Config.cc
+index 2d24969..a91225b 100644
+--- a/src/auth/digest/Config.cc
++++ b/src/auth/digest/Config.cc
+@@ -602,26 +602,26 @@ Auth::Digest::Config::Config() :
+ void
+ Auth::Digest::Config::parse(Auth::Config * scheme, int n_configured, char *param_str)
+ {
+-    if (strcmp(param_str, "program") == 0) {
++    if (strcasecmp(param_str, "program") == 0) {
+         if (authenticateProgram)
+             wordlistDestroy(&authenticateProgram);
+ 
+         parse_wordlist(&authenticateProgram);
+ 
+         requirePathnameExists("auth_param digest program", authenticateProgram->key);
+-    } else if (strcmp(param_str, "nonce_garbage_interval") == 0) {
++    } else if (strcasecmp(param_str, "nonce_garbage_interval") == 0) {
+         parse_time_t(&nonceGCInterval);
+-    } else if (strcmp(param_str, "nonce_max_duration") == 0) {
++    } else if (strcasecmp(param_str, "nonce_max_duration") == 0) {
+         parse_time_t(&noncemaxduration);
+-    } else if (strcmp(param_str, "nonce_max_count") == 0) {
++    } else if (strcasecmp(param_str, "nonce_max_count") == 0) {
+         parse_int((int *) &noncemaxuses);
+-    } else if (strcmp(param_str, "nonce_strictness") == 0) {
++    } else if (strcasecmp(param_str, "nonce_strictness") == 0) {
+         parse_onoff(&NonceStrictness);
+-    } else if (strcmp(param_str, "check_nonce_count") == 0) {
++    } else if (strcasecmp(param_str, "check_nonce_count") == 0) {
+         parse_onoff(&CheckNonceCount);
+-    } else if (strcmp(param_str, "post_workaround") == 0) {
++    } else if (strcasecmp(param_str, "post_workaround") == 0) {
+         parse_onoff(&PostWorkaround);
+-    } else if (strcmp(param_str, "utf8") == 0) {
++    } else if (strcasecmp(param_str, "utf8") == 0) {
+         parse_onoff(&utf8);
+     } else
+         Auth::Config::parse(scheme, n_configured, param_str);
+diff --git a/src/auth/negotiate/Config.cc b/src/auth/negotiate/Config.cc
+index 0f5b462..e46b98f 100644
+--- a/src/auth/negotiate/Config.cc
++++ b/src/auth/negotiate/Config.cc
+@@ -97,14 +97,14 @@ Auth::Negotiate::Config::Config() : keep_alive(1)
+ void
+ Auth::Negotiate::Config::parse(Auth::Config * scheme, int n_configured, char *param_str)
+ {
+-    if (strcmp(param_str, "program") == 0) {
++    if (strcasecmp(param_str, "program") == 0) {
+         if (authenticateProgram)
+             wordlistDestroy(&authenticateProgram);
+ 
+         parse_wordlist(&authenticateProgram);
+ 
+         requirePathnameExists("auth_param negotiate program", authenticateProgram->key);
+-    } else if (strcmp(param_str, "keep_alive") == 0) {
++    } else if (strcasecmp(param_str, "keep_alive") == 0) {
+         parse_onoff(&keep_alive);
+     } else
+         Auth::Config::parse(scheme, n_configured, param_str);
+diff --git a/src/auth/ntlm/Config.cc b/src/auth/ntlm/Config.cc
+index 135e927..27d7904 100644
+--- a/src/auth/ntlm/Config.cc
++++ b/src/auth/ntlm/Config.cc
+@@ -89,14 +89,14 @@ Auth::Ntlm::Config::Config() : keep_alive(1)
+ void
+ Auth::Ntlm::Config::parse(Auth::Config * scheme, int n_configured, char *param_str)
+ {
+-    if (strcmp(param_str, "program") == 0) {
++    if (strcasecmp(param_str, "program") == 0) {
+         if (authenticateProgram)
+             wordlistDestroy(&authenticateProgram);
+ 
+         parse_wordlist(&authenticateProgram);
+ 
+         requirePathnameExists("auth_param ntlm program", authenticateProgram->key);
+-    } else if (strcmp(param_str, "keep_alive") == 0) {
++    } else if (strcasecmp(param_str, "keep_alive") == 0) {
+         parse_onoff(&keep_alive);
+     } else
+         Auth::Config::parse(scheme, n_configured, param_str);
+diff --git a/src/cache_cf.cc b/src/cache_cf.cc
+index fedabc0..8886b68 100644
+--- a/src/cache_cf.cc
++++ b/src/cache_cf.cc
+@@ -2097,27 +2097,27 @@ parse_peer(CachePeer ** head)
+     p->connection_auth = 2;    /* auto */
+ 
+     while ((token = ConfigParser::NextToken())) {
+-        if (!strcmp(token, "proxy-only")) {
++        if (!strcasecmp(token, "proxy-only")) {
+             p->options.proxy_only = true;
+-        } else if (!strcmp(token, "no-query")) {
++        } else if (!strcasecmp(token, "no-query")) {
+             p->options.no_query = true;
+-        } else if (!strcmp(token, "background-ping")) {
++        } else if (!strcasecmp(token, "background-ping")) {
+             p->options.background_ping = true;
+-        } else if (!strcmp(token, "no-digest")) {
++        } else if (!strcasecmp(token, "no-digest")) {
+             p->options.no_digest = true;
+-        } else if (!strcmp(token, "no-tproxy")) {
++        } else if (!strcasecmp(token, "no-tproxy")) {
+             p->options.no_tproxy = true;
+-        } else if (!strcmp(token, "multicast-responder")) {
++        } else if (!strcasecmp(token, "multicast-responder")) {
+             p->options.mcast_responder = true;
+ #if PEER_MULTICAST_SIBLINGS
+-        } else if (!strcmp(token, "multicast-siblings")) {
++        } else if (!strcasecmp(token, "multicast-siblings")) {
+             p->options.mcast_siblings = true;
+ #endif
+-        } else if (!strncmp(token, "weight=", 7)) {
++        } else if (!strncasecmp(token, "weight=", 7)) {
+             p->weight = xatoi(token + 7);
+-        } else if (!strncmp(token, "basetime=", 9)) {
++        } else if (!strncasecmp(token, "basetime=", 9)) {
+             p->basetime = xatoi(token + 9);
+-        } else if (!strcmp(token, "closest-only")) {
++        } else if (!strcasecmp(token, "closest-only")) {
+             p->options.closest_only = true;
+         } else if (!strncmp(token, "ttl=", 4)) {
+             p->mcast.ttl = xatoi(token + 4);
+@@ -2127,16 +2127,16 @@ parse_peer(CachePeer ** head)
+ 
+             if (p->mcast.ttl > 128)
+                 p->mcast.ttl = 128;
+-        } else if (!strcmp(token, "default")) {
++        } else if (!strcasecmp(token, "default")) {
+             p->options.default_parent = true;
+-        } else if (!strcmp(token, "round-robin")) {
++        } else if (!strcasecmp(token, "round-robin")) {
+             p->options.roundrobin = true;
+-        } else if (!strcmp(token, "weighted-round-robin")) {
++        } else if (!strcasecmp(token, "weighted-round-robin")) {
+             p->options.weighted_roundrobin = true;
+ #if USE_HTCP
+-        } else if (!strcmp(token, "htcp")) {
++        } else if (!strcasecmp(token, "htcp")) {
+             p->options.htcp = true;
+-        } else if (!strncmp(token, "htcp=", 5) || !strncmp(token, "htcp-", 5)) {
++        } else if (!strncasecmp(token, "htcp=", 5) || !strncmp(token, "htcp-", 5)) {
+             /* Note: The htcp- form is deprecated, replaced by htcp= */
+             p->options.htcp = true;
+             char *tmp = xstrdup(token+5);
+@@ -2147,19 +2147,19 @@ parse_peer(CachePeer ** head)
+                     *nextmode = '\0';
+                     ++nextmode;
+                 }
+-                if (!strcmp(mode, "no-clr")) {
++                if (!strcasecmp(mode, "no-clr")) {
+                     if (p->options.htcp_only_clr)
+                         fatalf("parse_peer: can't set htcp-no-clr and htcp-only-clr simultaneously");
+                     p->options.htcp_no_clr = true;
+-                } else if (!strcmp(mode, "no-purge-clr")) {
++                } else if (!strcasecmp(mode, "no-purge-clr")) {
+                     p->options.htcp_no_purge_clr = true;
+-                } else if (!strcmp(mode, "only-clr")) {
++                } else if (!strcasecmp(mode, "only-clr")) {
+                     if (p->options.htcp_no_clr)
+                         fatalf("parse_peer: can't set htcp no-clr and only-clr simultaneously");
+                     p->options.htcp_only_clr = true;
+-                } else if (!strcmp(mode, "forward-clr")) {
++                } else if (!strcasecmp(mode, "forward-clr")) {
+                     p->options.htcp_forward_clr = true;
+-                } else if (!strcmp(mode, "oldsquid")) {
++                } else if (!strcasecmp(mode, "oldsquid")) {
+                     p->options.htcp_oldsquid = true;
+                 } else {
+                     fatalf("invalid HTCP mode '%s'", mode);
+@@ -2167,15 +2167,15 @@ parse_peer(CachePeer ** head)
+             }
+             safe_free(tmp);
+ #endif
+-        } else if (!strcmp(token, "no-netdb-exchange")) {
++        } else if (!strcasecmp(token, "no-netdb-exchange")) {
+             p->options.no_netdb_exchange = true;
+ 
+-        } else if (!strcmp(token, "carp")) {
++        } else if (!strcasecmp(token, "carp")) {
+             if (p->type != PEER_PARENT)
+                 fatalf("parse_peer: non-parent carp peer %s/%d\n", p->host, p->http_port);
+ 
+             p->options.carp = true;
+-        } else if (!strncmp(token, "carp-key=", 9)) {
++        } else if (!strncasecmp(token, "carp-key=", 9)) {
+             if (p->options.carp != true)
+                 fatalf("parse_peer: carp-key specified on non-carp peer %s/%d\n", p->host, p->http_port);
+             p->options.carp_key.set = true;
+@@ -2183,21 +2183,21 @@ parse_peer(CachePeer ** head)
+             for (; key; key = nextkey) {
+                 nextkey=strchr(key,',');
+                 if (nextkey) ++nextkey; // skip the comma, any
+-                if (0==strncmp(key,"scheme",6)) {
++                if (0==strncasecmp(key,"scheme",6)) {
+                     p->options.carp_key.scheme = true;
+-                } else if (0==strncmp(key,"host",4)) {
++                } else if (0==strncasecmp(key,"host",4)) {
+                     p->options.carp_key.host = true;
+-                } else if (0==strncmp(key,"port",4)) {
++                } else if (0==strncasecmp(key,"port",4)) {
+                     p->options.carp_key.port = true;
+-                } else if (0==strncmp(key,"path",4)) {
++                } else if (0==strncasecmp(key,"path",4)) {
+                     p->options.carp_key.path = true;
+-                } else if (0==strncmp(key,"params",6)) {
++                } else if (0==strncasecmp(key,"params",6)) {
+                     p->options.carp_key.params = true;
+                 } else {
+                     fatalf("invalid carp-key '%s'",key);
+                 }
+             }
+-        } else if (!strcmp(token, "userhash")) {
++        } else if (!strcasecmp(token, "userhash")) {
+ #if USE_AUTH
+             if (p->type != PEER_PARENT)
+                 fatalf("parse_peer: non-parent userhash peer %s/%d\n", p->host, p->http_port);
+@@ -2206,44 +2206,44 @@ parse_peer(CachePeer ** head)
+ #else
+             fatalf("parse_peer: userhash requires authentication. peer %s/%d\n", p->host, p->http_port);
+ #endif
+-        } else if (!strcmp(token, "sourcehash")) {
++        } else if (!strcasecmp(token, "sourcehash")) {
+             if (p->type != PEER_PARENT)
+                 fatalf("parse_peer: non-parent sourcehash peer %s/%d\n", p->host, p->http_port);
+ 
+             p->options.sourcehash = true;
+ 
+-        } else if (!strcmp(token, "no-delay")) {
++        } else if (!strcasecmp(token, "no-delay")) {
+ #if USE_DELAY_POOLS
+             p->options.no_delay = true;
+ #else
+             debugs(0, DBG_CRITICAL, "WARNING: cache_peer option 'no-delay' requires --enable-delay-pools");
+ #endif
+-        } else if (!strncmp(token, "login=", 6)) {
++        } else if (!strncasecmp(token, "login=", 6)) {
+             p->login = xstrdup(token + 6);
+             rfc1738_unescape(p->login);
+-        } else if (!strncmp(token, "connect-timeout=", 16)) {
++        } else if (!strncasecmp(token, "connect-timeout=", 16)) {
+             p->connect_timeout = xatoi(token + 16);
+-        } else if (!strncmp(token, "connect-fail-limit=", 19)) {
++        } else if (!strncasecmp(token, "connect-fail-limit=", 19)) {
+             p->connect_fail_limit = xatoi(token + 19);
+ #if USE_CACHE_DIGESTS
+-        } else if (!strncmp(token, "digest-url=", 11)) {
++        } else if (!strncasecmp(token, "digest-url=", 11)) {
+             p->digest_url = xstrdup(token + 11);
+ #endif
+ 
+-        } else if (!strcmp(token, "allow-miss")) {
++        } else if (!strcasecmp(token, "allow-miss")) {
+             p->options.allow_miss = true;
+-        } else if (!strncmp(token, "max-conn=", 9)) {
++        } else if (!strncasecmp(token, "max-conn=", 9)) {
+             p->max_conn = xatoi(token + 9);
+-        } else if (!strncmp(token, "standby=", 8)) {
++        } else if (!strncasecmp(token, "standby=", 8)) {
+             p->standby.limit = xatoi(token + 8);
+-        } else if (!strcmp(token, "originserver")) {
++        } else if (!strcasecmp(token, "originserver")) {
+             p->options.originserver = true;
+-        } else if (!strncmp(token, "name=", 5)) {
++        } else if (!strncasecmp(token, "name=", 5)) {
+             safe_free(p->name);
+ 
+             if (token[5])
+                 p->name = xstrdup(token + 5);
+-        } else if (!strncmp(token, "forceddomain=", 13)) {
++        } else if (!strncasecmp(token, "forceddomain=", 13)) {
+             safe_free(p->domain);
+ 
+             if (token[13])
+@@ -2601,14 +2601,14 @@ parse_onoff(int *var)
+     if (token == NULL)
+         self_destruct();
+ 
+-    if (!strcmp(token, "on")) {
++    if (!strcasecmp(token, "on")) {
+         *var = 1;
+-    } else if (!strcmp(token, "enable")) {
++    } else if (!strcasecmp(token, "enable")) {
+         debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'enable' is deprecated. Please update to use 'on'.");
+         *var = 1;
+-    } else if (!strcmp(token, "off")) {
++    } else if (!strcasecmp(token, "off")) {
+         *var = 0;
+-    } else if (!strcmp(token, "disable")) {
++    } else if (!strcasecmp(token, "disable")) {
+         debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'disable' is deprecated. Please update to use 'off'.");
+         *var = 0;
+     } else {
+@@ -2642,16 +2642,16 @@ parse_tristate(int *var)
+     if (token == NULL)
+         self_destruct();
+ 
+-    if (!strcmp(token, "on")) {
++    if (!strcasecmp(token, "on")) {
+         *var = 1;
+-    } else if (!strcmp(token, "enable")) {
++    } else if (!strcasecmp(token, "enable")) {
+         debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'enable' is deprecated. Please update to use value 'on'.");
+         *var = 1;
+-    } else if (!strcmp(token, "warn")) {
++    } else if (!strcasecmp(token, "warn")) {
+         *var = -1;
+-    } else if (!strcmp(token, "off")) {
++    } else if (!strcasecmp(token, "off")) {
+         *var = 0;
+-    } else if (!strcmp(token, "disable")) {
++    } else if (!strcasecmp(token, "disable")) {
+         debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'disable' is deprecated. Please update to use value 'off'.");
+         *var = 0;
+     } else {
+@@ -3249,15 +3249,15 @@ parse_uri_whitespace(int *var)
+     if (token == NULL)
+         self_destruct();
+ 
+-    if (!strcmp(token, "strip"))
++    if (!strcasecmp(token, "strip"))
+         *var = URI_WHITESPACE_STRIP;
+-    else if (!strcmp(token, "deny"))
++    else if (!strcasecmp(token, "deny"))
+         *var = URI_WHITESPACE_DENY;
+-    else if (!strcmp(token, "allow"))
++    else if (!strcasecmp(token, "allow"))
+         *var = URI_WHITESPACE_ALLOW;
+-    else if (!strcmp(token, "encode"))
++    else if (!strcasecmp(token, "encode"))
+         *var = URI_WHITESPACE_ENCODE;
+-    else if (!strcmp(token, "chop"))
++    else if (!strcasecmp(token, "chop"))
+         *var = URI_WHITESPACE_CHOP;
+     else {
+         debugs(0, DBG_PARSE_NOTE(2), "ERROR: Invalid option '" << token << "': 'uri_whitespace' accepts 'strip', 'deny', 'allow', 'encode', and 'chop'.");
+@@ -3399,19 +3399,19 @@ dump_memcachemode(StoreEntry * entry, const char *name, SquidConfig &config)
+ peer_t
+ parseNeighborType(const char *s)
+ {
+-    if (!strcmp(s, "parent"))
++    if (!strcasecmp(s, "parent"))
+         return PEER_PARENT;
+ 
+-    if (!strcmp(s, "neighbor"))
++    if (!strcasecmp(s, "neighbor"))
+         return PEER_SIBLING;
+ 
+-    if (!strcmp(s, "neighbour"))
++    if (!strcasecmp(s, "neighbour"))
+         return PEER_SIBLING;
+ 
+-    if (!strcmp(s, "sibling"))
++    if (!strcasecmp(s, "sibling"))
+         return PEER_SIBLING;
+ 
+-    if (!strcmp(s, "multicast"))
++    if (!strcasecmp(s, "multicast"))
+         return PEER_MULTICAST;
+ 
+     debugs(15, DBG_CRITICAL, "WARNING: Unknown neighbor type: " << s);
+@@ -3689,11 +3689,11 @@ parse_port_option(AnyP::PortCfgPointer &s, char *token)
+     } else if (strcmp(token, "connection-auth=on") == 0) {
+         s->connection_auth_disabled = false;
+     } else if (strncmp(token, "disable-pmtu-discovery=", 23) == 0) {
+-        if (!strcmp(token + 23, "off"))
++        if (!strcasecmp(token + 23, "off"))
+             s->disable_pmtu_discovery = DISABLE_PMTU_OFF;
+-        else if (!strcmp(token + 23, "transparent"))
++        else if (!strcasecmp(token + 23, "transparent"))
+             s->disable_pmtu_discovery = DISABLE_PMTU_TRANSPARENT;
+-        else if (!strcmp(token + 23, "always"))
++        else if (!strcasecmp(token + 23, "always"))
+             s->disable_pmtu_discovery = DISABLE_PMTU_ALWAYS;
+         else
+             self_destruct();
+@@ -3719,7 +3719,7 @@ parse_port_option(AnyP::PortCfgPointer &s, char *token)
+             s->tcp_keepalive.timeout = xatoui(t);
+         }
+ #if USE_OPENSSL
+-    } else if (strcmp(token, "sslBump") == 0) {
++    } else if (strcasecmp(token, "sslBump") == 0) {
+         debugs(3, DBG_CRITICAL, "WARNING: '" << token << "' is deprecated " <<
+                "in " << cfg_directive << ". Use 'ssl-bump' instead.");
+         s->flags.tunnelSslBumping = true;
+diff --git a/src/dns_internal.cc b/src/dns_internal.cc
+index 699301e..ef0644d 100644
+--- a/src/dns_internal.cc
++++ b/src/dns_internal.cc
+@@ -396,7 +396,7 @@ idnsParseResolvConf(void)
+ 
+         if (NULL == t) {
+             continue;
+-        } else if (strcmp(t, "nameserver") == 0) {
++        } else if (strcasecmp(t, "nameserver") == 0) {
+             t = strtok(NULL, w_space);
+ 
+             if (NULL == t)
+@@ -406,7 +406,7 @@ idnsParseResolvConf(void)
+ 
+             idnsAddNameserver(t);
+             result = true;
+-        } else if (strcmp(t, "domain") == 0) {
++        } else if (strcasecmp(t, "domain") == 0) {
+             idnsFreeSearchpath();
+             t = strtok(NULL, w_space);
+ 
+@@ -416,7 +416,7 @@ idnsParseResolvConf(void)
+             debugs(78, DBG_IMPORTANT, "Adding domain " << t << " from " << _PATH_RESCONF);
+ 
+             idnsAddPathComponent(t);
+-        } else if (strcmp(t, "search") == 0) {
++        } else if (strcasecmp(t, "search") == 0) {
+             idnsFreeSearchpath();
+             while (NULL != t) {
+                 t = strtok(NULL, w_space);
+@@ -428,7 +428,7 @@ idnsParseResolvConf(void)
+ 
+                 idnsAddPathComponent(t);
+             }
+-        } else if (strcmp(t, "options") == 0) {
++        } else if (strcasecmp(t, "options") == 0) {
+             while (NULL != t) {
+                 t = strtok(NULL, w_space);
+ 
+diff --git a/tools/cachemgr.cc b/tools/cachemgr.cc
+index 8c7729e..1ec4e15 100644
+--- a/tools/cachemgr.cc
++++ b/tools/cachemgr.cc
+@@ -1018,23 +1018,23 @@ read_request(void)
+ 
+         rfc1738_unescape(q);
+ 
+-        if (0 == strcmp(t, "server") && strlen(q))
++        if (0 == strcasecmp(t, "server") && strlen(q))
+             req->server = xstrdup(q);
+-        else if (0 == strcmp(t, "host") && strlen(q))
++        else if (0 == strcasecmp(t, "host") && strlen(q))
+             req->hostname = xstrdup(q);
+-        else if (0 == strcmp(t, "port") && strlen(q))
++        else if (0 == strcasecmp(t, "port") && strlen(q))
+             req->port = atoi(q);
+-        else if (0 == strcmp(t, "user_name") && strlen(q))
++        else if (0 == strcasecmp(t, "user_name") && strlen(q))
+             req->user_name = xstrdup(q);
+-        else if (0 == strcmp(t, "passwd") && strlen(q))
++        else if (0 == strcasecmp(t, "passwd") && strlen(q))
+             req->passwd = xstrdup(q);
+-        else if (0 == strcmp(t, "auth") && strlen(q))
++        else if (0 == strcasecmp(t, "auth") && strlen(q))
+             req->pub_auth = xstrdup(q), decode_pub_auth(req);
+-        else if (0 == strcmp(t, "operation"))
++        else if (0 == strcasecmp(t, "operation"))
+             req->action = xstrdup(q);
+-        else if (0 == strcmp(t, "workers") && strlen(q))
++        else if (0 == strcasecmp(t, "workers") && strlen(q))
+             req->workers = xstrdup(q);
+-        else if (0 == strcmp(t, "processes") && strlen(q))
++        else if (0 == strcasecmp(t, "processes") && strlen(q))
+             req->processes = xstrdup(q);
+     }
+     safe_free(t);
+@@ -1254,7 +1254,7 @@ check_target_acl(const char *hostname, int port)
+             if (strcmp(token, "*") == 0)
+ 
+                 ;   /* Wildcard port specification */
+-            else if (strcmp(token, "any") == 0)
++            else if (strcasecmp(token, "any") == 0)
+ 
+                 ;   /* Wildcard port specification */
+             else if (sscanf(token, "%d", &i) != 1)
diff --git a/SOURCES/squid-3.5.20.tar.xz.asc b/SOURCES/squid-3.5.20.tar.xz.asc
new file mode 100644
index 0000000..0854c49
--- /dev/null
+++ b/SOURCES/squid-3.5.20.tar.xz.asc
@@ -0,0 +1,20 @@
+File: squid-3.5.20.tar.xz
+Date: Fri Jul  1 13:49:42 UTC 2016
+Size: 2319780
+MD5 : 48fb18679a30606de98882528beab3a7
+SHA1: 2bb6d3568e7167c9b99fea092a97287d0e430863
+Key : 0xFF5CF463 <squid3@treenet.co.nz>
+      fingerprint = EA31 CC5E 9488 E516 8D2D  CC5E B268 E706 FF5C F463
+      keyring = http://www.squid-cache.org/pgp.asc
+      keyserver = subkeys.pgp.net
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAABAgAGBQJXdnW5AAoJELJo5wb/XPRjqzsH+wXT0yt47aqoGWI8D1YpRaW5
+KPYvJdos0zPfgIPFWXxngH+ZpJcSPD21QuiEPS8BqISxm+/+By+0QIljITnHWFOV
+/wo1nwL/IMissmD+9bksyBede+BsZdz1PSwl9V1MzvuGL4vwOC0UZD9RT9RYvMwj
+Exfw80v/01bAVpV8U3tsBodk4Rz3AWIHhH2Tf9O2EZ/pIAtEHtDbkdLk81rSwNED
+tL6yV/n+BoWgAPg/+YPVGRK/h5nD4tBkTD6YBCnxp5PJmybhvAjLr/J96PtPpHdC
+or7Vx1lVpKvkXwZjn936+v4pqv19lsvKs5zLtGKBG2wMmoSIo2bf/bGhhT5kBDc=
+=znHp
+-----END PGP SIGNATURE-----
diff --git a/SOURCES/squid-CVE-2016-4051.patch b/SOURCES/squid-CVE-2016-4051.patch
deleted file mode 100644
index cb6e6de..0000000
--- a/SOURCES/squid-CVE-2016-4051.patch
+++ /dev/null
@@ -1,1700 +0,0 @@
-------------------------------------------------------------
-revno: 12695
-revision-id: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax
-parent: squid3@treenet.co.nz-20160330141606-19rqzzip0grq9a77
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.3
-timestamp: Wed 2016-04-20 18:42:59 +1200
-message:
-  cachemgr.cgi: use dynamic MemBuf for internal content generation
-  
-  Using a fixed size buffer limits how big content lines can be. Modern
-  HTTP is fast reaching the point where such limits are problematic.
-  Also fixes incorrect uses of snprintf() by removing them.
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# testament_sha1: 0c7cd2d0ababe794c0fd5b1dc94c647c064c122d
-# timestamp: 2016-04-20 06:50:48 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# base_revision_id: squid3@treenet.co.nz-20160330141606-\
-#   19rqzzip0grq9a77
-# 
-# Begin patch
-=== modified file 'src/tests/Stub.list'
---- src/tests/Stub.list	2014-10-08 15:31:39 +0000
-+++ src/tests/Stub.list	2016-04-20 06:42:59 +0000
-@@ -3,6 +3,7 @@
- 	tests/stub_acl.cc \
- 	tests/stub_cache_cf.cc \
- 	tests/stub_cache_manager.cc \
-+	tests/stub_cbdata.cc \
- 	tests/stub_client_db.cc \
- 	tests/stub_client_side_request.cc \
- 	tests/stub_comm.cc \
-
-=== added file 'src/tests/stub_cbdata.cc'
---- src/tests/stub_cbdata.cc	1970-01-01 00:00:00 +0000
-+++ src/tests/stub_cbdata.cc	2016-04-20 06:42:59 +0000
-@@ -0,0 +1,30 @@
-+#include "squid.h"
-+#include "cbdata.h"
-+
-+#define STUB_API "cbdata.cc"
-+#include "tests/STUB.h"
-+
-+void cbdataRegisterWithCacheManager(void) STUB
-+void *cbdataInternalAlloc(cbdata_type type, const char *, int sz) {
-+    return xcalloc(1, sz);
-+}
-+void *cbdataInternalFree(void *p, const char *, int) {
-+    xfree(p);
-+    return nullptr;
-+}
-+#if USE_CBDATA_DEBUG
-+void *cbdataInternalAllocDbg(cbdata_type type, const char *, int) STUB_RETVAL(NULL)
-+void *cbdataInternalFreeDbg(void *p, const char *, int) STUB_RETVAL(NULL)
-+void cbdataInternalLockDbg(const void *p, const char *, int) STUB
-+void cbdataInternalUnlockDbg(const void *p, const char *, int) STUB
-+int cbdataInternalReferenceDoneValidDbg(void **p, void **tp, const char *, int) STUB_RETVAL(0)
-+#else
-+void *cbdataInternalAlloc(cbdata_type type) STUB_RETVAL(NULL)
-+void *cbdataInternalFree(void *p) STUB_RETVAL(NULL)
-+void cbdataInternalLock(const void *p) STUB
-+void cbdataInternalUnlock(const void *p) STUB
-+int cbdataInternalReferenceDoneValid(void **p, void **tp) STUB_RETVAL(0)
-+#endif
-+
-+int cbdataReferenceValid(const void *p) STUB_RETVAL(0)
-+cbdata_type cbdataInternalAddType(cbdata_type type, const char *label, int size, FREE * free_func) STUB_RETVAL(CBDATA_UNKNOWN)
-
-=== modified file 'src/tests/stub_mem.cc'
---- src/tests/stub_mem.cc	2012-08-29 07:29:35 +0000
-+++ src/tests/stub_mem.cc	2016-04-20 06:42:59 +0000
-@@ -5,7 +5,7 @@
- #include "squid.h"
- 
- #define STUB_API "stub_mem.cc"
--#include "STUB.h"
-+#include "tests/STUB.h"
- #include "Mem.h"
- 
- void
-
-=== modified file 'tools/Makefile.am'
---- tools/Makefile.am	2010-12-06 14:06:06 +0000
-+++ tools/Makefile.am	2016-04-20 06:42:59 +0000
-@@ -34,15 +34,24 @@
- stub_debug.cc: $(top_srcdir)/src/tests/stub_debug.cc
- 	cp $(top_srcdir)/src/tests/stub_debug.cc .
- 
-+MemBuf.cc: $(top_srcdir)/src/MemBuf.cc
-+	cp $(top_srcdir)/src/MemBuf.cc $@
-+
- time.cc: $(top_srcdir)/src/time.cc
- 	cp $(top_srcdir)/src/time.cc .
- 
-+stub_cbdata.cc: $(top_srcdir)/src/tests/stub_cbdata.cc
-+	cp $(top_srcdir)/src/tests/stub_cbdata.cc $@
-+
-+stub_mem.cc: $(top_srcdir)/src/tests/stub_mem.cc
-+	cp $(top_srcdir)/src/tests/stub_mem.cc $@
-+
- # stock tools for unit tests - library independent versions of dlink_list
- # etc.
- # globals.cc is needed by test_tools.cc.
- # Neither of these should be disted from here.
- TESTSOURCES= test_tools.cc
--CLEANFILES += test_tools.cc stub_debug.cc time.cc
-+CLEANFILES += test_tools.cc MemBuf.cc stub_debug.cc time.cc stub_cbdata.cc stub_mem.cc
- 
- ## ##### helper-mux #####
- 
-@@ -73,7 +82,10 @@
- libexec_PROGRAMS = cachemgr$(CGIEXT)
- 
- cachemgr__CGIEXT__SOURCES = cachemgr.cc \
-+	MemBuf.cc \
-+	stub_cbdata.cc \
- 	stub_debug.cc \
-+	stub_mem.cc \
- 	test_tools.cc \
- 	time.cc
- 
-
-=== modified file 'tools/cachemgr.cc'
---- tools/cachemgr.cc	2013-09-09 07:17:19 +0000
-+++ tools/cachemgr.cc	2016-04-20 06:42:59 +0000
-@@ -35,6 +35,7 @@
- #include "getfullhostname.h"
- #include "html_quote.h"
- #include "ip/Address.h"
-+#include "MemBuf.h"
- #include "rfc1123.h"
- #include "rfc1738.h"
- #include "util.h"
-@@ -460,8 +461,8 @@
-     return url;
- }
- 
--static const char *
--munge_menu_line(const char *buf, cachemgr_request * req)
-+static void
-+munge_menu_line(MemBuf &out, const char *buf, cachemgr_request * req)
- {
-     char *x;
-     const char *a;
-@@ -469,15 +470,14 @@
-     const char *p;
-     char *a_url;
-     char *buf_copy;
--    static char html[2 * 1024];
--
--    if (strlen(buf) < 1)
--        return buf;
--
--    if (*buf != ' ')
--        return buf;
--
--    buf_copy = x = xstrdup(buf);
-+
-+    const char bufLen = strlen(buf);
-+    if (bufLen < 1 || *buf != ' ') {
-+        out.append(buf, bufLen);
-+        return;
-+    }
-+
-+    buf_copy = x = xstrndup(buf, bufLen);
- 
-     a = xstrtok(&x, '\t');
- 
-@@ -489,59 +489,56 @@
- 
-     /* no reason to give a url for a disabled action */
-     if (!strcmp(p, "disabled"))
--        snprintf(html, sizeof(html), "<LI type=\"circle\">%s (disabled)<A HREF=\"%s\">.</A>\n", d, a_url);
-+        out.Printf("<LI type=\"circle\">%s (disabled)<A HREF=\"%s\">.</A>\n", d, a_url);
-     else
-         /* disable a hidden action (requires a password, but password is not in squid.conf) */
-         if (!strcmp(p, "hidden"))
--            snprintf(html, sizeof(html), "<LI type=\"circle\">%s (hidden)<A HREF=\"%s\">.</A>\n", d, a_url);
-+            out.Printf("<LI type=\"circle\">%s (hidden)<A HREF=\"%s\">.</A>\n", d, a_url);
-         else
-             /* disable link if authentication is required and we have no password */
-             if (!strcmp(p, "protected") && !req->passwd)
--                snprintf(html, sizeof(html), "<LI type=\"circle\">%s (requires <a href=\"%s\">authentication</a>)<A HREF=\"%s\">.</A>\n",
--                         d, menu_url(req, "authenticate"), a_url);
-+                out.Printf("<LI type=\"circle\">%s (requires <a href=\"%s\">authentication</a>)<A HREF=\"%s\">.</A>\n",
-+                           d, menu_url(req, "authenticate"), a_url);
-             else
-                 /* highlight protected but probably available entries */
-                 if (!strcmp(p, "protected"))
--                    snprintf(html, sizeof(html), "<LI type=\"square\"><A HREF=\"%s\"><font color=\"#FF0000\">%s</font></A>\n",
--                             a_url, d);
-+                    out.Printf("<LI type=\"square\"><A HREF=\"%s\"><font color=\"#FF0000\">%s</font></A>\n",
-+                               a_url, d);
- 
-     /* public entry or unknown type of protection */
-                 else
--                    snprintf(html, sizeof(html), "<LI type=\"disk\"><A HREF=\"%s\">%s</A>\n", a_url, d);
-+                    out.Printf("<LI type=\"disk\"><A HREF=\"%s\">%s</A>\n", a_url, d);
- 
-     xfree(a_url);
- 
-     xfree(buf_copy);
--
--    return html;
- }
- 
--static const char *
--munge_other_line(const char *buf, cachemgr_request * req)
-+static void
-+munge_other_line(MemBuf &out, const char *buf, cachemgr_request *)
- {
-     static const char *ttags[] = {"td", "th"};
- 
--    static char html[4096];
-     static int table_line_num = 0;
-     static int next_is_header = 0;
-     int is_header = 0;
-     const char *ttag;
-     char *buf_copy;
-     char *x, *p;
--    int l = 0;
-     /* does it look like a table? */
- 
-     if (!strchr(buf, '\t') || *buf == '\t') {
-         /* nope, just text */
--        snprintf(html, sizeof(html), "%s%s",
--                 table_line_num ? "</table>\n<pre>" : "", html_quote(buf));
-+        if (table_line_num)
-+            out.append("</table>\n<pre>", 14);
-+        out.Printf("%s", html_quote(buf));
-         table_line_num = 0;
--        return html;
-+        return;
-     }
- 
-     /* start html table */
-     if (!table_line_num) {
--        l += snprintf(html + l, sizeof(html) - l, "</pre><table cellpadding=\"2\" cellspacing=\"1\">\n");
-+        out.append("</pre><table cellpadding=\"2\" cellspacing=\"1\">\n", 46);
-         next_is_header = 0;
-     }
- 
-@@ -551,7 +548,7 @@
-     ttag = ttags[is_header];
- 
-     /* record starts */
--    l += snprintf(html + l, sizeof(html) - l, "<tr>");
-+    out.append("<tr>", 4);
- 
-     /* substitute '\t' */
-     buf_copy = x = xstrdup(buf);
-@@ -568,18 +565,17 @@
-             ++x;
-         }
- 
--        l += snprintf(html + l, sizeof(html) - l, "<%s colspan=\"%d\" align=\"%s\">%s</%s>",
--                      ttag, column_span,
--                      is_header ? "center" : is_number(cell) ? "right" : "left",
--                      html_quote(cell), ttag);
-+        out.Printf("<%s colspan=\"%d\" align=\"%s\">%s</%s>",
-+                   ttag, column_span,
-+                   is_header ? "center" : is_number(cell) ? "right" : "left",
-+                   html_quote(cell), ttag);
-     }
- 
-     xfree(buf_copy);
-     /* record ends */
--    snprintf(html + l, sizeof(html) - l, "</tr>\n");
-+    out.append("</tr>\n", 6);
-     next_is_header = is_header && strstr(buf, "\t\t");
-     ++table_line_num;
--    return html;
- }
- 
- static const char *
-@@ -736,14 +732,18 @@
-             /* yes, fall through, we do not want to loose the first line */
- 
-         case isBody:
-+        {
-             /* interpret [and reformat] cache response */
--
-+            MemBuf out;
-+            out.init();
-             if (parse_menu)
--                fputs(munge_menu_line(buf, req), stdout);
-+                munge_menu_line(out, buf, req);
-             else
--                fputs(munge_other_line(buf, req), stdout);
-+                munge_other_line(out, buf, req);
- 
--            break;
-+            fputs(out.buf, stdout);
-+        }
-+        break;
- 
-         case isForward:
-             /* forward: no modifications allowed */
-
-------------------------------------------------------------
-revno: 12696
-revision-id: squid3@treenet.co.nz-20160420101500-nm50i4u3iftemzs6
-parent: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.3
-timestamp: Wed 2016-04-20 22:15:00 +1200
-message:
-  nullptr is a C++11 feature
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20160420101500-nm50i4u3iftemzs6
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# testament_sha1: 091f2aa4b835390972c0f42e67128484d653c2ee
-# timestamp: 2016-04-20 10:50:54 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# base_revision_id: squid3@treenet.co.nz-20160420064259-\
-#   k9dn77q0xna1doax
-# 
-# Begin patch
-=== modified file 'src/tests/stub_cbdata.cc'
---- src/tests/stub_cbdata.cc	2016-04-20 06:42:59 +0000
-+++ src/tests/stub_cbdata.cc	2016-04-20 10:15:00 +0000
-@@ -10,7 +10,7 @@
- }
- void *cbdataInternalFree(void *p, const char *, int) {
-     xfree(p);
--    return nullptr;
-+    return NULL;
- }
- #if USE_CBDATA_DEBUG
- void *cbdataInternalAllocDbg(cbdata_type type, const char *, int) STUB_RETVAL(NULL)
-diff --git tools/Makefile.in tools/Makefile.in
-index 7380540..1c951fc 100644
---- tools/Makefile.in
-+++ tools/Makefile.in
-@@ -1,9 +1,8 @@
--# Makefile.in generated by automake 1.11.1 from Makefile.am.
-+# Makefile.in generated by automake 1.15 from Makefile.am.
- # @configure_input@
- 
--# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
--# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
--# Inc.
-+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-+
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -23,6 +22,61 @@
- 
- 
- VPATH = @srcdir@
-+am__is_gnu_make = { \
-+  if test -z '$(MAKELEVEL)'; then \
-+    false; \
-+  elif test -n '$(MAKE_HOST)'; then \
-+    true; \
-+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-+    true; \
-+  else \
-+    false; \
-+  fi; \
-+}
-+am__make_running_with_option = \
-+  case $${target_option-} in \
-+      ?) ;; \
-+      *) echo "am__make_running_with_option: internal error: invalid" \
-+              "target option '$${target_option-}' specified" >&2; \
-+         exit 1;; \
-+  esac; \
-+  has_opt=no; \
-+  sane_makeflags=$$MAKEFLAGS; \
-+  if $(am__is_gnu_make); then \
-+    sane_makeflags=$$MFLAGS; \
-+  else \
-+    case $$MAKEFLAGS in \
-+      *\\[\ \	]*) \
-+        bs=\\; \
-+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-+    esac; \
-+  fi; \
-+  skip_next=no; \
-+  strip_trailopt () \
-+  { \
-+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-+  }; \
-+  for flg in $$sane_makeflags; do \
-+    test $$skip_next = yes && { skip_next=no; continue; }; \
-+    case $$flg in \
-+      *=*|--*) continue;; \
-+        -*I) strip_trailopt 'I'; skip_next=yes;; \
-+      -*I?*) strip_trailopt 'I';; \
-+        -*O) strip_trailopt 'O'; skip_next=yes;; \
-+      -*O?*) strip_trailopt 'O';; \
-+        -*l) strip_trailopt 'l'; skip_next=yes;; \
-+      -*l?*) strip_trailopt 'l';; \
-+      -[dEDm]) skip_next=yes;; \
-+      -[JT]) skip_next=yes;; \
-+    esac; \
-+    case $$flg in \
-+      *$$target_option*) has_opt=yes; break;; \
-+    esac; \
-+  done; \
-+  test $$has_opt = yes
-+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
- pkgdatadir = $(datadir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
-@@ -41,9 +95,6 @@ PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
--DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
--	$(top_srcdir)/doc/manuals/Substitute.am \
--	$(top_srcdir)/src/Common.am
- check_PROGRAMS =
- TESTS =
- @USE_LOADABLE_MODULES_TRUE@am__append_1 = $(INCLTDL)
-@@ -63,6 +114,7 @@ am__aclocal_m4_deps = $(top_srcdir)/acinclude/init.m4 \
- 	$(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- 	$(ACLOCAL_M4)
-+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
- mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/include/autoconf.h
- CONFIG_CLEAN_FILES =
-@@ -72,7 +124,10 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \
- 	"$(DESTDIR)$(man8dir)"
- PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS)
- am_cachemgr__CGIEXT__OBJECTS = cachemgr__CGIEXT_-cachemgr.$(OBJEXT) \
-+	cachemgr__CGIEXT_-MemBuf.$(OBJEXT) \
-+	cachemgr__CGIEXT_-stub_cbdata.$(OBJEXT) \
- 	cachemgr__CGIEXT_-stub_debug.$(OBJEXT) \
-+	cachemgr__CGIEXT_-stub_mem.$(OBJEXT) \
- 	cachemgr__CGIEXT_-test_tools.$(OBJEXT) \
- 	cachemgr__CGIEXT_-time.$(OBJEXT)
- cachemgr__CGIEXT__OBJECTS = $(am_cachemgr__CGIEXT__OBJECTS)
-@@ -84,8 +139,12 @@ cachemgr__CGIEXT__DEPENDENCIES = $(top_builddir)/src/ip/libip.la \
- 	$(top_builddir)/lib/libmiscencoding.la \
- 	$(top_builddir)/lib/libmiscutil.la $(am__DEPENDENCIES_2) \
- 	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3)
--cachemgr__CGIEXT__LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
--	$(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-+AM_V_lt = $(am__v_lt_@AM_V@)
-+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-+am__v_lt_0 = --silent
-+am__v_lt_1 = 
-+cachemgr__CGIEXT__LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
- 	$(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
- 	$(LDFLAGS) -o $@
- am_squidclient_OBJECTS = squidclient.$(OBJEXT) stub_debug.$(OBJEXT) \
-@@ -117,43 +176,272 @@ am__nobase_list = $(am__nobase_strip_setup); \
- am__base_list = \
-   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-+am__uninstall_files_from_dir = { \
-+  test -z "$$files" \
-+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-+         $(am__cd) "$$dir" && rm -f $$files; }; \
-+  }
- SCRIPTS = $(libexec_SCRIPTS)
-+AM_V_P = $(am__v_P_@AM_V@)
-+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-+am__v_P_0 = false
-+am__v_P_1 = :
-+AM_V_GEN = $(am__v_GEN_@AM_V@)
-+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-+am__v_GEN_0 = @echo "  GEN     " $@;
-+am__v_GEN_1 = 
-+AM_V_at = $(am__v_at_@AM_V@)
-+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-+am__v_at_0 = @
-+am__v_at_1 = 
- DEFAULT_INCLUDES = 
- depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
- am__depfiles_maybe = depfiles
- am__mv = mv -f
- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
--LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-+	$(AM_CXXFLAGS) $(CXXFLAGS)
-+AM_V_CXX = $(am__v_CXX_@AM_V@)
-+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-+am__v_CXX_0 = @echo "  CXX     " $@;
-+am__v_CXX_1 = 
- CXXLD = $(CXX)
--CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
--	$(LDFLAGS) -o $@
-+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-+am__v_CXXLD_1 = 
- SOURCES = $(cachemgr__CGIEXT__SOURCES) $(squidclient_SOURCES)
- DIST_SOURCES = $(cachemgr__CGIEXT__SOURCES) $(squidclient_SOURCES)
--RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
--	html-recursive info-recursive install-data-recursive \
--	install-dvi-recursive install-exec-recursive \
--	install-html-recursive install-info-recursive \
--	install-pdf-recursive install-ps-recursive install-recursive \
--	installcheck-recursive installdirs-recursive pdf-recursive \
--	ps-recursive uninstall-recursive
-+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-+	ctags-recursive dvi-recursive html-recursive info-recursive \
-+	install-data-recursive install-dvi-recursive \
-+	install-exec-recursive install-html-recursive \
-+	install-info-recursive install-pdf-recursive \
-+	install-ps-recursive install-recursive installcheck-recursive \
-+	installdirs-recursive pdf-recursive ps-recursive \
-+	tags-recursive uninstall-recursive
-+am__can_run_installinfo = \
-+  case $$AM_UPDATE_INFO_DIR in \
-+    n|no|NO) false;; \
-+    *) (install-info --version) >/dev/null 2>&1;; \
-+  esac
- man1dir = $(mandir)/man1
- man8dir = $(mandir)/man8
- NROFF = nroff
- MANS = $(man_MANS)
- RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-   distclean-recursive maintainer-clean-recursive
--AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
--	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
--	distdir
-+am__recursive_targets = \
-+  $(RECURSIVE_TARGETS) \
-+  $(RECURSIVE_CLEAN_TARGETS) \
-+  $(am__extra_recursive_targets)
-+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-+	check recheck distdir
-+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-+# Read a list of newline-separated strings from the standard input,
-+# and print each of them once, without duplicates.  Input order is
-+# *not* preserved.
-+am__uniquify_input = $(AWK) '\
-+  BEGIN { nonempty = 0; } \
-+  { items[$$0] = 1; nonempty = 1; } \
-+  END { if (nonempty) { for (i in items) print i; }; } \
-+'
-+# Make sure the list of sources is unique.  This is necessary because,
-+# e.g., the same source file might be shared among _SOURCES variables
-+# for different programs/libraries.
-+am__define_uniq_tagged_files = \
-+  list='$(am__tagged_files)'; \
-+  unique=`for i in $$list; do \
-+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+  done | $(am__uniquify_input)`
- ETAGS = etags
- CTAGS = ctags
--am__tty_colors = \
--red=; grn=; lgn=; blu=; std=
-+am__tty_colors_dummy = \
-+  mgn= red= grn= lgn= blu= brg= std=; \
-+  am__color_tests=no
-+am__tty_colors = { \
-+  $(am__tty_colors_dummy); \
-+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-+    am__color_tests=no; \
-+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-+    am__color_tests=yes; \
-+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-+    am__color_tests=yes; \
-+  fi; \
-+  if test $$am__color_tests = yes; then \
-+    red=''; \
-+    grn=''; \
-+    lgn=''; \
-+    blu=''; \
-+    mgn=''; \
-+    brg=''; \
-+    std=''; \
-+  fi; \
-+}
-+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-+# A command that, given a newline-separated list of test names on the
-+# standard input, print the name of the tests that are to be re-run
-+# upon "make recheck".
-+am__list_recheck_tests = $(AWK) '{ \
-+  recheck = 1; \
-+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-+    { \
-+      if (rc < 0) \
-+        { \
-+          if ((getline line2 < ($$0 ".log")) < 0) \
-+	    recheck = 0; \
-+          break; \
-+        } \
-+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-+        { \
-+          recheck = 0; \
-+          break; \
-+        } \
-+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-+        { \
-+          break; \
-+        } \
-+    }; \
-+  if (recheck) \
-+    print $$0; \
-+  close ($$0 ".trs"); \
-+  close ($$0 ".log"); \
-+}'
-+# A command that, given a newline-separated list of test names on the
-+# standard input, create the global log from their .trs and .log files.
-+am__create_global_log = $(AWK) ' \
-+function fatal(msg) \
-+{ \
-+  print "fatal: making $@: " msg | "cat >&2"; \
-+  exit 1; \
-+} \
-+function rst_section(header) \
-+{ \
-+  print header; \
-+  len = length(header); \
-+  for (i = 1; i <= len; i = i + 1) \
-+    printf "="; \
-+  printf "\n\n"; \
-+} \
-+{ \
-+  copy_in_global_log = 1; \
-+  global_test_result = "RUN"; \
-+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-+    { \
-+      if (rc < 0) \
-+         fatal("failed to read from " $$0 ".trs"); \
-+      if (line ~ /$(am__global_test_result_rx)/) \
-+        { \
-+          sub("$(am__global_test_result_rx)", "", line); \
-+          sub("[ 	]*$$", "", line); \
-+          global_test_result = line; \
-+        } \
-+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-+        copy_in_global_log = 0; \
-+    }; \
-+  if (copy_in_global_log) \
-+    { \
-+      rst_section(global_test_result ": " $$0); \
-+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-+      { \
-+        if (rc < 0) \
-+          fatal("failed to read from " $$0 ".log"); \
-+        print line; \
-+      }; \
-+      printf "\n"; \
-+    }; \
-+  close ($$0 ".trs"); \
-+  close ($$0 ".log"); \
-+}'
-+# Restructured Text title.
-+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-+# Solaris 10 'make', and several other traditional 'make' implementations,
-+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-+# by disabling -e (using the XSI extension "set +e") if it's set.
-+am__sh_e_setup = case $$- in *e*) set +e;; esac
-+# Default flags passed to test drivers.
-+am__common_driver_flags = \
-+  --color-tests "$$am__color_tests" \
-+  --enable-hard-errors "$$am__enable_hard_errors" \
-+  --expect-failure "$$am__expect_failure"
-+# To be inserted before the command running the test.  Creates the
-+# directory for the log if needed.  Stores in $dir the directory
-+# containing $f, in $tst the test, in $log the log.  Executes the
-+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-+# will run the test scripts (or their associated LOG_COMPILER, if
-+# thy have one).
-+am__check_pre = \
-+$(am__sh_e_setup);					\
-+$(am__vpath_adj_setup) $(am__vpath_adj)			\
-+$(am__tty_colors);					\
-+srcdir=$(srcdir); export srcdir;			\
-+case "$@" in						\
-+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-+    *) am__odir=.;; 					\
-+esac;							\
-+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-+if test -f "./$$f"; then dir=./;			\
-+elif test -f "$$f"; then dir=;				\
-+else dir="$(srcdir)/"; fi;				\
-+tst=$$dir$$f; log='$@'; 				\
-+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-+  am__enable_hard_errors=no; 				\
-+else							\
-+  am__enable_hard_errors=yes; 				\
-+fi; 							\
-+case " $(XFAIL_TESTS) " in				\
-+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-+    am__expect_failure=yes;;				\
-+  *)							\
-+    am__expect_failure=no;;				\
-+esac; 							\
-+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-+# A shell command to get the names of the tests scripts with any registered
-+# extension removed (i.e., equivalently, the names of the test logs, with
-+# the '.log' extension removed).  The result is saved in the shell variable
-+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-+# since that might cause problem with VPATH rewrites for suffix-less tests.
-+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-+am__set_TESTS_bases = \
-+  bases='$(TEST_LOGS)'; \
-+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-+  bases=`echo $$bases`
-+RECHECK_LOGS = $(TEST_LOGS)
-+TEST_SUITE_LOG = test-suite.log
-+TEST_EXTENSIONS = @EXEEXT@ .test
-+am__test_logs1 = $(TESTS:=.log)
-+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-+TEST_LOGS = $(am__test_logs2:.test.log=.log)
-+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/cfgaux/test-driver
-+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-+	$(TEST_LOG_FLAGS)
-+am__set_b = \
-+  case '$@' in \
-+    */*) \
-+      case '$*' in \
-+        */*) b='$*';; \
-+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-+       esac;; \
-+    *) \
-+      b='$*';; \
-+  esac
- DIST_SUBDIRS = $(SUBDIRS)
-+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/cfgaux/depcomp \
-+	$(top_srcdir)/cfgaux/test-driver \
-+	$(top_srcdir)/doc/manuals/Substitute.am \
-+	$(top_srcdir)/src/Common.am
- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- am__relativize = \
-   dir0=`pwd`; \
-@@ -184,8 +472,8 @@ ACLOCAL = @ACLOCAL@
- ADAPTATION_LIBS = @ADAPTATION_LIBS@
- ALLOCA = @ALLOCA@
- AMTAR = @AMTAR@
-+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
- AR = @AR@
--ARGZ_H = @ARGZ_H@
- AR_R = @AR_R@
- AUTH_LIBS_TO_BUILD = @AUTH_LIBS_TO_BUILD@
- AUTH_MODULES = @AUTH_MODULES@
-@@ -222,6 +510,7 @@ DISK_LINKOBJS = @DISK_LINKOBJS@
- DISK_MODULES = @DISK_MODULES@
- DISK_OS_LIBS = @DISK_OS_LIBS@
- DISK_PROGRAMS = @DISK_PROGRAMS@
-+DLLTOOL = @DLLTOOL@
- DSYMUTIL = @DSYMUTIL@
- DUMPBIN = @DUMPBIN@
- ECAP_LIBS = @ECAP_LIBS@
-@@ -271,11 +560,14 @@ LTDLDEPS = @LTDLDEPS@
- LTDLINCL = @LTDLINCL@
- LTDLOPEN = @LTDLOPEN@
- LTLIBOBJS = @LTLIBOBJS@
-+LT_ARGZ_H = @LT_ARGZ_H@
- LT_CONFIG_H = @LT_CONFIG_H@
- LT_DLLOADERS = @LT_DLLOADERS@
- LT_DLPREOPEN = @LT_DLPREOPEN@
-+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
-+MANIFEST_TOOL = @MANIFEST_TOOL@
- MINGW_LIBS = @MINGW_LIBS@
- MKDIR = @MKDIR@
- MKDIR_P = @MKDIR_P@
-@@ -336,6 +628,7 @@ abs_builddir = @abs_builddir@
- abs_srcdir = @abs_srcdir@
- abs_top_builddir = @abs_top_builddir@
- abs_top_srcdir = @abs_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
- ac_ct_CC = @ac_ct_CC@
- ac_ct_CXX = @ac_ct_CXX@
- ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-@@ -392,7 +685,8 @@ top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- AM_CFLAGS = $(SQUID_CFLAGS)
- AM_CXXFLAGS = $(SQUID_CXXFLAGS)
--CLEANFILES = test_tools.cc stub_debug.cc time.cc cachemgr.cgi.8
-+CLEANFILES = test_tools.cc MemBuf.cc stub_debug.cc time.cc \
-+	stub_cbdata.cc stub_mem.cc cachemgr.cgi.8
- INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \
- 	-I$(top_srcdir)/src -I$(top_builddir)/include \
- 	$(SQUID_CPPUNIT_INC) $(KRB5INCS) $(am__append_1) -I$(srcdir)
-@@ -436,7 +730,10 @@ squidclient_SOURCES = squidclient.cc \
- 
- DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf
- cachemgr__CGIEXT__SOURCES = cachemgr.cc \
-+	MemBuf.cc \
-+	stub_cbdata.cc \
- 	stub_debug.cc \
-+	stub_mem.cc \
- 	test_tools.cc \
- 	time.cc
- 
-@@ -444,7 +741,7 @@ cachemgr__CGIEXT__CXXFLAGS = -DDEFAULT_CACHEMGR_CONFIG=\"$(DEFAULT_CACHEMGR_CONF
- all: all-recursive
- 
- .SUFFIXES:
--.SUFFIXES: .cc .lo .o .obj
-+.SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/src/Common.am $(top_srcdir)/doc/manuals/Substitute.am $(am__configure_deps)
- 	@for dep in $?; do \
- 	  case '$(am__configure_deps)' in \
-@@ -454,10 +751,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
- 	      exit 1;; \
- 	  esac; \
- 	done; \
--	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
- 	$(am__cd) $(top_srcdir) && \
--	  $(AUTOMAKE) --foreign tools/Makefile
--.PRECIOUS: Makefile
-+	  $(AUTOMAKE) --gnu tools/Makefile
- Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- 	@case '$?' in \
- 	  *config.status*) \
-@@ -466,6 +762,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- 	esac;
-+$(top_srcdir)/src/Common.am $(top_srcdir)/doc/manuals/Substitute.am $(am__empty):
- 
- $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-@@ -477,14 +774,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- $(am__aclocal_m4_deps):
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do echo "$$p $$p"; done | \
- 	sed 's/$(EXEEXT)$$//' | \
--	while read p p1; do if test -f $$p || test -f $$p1; \
--	  then echo "$$p"; echo "$$p"; else :; fi; \
-+	while read p p1; do if test -f $$p \
-+	 || test -f $$p1 \
-+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
- 	done | \
--	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-+	sed -e 'p;s,.*/,,;n;h' \
-+	    -e 's|.*|.|' \
- 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- 	sed 'N;N;N;s,\n, ,g' | \
- 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-@@ -505,7 +807,8 @@ uninstall-binPROGRAMS:
- 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- 	files=`for p in $$list; do echo "$$p"; done | \
- 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
--	      -e 's/$$/$(EXEEXT)/' `; \
-+	      -e 's/$$/$(EXEEXT)/' \
-+	`; \
- 	test -n "$$list" || exit 0; \
- 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-@@ -529,14 +832,19 @@ clean-checkPROGRAMS:
- 	rm -f $$list
- install-libexecPROGRAMS: $(libexec_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)"
- 	@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do echo "$$p $$p"; done | \
- 	sed 's/$(EXEEXT)$$//' | \
--	while read p p1; do if test -f $$p || test -f $$p1; \
--	  then echo "$$p"; echo "$$p"; else :; fi; \
-+	while read p p1; do if test -f $$p \
-+	 || test -f $$p1 \
-+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
- 	done | \
--	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-+	sed -e 'p;s,.*/,,;n;h' \
-+	    -e 's|.*|.|' \
- 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- 	sed 'N;N;N;s,\n, ,g' | \
- 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-@@ -557,7 +865,8 @@ uninstall-libexecPROGRAMS:
- 	@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
- 	files=`for p in $$list; do echo "$$p"; done | \
- 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
--	      -e 's/$$/$(EXEEXT)/' `; \
-+	      -e 's/$$/$(EXEEXT)/' \
-+	`; \
- 	test -n "$$list" || exit 0; \
- 	echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
- 	cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
-@@ -570,16 +879,21 @@ clean-libexecPROGRAMS:
- 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- 	echo " rm -f" $$list; \
- 	rm -f $$list
--cachemgr$(CGIEXT)$(EXEEXT): $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__DEPENDENCIES) 
-+
-+cachemgr$(CGIEXT)$(EXEEXT): $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__DEPENDENCIES) $(EXTRA_cachemgr__CGIEXT__DEPENDENCIES) 
- 	@rm -f cachemgr$(CGIEXT)$(EXEEXT)
--	$(cachemgr__CGIEXT__LINK) $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__LDADD) $(LIBS)
--squidclient$(EXEEXT): $(squidclient_OBJECTS) $(squidclient_DEPENDENCIES) 
-+	$(AM_V_CXXLD)$(cachemgr__CGIEXT__LINK) $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__LDADD) $(LIBS)
-+
-+squidclient$(EXEEXT): $(squidclient_OBJECTS) $(squidclient_DEPENDENCIES) $(EXTRA_squidclient_DEPENDENCIES) 
- 	@rm -f squidclient$(EXEEXT)
--	$(CXXLINK) $(squidclient_OBJECTS) $(squidclient_LDADD) $(LIBS)
-+	$(AM_V_CXXLD)$(CXXLINK) $(squidclient_OBJECTS) $(squidclient_LDADD) $(LIBS)
- install-libexecSCRIPTS: $(libexec_SCRIPTS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)"
- 	@list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-@@ -607,9 +921,7 @@ uninstall-libexecSCRIPTS:
- 	@list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || exit 0; \
- 	files=`for p in $$list; do echo "$$p"; done | \
- 	       sed -e 's,.*/,,;$(transform)'`; \
--	test -n "$$list" || exit 0; \
--	echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
--	cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
-+	dir='$(DESTDIR)$(libexecdir)'; $(am__uninstall_files_from_dir)
- 
- mostlyclean-compile:
- 	-rm -f *.$(OBJEXT)
-@@ -617,8 +929,11 @@ mostlyclean-compile:
- distclean-compile:
- 	-rm -f *.tab.c
- 
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-time.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/squidclient.Po@am__quote@
-@@ -627,84 +942,126 @@ distclean-compile:
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@
- 
- .cc.o:
--@am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
- @am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
- @am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
- 
- .cc.obj:
--@am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
- @am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
- @am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
- 
- .cc.lo:
--@am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
- @am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
- @am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
- 
- cachemgr__CGIEXT_-cachemgr.o: cachemgr.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.o' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.o' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc
- 
- cachemgr__CGIEXT_-cachemgr.obj: cachemgr.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi`
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.obj' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi`
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.obj' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi`
-+
-+cachemgr__CGIEXT_-MemBuf.o: MemBuf.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-MemBuf.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo -c -o cachemgr__CGIEXT_-MemBuf.o `test -f 'MemBuf.cc' || echo '$(srcdir)/'`MemBuf.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='MemBuf.cc' object='cachemgr__CGIEXT_-MemBuf.o' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-MemBuf.o `test -f 'MemBuf.cc' || echo '$(srcdir)/'`MemBuf.cc
-+
-+cachemgr__CGIEXT_-MemBuf.obj: MemBuf.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-MemBuf.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo -c -o cachemgr__CGIEXT_-MemBuf.obj `if test -f 'MemBuf.cc'; then $(CYGPATH_W) 'MemBuf.cc'; else $(CYGPATH_W) '$(srcdir)/MemBuf.cc'; fi`
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='MemBuf.cc' object='cachemgr__CGIEXT_-MemBuf.obj' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-MemBuf.obj `if test -f 'MemBuf.cc'; then $(CYGPATH_W) 'MemBuf.cc'; else $(CYGPATH_W) '$(srcdir)/MemBuf.cc'; fi`
-+
-+cachemgr__CGIEXT_-stub_cbdata.o: stub_cbdata.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_cbdata.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo -c -o cachemgr__CGIEXT_-stub_cbdata.o `test -f 'stub_cbdata.cc' || echo '$(srcdir)/'`stub_cbdata.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='stub_cbdata.cc' object='cachemgr__CGIEXT_-stub_cbdata.o' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_cbdata.o `test -f 'stub_cbdata.cc' || echo '$(srcdir)/'`stub_cbdata.cc
-+
-+cachemgr__CGIEXT_-stub_cbdata.obj: stub_cbdata.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_cbdata.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo -c -o cachemgr__CGIEXT_-stub_cbdata.obj `if test -f 'stub_cbdata.cc'; then $(CYGPATH_W) 'stub_cbdata.cc'; else $(CYGPATH_W) '$(srcdir)/stub_cbdata.cc'; fi`
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='stub_cbdata.cc' object='cachemgr__CGIEXT_-stub_cbdata.obj' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi`
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_cbdata.obj `if test -f 'stub_cbdata.cc'; then $(CYGPATH_W) 'stub_cbdata.cc'; else $(CYGPATH_W) '$(srcdir)/stub_cbdata.cc'; fi`
- 
- cachemgr__CGIEXT_-stub_debug.o: stub_debug.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.o' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.o' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc
- 
- cachemgr__CGIEXT_-stub_debug.obj: stub_debug.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi`
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.obj' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi`
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.obj' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi`
-+
-+cachemgr__CGIEXT_-stub_mem.o: stub_mem.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_mem.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo -c -o cachemgr__CGIEXT_-stub_mem.o `test -f 'stub_mem.cc' || echo '$(srcdir)/'`stub_mem.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='stub_mem.cc' object='cachemgr__CGIEXT_-stub_mem.o' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi`
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_mem.o `test -f 'stub_mem.cc' || echo '$(srcdir)/'`stub_mem.cc
-+
-+cachemgr__CGIEXT_-stub_mem.obj: stub_mem.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_mem.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo -c -o cachemgr__CGIEXT_-stub_mem.obj `if test -f 'stub_mem.cc'; then $(CYGPATH_W) 'stub_mem.cc'; else $(CYGPATH_W) '$(srcdir)/stub_mem.cc'; fi`
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='stub_mem.cc' object='cachemgr__CGIEXT_-stub_mem.obj' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_mem.obj `if test -f 'stub_mem.cc'; then $(CYGPATH_W) 'stub_mem.cc'; else $(CYGPATH_W) '$(srcdir)/stub_mem.cc'; fi`
- 
- cachemgr__CGIEXT_-test_tools.o: test_tools.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.o' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.o' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc
- 
- cachemgr__CGIEXT_-test_tools.obj: test_tools.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi`
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.obj' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi`
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.obj' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi`
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi`
- 
- cachemgr__CGIEXT_-time.o: time.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='time.cc' object='cachemgr__CGIEXT_-time.o' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='time.cc' object='cachemgr__CGIEXT_-time.o' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc
- 
- cachemgr__CGIEXT_-time.obj: time.cc
--@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi`
--@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po
--@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='time.cc' object='cachemgr__CGIEXT_-time.obj' libtool=no @AMDEPBACKSLASH@
-+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi`
-+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po
-+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='time.cc' object='cachemgr__CGIEXT_-time.obj' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi`
-+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi`
- 
- mostlyclean-libtool:
- 	-rm -f *.lo
-@@ -713,11 +1070,18 @@ clean-libtool:
- 	-rm -rf .libs _libs
- install-man1: $(man_MANS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
--	@list=''; test -n "$(man1dir)" || exit 0; \
--	{ for i in $$list; do echo "$$i"; done; \
--	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
--	  sed -n '/\.1[a-z]*$$/p'; \
-+	@list1=''; \
-+	list2='$(man_MANS)'; \
-+	test -n "$(man1dir)" \
-+	  && test -n "`echo $$list1$$list2`" \
-+	  || exit 0; \
-+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
-+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
-+	{ for i in $$list1; do echo "$$i"; done;  \
-+	if test -n "$$list2"; then \
-+	  for i in $$list2; do echo "$$i"; done \
-+	    | sed -n '/\.1[a-z]*$$/p'; \
-+	fi; \
- 	} | while read p; do \
- 	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; echo "$$p"; \
-@@ -746,16 +1110,21 @@ uninstall-man1:
- 	  sed -n '/\.1[a-z]*$$/p'; \
- 	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
- 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
--	test -z "$$files" || { \
--	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
--	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
-+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
- install-man8: $(man_MANS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
--	@list=''; test -n "$(man8dir)" || exit 0; \
--	{ for i in $$list; do echo "$$i"; done; \
--	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
--	  sed -n '/\.8[a-z]*$$/p'; \
-+	@list1=''; \
-+	list2='$(man_MANS)'; \
-+	test -n "$(man8dir)" \
-+	  && test -n "`echo $$list1$$list2`" \
-+	  || exit 0; \
-+	echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
-+	$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
-+	{ for i in $$list1; do echo "$$i"; done;  \
-+	if test -n "$$list2"; then \
-+	  for i in $$list2; do echo "$$i"; done \
-+	    | sed -n '/\.8[a-z]*$$/p'; \
-+	fi; \
- 	} | while read p; do \
- 	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; echo "$$p"; \
-@@ -784,27 +1153,28 @@ uninstall-man8:
- 	  sed -n '/\.8[a-z]*$$/p'; \
- 	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
--	test -z "$$files" || { \
--	  echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \
--	  cd "$(DESTDIR)$(man8dir)" && rm -f $$files; }
-+	dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
- 
- # This directory's subdirectories are mostly independent; you can cd
--# into them and run `make' without going through this Makefile.
--# To change the values of `make' variables: instead of editing Makefiles,
--# (1) if the variable is set in `config.status', edit `config.status'
--#     (which will cause the Makefiles to be regenerated when you run `make');
--# (2) otherwise, pass the desired values on the `make' command line.
--$(RECURSIVE_TARGETS):
--	@fail= failcom='exit 1'; \
--	for f in x $$MAKEFLAGS; do \
--	  case $$f in \
--	    *=* | --[!k]*);; \
--	    *k*) failcom='fail=yes';; \
--	  esac; \
--	done; \
-+# into them and run 'make' without going through this Makefile.
-+# To change the values of 'make' variables: instead of editing Makefiles,
-+# (1) if the variable is set in 'config.status', edit 'config.status'
-+#     (which will cause the Makefiles to be regenerated when you run 'make');
-+# (2) otherwise, pass the desired values on the 'make' command line.
-+$(am__recursive_targets):
-+	@fail=; \
-+	if $(am__make_keepgoing); then \
-+	  failcom='fail=yes'; \
-+	else \
-+	  failcom='exit 1'; \
-+	fi; \
- 	dot_seen=no; \
- 	target=`echo $@ | sed s/-recursive//`; \
--	list='$(SUBDIRS)'; for subdir in $$list; do \
-+	case "$@" in \
-+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-+	  *) list='$(SUBDIRS)' ;; \
-+	esac; \
-+	for subdir in $$list; do \
- 	  echo "Making $$target in $$subdir"; \
- 	  if test "$$subdir" = "."; then \
- 	    dot_seen=yes; \
-@@ -819,57 +1189,12 @@ $(RECURSIVE_TARGETS):
- 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- 	fi; test -z "$$fail"
- 
--$(RECURSIVE_CLEAN_TARGETS):
--	@fail= failcom='exit 1'; \
--	for f in x $$MAKEFLAGS; do \
--	  case $$f in \
--	    *=* | --[!k]*);; \
--	    *k*) failcom='fail=yes';; \
--	  esac; \
--	done; \
--	dot_seen=no; \
--	case "$@" in \
--	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
--	  *) list='$(SUBDIRS)' ;; \
--	esac; \
--	rev=''; for subdir in $$list; do \
--	  if test "$$subdir" = "."; then :; else \
--	    rev="$$subdir $$rev"; \
--	  fi; \
--	done; \
--	rev="$$rev ."; \
--	target=`echo $@ | sed s/-recursive//`; \
--	for subdir in $$rev; do \
--	  echo "Making $$target in $$subdir"; \
--	  if test "$$subdir" = "."; then \
--	    local_target="$$target-am"; \
--	  else \
--	    local_target="$$target"; \
--	  fi; \
--	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
--	  || eval $$failcom; \
--	done && test -z "$$fail"
--tags-recursive:
--	list='$(SUBDIRS)'; for subdir in $$list; do \
--	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
--	done
--ctags-recursive:
--	list='$(SUBDIRS)'; for subdir in $$list; do \
--	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
--	done
-+ID: $(am__tagged_files)
-+	$(am__define_uniq_tagged_files); mkid -fID $$unique
-+tags: tags-recursive
-+TAGS: tags
- 
--ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
--	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
--	mkid -fID $$unique
--tags: TAGS
--
--TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
--		$(TAGS_FILES) $(LISP)
-+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- 	set x; \
- 	here=`pwd`; \
- 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-@@ -885,12 +1210,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- 	  fi; \
- 	done; \
--	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-+	$(am__define_uniq_tagged_files); \
- 	shift; \
- 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- 	  test -n "$$unique" || unique=$$empty_fix; \
-@@ -902,15 +1222,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 	      $$unique; \
- 	  fi; \
- 	fi
--ctags: CTAGS
--CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
--		$(TAGS_FILES) $(LISP)
--	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-+ctags: ctags-recursive
-+
-+CTAGS: ctags
-+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-+	$(am__define_uniq_tagged_files); \
- 	test -z "$(CTAGS_ARGS)$$unique" \
- 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- 	     $$unique
-@@ -919,116 +1235,182 @@ GTAGS:
- 	here=`$(am__cd) $(top_builddir) && pwd` \
- 	  && $(am__cd) $(top_srcdir) \
- 	  && gtags -i $(GTAGS_ARGS) "$$here"
-+cscopelist: cscopelist-recursive
-+
-+cscopelist-am: $(am__tagged_files)
-+	list='$(am__tagged_files)'; \
-+	case "$(srcdir)" in \
-+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-+	  *) sdir=$(subdir)/$(srcdir) ;; \
-+	esac; \
-+	for i in $$list; do \
-+	  if test -f "$$i"; then \
-+	    echo "$(subdir)/$$i"; \
-+	  else \
-+	    echo "$$sdir/$$i"; \
-+	  fi; \
-+	done >> $(top_builddir)/cscope.files
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
- 
--check-TESTS: $(TESTS)
--	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
--	srcdir=$(srcdir); export srcdir; \
--	list=' $(TESTS) '; \
--	$(am__tty_colors); \
--	if test -n "$$list"; then \
--	  for tst in $$list; do \
--	    if test -f ./$$tst; then dir=./; \
--	    elif test -f $$tst; then dir=; \
--	    else dir="$(srcdir)/"; fi; \
--	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
--	      all=`expr $$all + 1`; \
--	      case " $(XFAIL_TESTS) " in \
--	      *[\ \	]$$tst[\ \	]*) \
--		xpass=`expr $$xpass + 1`; \
--		failed=`expr $$failed + 1`; \
--		col=$$red; res=XPASS; \
--	      ;; \
--	      *) \
--		col=$$grn; res=PASS; \
--	      ;; \
--	      esac; \
--	    elif test $$? -ne 77; then \
--	      all=`expr $$all + 1`; \
--	      case " $(XFAIL_TESTS) " in \
--	      *[\ \	]$$tst[\ \	]*) \
--		xfail=`expr $$xfail + 1`; \
--		col=$$lgn; res=XFAIL; \
--	      ;; \
--	      *) \
--		failed=`expr $$failed + 1`; \
--		col=$$red; res=FAIL; \
--	      ;; \
--	      esac; \
--	    else \
--	      skip=`expr $$skip + 1`; \
--	      col=$$blu; res=SKIP; \
--	    fi; \
--	    echo "$${col}$$res$${std}: $$tst"; \
--	  done; \
--	  if test "$$all" -eq 1; then \
--	    tests="test"; \
--	    All=""; \
--	  else \
--	    tests="tests"; \
--	    All="All "; \
-+# Recover from deleted '.trs' file; this should ensure that
-+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-+# to avoid problems with "make -n".
-+.log.trs:
-+	rm -f $< $@
-+	$(MAKE) $(AM_MAKEFLAGS) $<
-+
-+# Leading 'am--fnord' is there to ensure the list of targets does not
-+# expand to empty, as could happen e.g. with make check TESTS=''.
-+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-+am--force-recheck:
-+	@:
-+
-+$(TEST_SUITE_LOG): $(TEST_LOGS)
-+	@$(am__set_TESTS_bases); \
-+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-+	redo_bases=`for i in $$bases; do \
-+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-+	            done`; \
-+	if test -n "$$redo_bases"; then \
-+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-+	  if $(am__make_dryrun); then :; else \
-+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
- 	  fi; \
--	  if test "$$failed" -eq 0; then \
--	    if test "$$xfail" -eq 0; then \
--	      banner="$$All$$all $$tests passed"; \
--	    else \
--	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
--	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
--	    fi; \
--	  else \
--	    if test "$$xpass" -eq 0; then \
--	      banner="$$failed of $$all $$tests failed"; \
-+	fi; \
-+	if test -n "$$am__remaking_logs"; then \
-+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-+	       "recursion detected" >&2; \
-+	elif test -n "$$redo_logs"; then \
-+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-+	fi; \
-+	if $(am__make_dryrun); then :; else \
-+	  st=0;  \
-+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-+	  for i in $$redo_bases; do \
-+	    test -f $$i.trs && test -r $$i.trs \
-+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-+	    test -f $$i.log && test -r $$i.log \
-+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-+	  done; \
-+	  test $$st -eq 0 || exit 1; \
-+	fi
-+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-+	ws='[ 	]'; \
-+	results=`for b in $$bases; do echo $$b.trs; done`; \
-+	test -n "$$results" || results=/dev/null; \
-+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-+	  success=true; \
-+	else \
-+	  success=false; \
-+	fi; \
-+	br='==================='; br=$$br$$br$$br$$br; \
-+	result_count () \
-+	{ \
-+	    if test x"$$1" = x"--maybe-color"; then \
-+	      maybe_colorize=yes; \
-+	    elif test x"$$1" = x"--no-color"; then \
-+	      maybe_colorize=no; \
- 	    else \
--	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
--	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
-+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
- 	    fi; \
--	  fi; \
--	  dashes="$$banner"; \
--	  skipped=""; \
--	  if test "$$skip" -ne 0; then \
--	    if test "$$skip" -eq 1; then \
--	      skipped="($$skip test was not run)"; \
-+	    shift; \
-+	    desc=$$1 count=$$2; \
-+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-+	      color_start=$$3 color_end=$$std; \
- 	    else \
--	      skipped="($$skip tests were not run)"; \
-+	      color_start= color_end=; \
- 	    fi; \
--	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
--	      dashes="$$skipped"; \
--	  fi; \
--	  report=""; \
--	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
--	    report="Please report to $(PACKAGE_BUGREPORT)"; \
--	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
--	      dashes="$$report"; \
--	  fi; \
--	  dashes=`echo "$$dashes" | sed s/./=/g`; \
--	  if test "$$failed" -eq 0; then \
--	    echo "$$grn$$dashes"; \
--	  else \
--	    echo "$$red$$dashes"; \
--	  fi; \
--	  echo "$$banner"; \
--	  test -z "$$skipped" || echo "$$skipped"; \
--	  test -z "$$report" || echo "$$report"; \
--	  echo "$$dashes$$std"; \
--	  test "$$failed" -eq 0; \
--	else :; fi
-+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-+	}; \
-+	create_testsuite_report () \
-+	{ \
-+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-+	}; \
-+	{								\
-+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-+	    $(am__rst_title);						\
-+	  create_testsuite_report --no-color;				\
-+	  echo;								\
-+	  echo ".. contents:: :depth: 2";				\
-+	  echo;								\
-+	  for b in $$bases; do echo $$b; done				\
-+	    | $(am__create_global_log);					\
-+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-+	if $$success; then						\
-+	  col="$$grn";							\
-+	 else								\
-+	  col="$$red";							\
-+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-+	fi;								\
-+	echo "$${col}$$br$${std}"; 					\
-+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-+	echo "$${col}$$br$${std}"; 					\
-+	create_testsuite_report --maybe-color;				\
-+	echo "$$col$$br$$std";						\
-+	if $$success; then :; else					\
-+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-+	  fi;								\
-+	  echo "$$col$$br$$std";					\
-+	fi;								\
-+	$$success || exit 1
-+
-+check-TESTS:
-+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-+	@set +e; $(am__set_TESTS_bases); \
-+	log_list=`for i in $$bases; do echo $$i.log; done`; \
-+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-+	exit $$?;
-+recheck: all $(check_PROGRAMS)
-+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-+	@set +e; $(am__set_TESTS_bases); \
-+	bases=`for i in $$bases; do echo $$i; done \
-+	         | $(am__list_recheck_tests)` || exit 1; \
-+	log_list=`for i in $$bases; do echo $$i.log; done`; \
-+	log_list=`echo $$log_list`; \
-+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-+	        am__force_recheck=am--force-recheck \
-+	        TEST_LOGS="$$log_list"; \
-+	exit $$?
-+.test.log:
-+	@p='$<'; \
-+	$(am__set_b); \
-+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-+	--log-file $$b.log --trs-file $$b.trs \
-+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-+	"$$tst" $(AM_TESTS_FD_REDIRECT)
-+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
-+@am__EXEEXT_TRUE@	@p='$<'; \
-+@am__EXEEXT_TRUE@	$(am__set_b); \
-+@am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-+@am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
-+@am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-+@am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
- 
- distdir: $(DISTFILES)
--	@list='$(MANS)'; if test -n "$$list"; then \
--	  list=`for p in $$list; do \
--	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
--	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
--	  if test -n "$$list" && \
--	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
--	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
--	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
--	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
--	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
--	    exit 1; \
--	  else :; fi; \
--	else :; fi
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	list='$(DISTFILES)'; \
-@@ -1060,13 +1442,10 @@ distdir: $(DISTFILES)
- 	done
- 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- 	  if test "$$subdir" = .; then :; else \
--	    test -d "$(distdir)/$$subdir" \
--	    || $(MKDIR_P) "$(distdir)/$$subdir" \
--	    || exit 1; \
--	  fi; \
--	done
--	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
--	  if test "$$subdir" = .; then :; else \
-+	    $(am__make_dryrun) \
-+	      || test -d "$(distdir)/$$subdir" \
-+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-+	      || exit 1; \
- 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- 	    $(am__relativize); \
- 	    new_distdir=$$reldir; \
-@@ -1106,11 +1485,19 @@ install-am: all-am
- 
- installcheck: installcheck-recursive
- install-strip:
--	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
--	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
--	  `test -z '$(STRIP)' || \
--	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-+	if test -z '$(STRIP)'; then \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	      install; \
-+	else \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-+	fi
- mostlyclean-generic:
-+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- 
- clean-generic:
- 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-@@ -1198,13 +1585,12 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libexecPROGRAMS \
- 
- uninstall-man: uninstall-man1 uninstall-man8
- 
--.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
--	ctags-recursive install-am install-strip tags-recursive
-+.MAKE: $(am__recursive_targets) check-am install-am install-strip
- 
--.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
--	all all-am check check-TESTS check-am clean clean-binPROGRAMS \
-+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-+	check-TESTS check-am clean clean-binPROGRAMS \
- 	clean-checkPROGRAMS clean-generic clean-libexecPROGRAMS \
--	clean-libtool ctags ctags-recursive distclean \
-+	clean-libtool cscopelist-am ctags ctags-am distclean \
- 	distclean-compile distclean-generic distclean-libtool \
- 	distclean-tags distdir dvi dvi-am html html-am info info-am \
- 	install install-am install-binPROGRAMS install-data \
-@@ -1216,11 +1602,13 @@ uninstall-man: uninstall-man1 uninstall-man8
- 	install-strip installcheck installcheck-am installdirs \
- 	installdirs-am maintainer-clean maintainer-clean-generic \
- 	mostlyclean mostlyclean-compile mostlyclean-generic \
--	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
- 	uninstall uninstall-am uninstall-binPROGRAMS \
- 	uninstall-libexecPROGRAMS uninstall-libexecSCRIPTS \
- 	uninstall-local uninstall-man uninstall-man1 uninstall-man8
- 
-+.PRECIOUS: Makefile
-+
- 
- $(OBJS): $(top_srcdir)/include/version.h $(top_builddir)/include/autoconf.h
- 
-@@ -1230,9 +1618,18 @@ test_tools.cc: $(top_srcdir)/test-suite/test_tools.cc
- stub_debug.cc: $(top_srcdir)/src/tests/stub_debug.cc
- 	cp $(top_srcdir)/src/tests/stub_debug.cc .
- 
-+MemBuf.cc: $(top_srcdir)/src/MemBuf.cc
-+	cp $(top_srcdir)/src/MemBuf.cc $@
-+
- time.cc: $(top_srcdir)/src/time.cc
- 	cp $(top_srcdir)/src/time.cc .
- 
-+stub_cbdata.cc: $(top_srcdir)/src/tests/stub_cbdata.cc
-+	cp $(top_srcdir)/src/tests/stub_cbdata.cc $@
-+
-+stub_mem.cc: $(top_srcdir)/src/tests/stub_mem.cc
-+	cp $(top_srcdir)/src/tests/stub_mem.cc $@
-+
- cachemgr.cgi.8: $(srcdir)/cachemgr.cgi.8.in Makefile
- 	$(SUBSTITUTE) < $(srcdir)/cachemgr.cgi.8.in > $@
- 
diff --git a/SOURCES/squid-CVE-2016-4052.patch b/SOURCES/squid-CVE-2016-4052.patch
deleted file mode 100644
index 16288eb..0000000
--- a/SOURCES/squid-CVE-2016-4052.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-diff --git a/src/esi/Assign.cc b/src/esi/Assign.cc
-index eb68e84..08ce5a5 100644
---- a/src/esi/Assign.cc
-+++ b/src/esi/Assign.cc
-@@ -41,6 +41,7 @@
- #include "esi/Assign.h"
- #include "esi/Context.h"
- #include "esi/Sequence.h"
-+#include "HttpReply.h"
- 
- ESIAssign::~ESIAssign()
- {
-diff --git a/src/esi/Esi.cc b/src/esi/Esi.cc
-index 60c2344..ef236a9 100644
---- a/src/esi/Esi.cc
-+++ b/src/esi/Esi.cc
-@@ -1007,7 +1006,7 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount)
-     ESIElement::Pointer element;
-     int specifiedattcount = attrCount * 2;
-     char *position;
--    assert (ellen < sizeof (localbuf)); /* prevent unexpected overruns. */
-+    Must(ellen < sizeof(localbuf)); /* prevent unexpected overruns. */
- 
-     debugs(86, 5, "ESIContext::Start: element '" << el << "' with " << specifiedattcount << " tags");
- 
-@@ -1021,15 +1020,17 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount)
-         /* Spit out elements we aren't interested in */
-         localbuf[0] = '<';
-         localbuf[1] = '\0';
--        assert (xstrncpy (&localbuf[1], el, sizeof(localbuf) - 2));
-+        xstrncpy(&localbuf[1], el, sizeof(localbuf) - 2);
-         position = localbuf + strlen (localbuf);
- 
-         for (i = 0; i < specifiedattcount && attr[i]; i += 2) {
-+            Must(static_cast<size_t>(position - localbuf) < sizeof(localbuf) - 1);
-             *position = ' ';
-             ++position;
-             /* TODO: handle thisNode gracefully */
--            assert (xstrncpy (position, attr[i], sizeof(localbuf) + (position - localbuf)));
-+            xstrncpy(position, attr[i], sizeof(localbuf) - (position - localbuf));
-             position += strlen (position);
-+            Must(static_cast<size_t>(position - localbuf) < sizeof(localbuf) - 2);
-             *position = '=';
-             ++position;
-             *position = '\"';
-@@ -1038,18 +1039,21 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount)
-             char ch;
-             while ((ch = *chPtr++) != '\0') {
-                 if (ch == '\"') {
--                    assert( xstrncpy(position, "&quot;", sizeof(localbuf) + (position-localbuf)) );
-+                    Must(static_cast<size_t>(position - localbuf) < sizeof(localbuf) - 6);
-+                    xstrncpy(position, "&quot;", sizeof(localbuf) - (position-localbuf));
-                     position += 6;
-                 } else {
-+                    Must(static_cast<size_t>(position - localbuf) < sizeof(localbuf) - 1);
-                     *position = ch;
-                     ++position;
-                 }
-             }
--            position += strlen (position);
-+            Must(static_cast<size_t>(position - localbuf) < sizeof(localbuf) - 1);
-             *position = '\"';
-             ++position;
-         }
- 
-+        Must(static_cast<size_t>(position - localbuf) < sizeof(localbuf) - 2);
-         *position = '>';
-         ++position;
-         *position = '\0';
-@@ -1135,11 +1139,11 @@ ESIContext::end(const char *el)
-     switch (ESIElement::IdentifyElement (el)) {
- 
-     case ESIElement::ESI_ELEMENT_NONE:
--        assert (ellen < sizeof (localbuf)); /* prevent unexpected overruns. */
-+        Must(ellen < sizeof(localbuf) - 3); /* prevent unexpected overruns. */
-         /* Add elements we aren't interested in */
-         localbuf[0] = '<';
-         localbuf[1] = '/';
--        assert (xstrncpy (&localbuf[2], el, sizeof(localbuf) - 3));
-+        xstrncpy(&localbuf[2], el, sizeof(localbuf) - 3);
-         position = localbuf + strlen (localbuf);
-         *position = '>';
-         ++position;
diff --git a/SOURCES/squid-CVE-2016-4553.patch b/SOURCES/squid-CVE-2016-4553.patch
deleted file mode 100644
index 5242e63..0000000
--- a/SOURCES/squid-CVE-2016-4553.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-------------------------------------------------------------
-revno: 13240
-revision-id: squid3@treenet.co.nz-20160509131121-4saxl1wj54n20lgf
-parent: squid3@treenet.co.nz-20160508124218-6vhq4icj0fwu5aof
-fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4501
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.4
-timestamp: Tue 2016-05-10 01:11:21 +1200
-message:
-  Bug 4501: HTTP/1.1: normalize Host header
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20160509131121-4saxl1wj54n20lgf
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
-# testament_sha1: 017af15dae3e77239e9b2449dc2f2711707447d9
-# timestamp: 2016-05-09 13:13:52 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
-# base_revision_id: squid3@treenet.co.nz-20160508124218-\
-#   6vhq4icj0fwu5aof
-# 
-# Begin patch
-=== modified file 'src/client_side.cc'
---- src/client_side.cc	2015-08-28 13:23:34 +0000
-+++ src/client_side.cc	2016-05-09 13:11:21 +0000
-@@ -2740,6 +2740,23 @@
-         goto finish;
-     }
- 
-+    // when absolute-URI is provided Host header should be ignored. However
-+    // some code still uses Host directly so normalize it.
-+    // For now preserve the case where Host is completely absent.
-+    if (request->header.has(HDR_HOST)) {
-+        const char *host = request->header.getStr(HDR_HOST);
-+        MemBuf authority;
-+        authority.init();
-+        if (request->port != urlDefaultPort(request->protocol))
-+            authority.Printf("%s:%d", request->GetHost(), request->port);
-+        else
-+            authority.Printf("%s", request->GetHost());
-+        debugs(33, 5, "URL domain " << authority.buf << " overrides header Host: " << host);
-+        // URL authority overrides Host header
-+        request->header.delById(HDR_HOST);
-+        request->header.putStr(HDR_HOST, authority.buf);
-+    }
-+
-     request->clientConnectionManager = conn;
- 
-     request->flags.accelerated = http->flags.accel;
-
diff --git a/SOURCES/squid-CVE-2016-4554.patch b/SOURCES/squid-CVE-2016-4554.patch
deleted file mode 100644
index eb7d079..0000000
--- a/SOURCES/squid-CVE-2016-4554.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-------------------------------------------------------------
-revno: 12698
-revision-id: squid3@treenet.co.nz-20160502034346-fhtahpk2lfblo2b1
-parent: squid3@treenet.co.nz-20160420111636-ft1dbd1iuktj8ift
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.3
-timestamp: Mon 2016-05-02 15:43:46 +1200
-message:
-  Require exact match in Host header name lookup
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20160502034346-fhtahpk2lfblo2b1
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# testament_sha1: 6e285b375879d79c870bff268c99ef2597f1b725
-# timestamp: 2016-05-02 03:50:49 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# base_revision_id: squid3@treenet.co.nz-20160420111636-\
-#   ft1dbd1iuktj8ift
-# 
-# Begin patch
-=== modified file 'src/mime_header.cc'
---- src/mime_header.cc	2012-08-29 12:36:10 +0000
-+++ src/mime_header.cc	2016-05-02 03:43:46 +0000
-@@ -62,9 +62,6 @@
-         if (strcmp(p, "\r\n\r\n") == 0 || strcmp(p, "\n\n") == 0)
-             return NULL;
- 
--        while (xisspace(*p))
--            ++p;
--
-         if (strncasecmp(p, name, namelen))
-             continue;
- 
-
-------------------------------------------------------------
-revno: 12700
-revision-id: squid3@treenet.co.nz-20160508124255-w1vb9ifv5affhgai
-parent: squid3@treenet.co.nz-20160506091321-tza59kjh2g6goob0
-fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4515
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.3
-timestamp: Mon 2016-05-09 00:42:55 +1200
-message:
-  Bug 4515: regression after CVE-2016-4554 patch
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20160508124255-w1vb9ifv5affhgai
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# testament_sha1: 5ff66676035dc7841f6eb610dee8739dc015f29c
-# timestamp: 2016-05-08 12:50:57 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3
-# base_revision_id: squid3@treenet.co.nz-20160506091321-\
-#   tza59kjh2g6goob0
-# 
-# Begin patch
-=== modified file 'src/mime_header.cc'
---- src/mime_header.cc	2016-05-02 03:43:46 +0000
-+++ src/mime_header.cc	2016-05-08 12:42:55 +0000
-@@ -58,10 +58,13 @@
- 
-     debugs(25, 5, "mime_get_header: looking for '" << name << "'");
- 
--    for (p = mime; *p; p += strcspn(p, "\n\r")) {
--        if (strcmp(p, "\r\n\r\n") == 0 || strcmp(p, "\n\n") == 0)
-+    for (p = mime; *p; p += strcspn(p, "\n")) {
-+        if (strcmp(p, "\n\r\n") == 0 || strcmp(p, "\n\n") == 0)
-             return NULL;
- 
-+        if (*p == '\n')
-+            ++p;
-+
-         if (strncasecmp(p, name, namelen))
-             continue;
- 
-
diff --git a/SOURCES/squid-CVE-2016-4555.patch b/SOURCES/squid-CVE-2016-4555.patch
deleted file mode 100644
index 2757cb6..0000000
--- a/SOURCES/squid-CVE-2016-4555.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-------------------------------------------------------------
-revno: 13237
-revision-id: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8
-parent: squid3@treenet.co.nz-20160502034253-axee4hqa4wuhlpkg
-fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4455
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.4
-timestamp: Fri 2016-05-06 21:12:44 +1200
-message:
-  Bug 4455: SegFault from ESIInclude::Start
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
-# testament_sha1: b9714bc153e5fd6e8fe505a6c1d8a54c88e03a77
-# timestamp: 2016-05-06 09:48:43 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
-# base_revision_id: squid3@treenet.co.nz-20160502034253-\
-#   axee4hqa4wuhlpkg
-# 
-# Begin patch
-=== modified file 'src/client_side_request.cc'
---- src/client_side_request.cc	2014-04-09 16:53:05 +0000
-+++ src/client_side_request.cc	2016-05-06 09:12:44 +0000
-@@ -163,13 +163,15 @@
-     start_time = current_time;
-     setConn(aConn);
-     al = new AccessLogEntry;
--    al->tcpClient = clientConnection = aConn->clientConnection;
-+    if (aConn) {
-+        al->tcpClient = clientConnection = aConn->clientConnection;
- #if USE_SSL
--    if (aConn->clientConnection != NULL && aConn->clientConnection->isOpen()) {
--        if (SSL *ssl = fd_table[aConn->clientConnection->fd].ssl)
--            al->cache.sslClientCert.reset(SSL_get_peer_certificate(ssl));
-+        if (aConn->clientConnection != NULL && aConn->clientConnection->isOpen()) {
-+            if (SSL *ssl = fd_table[aConn->clientConnection->fd].ssl)
-+                al->cache.sslClientCert.reset(SSL_get_peer_certificate(ssl));
-+        }
-+#endif
-     }
--#endif
-     dlinkAdd(this, &active, &ClientActiveRequests);
- #if USE_ADAPTATION
-     request_satisfaction_mode = false;
-
diff --git a/SOURCES/squid-CVE-2016-4556.patch b/SOURCES/squid-CVE-2016-4556.patch
deleted file mode 100644
index da1006c..0000000
--- a/SOURCES/squid-CVE-2016-4556.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-------------------------------------------------------------
-revno: 13238
-revision-id: squid3@treenet.co.nz-20160506094614-zyjq1i8ym2gcvwbu
-parent: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8
-committer: Amos Jeffries <squid3@treenet.co.nz>
-branch nick: 3.4
-timestamp: Fri 2016-05-06 21:46:14 +1200
-message:
-  Fix SIGSEGV in ESIContext response handling
-  
-  HttpReply pointer was being unlocked without heving been locked.
-  Resulting in a double-free. Make it use RefCount instead of
-  manual locking to ensure locked/unlock is always symmetrical.
-------------------------------------------------------------
-# Bazaar merge directive format 2 (Bazaar 0.90)
-# revision_id: squid3@treenet.co.nz-20160506094614-zyjq1i8ym2gcvwbu
-# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
-# testament_sha1: 4ff01cd3aaffb8c9b20b8595d2ee0ccfcf434b3f
-# timestamp: 2016-05-06 09:48:45 +0000
-# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4
-# base_revision_id: squid3@treenet.co.nz-20160506091244-\
-#   3td2be9qbzsajxg8
-# 
-# Begin patch
-=== modified file 'src/esi/Esi.cc'
---- src/esi/Esi.cc	2016-04-20 11:15:14 +0000
-+++ src/esi/Esi.cc	2016-05-06 09:46:14 +0000
-@@ -598,7 +598,7 @@
- 
- #endif
- 
--    if (!(rep || (outbound.getRaw() &&
-+    if (!(rep != NULL || (outbound.getRaw() &&
-                   outbound->len && (outbound_offset <= outbound->len)))) {
-         debugs(86, 5, "ESIContext::send: Nothing to send.");
-         return 0;
-@@ -643,18 +643,18 @@
-     flags.clientwantsdata = 0;
-     debugs(86, 5, "ESIContext::send: this=" << this << " Client no longer wants data ");
-     /* Deal with re-entrancy */
--    HttpReply *temprep = rep;
-+    HttpReply::Pointer temprep = rep;
-     rep = NULL; /* freed downstream */
- 
--    if (temprep && varState)
--        varState->buildVary (temprep);
-+    if (temprep != NULL && varState)
-+        varState->buildVary(temprep.raw());
- 
-     {
-         StoreIOBuffer tempBuffer;
-         tempBuffer.length = len;
-         tempBuffer.offset = pos - len;
-         tempBuffer.data = next->readBuffer.data;
--        clientStreamCallback (thisNode, http, temprep, tempBuffer);
-+        clientStreamCallback (thisNode, http, temprep.raw(), tempBuffer);
-     }
- 
-     if (len == 0)
-@@ -1284,7 +1284,7 @@
-         ++parserState.stackdepth;
-     }
- 
--    if (rep && !parserState.inited())
-+    if (rep != NULL && !parserState.inited())
-         parserState.init(this);
- 
-     /* we have data */
-@@ -1423,7 +1423,7 @@
- {
-     debugs(86, 5, HERE << "Freeing for this=" << this);
- 
--    HTTPMSGUNLOCK(rep);
-+    rep = NULL; // refcounted
- 
-     finishChildren ();
- 
-
-diff --git src/esi/Context.h src/esi/Context.h
-index baae3fd..dcdcf05 100644
---- src/esi/Context.h
-+++ src/esi/Context.h
-@@ -36,6 +36,7 @@
- #include "esi/Element.h"
- #include "clientStream.h"
- #include "err_type.h"
-+#include "HttpReply.h"
- #include "HttpStatusCode.h"
- 
- class ESIVarState;
-@@ -116,7 +117,7 @@ public:
-     err_type errorpage; /* if we error what page to use */
-     http_status errorstatus; /* if we error, what code to return */
-     char *errormessage; /* error to pass to error page */
--    HttpReply *rep; /* buffered until we pass data downstream */
-+    HttpReply::Pointer rep; /* buffered until we pass data downstream */
-     ESISegment::Pointer buffered; /* unprocessed data - for whatever reason */
-     ESISegment::Pointer incoming;
-     /* processed data we are waiting to send, or for
diff --git a/SOURCES/squid-migrate-conf.py b/SOURCES/squid-migrate-conf.py
new file mode 100644
index 0000000..13e1c22
--- /dev/null
+++ b/SOURCES/squid-migrate-conf.py
@@ -0,0 +1,287 @@
+#!/usr/bin/python -tt
+# -*- coding: utf-8 -*-
+#
+# This script will help you with migration squid-3.3 conf files to squid-3.5 conf files
+# Copyright (C) 2016 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# he Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Authors: Lubos Uhliarik <luhliari@redhat.com>
+
+import sys
+import os
+import re
+import shutil
+import traceback
+import argparse
+import glob
+
+class ConfMigration:
+    RE_LOG_ACCESS="log_access\s+(\w+)\s+"
+    RE_LOG_ACCESS_DENY_REP="access_log none "
+    RE_LOG_ACCESS_ALLOW_REP="access_log daemon:/var/log/squid/access.log squid "
+    RE_LOG_ACCESS_TEXT="log_access"
+
+    RE_LOG_ICAP="log_icap\s+"
+    RE_LOG_ICAP_REP="icap_log daemon:/var/log/squid/icap.log "
+    RE_LOG_ICAP_TEXT="log_icap"
+
+    RE_HIER_STOPLIST="hierarchy_stoplist\s+(.*)"
+    RE_HIER_STOPLIST_REP="acl %s url_regex %s\nalways_direct allow %s"
+    RE_HIER_STOPLIST_TEXT="hierarchy_stoplist"
+
+    HIER_ACL_NAME="migrated_hs_%d_%d"
+
+    RE_INCLUDE_CHECK="\s*include\s+(.*)"
+
+    COMMENT_FMT="# migrated automatically by squid-migrate-conf, the original configuration was: %s\n%s"
+
+    DEFAULT_SQUID_CONF="/etc/squid/squid.conf"
+    DEFAULT_BACKUP_EXT=".bak"
+    DEFAULT_LEVEL_INDENT=3
+
+    MAX_NESTED_INCLUDES=16
+
+    def __init__(self, args, level=0, squid_conf='', conf_seq=0):
+        self.args = args
+
+        if squid_conf:
+            self.squid_conf = squid_conf
+        else:
+            self.squid_conf = args.squid_conf
+        self.write_changes = args.write_changes
+        self.debug = args.debug
+
+        self.conf_seq = conf_seq
+        self.acl_seq = 0
+
+        self.line_num = 0
+        self.level = level
+        if (not os.path.isfile(self.squid_conf)):
+            sys.stderr.write("%sError: the config file %s does not exist\n" % (self.get_prefix_str(), self.squid_conf))
+            sys.exit(1)
+
+        self.squid_bak_conf = self.get_backup_name()
+
+        self.migrated_squid_conf_data = []
+        self.squid_conf_data = None
+
+
+        print ("Migrating: " + self.squid_conf)
+
+    def print_info(self, text=''):
+        if (self.debug):
+            print "%s%s" % (self.get_prefix_str(), text)
+
+    def get_backup_name(self):
+        file_idx = 1
+        tmp_fn = self.squid_conf + self.DEFAULT_BACKUP_EXT
+
+        while (os.path.isfile(tmp_fn)):
+            tmp_fn = self.squid_conf + self.DEFAULT_BACKUP_EXT + str(file_idx)
+            file_idx = file_idx + 1
+
+        return tmp_fn
+
+    #
+    #  From squid config documentation:
+    #
+    #  Configuration options can be included using the "include" directive.
+    #  Include takes a list of files to include. Quoting and wildcards are
+    #  supported.
+    #
+    #  For example,
+    #
+    #  include /path/to/included/file/squid.acl.config
+    #
+    #  Includes can be nested up to a hard-coded depth of 16 levels.
+    #  This arbitrary restriction is to prevent recursive include references
+    #  from causing Squid entering an infinite loop whilst trying to load
+    #  configuration files.
+    #
+    def check_include(self, line=''):
+        m = re.match(self.RE_INCLUDE_CHECK, line)
+        include_list = ""
+        if not (m is None):
+             include_list = re.split('\s+', m.group(1))
+             for include_file_re in include_list:
+                 # included file can be written in regexp syntax
+                 for include_file in glob.glob(include_file_re):
+                     self.print_info("A config file %s was found and it will be included" % (include_file))
+                     if os.path.isfile(include_file):
+                         self.print_info("Migrating the included config file %s" % (include_file))
+                         conf = ConfMigration(self.args, self.level+1, include_file, self.conf_seq+1)
+                         conf.migrate()
+
+                 # check, if included file exists
+                 if (len(glob.glob(include_file_re)) == 0 and not (os.path.isfile(include_file_re))):
+                     self.print_info("The config file %s does not exist." % (include_file_re))
+
+    def print_sub_text(self, text, new_str):
+        if self.write_changes:
+            print "File: '%s', line: %d - the directive %s was replaced by %s" % (self.squid_conf, self.line_num, text, new_str)
+        else:
+            print "File: '%s', line: %d - the directive %s could be replaced by %s" % (self.squid_conf, self.line_num, text, new_str)
+
+    def add_conf_comment(self, old_line, line):
+        return self.COMMENT_FMT % (old_line, line)
+
+    def sub_line_ad(self, line, line_re, allow_sub, deny_sub, text):
+        new_line = line
+        m = re.match(line_re, line)
+        if not (m is None):
+            # check, if allow or deny was used and select coresponding sub
+            sub_text = allow_sub
+            if (re.match('allow', m.group(1), re.IGNORECASE)):
+                new_line = re.sub(line_re, sub_text, line)
+            elif (re.match('deny', m.group(1), re.IGNORECASE)):
+                sub_text = deny_sub
+                new_line = re.sub(line_re, sub_text, line)
+
+            # print out, if there was any change and add comment to conf line, if so
+            if not (new_line is line):
+                self.print_sub_text(text + " " +  m.group(1), sub_text)
+                new_line = self.add_conf_comment(line, new_line)
+
+        return new_line
+
+    def sub_line(self, line, line_re, sub, text):
+        new_line = line
+        m = re.match(line_re, line)
+        if not (m is None):
+            new_line = re.sub(line_re, sub, line)
+
+            # print out, if there was any change and add comment to conf line, if so
+            if not (new_line is line):
+                self.print_sub_text(text, sub)
+                new_line = self.add_conf_comment(line, new_line)
+
+        return new_line
+
+    def rep_hier_stoplist(self, line, sub, words):
+        wordlist = words.split(' ')
+
+        esc_wordlist = []
+        for w in wordlist:
+            esc_wordlist.append(re.escape(w))
+
+        # unique acl name for hierarchy_stoplist acl
+        acl_name = self.HIER_ACL_NAME % (self.conf_seq, self.acl_seq)
+        return sub % (acl_name, ' '.join(esc_wordlist), acl_name)
+
+    def sub_hier_stoplist(self, line, line_re, sub, text):
+        new_line = line
+        m = re.match(line_re, line)
+        if (not (m is None)):
+            new_line = self.rep_hier_stoplist(line, sub, m.group(1))
+
+        # print out, if there was any change and add comment to conf line, if so
+        if not (new_line is line):
+            self.print_sub_text(text, sub)
+            new_line = self.add_conf_comment(line, new_line)
+
+        return new_line
+
+    def process_conf_lines(self):
+        for line in self.squid_conf_data.split(os.linesep):
+
+            # do not migrate comments
+            if not line.strip().startswith('#'):
+               self.check_include(line)
+               line = self.sub_line_ad(line, self.RE_LOG_ACCESS, self.RE_LOG_ACCESS_ALLOW_REP, self.RE_LOG_ACCESS_DENY_REP, self.RE_LOG_ACCESS_TEXT)
+               line = self.sub_line(line, self.RE_LOG_ICAP, self.RE_LOG_ICAP_REP, self.RE_LOG_ICAP_TEXT)
+               line = self.sub_hier_stoplist(line, self.RE_HIER_STOPLIST, self.RE_HIER_STOPLIST_REP, self.RE_HIER_STOPLIST_TEXT)
+
+            self.migrated_squid_conf_data.append(line)
+
+            self.line_num = self.line_num + 1
+
+    def migrate(self):
+        # prevent infinite loop
+        if (self.level > ConfMigration.MAX_NESTED_INCLUDES):
+            sys.stderr.write("WARNING: the maximum number of nested includes was reached\n")
+            return
+
+        self.read_conf()
+        self.process_conf_lines()
+        if self.write_changes:
+            if (not (set(self.migrated_squid_conf_data) == set(self.squid_conf_data.split(os.linesep)))):
+                self.write_conf()
+
+        self.print_info("The migration finished successfully")
+
+    def get_prefix_str(self):
+        return (("    " * int(self.level)) + "["+  self.squid_conf + "@%d]: " % (self.line_num))
+
+    def read_conf(self):
+        self.print_info("Reading squid conf: " + self.squid_conf)
+        try:
+           self.in_file = open(self.squid_conf, 'r')
+           self.squid_conf_data = self.in_file.read()
+           self.in_file.close()
+        except Exception as e:
+           sys.stderr.write("%sError: %s\n" % (self.get_prefix_str(), e))
+           sys.exit(1)
+
+    def write_conf(self):
+        self.print_info("Creating backup conf: %s" % (self.squid_bak_conf))
+        self.print_info("Writing changes to: %s" % (self.squid_conf))
+        try:
+           shutil.copyfile(self.squid_conf, self.squid_bak_conf)
+           self.out_file = open(self.squid_conf, "w")
+           self.out_file.write(os.linesep.join(self.migrated_squid_conf_data))
+           self.out_file.close()
+        except Exception as e:
+           sys.stderr.write("%s Error: %s\n" % (self.get_prefix_str(), e))
+           sys.exit(1)
+
+def parse_args():
+    parser = argparse.ArgumentParser(description='The script migrates the squid 3.3 configuration files to configuration files which are compatible with squid 3.5.')
+    parser.add_argument('--conf', dest='squid_conf', action='store',
+                        default=ConfMigration.DEFAULT_SQUID_CONF,
+                        help='specify filename of squid configuration (default: %s)' % (ConfMigration.DEFAULT_SQUID_CONF))
+    parser.add_argument('--write-changes', dest='write_changes', action='store_true',
+                        default=False,
+                        help='The changes are written to corresponding configuration files')
+    parser.add_argument('--debug', dest="debug", action='store_true', default=False, help='print debug messages to stderr')
+    return parser.parse_args()
+
+if __name__ == '__main__':
+    # parse args from command line
+    args = parse_args()
+
+    # check if config file exists
+    if (not os.path.exists(args.squid_conf)):
+        sys.stderr.write("Error: the file %s does not exist\n" % (args.squid_conf))
+        sys.exit(1)
+
+    # change working directory
+    script_dir = os.getcwd()
+    if (os.path.dirname(args.squid_conf)):
+        os.chdir(os.path.dirname(args.squid_conf))
+
+    # start migration
+    try:
+        conf = ConfMigration(args, 0)
+        conf.migrate()
+    finally:
+        print ""
+
+        if not args.write_changes:
+            print "The changes have NOT been written to config files.\nUse the --write-changes option to write the changes"
+        else:
+            print "The changes have been written to config files!"
+
+        os.chdir(script_dir)
diff --git a/SOURCES/squid.service b/SOURCES/squid.service
index a6f82cf..85faf2d 100644
--- a/SOURCES/squid.service
+++ b/SOURCES/squid.service
@@ -10,6 +10,7 @@ ExecStartPre=/usr/libexec/squid/cache_swap.sh
 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF
 ExecReload=/usr/sbin/squid $SQUID_OPTS -k reconfigure -f $SQUID_CONF
 ExecStop=/usr/sbin/squid -k shutdown -f $SQUID_CONF
+TimeoutSec=0
 
 [Install]
 WantedBy=multi-user.target
diff --git a/SOURCES/squid.xml b/SOURCES/squid.xml
deleted file mode 100644
index 781e11c..0000000
--- a/SOURCES/squid.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<service>
-  <short>Squid</short>
-  <description>Squid is a high-performance proxy caching server for Web clients, supporting FTP, gopher, and HTTP data objects. Unlike traditional caching software, Squid handles all requests in a single, non-blocking, I/O-driven process. Squid keeps meta data and especially hot objects cached in RAM, caches DNS lookups, supports non-blocking DNS lookups, and implements negative caching of failed requests.</description>
-  <port protocol="tcp" port="3128"/>
-</service>
diff --git a/SPECS/squid.spec b/SPECS/squid.spec
index ec19c32..67844c7 100644
--- a/SPECS/squid.spec
+++ b/SPECS/squid.spec
@@ -3,16 +3,16 @@
 ## % define __find_requires %{SOURCE99}
 
 Name:     squid
-Version:  3.3.8
-Release:  26%{?dist}.4
+Version:  3.5.20
+Release:  2%{?dist}
 Summary:  The Squid proxy caching server
 Epoch:    7
 # See CREDITS for breakdown of non GPLv2+ code
 License:  GPLv2+ and (LGPLv2+ and MIT and BSD and Public Domain)
 Group:    System Environment/Daemons
 URL:      http://www.squid-cache.org
-Source0:  http://www.squid-cache.org/Versions/v3/3.3/squid-%{version}.tar.xz
-Source1:  http://www.squid-cache.org/Versions/v3/3.3/squid-%{version}.tar.xz.asc
+Source0:  http://www.squid-cache.org/Versions/v3/3.5/squid-%{version}.tar.xz
+Source1:  http://www.squid-cache.org/Versions/v3/3.5/squid-%{version}.tar.xz.asc
 Source2:  squid.init
 Source3:  squid.logrotate
 Source4:  squid.sysconfig
@@ -20,15 +20,8 @@ Source5:  squid.pam
 Source6:  squid.nm
 Source7:  squid.service
 Source8:  cache_swap.sh
-Source9:  squid.xml
 Source98: perl-requires-squid.sh
-## Source99: filter-requires-squid.sh
-
-# Upstream patches
-#Patch001: http://www.squid-cache.org/Versions/v3/3.2/changesets/squid-3.2-11480.patch
-
-# Backported patches
-# Patch211: squid-3.3.8-incorrect-ssl.patch
+Source99: squid-migrate-conf.py
 
 # Local patches
 # Applying upstream patches first makes it less likely that local patches
@@ -38,30 +31,18 @@ Patch202: squid-3.1.0.9-location.patch
 Patch203: squid-3.0.STABLE1-perlpath.patch
 Patch204: squid-3.2.0.9-fpic.patch
 Patch205: squid-3.1.9-ltdl.patch
-Patch206: squid-3.3.4-empty-pod2man.patch
-Patch207: active-ftp.patch
 # https://bugzilla.redhat.com/show_bug.cgi?id=980511
-Patch208: squid-3.3.8-active-ftp-2.patch
-# https://bugzilla.redhat.com/show_bug.cgi?id=1074873
-# http://www.squid-cache.org/Advisories/SQUID-2014_1.txt
-Patch209: squid-3.3-12677.patch
-Patch210: squid-3.3.13-dos.patch
-Patch211: squid-3.3.8-incorrect-ssl.patch
-Patch212: squid-3.3.8-fd-leaks.patch
-Patch213: squid-3.3.8-vary-headers.patch
-Patch214: squid-3.3.8-incorrect-cert.patch
-Patch215: squid-3.3.8-segfault-reboot.patch
-Patch216: squid-3.3.8-le-looping.patch
-Patch217: squid-CVE-2016-4051.patch
-Patch218: squid-CVE-2016-4052.patch
-Patch219: squid-CVE-2016-4553.patch
-Patch220: squid-CVE-2016-4554.patch
-Patch221: squid-CVE-2016-4555.patch
-Patch222: squid-CVE-2016-4556.patch
-Patch223: squid-3.3.8-conf-setrlimit.patch
+Patch206: squid-3.3.8-active-ftp-1.patch
+Patch207: squid-3.3.8-active-ftp-2.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=1265328#c23
+Patch208: squid-3.5.10-ssl-helper.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=1378025
+# http://bazaar.launchpad.net/~squid/squid/3.4/revision/12713
+Patch209: squid-3.5.20-conf-casecmp.patch
 
 Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Requires: bash >= 2.0
+Requires: squid-migration-script
 Requires(pre): shadow-utils
 Requires(post): /sbin/chkconfig
 Requires(preun): /sbin/chkconfig
@@ -81,13 +62,15 @@ BuildRequires: expat-devel libxml2-devel
 # TPROXY requires libcap, and also increases security somewhat
 BuildRequires: libcap-devel
 # eCAP support
-BuildRequires: libecap-devel
+BuildRequires: libecap-devel >= 1.0.0
 # 
 BuildRequires: libtool libtool-ltdl-devel
 # For test suite
 BuildRequires: cppunit-devel
 # DB helper requires
 BuildRequires: perl-podlators libdb-devel
+# c++ source files
+BuildRequires: gcc-c++
 
 %description
 Squid is a high-performance proxy caching server for Web clients,
@@ -111,14 +94,16 @@ Requires(postun): /sbin/service
 %description sysvinit
 The squid-sysvinit contains SysV initscritps support.
 
-%prep
-%setup -q
+%package migration-script
+Group: System Environment/Daemons
+Summary: Migration script for squid caching proxy
 
-# Upstream patches
-#%patch001 -p1 -b 
+%description migration-script
+The squid-migration-script contains scripts for squid configuration
+migration and script which prepares squid for downgrade operation.
 
-# Backported patches
-#patch101 -p1 -b .mem_node
+%prep
+%setup -q
 
 # Local patches
 %patch201 -p1 -b .config
@@ -126,24 +111,10 @@ The squid-sysvinit contains SysV initscritps support.
 %patch203 -p1 -b .perlpath
 %patch204 -p1 -b .fpic
 %patch205 -p1 -b .ltdl
-%patch206 -p1 -b .empty-pod2man
-%patch207 -p1 -b .active-ftp
-%patch208 -p1 -b .active-ftp-2
-%patch209 -p0
-%patch210 -p0
-%patch211 -p1 -b .incorrect-ssl
-%patch212 -p1 -b .fd-leaks
-%patch213 -p1 -b .vary-headers
-%patch214 -p1 -b .incorrect-cert
-%patch215 -p1 -b .segfault-reboot
-%patch216 -p0 -b .le-looping
-%patch217 -p0 -b .CVE-2016-4051
-%patch218 -p1 -b .CVE-2016-4052
-%patch219 -p0 -b .CVE-2016-4053
-%patch220 -p0 -b .CVE-2016-4054
-%patch221 -p0 -b .CVE-2016-4055
-%patch222 -p0 -b .CVE-2016-4056
-%patch223 -p1 -b .conf-setrlimit
+%patch206 -p1 -b .active-ftp-1
+%patch207 -p1 -b .active-ftp-2
+%patch208 -p1 -b .ssl-helper
+%patch209 -p1 -b .conf-casecmp
 
 %build
 %ifarch sparcv9 sparc64 s390 s390x
@@ -168,7 +139,7 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now"
    --enable-eui \
    --enable-follow-x-forwarded-for \
    --enable-auth \
-   --enable-auth-basic="DB,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam" \
+   --enable-auth-basic="DB,LDAP,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,SMB_LM,getpwnam" \
    --enable-auth-ntlm="smb_lm,fake" \
    --enable-auth-digest="file,LDAP,eDirectory" \
    --enable-auth-negotiate="kerberos" \
@@ -177,7 +148,6 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now"
    --enable-cachemgr-hostname=localhost \
    --enable-delay-pools \
    --enable-epoll \
-   --enable-icap-client \
    --enable-ident-lookups \
    %ifnarch ppc64 ia64 x86_64 s390x aarch64
    --with-large-files \
@@ -185,7 +155,6 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now"
    --enable-linux-netfilter \
    --enable-removal-policies="heap,lru" \
    --enable-snmp \
-   --enable-ssl \
    --enable-ssl-crtd \
    --enable-storeio="aufs,diskd,ufs" \
    --enable-wccpv2 \
@@ -193,10 +162,11 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now"
    --enable-ecap \
    --with-aio \
    --with-default-user="squid" \
-   --with-filedescriptors=16384 \
    --with-dl \
    --with-openssl \
-   --with-pthreads
+   --with-pthreads \
+   --disable-arch-native \
+   --disable-icap-client
 
 make \
 	DEFAULT_SWAP_DIR='$(localstatedir)/spool/squid' \
@@ -204,7 +174,7 @@ make \
 
 %check
 make check
-	
+
 %install
 rm -rf $RPM_BUILD_ROOT
 make \
@@ -243,7 +213,6 @@ install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_unitdir}
 install -m 755 %{SOURCE8} $RPM_BUILD_ROOT%{_libexecdir}/squid
 install -m 644 $RPM_BUILD_ROOT/squid.httpd.tmp $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/squid.conf
 install -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d/20-squid
-install -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services
 mkdir -p $RPM_BUILD_ROOT%{_var}/log/squid
 mkdir -p $RPM_BUILD_ROOT%{_var}/spool/squid
 mkdir -p $RPM_BUILD_ROOT%{_var}/run/squid
@@ -270,12 +239,25 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/squid/squid.conf.documented
 rm -f $RPM_BUILD_ROOT%{_bindir}/{RunAccel,RunCache}
 rm -f $RPM_BUILD_ROOT/squid.httpd.tmp
 
+# bug #447156
+# /usr/share/squid/errors/zh-cn and /usr/share/squid/errors/zh-tw were
+# substituted directories substituted by symlinks and RPM, can't handle
+# this change
+rm -f $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-tw
+rm -f $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-cn
+cp -R --preserve=all $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-hant $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-tw
+cp -R --preserve=all $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-hans $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-cn
+
+# squid-migration-script
+mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/squid
+install -m 755 %{SOURCE99} $RPM_BUILD_ROOT%{_bindir}
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(-,root,root,-)
-%doc COPYING COPYRIGHT README ChangeLog QUICKSTART src/squid.conf.documented
+%doc COPYING README ChangeLog QUICKSTART src/squid.conf.documented
 %doc contrib/url-normalizer.pl contrib/rredir.* contrib/user-agents.pl
 
 %{_unitdir}/squid.service
@@ -293,13 +275,8 @@ rm -rf $RPM_BUILD_ROOT
 %config(noreplace) %{_sysconfdir}/squid/mime.conf
 %config(noreplace) %{_sysconfdir}/squid/errorpage.css
 %config(noreplace) %{_sysconfdir}/sysconfig/squid
-%config(noreplace) %{_sysconfdir}/squid/msntauth.conf
-
-# squid firewalld service file
-%config(noreplace) %attr(644,root,root) %{_prefix}/lib/firewalld/services/squid.xml
 
 # These are not noreplace because they are just sample config files
-%config %{_sysconfdir}/squid/msntauth.conf.default
 %config %{_sysconfdir}/squid/squid.conf.default
 %config %{_sysconfdir}/squid/mime.conf.default
 %config %{_sysconfdir}/squid/errorpage.css.default
@@ -323,6 +300,10 @@ rm -rf $RPM_BUILD_ROOT
 %files sysvinit
 %attr(755,root,root) %{_sysconfdir}/rc.d/init.d/squid
 
+%files migration-script
+%defattr(-,root,root,-)
+%attr(755,root,root) %{_bindir}/squid-migrate-conf.py*
+
 %pre
 if ! getent group squid >/dev/null 2>&1; then
   /usr/sbin/groupadd -g 23 squid
@@ -343,6 +324,7 @@ done
 exit 0
 
 %post
+/usr/bin/squid-migrate-conf.py --write-changes --conf %{_sysconfdir}/squid/squid.conf &>/dev/null
 %systemd_post squid.service
 
 %preun
@@ -358,30 +340,78 @@ fi
 /usr/sbin/usermod -a -G wbpriv squid >/dev/null 2>&1 || \
     chgrp squid /var/cache/samba/winbindd_privileged >/dev/null 2>&1 || :
 
-%triggerun --  %{name} < 7:3.2.0.9-1
-        /sbin/chkconfig --del squid >/dev/null 2>&1 || :
-        /bin/systemctl try-restart squid.service >/dev/null 2>&1 || :
-
-%triggerpostun -n %{name}-sysvinit -- %{name} < 7:3.2.0.9-1
-        /sbin/chkconfig --add squid >/dev/null 2>&1 || :
-
 %changelog
-* Thu Jun 09 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-26.4
-- Resolves: #1344283 - max_filedescriptors in squid.conf is ignored
-
-* Mon May 09 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-26.3
-- Related: #1330576 - CVE-2016-4553 squid: Cache poisoning issue in
+* Wed Sep 21 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.20-2
+- Resolves: #1378025 - host_verify_strict only accepts lowercase arguments
+
+* Tue Aug 09 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.20-1
+- Resolves: #1273942 - Rebase squid to latest mature 3.5 version (3.5.20)
+
+* Mon Aug 08 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-9
+- Related: #1349775 - Provide migration tools needed due to rebase
+  to squid 3.5 as a separate sub-package
+
+* Mon Aug 01 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-8
+- Related: #1349775 - Provide migration tools needed due to rebase
+  to squid 3.5 as a separate sub-package
+
+* Mon Aug 01 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-7
+- Related: #1349775 - Provide migration tools needed due to rebase
+  to squid 3.5 as a separate sub-package
+
+* Wed Jul 27 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-6
+- Related: #1349775 - Provide migration tools needed due to rebase
+  to squid 3.5 as a separate sub-package
+
+* Tue Jul 26 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-5
+- Related: #1349775 - Provide migration tools needed due to rebase
+  to squid 3.5 as a separate sub-package
+
+* Tue Jul 19 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-4
+- Resolves: #1349775 - Provide migration tools needed due to rebase
+  to squid 3.5 as a separate sub-package
+
+* Tue Jun 14 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-3
+- Resolves: #1330186 - digest doesn't properly work with squid 3.3 on CentOS 7
+
+* Tue Jun 14 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-2
+- Resolves: #1336387 - Squid send wrong respond for GET-request following
+  Range-GET request
+
+* Wed Jun 08 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.5.10-1
+- Resolves: #1273942 - Rebase squid to latest mature 3.5 version (3.5.10)
+- Resolves: #1322770 - CVE-2016-2569 CVE-2016-2570 CVE-2016-2571 CVE-2016-2572
+  CVE-2016-3948 squid: various flaws
+- Resolves: #1254016 - IPv4 fallback is not working when connecting
+  to a dualstack host with non-functional IPv6
+- Resolves: #1254018 - should BuildRequire: g++
+- Resolves: #1262456 - Squid delays on FQDNs that don't contains AAAA record
+- Resolves: #1336940 - Disable squid systemd unit start/stop timeouts
+- Resolves: #1344197 - /usr/lib/firewalld/services/squid.xml conflicts between
+  attempted installs of squid-7:3.3.8-31.el7.x86_64 and
+  firewalld-0.4.2-1.el7.noarch
+- Resolves: #1299972 - squid file descriptor limit hardcoded to 16384 via 
+  compile option in spec file
+
+* Wed Jun 08 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-31
+- Resolves: #1283078 - max_filedescriptors in squid.conf is ignored
+
+* Mon May 09 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-30
+- Related: #1334509 - CVE-2016-4553 squid: Cache poisoning issue in
   HTTP Request handling
-- Related: #1334491 - CVE-2016-4554 CVE-2016-4555 CVE-2016-4556
+- Related: #1334492 - CVE-2016-4554 CVE-2016-4555 CVE-2016-4556 
   squid: various flaws
 
-* Tue May 03 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-26.2
-- Related: #1330576 - CVE-2016-4051 CVE-2016-4052 CVE-2016-4053 CVE-2016-4054
-  squid: various flaws
+* Tue May 03 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-29
+- Related: #1330577 - CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 squid: multiple
+  issues in ESI processing
 
-* Thu Apr 28 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-26.1
-- Resolves: #1330576 - CVE-2016-4051 CVE-2016-4052 CVE-2016-4053 CVE-2016-4054
-  squid: various flaws
+* Thu Apr 28 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-28
+- Related: #1330577 - CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 squid: multiple
+  issues in ESI processing
+
+* Thu Apr 28 2016 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-27
+- Resolves: #1330577 - CVE-2016-4051 squid: buffer overflow in cachemgr.cgi
 
 * Wed Oct 14 2015 Luboš Uhliarik <luhliari@redhat.com> - 7:3.3.8-26
 - Related: #1186768 - removing patch, because of missing tests and