Domain sleepmon.pages.dev
CLOUDFLARENET
Software information

cloudflare cloudflare

tcp/443 tcp/80 tcp/8443

  • Open service 172.66.45.31:443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=hsSZLGblvNCr8P6wyDFARDEbNLLODltPZBa8Jw54CjzuotsMw6Zx%2Bk8CZDsgraM8NH35kaKrGRn61oLBSI7rtg36UHzfKJIxyd7ccmBLD2%2Bmwg%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c5a2959abdc-YYZ
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 172.66.45.31:80 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 301 Moved Permanently
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=8HtyPouFrVrTkcKW8NPV4lu96SiuSkSZ4cGI7Y5k8W1Zb9Nv8mtx%2FOUP%2Bd8EoS6j%2BB1HCDx1K5GgogJcbLJMXLjZT9DQr02ZHzUEU1NT3SD%2Bww%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c599fbf8cbf-EWR
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2d1f:80 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 301 Moved Permanently
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=N9f1KvDF2vxe173wh8R21HVEA1riWyuxV8RSrSvyS3ExbLCnPAmjgBudpBfYN2iaa767YETv1rloEQeO39BUz3DbcoU7aTspYqQdvggH3hUJOu2H6skP6OPk7oreAA%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c598f03aa9d-YYZ
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2d1f:8443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=%2Fn20qJcVR0Q1JtnVp%2FsI5H0AigNfONsygFeawqQ1VnGxos8RqAOxj0b1VN961w23PUq6kJGufDHrFlJfCdGtCWItLs25o9yrPEQBLLTF%2FDAqC49oi7PncSYhgfhf%2BA%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c59bf04dc9a-FRA
    alt-svc: h3=":8443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 172.66.46.225:8443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=PJFOI9W2Dznmy6TDApFz2q2SdekrL5wrIzBy9DRe1KrZAwoY9U2D6a3r8QpHpLSpYwiYnianu8s33qqyE7c0IAMD1Sfs9r2vXOpztJnKeDsCQA%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c598dc19f64-AMS
    alt-svc: h3=":8443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 172.66.46.225:443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=TTwNP9%2BfLt9%2B3gL0w77NKG1mokoKX96Gb9gWKKfcqZv5Xzm0CQUG42%2FMlbQrqy9Oug3MzXfkFo%2B%2Bq307uvT8d5LhOkENWoA2D0JY35pDmeKEVg%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c5989bbac7e-YYZ
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2d1f:443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=p%2BDjg%2BBleDyOIWfLYxbrDqcY9GKyRlACtgzLN1MFaC3mirGoOtyxcZn3GtlAuHcBFy4eMwihGqls0Piah6uh9LKXzk%2BfciZsRJy0ZFf%2FLSlDbwWHZD1tNfrrgxfyDg%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c5999f3e911-LHR
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 172.66.46.225:80 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 301 Moved Permanently
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=%2B%2B7I%2Bz83PT8I1SUKuTX%2FZrBvSNmF9%2BJSnXqilvM2aiI5gPsEJdrNmepSi0qhI50ER3GgyHgTesdGtYnUkqIsREo8TwUYjB1Fb%2FGJdl6BISMoGw%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c59392c90cc-AMS
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 172.66.45.31:8443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=XCXk5UK3PtPrAnoopTnZWESY1TvGlIWckadZrYWfdotzdUmqVhhwDExkCkRyjJstLy9Rcp%2FiB5AHKU%2FGQ9035lfYxm6YhqEcj0Hlfjgf4Lo%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c59bc2ba1e0-YYZ
    alt-svc: h3=":8443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2ee1:8443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=oXkHSfZ2HDcU2xkWFwX6U2%2B12BL4Lnm%2B7zrQSnkb8PW%2B3HUMZV%2BR5SabINxYpY2taUuZ0p23lqhQhQ7dXJ4z0m8OPxFg4Rtu2guc1ZMWnmL1ecW1RhvGZ6NSH8lb1w%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c58e8fe780c-EWR
    alt-svc: h3=":8443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2ee1:443 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 404 Not Found
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: no-store
    referrer-policy: strict-origin-when-cross-origin
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=hAhmdRVz8Wt1GdSRUVX6prGqOHyJ%2FKx0nmTB1HgYCwg2OMEZOV9toV4TiBRaXq7lyZgFmEHoucgrSFqfGioSapZ7QN0mNrXGvATypbZ%2BnD9rUJrt%2FULdQvIhAgko4A%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c58eb8f430e-EWR
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2ee1:80 · sleepmon.pages.dev

    2026-01-12 17:37

    HTTP/1.1 301 Moved Permanently
    Date: Mon, 12 Jan 2026 17:37:41 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=bF%2FIBF9hd1AdWg8dWQZ4eNagkOAvlFCRpdZ%2Fn8LXfWPu9bQKN%2F2U6qEcaZskTKb%2FUnVQ38RoVWsyHMYZpIw8Qhj9NPn32%2FWN1v1vuUkUsuD8wCjkWROoZB7Y6qFHiA%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bce6c588ae8d2d3-FRA
    alt-svc: h3=":443"; ma=86400
    
    Found 2 days ago by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2ee1:8443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:37 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Hoja%2F%2Bm3eZPYMWyEJOX3uOxUIYbxYhGY4LAfjpdHkQKENwfcr5EBDzf%2FepR2pcGiq5%2BRXCmbrqxlwsxd7c8c1B6S79SEncrNoePsoGbE1wphjJxWtEF4xhU9IQT2Cw%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac95283ef3db9f-FRA
    alt-svc: h3=":8443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2d1f:8443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:37 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=aCNi7yX%2F78jZipcJF40XEoLdX%2F0LctZoM3N4ZlaSL9eYxg595F0XnIZDTo9terl56CgSOqgP%2B%2F865zXrRpmANCgoK0072Kn3u3vmOOxCWko4mhITSlfTDw%2FKZLZZKA%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac952828b1380f-FRA
    alt-svc: h3=":8443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 172.66.45.31:8443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:37 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=drrIeNnpeL7ok4CfwE5nJUhixlVJxxRbLHpOBRX82GjrXDVMP2oOC%2Fy5hQExXF7mzB8O4NRHr7kz%2Bkv%2FaLQluPPjWjGMRAPwh22vdk7BRdrv4w%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac95280b693a9a-FRA
    alt-svc: h3=":8443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 172.66.45.31:80 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 301 Moved Permanently
    Date: Thu, 08 Jan 2026 15:03:36 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=FPfK6IPWjUbkLC1d%2FDQN6YPgaAYifY1im%2F1PUSNSjdUO3MlS9%2FUaoIcIj5rKeG%2BLx%2FANXS9Cs%2Ff7cHD%2F7IyLZURGPweBLtGAMTKQwQxqZA%2BocA%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac9527796d3a76-FRA
    alt-svc: h3=":443"; ma=86400
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2ee1:443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:37 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=BX1dYkHXG9xI8452EeAerK%2F3T4xZQ65gn9UaWAjUdX74xQLPBx8hb3pGD7A9XsSxRzGXnz33xVC2PuMcu8EKzWKqrDfN1sxpFGMbb2nR72MD59N1AkZ%2FELhqH8%2FU1g%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac95282e0d4d64-FRA
    alt-svc: h3=":443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2d1f:80 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 301 Moved Permanently
    Date: Thu, 08 Jan 2026 15:03:36 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=H5fO3NmzsE632MpXceoQdky3YOKIgttxnlhZHfRERuhyieJrFHiilhggIEqcZOngVqyA3cDmE%2B6rH052Jjxt4OpKIIsQQmPPi1QgSb7fBClqn6ZWqkjhCy27OxftSw%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac952768c4c4e4-LHR
    alt-svc: h3=":443"; ma=86400
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2ee1:80 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 301 Moved Permanently
    Date: Thu, 08 Jan 2026 15:03:36 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=mwk1Dv9QWvuFFo%2BuUtAvwGgMDqgd9gMdpraPLSFHM4bD%2B6RXO4%2FpxsJQM2TbvccsDCtv4opRpCZklXLVhoTr8wMHlL5wWaaSDNHXkrpjLZL5Y4IiZ8HD3Gp7ccCaLw%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac95276999d26d-FRA
    alt-svc: h3=":443"; ma=86400
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 2606:4700:310c::ac42:2d1f:443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:36 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=gxAANH9Vl8kG0%2BPjnTIEFIcfjRqpVkxj%2FnOgRhPu%2FpIv35NZTL88gpYy8WUeqaijki9trUvIyuy%2BxY%2BdIB1K41fjlUmP%2FRvvvD5nbbVyPLNj46QPBUe8KABdn52KDw%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac9527ea73de6d-EWR
    alt-svc: h3=":443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 172.66.45.31:443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:37 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=7OWCyoXlFovMhQYfGFcxavjC8NOJi4fsM3nnTgu6ITrsMMn4lDI8HxK91EYvXZAVR5BZukVe1zCZWnKVcYfkmE%2F%2BZtTjLM5nd9ESbVqtVP4%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac95284cbbf5f6-EWR
    alt-svc: h3=":443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 172.66.46.225:80 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 301 Moved Permanently
    Date: Thu, 08 Jan 2026 15:03:36 GMT
    Content-Length: 0
    Connection: close
    Location: https://sleepmon.pages.dev/
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=X%2FDLu%2FxQATcZPBXBFata%2BCoHgF9r9lb2ehVFWqjbqfkFiaJIH9f9GLUhMV5Md%2BWg18JGDX4IWenABvM2xuZilQ%2F0jrrxi8KxN3Ng0bDzG07Oug%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac95270d705a2e-SJC
    alt-svc: h3=":443"; ma=86400
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 172.66.46.225:443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:37 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Q%2FHAVXtfeoT%2BAG2eCrp5WsAMUeApCkINR%2BYaHtpAFM4niuulQEGg4%2Bt8SpjQrrBctKCkByKhB4BgWatRy2zA1%2FZnK2lxeqNwogY0znNZKvjiLQ%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac9528187b4358-EWR
    alt-svc: h3=":443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
  • Open service 172.66.46.225:8443 · sleepmon.pages.dev

    2026-01-08 15:03

    HTTP/1.1 200 OK
    Date: Thu, 08 Jan 2026 15:03:36 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 2859
    Connection: close
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "29556f812903f7e748bf258cbe81e746"
    referrer-policy: strict-origin-when-cross-origin
    x-content-type-options: nosniff
    Vary: accept-encoding
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=m0%2Firjoa%2B1JnlMc8UxN9WEAl%2BJE44WZtF7ERvjqiTGMytc3%2FUw6TTWZoiFzsxZRLOxTplQrSWcUIv%2FquwgGKDQEr8f7YsUM39qnyJXOat2BAYQ%3D%3D"}]}
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Server: cloudflare
    CF-RAY: 9bac9527edc64f4e-EWR
    alt-svc: h3=":8443"; ma=86400
    
    Page title: SleepMon – SpO2 & RMS Monitor
    
    <!doctype html>
    <html lang="vi">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width,initial-scale=1" />
      <title>SleepMon – SpO2 & RMS Monitor</title>
      <link rel="stylesheet" href="./style.css" />
    </head>
    <body>
      <header class="bar">
        <div class="title">SleepMon</div>
        <div class="pill" id="connPill">API: chưa kết nối</div>
        <div class="pill" id="livePill">LIVE: OFF</div>
      </header>
    
      <main class="container">
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Chọn ngày (tối đa 7 ngày gần nhất)</div>
              <div class="sub">Chọn nhiều ngày để so sánh (tự tắt Live).</div>
            </div>
    
            <div class="row right">
              <label class="toggle">
                <input type="checkbox" id="liveToggle" />
                <span>Live</span>
              </label>
    
              <button id="reloadBtn">Tải lại</button>
            </div>
          </div>
    
          <div id="dateBox" class="datebox"></div>
          <div class="note" id="modeNote"></div>
        </section>
    
        <section class="grid2">
          <section class="card">
            <div class="h">SpO2 (%)</div>
            <canvas id="spo2Chart" height="160"></canvas>
            <div class="chartFooter" id="spo2DayLabel"></div>
          </section>
    
          <section class="card">
            <div class="h">Audio RMS</div>
            <canvas id="rmsChart" height="160"></canvas>
            <div class="chartFooter" id="rmsDayLabel"></div>
          </section>
        </section>
    
        <section class="card">
          <div class="row">
            <div>
              <div class="h">Abnormal files (WAV)</div>
              <div class="sub">Lưu tối đa 7 ngày trên cloud.</div>
            </div>
            <div class="row right">
              <label class="sub">Hiển thị:</label>
              <select id="abnDays">
                <option value="1">1 ngày</option>
                <option value="2">2 ngày</option>
                <option value="3">3 ngày</option>
                <option value="7" selected>7 ngày</option>
              </select>
              <button id="abnReload">Tải</button>
            </div>
          </div>
    
          <div id="abnList" class="list"></div>
        </section>
    
        <section class="card">
          <div class="h">Cấu hình</div>
          <div class="sub">
            Sửa <code>API_BASE</code> trong <code>app.js</code> thành domain Worker của bạn.
            Trang này public (ai cũng xem được), nhưng API ghi dữ liệu yêu cầu token.
          </div>
        </section>
      </main>
    
      <script src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.umd.min.js"></script>
    
      <script src="./app.js"></script>
    </body>
    </html>
    
    Found 2026-01-08 by HttpPlugin
    Create report
sleepmon.pages.dev*.sleepmon.pages.dev
CN:
sleepmon.pages.dev
Key:
ECDSA-256
Issuer:
WE1
Not before:
2026-01-12 16:37
Not after:
2026-04-12 17:37
sleepmon.pages.dev*.sleepmon.pages.dev
CN:
sleepmon.pages.dev
Key:
ECDSA-256
Issuer:
WE1
Not before:
2026-01-08 14:02
Not after:
2026-04-08 15:00