build index.html for all winners

Updated manifest as per recent file changes.

Updated winner `.winner.json` to reflect the manifest changes.

Added [bin/all_run.sh](bin/all_run.sh) tool to run a command over
all winning entries.

These tools had slight improvements in the help usage message:

* bin/gen-author.sh VERSION="1.3.1 2024-01-16"
* bin/gen-inventory.sh VERSION="1.0.1 2024-01-16"
* bin/pandoc_wrapper.sh VERSION="1.3.1 2024-01-16"
* bin/subst.default.sh VERSION="1.1.1 2024-01-16"
* bin/subst.winner-index.sh VERSION="1.1.1 2024-01-16"

The `bin/readme2index.sh` tool was improved so that
if the `index.html` file exists and the tool forms
the exact same content, then the file `index.html`
file is NOT touched.

* bin/readme2index.sh VERSION="1.1 2024-01-16"

We used the following command to generate `index.html` files
for all winning entries:

```sh
bin/all_run.sh -v 3 bin/readme2index.sh
```

NOTE: We have not (yet) built HTML files above the winner directory
level (e.g., no year level nor top level HTML), nor have be built
non-index HTML files for winners.

NOTE: By default we are running `pandoc(1)` with:

```
--fail-if-warnings=true
```

This means that any problems with markdown to HTML
generates an error.  This is done to be sure that
the HTML conversion is clean.

We had to fix the following `README.md` files:

* `2000/rince/README.md`

The reference [^2] was never used.  We made a guess that [^2] applies
to the same spot as [^1].  Perhaps there is a better spot where
[^2] applies?

NOTE: For every reference, there MUST be some place where that
reference is used.

* 2012/vik/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

* 2018/burton1/README.md

The reference [2] was duplicated.  We changed the
second [2] to [3].

NOTE: Every reference needs to have a unique number.

* 2020/carlini/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

We also found 2 errors in the `author/author_handle.json` file set:

* author/Anonymous_2001.json

The `author/Anonymous_2001.json` file was missing.

* author/Jari_Arkko.json

The winner ID for `1989_jar.1` had a typo.
This commit is contained in:
Landon Curt Noll committed 2024-01-17 00:32:39 -08:00
1 parent 893cd915b6
commit c1466f5165
350 files changed
+95242 -4217

No files matched your search

