purged website sources
authorhaftmann
Wed, 12 Jul 2006 17:40:52 +0200
changeset 20110 c2ffa1783319
parent 20109 47fef41c68fb
child 20111 ba1676dd3546
purged website sources
Admin/website/.cvsignore
Admin/website/README
Admin/website/TODO
Admin/website/build/.cvsignore
Admin/website/build/cl-1.0.1.pl
Admin/website/build/img.memo.txt
Admin/website/build/localconf.at.template.mak
Admin/website/build/localconf.sun.template.mak
Admin/website/build/main.mak
Admin/website/build/make_dep.bash
Admin/website/build/mkcontents.pl
Admin/website/build/obfusmail.py
Admin/website/build/project.mak
Admin/website/build/pypager.py
Admin/website/build/set_perm.bash
Admin/website/build/xhtmlparse.py
Admin/website/community.html
Admin/website/conf/.cvsignore
Admin/website/conf/distinfo.mak
Admin/website/css/aelfwine.css
Admin/website/css/isabelle_base.css
Admin/website/css/isabelle_print.css
Admin/website/css/isabelle_screen.css
Admin/website/documentation.html
Admin/website/download.html
Admin/website/download_past.html
Admin/website/dtd/xhtml-lat1.ent
Admin/website/dtd/xhtml-special.ent
Admin/website/dtd/xhtml-symbol.ent
Admin/website/dtd/xhtml1-frameset.dtd
Admin/website/dtd/xhtml1-strict.dtd
Admin/website/dtd/xhtml1-transitional.dtd
Admin/website/faq.html
Admin/website/img/favicon.ico
Admin/website/img/isabelle.gif
Admin/website/img/isabelle_logo.gif
Admin/website/img/screenshot_isabelle_macos.gif
Admin/website/img/screenshot_isabelle_pg.png
Admin/website/img/tutorial_cover_big.gif
Admin/website/img/tutorial_cover_small.gif
Admin/website/img/univ_cambridge.gif
Admin/website/img/univ_tum.gif
Admin/website/img/world_map.gif
Admin/website/img/world_map_large.gif
Admin/website/include/documentationdist.include.html
Admin/website/include/downloadtable.include.html
Admin/website/include/footer.include.html
Admin/website/include/header.include.html
Admin/website/include/htmlheader.include.html
Admin/website/include/mirrorlist.include.html
Admin/website/include/navigation.include.html
Admin/website/index.html
Admin/website/installation.html
Admin/website/installation_macos_emacs.html
Admin/website/installation_notes_cygwin.html
Admin/website/js/overlib.js
Admin/website/js/world_map_data.js
Admin/website/logics.html
Admin/website/makefile
Admin/website/media/pg_preview.pdf
Admin/website/misc/isabelle_droplet.dmg
Admin/website/overview.html
Admin/website/redirect.html
Admin/website/world_map.html
Admin/website/world_map_large.html
--- a/Admin/website/.cvsignore	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-conf
--- a/Admin/website/README	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-The Isabelle Webpage
-====================
-
-(1) philosophy
-==============
-
-The webpage sources consist of three different layers:
-
-a) the presentation layer
--------------------------
-
-This is was the user actually sees; the slogan is
-
-    "structural XHTML plus CSS"
-
-There are three different groups of end-user agents (browsers)
-
- 1) "practical non-CSS" browsers (lynx, netscape4)
-    These just display plain HTML.
- 2) "more-or-less-w3c-CSS" browsers (KHTML/Konqueror/Safari, Internet Explorer)
-    These are able to display the pages almost as they should be,
-    but perhaps with some minor warts.
- 3) "almost-w3-CSS" browsers (Mozilla/Firefox/Galeone)
-    These are the "reference implementation" for the layout.
-
-b) the project layer
---------------------
-
-This manages the dependencies between files; the tool of choice
-is
-
-    "(g)make plus shell scripting"
-
-Project settings may be configured using a seperate configuration
-file.
-
-c) the preprocessing layer
---------------------------
-
-This allows to use things like includes, current date, and so on:
-
-    "XHTML plus processing instructions"
-
-Note that this is almost not interwoven with b), to keep it as robust
-and simple as possible.
-
-The layer itself is implemented by a small tool "pypager", written in python.
-
-
-(2) writing your own pages
-==========================
-
-You may add arbitrary files to the dir structure, but adhere to the following:
-* use XHTML, not loose HTML
-* only structural markup; if you need layout effects, use CSS
-  (browse the existing files to get some inspirations)
-* any files ending with .html are considered as HTML files and are implicitly
-  processed by the preprocessing layer
-* for HTML includes, it is most convenient to name them *.include.html to
-  avoid them to be processed stand-alone by the preprocessing layer
-* whole dirs maybe selected for statically copying them to the
-  target destination by configuring the project layer
-* for attributes etc. referencing file locations, there is a convenient
-  abbreviation: "//" at the beginning of a path is translated to the root,
-  but expressed relatively to the current location, e. g.
-
-  in abc/def/itsme.html: <a href="//abc/ghi/itsyou.html">
-                becomes: <a href="../def/itsyou.html">
-
-  Further, targets are checked for existence.
-  This is a simple yet powerful thing easing to keep the pages consistent.
-* for the semantics of the processing instructions, see build/pypager.py
-  source code
-
-
-(3) using the project layer framework
-=====================================
-
-To configure it the first time after checkout, just type
-> gmake phase=init
-
-Not: on GNU systems, just type make instead of gmake.
-
-Then, you may edit the project configuration file conf/localconf.mak.
-After a correct configuration, the build process may be started by
-> gmake
-
-The project layer tries to be smart about dependencies, but includes,
-embedded images and so on are not tracked; to built dependencies anew,
-do
-> gmake depends
-
-After adding or deleting files, an
-> gmake depends
-may also be neccessary. The same after changing something in the configuration.
-
-If nothing seems to be sensible any more, try
-> gmake clean
-> gmake depends
-> gmake
-
-
-(4) project-specific remarks
-============================
-
-The whole thing should fit neatlessly into the Isabelle distribution and
-regression framework; this may explain some "features" which seem to be
-enigmatic.
-
-
-(5) the website build bed on sunbroy2
-=====================================
-
-For convenience, there is a completely configured
-website build bed on sunbroy2:
-* log in to sunbroy2
-* go to ~isabelle/website_build
-* there do an CVS update if desired
-* do "gmake perms" to set file owner group (isabelle) and permissions
-  (rw-rw-r--, rwxrwsr-x)
-* do your changes
-* just type gmake - the website is built to the website synchronization cache
-* then do CVS commit
-* for updating the webpage in Munich, just use Admin/mirror-website
-* if the Isabelle distribution files themselves change, some handwired updating
-  is necessary; however, for casual content changes the build bed should work
-  properly.
--- a/Admin/website/TODO	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-- a gentle intro enumeration on Home - "Why Isabelle?"
-    * stably running, mature system
-    * (something to say about Isar?)
-    * big library
-    * big community
-    * it's free
-    * ...
-  (to discuss)
-- clarify relationship of "overview" and "logics":
-    * overview: Isabelle/HOL   
-    * logics:   Isabelle system
-  (to discuss)
-
-- world_map: automated generation from coordinate data
-- world_map: more content in HTML, less in java script
\ No newline at end of file
--- a/Admin/website/build/.cvsignore	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-*.pyc
--- a/Admin/website/build/cl-1.0.1.pl	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2112 +0,0 @@
-#!/usr/local/bin/perl
-#
-#   Checklinks 1.0.1
-#
-#     Starting at one or more seed HTML files, recursively check the
-#     validity of all links on the site.  Major features:
-#
-#       * Local URLs are read from the filesystem when possible (much
-#           faster than going through HTTP server).
-#       * Basic server-side includes (aka SSI or SHTML) are checked.
-#       * Latest standards are supported-- HTML 4.0, HTTP 1.1, URIs
-#           according to RFC 2396.
-#       * Links are traversed breadth-first.
-#
-#   To list command-line options, run "cl -?" or see &usage() below.
-#
-#   TO CONFIGURE: 
-#
-#   1) Set $LOCAL_HOST and $DOCUMENT_ROOT, just below.  If you don't, the
-#      program will try to guess them in set_needed_globals(), but it's more
-#      reliable if you enter them here.
-#
-#   2) If needed, set any further server configuration below-- things like
-#      path aliases and so forth.  If you have the srm.conf file, you can 
-#      feed it into this script with "-c srm.conf"; otherwise, the default 
-#      settings will probably work OK.
-#
-#   You can set a few parameters with the undocumented "-D <name=value>"
-#   command-line option, e.g. "-D LOCAL_HOST=www.myhost.com".
-#
-#   Further comments, including an overview of script internals, are at
-#   the end of this file.
-#
-#   Copyright (C) 1998, 2000 by James Marshall, james@jmarshall.com
-#   see http://www.jmarshall.com/tools/cl/ for more info
-#
-#
-#   CHANGES IN 1.0.1:
-#
-#     This is just a bug fix release.  Fixes include:
-#       . Aliases are handled correctly now.  Sorry 'bout that.
-#       . A redirect + relative URL no longer results in infinitely
-#           recursing URLs.
-#       . More HTML tags are searched for links.
-#       . Non-HTML files are no longer searched for links.
-#       . There were other minor bug fixes.
-#
-#----------------------------------------------------------------------
-
-#use strict ;
-
-my( $LOCAL_HOST, $DOCUMENT_ROOT, $USER_DIR, @DIRECTORY_INDEX,
-    %ALIAS, %ALIAS_MATCH, %SCRIPT_ALIAS, %SCRIPT_ALIAS_MATCH, %UN_ALIAS,
-    @SHTML_EXTENSIONS, @CGI_EXTENSIONS, @INCLUDE_PATTERNS, @EXCLUDE_PATTERNS,
-          @INCLUDE_STATUS, @EXCLUDE_STATUS,
-    $verbose_report, $max_depth, $file_check, $full_http_check,
-    $MAX_REDIRECTS, $MAX_ATTEMPTS, $HTML_BY_NAME, $SUPPORT_NCSA_BUG,
-    @NO_PROXY, $DOC_ROOT_DEV, $DOC_ROOT_INODE, $DOC_ROOT_EXISTS, $CWD,
-    %html_urls, %non_html_urls, %e_to_ch,
-
-    %home_dir, %dir_to_user, %inode_to_user,
-
-    %url, @urlstoget, 
-
-    $debug, $CL_VERSION,
-  ) ;
-
-
-#----- User Configuration ---------------------------------------------
-
-# This should be 'localhost', or a hostname of the Web server.  URLs at
-#   this host will be assumed to be local; URLs not at this host will not be
-#   traversed into. If this names a remote host, the program will not work.
-# Note that 'localhost' doesn't necessarily point to your local Web server.
-
-# $LOCAL_HOST= 'localhost' ;
-# $LOCAL_HOST= 'www.example.com' ;
-$LOCAL_HOST='isabelle.in.tum.de';
-
-# This is your root Web directory, i.e. the directory that the Web server
-#   sends the user if the URL "http://$LOCAL_HOST" is requested.  It's in
-#   the configuration file srm.conf (and is read by -c option).
-# If you don't know the document root of your server, but you don't need
-#   it because you're only checking URLs whose path starts with ~, put a
-#   non-existent path here rather than leave it blank (a hack).
-
-# $DOCUMENT_ROOT= '/home/www/htdocs' ;
-$DOCUMENT_ROOT='/home/proj/isabelle';
-
-#----- variables equivalent to srm.conf entries 
-
-# These globals are from the equivalent entries in srm.conf, etc.
-# See the command-line option -c <config-file>, to read values directly 
-#   from srm.conf instead.
-
-# $USER_DIR= 'public_html' ;
-$USER_DIR='.html-data';
-@DIRECTORY_INDEX= qw( index.html index.cgi index.shtml ) ;
-
-# Used in &url_to_filename(), and possibly elsewhere
-# Note that ALIAS_MATCH and SCRIPT_ALIAS_MATCH use Perl (not standard) regexps.
-# If order of multiple e.g. "Alias" directives is important, this may not work.
-%ALIAS= () ;
-%ALIAS_MATCH= () ;
-%SCRIPT_ALIAS= () ;
-%SCRIPT_ALIAS_MATCH= () ;
-
-# The list of file extensions to interpret as CGI scripts or
-#   server-parsed HTML files.
-# These are not specific settings in srm.conf, but are combinations of
-#   AddHandler directives and possibly AddType directives.
-@CGI_EXTENSIONS=   qw( .cgi ) ;
-@SHTML_EXTENSIONS= qw( .shtml ) ;
-
-#----- end of variables equivalent to srm.conf entries 
-
-# Specify patterns here to only include URLs that match at least one
-#   pattern.  As a special case, an empty list includes all URLs, i.e.
-#   does not restrict URLs by name (except perhaps by @EXCLUDE_PATTERNS).
-# This can be added to or cleared with the -I command-line option.
-@INCLUDE_PATTERNS= () ;
-
-# Specify patterns here to cause matching URLs to be excluded,
-#   e.g. '\?' means ignore all URLs that query.
-# This can be added to or cleared with the -X command-line option.
-# @EXCLUDE_PATTERNS=  qw( \? ) ;
-
-# Only report URLs whose status codes start with one of these patterns.
-#   As a special case, an empty list reports all URLs, i.e. does not 
-#   restrict URLs by status code (except perhaps by @EXCLUDE_STATUS).
-# This can be added to or cleared with the -i command-line option.
-@INCLUDE_STATUS= () ;
-
-# Don't report URLs whose status codes start with these patterns.  Default
-#   is qw( 200 ).
-# This can be added to or cleared with the -x command-line option.
-@EXCLUDE_STATUS= qw( 200 ) ;
-
-# For 302 or 303 HTTP redirection, redirect no more than this many times.
-$MAX_REDIRECTS= 5 ;
-
-# If a connection times out, etc., attempt no more than this many times.
-$MAX_ATTEMPTS= 5 ;
-
-# The old version determined whether a file was HTML by the -T test (text
-#   file), and so traversed all HTML-like links in any text file that wasn't
-#   a CGI script.  It's probably more appropriate to check the file
-#   extension, to exclude source code, .txt files, etc.  Leave $HTML_BY_NAME
-#   set to use the filename, or unset it to traverse all HTML-like links in
-#   any text files, as the old version did.
-$HTML_BY_NAME= 1 ;
-
-# Some old NCSA servers, including 1.5.2, don't report the HTTP version
-#   correctly in the status line; they return e.g. "HTTP 200 OK".  To allow
-#   this, leave the variable here set.
-$SUPPORT_NCSA_BUG= 1 ;
-
-
-#----- DO NOT CHANGE ANYTHING BELOW THIS LINE, unless you want to... ---
-
-#----- Further Global Variable Initialization --------------------------
-
-$CL_VERSION= '1.0.1' ;
-
-$ENV{'http_proxy'}||= $ENV{'HTTP_PROXY'} ;
-@NO_PROXY= split(/[\s,]+/, $ENV{'no_proxy'} || $ENV{'NO_PROXY'} ) ;
-
-
-# If output's not going directly to terminal, this ensures autoflushing.
-$|= 1 ;
-
-#----- End of Configuration --------------------------------------------
-
-use strict 'vars' ;
-use IO::Socket ;
-
-&usage unless @ARGV ;
-
-# Process command-line options
-&getopts ;
-
-# Make any final needed adjustments to globals, after the hard-coded
-#   values above and any options have been processed.
-&adjust_all_globals ;
-
-# Default to "." if no starting filenames given.
-# 3-6-98: Anh, decided against it.
-#@ARGV= ('.') unless @ARGV ;
-
-# &add_url() sets $url{$_} and pushes to @urlstoget, only if not already
-#   added, plus any other initialization.
-# Only add a file if it can be accessed with a URL.
-foreach my $arg (@ARGV) {
-    if ($arg=~ m#^http://#i) {
-        &add_url($arg, '-', 0) ;
-    } else {
-        my($URL)= &filename_to_url($arg, $CWD) ;
-        if (defined($URL)) {
-            &add_url($URL, '-', 0) ;
-        } else {
-	    die "ERROR: $arg is not accessible through the Web server.\n" ;
-        }
-    }
-}
-
-
-# Check the URLs, in order.  @urlstoget may grow and rearrange.
-while (@urlstoget) {
-    my($url)= shift(@urlstoget) ;
-    if ( !$url->{'ishtml'} or !$url->{'islocal'} or $url->{'dontfollow'}
-         or (length($max_depth) and $url->{'depth'} > $max_depth ) ) {
-        &verify_url($url) ;    # may set ishtml=true
-    }
-    if ( $url->{'ishtml'} and $url->{'islocal'} and !$url->{'dontfollow'}
-         and (!length($max_depth) or $url->{'depth'} <= $max_depth ) ) {
-        my($HTML)= &load_url($url) ;  # may set ishtml=false
-        # 11-30-99 JSM: fixed to handle rel URLs in redirected pages correctly
-        my($base_url)= $url->{'location'} || $url->{'URL'} ;
-        &extract_urls($HTML, $base_url, $url->{'URL'}, $url->{'depth'}+1) 
-            if $url->{'ishtml'} ;      # big, calls &add_url()
-    }
-
-    # If we get an error response that may be corrected with another
-    #   attempt, put it back in the queue.  Such errors include 408,
-    #   503, 504, and the homegrown codes 600, 601, 602, and 603.
-    if ($url->{'status'}=~ /^(408|503|504|600|601|602|603)\b/ ) {
-        push(@urlstoget, $url) if ( $url->{'numtries'} < $MAX_ATTEMPTS ) ;
-    }
-
-}
-
-&make_report() ;
-
-exit ;
-
-
-
-#----- Process command-line options -----------------------------------
-
-# Process any command-line options.
-sub getopts {
-    my($opt, $param) ;
-    while ($ARGV[0]=~ /^-/) {
-        $opt= shift(@ARGV) ;
-        ($opt, $param)= $opt=~ /^-(.)(.*)/ ;
-
-        # Turn on verbose reporting
-        if ($opt eq 'v') {
-            $verbose_report= ($param ne '-') ;
-
-        # User-specified patterns to exclude ('' to clear list)
-        } elsif ($opt eq 'I') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@INCLUDE_PATTERNS, $param) }
-            else { @INCLUDE_PATTERNS= () }
-
-        # User-specified patterns to exclude ('' to clear list)
-        } elsif ($opt eq 'X') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@EXCLUDE_PATTERNS, $param) }
-            else { @EXCLUDE_PATTERNS= () }
-
-        # User-specified response codes to ignore ('' to clear list)
-        } elsif ($opt eq 'i') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@INCLUDE_STATUS, $param) }
-            else { @INCLUDE_STATUS= () }
-
-        # User-specified response codes to ignore ('' to clear list)
-        } elsif ($opt eq 'x') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@EXCLUDE_STATUS, $param) }
-            else { @EXCLUDE_STATUS= () }
-
-        # Maximum traversal depth
-        } elsif ($opt eq 'd') {
-            $param= shift(@ARGV) unless length($param) ;
-            $max_depth= $param ;
-
-        # Make it a "file check"-- only read local files, do not use HTTP
-        } elsif ($opt eq 'f') {
-            $file_check= ($param ne '-') ;
-
-        # Use HTTP for all URL's, even local files
-        } elsif ($opt eq 'h') {
-            $full_http_check= ($param ne '-') ;
-
-        # Read configuration parameters from srm.conf-like file
-        } elsif ($opt eq 'c') {
-            $param= shift(@ARGV) unless length($param) ;
-            &read_srm_conf($param) ;
-            
-        # Print current configuration parameters
-        } elsif ($opt eq 'q') {
-            &print_config ;
-            exit ;   # jsm-- should we exit?
-
-        # Allow certain parameters to be defined via the command line
-        } elsif ($opt eq 'D') {
-            $param= shift(@ARGV) unless length($param) ;
-            $debug=1, unshift(@ARGV,$param), next if $param=~ /^-/ ;
-            my($name,$value)= split(/=/, $param, 2) ;
-            $value= 1 unless length($value) ;
-            if ($name=~ /^(LOCAL_HOST|DOCUMENT_ROOT|USER_DIR|DEBUG|debug)$/) {
-                eval "\$$name= \$value" ;
-                #$$name= $value ;  # this doesn't work, because of initial my()
-            }
-
-        } elsif ($opt eq '?') {
-            &usage ;
-
-        # End command-line option processing on "--"
-        } elsif ($opt eq '-') {
-            return ;
-
-        } else {
-            print STDERR 
-                "Illegal option-- '$opt'.  Enter \"$0 -?\" for help.\n" ;
-            exit ;
-        }
-
-    }
-
-    if ($file_check and $full_http_check) {
-        print STDERR "You cannot use both the -f and the -h options.\n" ;
-        exit ;
-    }
-
-}
-
-
-# Read appropriate values from the given file, typically srm.conf.  If a
-#   directory is named, default to filename "srm.conf".
-# Note that opening "-" will open STDIN.
-sub read_srm_conf {
-    my($fname)= @_ ;
-    local(*SRM) ;
-
-    # default to srm.conf if only a directory is named
-    if (-d $fname) {
-        $fname=~ s#/$## ;
-        $fname.= "/srm.conf" ;
-    }
-
-    # Clear old values
-    $DOCUMENT_ROOT= $USER_DIR= '' ;
-    @DIRECTORY_INDEX= @CGI_EXTENSIONS= @SHTML_EXTENSIONS= () ;
-    %ALIAS= %ALIAS_MATCH= %SCRIPT_ALIAS= %SCRIPT_ALIAS_MATCH= () ;
-
-    open(SRM, "<$fname") || die "Can't open $fname: $!" ;
-    while (<SRM>) {
-        s/#.*// ;
-        next unless /\S/ ;
-        my($name, @param)= /(\S+)/g ;
-
-        if ($name eq 'DocumentRoot') {
-            $DOCUMENT_ROOT= $param[0] ;
-
-        } elsif ($name eq 'UserDir') {
-            $USER_DIR= $param[0] ;
-
-        } elsif ($name eq 'DirectoryIndex') {
-            @DIRECTORY_INDEX= @param ;
-
-        } elsif ($name eq 'Alias') {
-            $ALIAS{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'AliasMatch') {
-            $ALIAS_MATCH{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'ScriptAlias') {
-            $SCRIPT_ALIAS{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'ScriptAliasMatch') {
-            $SCRIPT_ALIAS_MATCH{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'AddHandler') {
-            if ($param[0] eq 'cgi-script') {
-                push(@CGI_EXTENSIONS, $param[1]) ;
-            } elsif ($param[0] eq 'server-parsed') {
-                push(@SHTML_EXTENSIONS, $param[1]) ;
-            }
-        }
-
-    }
-    close(SRM) ;
-}
-
-
-# Make any final settings to global variables, after the hard-coded values
-#   and command-line options have been processed.
-# Most non-user-configurable globals are also set here.
-sub adjust_all_globals {
-
-    # Standardize $USER_DIR to never have trailing slash
-    $USER_DIR=~ s#/$## ;
-
-    # If no $LOCAL_HOST set, try to read it from first URL in list, or
-    #   use the string 'localhost' if that URL contains no hostname.
-    unless (length($LOCAL_HOST)) {
-        $LOCAL_HOST= (&parse_url($ARGV[0]))[1] || 'localhost' ;
-        print STDERR "LOCAL_HOST set to \"\L$LOCAL_HOST\E\"\n" ;
-    }
-    $LOCAL_HOST= lc($LOCAL_HOST) ;
-
-    # If no $DOCUMENT_ROOT, try to guess it from $HOME, username, $USER_DIR.
-    unless (length($DOCUMENT_ROOT)) {
-        my($home) ;
-        unless ($home= $ENV{'HOME'}) {
-            my($uname)= getpwuid($<) || $ENV{'USER'} || `whoami` || `id -un` ;
-            chomp($uname) ;
-            &read_home_dirs unless %home_dir ;   # only read when needed
-            $home= $home_dir{$uname} ;
-        }
-        $DOCUMENT_ROOT= "$home/$USER_DIR" ;
-
-        die "Could not determine DOCUMENT_ROOT; edit the $0 script to set it.\n"
-            unless (-d $DOCUMENT_ROOT) ;
-
-        print STDERR "DOCUMENT_ROOT set to \"$DOCUMENT_ROOT\"\n" ;
-    }
-    $DOCUMENT_ROOT=~ s#/$## ;
-
-    # Allows &filename_to_url() to unalias as best as possible.  Note that 
-    #   use of &filename_to_url() can be avoided by the user; see note in 
-    #   that routine.
-    %UN_ALIAS= (reverse (%ALIAS, %SCRIPT_ALIAS) ) ;
-
-    # These are to compare equivalency to later, in &filename_to_url().
-    ($DOC_ROOT_DEV, $DOC_ROOT_INODE)= stat("$DOCUMENT_ROOT/.") ;
-    
-    $DOC_ROOT_EXISTS= -e _ ;
-    
-    # Set CWD from shell variable, else from `pwd`.
-    $CWD= $ENV{'PWD'} || `pwd` || die "couldn't run pwd: $!" ;
-    chomp($CWD) ;
-
-
-    # These are used by &extract_urls().
-    # This is a complete list of URL-type attributes defined in HTML 4.0,
-    #   plus any others I found, like nonstandard ones or from an earlier HTML.
-    # Only a few of these are commonly used, as of early 1998.
-    # The set in %html_urls could possibly link to HTML resources, while the
-    #   set in %non_html_urls could not.  The %special(.*) sets, here for 
-    #   reference only, include URL attributes that require special handling.
-
-    %html_urls= ( 'a'          => [ 'href' ],
-                  'area'       => [ 'href' ],
-                  'frame'      => [ 'src', 'longdesc' ],
-                  'link'       => [ 'href', 'urn' ],
-                  'img'        => [ 'longdesc', 'usemap' ],
-                  'q'          => [ 'cite' ],
-                  'blockquote' => [ 'cite' ],
-                  'ins'        => [ 'cite' ],
-                  'del'        => [ 'cite' ],
-                  'object'     => [ 'usemap' ],
-                  'input'      => [ 'usemap' ],
-                  'iframe'     => [ 'src', 'longdesc' ],
-		  'ilayer'     => [ 'src' ],
-		  'layer'      => [ 'src' ],
-		  'fig'        => [ 'imagemap' ],
-		  'overlay'    => [ 'imagemap' ],
-		  'meta'       => [ 'url' ],
-		  'note'       => [ 'src' ],
-                ) ;
-
-    %non_html_urls= ( 'body'    => [ 'background' ], 
-                      'img'     => [ 'src', 'lowsrc', 'dynsrc' ],
-                      'input'   => [ 'src' ],
-                      'script'  => [ 'src', 'for' ],
-
-		      'fig'     => [ 'src' ],
-		      'overlay' => [ 'src' ],
-		      'select'  => [ 'src' ],
-		      'ul'      => [ 'src' ],
-		      'h1'      => [ 'src' ],
-		      'h2'      => [ 'src' ],
-		      'h3'      => [ 'src' ],
-		      'h4'      => [ 'src' ],
-		      'h5'      => [ 'src' ],
-		      'h6'      => [ 'src' ],
-		      'hr'      => [ 'src' ],
-		      'table'   => [ 'src' ],
-		      'td'      => [ 'src' ],
-		      'th'      => [ 'src' ],
-		      'tr'      => [ 'src' ],
-
-		      'bgsound' => [ 'src' ],
-		      'embed'   => [ 'src' ],
-                  ) ;
-
-    # %special_urls= ( 'base' => [ 'href' ] ) ;
-    #
-    # %special_html_urls= ( 'object' => [ 'codebase', 'data' ] ) ;
-    #
-    # %special_non_html_urls=
-    #      ( 'head'   => [ 'profile' ],
-    #        'object' => [ 'codebase', 'archive', 'classid' ],
-    #        'applet' => [ 'codebase', 'code', 'object', 'archive' ],
-    #        'form'   => [ 'action', 'script' ]
-    #      ) ;
-
-
-    # This is a translation from entity character references to characters, 
-    #   used in &HTMLunescape().
-    # This simplified version only supports &quot; &lt; &gt; &amp;, but that
-    #   should be enough for URL-type attributes.
-    # See http://www.w3.org/TR/REC-html40/sgml/entities.html for full entity 
-    #   list.
-
-    %e_to_ch= (quot => '"', 
-               'lt' => '<', 
-               'gt' => '>', 
-               amp  => '&') ;
-
-}
-
-
-#----------------------------------------------------------------------
-
-# Add the URL to our data structures; specifically, to %url and @urlstoget.
-# Returns a pointer to the structure in %url, or undef if already defined
-#   or on error.
-# Currently, this always receives the URL with the host name lowercase,
-#   either from &absolute_url() or from using $LOCAL_HOST.
-sub add_url {
-    my($URL, $referer, $depth, $ishtml, $iscgi, $dontfollow)= @_ ;
-
-    # Allow the user to restrict URL patterns:  URLs must be in 
-    #   @INCLUDE_PATTERNS but not in @EXCLUDE_PATTERNS (but only restrict 
-    #   by @INCLUDE_PATTERNS if it's not empty).
-    return undef if @INCLUDE_PATTERNS &&
-                    !grep( $URL=~ /$_/, @INCLUDE_PATTERNS ) ;
-    return undef if grep( $URL=~ /$_/, @EXCLUDE_PATTERNS ) ;
-
-    # Canonicalize URL, so we don't get a page multiple times
-    $URL= &canonicalize($URL) ;
-    
-    # for obscure case involving a <form action=___.cgi>-extracted URL being
-    #   overwritten by <a href=___.cgi> extraction (don't fret over this)
-    $url{$URL}{'dontfollow'}&&= $dontfollow if $url{$URL} ;
-
-    # Don't add the record a second time!  Or will infinitely traverse.
-    return undef if $url{$URL} ;  # or add to @referers, for 301 correction...?
-
-    # Only HTTP URLs are currently supported
-    return undef unless $URL=~ /^http:/i ;
-
-    # Any self-referral here indicates a bug in the program.  It's happened.
-    die "PROGRAM ERROR: $URL shows its first referer as itself.\n"
-        if $referer eq $URL ;
-
-    my(%u) ;
-    @u{qw(URL referer depth ishtml iscgi dontfollow)}= 
-        ($URL, $referer, $depth, $ishtml, $iscgi, $dontfollow) ;
-    $u{'islocal'}= ($URL=~ m#^http://\Q$LOCAL_HOST\E/#io) + 0 ; # make length>0
-    if ($u{'islocal'}) {
-#        $u{'filename'}= &url_to_filename($URL) ;
-        @u{'filename', 'location'}= &url_to_filename($URL) ;
-        $u{'iscgi'}= &is_cgi($u{'filename'}, $URL)  if $u{'iscgi'} eq '' ;
-
-	# 2-27-00 JSM:  Detect ishtml by filename, not -T test.
-	if ( $u{'ishtml'} eq '' ) {
-	    $u{'ishtml'}=  $HTML_BY_NAME
-		?  ( !$u{'iscgi'} && -e $u{'filename'} && 
-		     $u{'filename'}=~ /\.html?$/i ) + 0
-		:  (!$u{'iscgi'} && -e $u{'filename'} && -T _) + 0 ;
-	}
-#        $u{'ishtml'}= (!$u{'iscgi'} && -e $u{'filename'} && -T _) + 0
-#            unless length($u{'ishtml'}) ;
-
-    }
-
-    #  If we're only doing a file check, don't add URLs that require HTTP
-    return undef if ($file_check and (!$u{'islocal'} or $u{'iscgi'}) ) ;
-
-    push(@urlstoget, \%u) ;
-    $url{$URL}= \%u ;
-
-    # return \%u ;   # unneeded because of previous statement
-}
-
-
-# Guess if a file is a CGI script or not.  Returns true if the (regular) file
-#   is executable, has one of @CGI_EXTENSIONS, or if the URL is in a 
-#   ScriptAlias'ed directory.
-# $fname must be absolute path, but $URL is optional (saves time if available).
-# Note that URLs like "/path/script.cgi?a=b" are handled correctly-- the
-#   previously extracted filename is tested for CGI-ness, while the URL is
-#   checked for ScriptAlias matching (which is unaffected by final query
-#   strings or PATH_INFO).
-sub is_cgi {
-    my($fname, $URL)= @_ ;
-    return 1 if (-x $fname && ! -d _ ) ;   # should we really do this?
-    foreach (@CGI_EXTENSIONS) { return 1 if $fname=~ /\Q$_\E$/i }
-
-    $URL= &filename_to_url($fname) unless length($URL) ;  # currently unused
-    my($URLpath)= $URL=~ m#^http://[^/]*(.*)#i ;
-    foreach (keys %SCRIPT_ALIAS)        { return 1 if $URLpath=~ /^\Q$_\E/ }
-    foreach (keys %SCRIPT_ALIAS_MATCH)  { return 1 if $URLpath=~ /^$_/ }
-
-    return 0 ;
-}
-   
-
-# Put the URL in such a form that two URLs that point to the same resource
-#   have the same URL, to avoid superfluous retrievals.
-# Host name is lowercased elsewhere-- this routine is only called from
-#   &add_url; see note there.  To lowercase the host name here would be
-#   inefficient.
-sub canonicalize {
-    my($URL)= @_ ;
-
-    $URL=~ s/#.*// ;    # remove any "#" fragment from end of URL
-
-    return $URL ;
-}
-
-
-#----- File reading/downloading routines (includes networking) --------
-
-# Verify that a URL exists, and set $url->{'status'} accordingly.  Do
-#   this either by checking the local filesystem or by using the HTTP HEAD 
-#   method for remote sites or CGI scripts.
-# Set $url->{'ishtml'} accordingly if discovered from Content-Type:.
-# This does not support various Redirect directives in srm.conf.
-sub verify_url {
-    my($url)= @_ ;
-
-    print STDERR "verifying $url->{'URL'}\n" if $debug ;
-
-
-    # Depending on the state of $url->{islocal, iscgi, dontfollow} and
-    #   $full_http_check, take appropriate actions to check/set the
-    #   status code for this URL.
-    
-    # NOTE: In some situations, specifically when checking a CGI script
-    #   named in a <form action> (thus implying that dontfollow is set),
-    #   and using HTTP to check the URL (because the script is remote or
-    #   $full_http_check is set), the HTTP response code may not be
-    #   accurate.  This is because there is no form data sent with the
-    #   request, as there normally would be.  In these cases, a cautionary
-    #   note is appended to $url->{'status'}.  Additionally, an empty 
-    #   $url->{'status'} is changed to an explanatory note (maybe we should
-    #   do that in load_url() too?).
-
-    # Use HEAD if file is remote, or if $full_http_check is set.
-    if (!$url->{'islocal'} or $full_http_check) {
-        &load_url_using_HTTP($url, 'HEAD') ;
-        $url->{'status'}= '[no status returned]'
-            unless length($url->{'status'}) ;
-        $url->{'status'}.= ' (NOTE: Form was not submitted normally)'
-            if $url->{'dontfollow'} ;
-
-    # URL is local:  If it's not CGI, do a normal local file check
-    } elsif (!$url->{'iscgi'}) {
-        $url->{'status'}= (-e $url->{'filename'})  
-            ? "200 Local File Exists"  : "404 File Not Found" ;
-
-    # URL is local CGI:  Use HEAD unless dontfollow is set
-    } elsif (!$url->{'dontfollow'}) {
-        &load_url_using_HTTP($url, 'HEAD') ;
-
-    # Else it's a local CGI with dontfollow set:  Check for executable file
-    } else {
-        $url->{'status'}= 
-             (! -e $url->{'filename'})  ? "404 File Not Found"
-           : (! -x $url->{'filename'})  ? "403 Local File Is Not Executable"
-           :                              "200 Local Executable File Exists"
-
-    }
-        
-
-# Old verify routine below:
-#
-#    # If is a local non-CGI file, check it directly from the filesystem
-#    if ($url->{'islocal'} and !$url->{'iscgi'} and !$full_http_check) {
-#        $url->{'status'}= (-e $url->{'filename'})  
-#            ? "200 Local File Exists"  : "404 File Not Found" ;
-#
-#    # Otherwise, download its HEAD from its HTTP server
-#    } else {
-#        &load_url_using_HTTP($url, 'HEAD') ;
-#    }
-
-
-}
-
-
-
-# Load entire file/resource and return its contents, setting $url->{'status'}
-#    accordingly.  Do this either by checking the local filesystem or by 
-#    using the HTTP GET method for remote sites or CGI scripts.
-# Set $url->{'ishtml'} accordingly if discovered from Content-Type:.
-# This does not support various Redirect directives in srm.conf.
-sub load_url {
-    my($url)= @_ ;
-    my($HTML) ;
-
-    print STDERR "loading $url->{'URL'}\n" if $debug ;
-
-    # If is a local non-CGI file, read it directly from the filesystem
-    if ($url->{'islocal'} and !$url->{'iscgi'} and !$full_http_check) {
-        my($iscgi) ;
-        ($HTML, $url->{'ssierrs'}, $iscgi)= 
-            &read_expanded_file($url->{'filename'}, $url->{'URL'}) ;
-        $url->{'status'}= 
-            !defined($HTML)
-                  ? sprintf("450 Can't read file: %s (%s)", $!, $!+0)
-            : @{$url->{'ssierrs'}}
-                  ? sprintf("451 SSI Error(s) (%s total)",
-                            scalar @{$url->{'ssierrs'}})
-
-            :       "200 Local File Read OK" ;
-
-        # $url->{'iscgi'} may be set if an SHTML file included CGI calls.
-        # Don't set it if we're doing a file check, in which case we'll
-        #   keep whatever $HTML we could get.
-        $url->{'iscgi'}= $iscgi unless $file_check ;
-    }
-
-    # Otherwise (or if rereckoned), download the resource from its HTTP server
-    if (!$url->{'islocal'} or $url->{'iscgi'} or $full_http_check) {
-        (undef, undef, $HTML)= &load_url_using_HTTP($url, 'GET') ;
-    }
-
-    # Note that this will be set even when URL is to be reloaded, like
-    #   for a 601 (timeout) response.
-    $url->{'hasbeenloaded'}= 1 ;
-    return $HTML ;
-}
-
-
-# Read a local file and return its contents.  If a file is SSI (aka SHTML),
-#   expand any SSI <!--#include--> directives as needed, recursively 
-#   including nested files.
-# This is used for all local reads, SHTML or not, but the vast bulk of this
-#   routine is for SHTML files.
-#
-# If file is SHTML, this routine also returns a structure of error data,
-#   and a boolean saying if this file needs to be downloaded via HTTP
-#   for a complete check (e.g. includes CGI calls).
-#
-# $fname must be canonicalized absolute path, but $URL parameter is optional.
-# %$parents contains all "include"-ancestors of the file, to prevent loops.
-#   If omitted, assumes no ancestors (and a fresh hash is started).
-#
-# This routine seems much bigger and more complex than it needs to be.
-#   It could be one third the size and much simpler if we didn't have to
-#   worry about full error reporting on nested includes.
-#
-# Note: This routine was made to mimic what Apache would return to a client.
-#   However, the result differs from Apache's in two slight ways, both
-#   involving nested SSI within <!--#include file="..." -->, and both
-#   apparent bugs in Apache 1.1 (may be fixed in later versions):
-#
-#   1) If a <file="..."> value contains no "/" (i.e. in current directory),
-#      then Apache always parses the included file as SHTML, regardless of
-#      extension.  This routine checks @SHTML_EXTENSIONS for all included
-#      files.
-#   2) If a <file="..."> value containing a "/" loads an SHTML file  
-#      containing a <virtual="..."> tag with a relative path, the directive
-#      fails in Apache.  This routine tries to guess the correct path/URL.
-#
-#
-# Notes on this routine, and SHTML files in general:
-#
-# At first thought, it seems like we could load each included file
-# only once, instead of once for every file that includes it.
-# However, because of the fact that relative URLs are resolved
-# relative to the top-level including file, the top-level file will
-# need to be expanded every time.  (It's legal (though of questionable
-# wisdom) to include a file from e.g. both /a/index.shtml and
-# /b/index.shtml, so links from the included file point to different
-# URLs.)
-#
-# Note that while URLs in included files (e.g. <a href="...">) are
-# resolved relative to the top-level including file, nested include tags
-# are resolved relative to the direct includer.
-#
-# We could possibly be more efficient in time (but costly in memory)
-# by storing the expanded contents and $errlist of each included file,
-# since those will be constant (except $errlist's include-loop
-# reporting might vary somewhat).  There are probably other ways to
-# eek out savings of time and memory, at the cost of complexity.
-#
-# The main loop here is inside of an s/// statement.  Unusual, but it's an
-# appropriate way to handle the recursion. Recursion is needed, since each
-# included file may or may not be SHTML.
-#
-# $iscgi is set if a file includes "<!--#exec", or if it contains an
-#   <!--#include virtual="..." --> tag that points to a CGI file, or if 
-#   any of its include-children sets $iscgi.
-#
-#
-# Notes to help clarify data structures, if (God forbid) you have to modify 
-# this routine:
-#
-# Each error is a list of files in an "include chain", and $errlist is a
-# list of errors.  $errlist is associated with the current $HTML.  Each
-# error in $errlist is associated with some tag in $HTML, as iterated in
-# the s/// loop.  When this routine returns ($HTML, $errlist), the
-# errors in $errlist should all have as their first element tags that
-# were found in $HTML.
-#
-# Each error's final element (the "leaf") is associated with a tag that
-# tried to load an invalid file.  Each leaf will always be the complete 
-# set of errors for that tag (i.e. it has no children, since it couldn't
-# load the file).
-#
-# If the file can be validly loaded, then we may have 0 or multiple errors
-# associated with this file/tag (and returned from this routine).  Each
-# file's $errlist is an accumulation of all of its children's $errlist's.
-#
-# Errors that come from loading a child are associated with the child's
-# $HTML and tags.  Before adding them to the parent's (current) $errlist,
-# they must have the CHILD's path/tag unshifted onto the front of the 
-# include chain; all errors are then added to the current $errlist.
-# This ensures that:
-#   a) The errors are now all associated with the tag that loaded the child.
-#   b) The errors in the current $errlist are always associated with tags
-#      from the current $HTML.
-#
-
-sub read_expanded_file {
-    my($fname, $URL, $parents)= @_ ;
-    my($HTML, $errlist, $iscgi) ;
-    my($isshtml) ;
-
-    $parents->{$fname}= 1 ;
-
-    $HTML= &read_file($fname) ;
-    return(undef) unless defined($HTML) ;
-
-    foreach (@SHTML_EXTENSIONS) {
-        $isshtml= 1, last if ($fname=~ /\Q$_\E$/i) ;
-    }
-
-    if ($isshtml) {
-        $errlist= [] ;
-        $iscgi= ($HTML=~ /<!--#exec\b/i) ;
-
-        $HTML=~ s{(<!--#include\b.*?>)} {
-            do {
-                my($childfname, $childURL) ;
-                my($childHTML, $childerrlist, $childiscgi) ;
-                my($tagst) = $1 ;
-                my($tag)= &parse_tag($tagst) ;
-              GET_CHILD: {
-                  if (length($tag->{'attrib'}{'virtual'})) {
-                      $URL= &filename_to_url($fname) unless length($URL) ;
-                      $childURL= 
-                          &absolute_url($tag->{'attrib'}{'virtual'}, $URL) ;
-                      ($childfname)= &url_to_filename($childURL) ;
-
-                      # If it's a CGI, don't follow it, but no error either
-                      if (&is_cgi($childfname, $childURL)) {
-                          $iscgi= 1 ;
-                          last GET_CHILD ;
-                      }
-
-                  } elsif (length($tag->{'attrib'}{'file'})) {
-                      $childfname= $tag->{'attrib'}{'file'} ;
-                      if ($childfname=~ m#^(/|~)#) {
-                          push(@$errlist, [ {'path' => $childfname, 
-                                             'tag' => $tagst, 'errmsg' =>
-                                  'Absolute paths are not allowed in '
-                                . '<!--#include file="..." -->.'}]);
-                          last GET_CHILD ;
-                      }
-                      if ($childfname=~ m#\.\.(/|$)#) {
-                          push(@$errlist, [ {'path' => $childfname, 
-                                             'tag' => $tagst, 'errmsg' =>
-                                  'Paths can not contain "../" in '
-                                . '<!--#include file="..." -->.'}]);
-                          last GET_CHILD ;
-                      }
-                      $childfname= ($fname=~ m#(.*/)#)[0] . $childfname ;
-
-                  } else {
-                      push(@$errlist, [ {'path' => '',
-                                         'tag' => $tagst, 'errmsg' =>
-                              'Tag must contain either the "file" or '
-                            . '"virtual" attribute.'}]);
-                      last GET_CHILD ;
-
-                  }
-
-                  # canonicalize filename for %$parents
-                  1 while $childfname=~ s#/\.(/|$)#/# ;
-                  1 while $childfname=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-
-                  # Guarantee that file exists, is regular, and is readable
-                  unless (-e $childfname) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'File not found'} ] ) ;
-                      last GET_CHILD ;
-                  }
-                  unless (-f $childfname) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'File is not a regular'
-                                            . ' file.' } ] ) ;
-                      last GET_CHILD ;
-                  }
-                  unless (-r $childfname) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'File is not readable by'
-                                            . ' current user.' } ] ) ;
-                      last GET_CHILD ;
-                  }
-
-                  # Guard against include loops
-                  if ($parents->{$childfname}) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'An "include" loop exists'
-                                            . ' involving this file.' } ] ) ;
-                      last GET_CHILD ;
-                  }
-
-
-                  # Get the included file, with any error data
-                  ($childHTML, $childerrlist, $childiscgi)= 
-                      &read_expanded_file($childfname, $childURL, $parents) ;
-
-                  # Log if there was any error reading the file
-                  push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                    'errmsg' => "Can't read file: $!." } ] )
-                      unless defined($childHTML) ;
-
-                  # Add any errors to the current (parent) error list
-                  foreach my $error (@$childerrlist) {
-                      unshift(@$error, 
-                              { 'path' => $childfname, 'tag' => $tagst } ) ;
-                  }
-                  push(@$errlist, @$childerrlist) ;
-
-                  # Parent is a CGI if any of its children is a CGI
-                  $iscgi||= $childiscgi ;
-            
-              }   # GET_CHILD
-
-
-              $childHTML ;   # final value to replace in main s/// construct
-
-          }   # do {}
-
-        }gie ;   # $HTML=~ s{} {}
-
-    } # if ($isshtml)
-
-    delete $parents->{$fname} ;
-
-    return($HTML, $errlist, $iscgi) ;
-}
-
-
-
-# Returns the contents of the named file, or undef on error.
-sub read_file {
-    my($fname)= @_ ;
-    local(*F, $/) ;
- 
-    undef $/ ;
-    open(F, "<$fname") || return undef ;
-    my($ret)= <F> ;
-    close(F) ;
-    
-    return $ret ;
-}
-
-
-# Try to get the given URL with the given HTTP method, and return the
-#   status line, headers, and body.
-# Set $url->{'status'} accordingly, and set $url->{'ishtml'} accordingly
-#   if Content-Type: header is returned.
-# This is specific to this program, and calls the more general &get_url().
-# This could be slightly more efficient if 302 or 303 was handled in the
-#   calling routine, where it could take advantage of a new URL being local.
-sub load_url_using_HTTP {
-    my($url, $method)= @_ ;
-    my($status_line, $headers, $body) ;
-
-    # We should not get here if $file_check is set
-    die "mistakenly called load_url_using_HTTP($url->{'URL'})" if $file_check ;
-
-    GETFILE: {
-        ($status_line, $headers, $body)=
-            &get_url( ($url->{'location'} || $url->{'URL'}), $method) ;
-
-        # If HEAD failed (as on some servers), sigh and use GET
-        ($status_line, $headers, $body)=
-            &get_url( ($url->{'location'} || $url->{'URL'}), 'GET')
-                unless length($status_line) ;
-
-        ($url->{'status'})=  $status_line=~ m#^HTTP/[\d.]+\s+(.*)# ;
-
-	# 2-27-00 JSM:  Allow old NCSA servers to not include the HTTP version.
-	if ($SUPPORT_NCSA_BUG and $url->{'status'} eq '') {
-	    ($url->{'status'})=  $status_line=~ m#^HTTP(?:/[\d.]+)?\s+(.*)# ;
-	}
-
-        # Redirect to new location if status is 302 or 303
-        if ($url->{'status'}=~ /^(301|302|303)\b/) {
-            ($url->{'location'})= $headers=~ m#^Location:[ \t]+(\S+)#im ;
-            last GETFILE unless length($url->{'location'}) ;
-            $url->{'location'}= 
-                &absolute_url($url->{'location'}, $url->{'URL'}) ;
-            redo GETFILE
-                if    ($url->{'status'}=~ /^(302|303)\b/)
-                   && (++$url->{'numredirects'} <= $MAX_REDIRECTS) ;
-        }
-    }
-
-    $url->{'numtries'}++ ;
-    $url->{'lasttried'}= time ;
-
-    # If successful response included Content-Type:, set ishtml accordingly
-    $url->{'ishtml'}= (lc($1) eq 'text/html') + 0
-        if $url->{'status'}=~ /^2/
-           and $headers=~ m#^content-type:[ \t]*(\S+)#im ;
-
-    print STDERR "status: $status_line\n" if $debug ;
-
-    return($status_line, $headers, $body) ;
-}
-
-
-# Request the HTTP resource at the given absolute URL using the given method,
-#   and return the response status line, headers, and body.
-# jsm-- in the future, this should support downloading to a file, in case
-#   the download is too large to fit in memory.
-sub get_url {
-    my($URL, $method)= @_ ;
-    my($host, $uri, $endhost) ;
-    my($S, $rin) ;
-    my($response, $status_line, $headers, $body, $status_code) ;
-    my($content_length) ;
-    $method= uc($method) ;
-    $method= 'GET' unless length($method) ;
-
-    ($host, $uri)= $URL=~ m#^http://([^/]*)(.*)$#i ;
-    $uri= '/' unless length($uri) ;
-    $endhost= $host ;
-
-    # use an HTTP proxy if $ENV{'http_proxy'} is set
-    USEPROXY: {
-        last USEPROXY unless $host=~ /\./ ;
-        if (length($ENV{'http_proxy'})) {
-            foreach (@NO_PROXY) {
-                last USEPROXY if $host=~ /$_$/i ;
-            }
-            ($host)= $ENV{'http_proxy'}=~ m#^(?:http://)?([^/]*)#i ;
-            $uri= $URL ;
-        }
-    }
-
-    # Open socket
-    $S= IO::Socket::INET->new(PeerAddr => $host,  # may contain :port
-                              PeerPort => 80,     # default if none in PeerAddr
-                              Proto => 'tcp') ;
-    return("HTTP/1.1 600 Can't create socket: $@") unless defined($S) ;
-    $S->autoflush() ;   # very important!!
-
-    # Send HTTP 1.1 request
-    print $S "$method $uri HTTP/1.1\015\012",
-             "Host: $endhost\015\012",
-             "Connection: close\015\012",
-             "User-agent: CheckLinks/$CL_VERSION\015\012",
-             "\015\012" ;
-
-    # Wait for socket response with select()
-    vec($rin= '', fileno($S), 1)= 1 ;
-    select($rin, undef, undef, 60) 
-        || return("HTTP/1.1 601 Connection timed out") ;
-
-    local($/)= "\012" ;
-
-    # Handle "100 Continue" responses for HTTP 1.1: loop until non-1xx.
-    do {
-        $status_line= <$S> ;
-        $status_line=~ s/\015?\012$// ;
-        ($status_code)= $status_line=~ m#^HTTP/\d+\.\d+\s+(\d+)# ;
-
-        $headers= '' ;
-        while (<$S>) {
-            last if /^\015?\012/ ;
-            $headers.= $_ ;
-        }
-        $headers=~ s/\015?\012[ \t]+/ /g ;
-    } until $status_code!~ /^1/ ;
-
-    # Body length is determined by HTTP 1.1 spec, section 4.4:  these
-    #   certain conditions implying no body, then chunked encoding,
-    #   then Content-length: header, then server closing connection.
-    if ($method eq 'HEAD' or $status_code=~ /^(1|204\b|304\b)/) {
-        $body= undef ;
-
-    # else chunked encoding
-    } elsif ($headers=~ /^transfer-encoding:[ \t]*chunked\b/im) {
-        # 7-16-99:  Old code was only saving last chunk.  Fix using
-        #   $this_chunk contributed by Mark Trotter.
-        my($this_chunk, $chunk_size, $readsofar, $thisread) ;
-        while ($chunk_size= hex(<$S>)) {
-            $readsofar= 0 ;
-            while ($readsofar!=$chunk_size) {
-                last unless $thisread=
-                    read($S, $this_chunk, $chunk_size-$readsofar, $readsofar) ;
-                $readsofar+= $thisread ;
-            }
-            return("HTTP/1.1 603 Incomplete chunked response", $headers, $body)
-                if $readsofar!=$chunk_size ;
-            $_= <$S> ;    # clear CRLF after chunk
-            $body.= $this_chunk ;
-        }
-
-        # Read footers if they exist
-        while (<$S>) {
-            last if /^\015?\012/ ;
-            $headers.= $_ ;
-        }
-        $headers=~ s/\015?\012[ \t]+/ /g ;
-
-
-    # else body length given in Content-length:
-    } elsif (($content_length)= $headers=~ /^content-length:[ \t]*(\d+)/im) {
-        my($readsofar, $thisread) ;
-        while ($readsofar!=$content_length) {
-            last unless $thisread=
-                read($S, $body, $content_length-$readsofar, $readsofar) ;
-            $readsofar+= $thisread ;
-        }
-        return(sprintf("HTTP/1.1 602 Incomplete response (%s of %s bytes)",
-                       $readsofar+0, $content_length),
-               $headers, $body)
-            if $readsofar!=$content_length ;
-
-
-    # else body is entire socket output
-    } else {
-        local($/)= undef ;
-        $body= <$S> ;
-    }
-
-    close($S) ;
-
-    return($status_line, $headers, $body) ;
-}
-
-
-#----- URL-parsing routines -------------------------------------------
-
-# The routines parse_url(), unparse_url(), and absolute_url() are based on
-#   different sections in the Internet Draft "Uniform Resource Identifiers
-#   (URI): Generic Syntax and Semantics", 11-18-97, by Berners-Lee,
-#   Fielding, and Masinter, filename draft-fielding-uri-syntax-01.
-
-# Parse a URL into its components, according to URI draft, sections 4.3, 4.4.
-# This regular expression is straight from Appendix B, modified to use Perl 5.
-# Returns scheme, site, path, query, and fragment.  All but path may have
-#   the undefined value.
-sub parse_url {
-    my($URL)= @_ ;
-    my($scheme, $site, $path, $query, $fragment)=
-        ($URL=~ m{^(?:    ([^:/?\#]+):)?
-                   (?: // ([^/?\#]*))?
-                          ([^?\#]*)
-                   (?: \? ([^\#]*))?
-                   (?: \# (.*))?
-                 }x
-        ) ;
-        
-        
-    # Un-URL-encode the path, to equivalate things like %7E --> ~
-    # Note that in some situations, this may cause problems with URLs that
-    #   contain the % character: if the unescaped URL is then used in 
-    #   relative URL calculation, it may be unescaped again (rare).
-    $path=~ s/\+/ /g ;
-    $path=~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/ge ;
-
-    # Note that in HTTP, the presence of a host implies a path beginning with
-    #   '/', so $path should be '/' for URLs like "http://www.somehost.com"
-    $path= '/' if !length($path) && length($site) && lc($scheme) eq 'http' ;
-
-    return($scheme, $site, $path, $query, $fragment) ;
-
-}
-
-
-# Returns a full URL string, given its components
-# The full procedure is described in the URI draft, section 5.2, step 7.
-sub unparse_url {
-    my($scheme, $site, $path, $query, $fragment)= @_ ;
-    my($URL) ;
-
-    $URL= "$scheme:"    if defined($scheme) ;
-    $URL.= "//$site"    if defined($site) ;
-    $URL.= $path ;
-    $URL.= "?$query"    if defined($query) ;
-    $URL.= "#$fragment" if defined($fragment) ;
-
-    return $URL ;
-}
-
-
-# Returns a canonicalized absolute URL, given a relative URL and a base URL.
-# The full procedure is described in the URI draft, section 5.2.
-# Note that a relative URI of "#fragment" should be resolved to "the current
-#   document", not to an absolute URL.  This presents a quandary for this
-#   routine:  should it always return an absolute URL, thus violating the
-#   spec, or should it not always return an absolute URL, thus requiring any
-#   caller to check for this special case?  This routine leaves that up to
-#   the caller, with $return_rel_fragment-- if set, stick to the spec;
-#   otherwise, always return an absolute URL.  See section G.4 of the draft.
-# Note that the pathname reduction in steps 6.c-f messes up any PATH_INFO
-#   that has ./ or ../ in it, which may be a bug in the spec.
-sub absolute_url {
-    my($relurl, $baseurl, $return_rel_fragment)= @_ ;
-    my(@relurl, @baseurl) ;
-
-    # parse_url() returns scheme, site, path, query, fragment
-    @relurl= &parse_url($relurl) ;      # Step 1
-    @baseurl= &parse_url($baseurl) ;
-
-    COMBINE: {
-
-        # Step 2
-        # See note above about $return_rel_fragment
-        if (  $relurl[2] eq '' && 
-              !defined($relurl[0]) &&
-              !defined($relurl[1]) &&
-              !defined($relurl[3]) ) {
-            @relurl[0..3]= @baseurl[0..3] ;
-            return $relurl if $return_rel_fragment ;   # see note above
-            last COMBINE ;
-        }
-
-        last COMBINE if defined($relurl[0]) ;    # Step 3
-        $relurl[0]= $baseurl[0] ;
-
-        last COMBINE if defined($relurl[1]) ;    # Step 4
-        $relurl[1]= $baseurl[1] ;
-
-        last COMBINE if $relurl[2]=~ m#^/# ;     # Step 5
-
-        # Step 6-- resolve relative path
-        my($path)= $baseurl[2]=~ m#^(.*/)# ;     # Step 6.a
-        $relurl[2]= $path . $relurl[2] ;         # Step 6.b
-        
-    } # COMBINE
-
-    # Put the remaining steps outside of the block to canonicalize the path.
-    # Arguably, this is not allowed.  To avoid such arguments at the expense of
-    #   path canonicalization, put steps 6.c-f back in the COMBINE block.
-
-    1 while $relurl[2]=~ s#(^|/)\./#$1# ;    # Step 6.c
-    $relurl[2]=~ s#(^|/)\.$#$1# ;            # Step 6.d
-
-    # Step 6.e
-    my($oldpath) ;
-    while ($relurl[2]=~ s#(([^/]+)/\.\./)# ($2 eq '..')  ? $1  : '' #ge) {
-        last if ($relurl[2] eq $oldpath) ;
-        $oldpath= $relurl[2] ;
-    }
-
-    # Step 6.f
-    $relurl[2]=~ s#(([^/]+)/\.\.$)# ($2 eq '..')  ? $1  : '' #ge ;
-
-    # Step 6.g: allow leading ".." segments to remain in path
-    # Step 6.h: relurl[2] is already the buffer string
-
-    # To canonicalize further, lowercase the hostname (is this valid for all
-    #   schemes?)
-    $relurl[1]= lc($relurl[1]) if defined($relurl[1]) ;
-
-    return &unparse_url(@relurl) ;                  # Step 7
-}
-
-
-
-# Convert a local URL into a canonicalized absolute path, or undef if
-#   not on this host or other error.
-# Result should only be used as filename.
-# Supports UserDir (e.g. public_html) for "/~username/path/file" URLs.
-# Supports Alias, AliasMatch, ScriptAlias, and ScriptAliasMatch from srm.conf
-#   (but note use of Perl regex's instead of standard regex's).
-# Inserts index.html, etc. (from @DIRECTORY_INDEX) if result is a directory,
-#   but just return directory name (ending in '/') if none of those exists.
-# Removes PATH_INFO, if any, from filename.
-# Directory names are always returned with trailing slash (which would not
-#   be appropriate if PATH_INFO was to be retained).
-# While this routines makes some tests (e.g. if the file is a directory),
-#   it does not verify that file at the resulting $filename exists.
-# Note that not all URLs point to files, so this routine is not always
-#   appropriate.  In this program, the result from this routine is only
-#   used when we know the URL is not a CGI script (and is therefore a file),
-#   except in &is_cgi() itself, which tests if a file is a CGI script.
-#   If it weren't for &is_cgi(), we could ignore cases when the URL isn't
-#   a file.
-# 12-1-99 JSM:  Changed to also return "redirected" location, in case URL
-#   is a directory but not ending in a slash, so relative URLs will resolve
-#   correctly against the redirected URL.
-sub url_to_filename {
-    my($URL)= @_ ;
-    my($URLpath, $path, $location, $docroot, $user) ;
-    return undef unless $URL=~ m#^http://\Q$LOCAL_HOST\E/#io ;
-    $URLpath= (&parse_url($URL))[2] ;
-    die "couldn't get path from [$URL]" unless length($URLpath) ;
-
-    # Note minor security hole:  if this script is run setuid, then any 
-    #   file on the system could be read by using an ALIAS to point to the 
-    #   file.  Note also that if a $URLpath such as "/alias/dir/../.." is
-    #   passed to this routine, the alias will be substituted BEFORE the
-    #   ".." path segments are traversed.  A case like this probably a
-    #   mistake in the URL anyway.
-
-    # Make no more than one alias substitution-- is there a precedence order?
-    # Note that %(.*)_MATCH use Perl regex's, not standard regex's.
-    # 3-29-99 JSM:  These all alias to actual directory, not to a resulting
-    #   URL, so no further conversion should be done if one of these matches.
-    # 3-29-99 JSM:  Changed ALIAS_MATCH and SCRIPT_ALIAS_MATCH blocks to
-    #   allow $1-type substitution in targets; MUST TEST!
-    ALIAS: {
-        foreach (keys %ALIAS) 
-            { $path= $URLpath, last ALIAS 
-                  if $URLpath=~ s/^\Q$_\E/$ALIAS{$_}/ }
-        foreach (keys %ALIAS_MATCH) 
-            { $path= $URLpath, last ALIAS 
-                  if eval "\$URLpath=~ s/^\$_/$ALIAS_MATCH{$_}/" }
-        foreach (keys %SCRIPT_ALIAS) 
-            { $path= $URLpath, last ALIAS 
-                  if $URLpath=~ s/^\Q$_\E/$SCRIPT_ALIAS{$_}/ }
-        foreach (keys %SCRIPT_ALIAS_MATCH) 
-            { $path= $URLpath, last ALIAS 
-                  if eval "\$URLpath=~ s/^\$_/$SCRIPT_ALIAS_MATCH{$_}/" }
-    }
-
-
-    # If $path has been set in above ALIAS block, no further conversion is
-    #   needed.  
-    if ($path eq '') {
-
-        # Must check for ^/.. before PATH_INFO check, in case $URL's path
-        #   is e.g. '/../conf/access.conf'
-        return undef if $URLpath=~ m#^/\.\.(/|$)# ;   # ^/.. is not allowed
-
-        # Set $docroot and $path for this file, based on the URL (contains '~' ?)
-        if (length($USER_DIR) and ($user,$path)= $URLpath=~ m#^/~([^/]+)(.*)# ) {
-            &read_home_dirs unless %home_dir ;   # only read when needed
-            return undef unless length($home_dir{$user}) ;
-            $docroot= "$home_dir{$user}/$USER_DIR" ;
-            $path= '/' unless length($path) ;
-        } else {
-            # If we have no $DOCUMENT_ROOT, we can't handle URLs without ~.
-            return undef unless $DOC_ROOT_EXISTS ;
-            $docroot= $DOCUMENT_ROOT ;
-            $path= $URLpath ;
-        }
-
-        # Handle PATH_INFO: remove path segments until an existing file is named.
-        # Note that directories cannot have PATH_INFO after them.
-        unless (-e "$docroot$path") {
-            for (my($path2)= $path ; $path2=~ m#/# ; $path2=~ s#/[^/]*$##) {
-                 last if -d "$docroot$path2" ;
-                 $path= $path2, last if -e "$docroot$path2" ;
-             }
-        }
-
-        # canonicalize path, and recheck for ^/.. (handles an obscure error,
-        #   when $URL's path is e.g. '/a/b/../../..'; but must canonicalize
-        #   after PATH_INFO check, in case path is e.g. '/a/b.cgi/../../..').
-        1 while $path=~ s#/\.(/|$)#/# ;
-        1 while $path=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-        return undef if $path=~ m#^/\.\.(/|$)# ;   # ^/.. is not allowed
-
-        $path= "$docroot$path" ;
-
-    }
-
-
-    # Add "index.html", etc. if appropriate
-    if (-d $path) {
-        $path.= '/' unless $path=~ m#/$# ;
-        # 12-1-99 JSM: set "redirected" location also
-        $location= "$URL/" unless $URL=~ m#/$# ;
-        foreach (@DIRECTORY_INDEX) {
-            $path.= $_, last if -f "$path$_" ;
-        }
-    }
-    return ($path, $location) ;
-}
-
-
-# Convert a local (possibly relative) pathname into a canonicalized URL.
-# If filename is relative and no $basepath is given, assume it's in the 
-#   current directory.
-# Supports UserDir (e.g. public_html) for "/~username/path/file" URLs.
-# Each path segment is checked to see if it's the same as $DOCUMENT_ROOT,
-#   by comparing inodes.  When a match is found, it's cut off the front,
-#   and an absolute URL is constructed.  If $DOCUMENT_ROOT is never matched,
-#   then $USER_DIR is scanned for.  If that doesn't match (i.e. the file 
-#   is not served to the Web), undef is returned.
-# Note that $DOC_ROOT_DEV and $DOC_ROOT_INODE are set at the start of the
-#   program for efficiency, but are an integral part of this routine.
-# %ALIAS is supported using %UN_ALIAS, as best as possible.  See next note
-#   on avoiding use of this routine.
-# This is currently only used when parsing command-line filenames, and when
-#   an <!--#include file="..." --> includes an <!--#include virtual="..." -->
-#   (which may be an error anyway).  Thus, it can be avoided if needed, such
-#   as when complex aliasing makes results ambiguous.
-# jsm-- should this add/remove @DIRECTORY_INDEX, to avoid some duplication?
-# 3-29-99 JSM:  Changed UNALIAS handling-- if it's unaliased, then no other
-#   conversion is necessary.
-sub filename_to_url {
-    my($path, $basepath)= @_ ;
-    my($URLpath) ;
-    unless ($path=~ m#^/#) {
-        $basepath= $CWD unless length($basepath) ;
-        $basepath.= '/' if -d $basepath && $basepath!~ m#/$# ;
-        $basepath=~ s#/[^/]*$#/# ;
-        $path= "$basepath$path"  ;
-    }
-
-    # canonicalize filename by removing ./ and ../ where appropriate
-    1 while $path=~ s#/\.(/|$)#/# ;
-    1 while $path=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-
-    # canonicalize directory to include final /
-    $path.= '/' if -d $path && $path!~ m#/$# ;
-
-    # First, if path can be unaliased, return that.
-    # (Added 3-29-99 by JSM.)
-    foreach (keys %UN_ALIAS) 
-        { $URLpath= $path, last if $path=~ s/^\Q$_\E/$UN_ALIAS{$_}/ }
-    return "http://\L$LOCAL_HOST\E$URLpath" if $URLpath ne '' ;
-
-    # Then, check if file is under $DOCUMENT_ROOT tree, and convert if so.
-    if ($DOC_ROOT_EXISTS) {
-        my($doc_root)= $path ;
-        while ($doc_root=~ s#/[^/]*$##) {
-            my($dev,$inode)= stat("$doc_root/.") ;
-            if ( ($dev==$DOC_ROOT_DEV) && ($inode==$DOC_ROOT_INODE) ) {
-                $path=~ s/^$doc_root// ;
-#                foreach (keys %UN_ALIAS) 
-#                    { last if $path=~ s/^\Q$_\E/$UN_ALIAS{$_}/ }
-                return "http://\L$LOCAL_HOST\E$path" ;
-            }
-        }
-    }
-
-    # Handle possible case of "~username/$USER_DIR/$path"
-    # I don't think %ALIAS applies here, does it?
-    # This misses some when $HOME/$USER_DIR points through a symbolic link,
-    #   and $CWD isn't set to match %dir_to_user.  Work around by avoiding
-    #   this routine, e.g. using only URLs on command line.
-    if (length($USER_DIR)) {
-        if ($path=~ m#^(.*?)/$USER_DIR(/.*)# ) {
-            # First, see if path is in %dir_to_user
-            &read_home_dirs unless %dir_to_user ;   # only read when needed
-            return "http://\L$LOCAL_HOST\E/~$dir_to_user{$1}$2"
-                if length($dir_to_user{$1}) ;
-
-            # If not, then we must check inodes to equivalate directories
-            &read_inode_to_user unless %inode_to_user ; # only read when needed
-            my($dev,$inode)= stat("$1/.") ;
-            return "http://\L$LOCAL_HOST\E/~$inode_to_user{$dev}{$inode}$2"
-                if length($inode_to_user{$dev}{$inode}) ;
-        }
-    }
-
-    return undef ;
-}
-
-
-
-# Reads all users' home directory into %home_dir, from /etc/passwd.
-# Also creates %dir_to_user, which is faster than %inode_to_user (below).
-# Only used when $USER_DIR is used, for "/~username/path/file" URLs.
-# 2-27-00 JSM:  Changed to use getpwent, instead of reading /etc/passwd.
-sub read_home_dirs {
-    my($user, $homedir) ;
-
-    setpwent ;   # to rewind, in case getpwent has already been used
-    while ( ($user, $homedir)= (getpwent)[0,7] ) {
-        $home_dir{$user}= $homedir ;
-        $dir_to_user{$homedir}= $user
-            unless $dir_to_user{$homedir} ne '' ;
-    }
-    endpwent ;   # clean way to end getpwent processing
-}
-
-
-# Reads home directory inode information into %inode_to_user, from /etc/passwd.
-# Because this is time-consuming, it is only called if needed, and only once.
-# Only used when $USER_DIR is used, for "/~username/path/file" URLs.
-# On SPARCstation-10 with 3000 /etc/passwd records, this takes ~2 seconds.
-# 2-27-00 JSM:  Changed to use already-existing %home_dir, instead of reading
-#   /etc/passwd again.
-sub read_inode_to_user {
-    my($user, $homedir) ;
-    my($dev, $inode) ;
-    &read_home_dirs unless %home_dir ;   # only read when needed
-
-    while ( ($user, $homedir)= each %home_dir ) {
-        ($dev,$inode)= stat("$homedir/.") ;
-        $inode_to_user{$dev}{$inode}= $user 
-            unless $inode_to_user{$dev}{$inode} ne '' ;
-    }
-}
-
-
-
-#----- Extracting URLs from HTML ------------------------------------
-
-
-# Parse an SGML tag, and return a hash structure with a "name" scalar and
-#   an "attrib" hash.
-# Parses first tag in string, ignoring all surrounding text.
-# Results are canonicalized to lower case wherever case-insensitive.
-sub parse_tag {
-    my($tag)= @_ ;       # will be mangled
-    my($tagname,%attrib) ;
-
-    # only parse first tag in string
-    ($tag)= split(/>/, $tag) ;  # remove all after >
-    $tag=~ s/^([^<]*<)?\s*// ;  # remove pre-<, <, and leading blanks
-    ($tagname,$tag)= split(/\s+/, $tag, 2) ;        # split out tag name
-
-    # Extract name/value (possibly quoted), lowercase name, set $attrib{}.
-    # If quoted, is delimited by quotes; if not, delimited by whitespace.
-    $attrib{lc($1)}= &HTMLunescape($+)
-        while ($tag=~ s/\s*(\w+)\s*=\s*(([^"']\S*)|"([^"]*)"?|'([^']*)'?)//) ;
-
-    # now, get remaining non-valued (boolean) attributes
-    $tag=~ s/^\s*|\s*$//g ;             # skip leading/trailing blanks
-    foreach (split(/\s+/, $tag)) {
-        $_= lc($_) ;
-        $attrib{$_}= $_ ;   # booleans have values equal to their name
-    }
-
-    return { 'name'   => lc($tagname), 
-             'attrib' => \%attrib       } ;
-}
-
-
-# Unescape any HTML character references and return resulting string.
-# Support entity character references in %e_to_ch (which is incomplete),
-#   plus "$#ddd;" and "&#xdd;" forms for values<256.
-# Note that not decoding a valid character is erroneous, in that a
-#   subsequent re-escaping will not return the original string, because
-#   of the ampersand.  Nonetheless, that's preferable to losing the data.
-#   Q:  Is there an appropriate general way to represent an unescaped string?
-sub HTMLunescape {
-    my($s)= @_ ;
-
-    # Try alpha, decimal, and hex representations, only substituting if valid
-    $s=~ s/&(([a-zA-Z][a-zA-Z0-9.-]*);?|#([0-9]+);?|#[Xx]([0-9a-fA-F]+);?)/
-              length($2)   ? ( defined($e_to_ch{$2}) ? $e_to_ch{$2}  : "&$1" )
-            : length($3)   ? ( $3 < 256              ? chr($3)       : "&$1" )
-            : length($4)   ? ( hex($4) < 256         ? chr(hex($4))  : "&$1" )
-                           :   "&$1"
-          /ge ;
-
-    return $s ;
-}
-
-
-# Given a block of HTML, extracts all URLs referenced in it, and adds them
-#   to our data structures to be downloaded or checked (i.e. calls 
-#   &add_url()).
-# Note that %html_urls and %non_html_urls are set at the start of the
-#   program for efficiency, but are an integral part of this routine.
-# Currently, this extracts all <.*?> patterns, which may not be valid if
-#   "<" or ">" characters are e.g. inside a <script> element.
-sub extract_urls {
-    my($HTML, $baseurl, $referer, $depth)= @_ ;
-    my(@tags) ;
-
-    # Remove comments before extracting links, as pointed out by Tim Hunter.
-    $HTML=~ s/<!--.*?--.*?>//gs ;
-
-    # We must look for <base> tag before all the work, so we must parse
-    #   all tags first.  :(  Therefore, we save this large array of
-    #   structures for efficiency, hoping we don't run out of memory.
-    my($i)= -1 ;  # to start at array element 0
-
-    foreach ($HTML=~ /(<.*?>)/gs) {
-        $tags[++$i]= &parse_tag($_) ;
-        $baseurl= $tags[$i]{'attrib'}{'href'}
-            if ($tags[$i]{'name'} eq 'base') 
-                and (length($tags[$i]{'attrib'}{'href'})) ;
-    }
-
-    # For each tag, call &add_url() for each URL in the tag
-    foreach my $tag (@tags) {
-        next if $tag->{'name'}=~ m#^/# ;
-
-        # Handle the "regular" tag-attributes, in %html_urls and %non_html_urls
-
-        foreach (@{$html_urls{$tag->{'name'}}}) {
-            &add_url(&absolute_url($tag->{'attrib'}{$_}, $baseurl), 
-                     $referer, $depth) 
-                if length($tag->{'attrib'}{$_}) ;
-        }
-
-        foreach (@{$non_html_urls{$tag->{'name'}}}) {
-            &add_url(&absolute_url($tag->{'attrib'}{$_}, $baseurl), 
-                     $referer, $depth, 0) 
-                if length($tag->{'attrib'}{$_}) ;
-        }
-
-        # Now handle each tag-attribute that needs special attention
-
-        if ($tag->{'name'} eq 'object') {
-            my($codebase)=
-                &absolute_url($tag->{'attrib'}{'codebase'}, $baseurl) ;
-
-            &add_url(&absolute_url($tag->{'attrib'}{'data'}, $codebase),
-                     $referer, $depth)
-                if length($tag->{'attrib'}{'data'}) ;
-
-            # There seems to be a contradiction between the HTML 4.0 spec
-            #   section 13.3.3 and RFC 1808 section 4 step 2b regarding
-            #   the URL resolution of e.g. classid="java:program.start".
-            #   For now, we'll stick with the RFC 1808 method.
-            &add_url(&absolute_url($tag->{'attrib'}{'classid'}, $codebase),
-                     $referer, $depth, 0)
-                if length($tag->{'attrib'}{'classid'}) ;
-
-            # <object> tag's "archive" attribute is a space-separated list
-            foreach (split(/\s+/, $tag->{'attrib'}{'archive'})) {
-                &add_url(&absolute_url($_, $codebase), $referer, $depth, 0) ;
-            }
-
-        } elsif ($tag->{'name'} eq 'head') {
-            # "profile" attribute is a space-separated list
-            foreach (split(/\s+/, $tag->{'attrib'}{'profile'})) {
-                &add_url(&absolute_url($_, $baseurl), $referer, $depth, 0) ;
-            }
-
-        } elsif ($tag->{'name'} eq 'applet') {
-            my($codebase)=
-                &absolute_url($tag->{'attrib'}{'codebase'}, $baseurl) ;
-
-            &add_url(&absolute_url($tag->{'attrib'}{'code'}, $codebase),
-                     $referer, $depth, 0)
-                if length($tag->{'attrib'}{'code'}) ;
-
-            &add_url(&absolute_url($tag->{'attrib'}{'object'}, $codebase),
-                     $referer, $depth, 0)
-                if length($tag->{'attrib'}{'object'}) ;
-
-            # <applet> tag's "archive" attribute is a comma-separated list
-            foreach (split(/\s*,\s*/, $tag->{'attrib'}{'archive'})) {
-                &add_url(&absolute_url($_, $codebase), $referer, $depth, 0) ;
-            }
-
-        # Check form script for existence only, but don't follow hyperlinks.
-        # Handles the unlikely case when a CGI is referred to by both a
-        #   <form action=___.cgi> tag and an <a href=___.cgi> tag: If a CGI
-        #   is only pointed to by <form action>, then don't follow the link
-        #   (i.e. set $url->{'dontfollow'} to verify, not load).  If a CGI
-        #   is called by at least one <a href> tag, then do follow the link.
-        } elsif ($tag->{'name'} eq 'form') {
-            &add_url(&absolute_url($tag->{'attrib'}{'action'}, $baseurl),
-                     $referer, $depth, undef, 1, 1)
-                if length($tag->{'attrib'}{'action'}) ;
-
-        }   # if ($tag->{'name'} eq '...')
-
-
-    }   # foreach $tag (@tags)
-
-}   # &extract_urls()
-
-
-
-#----- output routines ------------------------------------------------
-
-# Generate final report
-sub make_report {
-    if ($verbose_report) { &make_verbose_report }
-    else                 { &make_short_report }
-}
-
-
-
-# Generate a verbose report of all URLs that have been checked
-sub make_verbose_report {
-    my($rootlist)= join("\n    ", @ARGV) ;
-    my($numurls)= scalar keys %url ;
-
-    print <<EOH ;
-======================================================================
-Report of invalid links on $LOCAL_HOST, 
-recursively followed starting with the files/URLs:
-
-    $rootlist
-
-EOH
-
-    if (@INCLUDE_PATTERNS) {
-        my($includelist)= join("\n    ", @INCLUDE_PATTERNS) ;
-        print <<EOH ;
-Only including URLs matching at least one of the following patterns:
-    $includelist
-
-EOH
-    }
-
-    if (@EXCLUDE_PATTERNS) {
-        my($excludelist)= join("\n    ", @EXCLUDE_PATTERNS) ;
-        print <<EOH ;
-Excluding URLs matching any of the following patterns:
-    $excludelist
-
-EOH
-    }
-
-    print "Total URLs checked: $numurls\n\n" ;
-
-    print( "Only reporting response codes beginning with: ", 
-           join(", ", @INCLUDE_STATUS), "\n" )
-        if @INCLUDE_STATUS ;
-
-    print( "Excluding response codes beginning with: ",
-           join(", ", @EXCLUDE_STATUS), "\n" )
-        if @EXCLUDE_STATUS ;
-
-    print "Maximum traversal depth: $max_depth\n" if length($max_depth) ;
-    print "Only local files were checked; no CGI scripts were invoked.\n"
-        if $file_check ;
-    print "Local URLs were read from the filesystem where possible.\n"
-        unless $full_http_check ;
-
-    print "\n" ;
-
-    # Only report status errors if there are any.
-    # Using grep()s is slightly inefficient, but a *lot* cleaner.
-    my($has_statuserrs) ;
-    foreach my $URL (sort keys %url) {
-        next if @INCLUDE_STATUS &&
-                !grep($url{$URL}{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
-        next if grep($url{$URL}{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
-        $has_statuserrs=1, last ;
-    }
-
-
-    if ($has_statuserrs) {
-        print <<EOH ;
-======================================================================
-
-RESULTS FROM ALL URLS WITH SELECTED RESPONSE STATUS CODES
-------------------------------------------------------------
-
-EOH
-
-        foreach (sort keys %url) {
-            my($u)= $url{$_} ;
-
-            next if @INCLUDE_STATUS &&
-                    !grep($u->{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
-            next if grep($u->{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
-            print "$u->{'URL'}\n", '-' x 50, "\n" ;
-            print "Status:   $u->{'status'}\n" ;
-            print "Moved to: $u->{'location'}\n" if $u->{'location'} ;
-            print "Depth:    $u->{'depth'}\n" ;
-
-            for (my($URL)= $u->{'referer'}, my($tab)= '  ' ;
-                 length($url{$URL}) ;
-                 $URL= $url{$URL}{'referer'}, $tab.= '  ' )
-            {
-                print "${tab}referred by $url{$URL}{'URL'}\n" ;
-                die "PROGRAM ERROR: apparent infinite referer loop.\n"
-                    if length($tab)>200 ;      # simple-minded sanity check
-            }
-
-            print "\n\n" ;
-        }  # URL
-
-    }
-
-
-
-    # Only report SSI errors if there are any
-    my($has_ssierrs) ;
-    foreach (sort keys %url) { 
-        $has_ssierrs=1, last if @{$url{$_}{'ssierrs'}} ;
-    }
-
-
-    if ($has_ssierrs) {
-        print <<EOH ;
-======================================================================
-
-PROBLEMS WITH SERVER-SIDE INCLUDE (AKA SHTML) DIRECTIVES
-------------------------------------------------------------
-
-EOH
-        foreach (sort keys %url) {
-            my($u)= $url{$_} ;
-            if (@{$u->{'ssierrs'}}) {
-                print "$u->{'URL'}\n", '-' x 50, "\n" ;
-                printf "Total %s SSI Errors:\n",  $#{$u->{'ssierrs'}}+1 ;
-                foreach my $i (0..$#{$u->{'ssierrs'}}) {
-                    printf "  %s) ", $i+1 ;
-                    my($tab)= ' ' x (4+length($i+1)) ;
-                    my($tab2) ;
-                    foreach my $level (@{$u->{'ssierrs'}[$i]}) {
-                        print "${tab2}file:   $level->{'path'}\n" ;
-                        print "${tab}in tag: $level->{'tag'}\n" ;
-                        print "${tab}error:  $level->{'errmsg'}\n" 
-                            if $level->{'errmsg'} ;
-                        $tab.= '  ' ;
-                        $tab2= $tab ;
-                    }
-                }
-                print "\n\n" ;
-            }
-        }
-    }
-
-
-    unless ($has_statuserrs or $has_ssierrs) {
-        print <<EOH ;
-======================================================================
-
-                    <<     NO ERRORS FOUND     >>
-
-EOH
-    }
-
-    print '=' x 70, "\n" ;
-
-} # &make_verbose_report()
-
-
-# Generate a one-line-per-URL report
-sub make_short_report {
-    my($numurls)= scalar keys %url ;
-
-    print "Total $numurls URLs checked\n" ;
-    URL: foreach my $URL (sort keys %url) {
-        next if @INCLUDE_STATUS &&
-                !grep($url{$URL}{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
-        next if grep($url{$URL}{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
-        print "$url{$URL}{'URL'}\t$url{$URL}{'status'}\n" ;
-    }  # URL
-}
-
-
-
-# Print a summary of usage and exit
-sub usage {
-    print <<EOF ;
-
-Checklinks $CL_VERSION
-
-To recursively check all HTML links on the local site, enter:
-    $0  <options>  [ start-file | start-URL ] ...
-
-Options include:
-  -v                    Generate full (verbose) report, including full
-                          referral information and detailed SSI error
-                          reporting.
-  -I <include-pattern>  Only check URLs matching <include-pattern>.
-  -X <exclude-pattern>  Don't check URLs matching <exclude-pattern>.
-  -i <include-status>   Only report URLs whose response code starts with
-                          the pattern <include-status>.
-  -x <exclude-status>   Don't report URLs whose response code starts with
-                          the pattern <exclude-status>.  Default is to
-                          exclude "200" responses only (i.e. "-x 200").
-  -d <max-depth>        Traverse links no deeper than <max-depth>.
-  -f                    "File mode"-- only read files from the filesystem;
-                          do not go through the HTTP server at all.  This
-                          will skip all URLs that point to CGI scripts.
-  -h                    "HTTP mode"-- use HTTP to check ALL URLs, even
-                          if they could be read from the filesystem.
-                          Incompatible with "-f" option.
-  -c <config-file>      Read appropriate configuration parameters from
-                          <config-file>, typically srm.conf.  Use '-' to
-                          read from STDIN.  If a directory is named, use
-                          "srm.conf" in that directory.
-  -q                    Print current configuration parameters.
-  -?                    Print this help message.
-  --                    End command-line option processing.
-
-Don't stack options like "-vf"; use "-v -f" instead.
-
-For -I, -X, -i, and -x:
-  Values are interpreted as Perl 5 regular expressions.
-  Use multiple options to build a list (e.g. "-I include1 -I include2").
-  Use a value of '' to clear a list (e.g. -x '' means "report all responses",
-    "-x '' -x 401" means "report all but 401 responses").
-  As a special case, an empty -I or -i list implies no include-restrictions.
-  If an item is in both the include and exclude list, it is excluded.
-  Note that -I and -X restrict which URLs are traversed into, so they may
-    prune large areas of your Web structure.
-
-EOF
-    exit ;
-}
-
-
-#----- debugging routines below ---------------------------------------
-
-# Print current configuration settings
-sub print_config {
-    print "\n----- OPTIONS SPECIFIC TO THIS EXECUTION -----------------------------\n\n" ;
-    
-    print "Include only URLs containing one of the following patterns:\n",
-          ( map { "    $_\n" } @INCLUDE_PATTERNS ),
-          "\n"
-        if @INCLUDE_PATTERNS ;
-
-    print "Exclude URLs containing one of the following patterns:\n",
-          (map { "    $_\n" } @EXCLUDE_PATTERNS ),
-          "\n"
-        if @EXCLUDE_PATTERNS ;
-
-    print "Only report response codes beginning with:  ",
-          join(", ", @INCLUDE_STATUS), "\n"
-        if @INCLUDE_STATUS ;
-
-    print "Don't report response codes beginning with: ",
-          join(", ", @EXCLUDE_STATUS), "\n"
-        if @EXCLUDE_STATUS ;
-
-    print "\nMaximum search depth:  $max_depth\n" if length($max_depth) ;
-
-    print <<EOS ;
-
------ INSTALLATION PARAMETERS ----------------------------------------
-    
-Local Host:           $LOCAL_HOST
-Document Root:        $DOCUMENT_ROOT
-User Web Directory:   $USER_DIR
-Default Filename(s):  @DIRECTORY_INDEX
-
-File extensions indicating a CGI program:       @CGI_EXTENSIONS
-File extensions indicating server-parsed HTML:  @SHTML_EXTENSIONS
-
-EOS
-
-    print "Directory Aliases:\n",
-          map { sprintf("    %15s ==> %s\n", $_, $ALIAS{$_}) }
-              sort keys %ALIAS, 
-          "\n"
-        if keys %ALIAS ;
-
-    print "Directory Regular Expression Aliases:\n", 
-          map { sprintf("    %15s ==> %s\n", $_, $ALIAS_MATCH{$_}) }
-              sort keys %ALIAS_MATCH,
-          "\n"
-        if keys %ALIAS_MATCH ;
-
-    print "Script Directory Aliases:\n", 
-          map { sprintf("    %15s ==> %s\n", $_, $SCRIPT_ALIAS{$_}) }
-              sort keys %SCRIPT_ALIAS,
-          "\n"
-        if keys %SCRIPT_ALIAS ;
-
-    print "Script Directory Regular Expression Aliases:\n", 
-          map { sprintf("    %15s ==> %s\n", $_, $SCRIPT_ALIAS_MATCH{$_}) }
-              sort keys %SCRIPT_ALIAS_MATCH,
-          "\n"
-        if keys %SCRIPT_ALIAS_MATCH ;
-
-    if ($ENV{'http_proxy'}) {
-        print "HTTP Proxy:  $ENV{'http_proxy'}\n" ;
-        print "Except to hosts ending in:  $ENV{'no_proxy'}\n" 
-            if $ENV{'no_proxy'} ;
-        print "\n" ;
-    } else {
-        print "Not using any HTTP Proxy.\n" ;
-    }
-
-    print "Maximum HTTP redirections allowed for a URL:  $MAX_REDIRECTS\n",
-          "Maximum number of tries to get a single URL:  $MAX_ATTEMPTS\n\n";
-          
-    print '-' x 70, "\n\n" ;
-
-}
-
-
-
-# print configuration, in a style more for debugging (mostly from srm.conf)
-sub print_debug_config {
-    print <<EOF ;
-DOCUMENT_ROOT=    [$DOCUMENT_ROOT]
-USER_DIR=         [$USER_DIR]
-DIRECTORY_INDEX=  [@DIRECTORY_INDEX]
-
-CGI_EXTENSIONS=   [@CGI_EXTENSIONS]
-SHTML_EXTENSIONS= [@SHTML_EXTENSIONS]
-
-EOF
-
-    foreach (sort keys %ALIAS) 
-        { print "ALIAS{$_}= [$ALIAS{$_}]\n" }
-    foreach (sort keys %ALIAS_MATCH) 
-        { print "ALIAS_MATCH{$_}= [$ALIAS_MATCH{$_}]\n" }
-    foreach (sort keys %SCRIPT_ALIAS) 
-        { print "SCRIPT_ALIAS{$_}= [$SCRIPT_ALIAS{$_}]\n" }
-    foreach (sort keys %SCRIPT_ALIAS_MATCH) 
-        { print "SCRIPT_ALIAS_MATCH{$_}= [$SCRIPT_ALIAS_MATCH{$_}]\n" }
-
-}
-
-
-#----------------------------------------------------------------------
-#
-#   SPARSE DOCUMENTATION ON PROGRAM INTERNALS:
-#
-#----------------------------------------------------------------------
-#
-#   URLs are read directly from the local filesystem if possible, or
-#   downloaded or checked with HTTP GET and HEAD methods if not.  CGI
-#   scripts are called through the HTTP server, even if local (since the
-#   resource their URLs refer to are not files).
-#
-#
-#   Global variables:
-#
-#     %url holds all data regarding all URLs, using the text URL as the key:
-#
-#     %url{$URL}{qw( URL filename referer depth
-#                    ishtml iscgi islocal dontfollow
-#                    status location numredirects numtries lasttried
-#                    ssierrs
-#                    hasbeenloaded)}  <== only for testing
-#         URL is same as hash key
-#         ishtml means is type text/html; links MAY be extracted.  (Used in
-#           main loop.)
-#         iscgi means is a CGI script; MUST NOT be read directly from 
-#           filesystem. (Used in verify_url() and load_url().)
-#         islocal means served by local server:
-#             a) MAY be read directly from filesystem
-#             b) links MAY be extracted
-#         dontfollow means links MUST NOT be extracted.
-#         status begins with a number, but may have text afterward.
-#
-#         islocal= (URL=~ m#^http://$LOCAL_HOST/#i) , i.e. redundant.
-#         ishtml and iscgi are guesses, may be 0, 1, or '' for unset.
-#         iscgi only matters for local URLs, but may safely be set for 
-#           remote URLs.
-#         dontfollow is a hack to handle an obscure CGI-related situation.
-#
-#     In addition to the standard HTTP status codes, 'status' may take one
-#     of the following values:
-#         450 Can't read file: $!
-#         451 SSI Error(s) (__ total)
-#         600 Can't create socket: $@
-#         601 Connection timed out
-#         602 Incomplete response (%s of %s bytes)
-#         603 Incomplete chunked response
-#
-#     Handling of 602 and 603 is somewhat hackish-- overwrites real status
-#       line with artificial one.
-#
-#     $url->{'ssierrs'} is a list of errors relating to SSI includes.
-#       Each error has a list of filenames representing the include
-#       chain.  Each element in the chain stores the absolute
-#       pathname, the <!--#include--> tag which called it, and
-#       possibly an error message (usually only on the last file in
-#       the include-chain).  Thus, the entire structure is
-#
-#         $url->{'ssierrs'}[$errid][$levelsdeep]{qw( path tag errmsg )}
-#
-#       This is only a memory hog with many errors of deeply nested files.
-#
-#
-#     @urlstoget: canonicalized list of URLs left to get, in order
-#         of appearance.  List elements are pointers to %url elements.
-#         This array may grow from &extract_urls(), or be rearranged when
-#         a URL needs to be retried.
-#
-#   Note that $url is normally a pointer, and $URL is normally a string.
-#
-#   Files/paths are canonicalized by removing unneeded "./" and "../"
-#     segments.
-#   Directories are canonicalized to always end in "/", including in URLs;
-#     note that some system variables and local directory variables aren't so.
-#   URLs that point to "/" end in "/", e.g. "http://www.foo.com/".
-#
-#
-#   This program has a lot of unused functionality for possible extension,
-#   so don't get confused by routines that do more than they are used for.
-#
-#----------------------------------------------------------------------
-#
-# To do:
-#
-#   * If you want a different output format (like in HTML), it should 
-#       be easy enough to add.
-#   * This could be extended to check remote sites without much trouble.
-#   * Should probably support directories that don't have index.html.
-#   * Check that pointed-to fragments exist in target files
-#   * keep track of servers and don't hit them too often
-#   * support robots.txt
-#   * add option to read list of URLs from file
-#   * support HTTP Basic Authentication somehow.  Note that currently, this
-#       reads local files even when they should be protected by .htaccess
-#       (unless using -h option).
-#   * Read list of local host names from gethostbyname() ?
-#   * check read permissions on files?
-#   * In the event multiple URLs redirect to the same URL, this could be a
-#       little more efficient if it saved the redirected loads/downloads.
-#
-#----------------------------------------------------------------------
--- a/Admin/website/build/img.memo.txt	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-mogrify -interlace line -strip -trim screenshot_isabelle_macos.gif
-convert -interlace line -scale x55 univ_tum_proto.gif univ_tum.gif
-convert -interlace line -scale x55 univ_cambridge_proto.gif univ_cambridge.gif
-convert -interlace line -scale x100 isabelle.gif isabelle_logo.gif
-convert -interlace line -scale '16x16!' isabelle.gif favicon.gif
-convert -interlace line -scale x125 tutorial_cover_big.gif tutorial_cover_small.gif
-convert -interlace line -scale 250x isabelle_pg_screenshot_big.png isabelle_pg_screenshot_small.png
--- a/Admin/website/build/localconf.at.template.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-# isaweb configuration
-# $Id$
-
-# build target (attention: ~ will not work!)
-OUTPUTROOT=$(HOME)/isabelle/website_test
-#~ OUTPUTROOT=/home/proj/isabelle/website
-
-# location of isabelle distribution packages
-ISABELLE_DIST=$(DISTBASE)
-
-# location of doc content file
-ISABELLE_DOC_CONTENT_FILE=$(DISTBASE)/$(DISTNAME)/doc/Contents
-
-# umask/group for target files
-TARGET_UMASK_FILE=u=rw,g=rw,o=r
-TARGET_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-TARGET_GROUP=isabelle
-LOCAL_UMASK_FILE=u=rw,g=rw,o=r
-LOCAL_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-LOCAL_GROUP=isabelle
-
-# python interpreter (>= 2.3)
-PYTHON=python
-
-# GNU find
-FIND=find
-
-# GNU copy
-COPY=cp
-
-# HTML tidy (needs not to be set if tidy usage is disabled, see below)
-TIDY=tidy
-
-# rsync (if not set, use dumb cp instead)
-RSYNC=rsync
-
-# set to a true value to use the "pypager iso-8859-1" hack
-# (may be neccessary for older versions of HTML tidy)
-FORCE_ISO_8859_1=
-
-# set to a true value to disable html tidy postprocessing
-DISABLE_TIDY=
--- a/Admin/website/build/localconf.sun.template.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-# isaweb configuration
-# $Id$
-
-# build target (attention: ~ will not work!)
-OUTPUTROOT=$(HOME)/isabelle/website_test
-#~ OUTPUTROOT=/home/proj/isabelle/website
-
-# location of isabelle distribution packages
-ISABELLE_DIST=$(DISTBASE)
-
-# location of doc content file
-ISABELLE_DOC_CONTENT_FILE=$(DISTBASE)/$(DISTNAME)/doc/Contents
-
-# umask/group for target files
-TARGET_UMASK_FILE=u=rw,g=rw,o=r
-TARGET_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-TARGET_GROUP=isabelle
-LOCAL_UMASK_FILE=u=rw,g=rw,o=r
-LOCAL_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-LOCAL_GROUP=isabelle
-
-# python interpreter (>= 2.3)
-PYTHON=python2.3
-
-# GNU find
-FIND=gfind
-
-# GNU copy
-COPY=gcp
-
-# HTML tidy (needs not to be set if tidy usage is disabled, see below)
-TIDY=tidy
-
-# rsync (if not set, use dumb cp instead)
-RSYNC=rsync
-
-# set to a true value to use the "pypager iso-8859-1" hack
-# (may be neccessary for older versions of HTML tidy)
-FORCE_ISO_8859_1=
-
-# set to a true value to disable html tidy postprocessing
-DISABLE_TIDY=
--- a/Admin/website/build/main.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-# isaweb makefile
-# $Id$
-
-# force shell
-SHELL=bash
-
-# some global variables
-CONF=conf/localconf.mak
-
-# configuration switch
-ifeq ($(phase), init)
-
-# allocate configuration
-init:
-	mkdir -p conf
-	case $$HOSTNAME in sunbroy*) ARCH=sun;; *) ARCH=at;; esac; \
-	sed 's/# $$Id.*//g' build/localconf.$$ARCH.template.mak > $(CONF)
-	$$EDITOR $(CONF)
-	@false
-.PHONY: init
-
-else
-
-# default target
-default: project
-
-# check configuration
-include $(CONF)
-$(CONF):
-	@if [ ! -e $(CONF) ]; \
-	then \
-		echo 'Framework not configured yet; set EDITOR environment variable'; \
-		echo 'to your favorite editor and type'; \
-		echo; \
-		echo '    make phase=init'; \
-		echo; \
-		echo 'to configure it'; \
-		false; \
-	else \
-		:; \
-	fi
-
-# tidy handling
-ifeq ($(DISABLE_TIDY),)
-TIDYCMD=$(TIDY) -q -i -asxhtml --output-xhtml true \
-                --doctype auto \
-                --literal-attributes true \
-                --wrap 0 \
-                --indent auto --indent-spaces 2 \
-                --input-encoding utf8 --output-encoding latin1 \
-                --logical-emphasis yes --gnu-emacs yes --write-back yes
-else
-TIDYCMD=:
-endif
-
-# dependencies
-DEP_FILE=conf/depends.mak
-site: $(DEP_FILE) allsite
-.PHONY: site
-
-# import dependencies
-include $(DEP_FILE)
-endif
-
-# pypager iso-8859-1 hack
-ifneq ($(FORCE_ISO_8859_1),)
-FORCE_ENC_CMD=--encodinghtml "iso-8859-1"
-else
-FORCE_ENC_CMD=
-endif
-
-# import project-specific dependencies
-include build/project.mak
-
-# build dependencies
-$(DEP_FILE): $(CONF)
-	build/make_dep.bash "$(FIND)" "$(OUTPUTROOT)" "$(DEP_FILE)" "$(STATICDIRS)" "$(STATICFILES)"
-
-# build dependencies explicitly
-depends:
-	rm -f $(DEP_FILE)
-	$(MAKE) $(DEP_FILE)
-.PHONY: depends
-
-# clean build files
-clean:
-	rm -f $(DEP_FILE)
-.PHONY: clean
--- a/Admin/website/build/make_dep.bash	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-#!/usr/bin/env bash
-# $Id$
-
-# build make dependency file
-
-# parameters
-FIND="$1"
-OUTPUTROOT="$2"
-DEP_FILE="$3"
-STATICDIRS="$4"
-STATICFILES="$5"
-
-rm -f "$DEP_FILE"
-touch "$DEP_FILE"
-echo '# This is a generated file; do not edit' >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-allstatic=''
-for dir in $STATICDIRS
-do
-    for file in $("$FIND" "$dir" -follow -type f -a ! -path "*/CVS/*" -a ! -path "*/.svn/*")
-    do
-        outputfile="\$(OUTPUTROOT)/$file"
-        echo "$outputfile: $file" >> "$DEP_FILE"
-        echo '	mkdir -p $(dir $@)' >> "$DEP_FILE"
-        echo '	-chmod $(TARGET_UMASK_DIR) $(dir $@)' >> "$DEP_FILE"
-        echo '	-chgrp $(TARGET_GROUP) $(dir $@)' >> "$DEP_FILE"
-        echo '	-[ -e $@ ] && rm $@' >> "$DEP_FILE"
-        echo '	cp $< $@' >> "$DEP_FILE"
-        echo '	chmod $(TARGET_UMASK_FILE) $@' >> "$DEP_FILE"
-        echo '	chgrp $(TARGET_GROUP) $@' >> "$DEP_FILE"
-        allstatic="$allstatic$outputfile "
-        echo >> "$DEP_FILE"
-    done
-done
-echo "DEP_ALLSTATIC=$allstatic" >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-echo 'DEP_HTML=$(DEP_ALLSTATIC) $(STATICFILES) $(DEP_FILE) $(CONF)' >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-allhtml=''
-for html in $("$FIND" . -name "*.html" -a ! -name "*.include.html")
-do
-    outputfile="\$(OUTPUTROOT)/$html"
-    echo "$outputfile: $html \$(DEP_HTML)" >> "$DEP_FILE"
-    echo '	mkdir -p $(dir $@)' >> "$DEP_FILE"
-    echo '	-chmod $(TARGET_UMASK_DIR) $(dir $@)' >> "$DEP_FILE"
-    echo '	-chgrp $(TARGET_GROUP) $(dir $@)' >> "$DEP_FILE"
-    echo '	-[ -e $@ ] && rm $@' >> "$DEP_FILE"
-    echo '	$(PYTHON) build/pypager.py --dtd="dtd/" $(FORCE_ENC_CMD) --srcroot="." --dstroot="$(OUTPUTROOT)" distname="$(DISTNAME)" $< $@' >> "$DEP_FILE"
-    echo '	chmod $(TARGET_UMASK_FILE) $@' >> "$DEP_FILE"
-    echo '	chgrp $(TARGET_GROUP) $@' >> "$DEP_FILE"
-    echo '	$(PYTHON) build/obfusmail.py --dtd="dtd/" $@' >> "$DEP_FILE"
-    echo '	-$(TIDYCMD) $@' >> "$DEP_FILE"
-    allhtml="$allhtml$outputfile "
-    echo >> "$DEP_FILE"
-done
-echo "DEP_ALLHTML=$allhtml" >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-echo 'allsite: $(DEP_ALLHTML) $(DEP_ALLSTATIC)' >> "$DEP_FILE"
-echo ".PHONY: allsite" >> "$DEP_FILE"
--- a/Admin/website/build/mkcontents.pl	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/usr/bin/perl
-
-# mkcontents.pl
-#
-#   $Id$
-#
-#   simple script to create a html version of the Contents file in the
-#   Isabelle documentation directory.
-#
-#   Nov/14/1999 Version 1.0  -  Gerwin Klein <kleing@in.tum.de>
-#
-#   command line:
-#   mkcontent.pl [-p <url-path-prefix>] <Content-file> <output-file>
-#
-
-
-use Getopt::Long ;
-
-$opt_p="";
-$result = GetOptions ("p=s");
-
-$path=$opt_p;
-
-$infile  = $ARGV[0];
-$outfile = $ARGV[1];
-
-$listHeader = "<ul>\n";
-$lineHeader = "  <li>";
-$lineEnd    = "</li>\n";
-$listFooter = "</ul>\n";
-
-$topicStart = "<h3>";
-$topicEnd   = "</h3>\n";
-
-open(IN, "<$infile") || die "cannot read input file <$infile>";
-open(OUT, ">$outfile") || die "cannot write output file <$outfile>";
-
-$first = 1;
-
-print OUT '<?xml version="1.0" encoding="iso-8859-1" ?>' . "\n";
-print OUT '<dummy:wrapper xmlns:dummy="http://nowhere.no">' . "\n";
-
-while (<IN>) {
-  if (/^([^ \t].*)\n/) {
-    if ($first == 1) {
-      $first = 0;
-    }
-    else {
-      print OUT $listFooter;
-    }
-    print OUT $topicStart;
-    print OUT $1;
-    print OUT $topicEnd;
-    print OUT $listHeader;
-  }
-  elsif (/^[ \t]+([^ \t]+)[ \t]+(.+)\n/) {
-    print OUT $lineHeader;
-    print OUT "<a target='_blank' href='$path$1.pdf'>$2</a>";
-    print OUT $lineEnd;
-  }
-}
-
-print OUT $listFooter;
-
-print OUT '</dummy:wrapper>' . "\n";
-
-close(OUT);
-close(IN);
-
-exit(0);
--- a/Admin/website/build/obfusmail.py	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
-    Obfucatings mail adresses
-"""
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-import sys
-import os
-from os import path
-import posixpath
-import optparse
-from cStringIO import StringIO
-
-from xml.sax.saxutils import escape
-from xml.sax.saxutils import quoteattr
-
-from xhtmlparse import TransformerHandler, parseWithER
-
-# global configuration
-outputEncoding = 'UTF-8'
-
-def split_mail(mail):
-
-    mail_arg = mail.split("?", 2)
-    if len(mail_arg) == 2:
-        mail, arg = mail_arg
-    else:
-        mail = mail_arg[0]
-        arg = None
-    name, host = mail.split("@", 2) 
-
-    return ((name, host), arg)
-
-class FindHandler(TransformerHandler):
-
-    class DevZero(object):
-
-        def write(self, s):
-
-            pass
-
-    def __init__(self, dtd, mails, enc):
-
-        super(FindHandler, self).__init__(self.DevZero(), 'UTF-8', dtd)
-        self.mails = mails
-        self.enc = enc
-        self.pending_mail = None
-
-    def startElement(self, name, attrs):
-
-        if name == u'a':
-            href = attrs.get(u'href', u'')
-            if href.startswith(u'mailto:'):
-                self.pending_mail = href[7:]
-        super(FindHandler, self).startElement(name, attrs)
-        if name == u'meta' and attrs.get(u'http-equiv', u'').lower() == u'content-type':
-            content = attrs.get(u'content', u'')
-            if content.startswith(u'text/html; charset='):
-                self.enc = content[19:]
-
-    def endElement(self, name):
-
-        if name == u'a':
-            if self.pending_mail is not None:
-                baremail = "%s@%s" % split_mail(self.pending_mail)[0]
-                if self.currentContent() != baremail:
-                    raise Exception("Inconsistent mail address: '%s' vs. '%s'" % (self.currentContent(), baremail))
-                self.mails[self.pending_mail] = True
-                self.pending_mail = None
-        super(FindHandler, self).endElement(name)
-
-    def processingInstruction(self, target, data):
-
-        pass
-
-class ReplaceHandler(TransformerHandler):
-
-    def __init__(self, out, dtd, encoding, mails):
-
-        super(ReplaceHandler, self).__init__(out, encoding, dtd)
-        self.pending_mail = None
-        self.mails = mails
-
-    def startElement(self, name, attrs):
-
-        if name == u'a':
-            href = attrs.get(u'href', u'')
-            if href.startswith(u'mailto:'):
-                self.pending_mail = href[7:]
-                return
-
-        super(ReplaceHandler, self).startElement(name, attrs)
-
-    def endElement(self, name):
-
-        if name == u'a':
-            if self.pending_mail is not None:
-                self.flushCharacterBuffer()
-                self._lastStart = False
-                self._out.write(self.mails[self.pending_mail])
-                self.pending_mail = None
-                return
-
-        super(ReplaceHandler, self).endElement(name)
-
-    def characters(self, content):
-
-        if self.pending_mail is None:
-            super(ReplaceHandler, self).characters(content)
-
-    def processingInstruction(self, target, data):
-
-        pass
-
-def obfuscate(mailaddr, htmlfile):
-
-    def mk_line(s):
-        return u"document.write('%s');" % s.replace("'", "\\'")
-    def mk_script(s):
-        return u'<script type="text/javascript">/*<![CDATA[*/%s/*]]>*/</script>' % s
-    def cmd(s):
-        print "[shell cmd] %s" % s
-        n = os.system(s)
-        if n != 0:
-            raise Exception("shell cmd error: %s" % n)
-
-    ((name, host), arg) = split_mail(mailaddr)
-    baremail = "%s@%s" % (name, host)
-    imgname = (name + "_" + host).replace(".", "_") + ".png"
-    imgfile = path.join(path.split(htmlfile)[0], imgname)
-    mod = os.stat(htmlfile).st_mode
-    gid = os.stat(htmlfile).st_gid
-    cmd("convert label:'%s' '%s'" % (baremail, imgfile))
-    try:
-        os.chmod(imgfile, mod)
-    except OSError:
-        pass
-    try:
-        os.chown(imgfile, -1, gid)
-    except OSError:
-        pass
-    if arg is not None:
-        mailsimple = u"{%s} AT [%s] WITH (%s)" % (name, host, arg)
-        mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, "?", arg, '">']));
-    else:
-        mailsimple = u"{%s} AT [%s]" % (name, host)
-        mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, '">']));
-    mailimg = '<img src=%s style="vertical-align:middle" alt=%s />' % (quoteattr(imgname), quoteattr(mailsimple))
-
-    result = (mk_script(mailscript) + mailimg + mk_script(mk_line("</a>")))
-    return result
-
-def main():
-
-    # parse command line
-    cmdlineparser = optparse.OptionParser(
-        usage = '%prog [options] htmlfile',
-        conflict_handler = "error",
-        description = '''Protecting mail adresses in html files by obfuscating''',
-        add_help_option = True,
-    )
-    cmdlineparser.add_option("-t", "--dtd",
-        action="store", dest="dtd",
-        type="string", default=".",
-        help="local mirror of XHTML DTDs", metavar='location')
-
-    options, (filename,) = cmdlineparser.parse_args(sys.argv[1:])
-
-    # find mails
-    mails = {}
-    enc = outputEncoding
-    istream = open(filename, 'r')
-    findhandler = FindHandler(options.dtd, mails, enc)
-    parseWithER(istream, findhandler)
-    enc = findhandler.enc
-    istream.close()
-
-    if mails:
-        # transform mails
-        mails_subst = {}
-        for mail in mails.iterkeys():
-            mails_subst[mail] = obfuscate(mail, filename)
-
-        # transform pages
-        istream = StringIO(open(filename, 'r').read())
-        ostream = open(filename, 'wb')
-        print "writing %s with %s" % (filename, enc)
-        replacehandler = ReplaceHandler(ostream, options.dtd, enc, mails_subst)
-        parseWithER(istream, replacehandler)
-        ostream.close()
-        istream.close()
-
-if __name__ == '__main__':
-    main()
-
-__todo__ = '''
-'''
--- a/Admin/website/build/project.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-# isaweb makefile - project-specific dependencies
-# $Id$
-
-include conf/distinfo.mak
-conf/distinfo.mak:
-	@echo 'There is no $@ file; it should have been allocated by makedist.'; \
-	@echo 'If you have no makedist at hand, check out default $@ from CVS'; \
-	@false; \
-
-STATICDIRS=css img media misc js
-STATICFILES=include/documentationdist.include.html
-OUTPUTDIST_REL=dist-$(DISTNAME)
-OUTPUTDIST=$(OUTPUTROOT)/$(OUTPUTDIST_REL)
-
-project: $(OUTPUTDIST) site
-.PHONY: project
-
-cleanproject:
-	rm -rf $(OUTPUTDIST)
-.PHONY: cleanproject
-
-ifeq ($(RSYNC),)
-
-$(OUTPUTDIST): $(ISABELLE_DIST)
-	mkdir -p $@
-	$(COPY) -vRud $</[^w]* $@
-	-chgrp -hR $(TARGET_GROUP) $@
-	-chmod -R u+w,g-w,o-w $@
-	( cd $@ && rm -f Isabelle && ln -s $(DISTNAME) Isabelle )
-	-chgrp -h $(TARGET_GROUP) $@/Isabelle
-	-chmod u+w,g-w,o-w $@/Isabelle
-	( cd $(OUTPUTROOT) && rm -f dist && ln -s $(OUTPUTDIST_REL) dist )
-
-else
-
-$(OUTPUTDIST): $(ISABELLE_DIST) SYNC_ALWAYS
-	mkdir -p $@
-	$(RSYNC) -v --exclude='/website/' -rlt --delete --delete-after $</ $@
-	-chgrp -hR $(TARGET_GROUP) $@
-	-chmod -R u+w,g-w,o-w $@
-	( cd $@ && rm -f Isabelle && ln -s $(DISTNAME) Isabelle )
-	-chgrp -h $(TARGET_GROUP) $@/Isabelle
-	-chmod u+w,g-w,o-w $@/Isabelle
-	( cd $(OUTPUTROOT) && rm -f dist && ln -s $(OUTPUTDIST_REL) dist )
-
-SYNC_ALWAYS:
-
-endif
-
-include/documentationdist.include.html: $(ISABELLE_DOC_CONTENT_FILE)
-	perl build/mkcontents.pl -p '//dist/Isabelle/doc/' $< $@
-
-perms:
-	build/set_perm.bash $(FIND) $(LOCAL_UMASK_FILE) $(LOCAL_UMASK_DIR) $(LOCAL_GROUP)
-.PHONY: perms
\ No newline at end of file
--- a/Admin/website/build/pypager.py	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,389 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
-    (on available processing instructions, see the Functions class)
-"""
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-# generic imports
-import sys
-import os
-from os import path
-import posixpath
-import shlex
-import optparse
-import time
-
-# xhtml parsing
-from xhtmlparse import TransformerHandler, parseWithER
-
-nbsp = unichr(160)
-
-# global configuration
-outputEncoding = 'UTF-8'
-
-# implement your own functions for PIs here
-class Functions(object):
-
-    def __init__(self, pc, valdict, modtime, encodingMeta):
-
-        self._pc = pc
-        self._valdict = valdict
-        self._modtime = modtime
-        self._encodingMeta = encodingMeta
-
-    def value(self, handler, key):
-
-        """<?value key="..."?> - inserts a property value given on the command line"""
-
-        value = self._valdict[key]
-        handler.characters(value)
-
-    def title(self, handler):
-
-        """<?title?> - inserts the document's title as glimpsed from the <title> tag"""
-
-        handler.characters(handler._title)
-
-    def contentType(self, handler):
-
-        """<?contentType?> - inserts the document's content type/encoding"""
-
-        encoding = self._encodingMeta or handler._encoding
-        attr = {
-            u"http-equiv": u"Content-Type",
-            u"content": u"text/html; charset=%s" % encoding
-        }
-        handler.startElement(u"meta", attr)
-        handler.endElement(u"meta")
-
-    def currentDate(self, handler):
-
-        """<?currentDate?> - inserts the current date"""
-
-        handler.characters(unicode(time.strftime('%Y-%m-%d %H:%M:%S')))
-
-    def modificationDate(self, handler):
-
-        """<?modificationDate?> - inserts the modification date of this file"""
-
-        handler.characters(unicode(time.strftime('%Y-%m-%d %H:%M:%S',
-            time.localtime(self._modtime))))
-
-    def relativeRoot(self, handler, href):
-
-        """<?relativeRoot href="..."?> - inserts the relative path specified by href"""
-
-        handler.characters(self._pc.relDstPathOf('//'+href.encode("latin-1")))
-
-    def include(self, handler, file):
-
-        """<?include file="..."?> - includes an XML file"""
-
-        filename = self._pc.absSrcPathOf(file.encode("latin-1"))
-        self._modtime = max(self._modtime, os.stat(filename).st_mtime)
-        istream = open(filename, "r")
-        parseWithER(istream, handler)
-        istream.close()
-
-    def navitem(self, handler, target, title):
-
-        """<?navitem target="..." title="..."?> - inserts an item in a navigation list,
-            targeting to <target> and entitled <title>"""
-
-        target = self._pc.relDstPathOf(target.encode("latin-1"))
-        if self._pc.isSrc(target):
-            wrapTagname = u"strong"
-        else:
-            wrapTagname = u"span"
-        attr = {}
-        handler.startElement(u"li", attr)
-        handler.startElement(wrapTagname, {})
-        handler.startElement(u"a", {
-            u"href": unicode(target, 'latin-1')
-        })
-        handler.characters(title)
-        handler.endElement(u"a")
-        handler.endElement(wrapTagname)
-        handler.endElement(u"li")
-
-    def downloadLink(self, handler, target, title = None):
-
-        """<?downloadLink target="..." [title="..."]?> - inserts a link to a file
-           to download; if the title is omitted, it is the bare filename itself"""
-
-        targetReal = self._pc.absDstPathOf(target.encode("latin-1"))
-        if not title:
-            title = unicode(posixpath.split(targetReal)[1], 'latin-1')
-        size = os.stat(targetReal).st_size
-        handler.startElement(u"a", {
-            u"href": target
-        })
-        handler.characters(title)
-        handler.endElement(u"a")
-
-    def downloadCells(self, handler, target, title = None):
-
-        """<?downloadCells target="..." [title="..."]?> - like downloadLink, but
-           puts the link into a table cell and appends a table cell displaying the
-           size of the linked file"""
-
-        targetReal = self._pc.absDstPathOf(target.encode("latin-1"))
-        if not title:
-            title = unicode(posixpath.split(targetReal)[1], 'latin-1')
-        size = os.stat(targetReal).st_size
-        handler.startElement(u"td", {})
-        handler.startElement(u"a", {
-            u"href": target
-        })
-        handler.characters(title)
-        handler.endElement(u"a")
-        handler.endElement(u"td")
-        handler.startElement(u"td", {})
-        handler.characters(u"%.1f%sMB" % (size / (1024.0 * 1024), unichr(160)))
-        handler.endElement(u"td")
-
-    def mirror(self, handler, prefix, title, stripprefix = u""):
-
-        """<?mirror prefix="..." title="..." [stripprefix="..."] ?> - generates a mirror switch link,
-           where prefix denotes the base root url of the mirror location
-           and title the visible description"""
-
-        title = title.replace(u" ", unichr(160))
-        thisloc = self._pc.relLocOfThis()
-        if thisloc.startswith(stripprefix):
-            thisloc = thisloc[len(stripprefix):]
-        else:
-            raise Exception("Incompatible mirror (prefix to strip not found): %s" % title.encode("latin-1"))
-        handler.startElement(u"a", {u"href": posixpath.join(prefix, thisloc)})
-        handler.characters(title)
-        handler.endElement(u"a")
-
-    def getPc(self):
-
-        return self._pc
-
-# a notion of paths
-class PathCalculator:
-
-    def __init__(self, srcLoc, srcRoot, dstRoot):
-
-        self._src = path.normpath(path.abspath(srcLoc))
-        srcPath, self._srcName = path.split(self._src)
-        self._srcRoot = path.normpath(path.abspath(srcRoot))
-        self._dstRoot = path.normpath(path.abspath(dstRoot))
-        self._relRoot = ""
-        relLocChain = []
-        diffRoot = srcPath
-        while diffRoot != self._srcRoot:
-            self._relRoot = path.join(self._relRoot, os.pardir)
-            diffRoot, chainPiece = path.split(diffRoot)
-            relLocChain.insert(0, chainPiece)
-        self._relRoot = self._relRoot and self._relRoot + '/'
-        self._relLoc = relLocChain and path.join(*relLocChain) or ""
-
-    def isSrc(self, loc):
-
-        return self.absSrcPathOf(loc) == self._src
-
-    def relRootPath(self):
-
-        return self._relRoot
-
-    def absSrcPathOf(self, loc):
-
-        if loc.startswith("//"):
-            return path.normpath(path.abspath(loc[2:]))
-        else:
-            return path.normpath(path.abspath(path.join(self._relLoc, loc)))
-
-    def absDstPathOf(self, loc):
-
-        if loc.startswith("//"):
-            return path.join(self._dstRoot, loc[2:])
-        elif loc.startswith("http:") or loc.startswith("https:"):
-            return loc
-        else:
-            return path.join(self._dstRoot, self._relLoc, loc)
-
-    def relSrcPathOf(self, loc):
-
-        loc = self.absSrcPathOf(loc)
-        loc = self.stripCommonPrefix(loc, self._srcRoot)
-        loc = self.stripCommonPrefix(loc, self._relLoc)
-        return loc
-
-    def relDstPathOf(self, loc):
-
-        if loc.startswith("http:") or loc.startswith("https:"):
-            return loc
-        else:
-            loc = self.absDstPathOf(loc)
-            loc = self.stripCommonPrefix(loc, self._dstRoot)
-            loc = posixpath.join(self._relRoot, loc)
-            return loc
-
-    def relLocOfThis(self):
-
-        return posixpath.join(self._relLoc, self._srcName)
-
-    def stripCommonPrefix(self, loc, prefix):
-
-        common = self.commonPrefix((loc, prefix))
-        if common:
-            loc = loc[len(common):]
-            if loc and loc[0] == '/':
-                loc = loc[1:]
-        return loc
-
-    def commonPrefix(self, locs):
-
-        common = path.commonprefix(locs)
-        # commonprefix bugs
-        if [ loc for loc in locs if len(loc) != common ] and \
-            [ loc for loc in locs if len(common) < len(loc) and loc[len(common)] != path.sep ]:
-                common = path.split(common)[0]
-        if common and common[-1] == path.sep:
-            common = common[:-1]
-
-        return common or ""
-
-class FunctionsHandler(TransformerHandler):
-
-    def __init__(self, out, encoding, dtd, func):
-
-        super(FunctionsHandler, self).__init__(out, encoding, dtd)
-        self._func = func
-        self._title = None
-
-    def transformAbsPath(self, attrs, attrname):
-
-        pathval = attrs.get(attrname, None)
-        if pathval and pathval.startswith(u"//"):
-            attrs = dict(attrs)
-            pathRel = self._func.getPc().relDstPathOf(pathval)
-            pathDst = self._func.getPc().absDstPathOf(pathval)
-            if not path.exists(pathDst):
-                raise Exception("Path does not exist: %s" % pathDst)
-            attrs[attrname] = pathRel
-            return attrs
-        else:
-            return attrs
-
-    def startElement(self, name, attrs):
-
-        if name == u"dummy:wrapper":
-            return
-        # this list is not exhaustive
-        for tagname, attrname in ((u"a", u"href"), (u"img", u"src"), (u"link", u"href"), (u"script", u"src")):
-            if name == tagname:
-                attrs = self.transformAbsPath(attrs, attrname)
-        super(FunctionsHandler, self).startElement(name, attrs)
-
-    def endElement(self, name):
-
-        if name == u"dummy:wrapper":
-            return
-        elif name == u'title':
-            self._title = u"".join(self._characterBuffer)
-        super(FunctionsHandler, self).endElement(name)
-
-    def processingInstruction(self, target, data):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        func = getattr(self._func, target)
-        args = {}
-        for keyval in shlex.split(data.encode("utf-8")):
-            key, val = keyval.split("=", 1)
-            args[key] = val
-        func(self, **args)
-
-
-def main():
-
-    # parse command line
-    cmdlineparser = optparse.OptionParser(
-        usage = '%prog [options] [key=value]* src [dst]',
-        conflict_handler = "error",
-        description = '''Leightweight HTML page generation tool''',
-        add_help_option = True,
-    )
-    cmdlineparser.add_option("-s", "--srcroot",
-        action="store", dest="srcroot",
-        type="string", default=".",
-        help="source tree root", metavar='location')
-    cmdlineparser.add_option("-d", "--dstroot",
-        action="store", dest="dstroot",
-        type="string", default=".",
-        help="destination tree root", metavar='location')
-    cmdlineparser.add_option("-t", "--dtd",
-        action="store", dest="dtd",
-        type="string", default=".",
-        help="local mirror of XHTML DTDs", metavar='location')
-    cmdlineparser.add_option("-m", "--encodinghtml",
-        action="store", dest="encodinghtml",
-        type="string", default="",
-        help="force value of html content encoding meta tag", metavar='encoding')
-
-    options, args = cmdlineparser.parse_args(sys.argv[1:])
-
-    # check source
-    if len(args) < 1:
-        cmdlineparser.error("Exactly one soure file must be given")
-
-    # read arguments
-    valdict = {}
-    if len(args) == 1:
-        src = args[0]
-        dst = None
-    else:
-        if "=" in args[-2]:
-            src = args[-1]
-            dst = None
-            vallist = args[:-1]
-        else:
-            src = args[-2]
-            dst = args[-1]
-            if dst == "-":
-                dst = None
-            vallist = args[:-2]
-        for keyval in vallist:
-            key, val = keyval.split("=", 1)
-            valdict[unicode(key, 'latin-1')] = unicode(val, 'latin-1')
-
-    # path calculator
-    pc = PathCalculator(src, options.srcroot, options.dstroot)
-
-    # function space
-    modtime = os.stat(src).st_mtime
-    func = Functions(pc, valdict, modtime, options.encodinghtml)
-
-    # allocate file handles
-    istream = open(src, 'r')
-    if dst is not None:
-        ostream = open(dst, 'wb')
-    else:
-        ostream = sys.stdout
-
-    # process file
-    try:
-        transformer = FunctionsHandler(ostream, outputEncoding, options.dtd, func)
-        parseWithER(istream, transformer)
-    except Exception:
-        if dst is not None:
-            os.unlink(dst)
-        raise
-
-    # close handles
-    ostream.close()
-    istream.close()
-
-if __name__ == '__main__':
-    main()
-
-__todo__ = '''
-'''
--- a/Admin/website/build/set_perm.bash	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-# $Id$
-
-# set permissions for local files
-
-# parameters
-FIND="$1"
-LOCAL_UMASK_FILE="$2"
-LOCAL_UMASK_DIR="$3"
-LOCAL_GROUP="$4"
-
-for file in $("$FIND" .)
-do
-    if [ -O "$file" ]
-    then
-        echo "$file..."
-        if [ -d "$file" ]
-        then
-            chmod "$LOCAL_UMASK_DIR" "$file"
-        else
-            if [ -x "$file" ]
-            then
-                chmod "$LOCAL_UMASK_FILE",u+x,g+x "$file"
-            else
-                chmod "$LOCAL_UMASK_FILE" "$file"
-            fi
-        fi
-        chgrp "$LOCAL_GROUP" "$file"
-    fi
-done
--- a/Admin/website/build/xhtmlparse.py	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
-    Common services for parsing xhtml.
-"""
-
-__all__ = ['TransformerHandler']
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-from os import path
-import codecs
-import posixpath
-from xml.sax.saxutils import escape
-from xml.sax.saxutils import quoteattr
-from xml.sax import make_parser as makeParser
-from xml.sax.handler import ContentHandler
-from xml.sax.handler import EntityResolver
-from xml.sax.xmlreader import AttributesImpl as Attributes
-from xml.sax import SAXException
-from xml.sax import SAXParseException
-
-nbsp = unichr(160)
-
-class TransformerHandler(object, ContentHandler, EntityResolver):
-
-    def __init__(self, out, encoding, dtd):
-
-        ContentHandler.__init__(self)
-        self._out = codecs.getwriter(encoding)(out)
-        self._encoding = encoding
-        self._dtd = dtd
-        self._ns_contexts = [{}] # contains uri -> prefix dicts
-        self._current_context = self._ns_contexts[-1]
-        self._undeclared_ns_maps = []
-        self._characterBuffer = {}
-        self._lastStart = False
-        self._currentXPath = []
-        self._init = False
-
-    def closeLastStart(self):
-
-        if self._lastStart:
-            self._out.write(u'>')
-            self._lastStart = False
-
-    def currentContent(self):
-
-        return u"".join(self._characterBuffer)
-
-    def flushCharacterBuffer(self):
-
-        content = escape(self.currentContent())
-        self._out.write(content)
-        self._characterBuffer = []
-
-    def startDocument(self):
-
-        if not self._init:
-            if self._encoding.upper() != 'UTF-8':
-                self._out.write(u'<?xml version="1.0" encoding="%s"?>\n' %
-                                self._encoding)
-            else:
-                self._out.write(u'<?xml version="1.0"?>\n')
-            self._init = True
-
-    def startPrefixMapping(self, prefix, uri):
-
-        self._ns_contexts.append(self._current_context.copy())
-        self._current_context[uri] = prefix
-        self._undeclared_ns_maps.append((prefix, uri))
-
-    def endPrefixMapping(self, prefix):
-
-        self._current_context = self._ns_contexts[-1]
-        del self._ns_contexts[-1]
-
-    def startElement(self, name, attrs):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        self._out.write(u'<' + name)
-        for (key, value) in attrs.items():
-            self._out.write(u' %s=%s' % (key, quoteattr(value)))
-        self._currentXPath.append(name)
-        self._lastStart = True
-
-    def endElement(self, name):
-
-        self.flushCharacterBuffer()
-        if self._lastStart:
-            self._out.write(u'/>')
-            self._lastStart = False
-        else:
-            self._out.write('</%s>' % name)
-        self._currentXPath.pop()
-
-    def startElementNS(self, name, qname, attrs):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        if name[0] is None:
-            # if the name was not namespace-scoped, use the unqualified part
-            name = name[1]
-        else:
-            # else try to restore the original prefix from the namespace
-            name = self._current_context[name[0]] + u":" + name[1]
-        self._out.write(u'<' + name)
-
-        for pair in self._undeclared_ns_maps:
-            self._out.write(u' xmlns:%s="%s"' % pair)
-        self._undeclared_ns_maps = []
-
-        for (name, value) in attrs.items():
-            name = self._current_context[name[0]] + ":" + name[1]
-            self._out.write(' %s=%s' % (name, quoteattr(value)))
-        self._out.write('>')
-        self._currentXPath.append(name)
-
-    def endElementNS(self, name, qname):
-
-        self.flushCharacterBuffer()
-        if name[0] is None:
-            name = name[1]
-        else:
-            name = self._current_context[name[0]] + u":" + name[1]
-        if self._lastStart:
-            self._out.write(u'/>')
-            self._lastStart = False
-        else:
-            self._out.write(u'</%s>' % name)
-        self._currentXPath.pop()
-
-    def characters(self, content):
-
-        self.closeLastStart()
-        self._characterBuffer.append(content)
-
-    def ignorableWhitespace(self, content):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        self._out.write(content)
-
-    def resolveEntity(self, publicId, systemId):
-
-        loc, name = posixpath.split(systemId)
-        if loc == u"http://www.w3.org/TR/xhtml1/DTD" or loc == u"":
-            systemId = path.abspath(path.join(self._dtd, name))
-        return EntityResolver.resolveEntity(self, publicId, systemId)
-
-    def processingInstruction(self, target, data):
-
-        raise Exception("no handler defined for processing instructions")
-
-def parseWithER(istream, handler):
-
-    parser = makeParser()
-    parser.setContentHandler(handler)
-    parser.setEntityResolver(handler)
-    parser.parse(istream)
--- a/Admin/website/community.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Community</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-
-      <h2>Project partners</h2>
-
-      <p>Isabelle is a joint project between
-      <a href="http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>
-      (<a href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html">University of Cambridge</a>, UK) and
-      <a href="http://www.in.tum.de/~nipkow/">Tobias Nipkow</a>
-      (<a href="http://www4.in.tum.de/proj/theoremprov/group.html">Technical University of Munich</a>, Germany).</p>
-
-      <p>There is an (incomplete) list of past and present <a href=
-      "http://www.cl.cam.ac.uk/Research/HVG/Isabelle/projects.html">projects</a>
-      undertaken using Isabelle.</p>
-
-      <h2>Isabelle in your neighbourhood</h2>
-
-      <p>Find out on the <a href="//world_map.html">world map</a>!</p>
-
-      <h2>Mailing list</h2> 
-
-      <p>You may use the mailing list <a href=
-          "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
-          <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
-          problems and results.
-          Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-
-      <h2>Contributing theorems</h2>
-
-      <p>Did you have to prove a lemma that should have been part
-      of the Isabelle distribution? Send it to us!</p>
-
-      <p>We will collect theorems sent to <a href=
-      "mailto:isabelle-lemmas@cl.cam.ac.uk">isabelle-lemmas@cl.cam.ac.uk</a>.
-      Accepted material will be included in the Isabelle sources, with credit given
-      to the author. Note that the Isabelle sources are distributed under the BSD
-      license. Lemmas should be general, useful, and not too large. For larger
-      developments you might want to consider a submission to the
-      <a href="http://afp.sf.net">Archive of Formal Proofs</a>.</p>
-
-      <h2 id="afp">The Archive of Formal Proofs (AFP)</h2>
-
-      <p>The <a href="http://afp.sf.net">Archive of Formal Proofs</a> is a collection of proof
-      libraries, examples, and larger scientific developments, mechanically checked
-      in Isabelle. It is organized in the way of a scientific journal. Submissions
-      are refereed.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/conf/.cvsignore	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-depends.mak
-localconf.mak
--- a/Admin/website/conf/distinfo.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# this is a default file
-
-DISTNAME=Isabelle2005
-DISTIDENT=Isabelle2005
-DISTBASE=/home/proj/isabelle/dist/dist-Isabelle2005
--- a/Admin/website/css/aelfwine.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,725 +0,0 @@
-/************************************************************
- * Stylesheet AElfwine                                      *
- ************************************************************
- *                                                          *
- * This has been collected from various sources.            *
- *                                                          *
- * Version 1.0 - 2005/05/01 - f.h.                          *
- *                                                          *
- * ...aiming for perfection ;-)                             *
- *                                                          *
- ************************************************************/
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* base paragraph and heading types */
-h1 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          2.20em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         center;
-    white-space:        normal;
-
-    margin-top:         0.62em;
-    margin-bottom:      0.31em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h2 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.77em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         center;
-    white-space:        normal;
-
-    margin-top:         0.40em;
-    margin-bottom:      0.20em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h3 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.57em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.32em;
-    margin-bottom:      0.10em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h4 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.47em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.29em;
-    margin-bottom:      0.05em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h5 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.18em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.27em;
-    margin-bottom:      0.03em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h6 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.25em;
-    margin-bottom:      0.00em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-p, body, th, td {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.00em;
-    font-weight:        normal;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    white-space:        normal;
-
-}
-
-p {
-    text-align:         justify;
-    margin-top:         0.20em;
-    margin-bottom:      0.20em;
-}
-
-/* text markup */
-
-em {
-    font-style:         italic;
-}
-
-strong {
-    font-weight:        bold;
-}
-
-del {
-    text-decoration:    line-through;
-}
-
-ins {
-    text-decoration:    underline;
-}
-
-/* text format */
-
-sub {
-    vertical-align: sub;
-    font-size: smaller;
-    line-height: normal;
-}
-
-sup {
-    vertical-align: super;
-    font-size: smaller;
-    line-height: normal;
-}
-
-big {
-    font-size: larger;
-}
-
-small {
-    font-size: smaller;
-}
-
-tt {
-    font-family: Courier New,monospace;
-}
-
-pre {
-    display: block;
-    font-family: Courier New,monospace;
-    white-space: pre;
-    margin: 1em 1em;
-}
-
-/* ruler */
-
-hr {
-    display: block;
-    margin: 0 auto 0 auto;
-}
-
-/* document */
-
-html {
-    display:            block;
-}
-
-body {
-    display:            block;
-    /* KHTML background:         #FFFFEE; */
-    margin:             8px;
-}
-
-/* blocks */
-
-div {
-    display:            block;
-}
-
-address {
-    display:            block;
-    font-style:         italic;
-}
-
-blockquote {
-    display:            block;
-    margin:             1em 40px;
-}
-
-blockquote[type=cite] {
-    display:            block;
-    margin:             1em 0em;
-    padding-left:       1em;
-    border-left:        solid;
-    border-color:       blue;
-    border-width:       thin;
-}
-
-/* spans */
-
-span {
-    display:            inline;
-}
-
-abbr, acronym {
-    display:            inline;
-}
-
-cite, q {
-    display:            inline;
-    font-style:         italic;
-}
-
-code, var, kbd {
-    font-family:        Courier New,monospace;
-    display:            inline;
-}
-
-dfn {
-    display:            inline;
-    font-style:         italic;
-    font-weight:        bold;
-}
-
-samp {
-    display:            inline;
-}
-
-/* tables */
-
-table {
-    display:            table;
-    margin:             0px;
-    padding:            0px;
-    border-spacing:     1px;
-    border-collapse:    separate;
-}
-
-table[align="left"] {
-    float:              left;
-}
-
-table[align="right"] {
-    float:              right;
-}
-
-caption {
-    display:            table-caption;
-}
-
-colgroup {
-    display:            table-column-group;
-}
-
-col {
-    display:            table-column;
-}
-
-thead {
-    display:            table-header-group;
-    vertical-align:     middle;
-}
-
-tbody {
-    display:            table-row-group;
-}
-
-tfoot {
-    display:            table-footer-group;
-    vertical-align:     middle;
-}
-
-tr {
-    display:            table-row;
-}
-
-th {
-    display:            table-cell;
-    font-weight:        bold;
-    padding:            1px;
-}
-
-td { 
-    display:            table-cell;
-    padding:            1px;
-}
-
-/* lists */
-
-ul {
-    display:            block;
-    list-style-type:    disc;
-    margin:             1em 0em;
-    padding-left:       40px;
-}
-
-ol {
-    display:            block;
-    list-style-type:    decimal;
-    margin:             1em 0em;
-    padding-left:       40px;
-}
-
-dl {
-    display:            block;
-    margin:             1em 0em;
-}
-
-dt {
-    display:            block;
-    margin-left:        1em;
-}
-
-dd {
-    display:            block;
-    margin-left:        3em;
-}
-
-li {
-    display:            list-item;
-}
-
-/* nested lists have no top/bottom margins */
-ul ul, ul ol, ul dl,
-ol ul, ol ol, ol dl,
-dl ul, dl ol, dl dl {
-    margin-top:         0;
-    margin-bottom:      0;
-}
-
-/* 2 deep unordered lists use a circle */
-ol ul, ul ul {
-    list-style-type:    circle;
-}
-
-/* 3 deep (or more) unordered lists use a square */
-ol ol ul, ol ul ul,
-ul ol ul, ul ul ul {
-  list-style-type:      square;
-}
-
-/* hyperlinks */
-
-a:link {
-    color:              #FF0000;
-}
-
-a:visited {
-    color:              #FF6600;
-}
-
-a:hover {
-    color:              #FF0000;
-}
-
-a:active {
-    color:              #FF0000;
-}
-
-a:focus {
-    color:              #FF0000;
-}
-
-a[name]:link, a[id]:link:not([href]) {
-    color:              #000000;
-}
-
-a[name]:hover, a[id]:hover:not([href]) {
-    color:              #000000;
-}
-
-a[name]:active, a[id]:active:not([href]) {
-    color:              #000000;
-}
-
-a[name]:focus, a[id]:focus:not([href]) {
-    color:              #000000;
-}
-
-a img {
-    border:             none;
-}
-
-/* hidden elements */
-area, base, basefont, head, meta, script, style, title,
-noembed, noframes, noscript, param {
-    display:            none;
-}
-
-/* forms */
-
-/* misc */
-legend {
-    padding-left:       2px;
-    padding-right:      2px;
-    border:             none;
-}
-
-fieldset {
-    display:            block;
-    margin-left:        2px;
-    margin-right:       2px;
-    padding:            0.75em 0.625em;
-    border:             2px groove ThreeDFace;
-}
-
-label {
-    cursor:             default;
-}
-
-/* default inputs, text inputs, and selects */
-input [type=""], input[type="text"], input[type="password"] {
-    padding:            1px 0px 1px 0px;
-    border:             2px inset ThreeDFace;
-    text-transform:     none;
-    vertical-align:     text-bottom;
-    cursor:             text;
-}
-
-textarea {
-    margin:             1px 0px 1px 0px;
-    border:             2px inset ThreeDFace;
-    font-size:          medium;
-    text-transform:     none;
-    vertical-align:     text-bottom;
-    cursor:             text;
-}
-
-select {
-    margin:             0;
-    border-color:       ThreeDFace;
-    white-space:        nowrap;
-    vertical-align:     text-bottom;
-    cursor:             default;
-    border-width:       2px;
-    border-style:       inset;
-}
-
-select[size] {
-    padding:            1px 0px 1px 0px;
-}
-
-select[size="1"] {
-    padding:            0px;
-}
-
-option {
-    display: block;
-}
-
-option :checked {
-    background-color:   Highlight;
-    color:              HighlightText;
-}
-
-optgroup {
-    display:            block;
-    font-style:         italic;
-    font-weight:        bold;
-}
-
-optgroup > option {
-    padding-left:       20px;
-    font-style:         normal;
-    font-weight:        normal;
-}
-
-optgroup :before {
-    display:            block;
-    content:            attr(label);
-}
-
-option[disabled],
-optgroup[disabled] {
-    background-color:   transparent;
-}
-
-/* hidden inputs */
-input[type="hidden"] {
-    display:            none;
-    padding:            0em;
-    border:             0em;
-    cursor:             auto;
-}
-
-/* image buttons */
-input[type="image"] {
-    padding:            0em;
-    border:             none;
-    background-color:   transparent;
-    vertical-align:     baseline;
-    font-family:        sans-serif;
-    font-size:          small;
-    cursor:             pointer;
-}
-
-input[type="image"][disabled] {
-    cursor:             default;
-}
-
-/* file selector */
-input[type="file"] {
-    white-space:        nowrap;
-    cursor:             default;
-    padding:            0px;
-    border-style:       none;
-}
-
-/* radio buttons and check boxes*/
-input[type="radio"] {
-    width:              13px;
-    height:             13px;
-    margin:             3px 3px 0px 5px;
-    padding:            0px;
-    vertical-align:     baseline;
-    cursor:             default;
-}
-
-/* check boxes */
-input[type="checkbox"] {
-    width:              13px;
-    height:             13px;
-    margin:             3px 3px 3px 4px;
-    padding:            0px;
-    vertical-align:     text-bottom;
-    cursor:             default;
-}
-
-input[type="checkbox"]:focus,
-input[type="radio"]:focus {
-    border-style: groove;
-}
-
-input[type="checkbox"]:hover:active,
-input[type="radio"]:hover:active {
-    background-color:   ThreeDFace;
-    border-style:       inset;
-}
-
-/* buttons */
-button, 
-input[type="reset"],
-input[type="button"],
-input[type="submit"] { 
-    text-transform:     none;
-    padding:            2px 0 2px 0;
-    border:             2px outset ButtonFace;
-    background-color:   ButtonFace;
-    color:              ButtonText; 
-    white-space:        pre;
-    vertical-align:     text-bottom;
-    cursor:             default;
-}
-
-button:active:hover,
-input[type="reset"]:active:hover,
-input[type="button"]:active:hover,
-input[type="submit"]:active:hover {
-    padding:            3px 0 1px 0;
-    border-style:       inset;
-}
-
-/* disables inputs */
-
-input[disabled],
-textarea[disabled],
-option[disabled],
-optgroup[disabled],
-select[disabled] {
-    color:              GrayText;
-    background-color:   ThreeDFace;
-    cursor:             default;
-}
-
-input[type="radio"][disabled],
-input[type="radio"][disabled]:active,
-input[type="radio"][disabled]:hover,
-input[type="radio"][disabled]:hover:active,
-input[type="checkbox"][disabled],
-input[type="checkbox"][disabled]:active,
-input[type="checkbox"][disabled]:hover,
-input[type="checkbox"][disabled]:hover:active {
-    padding:            1px;
-    border:             1px inset ThreeDShadow;
-    color:              GrayText;
-    background-color:   ThreeDFace;
-}
-
-button[disabled]:active, button[disabled],
-input[type="reset"][disabled]:active,
-input[type="reset"][disabled],
-input[type="button"][disabled]:active,
-input[type="button"][disabled],
-select[disabled] > input[type="button"],
-select[disabled] > input[type="button"]:active,
-input[type="submit"][disabled]:active,
-input[type="submit"][disabled] {
-    padding:            3px 1px 3px 1px;
-    border:             1px outset ButtonShadow;
-    color:              GrayText;
-}
-
-/* DocBook-XSLT-specific extensions */
-
-div.figure {
-    margin-top: 1.9ex;
-}
-
-div.note {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.tip {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.warning {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.caution {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.important {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.figure {
-    margin-bottom: 0.8ex;
-}
-
-div.example {
-    margin-bottom: 0.8ex;
-}
-
-div.equation {
-    margin-bottom: 0.8ex;
-}
--- a/Admin/website/css/isabelle_base.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (all-media basics)                   *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* generic color settings */
-body {
-    background-color: #FFFFFF;
-}
-
-a:link {
-    color: #0000A0;
-}
-
-a:visited {
-    color: #5050A0;
-}
-
-a:hover {
-    color: #FFFFFF;
-    background-color: #0000FF;
-}
-
-a:hover img {
-    /* gets rid of some of hover highlight */
-    background-color: #FFFFFF;
-}
-
-a:active {
-    color: #00DDFF;
-}
-
-a:focus {
-    color: #00DDFF;
-}
-
-img {
-    border: none;
-}
-
-/* generic formatting */
-h1 { 
-    margin-top: 2em;
-    font-size: 230%;
-}
-
-h2 {
-    margin-top: 1em;
-    font-size: x-large;
-    text-align: left;
-    background-color: #8080F0;
-}
-
-h3 {
-    margin-top: 0.7em;
-    font-size: medium;
-    text-align: left;
-    background-color: #8080F0;
-}
-
-p {
-    margin-top: 0.3em;
-    margin-bottom: 0.4em;
-}
-
-/* indendation of following paragraphs */
-/* p + p {
-  text-indent: 0.8em;
-} */
-
-/* navigation layout */
-div#navigation ul {
-    list-style-type: none;
-    margin: 0em;
-    padding: 0em;
-    width: 100%;
-}
-
-div#navigation ul li {
-    margin: 0em;
-    padding: 0em;
-}
-
-div#navigation ul li span {
-    display: block;
-    margin: 1ex 0em;
-    padding: 1ex 0em;
-    text-align: center;
-    vertical-align: middle;
-    background-color: #E0E0F0;
-    border-left: 7px solid #FFFFFF;
-}
-
-div#navigation ul li strong {
-    display: block;
-    font-weight: normal;
-    margin: 1ex 0em;
-    padding: 1ex 0em;
-    text-align: center;
-    vertical-align: middle;
-    background-color: #E0E0F0;
-    border-left: 7px solid #0000A0;
-}
-
-/* footer layout */
-div#footer p {
-    text-align: right;
-    font-size: x-small;
-}
-
-/* embedded images */
-img.left {
-    margin-right: 8pt;
-    float: left;
-}
-
-img.right {
-    margin-left: 8pt;
-    float: right;
-}
-
-/* shell commands */
-tt.shellcmd {
-    font-family: monospace;
-}
-
-ul.shellcmd {
-    background-color: #C0C0E0;
-    font-family: monospace;
-    list-style-type: none;
-    margin-top: 1ex;
-    margin-bottom: 1ex;
-    margin-left: 4em;
-    margin-right: 4em;
-    padding-left: 0pt;
-}
-
-ul.shellcmd li:before {
-    content: "$ ";
-    font-weight: bold;
-}
-
-/* faqs */
-dl.faq dt {
-    background-color: #8080F0;
-    padding: 3px;
-    margin-top: 12px;
-    font-weight: bold;
-}
-
-dl.faq dd {
-    padding: 3px;
-    margin-top: 3px;
-}
-
-/* faked columns */
-table.column {
-    margin: 0px;
-    padding: 0px;
-    width: 100%;
-    border-collapse: collapse;
-}
-
-table.column tr td.column {
-    width: 50%;
-    vertical-align: top;
-    padding: 1em;
-}
-
-/* centered areas */
-div.center {
-    position: relative;
-    text-align: center;
-    width: 100%;
-}
-
-/* generic celled tables */
-table.celled {
-    margin-top: 2ex;
-    margin-left: auto;
-    margin-right: auto;
-    text-align: center;
-    border-spacing: 4px;
-}
-
-table.celled tr td {
-    text-align: left;
-    background-color: #C0C0E0;
-    padding: 0.4ex 1em 0.4ex 1em;
-}
-
-/* download tables */
-table.download {
-    margin-top: 2ex;
-    margin-left: auto;
-    margin-right: auto;
-    text-align: center;
-    border-spacing: 4px;
-}
-
-table.download tr td {
-    text-align: left;
-    background-color: #C0C0E0;
-    padding: 0.4ex 1em 0.4ex 1em;
-}
-
-table.download tr td.downloadheader {
-    text-align: left;
-    font-weight: bold;
-    background-color: #8080F0;
-    /* margin-top doesn't seem to work */
-    border-top: 1ex solid #E0E0F0;
-}
-
-table.download tr td + td + td {
-    text-align: right;
-}
-
-table.download tr.rowspan td + td {
-    text-align: right;
-}
--- a/Admin/website/css/isabelle_print.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (print media)                        *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* use times font for floating text */
-p, body, th, td {
-    font-family: Times New Roman,times,serif;
-}
-
-/* body margin */
-body {
-    margin: 4pt;
-}
-
-/* no rulers (they are just a supplemental for non-css browsers) */
-hr {
-    display: none;
-    visibility: hidden;
-    height: 0pt;
-    width: 0pt;
-}
-
-/* header layout */
-div#header {
-    position: relative;
-    height: 94px; 
-    background-color: #FFFFFF;
-}
-
-div#header h1 {
-    position: absolute;
-    top: 0px;
-    left: 0px;
-    margin: 0px;
-}
-
-div#header a#isabelle_logo {
-    position: absolute;
-    right: 0px;
-}
-
-div#header a#univ_tum {
-    display: none;
-}
-
-div#header a#univ_cambridge {
-    display: none;
-}
-
-div#header span.headersep {
-    display: none;
-}
-
-/* navigation layout */
-div#navigation {
-    display: none;
-}
-
-/* footer layout */
-div#footer {
-    position: relative;
-    top: 8px;
-    clear: both;
-    border-top: 2px solid #000000;
-}
-
-/* mirrorlist layout */
-div.mirrorlist {
-    display: none;
-}
-
-/* thesis announcement */
-body.thesis {
-    margin: 0cm;
-    padding: 0cm;
-}
-
-body.thesis div#header {
-    height: 108px;
-}
-
-body.thesis div#header p {
-    font-family: Arial,Helvetica,Verdana,sans-serif;
-    font-style: italic;
-    font-size: 10px;
-    position: absolute;
-    top: 0px;
-    left: 115px;
-    right: 115px;
-    margin: 0px;
-}
-
-body.thesis div#header h1 {
-    position: absolute;
-    top: 20px;
-    left: 115px;
-    right: 115px;
-    margin: 0px;
-    font-size: 2.8ex;
-}
-
-body.thesis div#header a#info_logo {
-    position: absolute;
-    left: 0px;
-}
-
-body.thesis h2 {
-    font-size: 2.4ex;
-}
-
-body.thesis dl dt {
-    font-weight: bold;
-}
--- a/Admin/website/css/isabelle_screen.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (screen media)                       *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* no rulers (they are just a supplemental for non-css browsers) */
-hr {
-    display: none;
-    visibility: hidden;
-    height: 0pt;
-    width: 0pt;
-}
-
-div.hr {
-    /* a special for KHTML */
-    display: none;
-}
-
-/* header layout */
-div#header {
-    position: relative;
-    height: 90pt; 
-    background-color: #FFFFFF;
-}
-
-div#header h1 {
-    /* center between logos */
-    position: absolute;
-    top: 27px;
-    left: 200px;
-    right: 270px;
-    margin: 0px;
-}
-
-div#header a#isabelle_logo {
-    position: absolute;
-    top: 10px;
-    left: 3.2ex;
-}
-
-div#header a#univ_tum {
-    position: absolute;
-    top: 25px;
-    right: 40px;
-}
-
-body.thesis div#header a#info_logo {
-    position: absolute;
-    top: 25px;
-    right: 40px;
-}
-
-div#header a#univ_cambridge {
-    position: absolute;
-    top: 25px;
-    right: 130px;
-}
-
-div#header span.headersep {
-    display: none;
-}
-
-/* navigation layout */
-div#navigation {
-    position: relative;
-    top: 2em;
-    left: 1ex;
-    bottom: 4px;
-    padding: 0.5em 0.5em;
-    float: left;
-    width: 17ex;
-    background-color: #FFFFFF;
-    border-top: 2px solid #0000A0;
-    border-bottom: 2px solid #0000A0;
-}
-
-div#navigation h2 {
-    display: none;
-}
-
-/* footer layout */
-div#footer {
-    margin-top: 2em;
-}
-
-/* content layout */
-div#content {
-    position: static;
-    left: 4px;
-    margin-left: 23ex;
-    margin-right: 3%;
-    background-color: #E0E0F0;
-    padding-left: 20px;
-    padding-right: 20px;
-    padding-bottom: 20px;
-}
-
-div#content h2 { 
-    margin-left: -20px;
-    margin-right: -20px;
-    padding-left: 20px;
-    padding-top: 0.2ex;
-    padding-bottom: 0.2ex;
-    border-bottom: 1ex solid #E0E0F0;
-}
-
-div#content h3 { 
-    margin-right: -20px;
-    padding-top: 0.4ex;
-    padding-bottom: 0.2ex;
-    padding-left: 10px;
-}
-
-/* mirror switch layout */
-div.mirrorlist {
-    margin: 1ex 0em;
-    padding: 2pt;
-    background-color: #E0E0F0;
-    text-align: left;
-    border-left: 7px solid #FFFFFF;
-}
-
-div.mirrorlist h3 {
-    margin: 1pt;
-    padding: 1pt;
-    border: none;
-    background-color: #FFFFFF;
-    color: #0000A0;
-    font-size: 11pt;
-    text-align: left;
-}
-
-div.mirrorlist ul {
-    margin: 1pt 1pt 1pt 1em;
-    padding: 0pt;
-}
-
-div.mirrorlist ul li {
-    font-size: 8pt;
-    font-style: italic;
-    padding: 0pt 12pt 0pt 0pt;
-}
-
-/* people list */
-dl.people dt {
-    background-color: #EEEEEE;
-    padding: 2px;
-    margin-top: 8px;
-    height: 50px;
-}
-
-dl.people dd img {
-    float: right;
-    position: relative;
-    margin-right: 3px;
-    top: -52px;
-}
--- a/Admin/website/documentation.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Documentation</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body>
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-        <h2>Getting started</h2>
-
-        <a href="//img/tutorial_cover_big.gif">
-            <img class="right" src="//img/tutorial_cover_small.gif" alt="Cover " 
-                width="83" height="125"/>
-        </a>
-        <p>For getting started with Isabelle quickly, we recommend the <a href=
-        "//dist/Isabelle/doc/tutorial.pdf">Tutorial on
-        Isabelle/HOL</a> (published by Springer Verlag as <a href=
-        "http://www4.in.tum.de/~nipkow/LNCS2283/">LNCS 2283</a>) and the <a href=
-        "#course_material">course material</a>.</p>
-        <br clear="right" />
-
-        <h2>Mailing list and FAQ</h2>
-    
-          <p>You may use the mailing list <a href=
-          "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
-          <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
-          problems and results.
-          Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-        <p>Please consult the <a href="http://isabelle.in.tum.de/faq.html">FAQ</a> for answers to frequent
-        problems.</p>
-
-        <h2>Isabelle Documentation</h2>
-
-        <p><?value key="distname"?> documentation is
-        included here as browsable PDF for convenience. These documents are also part
-        of the standard Isabelle distribution.</p>
-
-        <?include file="//include/documentationdist.include.html"?>
-
-        <h3>Release notes</h3>
-
-          <ul>
-            <li><a href="//dist/Isabelle/ANNOUNCE">ANNOUNCE</a></li>
-            <li><a href="//dist/Isabelle/README.html">README</a></li>
-            <li><a href="//dist/Isabelle/INSTALL">INSTALL</a></li>
-            <li><a href="//dist/Isabelle/NEWS">NEWS</a></li>
-            <li><a href="//dist/Isabelle/COPYRIGHT">COPYRIGHT</a></li>
-            <li><a href="//dist/Isabelle/CONTRIBUTORS">CONTRIBUTORS</a></li>
-          </ul>
-
-        <h2 id="course_material">Course Material and Exercises</h2>
-        <p>The <a href=
-            "http://isabelle.in.tum.de/coursematerial/">course material</a> page makes
-        slides, demos, and exercises of a growing number of Isabelle courses
-        available. It is meant as a resource for people who would like to learn
-        Isabelle as well as for those who would like to teach it.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/download.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Download</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body>
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-        <h2><?value key="distname"?></h2>
-
-        <p>The following source and binary packages of <?value key="distname"?>
-        provide everything required for easy installation of the full Isabelle
-        working environment on common Unix platforms (e.g. Linux, MacOS X,
-        Solaris). We provide a complete set of packages for Isabelle, Proof
-        General, and PolyML.</p>
-    
-        <p>While XEmacs 21 is not included here, most operating system
-        distributions already provide a suitable package. Some of the
-        packages below are platform dependent; we include binaries for
-        Linux/x86, Solaris/Sparc, and Darwin/PPC (MacOS X).</p>
-    
-        <p>Please see the <a href="installation.html">installation instructions</a>
-        for which packages to download and for more information.</p>
-
-        <?include file="//include/downloadtable.include.html"?>
-
-        <h2>Development snapshot</h2>
-
-        <p>For the curious we provide a nightly generated
-        CVS <a href="http://isabelle.in.tum.de/devel/">development snapshot</a> of
-        Isabelle. <em>Use at your own risk!</em></p>
-
-        <h2>Past releases</h2>
-
-        <p>Past releases are available from the <a href="download_past.html">archive</a>.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/download_past.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Older Isabelle Releases</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="dist">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-        <h2>Archive</h2>
-
-        Past releases of Isabelle are available from the Cambridge
-        archive:
-        <ul>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2004.tar.gz">Isabelle2004</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2003.tar.gz">Isabelle2003</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2002.tar.gz">Isabelle2002</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99-2.tar.gz">Isabelle99-2</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99-1.tar.gz">Isabelle99-1</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99.tar.gz">Isabelle99</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle98-1.tar.gz">Isabelle98-1</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle98.tar.gz">Isabelle98</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-8.tar.gz">Isabelle94-8</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-7.tar.gz">Isabelle94-7</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-6.tar.gz">Isabelle94-6</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94.tar.gz">Isabelle94</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle93.tar.gz">Isabelle93</a></li>
-        </ul>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/dtd/xhtml-lat1.ent	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->
--- a/Admin/website/dtd/xhtml-special.ent	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->
--- a/Admin/website/dtd/xhtml-symbol.ent	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
--- a/Admin/website/dtd/xhtml1-frameset.dtd	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1235 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Frameset DTD
-
-   This is the same as HTML 4 Frameset except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
-
-   $Revision$
-   $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
-    <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % MultiLengths "CDATA">
-    <!-- comma-separated list of MultiLength -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
-    Black  = #000000    Green  = #008000
-    Silver = #C0C0C0    Lime   = #00FF00
-    Gray   = #808080    Olive  = #808000
-    White  = #FFFFFF    Yellow = #FFFF00
-    Maroon = #800000    Navy   = #000080
-    Red    = #FF0000    Blue   = #0000FF
-    Purple = #800080    Teal   = #008080
-    Fuchsia= #FF00FF    Aqua   = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
-     align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
-   "object | applet | img | map | iframe">
-	
-<!ENTITY % special.basic
-	"br | span | bdo">
-
-<!ENTITY % special
-   "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
-                      | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center">
-
-<!ENTITY % block
-    "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
-     sub, sup, font, or basefont -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
-	   %inline.forms; | %misc.inline;)*">
-
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-      table | br | span | bdo | object | applet | img | map |
-      %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, frameset)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  id          ID             #IMPLIED
-  href        %URI;          #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--======================= Frames =======================================-->
-
-<!-- only one noframes element permitted per document -->
-
-<!ELEMENT frameset (frameset|frame|noframes)*>
-<!ATTLIST frameset
-  %coreattrs;
-  rows        %MultiLengths; #IMPLIED
-  cols        %MultiLengths; #IMPLIED
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  >
-
-<!-- reserved frame names start with "_" otherwise starts with letter -->
-
-<!-- tiled window within frameset -->
-
-<!ELEMENT frame EMPTY>
-<!ATTLIST frame
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  noresize    (noresize)     #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  >
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  align       %ImgAlign;     #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes (body)>
-<!ATTLIST noframes
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
-  %attrs;
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  background  %URI;          #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  text        %Color;        #IMPLIED
-  link        %Color;        #IMPLIED
-  vlink       %Color;        #IMPLIED
-  alink       %Color;        #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  type        %ULStyle;     #IMPLIED
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- Ordered list numbering style
-
-    1   arabic numbers      1, 2, 3, ...
-    a   lower alpha         a, b, c, ...
-    A   upper alpha         A, B, C, ...
-    i   lower roman         i, ii, iii, ...
-    I   upper roman         I, II, III, ...
-
-    The style is applied to the sequence number which by default
-    is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  type        %OLStyle;      #IMPLIED
-  compact     (compact)      #IMPLIED
-  start       %Number;       #IMPLIED
-  >
-
-<!-- single column list (DEPRECATED) --> 
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- multiple column list (DEPRECATED) --> 
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  type        %LIStyle;      #IMPLIED
-  value       %Number;       #IMPLIED
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  compact     (compact)      #IMPLIED
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  align       (left|center|right) #IMPLIED
-  noshade     (noshade)      #IMPLIED
-  size        %Pixels;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding 
-        "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  width       %Number;      #IMPLIED
-  xml:space   (preserve)    #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
-  %attrs;
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  clear       (left|all|right|none) "none"
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;>   <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;>   <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;>   <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY>  <!-- base font size -->
-<!ATTLIST basefont
-  id          ID             #IMPLIED
-  size        CDATA          #REQUIRED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
-  %coreattrs;
-  %i18n;
-  size        CDATA          #IMPLIED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Java applet ==================================-->
-<!--
-  One of code or object attributes must be present.
-  Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
-  %coreattrs;
-  codebase    %URI;          #IMPLIED
-  archive     CDATA          #IMPLIED
-  code        CDATA          #IMPLIED
-  object      CDATA          #IMPLIED
-  alt         %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  width       %Length;       #REQUIRED
-  height      %Length;       #REQUIRED
-  align       %ImgAlign;     #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  name        NMTOKEN        #IMPLIED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  name        NMTOKEN        #IMPLIED
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  align       %LAlign;       #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
-  %coreattrs;
-  %i18n;
-  prompt      %Text;         #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=":"
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  align       %TAlign;       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
-  %attrs;
-  align       %CAlign;       #IMPLIED
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Pixels;       #IMPLIED
-  height      %Pixels;       #IMPLIED
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Pixels;       #IMPLIED
-  height      %Pixels;       #IMPLIED
-  >
-
--- a/Admin/website/dtd/xhtml1-strict.dtd	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,978 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision$
-   $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
--- a/Admin/website/dtd/xhtml1-transitional.dtd	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1201 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Transitional DTD
-
-   This is the same as HTML 4 Transitional except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-
-   $Revision$
-   $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
-    <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
-    Black  = #000000    Green  = #008000
-    Silver = #C0C0C0    Lime   = #00FF00
-    Gray   = #808080    Olive  = #808000
-    White  = #FFFFFF    Yellow = #FFFF00
-    Maroon = #800000    Navy   = #000080
-    Red    = #FF0000    Blue   = #0000FF
-    Purple = #800080    Teal   = #008080
-    Fuchsia= #FF00FF    Aqua   = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
-     align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
-   "object | applet | img | map | iframe">
-	
-<!ENTITY % special.basic
-	"br | span | bdo">
-
-<!ENTITY % special
-   "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
-                      | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
-
-<!ENTITY % block
-    "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
-     font, or basefont -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
-	   %inline.forms; | %misc.inline;)*">
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-      table | br | span | bdo | object | applet | img | map |
-      %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  id          ID             #IMPLIED
-  href        %URI;          #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--======================= Frames =======================================-->
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  align       %ImgAlign;     #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes %Flow;>
-<!ATTLIST noframes
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
-  %attrs;
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  background  %URI;          #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  text        %Color;        #IMPLIED
-  link        %Color;        #IMPLIED
-  vlink       %Color;        #IMPLIED
-  alink       %Color;        #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  type        %ULStyle;     #IMPLIED
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- Ordered list numbering style
-
-    1   arabic numbers      1, 2, 3, ...
-    a   lower alpha         a, b, c, ...
-    A   upper alpha         A, B, C, ...
-    i   lower roman         i, ii, iii, ...
-    I   upper roman         I, II, III, ...
-
-    The style is applied to the sequence number which by default
-    is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  type        %OLStyle;      #IMPLIED
-  compact     (compact)      #IMPLIED
-  start       %Number;       #IMPLIED
-  >
-
-<!-- single column list (DEPRECATED) --> 
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- multiple column list (DEPRECATED) --> 
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  type        %LIStyle;      #IMPLIED
-  value       %Number;       #IMPLIED
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  compact     (compact)      #IMPLIED
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  align       (left|center|right) #IMPLIED
-  noshade     (noshade)      #IMPLIED
-  size        %Pixels;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding 
-        "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  width       %Number;      #IMPLIED
-  xml:space   (preserve)    #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
-  %attrs;
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  clear       (left|all|right|none) "none"
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;>   <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;>   <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;>   <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY>  <!-- base font size -->
-<!ATTLIST basefont
-  id          ID             #IMPLIED
-  size        CDATA          #REQUIRED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
-  %coreattrs;
-  %i18n;
-  size        CDATA          #IMPLIED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Java applet ==================================-->
-<!--
-  One of code or object attributes must be present.
-  Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
-  %coreattrs;
-  codebase    %URI;          #IMPLIED
-  archive     CDATA          #IMPLIED
-  code        CDATA          #IMPLIED
-  object      CDATA          #IMPLIED
-  alt         %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  width       %Length;       #REQUIRED
-  height      %Length;       #REQUIRED
-  align       %ImgAlign;     #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  name        NMTOKEN        #IMPLIED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Length;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        CDATA          #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  name        NMTOKEN        #IMPLIED
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  align       %LAlign;       #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
-  %coreattrs;
-  %i18n;
-  prompt      %Text;         #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  align       %TAlign;       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
-  %attrs;
-  align       %CAlign;       #IMPLIED
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-
--- a/Admin/website/faq.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Isabelle FAQ</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-
-    <h2>General Questions</h2>
-
-    <dl class="faq">
-
-      <dt>What is Isabelle?</dt>
-    
-      <dd>Isabelle is a popular generic theorem proving environment developed
-          at Cambridge University (<a href=
-          "http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>) and TU Munich
-          (<a href="http://www.in.tum.de/~nipkow/">Tobias Nipkow</a>). See the
-          <a href="http://isabelle.in.tum.de/">Isabelle homepage</a> for more
-          information.</dd>
-    
-      <dt>Where can I find documentation?</dt>
-    
-      <dd><a href="http://isabelle.in.tum.de/documentation.html">This way, please</a>.
-          Also have a look at the <a href=
-          "http://isabelle.in.tum.de/dist/library/">theory library</a>.</dd>
-    
-      <dt>Is it available for download?</dt>
-    
-      <dd>Yes, it is available from several mirror sites, e.&nbsp;g. from
-          <a href="http://isabelle.in.tum.de">Munich</a>. It runs on common
-          Unix systems (Linux, MacOS&nbsp;X, Solaris, etc.).</dd>
-    
-</dl>
-      <h2>Syntax</h2>
-
-    <dl class="faq">
-    
-      <dt>There are lots of arrows in Isabelle/HOL. What's the difference between
-          <tt>-&gt;</tt>, <tt>=&gt;</tt>, <tt>--&gt;</tt>, and <tt>==&gt;</tt>
-          ?</dt>
-    
-      <dd>Isabelle uses the <tt>=&gt;</tt> arrow for the function type
-          (contrary to most functional languages which use <tt>-&gt;</tt>). So
-          <tt>a =&gt; b</tt> is the type of a function that takes an element of
-          <tt>a</tt> as input and gives you an element of <tt>b</tt> as output. The
-          long arrow <tt>--&gt;</tt> and <tt>==&gt;</tt> are object and meta level
-          implication. Roughly speaking, the meta level implication should only be
-          used when stating theorems where it separates the assumptions from the
-          conclusion. Whenever you need an implication inside a HOL formula, use
-          <code>--&gt;</code>.</dd>
-    
-      <dt>Where do I have to put those double quotes?</dt>
-    
-      <dd>Isabelle distinguishes between <em>inner</em> and <em>outer</em>
-          syntax. The outer syntax comes from the Isabelle framework, the inner
-          syntax is the one in between quotation marks and comes from the object
-          logic (in this case HOL). With time the distinction between the two
-          becomes obvious, but in the beginning the following rules of thumb may
-          work: types should be inside quotation marks, formulas and lemmas should
-          be inside quotation marks, rules and equations (e.g. for definitions)
-          should be inside quotation marks, commands like <tt>lemma</tt>,
-          <tt>consts</tt>, <tt>primrec</tt>, <tt>constdefs</tt>, <tt>apply</tt>,
-          <tt>done</tt> are without quotation marks, as are the names of constants
-          in constant definitions (<tt>consts</tt> and <tt>constdefs</tt>)</dd>
-    
-      <dt>What is <tt>"No such constant: _case_syntax"</tt> supposed to tell
-          me?</dt>
-    
-      <dd>You get this message if you use a case construct on a datatype and
-          have a typo in the names of the constructor patterns or if the order of
-          the constructors in the case pattern is different from the order in which
-          they where defined (in the datatype definition).</dd>
-    
-      <dt>Why doesn't Isabelle/HOL understand my equation?</dt>
-    
-      <dd>Isabelle's equality <tt>=</tt> binds relatively strongly, so an
-          equation like <tt>a = b &amp; c</tt> might not be what you intend.
-          Isabelle parses it as <tt>(a = b) &amp; c</tt>. If you want it the other
-          way around, you must set explicit parentheses as in <tt>a = (b &amp;
-          c)</tt>. This also applies to e.g. <tt>primrec</tt> definitions (see
-          below).</dd>
-    
-      <dt>What does it mean "not a proper equation"?</dt>
-    
-      <dd>Most commonly this is an instance of the question above. The
-          <tt>primrec</tt> command (and others) expect equations as input, and
-          since equality binds strongly in Isabelle/HOL, something like <tt>f x = b
-          &amp; c</tt> is not what you might expect it to be: Isabelle parses it as
-          <tt>(f x = b) &amp; c</tt> (which is indeed not a proper equation). To
-          turn it into an equation you must set explicit parentheses: <tt>f x = (b
-          &amp; c)</tt>.</dd>
-    
-      <dt>What does it mean "<tt>Not a meta-equality (==)</tt>"?</dt>
-    
-      <dd>This usually occurs if you use <tt>=</tt> for <tt>constdefs</tt>. The
-          <tt>constdefs</tt> and <tt>defs</tt> commands expect not equations, but
-          meta equivalences. Just use the <tt>\&lt;equiv&gt;</tt> or <tt>==</tt>
-          signs instead of <tt>=</tt>.</dd>
-    
-</dl>
-      <h2>Proving</h2>
-
-    <dl class="faq">
-    
-      <dt>What does "empty result sequence" mean?</dt>
-    
-      <dd>It means that the applied proof method (or tactic) was unsuccessful.
-          It did not transform the goal in any way, or simply just failed to do
-          anything. You must try another tactic (or give the one you used more
-          hints or lemmas to work with)</dd>
-    
-      <dt>The Simplifier doesn't want to apply my rule, what's wrong?</dt>
-    
-      <dd>Most commonly this is a typing problem. The rule you want to apply
-          may require a more special (or just plain different) type from what you
-          have in the current goal. Use the ProofGeneral menu <tt>Isabelle/Isar
-          -&gt; Settings -&gt; Show Types</tt> and the <tt>thm</tt> command on the
-          rule you want to apply to find out if the types are what you expect them
-          to be (also take a look at the types in your goal). <tt>Show Sorts</tt>,
-          <tt>Show Constants</tt>, and <tt>Trace Simplifier</tt> in the same menu
-          may also be helpful.</dd>
-    
-      <dt>If I do <tt>auto</tt>, it leaves me a goal <tt>False</tt>. Is my
-          theorem wrong?</dt>
-    
-      <dd>Not necessarily. It just means that <tt>auto</tt> transformed the
-          goal into something that is not provable any more. That could be due to
-          <tt>auto</tt> doing something stupid, or e.g. due to some earlier step in
-          the proof that lost important information. It is of course also possible
-          that the goal was never provable in the first place.</dd>
-    
-      <dt>Why does <tt>lemma "1+1=2"</tt> fail?</dt>
-    
-      <dd>Because it is not necessarily true. Isabelle/HOL does not assume that 1
-          and 2 are natural numbers. Try <tt>"(1::nat)+1=2"</tt> instead.</dd>
-    
-      <dt>Can Isabelle/HOL find counterexamples?</dt>
-    
-      <dd>
-            <p>For arithmetic goals, <code>arith</code> finds counterexamples. For
-            executable goals, <code>quickcheck</code> tries to find a
-            counterexample. For goals of a more logical nature (including
-            quantifiers, sets and inductive definitions) <code>refute</code>
-            searches for a countermodel.</p>
-    
-            <p>Otherwise, negate the proposition and instantiate (some) variables
-            with concrete values. You may also need additional assumptions about
-            these values. For example, <tt>True &amp; False ~= True | False</tt> is
-            a counterexample of <tt>A &amp; B = A | B</tt>, and <tt>A = ~B ==&gt; A
-            &amp; B ~= A | B</tt> is another one. Sometimes Isabelle can help you
-            to find the counterexample: just negate the proposition and do
-            <tt>auto</tt> or <tt>simp</tt>. If lucky, you are left with the
-            assumptions you need for the counterexample to work.</p>
-          </dd>
-    
-</dl>
-      <h2>Interface</h2>
-
-    <dl class="faq">
-    
-      <dt>X-Symbol doesn't seem to work. What can I do?</dt>
-    
-      <dd>The most common reason why X-Symbol doesn't work is: it's not
-          switched on yet. Assuming you are using ProofGeneral and have installed
-          the X-Symbol package, you still need to turn X-Symbol on in ProofGeneral:
-          select the menu items <tt>Proof-General -&gt; Options -&gt; X-Symbol</tt>
-          and (if you want to save the setting for future sessions) select
-          <tt>Options -&gt; Save Options</tt> in XEmacs.</dd>
-
-      <dt>How do I input those X-Symbols anyway?</dt>
-    
-      <dd>There are lots of ways to input x-symbols. The one that always works
-          is writing it out in plain text (e.g. for the 'and' symbol type
-          <tt>\&lt;and&gt;</tt>). For common symbols you can try to "paint them in
-          ASCII" and if the xsymbol package recognizes them it will automatically
-          convert them into their graphical representation. Examples:
-          <tt>--&gt;</tt> is converted into the long single arrow, <tt>/\</tt> is
-          converted into the 'and' symbol, the sequence <tt>=_</tt> into the
-          equivalence sign, <tt>&lt;_</tt> into less-or-equal, <tt>[|</tt> into
-          opening semantic brackets, and so on. For greek characters, the
-          <code>rotate</code> command works well: to input &alpha; type
-          <code>a</code> and then <code>C-.</code> (control and <code>.</code>).
-          You can also display the grid-of-characters in the x-symbol menu to get
-          an overview of the available graphical representations (not all of them
-          already have a meaning in Isabelle, though).</dd>
-    
-</dl>
-      <h2>System</h2>
-
-    <dl class="faq">
-    
-      <dt>I want to generate one of those flashy LaTeX documents. How?</dt>
-    
-      <dd>You will need to work with the <tt class="shellcmd">isatool</tt> command for this (in
-          a Unix shell). The easiest way to get to a document is the following: use
-          <tt class="shellcmd">isatool mkdir</tt> to set up a new directory. The command will also
-          create a file called <tt class="shellcmd">IsaMakefile</tt> in the current directory. Put
-          your theory file(s) into the new directory and edit the file
-          <tt class="shellcmd">ROOT.ML</tt> in there (following the comments) to tell Isabelle which
-          of the theories to load (and in which order). Go back to the parent
-          directory (where the <tt class="shellcmd">IsaMakefile</tt> is) and type <tt class="shellcmd">isatool
-          make</tt>. Isabelle should then process your theories and tell you where
-          to find the finished document. For more information on generating
-          documents see the Isabelle Tutorial, Chapter 4.</dd>
-    
-      <dt>I have a large formalization with many theories. Must I process all
-          of them all of the time?</dt>
-    
-      <dd>No, you can tell Isabelle to build a so-called heap image. This heap
-          image can contain your preloaded theories. To get one, set up a directory
-          with a <tt class="shellcmd">ROOT.ML</tt> file (as for generating a document) and use the
-          command <tt class="shellcmd">isatool usedir -b HOL MyImage</tt> in that directory to
-          create an image <tt class="shellcmd">MyImage</tt> using the parent logic <tt class="shellcmd">HOL</tt>. You
-          should then be able to invoke Isabelle with <tt class="shellcmd">Isabelle -l MyImage</tt>
-          and have everything that is loaded in ROOT.ML instantly available.</dd>
-
-      <dt>Can I run Isabelle on Windows?</dt>
-
-      <dd>Not really.  The Cygwin environment provides a Unixoid
-      look-and-feel that is sufficient for very basic Isabelle
-      functionality.  See also <a
-      href="installation_notes_cygwin.html">Installation notes for
-      Cygwin/Windows.</a>
-
-      To try out Isabelle it might be much easier to use a Linux boot
-      CD, such as <a href="http://www.knoppix.org/">Knoppix</a>.</dd>
-    
-    </dl>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
Binary file Admin/website/img/favicon.ico has changed
Binary file Admin/website/img/isabelle.gif has changed
Binary file Admin/website/img/isabelle_logo.gif has changed
Binary file Admin/website/img/screenshot_isabelle_macos.gif has changed
Binary file Admin/website/img/screenshot_isabelle_pg.png has changed
Binary file Admin/website/img/tutorial_cover_big.gif has changed
Binary file Admin/website/img/tutorial_cover_small.gif has changed
Binary file Admin/website/img/univ_cambridge.gif has changed
Binary file Admin/website/img/univ_tum.gif has changed
Binary file Admin/website/img/world_map.gif has changed
Binary file Admin/website/img/world_map_large.gif has changed
--- a/Admin/website/include/documentationdist.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1" ?>
-<dummy:wrapper xmlns:dummy="http://nowhere.no">
-<h3>Learning Isabelle</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/tutorial.pdf'>Tutorial on Isabelle/HOL</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/isar-overview.pdf'>Tutorial on Isar</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/locales.pdf'>Tutorial on Locales</a></li>
-</ul>
-<h3>Reference Manuals</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/isar-ref.pdf'>The Isabelle/Isar Reference Manual</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/ref.pdf'>The Isabelle Reference Manual</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/system.pdf'>The Isabelle System Manual</a></li>
-</ul>
-<h3>Logics</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/logics.pdf'>Isabelle's Logics: overview and misc logics</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/logics-HOL.pdf'>Isabelle's Logics: HOL</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/logics-ZF.pdf'>Isabelle's Logics: FOL and ZF</a></li>
-</ul>
-<h3>Specific Topics</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/sugar.pdf'>LaTeX sugar for proof documents</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/axclass.pdf'>Tutorial on Axiomatic Type Classes</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/ind-defs.pdf'>(Co)Inductive Definitions in ZF</a></li>
-</ul>
-</dummy:wrapper>
--- a/Admin/website/include/downloadtable.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE table PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<table class="download">
-  <tr><td colspan="3" class="downloadheader">Isabelle</td></tr>
-  <tr>
-    <td>
-      Sources and documentation
-    </td>
-    <?downloadCells target="//dist/Isabelle2005.tar.gz" title="Isabelle2005.tar.gz"?>
-  </tr>
-  <tr>
-    <td>
-      Documentation in PDF
-    </td>
-    <?downloadCells target="//dist/Isabelle2005_pdf.tar.gz" title="Isabelle2005_pdf.tar.gz"?>
-  </tr>
-  <tr>
-    <td>
-      Theory library in PDF and HTML
-    </td>
-    <?downloadCells target="//dist/Isabelle2005_library.tar.gz" title="Isabelle2005_library.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">Proof General</td></tr>
-  <tr>
-    <td>
-      Proof General
-    </td>
-    <?downloadCells target="//dist/contrib/ProofGeneral.tar.gz" title="ProofGeneral.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">Poly/ML compiler and runtime system</td></tr>
-  <tr>
-    <td rowspan="3">
-      Poly/ML
-    </td>
-    <?downloadCells target="//dist/contrib/polyml_x86-linux.tar.gz" title="polyml_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/contrib/polyml_sparc-solaris.tar.gz" title="polyml_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/contrib/polyml_ppc-darwin.tar.gz" title="polyml_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">Precompiled logics</td></tr>
-  <tr>
-    <td rowspan="3">
-      HOL
-    </td>
-    <?downloadCells target="//dist/HOL_x86-linux.tar.gz" title="HOL_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL_sparc-solaris.tar.gz" title="HOL_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL_ppc-darwin.tar.gz" title="HOL_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr>
-    <td rowspan="3">
-      HOL-Complex
-    </td>
-    <?downloadCells target="//dist/HOL-Complex_x86-linux.tar.gz" title="HOL-Complex_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL-Complex_sparc-solaris.tar.gz" title="HOL-Complex_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL-Complex_ppc-darwin.tar.gz" title="HOL-Complex_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr>
-    <td rowspan="3">
-      HOL4
-    </td>
-    <?downloadCells target="//dist/HOL4_x86-linux.tar.gz" title="HOL4_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL4_sparc-solaris.tar.gz" title="HOL4_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL4_ppc-darwin.tar.gz" title="HOL4_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr>
-    <td rowspan="3">
-      ZF
-    </td>
-    <?downloadCells target="//dist/ZF_x86-linux.tar.gz" title="ZF_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/ZF_sparc-solaris.tar.gz" title="ZF_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/ZF_ppc-darwin.tar.gz" title="ZF_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">HOL4 proof terms</td></tr>
-  <tr>
-    <td>
-      HOL4 proof terms
-    </td>
-    <?downloadCells target="//dist/contrib/HOL4-proofs.tar.gz" title="HOL4-proofs.tar.gz"?>
-</tr>
-</table>
--- a/Admin/website/include/footer.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="footer">
-    <p>Last updated: <?modificationDate?></p>
-</div>
--- a/Admin/website/include/header.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="header">
-    <h1><?title?></h1>
-    <a id="isabelle_logo" href="http://isabelle.in.tum.de/index.html">
-        <img src="//img/isabelle_logo.gif" width="114" height="100" alt="Isabelle home" />
-    </a>
-    <span class="headersep">·</span>
-    <a id="univ_tum" target="_blank" href="http://www4.in.tum.de/proj/theoremprov/group.html">
-        <img src="//img/univ_tum.gif" width="45" height="55" alt="Isabelle in Munich" />
-    </a>
-    <span class="headersep">·</span>
-    <a id="univ_cambridge" target="_blank" href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html">
-        <img src="//img/univ_cambridge.gif" width="169" height="55" alt="Isabelle in Cambridge" />
-    </a>
-</div>
--- a/Admin/website/include/htmlheader.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<dummy:wrapper xmlns:dummy="http://nowhere.no">
-    <?contentType?>
-    <!-- the very base - here all elements are fixed to a certain base style -->
-    <link rel="stylesheet" type="text/css" media="all" href="//css/aelfwine.css"/>
-    <!-- basic isabelle site-specific styles -->
-    <link rel="stylesheet" type="text/css" media="all" href="//css/isabelle_base.css"/>
-    <!-- advanced sceen styles - they are imported such that they are ignored by old-fashioned browsers -->
-    <style type="text/css" media="screen">
-        @import url(<?relativeRoot href="css/isabelle_screen.css"?>);
-    </style>
-    <!-- advanced print styles -->
-    <link rel="stylesheet" type="text/css" media="print" href="//css/isabelle_print.css"/>
-    <link rel="icon" href="//img/favicon.ico" type="image/icon"/>
-    <meta name="language" content="en"/>
-    <meta name="robots" content="index follow"/>
-    <meta name="author" content="Tobias Nipkow, Lawrence Paulson, Markus Wenzel, Gerwin Klein, Florian Haftmann, Tjark Weber" />
-</dummy:wrapper>
\ No newline at end of file
--- a/Admin/website/include/mirrorlist.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div class="mirrorlist">
-    <h3>Site Mirrors:</h3>
-    <ul>
-        <li><?mirror prefix="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/" title="Cambridge (.uk)" ?></li>
-        <li><?mirror prefix="http://isabelle.in.tum.de/"                     title="Munich (.de)"    ?></li>
-        <li><?mirror prefix="http://mirror.cse.unsw.edu.au/pub/isabelle/"    title="Sydney (.au)"    ?></li>
-    </ul>
-</div>
--- a/Admin/website/include/navigation.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="navigation">
-    <h2>Navigation</h2>
-    <ul>
-        <?navitem target="index.html"           title="Home"                           ?>
-        <?navitem target="overview.html"        title="Overview"                       ?>
-        <?navitem target="logics.html"          title="Logics"                         ?>
-        <?navitem target="installation.html"    title="Installation"                   ?>
-        <?navitem target="download.html"        title="Download"                       ?>
-        <?navitem target="documentation.html"   title="Documentation"                  ?>
-        <?navitem target="community.html"       title="Community"                      ?>
-    </ul>
-    <div class="hr"><hr/></div>
-    <ul>
-        <li><?include file="//include/mirrorlist.include.html"?></li>
-    </ul>
-</div>
--- a/Admin/website/index.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Isabelle</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-        <h2>What is Isabelle?</h2> 
-        <p>
-        Isabelle is a popular generic theorem proving environment
-        developed at Cambridge University (<a
-        href="http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>)
-        and TU Munich (<a href="http://www.in.tum.de/~nipkow/">Tobias
-        Nipkow</a>).  See the <a href="overview.html">Isabelle
-        overview</a>.
-        </p>
-        <p>
-        This site provides general information on Isabelle, more
-        specific information is available from the local sites
-        </p>
-
-          <ul>
-
-            <li><a href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html"><strong>Isabelle
-                  at Cambridge</strong></a></li>
-
-            <li><a href="http://www4.in.tum.de/proj/theoremprov/group.html"><strong>Isabelle
-                   at Munich</strong></a></li>
-
-          </ul>
-
-          <p>
-          See there for information on projects done with Isabelle,
-          mailing list archives, research papers, the Isabelle
-          bibliography, and Isabelle workshops and courses.
-          </p>
-
-        <h2>Now available: Isabelle2005</h2>
-         <p>Some highlights:</p>
-              <ul>
-                <li>Interpretation of locale expressions in theories, locales, and proof contexts.</li>
-                <li>Substantial library improvements (HOL, HOL-Complex, HOLCF).</li>
-                <li>Proof tools for transitivity reasoning.</li>
-                <li>General <code>find_theorems</code> command (by term patterns, as intro/elim/simp rules etc.).</li>
-                <li>Commands for generating adhoc draft documents.</li>
-                <li>Support for Unicode proof documents (UTF-8).</li>
-                <li>Major internal reorganizations and performance improvements.</li>
-              </ul>
-
-<p><a href="//dist/Isabelle/NEWS">[Cumulative NEWS]</a></p>
-
-<h2>Download</h2>
-
-<p>
-Isabelle is distributed for free under the BSD license.  It includes
-source and binary packages and browsable documentation, see the <a
-href="installation.html">installation instructions</a>. You can also
-browse the <a href="//dist/library/index.html">Isabelle theory
-library</a> online.
-</p>
-
-<p>
-Use the mailing list <a href=
-          "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
-          <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to
-discuss problems and results.
-      Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/installation.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Installation instructions</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body>
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-      <h2>General</h2>
-      
-        <p>
-            Isabelle runs on common Unix platforms.  We provide
-            ready-to-use binary packages for Linux/x86, MaxOS X /
-            Darwin, and Solaris.  For other platforms, Isabelle logics
-            need to be compiled separately (see also <a
-            href="//dist/Isabelle/INSTALL">INSTALL</a>).
-        </p>
-        
-        <p>
-	    A practically usable Isabelle system consists of the
-	    following components:
-        </p>
-        
-        <ul>
-            <li>a suitable ML environment for Standard ML</li>
-            <li>the Isabelle system itself, including the desired object logics
-            (e.&nbsp;g. HOL, HOL-Complex)</li>
-            <li>the ProofGeneral user interface</li>
-        </ul>
-
-        <p>Optionally, theory graph browsing may be used if a Java JRE 1.1 or above
-        is installed.</p>
-
-        <p>For operating-system-specific instructions:</p>
-        
-        <ul>
-            <li><a href="#install_linux">Linux (x86)</a></li>
-            <li><a href="#install_darwin">MacOS X / Darwin (ppc)</a></li>
-            <li><a href="#install_solaris">Solaris (sparc)</a></li>
-        </ul>
-
-      <h2 id="install_linux">Linux</h2>
-
-        <p>Installation of Isabelle/HOL on common Linux/x86 platforms
-        works as follows:</p>
-
-        <ul>
-            <li>For ProofGeneral, ensure that your system has a
-                working installation of XEmacs 21, or Emacs 21 with
-                mule support.  The XEmacs 21.1.x and 21.4.x versions
-                are known to work reasonably well, but the beta branch
-                of XEmacs 21.5.x usually fails!</li>
-
-            <li>Get the packages for <a
-                href="http://www.polyml.org">Poly/ML</a>, <a
-                href="http://proofgeneral.inf.ed.ac.uk/">ProofGeneral</a>
-                and Isabelle &ndash; all of this is available from the
-                Isabelle <a href="download.html">download</a> page.
-                When you download ProofGeneral for the first time,
-                please <a
-                href="http://proofgeneral.inf.ed.ac.uk/register">register</a>.</li>
-
-            <li>Likewise download the compiled images of the desired
-            Isabelle object logics.</li>
-
-            <li>Unpack the archives to an appropriate location, e.&nbsp;g.
-                <tt class="shellcmd">/usr/local</tt>:
-                <ul class="shellcmd">
-		<li>tar -C /usr/local -xzf <?downloadLink target="//dist/Isabelle2005.tar.gz"?></li>
-                <li>tar -C /usr/local -xzf <?downloadLink target="//dist/contrib/ProofGeneral.tar.gz"?></li>
-                <li>tar -C /usr/local -xzf <?downloadLink target="//dist/contrib/polyml_x86-linux.tar.gz"?></li>
-                <li>tar -C /usr/local -xzf <?downloadLink target="//dist/HOL_x86-linux.tar.gz"?></li>
-                </ul>
-            </li>
-
-            <li>Under most circumstances, the default settings of
-                Isabelle should be reasonable for invoking
-                Isabelle/ProofGeneral without further ado:
-                <ul class="shellcmd">
-                    <li>/usr/local/Isabelle/bin/Isabelle</li>
-                </ul>
-
-		Failure on this is typically a problem with unstable
-		XEmacs versions; consider command line option
-		<code>-p</code> to specify a different xemacs
-		executable.
-
-		The X-Symbol package is already included in Proof
-                General, but needs to be enabled separately; use the
-                <code>-x</code> command line option, or the
-                <em>Options</em> menu.
-            </li>
-
-            <li>Isabelle may also be run without ProofGeneral, as a
-                plain shell process as follows:
-		<ul class="shellcmd">
-                <li>/usr/local/Isabelle/bin/isabelle-process -I</li>
-		</ul>
-		Type CTRL-D to exit.
-
-		If the above does not work at all, maybe you are
-		suffering from a known problem of Poly/ML on certain
-		Linux versions, see also <a
-		href="http://www.polyml.org/linuxsegfault.html">Segmentation
-		faults with Linux</a> on the Poly/ML site.
-	    </li>
-	</ul>
-
-      <h2 id="install_darwin">MaxOS X / Darwin</h2>
-
-        <p>Ensure that your system provides the following:</p>
-        <ul>
-            <li>MacOS X 10.2.2 or higher</li>
-
-            <li>XEmacs 21, or Emacs 21 with mule support (for
-                ProofGeneral) &ndash; for further reference, see the
-                <a href="installation_macos_emacs.html">MacOS X Emacs
-                hints</a>. </li>
-        </ul>
-
-        <p>Then installation on MacOS X / Darwin is analogous to
-        Linux, but note that some GNU executables are named
-        differently.</p>
-
-        <ul>
-            <li>Unpack the archives to an appropriate location, e.&nbsp;g.
-                <tt class="shellcmd">/usr/local</tt>:
-                <ul class="shellcmd">
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/Isabelle2005.tar.gz"?></li>
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/ProofGeneral.tar.gz"?></li>
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/polyml_ppc-darwin.tar.gz"?></li>
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/HOL_ppc-darwin.tar.gz"?></li>
-                </ul>
-            </li>
-
-            <li>Invoke Isabelle/ProofGeneral as follows:
-                <ul class="shellcmd">
-                    <li>/usr/local/Isabelle/bin/Isabelle</li>
-                </ul>
-            </li>
-
-        </ul>
-
-      <h2 id="install_solaris">Solaris</h2>
-
-        <p>Ensure that the following tools are available on your system:</p>
-        <ul>
-            <li>Perl 5.x</li>
-            <li>GNU bash 2.x</li>
-            <li>GNU tar 1.13 or higher</li>
-            <li>GNU gzip 1.3 or higher</li>
-            <li>XEmacs 21, or Emacs 21 with mule support (for ProofGeneral)</li>
-        </ul>
-
-        <p>The rest of the installation is analogous to Linux (see
-        above).</p>
-
-        <ul>
-            <li>Unpack the archives to an appropriate location, e.&nbsp;g.
-                <tt class="shellcmd">/usr/local</tt>:
-                <ul class="shellcmd">
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/Isabelle2005.tar.gz"?></li>
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/ProofGeneral.tar.gz"?></li>
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/polyml_sparc-solaris.tar.gz"?></li>
-                    <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/HOL_sparc-solaris.tar.gz"?></li>
-                </ul>
-            </li>
-
-            <li>Invoke Isabelle/ProofGeneral as follows:
-                <ul class="shellcmd">
-                    <li>/usr/local/Isabelle/bin/Isabelle</li>
-                </ul>
-            </li>
-        </ul>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/installation_macos_emacs.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>MacOS X Emacs hints</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="dist">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-
-      <h2>MacOS X Emacs hints</h2>
-      
-        <p>Assuming you have an installation of Isabelle on your Mac,
-        there are various possibilites for running ProofGeneral:</p>
-
-        <ul>
-            <li>You should also be able to launch <a href=
-                "http://proofgeneral.inf.ed.ac.uk/">Proof General</a> by typing
-                <tt class="shellcmd">Isabelle</tt> at the Unix command line. This will invoke the
-                Apple-supplied version of Emacs in a terminal window, providing a primitive
-                environment.</li>
-            <li>Somewhat better is to run Proof General from within a version
-                of Emacs ported as a native Mac OS X application, such as <a href=
-                "http://home.att.ne.jp/alpha/z123/emacs-mac-e.html">MacEmacs JP</a> or
-                <a href="http://mindlube.com/products/emacs/">mindlube's</a> or <a href=
-                "http://www.cs.man.ac.uk/%7efranconi/mac-emacs/">Enhanced Carbon Emacs</a>.
-                Visiting a theory file from Emacs will automatically launch Proof General
-                provided <tt class="shellcmd">isabelle</tt> is on the search path. None of these options
-                support the X-Symbol package, unfortunately.</li>
-            <li>In order to get the full benefit of Proof General, you must install the X
-              Window System (X11) and <a href="http://www.xemacs.org/">XEmacs</a> or
-              <a href="http://www.gnu.org/software/emacs/emacs.html">GNU Emacs</a>.</li>
-              <ul>
-                <li>
-                    <a href="http://www.apple.com/macosx/x11/">apple's version of X11</a>
-                    is included with the Panther (MacOS X 10.3) installation discs, though it is
-                    not installed by default. The Command key serves as Meta, but it is
-                    reserved for standard Apple shortcuts such as C, V and X, so you must use
-                    Esc-C, Esc-V and Esc-X in Emacs or else deselect &raquo;Enable key equivalents&laquo;
-                    in the X11 preferences.</li>
-                <li>The easiest way to install XEmacs or GNU Emacs is via the package manager
-                  <a href="http://fink.sourceforge.net/">Fink</a>. Install the Fink package
-                  <tt>xemacs-sumo-pkg</tt> to get the XEmacs libraries that Proof General needs
-                  to run. To install GNU Emacs, install the package <tt>emacs21</tt>. Fink can
-                  compile from sources, but this takes hours, so it is better to request binary
-                  installations.</li>
-                <li>To use <a href="http://www.gnu.org/software/emacs/emacs.html">GNU
-                  Emacs</a> instead of <a href="http://www.xemacs.org/">XEmacs</a>, you must
-                  recompile Proof General and X-Symbol following the instructions <a href=
-                  "http://proofgeneral.inf.ed.ac.uk/FAQ">here</a>. Note that Proof General
-                  incorporates its own copy of X-Symbol.</li>
-
-              </ul>
-        </ul>
-
-        <p>You may want to install this drag-and-drop <a href=
-        "//misc/isabelle_droplet.dmg">Isabelle launcher</a>. It is a simple hack that
-        invokes XEmacs on any files dropped on it.</p>
-
-        <p>Here is a <a href=
-        "//img/screenshot_isabelle_macos.gif">screenshot</a> showing Proof General running
-        in GNU Emacs.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/installation_notes_cygwin.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Installation notes for Windows/Cygwin</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="dist">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-      <h2>Preconditions and restrictions</h2>
-    
-      <p>Please notice before you go ahead:</p>
-    
-      <ul>
-        <li>The ML system these notes apply to is <a href=
-        "http://www.smlnj.org/">Standard ML of New Jersey</a>, which
-        provides explicit Cygwin support.  Poly/ML is not covered
-        here.</li>
-    
-        <li>It is assumed you have some experience with an Unix
-        operating system (e.g. what a shell is for and how to use
-        it).</li>
-      </ul>
-
-      <p>Any suggestions and improvements concerning this hints are welcomed!</p>
-
-      <h2>Acknowlegements</h2>
-    
-      <p>Thanks to <a href=
-      "http://cswww.essex.ac.uk/Research/FSS/projects/isawin/">Norbert
-      Völker</a> and <a href=
-      "http://www.abo.fi/~viorel.preoteasa/isabelle/">Viorel Preoteasa</a> whose
-      efforts helped a lot to get Isabelle run this way.</p>
-    
-      <h2>Installing Cygwin</h2>
-    
-      <p>Cygwin is a POSIX emulation layer for Windows; it contains ports of a
-      large collection of common Unix software (shells, perl, gcc, X11, latex,
-      ImageMagick, &hellip;).</p>
-    
-      <p>To install it, get the installer from the <a href=
-      "http://www.cygwin.com">Cygwin website</a> and run it. It will ask you which
-      packages to install, and then downloads and installs them. Please make sure
-      you install everything needed by Isabelle; it is hard to give a concise list
-      of packages here since the bundling of Cygwin packages may vary over time,
-      but installing the base packages, perl, make, xemacs and x-server should be a
-      good choice for the beginning.</p>
-    
-      <p>By default, cygwin installs to <tt class="shellcmd">c:\cygwin</tt>; you may choose an
-      arbitrary location, but it is recommended that it does not include any space
-      or exotic characters. This directory will then become the root directory of
-      the Cygwin filesystem tree, i.e. the Cygwin path <tt class="shellcmd">/opt/smlnj</tt> will be
-      mapped to Windows path <tt class="shellcmd">c:\cygwin\opt\smlnj</tt>.</p>
-    
-      <p>After installation, open a Cygwin shell window (normally the installer
-      makes a shortcut for you).</p>
-    
-      <h2>Getting and building SML/NJ</h2>
-    
-      <p>Now we are ready to get and build <a href=
-      "http://www.smlnj.org/">SML/NJ</a>; before this, set the environment variable
-      SMLNJ_CYGWIN_RUNTIME to 1:</p>
-    
-      <ul class="shellcmd">
-        <li>export SMLNJ_CYGWIN_RUNTIME=1</li>
-      </ul>
-    
-      <p>This setting will tell the build process that it should
-      <em>not</em> attempt to build SML/NJ natively for Win32 but for Cygwin
-      instead (see further <a href=
-      "http://smlnj.cs.uchicago.edu/dist/working/110.53/CYGWININSTALL">CYGWININSTALL</a>).</p>
-    
-      <p>So far, this setup was tested using the working version 110.53 of SML/NJ
-      from <a href=
-      "http://smlnj.cs.uchicago.edu/dist/working/110.53/">http://smlnj.cs.uchicago.edu/dist/working/110.53/</a>.
-      SML/NJ provides a nice installer enabling you to download and build it. Read
-      <a href=
-      "http://smlnj.cs.uchicago.edu/dist/working/110.53/INSTALL">INSTALL</a> to
-      learn about the different possibilites to do this. The default packages
-      should be sufficient.</p>
-    
-      <p>In the following, it is assumed that you install SML/NJ to Cygwin path
-      <tt class="shellcmd">/opt/smlnj</tt>; if you choose an other location, some tweaking in the
-      <a href="#config"><tt class="shellcmd">etc/settings</tt> file</a> may be neccessary later.</p>
-    
-      <p>Whenever SMLNJ is used, the SMLNJ_CYGWIN_RUNTIME environment variable must
-      be set to 1 (later on a convenient mechanism to make this the default is
-      proposed).</p>
-    
-      <h2>Installing Isabelle</h2>
-    
-      <p><a href="download.html">Download</a> the latest Isabelle and
-      ProofGeneral release packages. Assuming that you are in the
-      directory where you downloaded the files, install them into <tt
-      class="shellcmd">/opt</tt> by typing into the bash shell:</p>
-    
-      <ul class="shellcmd">
-        <li>tar -C /usr/opt -xvzf <?value key="distname"?>.tar.gz</li>
-        <li>tar -C /usr/opt -xvzf ProofGeneral.tar.gz</li>
-      </ul>
-      
-      <p>The location <tt class="shellcmd">/opt</tt> again is just a proposal; if you choose other
-      locations, some tweaking in the <a href="#config"><tt class="shellcmd">etc/settings</tt>
-      file</a> may be neccessary later.</p>
-    
-      <h2 id="config">Configuring Isabelle</h2>
-    
-      <p>Edit the file <tt class="shellcmd">/opt/Isabelle/etc/settings</tt>; first, uncomment the
-      lines about SMLNJ. Also set the variable SMLNJ_CYGWIN_RUNTIME to 1, in order
-      the cygwin version of SMLNJ is used. As mentioned above, the path variables
-      for the ML system and ProofGeneral may need adjustions, depending on your
-      different installation locations.</p>
-    
-      <p>Take heed of the setting of ISABELLE_HOME_USER; by default, this is
-      <tt class="shellcmd">~/isabelle</tt>. To detect which Windows path this will be mapped to,
-      type into the Cygwin bash shell:</p>
-    
-      <ul class="shellcmd">
-        <li>cygpath --windows ~/isabelle</li>
-      </ul>
-      
-      <p>If you don't like this location to be the isabelle home
-      directory, consider setting of ISABELLE_HOME_USER to another value; use
-      <tt class="shellcmd">cygpath --unix &lt;winpath&gt;</tt> to detect which Cygwin path a given
-      Windows path is mapped to.</p>
-    
-      <p>A typical change could look like this:</p>
-    
-      <blockquote>
-        from<br />
-        <tt># Standard ML of New Jersey 110 or later<br />
-        #ML_SYSTEM=smlnj-110<br />
-        #ML_HOME="$ISABELLE_HOME/../smlnj/bin"<br />
-        #ML_OPTIONS="@SMLdebug=/dev/null"<br />
-        #ML_PLATFORM=$(eval $("$ML_HOME/.arch-n-opsys" 2&gt;/dev/null); echo
-        "$HEAP_SUFFIX")<br /></tt>
-      </blockquote>
-    
-      <blockquote>
-        to<br />
-        <tt># Standard ML of New Jersey 110 or later<br />
-        SMLNJ_CYGWIN_RUNTIME=1<br />
-        ML_SYSTEM=smlnj-110<br />
-        ML_HOME="$ISABELLE_HOME/../smlnj/bin"<br />
-        ML_OPTIONS="@SMLdebug=/dev/null"<br />
-        ML_PLATFORM=$(eval $("$ML_HOME/.arch-n-opsys" 2&gt;/dev/null); echo
-        "$HEAP_SUFFIX")</tt>
-      </blockquote>
-
-      <h2>Building logics</h2>
-    
-      <p>Now we can compile some logics. Start the cygwin shell (if not still
-      running) and type:</p>
-    
-      <ul class="shellcmd">
-        <li>cd /opt/Isabelle</li>
-        <li>build FOL</li>
-        <li>build ZF</li>
-        <li>build HOL</li>
-      </ul>
-
-      <p>The compilation process may take some time (depending on how fast the
-      computer is). Before building a logic image the build program shows some
-      variables and expects user input &ndash; just hit enter.</p>
-    
-      <h2>Running Isabelle with ProofGeneral</h2>
-    
-      <p>Now everything should be ready. To test, start the cygwin shell and
-      type</p>
-    
-      <ul class="shellcmd">
-        <li>startx &amp;</li>
-      </ul>
-      
-      <p>This will start the cygwin X server and an X shell window. In
-      the X shell window, type</p>
-    
-      <ul class="shellcmd">
-        <li>/opt/Isabelle/bin/Isabelle &amp;</li>.
-      </ul>
-      
-      <p>This will start the ProofGeneral interface for Isabelle. After a
-      while an empty buffer <tt>Scratch.thy</tt> is created. You can turn on
-      X-Symbol from the menu Proof-General, item Options.</p>
-    
-      <p>Load one of your favorite theories and test your Isabelle installation by
-      proving something.</p>
-    
-      <p>To simplify starting ProofGeneral, consider writing a Windows command
-      script, e.&nbsp;g.</p>
-    
-      <blockquote>
-        <tt>@bash startx -geometry 30x4 -iconic -e Isabelle</tt>
-      </blockquote>
-      
-      <p>and assigning a shortcut in the start menu to it.</p>
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/js/overlib.js	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1491 +0,0 @@
-//\/////
-//\  overLIB 4.21 - You may not remove or change this notice.
-//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
-//\
-//\  Contributors are listed on the homepage.
-//\  This file might be old, always check for the latest version at:
-//\  http://www.bosrup.com/web/overlib/
-//\
-//\  Please read the license agreement (available through the link above)
-//\  before using overLIB. Direct any licensing questions to erik@bosrup.com.
-//\
-//\  Do not sell this as your own work or remove this copyright notice. 
-//\  For full details on copying or changing this script please read the
-//\  license agreement at the link above. Please give credit on sites that
-//\  use overLIB and submit changes of the script so other people can use
-//\  them as well.
-//   $Revision$                $Date$
-//\/////
-//\mini
-
-////////
-// PRE-INIT
-// Ignore these lines, configuration is below.
-////////
-var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.21', 1);
-var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4;
-var olHideForm=0;  // parameter for hiding SELECT and ActiveX elements in IE5.5+ 
-var olHautoFlag = 0;  // flags for over-riding VAUTO and HAUTO if corresponding
-var olVautoFlag = 0;  // positioning commands are used on the command line
-var hookPts = new Array(), postParse = new Array(), cmdLine = new Array(), runTime = new Array();
-// for plugins
-registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');
-
-////////
-// DEFAULT CONFIGURATION
-// Settings you want everywhere are set here. All of this can also be
-// changed on your html page or through an overLIB call.
-////////
-if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#CCCCFF";
-if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#333399";
-if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000";
-if (typeof ol_capcolor=='undefined') var ol_capcolor="#FFFFFF";
-if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF";
-if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica";
-if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica";
-if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica";
-if (typeof ol_textsize=='undefined') var ol_textsize="1";
-if (typeof ol_captionsize=='undefined') var ol_captionsize="1";
-if (typeof ol_closesize=='undefined') var ol_closesize="1";
-if (typeof ol_width=='undefined') var ol_width="200";
-if (typeof ol_border=='undefined') var ol_border="1";
-if (typeof ol_cellpad=='undefined') var ol_cellpad=2;
-if (typeof ol_offsetx=='undefined') var ol_offsetx=10;
-if (typeof ol_offsety=='undefined') var ol_offsety=10;
-if (typeof ol_text=='undefined') var ol_text="Default Text";
-if (typeof ol_cap=='undefined') var ol_cap="";
-if (typeof ol_sticky=='undefined') var ol_sticky=0;
-if (typeof ol_background=='undefined') var ol_background="";
-if (typeof ol_close=='undefined') var ol_close="Close";
-if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT;
-if (typeof ol_status=='undefined') var ol_status="";
-if (typeof ol_autostatus=='undefined') var ol_autostatus=0;
-if (typeof ol_height=='undefined') var ol_height=-1;
-if (typeof ol_snapx=='undefined') var ol_snapx=0;
-if (typeof ol_snapy=='undefined') var ol_snapy=0;
-if (typeof ol_fixx=='undefined') var ol_fixx=-1;
-if (typeof ol_fixy=='undefined') var ol_fixy=-1;
-if (typeof ol_relx=='undefined') var ol_relx=null;
-if (typeof ol_rely=='undefined') var ol_rely=null;
-if (typeof ol_fgbackground=='undefined') var ol_fgbackground="";
-if (typeof ol_bgbackground=='undefined') var ol_bgbackground="";
-if (typeof ol_padxl=='undefined') var ol_padxl=1;
-if (typeof ol_padxr=='undefined') var ol_padxr=1;
-if (typeof ol_padyt=='undefined') var ol_padyt=1;
-if (typeof ol_padyb=='undefined') var ol_padyb=1;
-if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0;
-if (typeof ol_vpos=='undefined') var ol_vpos=BELOW;
-if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0;
-if (typeof ol_capicon=='undefined') var ol_capicon="";
-if (typeof ol_frame=='undefined') var ol_frame=self;
-if (typeof ol_timeout=='undefined') var ol_timeout=0;
-if (typeof ol_function=='undefined') var ol_function=null;
-if (typeof ol_delay=='undefined') var ol_delay=0;
-if (typeof ol_hauto=='undefined') var ol_hauto=0;
-if (typeof ol_vauto=='undefined') var ol_vauto=0;
-if (typeof ol_closeclick=='undefined') var ol_closeclick=0;
-if (typeof ol_wrap=='undefined') var ol_wrap=0;
-if (typeof ol_followmouse=='undefined') var ol_followmouse=1;
-if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0;
-if (typeof ol_closetitle=='undefined') var ol_closetitle='Close';
-if (typeof ol_compatmode=='undefined') var ol_compatmode=0;
-if (typeof ol_css=='undefined') var ol_css=CSSOFF;
-if (typeof ol_fgclass=='undefined') var ol_fgclass="";
-if (typeof ol_bgclass=='undefined') var ol_bgclass="";
-if (typeof ol_textfontclass=='undefined') var ol_textfontclass="";
-if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass="";
-if (typeof ol_closefontclass=='undefined') var ol_closefontclass="";
-
-////////
-// ARRAY CONFIGURATION
-////////
-
-// You can use these arrays to store popup text here instead of in the html.
-if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1");
-if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1");
-
-////////
-// END OF CONFIGURATION
-// Don't change anything below this line, all configuration is above.
-////////
-
-
-
-
-
-////////
-// INIT
-////////
-// Runtime variables init. Don't change for config!
-var o3_text="";
-var o3_cap="";
-var o3_sticky=0;
-var o3_background="";
-var o3_close="Close";
-var o3_hpos=RIGHT;
-var o3_offsetx=2;
-var o3_offsety=2;
-var o3_fgcolor="";
-var o3_bgcolor="";
-var o3_textcolor="";
-var o3_capcolor="";
-var o3_closecolor="";
-var o3_width=100;
-var o3_border=1;
-var o3_cellpad=2;
-var o3_status="";
-var o3_autostatus=0;
-var o3_height=-1;
-var o3_snapx=0;
-var o3_snapy=0;
-var o3_fixx=-1;
-var o3_fixy=-1;
-var o3_relx=null;
-var o3_rely=null;
-var o3_fgbackground="";
-var o3_bgbackground="";
-var o3_padxl=0;
-var o3_padxr=0;
-var o3_padyt=0;
-var o3_padyb=0;
-var o3_fullhtml=0;
-var o3_vpos=BELOW;
-var o3_aboveheight=0;
-var o3_capicon="";
-var o3_textfont="Verdana,Arial,Helvetica";
-var o3_captionfont="Verdana,Arial,Helvetica";
-var o3_closefont="Verdana,Arial,Helvetica";
-var o3_textsize="1";
-var o3_captionsize="1";
-var o3_closesize="1";
-var o3_frame=self;
-var o3_timeout=0;
-var o3_timerid=0;
-var o3_allowmove=0;
-var o3_function=null; 
-var o3_delay=0;
-var o3_delayid=0;
-var o3_hauto=0;
-var o3_vauto=0;
-var o3_closeclick=0;
-var o3_wrap=0;
-var o3_followmouse=1;
-var o3_mouseoff=0;
-var o3_closetitle='';
-var o3_compatmode=0;
-var o3_css=CSSOFF;
-var o3_fgclass="";
-var o3_bgclass="";
-var o3_textfontclass="";
-var o3_captionfontclass="";
-var o3_closefontclass="";
-
-// Display state variables
-var o3_x = 0;
-var o3_y = 0;
-var o3_showingsticky = 0;
-var o3_removecounter = 0;
-
-// Our layer
-var over = null;
-var fnRef, hoveringSwitch = false;
-var olHideDelay;
-
-// Decide browser version
-var isMac = (navigator.userAgent.indexOf("Mac") != -1);
-var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode);  // Opera 7
-var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4);
-var olNs6 = (document.getElementById) ? true : false;
-var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent));
-var olIe4 = (document.all) ? true : false;
-var olIe5 = false; 
-var olIe55 = false; // Added additional variable to identify IE5.5+
-var docRoot = 'document.body';
-
-// Resize fix for NS4.x to keep track of layer
-if (olNs4) {
-	var oW = window.innerWidth;
-	var oH = window.innerHeight;
-	window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); }
-}
-
-// Microsoft Stupidity Check(tm).
-if (olIe4) {
-	var agent = navigator.userAgent;
-	if (/MSIE/.test(agent)) {
-		var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);
-		if (versNum >= 5){
-			olIe5=true;
-			olIe55=(versNum>=5.5&&!olOp) ? true : false;
-			if (olNs6) olNs6=false;
-		}
-	}
-	if (olNs6) olIe4 = false;
-}
-
-// Check for compatability mode.
-if (document.compatMode && document.compatMode == 'CSS1Compat') {
-	docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot);
-}
-
-// Add window onload handlers to indicate when all modules have been loaded
-// For Netscape 6+ and Mozilla, uses addEventListener method on the window object
-// For IE it uses the attachEvent method of the window object and for Netscape 4.x
-// it sets the window.onload handler to the OLonload_handler function for Bubbling
-if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false);
-else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler);
-
-var capExtent;
-
-////////
-// PUBLIC FUNCTIONS
-////////
-
-// overlib(arg0,...,argN)
-// Loads parameters into global runtime variables.
-function overlib() {
-	if (!olLoaded || isExclusive(overlib.arguments)) return true;
-	if (olCheckMouseCapture) olMouseCapture();
-	if (over) {
-		over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over;
-		cClick();
-	}
-
-	// Load defaults to runtime.
-  olHideDelay=0;
-	o3_text=ol_text;
-	o3_cap=ol_cap;
-	o3_sticky=ol_sticky;
-	o3_background=ol_background;
-	o3_close=ol_close;
-	o3_hpos=ol_hpos;
-	o3_offsetx=ol_offsetx;
-	o3_offsety=ol_offsety;
-	o3_fgcolor=ol_fgcolor;
-	o3_bgcolor=ol_bgcolor;
-	o3_textcolor=ol_textcolor;
-	o3_capcolor=ol_capcolor;
-	o3_closecolor=ol_closecolor;
-	o3_width=ol_width;
-	o3_border=ol_border;
-	o3_cellpad=ol_cellpad;
-	o3_status=ol_status;
-	o3_autostatus=ol_autostatus;
-	o3_height=ol_height;
-	o3_snapx=ol_snapx;
-	o3_snapy=ol_snapy;
-	o3_fixx=ol_fixx;
-	o3_fixy=ol_fixy;
-	o3_relx=ol_relx;
-	o3_rely=ol_rely;
-	o3_fgbackground=ol_fgbackground;
-	o3_bgbackground=ol_bgbackground;
-	o3_padxl=ol_padxl;
-	o3_padxr=ol_padxr;
-	o3_padyt=ol_padyt;
-	o3_padyb=ol_padyb;
-	o3_fullhtml=ol_fullhtml;
-	o3_vpos=ol_vpos;
-	o3_aboveheight=ol_aboveheight;
-	o3_capicon=ol_capicon;
-	o3_textfont=ol_textfont;
-	o3_captionfont=ol_captionfont;
-	o3_closefont=ol_closefont;
-	o3_textsize=ol_textsize;
-	o3_captionsize=ol_captionsize;
-	o3_closesize=ol_closesize;
-	o3_timeout=ol_timeout;
-	o3_function=ol_function;
-	o3_delay=ol_delay;
-	o3_hauto=ol_hauto;
-	o3_vauto=ol_vauto;
-	o3_closeclick=ol_closeclick;
-	o3_wrap=ol_wrap;	
-	o3_followmouse=ol_followmouse;
-	o3_mouseoff=ol_mouseoff;
-	o3_closetitle=ol_closetitle;
-	o3_css=ol_css;
-	o3_compatmode=ol_compatmode;
-	o3_fgclass=ol_fgclass;
-	o3_bgclass=ol_bgclass;
-	o3_textfontclass=ol_textfontclass;
-	o3_captionfontclass=ol_captionfontclass;
-	o3_closefontclass=ol_closefontclass;
-	
-	setRunTimeVariables();
-	
-	fnRef = '';
-	
-	// Special for frame support, over must be reset...
-	o3_frame = ol_frame;
-	
-	if(!(over=createDivContainer())) return false;
-
-	parseTokens('o3_', overlib.arguments);
-	if (!postParseChecks()) return false;
-
-	if (o3_delay == 0) {
-		return runHook("olMain", FREPLACE);
- 	} else {
-		o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay);
-		return false;
-	}
-}
-
-// Clears popups if appropriate
-function nd(time) {
-	if (olLoaded && !isExclusive()) {
-		hideDelay(time);  // delay popup close if time specified
-
-		if (o3_removecounter >= 1) { o3_showingsticky = 0 };
-		
-		if (o3_showingsticky == 0) {
-			o3_allowmove = 0;
-			if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over);
-		} else {
-			o3_removecounter++;
-		}
-	}
-	
-	return true;
-}
-
-// The Close onMouseOver function for stickies
-function cClick() {
-	if (olLoaded) {
-		runHook("hideObject", FREPLACE, over);
-		o3_showingsticky = 0;	
-	}	
-	return false;
-}
-
-// Method for setting page specific defaults.
-function overlib_pagedefaults() {
-	parseTokens('ol_', overlib_pagedefaults.arguments);
-}
-
-
-////////
-// OVERLIB MAIN FUNCTION
-////////
-
-// This function decides what it is we want to display and how we want it done.
-function olMain() {
-	var layerhtml, styleType;
- 	runHook("olMain", FBEFORE);
- 	
-	if (o3_background!="" || o3_fullhtml) {
-		// Use background instead of box.
-		layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml);
-	} else {
-		// They want a popup box.
-		styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass");
-
-		// Prepare popup background
-		if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\"";
-		if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground);
-
-		// Prepare popup colors
-		if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor);
-		if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor);
-
-		// Prepare popup height
-		if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height);
-		else o3_height = "";
-
-		// Decide which kinda box.
-		if (o3_cap=="") {
-			// Plain
-			layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text);
-		} else {
-			// With caption
-			if (o3_sticky) {
-				// Show close text
-				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close);
-			} else {
-				// No close text
-				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, "");
-			}
-		}
-	}	
-
-	// We want it to stick!
-	if (o3_sticky) {
-		if (o3_timerid > 0) {
-			clearTimeout(o3_timerid);
-			o3_timerid = 0;
-		}
-		o3_showingsticky = 1;
-		o3_removecounter = 0;
-	}
-
-	// Created a separate routine to generate the popup to make it easier
-	// to implement a plugin capability
-	if (!runHook("createPopup", FREPLACE, layerhtml)) return false;
-
-	// Prepare status bar
-	if (o3_autostatus > 0) {
-		o3_status = o3_text;
-		if (o3_autostatus > 1) o3_status = o3_cap;
-	}
-
-	// When placing the layer the first time, even stickies may be moved.
-	o3_allowmove = 0;
-
-	// Initiate a timer for timeout
-	if (o3_timeout > 0) {          
-		if (o3_timerid > 0) clearTimeout(o3_timerid);
-		o3_timerid = setTimeout("cClick()", o3_timeout);
-	}
-
-	// Show layer
-	runHook("disp", FREPLACE, o3_status);
-	runHook("olMain", FAFTER);
-
-	return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != '');
-}
-
-////////
-// LAYER GENERATION FUNCTIONS
-////////
-// These functions just handle popup content with tags that should adhere to the W3C standards specification.
-
-// Makes simple table without caption
-function ol_content_simple(text) {
-	var cpIsMultiple = /,/.test(o3_cellpad);
-	var txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
-
-	set_background("");
-	return txt;
-}
-
-// Makes table with caption and optional close link
-function ol_content_caption(text,title,close) {
-	var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad);
-	var closing, closeevent;
-
-	closing = "";
-	closeevent = "onmouseover";
-	if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick";
-	if (o3_capicon != "") {
-	  nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"';
-	  if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';
-	  o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />';
-	}
-
-	if (close != "")
-		closing = '<td '+(!o3_compatmode && o3_closefontclass ? 'class="'+o3_closefontclass : 'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode && o3_closefontclass) ? ' class="' + o3_closefontclass + '" ' : ' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+'</a></td>';
-	txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass ? ' class="'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : '<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>';
-
-	set_background("");
-	return txt;
-}
-
-// Sets the background picture,padding and lots more. :)
-function ol_content_background(text,picture,hasfullhtml) {
-	if (hasfullhtml) {
-		txt=text;
-	} else {
-		txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" class="'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';
-	}
-
-	set_background(picture);
-	return txt;
-}
-
-// Loads a picture into the div.
-function set_background(pic) {
-	if (pic == "") {
-		if (olNs4) {
-			over.background.src = null; 
-		} else if (over.style) {
-			over.style.backgroundImage = "none";
-		}
-	} else {
-		if (olNs4) {
-			over.background.src = pic;
-		} else if (over.style) {
-			over.style.width=o3_width + 'px';
-			over.style.backgroundImage = "url("+pic+")";
-		}
-	}
-}
-
-////////
-// HANDLING FUNCTIONS
-////////
-var olShowId=-1;
-
-// Displays the popup
-function disp(statustext) {
-	runHook("disp", FBEFORE);
-	
-	if (o3_allowmove == 0) {
-		runHook("placeLayer", FREPLACE);
-		(olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over);
-		o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1;
-	}
-	
-	runHook("disp", FAFTER);
-
-	if (statustext != "") self.status = statustext;
-}
-
-// Creates the actual popup structure
-function createPopup(lyrContent){
-	runHook("createPopup", FBEFORE);
-	
-	if (o3_wrap) {
-		var wd,ww,theObj = (olNs4 ? over : over.style);
-		theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
-		layerWrite(lyrContent);
-		wd = (olNs4 ? over.clip.width : over.offsetWidth);
-		if (wd > (ww=windowWidth())) {
-			lyrContent=lyrContent.replace(/\&nbsp;/g, ' ');
-			o3_width=ww;
-			o3_wrap=0;
-		} 
-	}
-
-	layerWrite(lyrContent);
-	
-	// Have to set o3_width for placeLayer() routine if o3_wrap is turned on
-	if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth);
-	
-	runHook("createPopup", FAFTER, lyrContent);
-
-	return true;
-}
-
-// Decides where we want the popup.
-function placeLayer() {
-	var placeX, placeY, widthFix = 0;
-	
-	// HORIZONTAL PLACEMENT, re-arranged to work in Safari
-	if (o3_frame.innerWidth) widthFix=18; 
-	iwidth = windowWidth();
-
-	// Horizontal scroll offset
-	winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset;
-
-	placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
-
-	// VERTICAL PLACEMENT, re-arranged to work in Safari
-	if (o3_frame.innerHeight) {
-		iheight=o3_frame.innerHeight;
-	} else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { 
-		iheight=eval('o3_frame.'+docRoot+'.clientHeight');
-	}			
-
-	// Vertical scroll offset
-	scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset;
-	placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
-
-	// Actually move the object.
-	repositionTo(over, placeX, placeY);
-}
-
-// Moves the layer
-function olMouseMove(e) {
-	var e = (e) ? e : event;
-
-	if (e.pageX) {
-		o3_x = e.pageX;
-		o3_y = e.pageY;
-	} else if (e.clientX) {
-		o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');
-		o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');
-	}
-	
-	if (o3_allowmove == 1) runHook("placeLayer", FREPLACE);
-
-	// MouseOut handler
-	if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) {
-		(olHideDelay ? hideDelay(olHideDelay) : cClick());
-		hoveringSwitch = !hoveringSwitch;
-	}
-}
-
-// Fake function for 3.0 users.
-function no_overlib() { return ver3fix; }
-
-// Capture the mouse and chain other scripts.
-function olMouseCapture() {
-	capExtent = document;
-	var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove;
-	var re = /function[ ]*(\w*)\(/;
-	
-	wMv = (!olIe4 && window.onmousemove);
-	if (document.onmousemove || wMv) {
-		if (wMv) capExtent = window;
-		f = capExtent.onmousemove.toString();
-		fN = f.match(re);
-		if (fN == null) {
-			str = f+'(e); ';
-		} else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) {
-			if (!olOp && wMv) {
-				l = f.indexOf('{')+1;
-				k = f.lastIndexOf('}');
-				sS = f.substring(l,k);
-				if ((l = sS.indexOf('(')) != -1) {
-					sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');
-					if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null;
-					else str = sS + '(e);';
-				}
-			}
-			if (!str) {
-				olCheckMouseCapture = false;
-				return;
-			}
-		} else {
-			if (fN[1]) str = fN[1]+'(e); ';
-			else {
-				l = f.indexOf('{')+1;
-				k = f.lastIndexOf('}');
-				str = f.substring(l,k) + '\n';
-			}
-		}
-		str += 'olMouseMove(e); ';
-		mseHandler = new Function('e', str);
-	}
-
-	capExtent.onmousemove = mseHandler;
-	if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE);
-}
-
-////////
-// PARSING FUNCTIONS
-////////
-
-// Does the actual command parsing.
-function parseTokens(pf, ar) {
-	// What the next argument is expected to be.
-	var v, i, mode=-1, par = (pf != 'ol_');	
-	var fnMark = (par && !ar.length ? 1 : 0);
-
-	for (i = 0; i < ar.length; i++) {
-		if (mode < 0) {
-			// Arg is maintext,unless its a number between pmStart and pmUpper
-			// then its a command.
-			if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) {
-				fnMark = (par ? 1 : 0);
-				i--;   // backup one so that the next block can parse it
-			} else {
-				switch(pf) {
-					case 'ol_':
-						ol_text = ar[i].toString();
-						break;
-					default:
-						o3_text=ar[i].toString();  
-				}
-			}
-			mode = 0;
-		} else {
-			// Note: NS4 doesn't like switch cases with vars.
-			if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; }
-			if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; }
-			if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; }
-			if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; }
-			if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; }
-			if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; }
-			if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; }
-			if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; }
-			if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; }
-			if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; }
-			if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; }
-			if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; }
-			if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; }
-			if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; }
-			if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; }
-			if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; }
-			if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; }
-			if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; }
-			if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; }
-			if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; }
-			if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; }
-			if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again.
-			if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; }
-			if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; }
-			if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; }
-			if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; }
-			if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; }
-			if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; }
-			if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; }
-			if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; }
-			if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; }
-			if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; }
-			if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; }
-			if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; }
-			if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; }
-			if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; }
-			if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; }
-			if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; }
-			if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; }
-			if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; }
-			if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; }
-			if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; }
-			if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; }
-			if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i];  opt_FUNCTION(v); } continue; }
-			if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; }
-			if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; }
-			if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; }
-			if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; }
-			if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; }
-			if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; }
-			if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; }
-			if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; }
-			if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; }
-			if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; }
-			if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; }
-			if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; }
-			if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; }
-			if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; }
-			if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; }
-			i = parseCmdLine(pf, i, ar);
-		}
-	}
-
-	if (fnMark && o3_function) o3_text = o3_function();
-	
-	if ((pf == 'o3_') && o3_wrap) {
-		o3_width = 0;
-		
-		var tReg=/<.*\n*>/ig;
-		if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, '&nbsp;');
-		if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, '&nbsp;');
-	}
-	if ((pf == 'o3_') && o3_sticky) {
-		if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close;
-		if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' ');
-	}
-}
-
-
-////////
-// LAYER FUNCTIONS
-////////
-
-// Writes to a layer
-function layerWrite(txt) {
-	txt += "\n";
-	if (olNs4) {
-		var lyr = o3_frame.document.layers['overDiv'].document
-		lyr.write(txt)
-		lyr.close()
-	} else if (typeof over.innerHTML != 'undefined') {
-		if (olIe5 && isMac) over.innerHTML = '';
-		over.innerHTML = txt;
-	} else {
-		range = o3_frame.document.createRange();
-		range.setStartAfter(over);
-		domfrag = range.createContextualFragment(txt);
-		
-		while (over.hasChildNodes()) {
-			over.removeChild(over.lastChild);
-		}
-		
-		over.appendChild(domfrag);
-	}
-}
-
-// Make an object visible
-function showObject(obj) {
-	runHook("showObject", FBEFORE);
-
-	var theObj=(olNs4 ? obj : obj.style);
-	theObj.visibility = 'visible';
-
-	runHook("showObject", FAFTER);
-}
-
-// Hides an object
-function hideObject(obj) {
-	runHook("hideObject", FBEFORE);
-
-	var theObj=(olNs4 ? obj : obj.style);
-	if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; }
-	theObj.visibility = 'hidden';
-	theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
-
-	if (o3_timerid > 0) clearTimeout(o3_timerid);
-	if (o3_delayid > 0) clearTimeout(o3_delayid);
-
-	o3_timerid = 0;
-	o3_delayid = 0;
-	self.status = "";
-
-	if (obj.onmouseout||obj.onmouseover) {
-		if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER);
-		obj.onmouseout = obj.onmouseover = null;
-	}
-
-	runHook("hideObject", FAFTER);
-}
-
-// Move a layer
-function repositionTo(obj, xL, yL) {
-	var theObj=(olNs4 ? obj : obj.style);
-	theObj.left = xL + (!olNs4 ? 'px' : 0);
-	theObj.top = yL + (!olNs4 ? 'px' : 0);
-}
-
-// Check position of cursor relative to overDiv DIVision; mouseOut function
-function cursorOff() {
-	var left = parseInt(over.style.left);
-	var top = parseInt(over.style.top);
-	var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width));
-	var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight);
-
-	if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true;
-
-	return false;
-}
-
-
-////////
-// COMMAND FUNCTIONS
-////////
-
-// Calls callme or the default function.
-function opt_FUNCTION(callme) {
-	o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function'));
-
-	return 0;
-}
-
-// Handle hovering
-function opt_NOCLOSE(unused) {
-	if (!unused) o3_close = "";
-
-	if (olNs4) {
-		over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER);
-		over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } }
-		over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); }
-	} else {
-		over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } }
-	}
-
-	return 0;
-}
-
-// Function to scan command line arguments for multiples
-function opt_MULTIPLEARGS(i, args, parameter) {
-  var k=i, re, pV, str='';
-
-  for(k=i; k<args.length; k++) {
-		if(typeof args[k] == 'number' && args[k]>pmStart) break;
-		str += args[k] + ',';
-	}
-	if (str) str = str.substring(0,--str.length);
-
-	k--;  // reduce by one so the for loop this is in works correctly
-	pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str;
-	eval(parameter + '="' + pV + '"');
-
-	return k;
-}
-
-// Remove &nbsp; in texts when done.
-function nbspCleanup() {
-	if (o3_wrap) {
-		o3_text = o3_text.replace(/\&nbsp;/g, ' ');
-		o3_cap = o3_cap.replace(/\&nbsp;/g, ' ');
-	}
-}
-
-// Escape embedded single quotes in text strings
-function escSglQuote(str) {
-  return str.toString().replace(/'/g,"\\'");
-}
-
-// Onload handler for window onload event
-function OLonLoad_handler(e) {
-	var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i;
-
-	if(!olLoaded) olLoaded=1;
-
-  // Remove it for Gecko based browsers
-	if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false);
-	else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick()
-		window.detachEvent("onload",OLonLoad_handler);
-		var fN = document.body.getAttribute('onload');
-		if (fN) {
-			fN=fN.toString().match(re);
-			if (fN && fN.length) {
-				for (i=0; i<fN.length; i++) {
-					if (/anonymous/.test(fN[i])) continue;
-					while((l=fN[i].search(/\)[;\s]+/)) != -1) {
-						fn=fN[i].substring(0,l+1);
-						fN[i] = fN[i].substring(l+2);
-						if (olre.test(fn)) eval(fn);
-					}
-				}
-			}
-		}
-	}
-}
-
-// Wraps strings in Layer Generation Functions with the correct tags
-//    endWrap true(if end tag) or false if start tag
-//    fontSizeStr - font size string such as '1' or '10px'
-//    whichString is being wrapped -- 'text', 'caption', or 'close'
-function wrapStr(endWrap,fontSizeStr,whichString) {
-	var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(fontSizeStr);
-	fontSizeStr = (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr;
-	if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : '</div>') : '</font>';
-	else {
-		fontStr='o3_'+whichString+'font';
-		fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color';
-		return (hasDims&&!olNs4) ? (isClose ? '<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">' : '<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">') : '<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7 ? '7' : fontSizeStr)+'">';
-	}
-}
-
-// Quotes Multi word font names; needed for CSS Standards adherence in font-family
-function quoteMultiNameFonts(theFont) {
-	var v, pM=theFont.split(',');
-	for (var i=0; i<pM.length; i++) {
-		v=pM[i];
-		v=v.replace(/^\s+/,'').replace(/\s+$/,'');
-		if(/\s/.test(v) && !/['"]/.test(v)) {
-			v="\'"+v+"\'";
-			pM[i]=v;
-		}
-	}
-	return pM.join();
-}
-
-// dummy function which will be overridden 
-function isExclusive(args) {
-	return false;
-}
-
-// Sets cellpadding style string value
-function setCellPadStr(parameter) {
-	var Str='', j=0, ary = new Array(), top, bottom, left, right;
-
-	Str+='padding: ';
-	ary=parameter.replace(/\s+/g,'').split(',');
-
-	switch(ary.length) {
-		case 2:
-			top=bottom=ary[j];
-			left=right=ary[++j];
-			break;
-		case 3:
-			top=ary[j];
-			left=right=ary[++j];
-			bottom=ary[++j];
-			break;
-		case 4:
-			top=ary[j];
-			right=ary[++j];
-			bottom=ary[++j];
-			left=ary[++j];
-			break;
-	}
-
-	Str+= ((ary.length==1) ? ary[0] + 'px;' : top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px;');
-
-	return Str;
-}
-
-// function will delay close by time milliseconds
-function hideDelay(time) {
-	if (time&&!o3_delay) {
-		if (o3_timerid > 0) clearTimeout(o3_timerid);
-
-		o3_timerid=setTimeout("cClick()",(o3_timeout=time));
-	}
-}
-
-// Was originally in the placeLayer() routine; separated out for future ease
-function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) {
-	var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount;
-	var parsedWidth = parseInt(o3_width);
-
-	if (o3_fixx > -1 || o3_relx != null) {
-		// Fixed position
-		placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx);
-	} else {  
-		// If HAUTO, decide what to use.
-		if (o3_hauto == 1) {
-			if ((o3_x - winoffset) > (iwidth / 2)) {
-				o3_hpos = LEFT;
-			} else {
-				o3_hpos = RIGHT;
-			}
-		}  		
-
-		// From mouse
-		if (o3_hpos == CENTER) { // Center
-			placeX = o3_x+o3_offsetx-(parsedWidth/2);
-
-			if (placeX < winoffset) placeX = winoffset;
-		}
-
-		if (o3_hpos == RIGHT) { // Right
-			placeX = o3_x+o3_offsetx;
-
-			if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) {
-				placeX = iwidth+winoffset - parsedWidth - widthFix;
-				if (placeX < 0) placeX = 0;
-			}
-		}
-		if (o3_hpos == LEFT) { // Left
-			placeX = o3_x-o3_offsetx-parsedWidth;
-			if (placeX < winoffset) placeX = winoffset;
-		}  	
-
-		// Snapping!
-		if (o3_snapx > 1) {
-			var snapping = placeX % o3_snapx;
-
-			if (o3_hpos == LEFT) {
-				placeX = placeX - (o3_snapx+snapping);
-			} else {
-				// CENTER and RIGHT
-				placeX = placeX+(o3_snapx - snapping);
-			}
-
-			if (placeX < winoffset) placeX = winoffset;
-		}
-	}	
-
-	return placeX;
-}
-
-// was originally in the placeLayer() routine; separated out for future ease
-function verticalPlacement(browserHeight,verticalScrollAmount) {
-	var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount;
-	var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight));
-
-	if (o3_fixy > -1 || o3_rely != null) {
-		// Fixed position
-		placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy);
-	} else {
-		// If VAUTO, decide what to use.
-		if (o3_vauto == 1) {
-			if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) {
-				o3_vpos = ABOVE;
-			} else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) {
-				o3_vpos = BELOW;
-			}
-		}
-
-		// From mouse
-		if (o3_vpos == ABOVE) {
-			if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; 
-
-			placeY = o3_y - (o3_aboveheight+o3_offsety);
-			if (placeY < scrolloffset) placeY = scrolloffset;
-		} else {
-			// BELOW
-			placeY = o3_y+o3_offsety;
-		} 
-
-		// Snapping!
-		if (o3_snapy > 1) {
-			var snapping = placeY % o3_snapy;  			
-
-			if (o3_aboveheight > 0 && o3_vpos == ABOVE) {
-				placeY = placeY - (o3_snapy+snapping);
-			} else {
-				placeY = placeY+(o3_snapy - snapping);
-			} 			
-
-			if (placeY < scrolloffset) placeY = scrolloffset;
-		}
-	}
-
-	return placeY;
-}
-
-// checks positioning flags
-function checkPositionFlags() {
-	if (olHautoFlag) olHautoFlag = o3_hauto=0;
-	if (olVautoFlag) olVautoFlag = o3_vauto=0;
-	return true;
-}
-
-// get Browser window width
-function windowWidth() {
-	var w;
-	if (o3_frame.innerWidth) w=o3_frame.innerWidth;
-	else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) 
-		w=eval('o3_frame.'+docRoot+'.clientWidth');
-	return w;			
-}
-
-// create the div container for popup content if it doesn't exist
-function createDivContainer(id,frm,zValue) {
-	id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000);
-	var objRef, divContainer = layerReference(id);
-
-	if (divContainer == null) {
-		if (olNs4) {
-			divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm);
-			objRef = divContainer;
-		} else {
-			var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]);
-			if (olIe4&&!document.getElementById) {
-				body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');
-				divContainer=layerReference(id);
-			} else {
-				divContainer = frm.document.createElement("DIV");
-				divContainer.id = id;
-				body.appendChild(divContainer);
-			}
-			objRef = divContainer.style;
-		}
-
-		objRef.position = 'absolute';
-		objRef.visibility = 'hidden';
-		objRef.zIndex = zValue;
-		if (olIe4&&!olOp) objRef.left = objRef.top = '0px';
-		else objRef.left = objRef.top =  -10000 + (!olNs4 ? 'px' : 0);
-	}
-
-	return divContainer;
-}
-
-// get reference to a layer with ID=id
-function layerReference(id) {
-	return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id)));
-}
-////////
-//  UTILITY FUNCTIONS
-////////
-
-// Checks if something is a function.
-function isFunction(fnRef) {
-	var rtn = true;
-
-	if (typeof fnRef == 'object') {
-		for (var i = 0; i < fnRef.length; i++) {
-			if (typeof fnRef[i]=='function') continue;
-			rtn = false;
-			break;
-		}
-	} else if (typeof fnRef != 'function') {
-		rtn = false;
-	}
-	
-	return rtn;
-}
-
-// Converts an array into an argument string for use in eval.
-function argToString(array, strtInd, argName) {
-	var jS = strtInd, aS = '', ar = array;
-	argName=(argName ? argName : 'ar');
-	
-	if (ar.length > jS) {
-		for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], ';
-		aS = aS.substring(0, aS.length-2);
-	}
-	
-	return aS;
-}
-
-// Places a hook in the correct position in a hook point.
-function reOrder(hookPt, fnRef, order) {
-	var newPt = new Array(), match, i, j;
-
-	if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt;
-	
-	if (typeof order=='function') {
-		if (typeof fnRef=='object') {
-			newPt = newPt.concat(fnRef);
-		} else {
-			newPt[newPt.length++]=fnRef;
-		}
-		
-		for (i = 0; i < hookPt.length; i++) {
-			match = false;
-			if (typeof fnRef == 'function' && hookPt[i] == fnRef) {
-				continue;
-			} else {
-				for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) {
-					match = true;
-					break;
-				}
-			}
-			if (!match) newPt[newPt.length++] = hookPt[i];
-		}
-
-		newPt[newPt.length++] = order;
-
-	} else if (typeof order == 'object') {
-		if (typeof fnRef == 'object') {
-			newPt = newPt.concat(fnRef);
-		} else {
-			newPt[newPt.length++] = fnRef;
-		}
-		
-		for (j = 0; j < hookPt.length; j++) {
-			match = false;
-			if (typeof fnRef == 'function' && hookPt[j] == fnRef) {
-				continue;
-			} else {
-				for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) {
-					match = true;
-					break;
-				}
-			}
-			if (!match) newPt[newPt.length++]=hookPt[j];
-		}
-
-		for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i];
-		newPt.length = 0;
-		
-		for (j = 0; j < hookPt.length; j++) {
-			match = false;
-			for (i = 0; i < order.length; i++) {
-				if (hookPt[j] == order[i]) {
-					match = true;
-					break;
-				}
-			}
-			if (!match) newPt[newPt.length++] = hookPt[j];
-		}
-		newPt = newPt.concat(order);
-	}
-
-	hookPt = newPt;
-
-	return hookPt;
-}
-
-////////
-//  PLUGIN ACTIVATION FUNCTIONS
-////////
-
-// Runs plugin functions to set runtime variables.
-function setRunTimeVariables(){
-	if (typeof runTime != 'undefined' && runTime.length) {
-		for (var k = 0; k < runTime.length; k++) {
-			runTime[k]();
-		}
-	}
-}
-
-// Runs plugin functions to parse commands.
-function parseCmdLine(pf, i, args) {
-	if (typeof cmdLine != 'undefined' && cmdLine.length) { 
-		for (var k = 0; k < cmdLine.length; k++) { 
-			var j = cmdLine[k](pf, i, args);
-			if (j >- 1) {
-				i = j;
-				break;
-			}
-		}
-	}
-
-	return i;
-}
-
-// Runs plugin functions to do things after parse.
-function postParseChecks(pf,args){
-	if (typeof postParse != 'undefined' && postParse.length) {
-		for (var k = 0; k < postParse.length; k++) {
-			if (postParse[k](pf,args)) continue;
-			return false;  // end now since have an error
-		}
-	}
-	return true;
-}
-
-
-////////
-//  PLUGIN REGISTRATION FUNCTIONS
-////////
-
-// Registers commands and creates constants.
-function registerCommands(cmdStr) {
-	if (typeof cmdStr!='string') return;
-
-	var pM = cmdStr.split(',');
-	pms = pms.concat(pM);
-
-	for (var i = 0; i< pM.length; i++) {
-		eval(pM[i].toUpperCase()+'='+pmCount++);
-	}
-}
-
-// Registers no-parameter commands
-function registerNoParameterCommands(cmdStr) {
-	if (!cmdStr && typeof cmdStr != 'string') return;
-	pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr;
-}
-
-// Register a function to hook at a certain point.
-function registerHook(fnHookTo, fnRef, hookType, optPm) {
-	var hookPt, last = typeof optPm;
-	
-	if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return;
-	if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference();
-
-	hookPt = hookPts[fnHookTo];
-
-	if (hookType != null) {
-		if (hookType == FREPLACE) {
-			hookPt.ovload = fnRef;  // replace normal overlib routine
-			if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; 
-
-		} else if (hookType == FBEFORE || hookType == FAFTER) {
-			var hookPt=(hookType == 1 ? hookPt.before : hookPt.after);
-
-			if (typeof fnRef == 'object') {
-				hookPt = hookPt.concat(fnRef);
-			} else {
-				hookPt[hookPt.length++] = fnRef;
-			}
-
-			if (optPm) hookPt = reOrder(hookPt, fnRef, optPm);
-
-		} else if (hookType == FALTERNATE) {
-			if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef;
-		} else if (hookType == FCHAIN) {
-			hookPt = hookPt.chain; 
-			if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions 
-			else hookPt[hookPt.length++]=fnRef;
-		}
-
-		return;
-	}
-}
-
-// Register a function that will set runtime variables.
-function registerRunTimeFunction(fn) {
-	if (isFunction(fn)) {
-		if (typeof fn == 'object') {
-			runTime = runTime.concat(fn);
-		} else {
-			runTime[runTime.length++] = fn;
-		}
-	}
-}
-
-// Register a function that will handle command parsing.
-function registerCmdLineFunction(fn){
-	if (isFunction(fn)) {
-		if (typeof fn == 'object') {
-			cmdLine = cmdLine.concat(fn);
-		} else {
-			cmdLine[cmdLine.length++] = fn;
-		}
-	}
-}
-
-// Register a function that does things after command parsing. 
-function registerPostParseFunction(fn){
-	if (isFunction(fn)) {
-		if (typeof fn == 'object') {
-			postParse = postParse.concat(fn);
-		} else {
-			postParse[postParse.length++] = fn;
-		}
-	}
-}
-
-////////
-//  PLUGIN REGISTRATION FUNCTIONS
-////////
-
-// Runs any hooks registered.
-function runHook(fnHookTo, hookType) {
-	var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments;
-
-	if (hookType == FREPLACE) {
-		arS = argToString(ar, 2);
-
-		if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')');
-		else rtnVal = eval('l('+arS+')');
-
-	} else if (hookType == FBEFORE || hookType == FAFTER) {
-		if (typeof l != 'undefined') {
-			l=(hookType == 1 ? l.before : l.after);
-	
-			if (l.length) {
-				arS = argToString(ar, 2);
-				for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')');
-			}
-		}
-	} else if (hookType == FALTERNATE) {
-		optPm = ar[2];
-		arS = argToString(ar, 3);
-
-		if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') {
-			rtnVal = eval(fnHookTo+'('+arS+')');
-		} else {
-			rtnVal = eval('l('+arS+')');
-		}
-	} else if (hookType == FCHAIN) {
-		arS=argToString(ar,2);
-		l=l.chain;
-
-		for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break;
-	}
-
-	return rtnVal;
-}
-
-////////
-// OBJECT CONSTRUCTORS
-////////
-
-// Object for handling hooks.
-function FunctionReference() {
-	this.ovload = null;
-	this.before = new Array();
-	this.after = new Array();
-	this.alt = new Array();
-	this.chain = new Array();
-}
-
-// Object for simple access to the overLIB version used.
-// Examples: simpleversion:351 major:3 minor:5 revision:1
-function Info(version, prerelease) {
-	this.version = version;
-	this.prerelease = prerelease;
-
-	this.simpleversion = Math.round(this.version*100);
-	this.major = parseInt(this.simpleversion / 100);
-	this.minor = parseInt(this.simpleversion / 10) - this.major * 10;
-	this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10;
-	this.meets = meets;
-}
-
-// checks for Core Version required
-function meets(reqdVersion) {
-	return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion));
-}
-
-
-////////
-// STANDARD REGISTRATIONS
-////////
-registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF);
-registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF);
-registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF);
-registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS);
-registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS);
-registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS);
-registerPostParseFunction(checkPositionFlags);
-registerHook("hideObject", nbspCleanup, FAFTER);
-registerHook("horizontalPlacement", horizontalPlacement, FCHAIN);
-registerHook("verticalPlacement", verticalPlacement, FCHAIN);
-if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1;
-registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
-///////
-// ESTABLISH MOUSECAPTURING
-///////
-
-// Capture events, alt. diffuses the overlib function.
-var olCheckMouseCapture=true;
-if ((olNs4 || olNs6 || olIe4)) {
-	olMouseCapture();
-} else {
-	overlib = no_overlib;
-	nd = no_overlib;
-	ver3fix = true;
-}
--- a/Admin/website/js/world_map_data.js	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-var world_data = [];
-var i = 0;
-
-world_data[i++] = ['Xiaoqi Ma', CAPTION, 'University of Reading', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.cl.cam.ac.uk/users/lcp/\'>Larry Paulson</a>, <a href=\'http://www.cl.cam.ac.uk/~tjr22\'>Tom Ridge</a> et al.', CAPTION, 'University of Cambridge', STICKY, NOCLOSE];
-world_data[i++] = ['Sara Kalvala', CAPTION, 'University of Warwick', STICKY, NOCLOSE];
-world_data[i++] = ['Paqui Lucio', CAPTION, 'Basque Country University', STICKY, NOCLOSE];
-world_data[i++] = ['Pierre Cast&eacute;ran', CAPTION, 'Universit&eacute; Bordeaux', STICKY, NOCLOSE];
-world_data[i++] = ['Achim D. Brucker, Burkhart Wolff: <b><a href=\'http://www.brucker.ch/projects/hol-ocl/index.en.html\'>HOL-OCL</a></b>, <b><a href=\'http://www.brucker.ch/projects/hol-testgen/index.en.html\'>HOL-TestGen</a></b>, <b><a href=\'http://abacus.informatik.uni-freiburg.de/holz/index.html\'>HOL-Z</a></b>, <b><a href=\'http://www.brucker.ch/projects/isamorph/\'>IsaMorph</a></b><br>J&uuml;rgen Doser: <b><a href=\'http://www.infsec.ethz.ch/people/doserj/mds\'>Model-Driven Security with Secure UML</a></b><br>Christoph Sprenger: <b><a href=\'http://www.zisc.ethz.ch/research/securityprotocolproofs\'>Cryptographically Faithful Proofs of Security Protocols</a></b>', CAPTION, 'ETH Z&uuml;rich', STICKY, NOCLOSE];
-world_data[i++] = ['Walther Neuper: <b>ISAC</b>', CAPTION, 'Graz University of Technology', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www4.informatik.tu-muenchen.de/~nipkow/\'>Tobias Nipkow</a> et al.', CAPTION, 'Technische Universit&auml;t M&uuml;nchen', STICKY, NOCLOSE];
-world_data[i++] = ['Harald Hiss', CAPTION, 'Albert-Ludwigs-Universit&auml;t Freiburg', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.loria.fr/~merz/\'>Stephan Merz</a> et al.', CAPTION, 'LORIA', STICKY, NOCLOSE];
-world_data[i++] = ['Peter Lammich', CAPTION, 'Institut f&uuml;r Informatik, Universit&auml;t M&uuml;nster', STICKY, NOCLOSE];
-world_data[i++] = ['Till Mossakowski: <b>Heterogeneous Tool Set</b>', CAPTION, 'University of Bremen, DFKI Lab Bremen', STICKY, NOCLOSE];
-world_data[i++] = ['J&oslash;rgen Villadsen', CAPTION, 'Technical University of Denmark', STICKY, NOCLOSE];
-world_data[i++] = ['See the zoomed in section of the map for details.', CAPTION, 'Europe', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://users.rsise.anu.edu.au/~jeremy/\'>Jeremy Dawson</a>, <a href="http://users.rsise.anu.edu.au/~jiameng/">Jia Meng</a>, <a href=\'http://users.rsise.anu.edu.au/~michaeln/\'>Michael Norrish</a>', CAPTION, 'ANU, NICTA', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.cse.unsw.edu.au/~kleing/\'>Gerwin Klein</a> et al.: <b>L4.verified</b>', CAPTION, 'NICTA, UNSW', STICKY, NOCLOSE];
-world_data[i++] = ['Kamal Kant Gupta', CAPTION, 'IIT Guwahati', STICKY, NOCLOSE];
-world_data[i++] = ['Yasuhiko Minamide', CAPTION, 'University of Tsukuba', STICKY, NOCLOSE];
-world_data[i++] = ['Gang Yu: <b>Formalizing Lambda-Calculus and Virtual Machine with Non-Local Control Operators</b>', CAPTION, 'Institute of Software, Beijing', STICKY, NOCLOSE];
-world_data[i++] = ['John Matthews', CAPTION, 'Galois Connections', STICKY, NOCLOSE];
-world_data[i++] = ['Slawomir Kolodynski: <b>IsarMathLib</b>', CAPTION, 'Newark, CA', STICKY, NOCLOSE];
-world_data[i++] = ['Robert Lamar', CAPTION, 'Stetson University', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.andrew.cmu.edu/~avigad/isabelle/\'>Jeremy Avigad</a>, <a href=\'http://www.cs.cmu.edu/~seanmcl/research\'>Sean McLaughlin</a>', CAPTION, 'Carnegie Mellon University', STICKY, NOCLOSE];
-world_data[i++] = ['Elsa L. Gunter', CAPTION, 'University of Illinois, Urbana-Champaign', STICKY, NOCLOSE];
-world_data[i++] = ['Sidi O Ehmety', CAPTION, 'University of Nouakchott', STICKY, NOCLOSE];
-world_data[i++] = ['Wolfgang Paul et al.', CAPTION, 'Saarland University', STICKY, NOCLOSE];
-world_data[i++] = ['Daniel Wasserrab: <b>CoreC++</b>', CAPTION, 'Universit&auml;t Passau', STICKY, NOCLOSE];
-world_data[i++] = ['David Aspinall: <b><a href=\'http://proofgeneral.inf.ed.ac.uk/\'>Proof General</a></b><br>Lucas Dixon: <b><a href=\'http://isaplanner.sourceforge.net/\'>IsaPlanner</a></b><br>Jacques Fleuriot: <b>HOL-Hyperreal</b>', CAPTION, 'University of Edinburgh, School of Informatics', STICKY, NOCLOSE];
-world_data[i++] = ['J. Dalinger, L. Petrova', CAPTION, 'Khabarovsk State University of Technology', STICKY, NOCLOSE];
-world_data[i++] = ['Viktor Kuncak: <b>Jahob</b>', CAPTION, 'Massachusetts Institute of Technology', STICKY, NOCLOSE];
-world_data[i++] = ['Dave MacQueen', CAPTION, 'University of Chicago', STICKY, NOCLOSE];
-world_data[i++] = ['Jes&uacute;s Aranzay', CAPTION, 'Universidad de La Rioja', STICKY, NOCLOSE];
-
-function world_click(i) {
-    var entry = world_data[i];
-    return overlib(entry[0], entry[1], entry[2], entry[3], entry[4]);
-}
--- a/Admin/website/logics.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Logics</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-      <h2>Isabelle's Logics</h2>
-      <p>Isabelle can be viewed from two main
-      perspectives. On the one hand it may serve as a generic framework for rapid
-      prototyping of deductive systems. On the other hand, major existing logics
-      like <a href="#isabelle_hol"><em>Isabelle/HOL</em></a>
-      provide a theorem proving environment
-      ready to use for sizable applications.</p>    
-      
-      <p>The Isabelle distribution includes a large body of
-      object logics and other examples (see the <a href=
-      "//dist/library/index.html">Isabelle theory library</a>).</p>
-    
-      <dl>
-        <dt id="isabelle_hol"><a
-        href="//dist/library/HOL/index.html">Isabelle/HOL</a></dt>
-        <dd>is a version of classical higher-order logic resembling
-        that of the <a
-        href="http://www.cl.cam.ac.uk/Research/HVG/HOL/">HOL
-        System</a>.</dd>
-    
-        <dt><a href=
-        "//dist/library/HOLCF/index.html">Isabelle/HOLCF</a></dt>
-        <dd>adds Scott's Logic for Computable Functions (domain theory) to
-        HOL.</dd>
-    
-        <dt><a href="//dist/library/FOL/index.html">Isabelle/FOL</a></dt>
-        <dd>provides basic classical and intuitionistic first-order logic. It is
-        polymorphic.</dd>
-    
-        <dt><a href="//dist/library/ZF/index.html">Isabelle/ZF</a></dt>
-            <dd>offers a formulation of Zermelo-Fraenkel set theory on top of FOL.</dd>
-      </dl>
-
-      <p><em>Isabelle/HOL</em> is currently the best developed object logic, including an
-      extensive library of (concrete) mathematics, and various packages for
-      advanced definitional concepts like (co-)inductive sets and types,
-      well-founded recursion etc. The distribution also includes some large
-      applications, for example correctness proofs of cryptographic protocols
-      (<a href="//dist/library/HOL/Auth/index.html">HOL/Auth</a>) or communication
-      protocols (<a href="//dist/library/HOLCF/IOA/index.html">HOLCF/IOA</a>).</p>
-    
-      <p><em>Isabelle/ZF</em> provides another starting point for applications, with a
-      slightly less developed library. Its definitional packages are similar to
-      those of Isabelle/HOL. Untyped ZF provides more advanced constructions for
-      sets than simply-typed HOL.</p>
-    
-      <p>There are a few minor object logics that may serve as further examples:
-      <a href="//dist/library/CTT/index.html">CTT</a> is an extensional version of
-      Martin-L&ouml;f's Type Theory, <a href="//dist/library/Cube/index.html">Cube</a> is
-      Barendregt's Lambda Cube. There are also some sequent calculus examples under
-      <a href="//dist/library/Sequents/index.html">Sequents</a>, including modal and
-      linear logics. Again see the <a href="//dist/library/index.html">Isabelle theory
-      library</a> for other examples.</p>
-    
-      <h2>Defining Logics</h2>
-
-      <p>Logics are not hard-wired into Isabelle, but
-      formulated within Isabelle's meta logic: <em>Isabelle/Pure</em>.
-      There are quite a lot of syntactic and deductive tools available in generic
-      Isabelle. Thus defining new logics or extending existing ones basically works
-      as follows:</p>
-    
-      <ol>
-        <li>declare concrete syntax (via mixfix grammar and syntax macros)</li>
-        <li>declare abstract syntax (as higher-order constants)</li>
-        <li>declare inference rules (as meta-logical propositions)</li>
-        <li>instantiate generic automatic proof tools (simplifier, classical
-        tableau prover etc.)</li>
-        <li>manually code special proof procedures (via tacticals or hand-written
-        ML)</li>
-      </ol>
-      
-      <p>The first three steps above are fully declarative and involve no ML
-      programming at all. Thus one already gets a decent deductive environment
-      based on primitive inferences (by employing the built-in mechanisms of
-      <em>Isabelle/Pure</em>, in particular higher-order unification and resolution). For
-      sizable applications some degree of automated reasoning is essential.
-      Instantiating existing tools like the classical tableau prover involves only
-      minimal ML-based setup. One may also write arbitrary proof procedures or even
-      theory extension packages in ML, without breaking system soundness (Isabelle
-      follows the well-known <em>LCF system approach</em> to achieve a secure
-      system).</p>
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/makefile	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# isaweb makefile
-# $Id$
-
-# just delegate
-include build/main.mak
Binary file Admin/website/media/pg_preview.pdf has changed
Binary file Admin/website/misc/isabelle_droplet.dmg has changed
--- a/Admin/website/overview.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Overview</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-
-      <h2>What is Isabelle?</h2> 
-      <p>
-      Isabelle is a generic proof assistant. It allows mathematical
-      formulas to be expressed in a formal language and provides tools
-      for proving those formulas in a logical calculus.  The main
-      application is the formalization of mathematical proofs and in
-      particular <em>formal verification</em>, which includes proving
-      the correctness of computer hardware or software and proving
-      properties of computer languages and protocols.</p>
-    
-      <p>Compared with similar tools, Isabelle's distinguishing feature is its
-      flexibility. Most proof assistants are built around a single formal calculus,
-      typically higher-order logic. Isabelle has the capacity to accept a variety
-      of formal calculi. The distributed version supports higher-order logic but
-      also axiomatic set theory and several other formalisms. See
-      <a href="logics.html">logics</a> for more details.</p>
-
-      <p>Isabelle is a joint project between Lawrence C. Paulson
-      (University of Cambridge, UK) and Tobias Nipkow (Technical
-      University of Munich, Germany).</p>
-
-      <p>Isabelle is distributed <em>freely</em> as Open Source
-      Software <!--a href="//dist/Isabelle/COPYRIGHT"-->BSD
-      license<!--/a-->; see the <a
-      href="installation.html">installation instructions</a>.</p>
-
-      <h2>Preview of Isabelle</h2>
-
-        <a href="//media/pg_preview.mov">
-            <img class="left" src="//img/screenshot_isabelle_pg.png" alt="Isabelle Screenshot"
-                width="250" height="277" />
-        </a>
-
-        <p>Here is a <a href="//media/pg_preview.mov">hyperlinked preview</a> demonstrating
-        Isabelle and ProofGeneral, in <a href="http://www.apple.com/quicktime/download/">QuickTime
-        format</a> and in <a href="//media/pg_preview.pdf">PDF</a>.</p>
-        <br clear="all"/>
-
-      <h2>What Isabelle offers</h2>
-
-      <p>Isabelle provides excellent notational support: new notations
-      can be introduced, using normal mathematical symbols. Proofs can
-      be written in a structured notation based upon traditional proof
-      style, or more straightforwardly as sequences of
-      commands. Definitions and proofs may include TeX source, from
-      which Isabelle can automatically generate typeset documents.</p>
-
-      <p>The main limitation of all such proof systems is that proving
-      theorems requires much effort from an expert user. Isabelle
-      incorporates some tools to improve the user's productivity by
-      automating some parts of the proof process. In particular,
-      Isabelle's <em>classical reasoner</em> can perform long chains
-      of reasoning steps to prove formulas. The <em>simplifier</em>
-      can reason with and about equations. Linear <em>arithmetic</em>
-      facts are proved automatically.</p>
-
-      <p>Isabelle comes with a large theory library of formally
-      verified mathematics, including elementary number theory (for
-      example, Gauss's law of quadratic reciprocity), analysis (basic
-      properties of limits, derivatives and integrals), algebra (up to
-      Sylow's theorem) and set theory (the relative consistency of the
-      Axiom of Choice). Also provided are numerous examples arising
-      from research into formal verification.</p>
-
-      <p>With <em>Isar</em>, Isabelle offers a concise proof formulation language
-      which enables a user to write proof scripts naturally understandable for
-      both humans <em>and</em> computers.</p>
-      
-      <p>Isabelle is closely integrated with the <a href=
-      "http://proofgeneral.inf.ed.ac.uk/">ProofGeneral</a> user interface, which
-      eases the task of writing and maintaining proof scripts.</p>
-
-      <p>Ample <a href="documentation.html">documentation</a> is available
-      about using Isabelle and its inner concepts, including a
-      <a href="http://www4.in.tum.de/~nipkow/LNCS2283/">Tutorial</a> published by
-      Springer-Verlag.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/redirect.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Isabelle</title>
-    <?include file="//include/htmlheader.include.html"?>
-    <meta content="0; URL=http://isabelle.in.tum.de/" http-equiv="refresh" />
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-        <h2>Redirect</h2>
-        <p>Please visit the Isabelle project page at <a shape="rect" href="http://isabelle.in.tum.de/">http://isabelle.in.tum.de/</a>.</p>
-    </div>
-
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/world_map.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>World map</title>
-    <?include file="//include/htmlheader.include.html"?>
-    <script type="text/javascript" src="//js/overlib.js"></script>
-    <script type="text/javascript" src="//js/world_map_data.js"></script>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-    <h2>Isabelle around the world</h2>
-    <div style="text-align: center; padding: 4pt;">
-    <img src="//img/world_map.gif" alt="Isabelle World Map" usemap="#map" />
-    <map name="map">
-        <area shape="rect" alt="" coords="514,315,523,324" nohref="nohref"                                                      onmouseover="return world_click( 0);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="518,309,527,318" href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html"  onmouseover="return world_click( 1);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="510,306,519,315" href="http://go.warwick.ac.uk/kalvala"                               onmouseover="return world_click( 2);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="503,359,512,368" href="http://www.sc.ehu.es/paqui"                                    onmouseover="return world_click( 3);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="513,349,522,358" href="http://www.labri.fr/Perso/~casteran/"                          onmouseover="return world_click( 4);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="556,339,565,348" href="http://www.infsec.ethz.ch/"                                    onmouseover="return world_click( 5);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="586,337,595,346" href="http://www.ist.tugraz.at/projects/isac/"                       onmouseover="return world_click( 6);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="568,330,577,339" href="http://www4.in.tum.de/proj/theoremprov/group.html"             onmouseover="return world_click( 7);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="556,332,565,341" href="http://dbis.informatik.uni-freiburg.de/index.php?person=hiss/" onmouseover="return world_click( 8);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="544,331,553,340" href="http://www.loria.fr/equipes/mosel/"                            onmouseover="return world_click( 9);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="551,313,560,322" href="http://ls5-www.cs.uni-dortmund.de/staff/lammich.html"          onmouseover="return world_click(10);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="555,306,564,315" href="http://www.tzi.de/cofi/hets"                                   onmouseover="return world_click(11);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="570,293,579,302" href="http://www.imm.dtu.dk/~jv"                                     onmouseover="return world_click(12);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="398,62,489,129"  nohref="nohref"                                                      onmouseover="return world_click(13);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="761,318,775,332" href="http://www.ertos.nicta.com.au/research/l4.verified/"           onmouseover="return world_click(14);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="769,313,783,327" href="http://www.ertos.nicta.com.au/research/l4.verified/"           onmouseover="return world_click(15);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="635,144,649,158" href="http://www.iitg.ernet.in/"                                     onmouseover="return world_click(16);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="740,118,754,132" href="http://www.score.cs.tsukuba.ac.jp/~minamide/verification.html" onmouseover="return world_click(17);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="681,107,695,121" nohref="nohref"                                                      onmouseover="return world_click(18);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="150,91,164,105"  href="http://www.csee.ogi.edu/~johnm"                                onmouseover="return world_click(19);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="136,116,150,130" href="http://www.nongnu.org/isarmathlib/"                            onmouseover="return world_click(20);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="220,139,234,153" nohref="nohref"                                                      onmouseover="return world_click(21);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="236,105,250,119" href="http://www.cs.cmu.edu/"                                        onmouseover="return world_click(22);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="213,109,228,124" href="http://www-faculty.cs.uiuc.edu/~egunter/"                      onmouseover="return world_click(23);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="374,167,388,181" href="http://www.univ-nkc.mr/"                                       onmouseover="return world_click(24);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="551,324,561,334" href="http://www.verisoft.de/"                                       onmouseover="return world_click(25);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="575,327,585,337" href="http://www.infosun.fmi.uni-passau.de/st/staff/wasserra/"       onmouseover="return world_click(26);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="506,289,516,299" href="http://www.inf.ed.ac.uk/"                                      onmouseover="return world_click(27);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="710,83,724,97"   href="http://www.khstu.ru/"                                          onmouseover="return world_click(28);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="254,98,268,112"  href="http://www.cag.csail.mit.edu/~vkuncak/projects/jahob/index.html" onmouseover="return world_click(29);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="218,102,232,116" href="http://www.cs.uchicago.edu/people/dbm"                         onmouseover="return world_click(30);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="503,365,512,374" href="https://belenus.unirioja.es/~jearansa/"                        onmouseover="return world_click(31);" onmouseout="return nd();" />
-    </map>
-    </div>
-
-    <p>There is also a <a href="//world_map_large.html">larger version of this map</a>.
-    Contact <a href="mailto:webmaster@isabelle.in.tum.de?subject=Isabelle World Map">webmaster@isabelle.in.tum.de</a>
-    if you want to be added to the map.
-    </p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/world_map_large.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>World map</title>
-    <?include file="//include/htmlheader.include.html"?>
-    <script type="text/javascript" src="//js/overlib.js"></script>
-    <script type="text/javascript" src="//js/world_map_data.js"></script>
-</head>
-
-<body class="main">
-    <img src="//img/world_map_large.gif" alt="Isabelle World Map" usemap="#map" />
-    <map name="map">
-        <area shape="rect" alt="" coords="1321,808,1350,837" nohref="nohref"                                                      onmouseover="return world_click( 0);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1331,794,1360,823" href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html"  onmouseover="return world_click( 1);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1313,785,1342,814" href="http://go.warwick.ac.uk/kalvala"                               onmouseover="return world_click( 2);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1292,923,1321,952" href="http://www.sc.ehu.es/paqui"                                    onmouseover="return world_click( 3);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1319,896,1348,925" href="http://www.labri.fr/Perso/~casteran/"                          onmouseover="return world_click( 4);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1427,869,1456,898" href="http://www.infsec.ethz.ch/"                                    onmouseover="return world_click( 5);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1505,867,1534,896" href="http://www.ist.tugraz.at/projects/isac/"                       onmouseover="return world_click( 6);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1462,847,1491,876" href="http://www4.in.tum.de/proj/theoremprov/group.html"             onmouseover="return world_click( 7);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1425,849,1454,878" href="http://dbis.informatik.uni-freiburg.de/index.php?person=hiss/" onmouseover="return world_click( 8);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1398,849,1427,878" href="http://www.loria.fr/equipes/mosel/"                            onmouseover="return world_click( 9);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1415,802,1444,831" href="http://ls5-www.cs.uni-dortmund.de/staff/lammich.html"          onmouseover="return world_click(10);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1427,783,1456,812" href="http://www.tzi.de/cofi/hets"                                   onmouseover="return world_click(11);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1465,749,1494,778" href="http://www.imm.dtu.dk/~jv"                                     onmouseover="return world_click(12);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1028,158,1260,332" nohref="nohref"                                                      onmouseover="return world_click(13);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1960,816,1999,855" href="http://www.ertos.nicta.com.au/research/l4.verified/"           onmouseover="return world_click(14);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1979,804,2018,843" href="http://www.ertos.nicta.com.au/research/l4.verified/"           onmouseover="return world_click(15);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1634,369,1673,408" href="http://www.iitg.ernet.in/"                                     onmouseover="return world_click(16);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1906,302,1945,341" href="http://www.score.cs.tsukuba.ac.jp/~minamide/verification.html" onmouseover="return world_click(17);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1752,274,1791,313" nohref="nohref"                                                      onmouseover="return world_click(18);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="385,231,424,270"   href="http://www.csee.ogi.edu/~johnm"                                onmouseover="return world_click(19);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="348,297,387,336"   href="http://www.nongnu.org/isarmathlib/"                            onmouseover="return world_click(20);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="564,355,603,394"   nohref="nohref"                                                      onmouseover="return world_click(21);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="607,268,646,307"   href="http://www.cs.cmu.edu/"                                        onmouseover="return world_click(22);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="551,277,590,316"   href="http://www-faculty.cs.uiuc.edu/~egunter/"                        onmouseover="return world_click(23);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="963,426,1002,465"  href="http://www.univ-nkc.mr/"                                         onmouseover="return world_click(24);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="1416,834,1445,863" href="http://www.verisoft.de/"                                         onmouseover="return world_click(25);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="1481,840,1510,869" href="http://www.infosun.fmi.uni-passau.de/st/staff/wasserra/"         onmouseover="return world_click(26);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="1302,742,1331,771" href="http://www.inf.ed.ac.uk/"                                        onmouseover="return world_click(27);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="1828,211,1867,250" href="http://www.khstu.ru/"                                            onmouseover="return world_click(28);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="653,250,692,289"   href="http://www.cag.csail.mit.edu/~vkuncak/projects/jahob/index.html" onmouseover="return world_click(29);" onmouseout="return nd();" />
-	<area shape="rect" alt="" coords="561,261,600,300"   href="http://www.cs.uchicago.edu/people/dbm"                           onmouseover="return world_click(30);" onmouseout="return nd();" />
-        <area shape="rect" alt="" coords="1293,940,1321,968" href="https://belenus.unirioja.es/~jearansa/"                          onmouseover="return world_click(31);" onmouseout="return nd();" />
-
-    </map>
-
-    <p>Back to <a href="//world_map.html">smaller version of this map</a>.
-    Contact <a href="mailto:webertj@in.tum.de?subject=Isabelle World Map">webertj@in.tum.de</a>
-    if you want to be added to the map.
-    </p>
-
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>