fix markdown issues in 2024/maffiodo, update tarballs and sitemap

This commit is contained in:
Landon Curt Noll committed 2025-08-02 20:18:02 -07:00
1 parent 5148d705d3
commit 8425b83ee9
6 files changed
+77 -71

No files matched your search

BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+25 -21
View File
@@ -34,7 +34,7 @@ Can you write one in the implemented subset of the language?
#### What's this? #### What's this?
Jav*script interpreter with Object, Array, String, Number, Functions and Jav\*script interpreter with Object, Array, String, Number, Functions and
Garbage Collector. Batteries are not included. Garbage Collector. Batteries are not included.
@@ -93,7 +93,7 @@ Included files via Makefile (to reduce number of tokens, lower than 5006/2):
### Features ### Features
Supported and unsupported features (everything else that is not listed is Supported and unsupported features (everything else that is not listed is
probaly unsupported, but who knows...): probably unsupported, but who knows...):
- supported binary operators (in execution priority order from lower to higher); - supported binary operators (in execution priority order from lower to higher);
<pre>, = == != & &= && | |= || > >= >> < <= << - -= + += * \*= / /= % %= [ ( .</pre> <pre>, = == != & &= && | |= || > >= >> < <= << - -= + += * \*= / /= % %= [ ( .</pre>
@@ -171,7 +171,7 @@ probaly unsupported, but who knows...):
- **only** single line comments are supported - **only** single line comments are supported
- multi line comments are not supported. Use only single line comments - multi line comments are not supported. Use only single line comments
- any unary operator on String value will convert String to Number - any unary operator on String value will convert String to Number
- NaN is not implemented so invalid number convertion will generate a 0 Number - NaN is not implemented so invalid number conversion will generate a 0 Number
- division by zero is not handled - division by zero is not handled
- there is no error handling, so if something goes wrong, interpreter will - there is no error handling, so if something goes wrong, interpreter will
crash. If some of the unsupported language features are used, parser will crash. If some of the unsupported language features are used, parser will
@@ -199,9 +199,9 @@ probaly unsupported, but who knows...):
- **length** on String variables (or literal) return the number of characters - **length** on String variables (or literal) return the number of characters
in the string in the string
- there is no slice or splice in String and Array (but these feature can be - there is no slice or splice in String and Array (but these feature can be
partially implemented in plain Javascript -- see **Useful things** chapter) partially implemented in plain JavaScript -- see **Useful things** chapter)
- there is no Date RegEx or Math (but some of Math methods can be implemented - there is no Date RegEx or Math (but some of Math methods can be implemented
in plain Javascript) in plain JavaScript)
- subscript operation like - subscript operation like
``` <!---js--> ``` <!---js-->
@@ -228,15 +228,19 @@ probaly unsupported, but who knows...):
``` ```
but something different will happen when you perform some comparisons: but something different will happen when you perform some comparisons:
* null == 0 will be equal to 1 * null == 0 will be equal to 1
* undefined == 0 will be equal to 1 * undefined == 0 will be equal to 1
* undefined == null will be equal to 0 * undefined == null will be equal to 0
* null == {} will be false (correctly) * null == {} will be false (correctly)
* ... some other edge cases, can you spot them? * ... some other edge cases, can you spot them?
- there is not **typeof** or **instanceof**. You need to know the types of your
- there is no `typeof` nor `instanceof`. You need to know the types of your
variables or track its type inside other data structures. variables or track its type inside other data structures.
- **this** is missing. Inside Function you need to remember *this*
- **function** declaration is supported ONLY inside expression and not as a - `this` is missing. Inside Function you need to remember `this`.
- Function declaration is supported ONLY inside expression and not as a
standalone declarator, so instead of this: standalone declarator, so instead of this:
``` <!---js--> ``` <!---js-->
@@ -249,7 +253,7 @@ probaly unsupported, but who knows...):
var x = function () {}; var x = function () {};
``` ```
and please look at the final semicolon! It is very important beacuse every and please look at the final semicolon! It is very important because every
expression need to terminate with that and without that strange parsing expression need to terminate with that and without that strange parsing
things will happen (also probably some segmentation fault). things will happen (also probably some segmentation fault).
Functions need to be unnamed by itself. Functions need to be unnamed by itself.
@@ -303,10 +307,10 @@ probaly unsupported, but who knows...):
because internally **arguments** array will be re-declared locally, with a because internally **arguments** array will be re-declared locally, with a
stack based approach, for the next function call and can cause some variable stack based approach, for the next function call and can cause some variable
resolving missmatch. This is a little annoying but is also better to always resolving mismatch. This is a little annoying but is also better to always
remap each arguments value to a dedicated local variable. remap each arguments value to a dedicated local variable.
- early exit inside logical expression is not implemented so this code will not - early exit inside logical expression is not implemented so this code will not
be interrupted before the execution of the foo2 function: be interrupted before the execution of the `foo2` function:
``` <!---js--> ``` <!---js-->
if (0 && foo2(123)) { print("hello\n"); } if (0 && foo2(123)) { print("hello\n"); }
@@ -442,11 +446,11 @@ The interpreter uses the same struct to hold values and variables. The same
struct (c) is also used to store a linked list for global variables and a linked struct (c) is also used to store a linked list for global variables and a linked
list for all properties contained inside a variable. list for all properties contained inside a variable.
Using the same struct has been usefull to strip down the code for a lesser number Using the same struct has been useful to strip down the code for a lesser number
of tokens. of tokens.
This is a semi obfuscated struct that holds variables or values (NOTE: obfuscated This is a semi obfuscated struct that holds variables or values (NOTE: obfuscated
symbols can be slightly differents from the final obfuscated ones): symbols can be slightly different from the final obfuscated ones):
``` <!---c--> ``` <!---c-->
typedef struct c*d; typedef struct c*d;
@@ -469,10 +473,10 @@ symbols can be slightly differents from the final obfuscated ones):
``` ```
This struct is huge! It uses 72 bytes on 64bit X86 architecture. This struct is This struct is huge! It uses 72 bytes on 64bit X86 architecture. This struct is
big to fit all the usefull data inside it and also something else that is big to fit all the useful data inside it and also something else that is
needed to compress the code. In theory can be much smaller but the final code needed to compress the code. In theory can be much smaller but the final code
will uses more tokens (I have tried multiple times to implement this interpreter will uses more tokens (I have tried multiple times to implement this interpreter
but this is the only solution that i've found to match the 2503 limitation.. with but this is the only solution that I've found to match the 2503 limitation.. with
the previous limit of 2053 was really hard to stay under the limits -- for me!). the previous limit of 2053 was really hard to stay under the limits -- for me!).
Keep in mind also that on 64bit X86 architecture each pointer cost 8 bytes... Keep in mind also that on 64bit X86 architecture each pointer cost 8 bytes...
@@ -640,7 +644,7 @@ Strange things can happen or can be found when using this interpreter:
- many other unknown strange things can happen in Hawkins, Indiana... - many other unknown strange things can happen in Hawkins, Indiana...
### Usefull Things ### Useful Things
Console prototype is not implemented but console.log can be implemented using Console prototype is not implemented but console.log can be implemented using
only native **print** function. The following is an example of Console only native **print** function. The following is an example of Console
@@ -1146,7 +1150,7 @@ been stripped down in the final (light) obfuscated version of the code*
atmp[0 + 1];", 20); atmp[0 + 1];", 20);
``` ```
Some of these tests has also been ported in plain javascript; take a look inside Some of these tests has also been ported in plain JavaScript; take a look inside
the **verify.js** script. These tests uses **eval()** function to execute a test the **verify.js** script. These tests uses **eval()** function to execute a test
source code string and verify its execution results. These other tests can be source code string and verify its execution results. These other tests can be
executed with this command: executed with this command:
@@ -1181,16 +1185,16 @@ little mambo jumbo interpreter:
### Final Thoughts ### Final Thoughts
I've tried multiple time to rewrite this interpreter and compress the final I've tried multiple time to rewrite this interpreter and compress the final
obfuscated sourcecode to match the previous IOCCC limit but without success. obfuscated source code to match the previous IOCCC limit but without success.
The increased limitation of tokens from 2053 to 2503 has made possible to use The increased limitation of tokens from 2053 to 2503 has made possible to use
this iteration of the interpreter without continue to retry to rewrite that to this iteration of the interpreter without continue to retry to rewrite that to
compress the final sourcecode. Probably with more iterations the 2053 limit compress the final source code. Probably with more iterations the 2053 limit
should be reached, who knows. should be reached, who knows.
The most tricky part in the development process has been to find out a minimal The most tricky part in the development process has been to find out a minimal
barebone subset of Javascript features, small enought to allow to build some bare bones subset of JavaScript features, small enough to allow to build some
other standard features on top of the barebone interpreter. other standard features on top of the bare bones interpreter.
In many tests I've tried to include the Object.keys features (to obtain the In many tests I've tried to include the Object.keys features (to obtain the
list of property keys inside a given Object) but, in all of my attempts, the list of property keys inside a given Object) but, in all of my attempts, the
+37 -35
View File
@@ -25,14 +25,14 @@
<!-- END: this line ends content from: inc/head.default.html --> <!-- END: this line ends content from: inc/head.default.html -->
<!-- --> <!-- -->
<!-- This web page was formed via the tool: bin/readme2index.sh --> <!-- This web page was formed via the tool: unspecified -->
<!-- The content of main section of this web page came from: 2024/maffiodo/README.md --> <!-- The main section of this web page came from JSON and other data files -->
<!-- --> <!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2024/maffiodo/README.md !!! --> <!-- The main section of this web page was generated via the tool: unspecified -->
<!-- !!! Do not modify this web page, instead modify the file: 2024/maffiodo/README.md !!! --> <!-- The main section of this web page was generated via the tool: unspecified -->
<!-- !!! Do not modify this web page, instead modify the file: 2024/maffiodo/README.md !!! --> <!-- The main section of this web page was generated via the tool: unspecified -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh --> <!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
@@ -447,7 +447,7 @@
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2024/maffiodo/prog.c">C code</a> <a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2024/maffiodo/prog.c">C code</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2024/maffiodo/Makefile">Makefile</a> <a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2024/maffiodo/Makefile">Makefile</a>
<a class="Right" href="#inventory">Inventory</a> <a class="Right" href="#inventory">Inventory</a>
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2024%2Fmaffiodo%2Findex.html">&#x2713;</a> <a class="Right" href="https://validator.w3.org/nu/?doc=#">&#x2713;</a>
</div> </div>
<!-- END: this line ends content from: inc/navbar.mid.html --> <!-- END: this line ends content from: inc/navbar.mid.html -->
@@ -533,7 +533,7 @@ declared without a full prototype</li>
</ul> </ul>
<h3 id="features">Features</h3> <h3 id="features">Features</h3>
<p>Supported and unsupported features (everything else that is not listed is <p>Supported and unsupported features (everything else that is not listed is
probaly unsupported, but who knows…):</p> probably unsupported, but who knows…):</p>
<ul> <ul>
<li>supported binary operators (in execution priority order from lower to higher); <li>supported binary operators (in execution priority order from lower to higher);
<pre>, = == != & &= && | |= || > >= >> < <= << - -= + += * \*= / /= % %= [ ( .</pre> <pre>, = == != & &= && | |= || > >= >> < <= << - -= + += * \*= / /= % %= [ ( .</pre>
@@ -603,7 +603,7 @@ statement ends)</li>
<li><strong>only</strong> single line comments are supported</li> <li><strong>only</strong> single line comments are supported</li>
<li>multi line comments are not supported. Use only single line comments</li> <li>multi line comments are not supported. Use only single line comments</li>
<li>any unary operator on String value will convert String to Number</li> <li>any unary operator on String value will convert String to Number</li>
<li>NaN is not implemented so invalid number convertion will generate a 0 Number</li> <li>NaN is not implemented so invalid number conversion will generate a 0 Number</li>
<li>division by zero is not handled</li> <li>division by zero is not handled</li>
<li>there is no error handling, so if something goes wrong, interpreter will <li>there is no error handling, so if something goes wrong, interpreter will
crash. If some of the unsupported language features are used, parser will crash. If some of the unsupported language features are used, parser will
@@ -629,9 +629,9 @@ also true for Array (see <strong>Strange(r) Things</strong> chapter)</li>
<li><strong>length</strong> on String variables (or literal) return the number of characters <li><strong>length</strong> on String variables (or literal) return the number of characters
in the string</li> in the string</li>
<li>there is no slice or splice in String and Array (but these feature can be <li>there is no slice or splice in String and Array (but these feature can be
partially implemented in plain Javascript – see <strong>Useful things</strong> chapter)</li> partially implemented in plain JavaScript – see <strong>Useful things</strong> chapter)</li>
<li>there is no Date RegEx or Math (but some of Math methods can be implemented <li>there is no Date RegEx or Math (but some of Math methods can be implemented
in plain Javascript)</li> in plain JavaScript)</li>
<li>subscript operation like</li> <li>subscript operation like</li>
</ul> </ul>
<pre><code> x[1]</code></pre> <pre><code> x[1]</code></pre>
@@ -646,21 +646,23 @@ value. This is not true in this mini nano tiny puppy ugly interpreter
- null and undefined are not implemented but can be declared like this:</p> - null and undefined are not implemented but can be declared like this:</p>
<pre><code> var null = {}; <pre><code> var null = {};
var undefined = {};</code></pre> var undefined = {};</code></pre>
<p>but something different will happen when you perform some comparisons: <p>but something different will happen when you perform some comparisons:</p>
* null == 0 will be equal to 1 <ul>
* undefined == 0 will be equal to 1 <li><p>null == 0 will be equal to 1</p></li>
* undefined == null will be equal to 0 <li><p>undefined == 0 will be equal to 1</p></li>
* null == {} will be false (correctly) <li><p>undefined == null will be equal to 0</p></li>
* … some other edge cases, can you spot them? <li><p>null == {} will be false (correctly)</p></li>
- there is not <strong>typeof</strong> or <strong>instanceof</strong>. You need to know the types of your <li><p>… some other edge cases, can you spot them?</p></li>
variables or track its type inside other data structures. <li><p>there is no <code>typeof</code> nor <code>instanceof</code>. You need to know the types of your
- <strong>this</strong> is missing. Inside Function you need to remember <em>this</em> variables or track its type inside other data structures.</p></li>
- <strong>function</strong> declaration is supported ONLY inside expression and not as a <li><p><code>this</code> is missing. Inside Function you need to remember <code>this</code>.</p></li>
standalone declarator, so instead of this:</p> <li><p>Function declaration is supported ONLY inside expression and not as a
standalone declarator, so instead of this:</p></li>
</ul>
<pre><code> function x() {}</code></pre> <pre><code> function x() {}</code></pre>
<p>write this:</p> <p>write this:</p>
<pre><code> var x = function () {};</code></pre> <pre><code> var x = function () {};</code></pre>
<p>and please look at the final semicolon! It is very important beacuse every <p>and please look at the final semicolon! It is very important because every
expression need to terminate with that and without that strange parsing expression need to terminate with that and without that strange parsing
things will happen (also probably some segmentation fault). things will happen (also probably some segmentation fault).
Functions need to be unnamed by itself. Functions need to be unnamed by itself.
@@ -696,10 +698,10 @@ instead of this:</li>
};</code></pre> };</code></pre>
<p>because internally <strong>arguments</strong> array will be re-declared locally, with a <p>because internally <strong>arguments</strong> array will be re-declared locally, with a
stack based approach, for the next function call and can cause some variable stack based approach, for the next function call and can cause some variable
resolving missmatch. This is a little annoying but is also better to always resolving mismatch. This is a little annoying but is also better to always
remap each arguments value to a dedicated local variable. remap each arguments value to a dedicated local variable.
- early exit inside logical expression is not implemented so this code will not - early exit inside logical expression is not implemented so this code will not
be interrupted before the execution of the foo2 function:</p> be interrupted before the execution of the <code>foo2</code> function:</p>
<pre><code> if (0 &amp;&amp; foo2(123)) { print(&quot;hello\n&quot;); }</code></pre> <pre><code> if (0 &amp;&amp; foo2(123)) { print(&quot;hello\n&quot;); }</code></pre>
<p>and this is clearly not standard (in ECMA, Yes you can) <p>and this is clearly not standard (in ECMA, Yes you can)
- accessing properties on literal String or Number is not supported; For - accessing properties on literal String or Number is not supported; For
@@ -809,10 +811,10 @@ tests</strong> chapter):</p>
<p>The interpreter uses the same struct to hold values and variables. The same <p>The interpreter uses the same struct to hold values and variables. The same
struct (c) is also used to store a linked list for global variables and a linked struct (c) is also used to store a linked list for global variables and a linked
list for all properties contained inside a variable.</p> list for all properties contained inside a variable.</p>
<p>Using the same struct has been usefull to strip down the code for a lesser number <p>Using the same struct has been useful to strip down the code for a lesser number
of tokens.</p> of tokens.</p>
<p>This is a semi obfuscated struct that holds variables or values (NOTE: obfuscated <p>This is a semi obfuscated struct that holds variables or values (NOTE: obfuscated
symbols can be slightly differents from the final obfuscated ones):</p> symbols can be slightly different from the final obfuscated ones):</p>
<pre><code> typedef struct c*d; <pre><code> typedef struct c*d;
struct c{ struct c{
union{ union{
@@ -831,10 +833,10 @@ symbols can be slightly differents from the final obfuscated ones):</p>
int r; // array length / properties length int r; // array length / properties length
} ;</code></pre> } ;</code></pre>
<p>This struct is huge! It uses 72 bytes on 64bit X86 architecture. This struct is <p>This struct is huge! It uses 72 bytes on 64bit X86 architecture. This struct is
big to fit all the usefull data inside it and also something else that is big to fit all the useful data inside it and also something else that is
needed to compress the code. In theory can be much smaller but the final code needed to compress the code. In theory can be much smaller but the final code
will uses more tokens (I have tried multiple times to implement this interpreter will uses more tokens (I have tried multiple times to implement this interpreter
but this is the only solution that i’ve found to match the 2503 limitation.. with but this is the only solution that I’ve found to match the 2503 limitation.. with
the previous limit of 2053 was really hard to stay under the limits – for me!). the previous limit of 2053 was really hard to stay under the limits – for me!).
Keep in mind also that on 64bit X86 architecture each pointer cost 8 bytes…</p> Keep in mind also that on 64bit X86 architecture each pointer cost 8 bytes…</p>
<p>The interpreter uses a large amount of RAM, creating many temporary values <p>The interpreter uses a large amount of RAM, creating many temporary values
@@ -950,7 +952,7 @@ instead
<p>and this will work like var has been typed one time. Can you find out where <p>and this will work like var has been typed one time. Can you find out where
this has been allowed inside the source code? (hint: goto) this has been allowed inside the source code? (hint: goto)
- many other unknown strange things can happen in Hawkins, Indiana…</p> - many other unknown strange things can happen in Hawkins, Indiana…</p>
<h3 id="usefull-things">Usefull Things</h3> <h3 id="useful-things">Useful Things</h3>
<p>Console prototype is not implemented but console.log can be implemented using <p>Console prototype is not implemented but console.log can be implemented using
only native <strong>print</strong> function. The following is an example of Console only native <strong>print</strong> function. The following is an example of Console
implementation (found also inside console.js file):</p> implementation (found also inside console.js file):</p>
@@ -1412,7 +1414,7 @@ been stripped down in the final (light) obfuscated version of the code</em></p>
atmp[0] = 10; \ atmp[0] = 10; \
atmp[1] = 20; \ atmp[1] = 20; \
atmp[0 + 1];&quot;, 20);</code></pre> atmp[0 + 1];&quot;, 20);</code></pre>
<p>Some of these tests has also been ported in plain javascript; take a look inside <p>Some of these tests has also been ported in plain JavaScript; take a look inside
the <strong>verify.js</strong> script. These tests uses <strong>eval()</strong> function to execute a test the <strong>verify.js</strong> script. These tests uses <strong>eval()</strong> function to execute a test
source code string and verify its execution results. These other tests can be source code string and verify its execution results. These other tests can be
executed with this command:</p> executed with this command:</p>
@@ -1439,14 +1441,14 @@ Collector cannot recognize this kind of structure</li>
</ul> </ul>
<h3 id="final-thoughts">Final Thoughts</h3> <h3 id="final-thoughts">Final Thoughts</h3>
<p>I’ve tried multiple time to rewrite this interpreter and compress the final <p>I’ve tried multiple time to rewrite this interpreter and compress the final
obfuscated sourcecode to match the previous IOCCC limit but without success.</p> obfuscated source code to match the previous IOCCC limit but without success.</p>
<p>The increased limitation of tokens from 2053 to 2503 has made possible to use <p>The increased limitation of tokens from 2053 to 2503 has made possible to use
this iteration of the interpreter without continue to retry to rewrite that to this iteration of the interpreter without continue to retry to rewrite that to
compress the final sourcecode. Probably with more iterations the 2053 limit compress the final source code. Probably with more iterations the 2053 limit
should be reached, who knows.</p> should be reached, who knows.</p>
<p>The most tricky part in the development process has been to find out a minimal <p>The most tricky part in the development process has been to find out a minimal
barebone subset of Javascript features, small enought to allow to build some bare bones subset of JavaScript features, small enough to allow to build some
other standard features on top of the barebone interpreter.</p> other standard features on top of the bare bones interpreter.</p>
<p>In many tests I’ve tried to include the Object.keys features (to obtain the <p>In many tests I’ve tried to include the Object.keys features (to obtain the
list of property keys inside a given Object) but, in all of my attempts, the list of property keys inside a given Object) but, in all of my attempts, the
limitation on tokens count was exceeded. With Object.keys would have been limitation on tokens count was exceeded. With Object.keys would have been
@@ -1568,7 +1570,7 @@ Jump to: <a href="#">top</a>
<div id="coda"><h3>Coda</h3> <div id="coda"><h3>Coda</h3>
<p> <p>
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2024%2Fmaffiodo%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br> <a href="https://validator.w3.org/nu/?doc=#" rel="nofollow">Nu HTML check this web page</a><br>
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br> <a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
</p> </p>
</div> </div>
+15 -15
View File
@@ -14270,7 +14270,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/2024.tar.bz2</loc> <loc>https://www.ioccc.org/2024/2024.tar.bz2</loc>
<lastmod>2025-08-03T02:31:11+00:00</lastmod> <lastmod>2025-08-03T03:17:16+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/anders/2024_anders.tar.bz2</loc> <loc>https://www.ioccc.org/2024/anders/2024_anders.tar.bz2</loc>
@@ -14742,7 +14742,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/2024_ferguson1.tar.bz2</loc> <loc>https://www.ioccc.org/2024/ferguson1/2024_ferguson1.tar.bz2</loc>
<lastmod>2025-08-03T02:30:56+00:00</lastmod> <lastmod>2025-08-03T03:17:03+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/addpadding.c</loc> <loc>https://www.ioccc.org/2024/ferguson1/addpadding.c</loc>
@@ -14770,15 +14770,15 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/data.asc.src</loc> <loc>https://www.ioccc.org/2024/ferguson1/data.asc.src</loc>
<lastmod>2025-07-05T06:08:05+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/data.scrnshot.src</loc> <loc>https://www.ioccc.org/2024/ferguson1/data.scrnshot.src</loc>
<lastmod>2025-07-05T06:08:05+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/data.src</loc> <loc>https://www.ioccc.org/2024/ferguson1/data.src</loc>
<lastmod>2025-07-05T06:08:05+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/deobfuscation.html</loc> <loc>https://www.ioccc.org/2024/ferguson1/deobfuscation.html</loc>
@@ -14798,7 +14798,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/index.html</loc> <loc>https://www.ioccc.org/2024/ferguson1/index.html</loc>
<lastmod>2025-07-26T20:39:36+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/ioccc.jpg</loc> <loc>https://www.ioccc.org/2024/ferguson1/ioccc.jpg</loc>
@@ -14810,7 +14810,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/makedata.sh</loc> <loc>https://www.ioccc.org/2024/ferguson1/makedata.sh</loc>
<lastmod>2025-07-05T06:08:05+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/Makefile</loc> <loc>https://www.ioccc.org/2024/ferguson1/Makefile</loc>
@@ -14846,7 +14846,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/README.md</loc> <loc>https://www.ioccc.org/2024/ferguson1/README.md</loc>
<lastmod>2025-07-22T16:09:02+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/spaghetti.png</loc> <loc>https://www.ioccc.org/2024/ferguson1/spaghetti.png</loc>
@@ -14854,15 +14854,15 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/strings.asc.loc.txt</loc> <loc>https://www.ioccc.org/2024/ferguson1/strings.asc.loc.txt</loc>
<lastmod>2025-07-12T17:44:42+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/strings.loc.txt</loc> <loc>https://www.ioccc.org/2024/ferguson1/strings.loc.txt</loc>
<lastmod>2025-07-12T17:44:42+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/strings.scrnshot.loc.txt</loc> <loc>https://www.ioccc.org/2024/ferguson1/strings.scrnshot.loc.txt</loc>
<lastmod>2025-07-12T17:44:42+00:00</lastmod> <lastmod>2025-08-03T03:03:49+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/ferguson1/travelguide.jpg</loc> <loc>https://www.ioccc.org/2024/ferguson1/travelguide.jpg</loc>
@@ -15214,7 +15214,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/maffiodo/2024_maffiodo.tar.bz2</loc> <loc>https://www.ioccc.org/2024/maffiodo/2024_maffiodo.tar.bz2</loc>
<lastmod>2025-08-01T19:41:25+00:00</lastmod> <lastmod>2025-08-03T03:17:04+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/maffiodo/array.js</loc> <loc>https://www.ioccc.org/2024/maffiodo/array.js</loc>
@@ -15234,7 +15234,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/maffiodo/index.html</loc> <loc>https://www.ioccc.org/2024/maffiodo/index.html</loc>
<lastmod>2025-07-26T20:39:52+00:00</lastmod> <lastmod>2025-08-03T03:08:08+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/maffiodo/Makefile</loc> <loc>https://www.ioccc.org/2024/maffiodo/Makefile</loc>
@@ -15254,7 +15254,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/maffiodo/README.md</loc> <loc>https://www.ioccc.org/2024/maffiodo/README.md</loc>
<lastmod>2025-07-12T17:44:42+00:00</lastmod> <lastmod>2025-08-03T03:06:58+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/maffiodo/string.js</loc> <loc>https://www.ioccc.org/2024/maffiodo/string.js</loc>
@@ -16918,7 +16918,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.html</loc> <loc>https://www.ioccc.org/status.html</loc>
<lastmod>2025-08-03T02:36:53+00:00</lastmod> <lastmod>2025-08-03T03:12:26+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.json</loc> <loc>https://www.ioccc.org/status.json</loc>