+401 -13
View File
@@ -1,4 +1,6 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
@@ -6,27 +8,413 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 1991/brnstnd/index.html created by: fake.gen_index.sh version: 1.0.5 2023-10-31 -->
<html lang="en">
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- This file was formed by the tool: bin/readme2index.sh version: 1.1 2024-01-16 -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>1991 brnstnd</title>
<meta name="description" content="IOCCC year: 1991 IOCCC winner: brnstnd winner index page">
<meta name="keywords" content="IOCCC,1991,brnstnd,winner index page">
<link rel="stylesheet" href="/temp-test-ioccc/ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1991/brnstnd</title>
<meta name="description" content="1991 IOCCC winner brnstnd">
<meta name="keywords" content="IOCCC, 1991, IOCCC 1991, IOCCC winner, brnstnd">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>1991 brnstnd</h1>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<p>XXX - fake content until readme2index is working - XXX</p>
<div class="header">
<img src="/temp-test-ioccc/png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>1991/brnstnd</h2>
</div>
<hr style="width:50%;text-align:left;margin-left:0">
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.mid.html -->
<!-- Start Nu Html Checker -->
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F1991%2Fbrnstnd%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/1991/brnstnd/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../ant/index.html">&larr; ant</a>
<a class="Left" href="../index.html">&uarr; 1991 &uarr;</a>
<a class="Left" href="../buzzard/index.html">buzzard &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.mid.html -->
<!-- START: this line starts content from: inc/begin-row.default.html -->
<div class="row">
<!-- END: this line ends content from: inc/begin-row.default.html -->
<!-- START: this line starts content from: inc/begin-leftcolumn.default.html -->
<div class="leftcolumn">
<!-- END: this line ends content from: inc/begin-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/sidenav.default.html -->
<div class="sidenav">
<a href="#content">Jump to contents</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/index.html">IOCCC Home</a>
<a href="/temp-test-ioccc/years.html">Winning Entries</a>
<a href="/temp-test-ioccc/winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/news.html">IOCCC News</a>
<a href="/temp-test-ioccc/faq.html#submit">How to enter the IOCCC</a>
<a href="/temp-test-ioccc/faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/bugs.html">Bugs &amp; (mis)features</a>
<a href="/temp-test-ioccc/faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="/temp-test-ioccc/faq.html#fix_web_site">Fixing the web site</a>
<a href="/temp-test-ioccc/faq.html#fix_author">Fixing winner info</a>
<a href="/temp-test-ioccc/thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/judges.html">The IOCCC Judges</a>
<a href="/temp-test-ioccc/contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content generated by: bin/gen-author.sh -->
<p><a name="author"><strong>Author:</strong></a> <br><br>Name: <a
href="/temp-test-ioccc/winners.html#Daniel_J_Bernstein">Daniel J.
Bernstein</a><br> Location: <a
href="/temp-test-ioccc/location.html#US">US</a></p>
<!-- END: next line ends content generated by: bin/gen-author.sh -->
<h2 id="to-build">To build:</h2>
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> all</span></code></pre></div>
<h2 id="try">Try:</h2>
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="ex">./sorta</span> <span class="op">&lt;</span> sorta.itailrec</span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>For info on more examples, read the <a
href="sorta.README.md">sorta.README.md</a> file.</p>
<p>The author wished to win the “most useful program” award and
documented this in the source code. The judges were unmoved by this
blatant attempt to influence the contest and rejected this idea… so we
gave it the “Best of Show” instead!!</p>
<p>NOTE: One should remove the final trailing newline to obtain the
original source file. This step is not needed to compile this entry.</p>
<p>To have a chance to compile under a modern CPP, we had to replace
<code>#D</code> with <code>#define</code>.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>This is an interpreter for the programming language SORTA, a systems
and numerical programming language with features sorta from C, sorta
from FORTH, and sorta from Ada.</p>
<p>SORTA lets you manipulate files and spawn programs easily, has
bitwise operators, and gives you absolutely brilliant error messages
like ‘?’ (that’s the C bit). SORTA programs work with a stack (that’s
the FORTH bit)—actually two stacks, one for integers and one for
strings. And all SORTA operations are strongly typed, detect practically
any failure, and garbage-collect (that’s the Ada bit).</p>
<p>SORTA also contains features you might not expect from such a small
interpreter: arbitrary-length string input and concatenation, for
instance, not to mention infinite-depth tail recursion.</p>
<p>SORTA ignores its arguments (though it makes them available to the
script); it takes all commands, character by character, from its
standard input. Unrecognized commands are repeated with a ‘?’.</p>
<p>SORTA maintains an <code>i</code> stack for integers and an
<code>s</code> stack for strings. It also keeps track of
<code>programs</code>, one for each character. Operations are silently
ignored if the relevant stacks are too low, except as noted for
<code>s</code>, <code>S</code>, and <code>!</code>. If the
<code>i</code> stack or <code>s</code> stack (or the stack of buffered
macro commands) grows too high, SORTA will exit silently with exit code
2. (Compile parameter <code>-Do=250</code> controls what ‘too high’
means; you should not make <code>o</code> larger than 250.) I don’t
think it’s possible to crash the interpreter.</p>
<p>Here, then, is the SORTA programming language. All non-digits delimit
numeric constants. Spaces and newlines are ignored except as numeric
delimiters.</p>
<h3 id="basic-operations">Basic operations</h3>
<ul>
<li><code>q</code>: quit</li>
<li><code>number</code>: push that number on top of the <code>i</code>
stack</li>
<li><code>"string"</code>: push that string on top of the <code>s</code>
stack, no length limit</li>
<li><code>[string]</code>: push that string on top of the <code>s</code>
stack, no length limit</li>
<li><code>#</code>: make top of <code>i</code> stack non-destructively
in ASCII, push result onto <code>s</code> stack</li>
<li><code>`</code>: print top of <code>s</code> stack
non-destructively</li>
<li><code>$</code>: print top of <code>s</code> stack non-destructively
without newline</li>
<li><code>d</code>: drop (pop) top of <code>i</code> stack</li>
<li><code>D</code>: dup (duplicate) top of <code>i</code> stack</li>
<li><code>'</code>: dup top of <code>s</code> stack</li>
<li><code>s</code>: pop top of <code>i</code> stack. If it is
<code>n</code>, swap <code>(n+1)</code>th-top of <code>i</code> stack
with top. <code>1s</code>, for example, swaps the top two elements;
<code>2s</code> swaps the top with the third down; etc. This always pops
the top of the <code>i</code> stack, even upon failure.</li>
<li><code>S</code>: pop top of <code>i</code> stack, then act just like
<code>s</code> but upon <code>s</code> stack</li>
<li><code>l</code>: pop top of <code>s</code> stack, push its length
onto <code>i</code> stack</li>
<li><code>a</code>: push argc onto <code>i</code> stack</li>
<li><code>A</code>: pop top of <code>i</code> stack, push
<code>argv[i]</code> on top of <code>s</code> stack</li>
<li><code>T</code>: concatenate top two elements of <code>s</code>
stack</li>
<li><code>_</code>: negate top of <code>i</code> stack</li>
<li><code>+</code>: pop top two elements of <code>i</code> stack, add,
push back sum</li>
<li><code>*</code>: pop top two elements of <code>i</code> stack,
multiply, push back product</li>
<li><code>/</code>: pop top two elements of <code>i</code> stack,
divide, push back quotient</li>
<li><code>&gt;</code>: pop top two elements of <code>i</code> stack,
compare, push back 1 or 0 as in C</li>
<li><code>&amp;</code>: pop top two elements of <code>i</code> stack,
NAND, push back bitwise result Note that NAND is sufficient to construct
all bitwise operations, as demonstrated by <code>icalc</code> in <a
href="sorta.README.md">sorta.README.md</a>.</li>
</ul>
<h3 id="system-operations">System operations</h3>
<ul>
<li><code>o</code>: pop top of <code>s</code> stack and top two of
<code>i</code> stack; <code>open(s1,i2,i1);</code> leave result on
<code>i</code> stack</li>
<li><code>O</code>: pop top of <code>i</code> stack,
<code>close()</code> it</li>
<li><code>u</code>: pop top of <code>i</code> stack, <code>dup()</code>
it, push result back on</li>
<li><code>F</code>: <code>fork()</code>, push result on <code>i</code>
stack. This is not always safe while SORTA is reading keyboard input or
a script, as the forked programs share file descriptors. It is always
safe inside a program (see below).</li>
<li><code>P</code>: <code>pipe()</code>, push two ends
<code>&lt;p0&gt; &lt;p1&gt;</code> onto <code>i</code> stack. In case of
trouble, <code>push &lt;?&gt; &lt;-1&gt;</code> onto <code>i</code>
stack.</li>
<li><code>w</code>: <code>wait()</code>, push successful result (or
<code>-1</code> if no children) on <code>i</code> stack</li>
<li><code>!</code>: <code>execvp()</code> top of the <code>s</code>
stack. Arguments are the next things down on the <code>s</code> stack,
in reverse order from popping; the first character of each string is
lopped off. There must be an empty string somewhere in the
<code>s</code> stack to terminate the argument list. If the
<code>execve()</code> fails, any operation involving current members of
the <code>s</code> stack has undefined effects, and <code>-1</code> is
pushed onto the <code>i</code> stack.</li>
</ul>
<h3 id="high-level-language-operations">High-level language
operations</h3>
<ul>
<li><code>:x</code>: copy the top of the <code>s</code> stack into a
program labeled by character <code>x</code></li>
<li><code>=x</code>: pop the top of the <code>i</code> stack. If it was
nonzero, execute the program labeled by character <code>x</code>. Note
that a digit at the end of a program will merge with any digits after
<code>=x</code>; in that case you usually want to add a space at the end
of the program.</li>
</ul>
<p>Common idioms: To drop the top of the <code>s</code> stack,
<code>ld</code>. To do a <code>&lt;</code>, <code>1s&gt;</code>. To
unconditionally execute the program labeled by character <code>x</code>,
<code>1=x</code> (or any nonzero number followed by <code>=x</code>). To
print the top of the <code>i</code> stack non-destructively,
<code>#</code> (or <code>#$</code> if you don’t want the newline). To
subtract, <code>_+</code>. To do mod or and or any of the other missing
operations, combine the available operations as illustrated below. To
introduce a comment,
<code>[ this is a comment string which is promptly eliminated ]ld</code>.</p>
<p><code>SORTA</code>’s requirements: it wants <code>fork()</code>,
<code>execvp()</code>, <code>open()</code>, <code>close()</code>,
<code>dup()</code>, <code>pipe()</code>, and <code>wait()</code>, so it
obviously won’t even compile on a non-UNIX machine. It also assumes that
you have a size-256 character set and that the characters between
<code>'0'</code> and <code>'9'</code> are exactly the digits in order.
It does <em>not</em> depend on ASCII, despite the code appearance. Also
note that SORTA does not attempt to declare <code>malloc()</code>, so
you will get some warnings about illegal pointer combinations. Also note
that there are unreachable statements in SORTA.</p>
<p>While the program source of course depends highly on
<code>#define</code>s for obfuscation, I like to think that this code
has those little touches, those professionally sharpened edges that mark
true software engineering. Observe, for instance, how <code>i</code> and
<code>s</code> are the string and integer stacks respectively. It’s
these little things that make you feel at home in an otherwise utterly
useless piece of code. They’re what make an obfuscation work.</p>
<p>The character pool (<code>I</code> after cpp) makes it rather painful
to see the effect of commands at a glance. I can just imagine people
spending hours bouncing between the pool and the rest of the code, or
accidentally changing the pool without realizing its importance. Without
documentation and example scripts, someone would find it a challenge to
figure out what the arrays are used for, let alone that SORTA is a
scripting language.</p>
<p>Another nice feature is that the SORTA language itself encourages you
to write not merely obfuscated but plain incomprehensible scripts (like
the <a href="sorta.README.md">examples in sorta.README.md</a> —after
working with the language for a while, I guess I can read it pretty
easily, but I also think FORTH is a beautiful language). The numbers
running around everywhere will make people think of ASCII, even though
the code is not ASCII-dependent. What’s your first thought when you see
several <code>arrays[256]</code>? This is pretty standard obfuscation
otherwise. I like the way that unbalanced macro braces can throw off the
reader in <code>if(c&gt;0){y+1]=z[c];</code>, and I had fun covering the
alphabet with <code>#define</code>s, but that’s nothing special.</p>
<p>Possible future extensions to SORTA include string extraction and
matching, reading from files into strings, and encrypting the string
pool to further confuse the judges. I don’t think I can fit this into
the size limit, unfortunately.</p>
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
License:</h2>
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
Reserved. You are free to share and adapt this file under the terms of
this license:</p>
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
<p>For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- START: this line starts content generated by: bin/gen-inventory.sh -->
<h1 id="inventory-for-1991brnstnd"><a name="inventory"></a>Inventory for
1991/brnstnd</h1>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - winner home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/brnstnd.c">brnstnd.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/brnstnd.orig.c">brnstnd.orig.c</a>
- original source</li>
<li><a href="sorta.README.html">sorta.README.html</a> - SORTA language
infomation</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/try.sh">try.sh</a>
- how to run</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/try.txt">try.txt</a>
- input data for try.sh</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.i2+2">sorta.i2+2</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.iarg0">sorta.iarg0</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.icalc">sorta.icalc</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.idup">sorta.idup</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.iecho">sorta.iecho</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.ifact1">sorta.ifact1</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.ifact2">sorta.ifact2</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.ifact3">sorta.ifact3</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.iio">sorta.iio</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.irot13">sorta.irot13</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.isleep">sorta.isleep</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.itailrec">sorta.itailrec</a>
- SORTA source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.iwhosort">sorta.iwhosort</a>
- SORTA source</li>
<li><a href="1991_brnstnd.tar.bz2">1991_brnstnd.tar.bz2</a> - download
winning source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href=".path">.path</a> - directory path from top directory</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/.winner.json">.winner.json</a>
- description of winner in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/README.md">README.md</a>
- markdown source for index.html</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/brnstnd/sorta.README.md">sorta.README.md</a>
- markdown source for sorta.README.html</li>
</ul>
<!-- END: next line ends content generated by: bin/gen-inventory.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F1991%2Fbrnstnd%2Findex.html">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->