--- crm114-20070810.orig/maillib.crm
+++ crm114-20070810/maillib.crm
@@ -371,11 +371,13 @@
 	match (:found: :hd: :tail:) <nomultiline nocase> /^(:*:header:) (.*)/
 	alter (:tail:) /:*:tail: (:*:comment:)/
     }
-    alius
-    {
-	#    no such header.  make one.
-	call /:mungmail_add:/ [:*:header: (:*:comment:)]
-    }
+# Commented out by Milan Zamazal <pdm@debian.org> on 2007-01-28 as suggested on
+# the crm114 mailing list.  If this is wrong please let me know.
+#    alius
+#    {
+#	#    no such header.  make one.
+#	call /:mungmail_add:/ [:*:header: (:*:comment:)]
+#    }
 }	
 return
 
--- crm114-20070810.orig/mailreaver.crm
+++ crm114-20070810/mailreaver.crm
@@ -687,5 +687,5 @@
 ######################################################################3
 #
 #              Library insertions start here.
-insert maillib.crm
+insert /usr/share/crm114/maillib.crm
 
--- crm114-20070810.orig/Makefile
+++ crm114-20070810/Makefile
@@ -64,7 +64,9 @@
 #   Comment this out if you want dynamic linking
 #
 #    BSD users - do NOT use -static-libgcc!!!
-LDFLAGS += -static -static-libgcc
+# 2005-04-22 Milan Zamazal <pdm@debian.org>: Do not link statically, to comply
+#      with Debian policies.
+#LDFLAGS += -static -static-libgcc
 #
 #   Any standard install flags?  We nominally use protection 755
 INSTALLFLAGS += -m 755
