<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2">aare_temp</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&source=tests"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> tests</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=PROJECT_OVERVIEW.md"><i class="fa-solid fa-file" style="color:#888;"></i> PROJECT_OVERVIEW.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=README.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0 active" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=app.py"><i class="fa-solid fa-file" style="color:#888;"></i> app.py</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=callbacks.py"><i class="fa-solid fa-file" style="color:#888;"></i> callbacks.py</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=config.py"><i class="fa-solid fa-file" style="color:#888;"></i> config.py</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=data_loader.py"><i class="fa-solid fa-file" style="color:#888;"></i> data_loader.py</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=layouts.py"><i class="fa-solid fa-file" style="color:#888;"></i> layouts.py</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&file=requirements.txt"><i class="fa-solid fa-file" style="color:#888;"></i> requirements.txt</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=zWz6TUjcXdxDQYC3FH6kU4Rw5jq2&source=.">/</a> app.py</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> app.py</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;">  1</span>  import dash
<span style="color:#666; user-select:none;">  2</span>  from dash import html, dcc, Output, Input
<span style="color:#666; user-select:none;">  3</span>  from layouts import create_layout
<span style="color:#666; user-select:none;">  4</span>  from callbacks import register_callbacks
<span style="color:#666; user-select:none;">  5</span>  from data_loader import load_plot
<span style="color:#666; user-select:none;">  6</span>  import logging
<span style="color:#666; user-select:none;">  7</span>  
<span style="color:#666; user-select:none;">  8</span>  # Set up logging
<span style="color:#666; user-select:none;">  9</span>  logging.basicConfig(level=logging.INFO)
<span style="color:#666; user-select:none;"> 10</span>  logger = logging.getLogger(__name__)
<span style="color:#666; user-select:none;"> 11</span>  
<span style="color:#666; user-select:none;"> 12</span>  # Initialize the app with a modern theme
<span style="color:#666; user-select:none;"> 13</span>  app = dash.Dash(
<span style="color:#666; user-select:none;"> 14</span>      __name__,
<span style="color:#666; user-select:none;"> 15</span>      external_stylesheets=[
<span style="color:#666; user-select:none;"> 16</span>          &quot;https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&amp;display=swap&quot;
<span style="color:#666; user-select:none;"> 17</span>      ]
<span style="color:#666; user-select:none;"> 18</span>  )
<span style="color:#666; user-select:none;"> 19</span>  server = app.server
<span style="color:#666; user-select:none;"> 20</span>  
<span style="color:#666; user-select:none;"> 21</span>  # Configure layout
<span style="color:#666; user-select:none;"> 22</span>  app.layout = create_layout()
<span style="color:#666; user-select:none;"> 23</span>  
<span style="color:#666; user-select:none;"> 24</span>  # Register callbacks
<span style="color:#666; user-select:none;"> 25</span>  register_callbacks(app)
<span style="color:#666; user-select:none;"> 26</span>  
<span style="color:#666; user-select:none;"> 27</span>  # Add custom CSS styles
<span style="color:#666; user-select:none;"> 28</span>  app.index_string = &#x27;&#x27;&#x27;
<span style="color:#666; user-select:none;"> 29</span>  &lt;!DOCTYPE html&gt;
<span style="color:#666; user-select:none;"> 30</span>  &lt;html&gt;
<span style="color:#666; user-select:none;"> 31</span>      &lt;head&gt;
<span style="color:#666; user-select:none;"> 32</span>          &lt;title&gt;Fäbu&#x27;s App&lt;/title&gt;
<span style="color:#666; user-select:none;"> 33</span>          &lt;meta charset=&quot;UTF-8&quot;&gt;
<span style="color:#666; user-select:none;"> 34</span>          &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
<span style="color:#666; user-select:none;"> 35</span>          &lt;style&gt;
<span style="color:#666; user-select:none;"> 36</span>              :root {
<span style="color:#666; user-select:none;"> 37</span>                  --primary-color: #4361ee;
<span style="color:#666; user-select:none;"> 38</span>                  --secondary-color: #3a0ca0;
<span style="color:#666; user-select:none;"> 39</span>                  --accent-color: #f72585;
<span style="color:#666; user-select:none;"> 40</span>                  --light-color: #f8f9fa;
<span style="color:#666; user-select:none;"> 41</span>                  --dark-color: #212529;
<span style="color:#666; user-select:none;"> 42</span>                  --success-color: #4cc9f0;
<span style="color:#666; user-select:none;"> 43</span>                  --warning-color: #f7931e;
<span style="color:#666; user-select:none;"> 44</span>                  --danger-color: #e63946;
<span style="color:#666; user-select:none;"> 45</span>                  --border-radius: 8px;
<span style="color:#666; user-select:none;"> 46</span>                  --box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
<span style="color:#666; user-select:none;"> 47</span>                  --transition: all 0.3s ease;
<span style="color:#666; user-select:none;"> 48</span>              }
<span style="color:#666; user-select:none;"> 49</span>              
<span style="color:#666; user-select:none;"> 50</span>              * {
<span style="color:#666; user-select:none;"> 51</span>                  margin: 0;
<span style="color:#666; user-select:none;"> 52</span>                  padding: 0;
<span style="color:#666; user-select:none;"> 53</span>                  box-sizing: border-box;
<span style="color:#666; user-select:none;"> 54</span>              }
<span style="color:#666; user-select:none;"> 55</span>              
<span style="color:#666; user-select:none;"> 56</span>              body {
<span style="color:#666; user-select:none;"> 57</span>                  font-family: &#x27;Inter&#x27;, -apple-system, BlinkMacSystemFont, &#x27;Segoe UI&#x27;, Roboto, Oxygen, Ubuntu, Cantarell, &#x27;Open Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;
<span style="color:#666; user-select:none;"> 58</span>                  background-color: #f5f7fb;
<span style="color:#666; user-select:none;"> 59</span>                  color: #333;
<span style="color:#666; user-select:none;"> 60</span>                  line-height: 1.6;
<span style="color:#666; user-select:none;"> 61</span>              }
<span style="color:#666; user-select:none;"> 62</span>              
<span style="color:#666; user-select:none;"> 63</span>              .app-header {
<span style="color:#666; user-select:none;"> 64</span>                  background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
<span style="color:#666; user-select:none;"> 65</span>                  color: white;
<span style="color:#666; user-select:none;"> 66</span>                  padding: 1.5rem 2rem;
<span style="color:#666; user-select:none;"> 67</span>                  border-radius: 0 0 var(--border-radius) var(--border-radius);
<span style="color:#666; user-select:none;"> 68</span>                  box-shadow: var(--box-shadow);
<span style="color:#666; user-select:none;"> 69</span>                  margin-bottom: 1.5rem;
<span style="color:#666; user-select:none;"> 70</span>                  text-align: center;
<span style="color:#666; user-select:none;"> 71</span>              }
<span style="color:#666; user-select:none;"> 72</span>              
<span style="color:#666; user-select:none;"> 73</span>              .app-header h1 {
<span style="color:#666; user-select:none;"> 74</span>                  font-weight: 700;
<span style="color:#666; user-select:none;"> 75</span>                  font-size: 2.2rem;
<span style="color:#666; user-select:none;"> 76</span>                  letter-spacing: -0.5px;
<span style="color:#666; user-select:none;"> 77</span>              }
<span style="color:#666; user-select:none;"> 78</span>              
<span style="color:#666; user-select:none;"> 79</span>              .measurement-card {
<span style="color:#666; user-select:none;"> 80</span>                  background: white;
<span style="color:#666; user-select:none;"> 81</span>                  border-radius: var(--border-radius);
<span style="color:#666; user-select:none;"> 82</span>                  box-shadow: var(--box-shadow);
<span style="color:#666; user-select:none;"> 83</span>                  padding: 1.5rem;
<span style="color:#666; user-select:none;"> 84</span>                  margin-bottom: 1.5rem;
<span style="color:#666; user-select:none;"> 85</span>                  transition: var(--transition);
<span style="color:#666; user-select:none;"> 86</span>                  border: 1px solid rgba(0, 0, 0, 0.05);
<span style="color:#666; user-select:none;"> 87</span>              }
<span style="color:#666; user-select:none;"> 88</span>              
<span style="color:#666; user-select:none;"> 89</span>              .measurement-card:hover {
<span style="color:#666; user-select:none;"> 90</span>                  transform: translateY(-3px);
<span style="color:#666; user-select:none;"> 91</span>                  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
<span style="color:#666; user-select:none;"> 92</span>              }
<span style="color:#666; user-select:none;"> 93</span>              
<span style="color:#666; user-select:none;"> 94</span>              .river-header {
<span style="color:#666; user-select:none;"> 95</span>                  color: var(--primary-color);
<span style="color:#666; user-select:none;"> 96</span>                  margin-bottom: 1.2rem;
<span style="color:#666; user-select:none;"> 97</span>                  font-weight: 600;
<span style="color:#666; user-select:none;"> 98</span>                  font-size: 1.4rem;
<span style="color:#666; user-select:none;"> 99</span>                  text-align: center;
<span style="color:#666; user-select:none;">100</span>              }
<span style="color:#666; user-select:none;">101</span>              
<span style="color:#666; user-select:none;">102</span>              .measurement-grid {
<span style="color:#666; user-select:none;">103</span>                  display: flex;
<span style="color:#666; user-select:none;">104</span>                  gap: 1.5rem;
<span style="color:#666; user-select:none;">105</span>                  flex-wrap: wrap;
<span style="color:#666; user-select:none;">106</span>                  margin-bottom: 1.5rem;
<span style="color:#666; user-select:none;">107</span>              }
<span style="color:#666; user-select:none;">108</span>              
<span style="color:#666; user-select:none;">109</span>              .measurement-item {
<span style="color:#666; user-select:none;">110</span>                  display: flex;
<span style="color:#666; user-select:none;">111</span>                  align-items: center;
<span style="color:#666; user-select:none;">112</span>                  padding: 0.7rem 0;
<span style="color:#666; user-select:none;">113</span>                  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
<span style="color:#666; user-select:none;">114</span>              }
<span style="color:#666; user-select:none;">115</span>              
<span style="color:#666; user-select:none;">116</span>              .measurement-item:last-child {
<span style="color:#666; user-select:none;">117</span>                  border-bottom: none;
<span style="color:#666; user-select:none;">118</span>              }
<span style="color:#666; user-select:none;">119</span>              
<span style="color:#666; user-select:none;">120</span>              .measurement-label {
<span style="color:#666; user-select:none;">121</span>                  font-weight: 600;
<span style="color:#666; user-select:none;">122</span>                  color: var(--dark-color);
<span style="color:#666; user-select:none;">123</span>                  width: 130px;
<span style="color:#666; user-select:none;">124</span>                  margin-right: 1rem;
<span style="color:#666; user-select:none;">125</span>              }
<span style="color:#666; user-select:none;">126</span>              
<span style="color:#666; user-select:none;">127</span>              .measurement-value {
<span style="color:#666; user-select:none;">128</span>                  font-weight: 700;
<span style="color:#666; user-select:none;">129</span>                  font-size: 1.1rem;
<span style="color:#666; user-select:none;">130</span>                  color: var(--primary-color);
<span style="color:#666; user-select:none;">131</span>              }
<span style="color:#666; user-select:none;">132</span>              
<span style="color:#666; user-select:none;">133</span>              .river-section {
<span style="color:#666; user-select:none;">134</span>                  background: white;
<span style="color:#666; user-select:none;">135</span>                  border-radius: var(--border-radius);
<span style="color:#666; user-select:none;">136</span>                  box-shadow: var(--box-shadow);
<span style="color:#666; user-select:none;">137</span>                  padding: 1.5rem;
<span style="color:#666; user-select:none;">138</span>                  margin-bottom: 1.5rem;
<span style="color:#666; user-select:none;">139</span>                  border: 1px solid rgba(0, 0, 0, 0.05);
<span style="color:#666; user-select:none;">140</span>              }
<span style="color:#666; user-select:none;">141</span>              
<span style="color:#666; user-select:none;">142</span>              .river-title {
<span style="color:#666; user-select:none;">143</span>                  color: var(--secondary-color);
<span style="color:#666; user-select:none;">144</span>                  margin-bottom: 1.2rem;
<span style="color:#666; user-select:none;">145</span>                  font-weight: 600;
<span style="color:#666; user-select:none;">146</span>                  font-size: 1.6rem;
<span style="color:#666; user-select:none;">147</span>                  text-align: center;
<span style="color:#666; user-select:none;">148</span>              }
<span style="color:#666; user-select:none;">149</span>              
<span style="color:#666; user-select:none;">150</span>              .graph-container {
<span style="color:#666; user-select:none;">151</span>                  margin-bottom: 1.5rem;
<span style="color:#666; user-select:none;">152</span>                  border-radius: var(--border-radius);
<span style="color:#666; user-select:none;">153</span>                  overflow: hidden;
<span style="color:#666; user-select:none;">154</span>                  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
<span style="color:#666; user-select:none;">155</span>              }
<span style="color:#666; user-select:none;">156</span>              
<span style="color:#666; user-select:none;">157</span>              .graph-container:last-child {
<span style="color:#666; user-select:none;">158</span>                  margin-bottom: 0;
<span style="color:#666; user-select:none;">159</span>              }
<span style="color:#666; user-select:none;">160</span>              
<span style="color:#666; user-select:none;">161</span>              .last-updated {
<span style="color:#666; user-select:none;">162</span>                  text-align: right;
<span style="color:#666; user-select:none;">163</span>                  font-size: 0.9rem;
<span style="color:#666; user-select:none;">164</span>                  color: #666;
<span style="color:#666; user-select:none;">165</span>                  font-style: italic;
<span style="color:#666; user-select:none;">166</span>                  padding-top: 0.5rem;
<span style="color:#666; user-select:none;">167</span>                  border-top: 1px solid rgba(0, 0, 0, 0.05);
<span style="color:#666; user-select:none;">168</span>              }
<span style="color:#666; user-select:none;">169</span>              
<span style="color:#666; user-select:none;">170</span>              .dashboard-title {
<span style="color:#666; user-select:none;">171</span>                  color: var(--secondary-color);
<span style="color:#666; user-select:none;">172</span>                  margin-bottom: 1rem;
<span style="color:#666; user-select:none;">173</span>                  font-weight: 600;
<span style="color:#666; user-select:none;">174</span>                  font-size: 1.5rem;
<span style="color:#666; user-select:none;">175</span>                  text-align: center;
<span style="color:#666; user-select:none;">176</span>              }
<span style="color:#666; user-select:none;">177</span>              
<span style="color:#666; user-select:none;">178</span>              .refresh-interval {
<span style="color:#666; user-select:none;">179</span>                  display: none;
<span style="color:#666; user-select:none;">180</span>              }
<span style="color:#666; user-select:none;">181</span>              
<span style="color:#666; user-select:none;">182</span>              /* Responsive adjustments */
<span style="color:#666; user-select:none;">183</span>              @media (max-width: 768px) {
<span style="color:#666; user-select:none;">184</span>                  .app-header h1 {
<span style="color:#666; user-select:none;">185</span>                      font-size: 1.8rem;
<span style="color:#666; user-select:none;">186</span>                  }
<span style="color:#666; user-select:none;">187</span>                  
<span style="color:#666; user-select:none;">188</span>                  .measurement-grid {
<span style="color:#666; user-select:none;">189</span>                      flex-direction: column;
<span style="color:#666; user-select:none;">190</span>                  }
<span style="color:#666; user-select:none;">191</span>                  
<span style="color:#666; user-select:none;">192</span>                  .measurement-item {
<span style="color:#666; user-select:none;">193</span>                      flex-direction: column;
<span style="color:#666; user-select:none;">194</span>                      align-items: flex-start;
<span style="color:#666; user-select:none;">195</span>                  }
<span style="color:#666; user-select:none;">196</span>                  
<span style="color:#666; user-select:none;">197</span>                  .measurement-label {
<span style="color:#666; user-select:none;">198</span>                      width: 100%;
<span style="color:#666; user-select:none;">199</span>                      margin-bottom: 0.3rem;
<span style="color:#666; user-select:none;">200</span>                  }
<span style="color:#666; user-select:none;">201</span>                  
<span style="color:#666; user-select:none;">202</span>                  .measurement-value {
<span style="color:#666; user-select:none;">203</span>                      font-size: 1.2rem;
<span style="color:#666; user-select:none;">204</span>                  }
<span style="color:#666; user-select:none;">205</span>              }
<span style="color:#666; user-select:none;">206</span>          &lt;/style&gt;
<span style="color:#666; user-select:none;">207</span>      &lt;/head&gt;
<span style="color:#666; user-select:none;">208</span>      &lt;body&gt;
<span style="color:#666; user-select:none;">209</span>          {%app_entry%}
<span style="color:#666; user-select:none;">210</span>          &lt;footer&gt;
<span style="color:#666; user-select:none;">211</span>              {%config%}
<span style="color:#666; user-select:none;">212</span>              {%scripts%}
<span style="color:#666; user-select:none;">213</span>              {%renderer%}
<span style="color:#666; user-select:none;">214</span>          &lt;/footer&gt;
<span style="color:#666; user-select:none;">215</span>      &lt;/body&gt;
<span style="color:#666; user-select:none;">216</span>  &lt;/html&gt;
<span style="color:#666; user-select:none;">217</span>  &#x27;&#x27;&#x27;
<span style="color:#666; user-select:none;">218</span>  
<span style="color:#666; user-select:none;">219</span>  if __name__ == &quot;__main__&quot;:
<span style="color:#666; user-select:none;">220</span>      app.run(debug=True)
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

