Skip to content

Commit d0257ab

Browse files
author
Cody Fagley
committed
Deploy website
Deploy website version based on 017bba78b10f5fc9017b88b570f7e4231c58c3d4
1 parent e807713 commit d0257ab

File tree

7 files changed

+75
-11
lines changed

7 files changed

+75
-11
lines changed

about.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
</span></div></div></div><div class="blockElement alignCenter fourByGridBlock imageAlignTop"><div class="blockImage"><img src="/img/ed.png"/></div><div class="blockContent"><h2><div><span><p>Ed Hart</p>
66
</span></div></h2><div><span><p>Codeus Tech is honored to be advised by <strong>Edward Hart</strong>, a former Deputy Director of NSA for Information Systems Security. While working with NSA, Ed oversaw development of some of the world's most advanced and secure IoT devices. In private industry, he has played a key role in several successful entities -- founding, managing and as a member of various boards.</p>
77
</span></div></div></div><div class="blockElement alignCenter fourByGridBlock imageAlignTop"><div class="blockImage"><img src="/img/ruben.jpg"/></div><div class="blockContent"><h2><div><span><p>Ruben Gamboa</p>
8-
</span></div></h2><div><span><p>Many professors at University of Wyoming have significantly contributed to the validation and development of Codeus Tech. Dr. Ruben Gamboa (pictured) is Cody's doctoral advisor; Ruben has expert-level experience in formal verification and programming language design and has successfully founded/exited a software research company (Databases).</p>
8+
</span></div></h2><div><span><p>Many professors at University of Wyoming have significantly contributed to the validation and development of Codeus Tech. Dr. <strong>Ruben Gamboa</strong> (pictured) has advised Fagley on academic/research for over half a decade; Ruben has expert-level experience in formal verification and programming language design and has also <a href="https://en.wikipedia.org/wiki/Logical_Information_Machines">successfully founded/exited a research-forward database company</a>.</p>
99
</span></div></div></div></div></div></div></div></div><footer class="nav-footer" id="footer"><section class="sitemap"><p class="nav-addr">Codeus Tech, LLC<br/>1938 E Harney St, Suite 146<br/>Laramie, Wyoming 82072<br/>United States</p><a href="/" class="nav-home"><img src="/img/codeus_white.png" alt="Codeus Tech" width="66" height="58"/></a><div><h5>Navigation</h5><a href="/">Home</a><a href="/docs/about_us.html">About Us</a><a href="/blog/">News</a><a href="/docs/xcs/xcs.html">XCS Wiki</a></div></section><section class="copyright">Copyright © 2021 Codeus Tech, LLC</section><div id="cntr" class="cntr">Number of visitors is:<span>0</span></div></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>
1010
document.addEventListener('keyup', function(e) {
1111
if (e.target !== document.body) {

about/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
</span></div></div></div><div class="blockElement alignCenter fourByGridBlock imageAlignTop"><div class="blockImage"><img src="/img/ed.png"/></div><div class="blockContent"><h2><div><span><p>Ed Hart</p>
66
</span></div></h2><div><span><p>Codeus Tech is honored to be advised by <strong>Edward Hart</strong>, a former Deputy Director of NSA for Information Systems Security. While working with NSA, Ed oversaw development of some of the world's most advanced and secure IoT devices. In private industry, he has played a key role in several successful entities -- founding, managing and as a member of various boards.</p>
77
</span></div></div></div><div class="blockElement alignCenter fourByGridBlock imageAlignTop"><div class="blockImage"><img src="/img/ruben.jpg"/></div><div class="blockContent"><h2><div><span><p>Ruben Gamboa</p>
8-
</span></div></h2><div><span><p>Many professors at University of Wyoming have significantly contributed to the validation and development of Codeus Tech. Dr. Ruben Gamboa (pictured) is Cody's doctoral advisor; Ruben has expert-level experience in formal verification and programming language design and has successfully founded/exited a software research company (Databases).</p>
8+
</span></div></h2><div><span><p>Many professors at University of Wyoming have significantly contributed to the validation and development of Codeus Tech. Dr. <strong>Ruben Gamboa</strong> (pictured) has advised Fagley on academic/research for over half a decade; Ruben has expert-level experience in formal verification and programming language design and has also <a href="https://en.wikipedia.org/wiki/Logical_Information_Machines">successfully founded/exited a research-forward database company</a>.</p>
99
</span></div></div></div></div></div></div></div></div><footer class="nav-footer" id="footer"><section class="sitemap"><p class="nav-addr">Codeus Tech, LLC<br/>1938 E Harney St, Suite 146<br/>Laramie, Wyoming 82072<br/>United States</p><a href="/" class="nav-home"><img src="/img/codeus_white.png" alt="Codeus Tech" width="66" height="58"/></a><div><h5>Navigation</h5><a href="/">Home</a><a href="/docs/about_us.html">About Us</a><a href="/blog/">News</a><a href="/docs/xcs/xcs.html">XCS Wiki</a></div></section><section class="copyright">Copyright © 2021 Codeus Tech, LLC</section><div id="cntr" class="cntr">Number of visitors is:<span>0</span></div></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>
1010
document.addEventListener('keyup', function(e) {
1111
if (e.target !== document.body) {

css/main.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/xcse/firmware.html

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
<li>They are not able to access any memory outside of their designated range</li>
7474
</ul></li>
7575
</ul>
76-
<h3><a class="anchor" aria-hidden="true" id="formatstructure-for-chip-files"></a><a href="#formatstructure-for-chip-files" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Format/Structure for *.chip files</h3>
76+
<h2><a class="anchor" aria-hidden="true" id="formatstructure-for-chip-files"></a><a href="#formatstructure-for-chip-files" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Format/Structure for *.chip files</h2>
7777
<p>(<em>Obviously</em> subject to change for security refinement)</p>
7878
<pre><code class="hljs css language-haskell"><span class="hljs-comment">-- rpi3.chip</span>
7979
<span class="hljs-comment">-- Chip Name (used in terminal options, etc.)</span>
@@ -84,14 +84,24 @@ <h3><a class="anchor" aria-hidden="true" id="formatstructure-for-chip-files"></a
8484

8585
<span class="hljs-comment">-- Desired Memory Mappings and Firmware Interfaces</span>
8686
<span class="hljs-type">GPIO</span>: <span class="hljs-number">0x3F215000</span> + <span class="hljs-number">0xD4</span>; <span class="hljs-comment">-- The first number represents an initial memory address</span>
87-
<span class="hljs-type">BSC</span>: <span class="hljs-number">0x3F205000</span> + <span class="hljs-number">0x1C</span>, <span class="hljs-comment">-- The second number represents the upper bound of the range</span>
87+
<span class="hljs-type">BSC</span>: <span class="hljs-number">0x3F205000</span> + <span class="hljs-number">0x1C</span>, <span class="hljs-comment">-- The second number represents the number of bytes</span>
8888
<span class="hljs-number">0x3F804000</span> + <span class="hljs-number">0x1C</span>,
8989
<span class="hljs-number">0x3F805000</span> + <span class="hljs-number">0x1C</span>;
9090
<span class="hljs-type">DMA</span>: <span class="hljs-number">0x3F007000</span> + <span class="hljs-number">0x1400</span>, <span class="hljs-comment">-- Separated ranges can be denoted by commas</span>
9191
<span class="hljs-number">0x3FE05000</span> + <span class="hljs-number">0x100</span>; <span class="hljs-comment">-- And terminated by semi-colins</span>
9292
<span class="hljs-type">SPI</span>: <span class="hljs-number">0x3F204000</span> + <span class="hljs-number">0x14</span>;
9393
<span class="hljs-type">Timer</span>: <span class="hljs-number">0x3F003000</span> + <span class="hljs-number">0x18</span> <span class="hljs-comment">-- Make sure there is no ';' at the end</span>
9494
</code></pre>
95+
<p><strong>NOTE:</strong> Alternatively, you can define the drivers using <code>-</code> operator (in contrast to <code>+</code> operator). The <code>-</code> syntax will instead define the lower</p>
96+
<pre><code class="hljs css language-haskell"><span class="hljs-type">GPIO</span>: <span class="hljs-number">0x3F215000</span> - <span class="hljs-number">0x3F2150D4</span>; <span class="hljs-comment">-- The first number represents an initial memory address</span>
97+
<span class="hljs-type">BSC</span>: <span class="hljs-number">0x3F205000</span> - <span class="hljs-number">0x3F20501C</span>, <span class="hljs-comment">-- The second number represents the number of bytes</span>
98+
<span class="hljs-number">0x3F804000</span> - <span class="hljs-number">0x3F80401C</span>,
99+
<span class="hljs-number">0x3F805000</span> - <span class="hljs-number">0x3F80501C</span>;
100+
<span class="hljs-type">DMA</span>: <span class="hljs-number">0x3F007000</span> - <span class="hljs-number">0x3F008400</span>, <span class="hljs-comment">-- Separated ranges can be denoted by commas</span>
101+
<span class="hljs-number">0x3FE05000</span> - <span class="hljs-number">0x3FE05100</span>; <span class="hljs-comment">-- And terminated by semi-colins</span>
102+
<span class="hljs-type">SPI</span>: <span class="hljs-number">0x3F204000</span> - <span class="hljs-number">0x3F204014</span>;
103+
<span class="hljs-type">Timer</span>: <span class="hljs-number">0x3F003000</span> - <span class="hljs-number">0x3F003018</span> <span class="hljs-comment">-- Make sure there is no ';' at the end</span>
104+
</code></pre>
95105
<h3><a class="anchor" aria-hidden="true" id="firmware-drivers"></a><a href="#firmware-drivers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Firmware Drivers</h3>
96106
<p>Each chip can have a collection of firmware drivers written in Xita's functional language. Each firmware driver addresses a unique named Firmware Interface, defined in the loaded <code>.chip</code> file (above).</p>
97107
<p>Once the firmware driver is defined correctly, it can freely access any memory address within the predefined interface range. As an example, see the following Driver file:</p>
@@ -107,7 +117,29 @@ <h3><a class="anchor" aria-hidden="true" id="firmware-drivers"></a><a href="#fir
107117
<span class="hljs-title">let</span> getSPIStatus = $<span class="hljs-number">0x3F204000</span>
108118

109119
</code></pre>
110-
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/xcse/chips"><span class="arrow-prev"></span><span>Supported Chips</span></a><a class="docs-next button" href="/docs/xcse/sockets"><span>Network Sockets</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#design-philosophy">Design Philosophy</a><ul class="toc-headings"><li><a href="#formatstructure-for-chip-files">Format/Structure for *.chip files</a></li><li><a href="#firmware-drivers">Firmware Drivers</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><p class="nav-addr">Codeus Tech, LLC<br/>1938 E Harney St, Suite 146<br/>Laramie, Wyoming 82072<br/>United States</p><a href="/" class="nav-home"><img src="/img/codeus_white.png" alt="Codeus Tech" width="66" height="58"/></a><div><h5>Navigation</h5><a href="/">Home</a><a href="/docs/en/about_us.html">About Us</a><a href="/blog/">News</a><a href="/docs/en/xcs/xcs.html">XCS Wiki</a></div></section><section class="copyright">Copyright © 2021 Codeus Tech, LLC</section><div id="cntr" class="cntr">Number of visitors is:<span>0</span></div></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>
120+
<h2><a class="anchor" aria-hidden="true" id="memory-access-operators"></a><a href="#memory-access-operators" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Memory Access Operators</h2>
121+
<p>Firmware Drivers have the unique ability to directly access the data held at specific memory addresses, but they can only access data in the range owned by the firmware driver (defined in the *.chip file).</p>
122+
<p>To read or write data to a specfic memory address, the integer address must be known at compile time. Therefore, it can only be an integer literal (e.g. <code>10</code>) or a defined integer constant identifier (e.g. <code>const Int addr = 10</code>).</p>
123+
<h3><a class="anchor" aria-hidden="true" id="read-data-in-memory-address"></a><a href="#read-data-in-memory-address" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Read Data in Memory Address</h3>
124+
<p>There are two mechanisms for using data in a specific memory address.</p>
125+
<h4><a class="anchor" aria-hidden="true" id="--addr--notation"></a><a href="#--addr--notation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>$ addr</code> Notation</h4>
126+
<pre><code class="hljs css language-Haskell"><span class="hljs-title">const</span> <span class="hljs-type">Int</span> text_start = <span class="hljs-number">0xB8000</span>;;
127+
128+
<span class="hljs-comment">-- Usage</span>
129+
$text_start;;
130+
$<span class="hljs-number">0xB8000</span>
131+
</code></pre>
132+
<h4><a class="anchor" aria-hidden="true" id="-addr---var-in-exp---notation"></a><a href="#-addr---var-in-exp---notation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>addr *-&gt; var in exp</code> Notation</h4>
133+
<pre><code class="hljs css language-Haskell"><span class="hljs-title">let</span> adjust_color =
134+
<span class="hljs-number">0xB8000</span> *-&gt; buf <span class="hljs-keyword">in</span>
135+
(buf + <span class="hljs-number">10</span>) <span class="hljs-comment">-- parenthesis are not required. Added for Readability</span>
136+
</code></pre>
137+
<h3><a class="anchor" aria-hidden="true" id="write-data-to-memory-address"></a><a href="#write-data-to-memory-address" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Write Data to Memory Address</h3>
138+
<h4><a class="anchor" aria-hidden="true" id="-addr---data--notation"></a><a href="#-addr---data--notation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a><code>addr &lt;-* data</code> Notation</h4>
139+
<pre><code class="hljs css language-Haskell"><span class="hljs-title">let</span> put_char c index =
140+
(<span class="hljs-number">0xB8000</span> + index) &lt;-* c
141+
</code></pre>
142+
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/xcse/chips"><span class="arrow-prev"></span><span>Supported Chips</span></a><a class="docs-next button" href="/docs/xcse/sockets"><span>Network Sockets</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#design-philosophy">Design Philosophy</a></li><li><a href="#formatstructure-for-chip-files">Format/Structure for *.chip files</a><ul class="toc-headings"><li><a href="#firmware-drivers">Firmware Drivers</a></li></ul></li><li><a href="#memory-access-operators">Memory Access Operators</a><ul class="toc-headings"><li><a href="#read-data-in-memory-address">Read Data in Memory Address</a></li><li><a href="#write-data-to-memory-address">Write Data to Memory Address</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><p class="nav-addr">Codeus Tech, LLC<br/>1938 E Harney St, Suite 146<br/>Laramie, Wyoming 82072<br/>United States</p><a href="/" class="nav-home"><img src="/img/codeus_white.png" alt="Codeus Tech" width="66" height="58"/></a><div><h5>Navigation</h5><a href="/">Home</a><a href="/docs/en/about_us.html">About Us</a><a href="/blog/">News</a><a href="/docs/en/xcs/xcs.html">XCS Wiki</a></div></section><section class="copyright">Copyright © 2021 Codeus Tech, LLC</section><div id="cntr" class="cntr">Number of visitors is:<span>0</span></div></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>
111143
document.addEventListener('keyup', function(e) {
112144
if (e.target !== document.body) {
113145
return;

0 commit comments

Comments
 (0)