--- crm114-20070810.orig/debian/docs
+++ crm114-20070810/debian/docs
@@ -0,0 +1,9 @@
+README
+*.cf
+*.crm
+*.dat
+*.example
+*.mfp
+*.recipe
+*.txt
+megatest.sh
--- crm114-20070810.orig/debian/rules
+++ crm114-20070810/debian/rules
@@ -0,0 +1,76 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+package=crm114
+
+CFLAGS = -Wall -g
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+	CFLAGS += -O0
+else
+	CFLAGS += -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+	INSTALL_PROGRAM += -s
+endif
+
+build: build-stamp
+build-stamp:
+	dh_testdir
+	$(MAKE) CFLAGS="$(CFLAGS)"
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp
+	$(MAKE) clean
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+	$(MAKE) install prefix=`pwd`/debian/$(package)/usr
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs
+	dh_install
+	dh_installdocs
+	rm `pwd`/debian/crm114/usr/share/doc/$(package)/GPL-License.txt
+	mv `pwd`/debian/crm114/usr/share/doc/$(package)/*test* \
+	   `pwd`/debian/crm114/usr/share/doc/$(package)/examples/tests/
+	set -e; for ext in cf crm dat example mfp recipe; do \
+		mv `pwd`/debian/crm114/usr/share/doc/$(package)/*.$$ext \
+	           `pwd`/debian/crm114/usr/share/doc/$(package)/examples/; \
+	done
+	dh_installexamples
+	set -e; for file in `pwd`/debian/crm114/usr/share/doc/$(package)/examples/* \
+	                    `pwd`/debian/crm114/usr/share/doc/$(package)/examples/tests/*; do \
+		if [ -f $$file ] && [ "`head -c 2 $$file`" != '#!' ]; then \
+			chmod a-x $$file; \
+		fi; \
+	done
+	chmod a-x `pwd`/debian/crm114/usr/share/crm114/mailfilter.cf
+	chmod a-x `pwd`/debian/crm114/usr/share/emacs/site-lisp/*
+	dh_installman debian/*.1
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
--- crm114-20070810.orig/debian/changelog
+++ crm114-20070810/debian/changelog
@@ -0,0 +1,265 @@
+crm114 (20070810-2~bpo40+1) etch-backports; urgency=low
+
+  * Rebuilt for etch.
+
+ -- martin f. krafft <madduck@debian.org>  Mon, 22 Oct 2007 09:02:20 +0200
+
+crm114 (20070810-2) unstable; urgency=low
+
+  * Broken .css files compatibility on 32-bit architectures, introduced in
+    20070810-1, fixed.
+
+ -- Milan Zamazal <pdm@debian.org>  Wed, 29 Aug 2007 10:31:55 +0200
+
+crm114 (20070810-1) unstable; urgency=low
+
+  * New upstream version; closes: #433112.
+  * Tried to make some variable types related to cssutil more specific to
+    prevent repeating problems on 64-bit architectures.
+
+ -- Milan Zamazal <pdm@debian.org>  Wed, 22 Aug 2007 07:51:49 +0200
+
+crm114 (20070320-1) unstable; urgency=low
+
+  * New upstream version; closes: #416446.
+  * Honor DEB_BUILD_OPTIONS.
+  * Make sure crm114-mode.el gets installed.
+
+ -- Milan Zamazal <pdm@debian.org>  Sun, 24 Jun 2007 12:35:53 +0200
+
+crm114 (20061103-1) experimental; urgency=low
+
+  * New upstream version; closes: #406089.
+  * Upload to experimental because etch is in freeze.
+  * Don't add Message-Id header if there's not any, information about
+    broken threading added to README.Debian; this attempts to solve bug
+    #406207.
+
+ -- Milan Zamazal <pdm@debian.org>  Sun, 28 Jan 2007 10:11:06 +0100
+
+crm114 (20060704a-4) unstable; urgency=low
+
+  * Use full path when loading maillib.crm in mailreaver.crm;
+    closes: #398078.
+
+ -- Milan Zamazal <pdm@debian.org>  Sun, 12 Nov 2006 10:08:53 +0100
+
+crm114 (20060704a-3) unstable; urgency=low
+
+  * Fixes of typos in mailfilter.cf, thanks to Martin Steigerwald
+    <Martin@Lichtvoll.de>; closes: #394476.
+
+ -- Milan Zamazal <pdm@debian.org>  Sun, 22 Oct 2006 09:05:52 +0200
+
+crm114 (20060704a-2) unstable; urgency=low
+
+  * Install all mail*.crm scripts into /usr/share/crm114/.
+  * Add upgrade warnings to NEWS.Debian and README.Debian;
+    closes: #377978, #378084, #378135.
+
+ -- Milan Zamazal <pdm@debian.org>  Fri, 14 Jul 2006 10:23:07 +0200
+
+crm114 (20060704a-1) unstable; urgency=low
+
+  * New upstream version.
+  * Standards 3.7.2 (no real change).
+
+ -- Milan Zamazal <pdm@debian.org>  Mon, 10 Jul 2006 23:19:34 +0200
+
+crm114 (20060118-1) unstable; urgency=low
+
+  * New upstream version; closes: #339393.
+
+ -- Milan Zamazal <pdm@debian.org>  Tue,  7 Feb 2006 09:52:03 +0100
+
+crm114 (20050721-2) unstable; urgency=low
+
+  * Missing :classify_status: declaration added in mailfilter.crm;
+    closes: #318720.
+
+ -- Milan Zamazal <pdm@debian.org>  Tue,  9 Aug 2005 17:36:41 +0200
+
+crm114 (20050721-1) unstable; urgency=low
+
+  * New upstream 'BlameNeilArmstrong' release; closes: #270315.
+  * Fix in Mutt instructions, thanks to Antti-Juhani Kaijanaho
+    <ajk@debian.org>; closes: #307815.
+
+ -- Milan Zamazal <pdm@debian.org>  Sun,  7 Aug 2005 13:07:41 +0200
+
+crm114 (20050628-1) unstable; urgency=low
+
+  * New upstream 'BlameCochrane' release.
+  * Standards 3.6.2 (no real change).
+
+ -- Milan Zamazal <pdm@debian.org>  Fri,  1 Jul 2005 08:58:12 +0200
+
+crm114 (20050415-4) unstable; urgency=low
+
+  * Patched not to crash in cssdiff when the compared files don't exist
+    and not to require write access to them; closes: #306519.
+  * Man pages from the latest autoconfiscated version added;
+    closes: #306523.
+  * Don't depend on procmail, the scripts no longer require formail;
+    closes: #244167.
+
+ -- Milan Zamazal <pdm@debian.org>  Mon,  2 May 2005 10:09:00 +0200
+
+crm114 (20050415-3) unstable; urgency=low
+
+  * The important changes introduced by switching from the autoconfiscated
+    version to the upstream version are described in NEWS.Debian now;
+    closes: #305938.
+  * Tests still present in examples/ moved to examples/tests/.
+  * File permissions fixed.
+  * debian/rules: Don't call unnecessary debhelper commands.
+
+ -- Milan Zamazal <pdm@debian.org>  Mon, 25 Apr 2005 13:02:34 +0200
+
+crm114 (20050415-2) unstable; urgency=low
+
+  * Install most important directly usable sample files into
+    /usr/share/crm114/.
+
+ -- Milan Zamazal <pdm@debian.org>  Sat, 23 Apr 2005 20:44:43 +0200
+
+crm114 (20050415-1) unstable; urgency=low
+
+  * New upstream 'BlameTheIRS' release; closes: #275238, #281619.
+  * New maintainer; closes: #304762.
+  * Packaging switched (back?) to plain debhelper.
+
+ -- Milan Zamazal <pdm@debian.org>  Fri, 22 Apr 2005 19:44:22 +0200
+
+crm114 (20040816.BlameClockworkOrange-auto.3-1) unstable; urgency=medium
+
+  * Fix recent bug in upstream source, which was causing always success
+    error code.
+
+ -- Ondřej Surý <ondrej@debian.org>  Thu, 19 Aug 2004 14:17:41 +0200
+
+crm114 (20040816.BlameClockworkOrange-auto.2-1) unstable; urgency=medium
+
+  * New autoconfiscated version.
+  * Fix FTBFS when compiled with gcc3.4.
+
+ -- Ondřej Surý <ondrej@debian.org>  Wed, 18 Aug 2004 16:25:41 +0200
+
+crm114 (20040816-1) unstable; urgency=medium
+
+  * New upstream 'BlameClockworkOrange' release.
+
+ -- Ondřej Surý <ondrej@debian.org>  Wed, 18 Aug 2004 12:10:26 +0200
+
+crm114 (20040627-2) unstable; urgency=low
+
+  * Add patch to fix infinite loop in mailfilter.crm (Closes: #259653)
+
+ -- Ondřej Surý <ondrej@debian.org>  Fri, 16 Jul 2004 09:13:49 +0200
+
+crm114 (20040627-1) unstable; urgency=low
+
+  * New upstream 'BlameSeifkes' release.
+
+ -- Ondřej Surý <ondrej@debian.org>  Mon, 12 Jul 2004 16:16:33 +0200
+
+crm114 (20040419-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Ondřej Surý <ondrej@debian.org>  Fri, 30 Apr 2004 15:12:37 +0200
+
+crm114 (20040409-2) unstable; urgency=low
+
+  * Add link from crm114 manpage to crm (Closes: #244739)
+
+ -- Ondřej Surý <ondrej@debian.org>  Tue, 20 Apr 2004 09:38:53 +0200
+
+crm114 (20040409-1) unstable; urgency=low
+
+  * New upstream 'BlameMarys' release (Closes: #242469)
+  * Add procmail to dependencies (Closes: #240967)
+  * Re-add patch to HOWTO (Closes: #235955)
+
+ -- Ondřej Surý <ondrej@debian.org>  Tue, 13 Apr 2004 11:41:32 +0200
+
+crm114 (20040312-2) unstable; urgency=low
+
+  * Previous release was not NMU.  I have utfized my name and forgot
+    to change it in control.
+
+ -- Ondřej Surý <ondrej@debian.org>  Sun, 14 Mar 2004 13:48:32 +0100
+
+crm114 (20040312-1) unstable; urgency=low
+
+  * New upstream 'BlameSnow' release. (Closes: #237868).
+  * autoconf dependency was probably added by patching to auto.2
+    release (Closes: #237916).
+
+ -- Ondřej Surý <ondrej@debian.org>  Sun, 14 Mar 2004 13:05:54 +0100
+
+crm114 (20040221-2) unstable; urgency=low
+
+  * Updated to auto.2 release (Closes: #235957)
+  * Included instruction to setup under maildrop. (Closes: #235955)
+
+ -- Ondrej Sury <ondrej@debian.org>  Thu, 11 Mar 2004 17:38:17 +0100
+
+crm114 (20040221-1) unstable; urgency=low
+
+  * New upstream release.
+  * Switch to autoconfiscated version (this also adds man pages).
+  * Switch build system to cdbs.
+  * Add metamail | mew-bin recommends for mailfilter.crm function (Closes: #234793)
+
+ -- Ondrej Sury <ondrej@debian.org>  Thu, 26 Feb 2004 09:52:59 +0100
+
+crm114 (20040212-3) unstable; urgency=low
+
+  * Add NEWS.Debian file to mention .css incompatibility with previous
+    release.
+
+ -- Ondrej Sury <ondrej@debian.org>  Tue, 24 Feb 2004 16:37:43 +0100
+
+crm114 (20040212-2) unstable; urgency=low
+
+  * Moved .mfp files to examples directory (where they really belong).
+  * Included .cf files in examples directory (Closes: #234541).
+
+ -- Ondrej Sury <ondrej@debian.org>  Tue, 24 Feb 2004 15:12:01 +0100
+
+crm114 (20040212-1) unstable; urgency=low
+
+  * New upstream release (Closes: #186589, #214149).
+  * According to info in bugs.debian.org/225146, this is fixed in new version (Closes: #225146)
+  * Upstream author says that this segfault bug is also fixed in new version (Closes: #225146)
+  * New maintainer (Closes: #206105)
+  * Don't include .css files, they are quite large and not neccessary
+    according to CRM114_Mailfilter_HOWTO.txt.
+
+ -- Ondrej Sury <ondrej@debian.org>  Sat, 21 Feb 2004 18:42:46 +0100
+
+crm114 (2002-11-26-3) unstable; urgency=low
+
+  * QA Upload.
+  * Inverted logic on read/write vs. readonly file opening in crm114.c 
+    (Closes: #226780, #177794)
+  * Section changed from unknown to admin.
+  * Upstream Author(s) -> Author in debian/copyright.
+  * debhelper build dependency changed to version 4 to reflect debhelper 
+    compatibility version. 
+
+ -- Emanuele Rocca <ema@debian.org>  Mon, 19 Jan 2004 14:39:06 +0100
+
+crm114 (2002-11-26-2) unstable; urgency=low
+
+  * Orphaning this package.  Reassigned maintainer to QA group.
+
+ -- John Goerzen <jgoerzen@complete.org>  Mon, 18 Aug 2003 15:20:14 -0500
+
+crm114 (2002-11-26-1) unstable; urgency=low
+
+  * Initial Release.  Closes: #177783.
+
+ -- John Goerzen <jgoerzen@complete.org>  Tue, 21 Jan 2003 15:49:23 -0600
+
--- crm114-20070810.orig/debian/README.Debian
+++ crm114-20070810/debian/README.Debian
@@ -0,0 +1,35 @@
+crm114 for Debian
+-----------------
+
+crm114 is a case of "the source is the documentation"; please see
+/usr/share/crm114 for additional examples and documentation.  Many files
+are well-commented.
+
+ -- John Goerzen <jgoerzen@complete.org>, Tue, 21 Jan 2003 15:49:23 -0600
+
+crm114 provides scripts ready for immediate use in /usr/share/crm114/.  Other
+example scripts are available in /usr/share/doc/crm114/examples/.
+
+WARNING: Although the scripts in /usr/share/crm114/ can be used directly, I
+don't recommend to do so if you use crm114 for mail filtering.  You risk that
+something breaks in your setup when crm114 gets upgraded.  I recommend copying
+the *.crm scripts you use to your private location and working with the copies.
+Then you can upgrade the scripts only when you know what you are doing,
+avoiding surprises on apt-get update.  And of course, your mail delivery system
+should always be set up in such a way that it doesn't stop working when crm114
+breaks.
+
+ -- Milan Zamazal <pdm@debian.org>  2006-07-14
+
+If you experience broken threading caused by Message-Id modifications performed
+by crm114, this may happen because one of the following reasons:
+
+1. Your MUA is not RFC-compliant and should be fixed.
+
+2. crm114 scripts are not RFC-compliant and should be fixed.
+
+We expect 1. is the case, but if you think otherwise, please let me know.
+Don't forget to attach detailed explanation so that crm114 developers know what
+exactly is broken and how it should be fixed.  See also bug #406207.
+
+ -- Milan Zamazal <pdm@debian.org>  2007-01-28
--- crm114-20070810.orig/debian/crm.1
+++ crm114-20070810/debian/crm.1
@@ -0,0 +1,1115 @@
+.\" Copyright (c) 2004 William S\&. Yerazunis\&. Manpage typesetting by Joost van Baal and Shalendra Chhabra
+.TH "crm" 1 "19 Aug 2004" "crm114 20040816\&.BlameClockworkOrange-auto\&.3" "CRM114"
+.po 2m
+.de ZI
+.\" Zoem Indent/Itemize macro I.
+.br
+'in +\\$1
+.nr xa 0
+.nr xa -\\$1
+.nr xb \\$1
+.nr xb -\\w'\\$2'
+\h'|\\n(xau'\\$2\h'\\n(xbu'\\
+..
+.de ZJ
+.br
+.\" Zoem Indent/Itemize macro II.
+'in +\\$1
+'in +\\$2
+.nr xa 0
+.nr xa -\\$2
+.nr xa -\\w'\\$3'
+.nr xb \\$2
+\h'|\\n(xau'\\$3\h'\\n(xbu'\\
+..
+.if n .ll -2m
+.am SH
+.ie n .in 4m
+.el .in 8m
+..
+.SH NAME
+crm \- The Controllable Regex Mutilator
+.SH SYNOPSIS
+
+\fBcrm\fP
+\fB[-d\fP N (\fIenter debugger after running N cycles\&. Omitting N
+means N equals 0\&.\fP)\fB]\fP
+\fB[-e\fP (\fIdo not import any environment variables\fP)\fB]\fP
+\fB[-h\fP (\fIprint help text\fP)\fB]\fP
+\fB[-p\fP (\fIgenerate an execution-time-spent profile on exit\fP)\fB]\fP
+\fB[-P\fP N (\fImax program lines\fP)\fB]\fP
+\fB[-q\fP m (\fImathmode (0,1 = alg/RPN only in EVAL, 2,3 = alg/RPN
+everywhere)\fP)\fB]\fP
+\fB[-s\fP N (\fInew feature file (\&.css) size is N (default 1 meg+1
+featureslots)\fP)\fB]\fP
+\fB[-S\fP N (\fInew feature file (\&.css) size is N rounded to 2^I+1
+featureslots\fP)\fB]\fP
+\fB[-t\fP (\fIuser trace output\fP)\fB]\fP
+\fB[-T\fP (\fIimplementors trace output (only for the masochistic!)\fP)\fB]\fP
+\fB[-u\fP dir (\fIchdir to directory dir before starting execution\fP)\fB]\fP
+\fB[-v\fP (\fIprint CRM114 version identification and exit\fP)\fB]\fP
+\fB[-w\fP N (\fImax data window (bytes, default 16 megs)\fP)\fB]\fP
+\fB[--\fP (\fIsignals the end CRM114 flags; prior flags are not seen by
+the user program; subsequent args are not processed by CRM114\fP)\fB]\fP
+\fB[--foo\fP (\fIcreates the user variable :foo: with the value SET\fP)\fB]\fP
+\fB[--x=y\fP (\fIcreates the user variable :x: with the value y\fP)\fB]\fP
+\fB[-{\fP stmts} (\fIexecute the statements inside the {} brackets\fP)\fB]\fP
+\fBcrmfile\fP (\fI\&.crm file name\fP)
+.SH WARNING
+This man page is taken from an older CRM114 version.  It is provided as a
+convenience to Debian users and may not be up-to-date.  If you would like to
+update it, please send appropriate patches to the Debian bug tracking system.
+.SH DESCRIPTION
+CRM114 is a language designed to write filters in\&. It caters to
+filtering email, system log streams, html, and other marginally
+human-readable ASCII that may occasion to grace your computer\&.
+
+CRM114\&'s unique strengths are the data structure (everything is
+a string and a string can overlap another string), it\&'s ability
+to work on truly infinitely long input streams, it\&'s ability to
+use extremely advanced classifiers to sort text, and the ability
+to do approximate regular expressions (that is, regexes that
+don\&'t quite match) via the TRE regex library\&.
+
+CRM114 also sports a very powerful subprocess control facility, and
+a unique syntax and program structure that puts the fun back in
+programming (OK, you can run away screaming now)\&. The syntax is
+declensional rather than positional; the type of quote marks around
+an argument determine what that argument will be used for\&.
+
+The typical CRM114 program uses regex operations more often
+than addition (in fact, math was only added to TRE in the waning
+days of 2003, well after CRM114 had been in daily use for over
+a year and a half)\&.
+
+In other words, crm114 is a very \fBvery\fP powerful mutagenic filter that
+happens to be a programming language as well\&.
+
+The filtering style of the CRM-114 discriminator is based on the fact
+that most spam, normal log file messages, or other uninteresting data
+is easily categorized by a few characteristic patterns (such as
+"Mortgage leads", "advertise on the internet", and "mail-order toner
+cartridges"\&.) CRM114 may also be useful to folks who are on multiple
+interlocking mailing lists\&.
+
+In a bow to Unix-style flexibility, by default CRM114 reads it\&'s
+input from standard input, and by default sends it\&'s output to
+standard output\&. Note that the default action has a zero-length
+output\&. Redirection and use of other input or output files is
+possible, as well as the use of windowing, either delimiter-based or
+time-based, for real-time continuous applications\&.
+
+CRM114 can be used for other than mail filtering; consider it to be a version
+of \fIgrep\fP with super powers\&. If perl is a seventy-bladed swiss army knife,
+CRM114 is a razor-sharp katana that can talk\&.
+.SH INVOCATION
+Absent the -{ program } flag, the first argument is taken to be the name of
+a file containing a crm114 program, subsequent arguments are merely supplied
+as :_argN: values\&. Use single quotes around commandline programs
+\&'-{ like this }\&' to prevent the shell from doing odd things to your
+command-line programs\&.
+
+CRM114 can be directly invoked by the shell if the first line of your
+program file uses the shell standard, as in:
+
+.di ZV
+.in 0
+.nf \fC
+#! /usr/bin/crm
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+You can use CRM114 flags on the shell-standard invocation line, and
+hide them with \&'--\&' from the program itself; \&'--\&' incidentally prevents
+the invoking user from changing any CRM114 invocation flags\&.
+
+Flags should be located after any positional variables on the command
+line\&. Flags \fIare\fP visible as :_argN: variables, so you can create
+your own flags for your own programs (separate CRM114 and user flags
+with \&'--\&')\&.
+Two examples on how to do this:
+
+.di ZV
+.in 0
+.nf \fC
+\&./foo\&.crm bar mugga < baz  -t -w 150000
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+.di ZV
+.in 0
+.nf \fC
+\&./foo\&.crm -t -w 1500000 -- bar < baz mugga
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+One example on how \fBnot\fP to do this:
+
+.di ZV
+.in 0
+.nf \fC
+\&./foo\&.crm -t -w 150000 bar < baz mugga
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+(That\&'s WRONG!)
+
+You can put a list of user-settable vars on the \fC#!/usr/bin/crm\fR
+invocation line\&. CRM114 will print these out when a program is
+invoked directly (e\&.g\&. "\&./myprog\&.crm -h", not "crm myprog\&.crm -h")
+with the -h (for help) flag\&. (note that this works ONLY on bash
+on Linux- *BSD\&'s have a different bash interpretation and this
+doesn\&'t work)
+
+Example:
+
+.di ZV
+.in 0
+.nf \fC
+#!/usr/bin/crm  -( var1 var2=A var2=B var2=C )
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+This allows only \fCvar1\fR and \fCvar2\fR be set on the command line\&. If a
+variable is not assigned a value, the user can set any value desired\&. If the
+variable is equated to a set of values, those are the \fIonly\fP values allowed\&.
+
+Another example:
+
+.di ZV
+.in 0
+.nf \fC
+#!/usr/bin/crm  -( var1 var2=foo )  --
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+This allows \fCvar1\fR to
+be set to any value, \fCvar2\fR may only be set to either \fCfoo\fR or not at all,
+and no other variables may be set nor may invocation flags be changed (because
+of the trailing "--")\&. Since "--" also blocks \&'-h\&' for help, such programs
+should provide their own help facility\&.
+.SH VARIABLES
+Variable names and locations start with a : , end with a : , and may
+contain only characters that have ink (i\&.e\&. the [:graph:] class) with
+few exceptions\&.
+
+Examples \fC:here:\fR, \fC:ThErE:\fR, \fC:every-where_0123+45%6789:\fR,
+\fC:this_is_a_very_very_long_var_name_that_does_not_tell_us_much:\fR\&.
+Builtin variables:
+
+.ZI 21m ":_nl:"
+newline
+.in -21m
+.ZI 21m ":_ht:"
+horizontal tab
+.in -21m
+.ZI 21m ":_bs:"
+backspace
+.in -21m
+.ZI 21m ":_sl:"
+a slash
+.in -21m
+.ZI 21m ":_sc:"
+a semicolon
+.in -21m
+.ZI 21m ":_arg0: thru :_argN:"
+command-line args, including \fIall\fP flags
+.in -21m
+.ZI 21m ":_argc:"
+how many command line arguments there were
+.in -21m
+.ZI 21m ":_pos0: thru :_posN:"
+positional args (\&'-\&' or \&'--\&' args deleted)
+.in -21m
+.ZI 21m ":_posc:"
+how many positional arguments there were
+.in -21m
+.ZI 21m ":_pos_str:"
+all positional arguments concatented
+.in -21m
+.ZI 21m ":_env_whatever:"
+environment value \&'whatever\&'
+.in -21m
+.ZI 21m ":_env_string:"
+all environmental arguments concatenated
+.in -21m
+.ZI 21m ":_crm_version:"
+the version of the CRM system
+.in -21m
+.ZI 21m ":_dw:"
+the current data window contents
+.in -21m
+.SH VARIABLE EXPANSION
+Variables are expanded by the \fC:*:\fR var-expansion operator,
+e\&.g\&. \fC:*:_nl:\fR expands to a newline character\&. Uninitialized vars
+evaluate to their text name (and the colons stay)\&.
+
+You can also use the standard constant C \&'\e\&' characters, such as "\en"
+for newline, as well as excaped hexadecimal and octal characters like
+\exHH and \eoOOO but these are constants, not variables, and cannot be
+redefined\&.
+
+Depending on the value of "math mode" (flag -q)\&. you can also use
+\fC:#:string_or_var:\fR to get the length of a string, and \fC:@:string_or_var:\fR
+to do basic mathematics and inequality testing, either only in EVALs
+or for all var-expanded expressions\&. See "Sequence of Evaluation"
+below for more details\&.
+.SH PROGRAM BEHAVIOR
+Default behavior is to read all of standard input till EOF into the
+default data window (named \fC:_dw:\fR), then execute the program (this is
+overridden if first executable statement is a WINDOW statement)\&.
+
+Variables don\&'t get their own storage unless you ISOLATE them (see
+below), instead variables are start/length pairs indexing into the
+default data window\&. Thus, ALTERing an unISOLATEd variable changes
+the value of the default data buffer itself\&. This is a great power,
+so use it only for good, and never for evil\&.
+.SH STATEMENTS AND STUFF
+Statements are separated with a \&';\&' or with a newline\&.
+
+.ZI 8m "\e"
+\&
+.br
+\&'\e\&' is the string-text escape character\&. You only \fIneed\fP to
+escape the literal representation of closing delimiters inside var-expanded
+arguments\&.
+
+You can use the classic C/C++ \e-escapes, such as \en, \er,
+\et, \ea, \eb, \ev, \ef, \e0, and also \exHH and \eoOOO for hex and
+octal characters, respectively\&.
+
+A \&'\e\&' as the \fIlast\fP character of a line means the next line
+is just a continuation of this one\&.
+
+A \e-escape that isn\&'t recognized as something special isn\&'t
+an error; you may \fIoptionally\fP escape any of the delimiters
+\fC>\fR, \fC)\fR \fC]\fR \fC}\fR \fC;\fR \fC/\fR \fC#\fR \fC\e\fR and get just
+that character\&.
+
+A \&'\e\&' anywhere else is just a literal backslash, so the regex
+([abc])\e1 is written just that way; there is no need to
+double-backslash the \e1 (although it will work if you do)\&.
+.in -8m
+.ZI 8m "# this is a comment"
+\&
+'in -8m
+.ZI 8m "# and this too \e#"
+\&
+'in -8m
+'in +8m
+\&
+.br
+A comment is not a piece of preprocessor
+sugar -- it is a \fIstatement\fP and ends at the newline or at "\e#"\&.
+.in -8m
+.ZI 8m "insert filename"
+\&
+.br
+inserts the file verbatim at this line at compile
+time\&.
+.in -8m
+.ZI 8m ";"
+\&
+.br
+statement separator - must ALWAYS be escaped as \e; unless it\&'s
+inside delimiters or else it will mark the end of the statement\&.
+.in -8m
+.ZI 8m "{ and }"
+\&
+.br
+start and end blocks of statements\&. Must always be \&'\e\&'
+escaped or inside delimiters or these will mark the start/end of a
+block\&.
+.in -8m
+.ZI 8m "noop"
+\&
+.br
+no-op statement
+.in -8m
+.ZI 8m ":label:"
+\&
+.br
+define a GOTOable label
+.in -8m
+.ZI 8m "accept"
+\&
+.br
+writes the current data window to standard output; execution
+continues\&.
+.in -8m
+.ZI 8m "alius"
+\&
+.br
+if the last bracket-group succeeded, ALIUS skips to end of {}
+block (a skip, not a FAIL); if the prior group FAILed, ALIUS does
+nothing\&. Thus, ALIUS is both an ELSE clause and a CASE statement\&.
+.in -8m
+.ZI 8m "alter (:var:) /new-val/"
+\&
+.br
+destructively change value of var to newval;
+(:var:) is var to change (var-expanded); /new-val/ is value to change
+to (var-expanded)\&.
+.in -8m
+.ZI 8m "classify <flags> (:c1:\&.\&.\&.|\&.\&.\&.:cN:) (:stats:) [:in:] /word-pat/"
+\&
+.br
+compare the statistics of the current data window buffer with classfiles
+c1\&.\&.\&.cN\&.
+
+.ZI 17m "<flags>"
+If <flags> is set to <nocase>, ignore case in
+word-pat, does not change case in hash (use tr() to do that on
+:in: if you want it)\&.
+.in -17m
+.ZI 17m "(:c1: \&.\&.\&."
+file or files to consider "success" files\&. The
+CLASSIFY succeeds if these files as a group match best\&. If not,
+the CLASSIFY does a FAIL\&.
+.in -17m
+.ZI 17m "|"
+optional separator\&. Spaces on each side of the " | " are
+required\&.
+.in -17m
+.ZI 17m "\&.\&.\&.\&. :cN:)"
+optional files to the right of " | " are considered
+as a group to "fail"\&. If statement fails, execution skips to end
+of enclosing {\&.\&.} block, which exits with a FAIL status (see
+ALIUS for why this is useful)\&.
+.in -17m
+.ZI 17m "(:stats:)"
+optional var that will get a text formatted matching
+summary
+.in -17m
+.ZI 17m "[:in:]"
+restrict statistical measure to the string inside :in:
+.in -17m
+.ZI 17m "/word-pat/"
+regex to describe what a parseable word is\&.
+.in -17m
+.in -8m
+.ZI 8m "eval (:result:) /instring/"
+\&
+.br
+repeatedly evaluates /instring/ until it
+ceases to change, then places that result
+as the value of :result: \&. EVAL uses
+smart (but foolable) heuristics to avoid
+infinite loops, like evaluating a string
+that evaluates to a request to evaluate
+itself again\&. The error rate is about
+1 / 2^62 and will detect chain groups of
+length 255 or less\&.
+If the instring uses math evaluation
+(see section below on math operations)
+and the evaluation has an inequality
+test, (>, < or =) then if the inequality
+fails, the EVAL will FAIL to the end of
+block\&. If the evaluation has a numeric
+fault (e\&.g\&. divide-by-zero) the EVAL will
+do a TRAPpable FAULT\&.
+.in -8m
+.ZI 8m "exit /:retval:/"
+\&
+.br
+ends program execution\&. If supplied, the
+return value is converted to an integer
+and returned as the exit code of the
+crm114 program\&. If no retval is supplied,
+the return value is 0\&.
+.in -8m
+.ZI 8m "fail"
+\&
+.br
+skips down to end of the current { } block
+and causes that block to exit with a FAIL
+status (see ALIUS for why this is useful)
+.in -8m
+.ZI 8m "fault /faultstr/"
+\&
+.br
+forces a FAULT with the given string as
+the reason\&. The fault string is
+val-expanded\&.
+.in -8m
+.ZI 8m "goto /:label:/"
+\&
+.br
+unconditional branch (you can use a variable as the
+goal, e\&.g\&. /:*:there:/ )
+.in -8m
+.ZI 8m "hash (:result:) /input/"
+\&
+.br
+compute a fast 32-bit hash of the /input/,
+and ALTER :result: to the
+hexadecimal hash value\&. HASH is
+\fInot\fP warranted to be constant across
+major releases of CRM114, nor is it
+cryptographically secure\&.
+
+.ZI 17m "(:result:)"
+value that gets result\&.
+.in -17m
+.ZI 17m "/input/"
+string to be hashed (can contain expanded :*:vars:,
+defaults to the data window :_dw:)
+.in -17m
+.in -8m
+.ZI 8m "intersect (:out:) [:var1: :var2: \&.\&.\&.]"
+\&
+.br
+makes :out: contain the part of
+the data window that is the intersection of
+:var1 :var2: \&.\&.\&. ISOLATEd vars are ignored\&.
+This only resets the value of the captured
+variable, and does NOT alter any text in
+the data window\&.
+.in -8m
+.ZI 8m "isolate (:var:) /initial-value/"
+\&
+.br
+puts :var: into a data area outside of
+the data buffer; subsequent changes to this
+var don\&'t change the data buffer (though
+they may change the value of any var
+subsequently set inside of this var)\&.
+If the var already was ISOLATED, this is
+a noop\&.
+
+.ZI 17m "(:var:)"
+name of ISOLATEd var (var-expanded)
+.in -17m
+.ZI 17m "/initial-value/"
+optional initial value for :var:
+(var-expanded)\&. If no value is supplied,
+the previous value is retained/copied\&.
+.in -17m
+.in -8m
+.ZI 8m "input <flags> (:result:) [:filename:]"
+\&
+.br
+read in the content of filename\&.
+If no filename, then read stdin
+
+.ZI 17m "<byline>"
+read one line only
+.in -17m
+.ZI 17m "(:result:)"
+var that gets the input value
+.in -17m
+.ZI 17m "[:filename:]"
+the file to read
+.in -17m
+.in -8m
+.ZI 8m "learn <flags> (:class:) [:in:] /word-pat/"
+\&
+.br
+learn the statistics of
+the :in: var (or the input window if no
+var) as an example of class :class:
+
+.ZI 17m "<flags>"
+can be any of <nocase>, <refute> and <microgroom>\&.
+<nocase>: ignore case in matching word-pat (does not ignore case in
+hash- use tr() to do that on :in: if you want it)\&. <refute>: this is
+an anti-example of this class- unlearn it! <microgroom>: enable the
+microgroomer to purge less-important information automatically
+whenever the statistics file gets to crowded\&.
+.in -17m
+.ZI 17m "(:class:)"
+name of file holding hashed results; nominal file
+extension is \&.css
+.in -17m
+.ZI 17m "[:in:]"
+captured var containing the text to be learned (if
+omitted, the full contents of the data window is used)
+.in -17m
+.ZI 17m "/word-pat/"
+regex that defines a "word"\&. Things that aren\&'t
+"words" are ignored\&.
+.in -17m
+.in -8m
+.ZI 8m "liaf"
+\&
+.br
+skips UP to START of the current {} block (LIAF is FAIL
+spelled backwards)
+.in -8m
+.ZI 8m "match <flags> (:var1: \&.\&.\&.) [:in:] /regex/"
+\&
+.br
+Attempt to match the given
+regex; if match succeds, variables are bound; if match fails, program
+skips to the closing \&'}\&' of this block
+
+.ZI 17m "<flags>"
+flags can be any of
+
+.ZI 3m "<absent>"
+statement succeeds if match not present
+.in -3m
+.ZI 3m "<nocase>"
+ignore case when matching
+.in -3m
+.ZI 3m "<fromstart>"
+start match at start of the [:in:] var
+.in -3m
+.ZI 3m "<fromcurrent>"
+start match at start of previous successful
+match on the [:in:] var
+.in -3m
+.ZI 3m "<fromnext>"
+start match at one character past the start of
+the previous successful match on the [:in:] var
+.in -3m
+.ZI 3m "<fromend>"
+start match at one character past the end of
+prev\&. match on this [:in:] var
+.in -3m
+.ZI 3m "<newend>"
+require match to end after end of prev\&. match on
+this [:in:] var
+.in -3m
+.ZI 3m "<backwards>"
+search backward in the [:in:] variable from the
+last successful match\&.
+.in -3m
+.ZI 3m "<nomultiline>"
+don\&'t allow this match to span lines
+.in -3m
+.in -17m
+.ZI 17m "(:var1: \&.\&.\&.)"
+optional variables to bind to regex result and
+\&'(\&' \&')\&' subregexes
+.in -17m
+.ZI 17m "[:in:]"
+search only in the variable specified; if omitted, :_dw:
+(the full input data window) is used
+.in -17m
+.ZI 17m "/regex/"
+POSIX regex (with \e escapes as needed)
+.in -17m
+If you build CRM114 to use the GNU regex library for MATCHing,
+be warned that GNU REGEX has numerous issues\&. See the
+KNOWN_BUGS file for a detailed listing\&.
+.in -8m
+.ZI 8m "output <flags> [filename] /output-text/"
+\&
+.br
+output an arbitrary string
+with captured values expanded\&.
+
+.ZI 17m "<flags>"
+<append>: append to the file (otherwise, overwrites)
+.in -17m
+.ZI 17m "[filename]"
+filename to send output (var-expanded), default output
+is to stdout
+.in -17m
+.ZI 17m "/output-text/"
+string to output (var-expanded)
+.in -17m
+.in -8m
+.ZI 8m "syscall <flags> (:in:) (:out:) (:status:) /command/"
+\&
+.br
+execute a shell
+command
+
+.ZI 17m "<flags>"
+can be any of <keep> and <async>\&. <keep>: keep this
+process around; if kept, then a syscall with the same :keep: var will
+continue feeding to and reading from the kept proc\&. <async>: don\&'t
+wait for process to send an EOF; just grab what\&'s available in
+the process\&'s output pipe and proceed (limit per syscall is 256 Kbytes)
+.in -17m
+.ZI 17m "(:in:)"
+var-expanded string to feed to command as input (can be
+null if you don\&'t want to send the process something\&.) You \fBmust\fP
+specify this if you want to specify an :out: variable\&.
+.in -17m
+.ZI 17m "(:out:)"
+var-expanded varname to place results into (\fBmust\fP
+pre-exist, can be null if you don\&'t want to read the process\&'s
+output (yet, or at all)\&. Limit per syscall is 256 Kbytes\&. You
+\fBmust\fP specify this if you want to use the :status: variable)
+.in -17m
+.ZI 17m "(:status:)"
+if you want to keep a minion proc around, or catch the
+exit status of the process, specify a var here\&. The minion process\&'s
+PID and pipes will be stored here\&. The program can access the proc
+again with another syscall by using this var again\&. When the process
+exits, it\&'s exit code will be stored here\&.
+.in -17m
+.in -8m
+.ZI 8m "trap (:reason:) /trap_regex/"
+\&
+.br
+traps faults from both FAULT statements
+and program errors occurring anywhere in the preceding bracket-block\&. If
+no fault exists, TRAP does a SKIP to end of block\&. If there is a fault
+and the fault reason string matches the trap_regex, the fault is trapped,
+and execution continues with the line after the TRAP, otherwise the fault
+is passed up to the next surrounding trapped bracket block\&.
+
+.ZI 17m "(:reason:)"
+the fault message that caused this FAULT\&. If it was a
+user fault, this is the text the user supplied in the FAULT statement\&.
+.in -17m
+.ZI 17m "/trap_regex/"
+the regex that determines what kind of faults this
+TRAP will accept\&. Putting a wildcard here (e\&.g\&. /\&.*/ means that ALL
+faults will be trapped here\&.
+.in -17m
+.in -8m
+.ZI 8m "union (:out:) [:var1: :var2: \&.\&.\&.]"
+\&
+.br
+makes :out: contain the union of
+the data window segments that contains var1, var2\&.\&.\&. plus any intervening
+text as well\&. Any ISOLATEd var is ignored\&. This is non-surgical, and
+does not alter the data window
+.in -8m
+.ZI 8m "window <flags> (:w-var:) (:s-var:) /cut-regex/ /add-regex/"
+\&
+.br
+window
+slider\&. This deletes to and including the cut-regex from :var: (default:
+use the data window), then reads adds from std\&. input till add-regex
+(inclusive)\&.
+
+.ZI 17m "<flags>"
+flags can be any of
+
+.ZI 17m "<nocase>"
+ignore case when matching cut- and add- regexes
+.in -17m
+.ZI 17m "<bychar>"
+check input for add-regex every character
+.in -17m
+.ZI 17m "<byline>"
+check input for add-regex every line
+.in -17m
+.ZI 17m "<byeof>"
+wait for EOF to check for add-regex (extra characters
+are kept around for later)
+.in -17m
+.ZI 17m "<eofends>"
+read lots of input; the input is up to the regex
+match OR the contents till EOF
+.in -17m
+.in -17m
+.ZI 17m "(:w-var:)"
+what var to window
+.in -17m
+.ZI 17m "(:s-var:)"
+what var to use for source (defaults to stdin, if you
+use a source var you \fBmust\fP specify the windowed var\&.
+.in -17m
+.ZI 17m "/cut-regex/"
+var-expanded cut pattern
+.in -17m
+.ZI 17m "/add-regex/"
+var-expanded add pattern, if absent reads till EOF
+.in -17m
+If both cut-regex and add-regex are omitted, and this window statement is
+the \fIfirst executable\fP statement in the program, then CRM114 does
+\fInot\fP wait to read a anything from standard input input before starting
+program execution\&.
+.in -8m
+.SH A QUICK REGEX INTRO
+A regex is a pattern match\&. Do a "man 7 regex" for details\&.
+
+Matches are, by default "first starting point that matches, then
+longest match possible that can fit"\&.
+
+.ZI 8m "a through z"
+\&
+'in -8m
+.ZI 8m "A through Z"
+\&
+'in -8m
+.ZI 8m "0 through 9"
+\&
+'in -8m
+'in +8m
+\&
+.br
+all match themselves\&.
+.in -8m
+.ZI 8m "most punctuation"
+\&
+.br
+matches itself, but check below!
+.in -8m
+.ZI 8m "*"
+\&
+.br
+repeat preceding 0 or more times
+.in -8m
+.ZI 8m "+"
+\&
+.br
+repeat preceding 1 or more times
+.in -8m
+.ZI 8m "?"
+\&
+.br
+repeat preceding 0 or 1 time
+.in -8m
+.ZI 8m "*?, +?, ??"
+\&
+.br
+repeat preceding, but \fIshortest\fP match that fits, given
+the already-selected start point of the regex\&. (only
+supported by TRE regex, not GNU regex)
+.in -8m
+.ZI 8m "[abcde]"
+\&
+.br
+any one of the letters a, b, c, d, or e
+.in -8m
+.ZI 8m "[a-q]"
+\&
+.br
+the letters a through q (just one of them)
+.in -8m
+.ZI 8m "{n,m}"
+\&
+.br
+repetition count: match the preceding at least n and no more
+than m times (POSIX restricts this to a maximum of 255
+repeats)
+.in -8m
+.ZI 8m "[[:<:]]"
+\&
+.br
+matches at the start of a word (GNU regex only)
+.in -8m
+.ZI 8m "[[:>:]]"
+\&
+.br
+matches the end of a word (GNU regex only)
+.in -8m
+.ZI 8m "^"
+\&
+.br
+as first char of a match, matches the start of a line (ONLY in
+<nomultiline> matches\&.
+.in -8m
+.ZI 8m "$"
+\&
+.br
+as last char of a match, matches at the end of a line (ONLY in
+<nomultiline> matches)
+.in -8m
+.ZI 8m "\&."
+\&
+.br
+(a period) matches any single character (except start-of-line or
+end of line "virtual characters", but it does match a newline)\&.
+.in -8m
+.ZI 8m "a|b"
+\&
+.br
+match a or b
+.in -8m
+.ZI 8m "(match)"
+\&
+.br
+the () go away, and the string that matched inside is
+available for capturing\&. Use \e\e( and \e\e) to match actual
+parenthesis (the first \&'\e\&' tells "show the second \&'\e\&' to
+the regex engine, the second \&'\e\&' forces a literalization
+onto the parenthesis character\&.
+.in -8m
+.ZI 8m "\en"
+\&
+.br
+matches the N\&'th parenthesized subexpression\&. Remember to
+backslash-escape the backslash (e\&.g\&. write this as \e\e1)
+This is only if you\&'re using TRE, not GNU regex\&.
+.in -8m
+The following are other POSIX expressions, which mostly do what you\&'d
+guess they\&'d do from their names\&.
+
+.di ZV
+.in 0
+.nf \fC
+
+  [[:alnum:]]
+  [[:alpha:]]
+  [[:blank:]]
+  [[:cntrl:]]
+  [[:digit:]]
+  [[:lower:]]
+  [[:upper:]]
+  [[:graph:]]
+  [[:print:]]
+  [[:punct:]]
+  [[:space:]]
+  [[:xdigit:]]
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+[[:graph:]] matches any character that puts ink on paper or lights a pixel\&.
+[[:print:]] matches any character that moves the "print head" or cursor\&.
+.SH NOTES ON SEQUENCE OF EVALUTATION
+By default, CRM114 supports string length and mathematical evaluation
+only in an EVAL statement, although it can be set to allow these in
+any place where a var-expanded variable is allowed (see the -q flag)\&.
+The default value ( zero ) allows stringlength and math evaluation
+only in EVAL statements, and uses non-precedence (that is, strict
+left-to-right unless parenthesis are used) algebraic notation\&. -q 1
+uses RPN instead of algebraic, again allowing stringlength and math
+evaluation only in EVAL expressions\&. Modes 2 and 3 allow stringlength
+and math evaluation in \fIany\fP var-expanded expression, with
+non-precedence algebraic notation and RPN notation respectively\&.
+Evaluation is always left-to-right; there is no precedence of
+operators beyond the sequential passes noted below\&.
+The evaluation is done in four sequential passes:
+
+.ZI 3m "1"
+\e-constants like \en, \eo377 and \ex3F are substituted
+.in -3m
+.ZI 3m "2"
+:*:var: variables are substituted (note the difference between
+a constant like \&'\en\&' and a variable like ":*:_nl:" here - constants
+are substituted first, then variables are substituted\&.)
+.in -3m
+.ZI 3m "3"
+:#:var: string-length operations are performed
+.in -3m
+.ZI 3m "4"
+:@:expression: mathematical expressions are performed; syntax is
+either RPN or non-precedenced (parens required) algebraic
+notation\&. Embedded non-evaluated strings in a mathematical
+expression is currently a no-no\&.
+
+Allowed operators are: + - * / % > < = only\&.
+
+Only >, <, and = set logical results; they also evaluate to
+1 and 0 for continued chain operations - e\&.g\&.
+
+.di ZV
+.in 0
+.nf \fC
+((:*:a: > 3) + (:*:b: > 5) + (:*:c: > 9) > 2)
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+is true IFF any of the following is true
+
+.ZI 3m "\(bu"
+a > 3 and b > 5
+.in -3m
+.ZI 3m "\(bu"
+a > 3 and c > 9
+.in -3m
+.ZI 3m "\(bu"
+b > 5 and c > 9
+.in -3m
+.in -3m
+.SH NOTES ON APPROXIMATE REGEX MATCHING
+Only the TRE engine supports approximate matching\&. The GNU engine does
+not support approximate matching\&.
+
+Approximate matching is specified similarly to a "repetition count" in
+a regular regex, using brackets\&. This approximation applies to the
+previous parenthesized expression (again, just like repetion counts)\&.
+You can specify maximum total changes, and how many inserts, deletes,
+and substitutions you wish to allow\&. The minimum-error match is found
+and reported, if it exists within the bounds you state\&.
+
+The basic syntax is:
+
+.di ZV
+.in 0
+.nf \fC
+(text-to-match){~[maxerrs] [#maxsubsts] [+maxinserts] [-maxdeletes]}
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+Note that the \&'~\&' (with an optional maxerr count) is \fIrequired\fP (that\&'s how
+we know it\&'s an approximate regex rather than just a rep-count); if you
+don\&'t specify a max error count, you will get the best match, if you do,
+the match will have at most that many errors\&.
+
+Remember that you specify the changes to the text in the \fIpattern\fP
+necessary to make it match the text in the string being searched\&.
+
+You cannot use approximate regexes and backrefs (like \e1) in the same
+regex\&. This is a limitation of in TRE at this point\&.
+
+You can also use an inequality in addition to the basic syntax above:
+
+.di ZV
+.in 0
+.nf \fC
+(text-to-match){~[maxerrs] [basic-syntax] [nI + mD + oS < K] }
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+where n, m, and o are the costs per insertion, deletion, and substitution
+respectively, \&'I\&', \&'D\&', and \&'S\&' are indicators to tell which cost goes
+with which kind of error, and K is the total cost of the errors; the cost
+of the errors is always strictly less than K\&.
+Here are some examples\&.
+
+.ZI 8m "(foobar)"
+\&
+.br
+exactly matches "foobar"
+.in -8m
+.ZI 8m "(foobar){~}"
+\&
+.br
+finds the closest match to "foobar", with the minimum
+number of inserts, deletes, and substitutions\&. Always succeeds\&.
+.in -8m
+.ZI 8m "(foobar){~3}"
+\&
+.br
+finds the closest match to "foobar", with no more than
+3 inserts, deletes, or substitutions
+.in -8m
+.ZI 8m "(foobar){~2 +2 -1 #1)"
+\&
+.br
+find the closest match to "foobar", with at
+most two errors total, and at most two inserts, one delete, and one
+substitution\&.
+.in -8m
+.ZI 8m "(foobar){~4 #1 1i + 2d < 5 }"
+\&
+.br
+find the closest match to "foobar",
+with at most four errors total, at most one substitution, and with the
+number of insertions plus 2x the number of deletions less than 5\&.
+.in -8m
+.ZI 8m "(foo){~1}(bar){~1)"
+\&
+.br
+find the closest match to "foobar", with at
+most one error in the "foo" and one error in the "bar"\&.
+.in -8m
+.SH OVERALL LANGUAGE NOTES
+Here\&'s how to remember what goes where in the CRM114 language\&.
+
+Unlike most computer languages, CRM114 uses inflection (or declension)
+rather than position to describe what role each part of a statement
+plays\&. The declensions are marked by the delimiters- the /, ( and ), <
+and >, and [ and ]\&.
+
+By and large, you can mix up the arguments to each kind of statement
+without changing their meaning\&. Only the ACTION needs to be first\&.
+Other parts of the statement can occur in any order, save that
+multiple (paren_args) and /pattern_args/ must stay in their nominal
+order but can go anywhere in the statement\&. They do not need to be
+consecutive\&.
+
+The parts of a CRM114 statement are:
+
+.ZI 17m "ACTION"
+the verb\&. This is at the start of the statement\&.
+.in -17m
+.ZI 17m "/pattern/"
+the overall pattern the verb should use, analogous to the
+"subject" of the statement\&.
+.in -17m
+.ZI 17m "<flags>"
+modifies how the ACTION does the work\&. You\&'d call these
+"adverbs" in human languages\&.
+.in -17m
+.ZI 17m "(vars)"
+what variables to use as adjuncts in the action (what would
+be called the "direct objects")\&. These can get changed when the action
+happens\&.
+.in -17m
+.ZI 17m "[limited-to]"
+where the action is allowed to take place (think of it
+as the "indirect object")\&. These are not directly changed by the action\&.
+.in -17m
+.SH SEE ALSO
+\fBcssmerge(1)\fP, \fBcssdiff(1)\fP, \fBcssutil(1)\fP
+
+The CRM114 homepage is at http://crm114\&.sf\&.net/ \&.
+.SH VERSION
+This manpage: $Id: crm114\&.azm,v 1\&.12 2004/08/19 11:10:49 vanbaal Exp $
+
+This manpage describes the crm114 utility as it has been described by
+QUICKREF\&.txt, shipped with crm114-20040212-BlameJetlag\&.src\&.tar\&.gz\&. The
+DESCRIPTION section is copy-and-pasted from INTRO\&.txt as distributed with the
+same source tarball\&.
+
+Converted from plain ascii to zoem by Joost van Baal\&.
+.SH COPYRIGHT
+Copyright (C) 2001, 2002, 2003, 2004 William S\&. Yerazunis
+
+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
+the 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 (see COPYING); if not, check with
+http://www\&.gnu\&.org/copyleft/gpl\&.html or write to the Free Software
+Foundation, Inc\&., 59 Temple Place - Suite 330, Boston, MA 02111, USA\&.
+.SH AUTHOR
+William S\&. Yerazunis\&. Manpage typesetting by Joost van Baal and Shalendra Chhabra
--- crm114-20070810.orig/debian/install
+++ crm114-20070810/debian/install
@@ -0,0 +1 @@
+classifymail.crm mailfilter.cf mail*.crm rewriteutil.crm usr/share/crm114
--- crm114-20070810.orig/debian/compat
+++ crm114-20070810/debian/compat
@@ -0,0 +1 @@
+4
--- crm114-20070810.orig/debian/control
+++ crm114-20070810/debian/control
@@ -0,0 +1,28 @@
+Source: crm114
+Section: mail
+Priority: optional
+Maintainer: Milan Zamazal <pdm@debian.org>
+Build-Depends: debhelper (>= 4.2), libtre-dev (>= 0.6.8)
+Standards-Version: 3.7.2
+
+Package: crm114
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: metamail | mew-bin
+Description: The Controllable Regex Mutilator and Spam Filter
+ CRM114 is a system to examine incoming e-mail, system log streams, data
+ files or other data streams, and to sort, filter, or alter the incoming
+ files or data streams according to whatever the user desires. Criteria for
+ categorization of data can be by satisfaction of regexes, by sparse binary
+ polynomial matching with a Bayesian Chain Rule evaluator, or by other means.
+ Accuracy of the SBPH/BCR classifier has been seen in excess of 99 per cent,
+ for 1/4 megabyte of learning text. In other words, CRM114 learns, and it
+ learns fast.
+ .
+ CRM114 is compatible with SpamAssassin or other spam-flagging software; it
+ can also be pipelined in front of or behind procmail. CRM114 is also useful
+ as a syslog or firewall log filter, to alert you to important events but
+ ignore the ones that aren't meaningful.
+ .
+ For mailfiltering you need to install metamail or mew-bin package to have
+ some tool to decode mime attachments.
--- crm114-20070810.orig/debian/copyright
+++ crm114-20070810/debian/copyright
@@ -0,0 +1,26 @@
+This package was debianized by John Goerzen <jgoerzen@complete.org> on
+Tue, 21 Jan 2003 15:49:23 -0600.
+
+This package was redebianized by Ondřej Surý <ondrej@sury.org> on
+Sat, 21 Feb 2004 19:05:34 +0100.
+
+This package was redebianized again by Milan Zamazal <pdm@debian.org> in 2005.
+
+It was downloaded from http://crm114.sourceforge.net/
+
+Upstream Author: Bill Yerazunis, wsy at users dot sourceforge dot net
+
+Copyright:
+
+  Copyright 2001-2006  William S. Yerazunis, all rights reserved.
+  
+  This software is licensed to the public under the Free Software
+  Foundation's GNU GPL, version 2.  You may obtain a copy of the
+  GPL by visiting the Free Software Foundations web site at
+  www.fsf.org, and a copy is included in this distribution.  
+
+  Other licenses may be negotiated; contact the 
+  author for details.  
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
--- crm114-20070810.orig/debian/cssdiff.1
+++ crm114-20070810/debian/cssdiff.1
@@ -0,0 +1,104 @@
+.\" Copyright (c) 2004 William S\&. Yerazunis\&. Manpage typesetting by Joost van Baal and Shalendra Chhabra
+.TH "cssdiff" 1 "19 Aug 2004" "cssdiff 20040816\&.BlameClockworkOrange-auto\&.3" "CRM114"
+.po 2m
+.de ZI
+.\" Zoem Indent/Itemize macro I.
+.br
+'in +\\$1
+.nr xa 0
+.nr xa -\\$1
+.nr xb \\$1
+.nr xb -\\w'\\$2'
+\h'|\\n(xau'\\$2\h'\\n(xbu'\\
+..
+.de ZJ
+.br
+.\" Zoem Indent/Itemize macro II.
+'in +\\$1
+'in +\\$2
+.nr xa 0
+.nr xa -\\$2
+.nr xa -\\w'\\$3'
+.nr xb \\$2
+\h'|\\n(xau'\\$3\h'\\n(xbu'\\
+..
+.if n .ll -2m
+.am SH
+.ie n .in 4m
+.el .in 8m
+..
+.SH NAME
+\fBcssdiff\fP \- generate a difference summary of two \&.css files
+.SH SYNOPSIS
+
+\fBcssdiff\fP
+[cssfile 1]
+[cssfile 2]
+.SH WARNING
+This man page is taken from an older CRM114 version.  It is provided as a
+convenience to Debian users and may not be up-to-date.  If you would like to
+update it, please send appropriate patches to the Debian bug tracking system.
+.SH DESCRIPTION
+\fBcssdiff\fP is a special-purpose utility to measure the distance
+between the classes represented by cssfile1 and cssfile2\&.
+The summary result output tells how many features were in each
+of the \&.css files, how many features appeared in both (balanced overlap),
+how many features appeared only in one (or unbalanced overlaps), and
+how often the feature set of one \&.css file strictly dominated the
+feature set of another \&.css file\&.
+This set of metrics provides an intuitive way to determine the
+similarity (or dissimilarity) of two classes represented as
+\&.css files\&.
+When using the CRM114 spamfilter, it can be used to find out how easy it will
+be for CRM114 to differentiate spam from nonspam with your \&.css files\&.
+\fBcssdiff\fP prints a report like e\&.g\&.
+
+.di ZV
+.in 0
+.nf \fC
+   Sparse spectra file spam\&.css has 1048577 bins total
+   Sparse spectra file nonspam\&.css has 1048577 bins total
+
+   File 1 total features            :      1605968
+   File 2 total features            :      1045152
+
+   Similarities between files       :       142039
+   Differences between files        :      1279964
+
+   File 1 dominates file 2          :      1463929
+   File 2 dominates file 1          :       903113
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+Note that in this case there\&'s a big difference between the two files; in this
+case there are about 10 times as many differences between the two files as
+there are similarities\&.
+.SH OPTIONS
+There are no options to cssdiff\&.
+.SH SHORTCOMINGS
+Note that \fBcssdiff\fP as of version 20040816 is NOT capable of dealing
+with the CRM114 Winnow classifier\&'s floating-point \&.cow files\&. Worse,
+\fBcssdiff\fP is unaware of it\&'s shortcomings, and will try anyway\&. The only
+recourse is to be aware of this issue and not use \fBcssdiff\fP on Winnow
+classifier floating point \&.cow format files\&.
+.SH HOMEPAGE AND REPORTING BUGS
+http://crm114\&.sourceforge\&.net/
+.SH VERSION
+This manpage: $Id: cssdiff\&.azm,v 1\&.5 2004/08/19 09:06:44 vanbaal Exp $
+This manpage describes cssdiff as shipped with crm114 version
+20040816\&.BlameClockworkOrange\&.
+.SH AUTHOR
+William S\&. Yerazunis\&. Manpage typesetting by Joost van Baal and Shalendra Chhabra
+.SH COPYRIGHT
+Copyright (C) 2001, 2002, 2003, 2004 William S\&. Yerazunis\&.
+This is free software, copyrighted under the FSF\&'s GPL\&.
+There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE\&. See the file COPYING for more details\&.
+.SH SEE ALSO
+\fBcssutil(1)\fP, \fBcssmerge(1)\fP,
+\fBcrm(1)\fP, \fBcssmerge(1)\fP
--- crm114-20070810.orig/debian/cssutil.1
+++ crm114-20070810/debian/cssutil.1
@@ -0,0 +1,240 @@
+.\" Copyright (c) 2004 William S\&. Yerazunis\&. Manpage typesetting by Joost van Baal and Shalendra Chhabra
+.TH "cssutil" 1 "19 Aug 2004" "cssutil 20040816\&.BlameClockworkOrange-auto\&.3" "CRM114"
+.po 2m
+.de ZI
+.\" Zoem Indent/Itemize macro I.
+.br
+'in +\\$1
+.nr xa 0
+.nr xa -\\$1
+.nr xb \\$1
+.nr xb -\\w'\\$2'
+\h'|\\n(xau'\\$2\h'\\n(xbu'\\
+..
+.de ZJ
+.br
+.\" Zoem Indent/Itemize macro II.
+'in +\\$1
+'in +\\$2
+.nr xa 0
+.nr xa -\\$2
+.nr xa -\\w'\\$3'
+.nr xb \\$2
+\h'|\\n(xau'\\$3\h'\\n(xbu'\\
+..
+.if n .ll -2m
+.am SH
+.ie n .in 4m
+.el .in 8m
+..
+.SH NAME
+\fBcssutil\fP \- utility to measure and manipulate CRM114 statistics files\&.
+.SH SYNOPSIS
+
+\fBcssutil\fP
+[\&.css file]
+[OPTIONS]
+.SH WARNING
+This man page is taken from an older CRM114 version.  It is provided as a
+convenience to Debian users and may not be up-to-date.  If you would like to
+update it, please send appropriate patches to the Debian bug tracking system.
+.SH OPTIONS
+
+.ZI 3m "\fB-h\fP"
+\&
+.br
+print basic help
+.in -3m
+
+.ZI 3m "\fB-b\fP"
+\&
+.br
+brief - print only a summary of the statistics of the
+\&.css file (otherwise, prints a full list of how many bins are in each counter
+state)
+.in -3m
+
+.ZI 3m "\fB-q\fP"
+\&
+.br
+quiet mode; no warning messages
+.in -3m
+
+.ZI 3m "\fB-r\fP"
+\&
+.br
+report then exit (no menu)\&. The default if -r is not
+specified is to drop into a command-menu based system\&.
+.in -3m
+
+.ZI 3m "\fB-s\fP"
+\&
+.br
+if no css file found, create new one with this
+many buckets\&. Default is 1 million + 1 buckets
+.in -3m
+
+.ZI 3m "\fB-S\fP"
+\&
+.br
+same as -s, but round up to next 2^n + 1 boundary\&.
+.in -3m
+
+.ZI 3m "\fB-v\fP"
+\&
+.br
+print version and exit
+.in -3m
+
+.ZI 3m "\fB-D\fP"
+\&
+.br
+dump css file to stdout in the architecture-independent
+CSV format, suitable for reloading with -R in an architecture\&. (note that \&.css
+files are a hardware-architecture dependent format)
+.in -3m
+
+.ZI 3m "\fB-R\fP"
+\&
+.br
+create and restore css from the
+hardware-architecture independent CSV format file (reads from stdin if csv-file
+is not supplied\&.
+.in -3m
+.SH THE COMMAND MENU
+If -r is not supplied, a menu appears with the following options\&. Note that
+all of these operations are "in place" and surgical- there is NO undo
+functionality\&. Wise users will make a backup copy of all \&.css files before
+using cssutil to alter values\&.
+
+.ZI 3m "\fB-Z\fP"
+\&
+.br
+zero all bins at or below a value\&. This is useful for
+deleting all small-count features from the \&.css statistics files leaving
+higher-count features untouched\&.
+.in -3m
+
+.ZI 3m "\fB-S\fP"
+\&
+.br
+subtract a constant from all bins - this rolls all
+features back a constant amount\&.
+.in -3m
+
+.ZI 3m "\fB-D\fP"
+\&
+.br
+divide all bins by a constant - this rolls features back
+linearly, rather than in scalar fashion\&.
+.in -3m
+
+.ZI 3m "\fB-R\fP"
+\&
+.br
+rescan - regenerate the statistics output that was
+initially printed\&.
+.in -3m
+
+.ZI 3m "\fB-P\fP"
+\&
+.br
+pack - re-slot features to optimize access time\&.
+.in -3m
+
+.ZI 3m "\fB-Q\fP"
+\&
+.br
+- gracefully exit, saving changes\&. (note that since these
+operations are in-place and surgical, there is no option to exit without saving
+changes\&.
+.in -3m
+.SH DESCRIPTION
+\fBcssutil\fP is a general utility to manipulate and measure the \&.css format
+statistics files used by CRM114\&'s Markovian and OSB classifiers\&. The biggest
+uses are to check the available space remaining in a \&.css file, to selectively
+groom a \&.css file, and to port architecture-dependent \&.css files to and from an
+ASCII CSV format, which is architecture independent\&.
+The \fBcssutil\fP program can be used to create information-less
+\&.css files:
+
+.di ZV
+.in 0
+.nf \fC
+     cssutil -b -r spam\&.css
+     cssutil -b -r nonspam\&.css
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+\&. This creates the full-size files \&./spam\&.css and \&./nonspam\&.css,
+holding no information\&.
+The \fBcssutil\fP program can be used check that the \&.css files are reasonable\&.
+Invoke \fBcssutil\fP as:
+
+.di ZV
+.in 0
+.nf \fC
+    cssutil -b -r spam\&.css
+    cssutil -b -r nonspam\&.css
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+You should get back a report something like this:
+
+.di ZV
+.in 0
+.nf \fC
+     Sparse spectra file spam\&.css statistics:
+
+     Total available buckets          :      1048576
+     Total buckets in use             :       506987
+     Total hashed datums in file      :      1605968
+     Average datums per bucket        :         3\&.17
+     Maximum length of overflow chain :           39
+     Average length of overflow chain :         1\&.84
+     Average packing density          :         0\&.48
+.fi \fR
+.in
+.di
+.ne \n(dnu
+.nf \fC
+.ZV
+.fi \fR
+
+Note that the packing density is 0\&.48; this means that this \&.css file is about
+half full of features\&. Once the packing density gets above about 0\&.9, you will
+notice that CRM114 will take longer to process text\&. The penalty is small
+below packing densities below about 0\&.95 and only about a factor of 2 at 0\&.97 \&.
+Best is to keep it below \&.7 to \&.8\&.
+.SH SHORTCOMINGS
+Note that \fBcssutil\fP as of version 20040816 is NOT capable of dealing with the
+CRM114 Winnow classifier\&'s floating-point \&.cow files\&. Worse, \fBcssutil\fP is
+unaware of it\&'s shortcomings, and will try anyway\&. The only recourse is to be
+aware of this issue and not use \fBcssutil\fP on a Winnow classifier floating point
+\&.cow format file\&.
+.SH HOMEPAGE AND REPORTING BUGS
+http://crm114\&.sourceforge\&.net/
+.SH VERSION
+This manpage: $Id: cssutil\&.azm,v 1\&.4 2004/08/19 09:23:24 vanbaal Exp $
+This manpage describes cssutil as shipped with crm114 version
+20040816\&.BlameClockworkOrange\&.
+.SH AUTHOR
+William S\&. Yerazunis\&. Manpage typesetting by Joost van Baal and Shalendra Chhabra
+.SH COPYRIGHT
+Copyright (C) 2001, 2002, 2003, 2004 William S\&. Yerazunis\&. This is free
+software, copyrighted under the FSF\&'s GPL\&. There is NO warranty; not even for
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. See the file COPYING for
+more details\&.
+.SH SEE ALSO
+\fBcssmerge(1)\fP, \fBcssdiff(1)\fP,
+\fBcrm(1)\fP
--- crm114-20070810.orig/debian/dirs
+++ crm114-20070810/debian/dirs
@@ -0,0 +1,4 @@
+usr/bin
+usr/share/crm114
+usr/share/doc/crm114/examples/tests
+usr/share/emacs/site-lisp
--- crm114-20070810.orig/debian/NEWS
+++ crm114-20070810/debian/NEWS
@@ -0,0 +1,46 @@
+crm114 (20070810-2) unstable; urgency=low
+
+    crm114 20070810 introduces incompatibility of older .css files on 64-bit
+    architectures.  If you use a 64-bit system, your current .css files will
+    stop working correctly after the upgrade.  You need to recreate them from
+    scratch (possibly using your mailreaver cache).
+    
+ -- Milan Zamazal <pdm@debian.org>  Wed, 22 Aug 2007 07:58:04 +0200
+
+crm114 (20060704a-1) unstable; urgency=low
+
+    New versions of the scripts in /usr/share/crm114/ require changes in the
+    configuration file mailfilter.cf.  If you use your own configuration file
+    with the shared scripts then you must add new variables from the default
+    configuration file to your configuration.  And next time you should use
+    copies of the *.crm scripts instead of using them directly to avoid similar
+    problems on the next upgrade.
+
+    Some users have reported that this version of crm114 stopped working with
+    their *.css files and the *.css files had to be rebuilt from scratch.
+    
+ -- Milan Zamazal <pdm@debian.org>  Fri, 14 Jul 2006 10:14:54 +0200
+
+crm114 (20060118-1) unstable; urgency=low
+
+    The default classification method has changed from Markovian to OSB.
+    If you use the default script and configuration files
+    /usr/share/crm114/mailfilter.crm and /usr/share/crm114/mailfilter.cf (which
+    is a bad idea anyway -- copy them the next time and use the copies
+    instead), either copy them before the upgrade and switch your mail
+    classifier to using the copies, or save your old .css files and retrain
+    CRM114 after the upgrade.  See /usr/share/doc/crm114/README.gz for more
+    details.
+
+ -- Milan Zamazal <pdm@debian.org>  Tue,  7 Feb 2006 09:52:03 +0100
+
+crm114 (20050415-1) unstable; urgency=low
+
+    The package switched from the autoconfiscated version to the main
+    upstream CRM114 version.  This means, among other changes, that the
+    main CRM114 binary is no longer called /usr/bin/crm114, it is called
+    /usr/bin/crm instead.  If you or the users of your system used to use
+    the `crm114' name in their mail processing scripts, please update them
+    to use `crm'.
+
+ -- Milan Zamazal <pdm@debian.org>  Mon, 25 Apr 2005 12:07:15 +0200
