Loading files
ea39f3ad2This file is pinned to the selected release. Download the original to open it in your design tool.
// ═══════════════════════════════════════════════════════════
// PatternFlow - Browser self-update page (PROGMEM HTML bundle)
//
// Served at http://patternflow.local/update by core_web_update.h.
// Drop a firmware .bin (the app image the web build service emits, or an
// arduino-cli export) and the device flashes itself via Update.h.
//
// The page polls /update/status: stock builds are always ready
// (PF_WEBUPDATE_ALWAYS_ARMED 1); builds that opted into physical arming
// show a LOCKED tag plus the how-to-arm note until the UPDATE screen is
// opened on the device. Upload progress is the XHR's own send progress —
// the device flashes as it receives, so the bar tracks the actual write
// within a buffer's worth.
//
// Styled to the patternflow.work design system (web/docs/
// patternflow-styleguide.html): cream + ink + LED accent, thin rules,
// mono kickers/tags, dashed placeholder-style drop zone.
//
// License: MIT
// ═══════════════════════════════════════════════════════════
// The page body below is generated from console/update.html — edit that,
// then run: python firmware/toolchain/console_pages.py build
#pragma once
#include <pgmspace.h>
const char WEB_UPDATE_HTML[] PROGMEM = R"HTML(<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="/pf-console.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Patternflow — Firmware update</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
:root{--cream:#0C0B09;--cream2:#1B1914;--ink:#EDE7DB;--muted:#8A8272;--faint:#5A5546;--rule:#242118;--rule-soft:#1B1914;--led:#FF5C2E;--panel:#131110;
--sans:'Inter',ui-sans-serif,system-ui,sans-serif;
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace}
*{box-sizing:border-box;margin:0;padding:0}
body{min-height:100vh;background:var(--cream);color:var(--ink);
font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision;
padding:24px 24px 64px}
.panel{width:100%;max-width:560px;background:var(--panel);margin:16px auto 0;padding:48px 48px 44px}
header{display:flex;align-items:center;gap:8px;padding-bottom:12px;border-bottom:1px solid var(--rule);margin-bottom:24px}
.dot{width:7px;height:7px;background:var(--led);border-radius:1px}
h1{font-size:15px;font-weight:600;letter-spacing:.01em;margin:0;flex:1}
.back{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
color:var(--muted);text-decoration:none}
.back:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
#pill{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
padding:5px 10px 4px;border:1px solid var(--faint);color:var(--muted)}
#pill.ok{border-color:var(--ink);color:var(--ink)}
#pill.warn{border-color:var(--led);color:var(--led)}
#pill.bad{border-color:var(--faint);color:var(--faint)}
.sub{max-width:36ch;color:var(--muted);font-size:15px;line-height:1.5;margin-bottom:32px}
.pf-kicker{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
color:var(--muted);margin-bottom:2px}
.step{display:grid;grid-template-columns:40px 1fr;gap:20px;padding:14px 0;border-bottom:1px solid var(--rule);align-items:baseline}
.step:first-of-type{border-top:1px solid var(--rule)}
.step .n{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--muted)}
.step p{font-size:14px;line-height:1.5;color:var(--muted)}
.step b{font-weight:500;color:var(--ink)}
#armHint{display:none;margin:20px 0 0;border:1px dashed var(--rule);background:var(--cream);
padding:14px 16px;font-family:var(--mono);font-size:11.5px;line-height:1.6;color:var(--muted)}
#armHint b{font-weight:500;color:var(--ink)}
#handoff{display:none;margin:0 0 24px;padding:16px 18px;border:1px solid var(--rule);background:var(--cream)}
#handoffFrom{font-family:var(--mono);font-size:11px;color:var(--muted);word-break:break-all;margin:6px 0 14px;line-height:1.6}
#handoffGo{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
background:var(--ink);color:var(--cream);border:1px solid var(--ink);padding:12px 16px;cursor:pointer;
transition:background .15s ease,color .15s ease}
#handoffGo:hover{background:transparent;color:var(--ink)}
#handoffGo:disabled{opacity:.5;cursor:default}
#drop{margin-top:28px;min-height:176px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
border:1px dashed var(--rule);background:var(--cream);cursor:pointer;text-align:center;padding:24px;
transition:border-color .16s ease,background .16s ease}
#drop .big{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink)}
#drop .small{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
#drop.hover{border-color:var(--ink);background:var(--cream2)}
#drop.disabled{opacity:.45}
#bar{height:6px;background:var(--rule-soft);margin:20px 0 10px;display:none}
#fill{height:100%;width:0%;background:var(--led);transition:width .1s linear}
#msg{font-size:13px;min-height:20px;color:var(--muted);line-height:1.55;margin-top:12px}
#msg.ok{color:var(--ink)} #msg.bad{color:var(--led)}
@media(max-width:560px){body{padding:12px 12px 56px}.panel{padding:36px 24px 32px}}
</style></head><body>
<main class="panel">
<header><span class="dot"></span><h1>Update</h1><span id="pill">…</span></header>
<p class="sub">Drop a firmware .bin — the device flashes itself over the LAN and reboots on the new build.</p>
<!-- Shown when the build page hands a firmware URL over via ?src= —
the phone never touches a file picker. -->
<div id="handoff">
<span class="pf-kicker">Linked build</span>
<div id="handoffFrom"></div>
<button id="handoffGo" type="button">Fetch & flash</button>
</div>
<span class="pf-kicker">Two steps</span>
<div class="step"><span class="n">01</span><p>Build & download a <b>.bin</b> — patternflow.work → Build, or an <b>arduino-cli</b> export.</p></div>
<div class="step"><span class="n">02</span><p>Drop it below. Keep the device powered; it verifies, flashes, and reboots itself.</p></div>
<div id="armHint">This build requires arming first. On the device: hold <b>K2</b> → NETWORK, then turn <b>K4</b> → <b>UPDATE</b>.</div>
<div id="drop">
<span class="big">Drop .bin here</span>
<span class="small">or click to choose a file</span>
</div>
<!-- accept="*/*", not ".bin": Android maps unknown extensions to a
media-only picker (camera/gallery), and on some devices NO accept
does the same — an explicit any-type accept is what reliably brings
up the full chooser with the file manager. The JS validates
extension and size instead. -->
<input id="file" type="file" accept="*/*" style="display:none">
<div id="bar"><div id="fill"></div></div>
<div id="msg"></div>
</main>
<script>
var drop=document.getElementById('drop'),fileIn=document.getElementById('file'),
pill=document.getElementById('pill'),bar=document.getElementById('bar'),
fill=document.getElementById('fill'),msg=document.getElementById('msg'),
armHint=document.getElementById('armHint');
var armed=false,busy=false,uploading=false;
function setPill(t,c){pill.textContent=t;pill.className=c||''}
function setMsg(t,c){msg.textContent=t;msg.className=c||''}
// The device serves one client at a time. Skipping polls while uploading is
// not enough on its own: a poll issued a moment BEFORE the upload starts is
// still in flight, and that one request is enough to wedge a 1.2 MB POST into
// "Connection lost during upload". So the poll is abortable and the upload
// cancels it before opening its own connection.
var pollAbort=null;
function poll(){
if(uploading)return;
pollAbort=new AbortController();
fetch('/update/status',{cache:'no-store',signal:pollAbort.signal})
.then(function(r){return r.json()}).then(function(s){
armed=s.armed;busy=s.busy;
if(busy)setPill('BUSY','warn');
else if(armed)setPill('READY','ok');
else setPill('LOCKED','bad');
armHint.style.display=(!armed&&!busy)?'block':'none';
drop.classList.toggle('disabled',!armed||busy);
}).catch(function(e){if(!e||e.name!=='AbortError')setPill('OFFLINE','bad')});
}
setInterval(poll,2000);poll();
drop.addEventListener('click',function(){if(!uploading)fileIn.click()});
fileIn.addEventListener('change',function(){if(fileIn.files.length)upload(fileIn.files[0])});
['dragover','dragenter'].forEach(function(ev){drop.addEventListener(ev,function(e){e.preventDefault();drop.classList.add('hover')})});
['dragleave','drop'].forEach(function(ev){drop.addEventListener(ev,function(e){e.preventDefault();drop.classList.remove('hover')})});
drop.addEventListener('drop',function(e){if(!uploading&&e.dataTransfer.files.length)upload(e.dataTransfer.files[0])});
function upload(f){
if(uploading)return;
if(!/\.bin$/i.test(f.name)){setMsg('That is not a .bin file.','bad');return}
if(f.size>3*1024*1024){setMsg('Too big for the 3 MB app partition. This looks like a merged full-flash image; upload the app .bin instead.','bad');return}
if(f.size<200*1024){setMsg('Suspiciously small for Patternflow firmware. Wrong file?','bad');return}
if(!armed){setMsg('Device is locked - see the arming note above.','bad');return}
uploading=true;
if(pollAbort)pollAbort.abort();
setPill('FLASHING','warn');
bar.style.display='block';fill.style.width='0%';
setMsg('Uploading '+f.name+' ('+(f.size/1048576).toFixed(2)+' MB). Keep this tab open and the device powered.');
var xhr=new XMLHttpRequest();
xhr.open('POST','/update?size='+f.size);
xhr.upload.onprogress=function(e){if(e.lengthComputable)fill.style.width=Math.round(e.loaded*100/e.total)+'%'};
xhr.onload=function(){
uploading=false;
if(xhr.status===200){
fill.style.width='100%';
setMsg('Flashed. Rebooting - the device should be back in about 10 seconds.','ok');
waitForReboot();
}else{
var t='upload failed ('+xhr.status+')';
try{t=JSON.parse(xhr.responseText).error||t}catch(e){}
setMsg('Failed: '+t,'bad');
bar.style.display='none';
}
};
xhr.onerror=function(){
uploading=false;
setMsg('Connection lost during upload. The device still runs its old firmware unless it just rebooted - if in doubt, try again.','bad');
bar.style.display='none';
};
var fd=new FormData();fd.append('firmware',f,f.name);
xhr.send(fd);
}
function waitForReboot(){
var tries=0;
var t=setInterval(function(){
if(++tries>30){clearInterval(t);return}
fetch('/update/status',{cache:'no-store'}).then(function(r){
if(r.ok){clearInterval(t);setPill('BACK','ok');setMsg('Device is back online on the new firmware.','ok')}
}).catch(function(){});
},2000);
}
// ?src= handoff from the build page ("Send over Wi-Fi"): this page fetches
// the .bin itself and feeds it into the same upload path — no file picker,
// which some Android systems cannot show for arbitrary files. The firmware
// route serves public CORS for exactly this fetch.
var srcUrl=null;
try{
var s=new URLSearchParams(location.search).get('src');
if(s&&/^https?:\/\//i.test(s)){
srcUrl=s;
document.getElementById('handoffFrom').textContent=s.replace(/^https?:\/\//i,'');
document.getElementById('handoff').style.display='block';
}
}catch(e){}
document.getElementById('handoffGo').addEventListener('click',function(){
if(!srcUrl||uploading)return;
if(!armed){setMsg('Device is locked - see the arming note above.','bad');return}
var btn=this;
btn.disabled=true;
setPill('FETCHING','warn');
setMsg('Downloading the build from '+srcUrl.split('/')[2]+' ...');
fetch(srcUrl).then(function(r){
if(!r.ok)throw new Error('HTTP '+r.status);
return r.blob();
}).then(function(b){
btn.disabled=false;
upload(new File([b],'firmware.bin',{type:'application/octet-stream'}));
}).catch(function(e){
btn.disabled=false;
poll();
setMsg('Could not download the build ('+e.message+'). Download the .bin on this device and drop it above instead.','bad');
});
});
</script>
</body></html>
)HTML";
// <gz:WEB_UPDATE_HTML> GENERATED by firmware/toolchain/console_pages.py build — do not edit.
// gzip -9 of WEB_UPDATE_HTML (11388 bytes → 4360 bytes), served with Content-Encoding: gzip.
const uint8_t WEB_UPDATE_HTML_GZ[] PROGMEM = {
0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0xb5,0x5a,0xfd,0x72,0xdb,0xb6,
0x96,0xff,0xdf,0x4f,0x81,0x28,0x5b,0x53,0x6a,0x24,0xea,0x23,0xb6,0x93,0x4b,0x59,
0xce,0x8d,0x63,0xbb,0x4d,0xf3,0x39,0xb1,0x33,0xdd,0x9d,0xb6,0x3b,0x03,0x91,0xa0,
0xc4,0x9a,0x24,0x78,0x01,0xd0,0xb2,0xaf,0xec,0x99,0x7d,0x88,0x7d,0xc2,0xfb,0x24,
0xf7,0x9c,0x03,0x90,0xa2,0x64,0x39,0x75,0x3b,0xbb,0x9d,0xa9,0x23,0x12,0xc0,0xc1,
0xc1,0xf9,0xf8,0x9d,0xdf,0x81,0x74,0xf8,0x24,0x92,0xa1,0xb9,0x29,0x04,0x9b,0x9b,
0x2c,0x3d,0xda,0x39,0xc4,0x7f,0x58,0xca,0xf3,0xd9,0xa4,0x25,0xf2,0x16,0xbe,0x10,
0x3c,0x82,0x7f,0x32,0x61,0x38,0x0b,0xe7,0x5c,0x69,0x61,0x26,0xad,0xd2,0xc4,0xbd,
0x97,0x38,0xaa,0x43,0x95,0x14,0x86,0x69,0x15,0x4e,0x5a,0xfd,0x22,0xee,0x85,0x32,
0xd7,0x32,0x15,0xfe,0xef,0xba,0x75,0x74,0xd8,0xb7,0xa3,0xd5,0xea,0x9c,0x67,0x62,
0xd2,0xba,0x4a,0xc4,0xa2,0x90,0xca,0xb4,0x18,0xcc,0x35,0x22,0x07,0x69,0x8b,0x24,
0x32,0xf3,0x49,0x24,0xae,0x92,0x50,0xf4,0xe8,0xa1,0x9b,0xe4,0x89,0x49,0x78,0xda,
0xd3,0x21,0x4f,0xc5,0x64,0x88,0x5b,0x99,0xc4,0xa4,0xe2,0xe8,0x33,0x37,0x46,0xa8,
0x3c,0x4e,0xe5,0x82,0xfd,0xeb,0x7f,0xfe,0x97,0x9d,0x25,0x2a,0x5b,0x70,0x25,0x58,
0x59,0x44,0xdc,0x88,0xc3,0xbe,0x9d,0xb6,0x73,0x98,0x26,0xf9,0x25,0x53,0x22,0x9d,
0xb4,0x0a,0x25,0x60,0xab,0x5c,0x84,0xb0,0xe7,0x5c,0x89,0x78,0xd2,0x9a,0x1b,0x53,
0xe8,0xa0,0xdf,0x8f,0x41,0x03,0xed,0xcf,0xa4,0x9c,0xa5,0x82,0x17,0x89,0xf6,0x43,
0x99,0xb5,0xfe,0xdc,0x5a,0x6d,0xb8,0x49,0x42,0x5a,0xc8,0x42,0x25,0xb5,0x96,0x2a,
0x99,0x25,0x79,0x25,0xe4,0x8f,0xf7,0xeb,0x87,0x5a,0x8f,0x5e,0xc5,0x3c,0x4b,0xd2,
0x9b,0xc9,0x5b,0xb0,0x88,0x0a,0x16,0xb3,0xb9,0xf9,0xfb,0xde,0x60,0x30,0xde,0x1f,
0x0c,0x76,0xdd,0xc8,0x4f,0xc2,0x1c,0x2b,0x9e,0xe4,0xfa,0xd9,0x07,0x99,0xcb,0xf5,
0x29,0x51,0xa2,0x8b,0x94,0xdf,0x4c,0xf4,0x82,0x17,0x2d,0xab,0xb7,0x36,0x37,0xa9,
0xd0,0x73,0x21,0x0c,0x79,0x09,0x9f,0x8e,0x76,0x18,0x0b,0x94,0x94,0x66,0xd9,0xeb,
0x85,0x4a,0xf0,0x2c,0x78,0x3a,0x78,0x33,0x38,0x1e,0xfc,0x6d,0xec,0x9e,0x47,0xc1,
0xd3,0xe1,0xf1,0xf0,0x6f,0xc3,0x3d,0x78,0x01,0xba,0x07,0x4f,0x4f,0x4f,0x4e,0x5f,
0x9c,0x1c,0xc3,0x53,0x56,0x1a,0x11,0x05,0x4f,0x5f,0xbe,0x7e,0x39,0x7a,0x31,0x82,
0xe7,0x18,0x14,0x31,0xc1,0xd3,0xfd,0xd7,0xfb,0xfb,0x7b,0x07,0xf0,0xac,0xca,0x54,
0x04,0x4f,0x47,0x7b,0xa3,0xe1,0xf0,0xa5,0x7b,0xec,0x69,0x19,0x9b,0x86,0xc0,0x14,
0x05,0x9c,0x9d,0xed,0xbf,0x19,0x9d,0xc2,0x53,0xc1,0x73,0x91,0xc2,0xe8,0xf3,0xe1,
0x70,0x38,0x18,0x83,0x62,0xf6,0xbf,0x5e,0x4f,0xf3,0x5c,0x07,0x1e,0x99,0xc1,0xeb,
0x96,0x09,0x3d,0xf7,0xb4,0x50,0x49,0xdc,0xd5,0x37,0xda,0x88,0xac,0x57,0x26,0xdd,
0xd5,0xcb,0xe6,0xd2,0x0c,0xed,0xe2,0xd5,0x76,0x62,0x68,0x27,0x92,0x81,0x03,0xba,
0xe0,0xa1,0xe8,0x9e,0x9f,0xe1,0xcb,0xde,0x17,0x31,0x2b,0x53,0xae,0xba,0x1f,0x44,
0x9e,0xca,0x6e,0x3d,0x7c,0x07,0xc2,0xbe,0x5f,0x4e,0xe5,0x75,0x4f,0x27,0xff,0x4c,
0xf2,0x59,0x30,0x95,0x2a,0x12,0xaa,0x07,0x6f,0xc6,0x19,0x57,0xe0,0xd5,0x60,0x30,
0x2e,0x78,0x14,0xe1,0xd8,0x00,0x67,0x4f,0x65,0x74,0xb3,0xcc,0x92,0xbc,0x37,0x17,
0x09,0x38,0x24,0x18,0x0e,0x06,0x57,0xf3,0xf1,0x94,0x87,0x97,0x33,0x25,0xcb,0x3c,
0x0a,0xae,0xb8,0x6a,0x3b,0xeb,0x76,0xc6,0xa1,0x4c,0xa5,0x72,0xaf,0xc0,0xbe,0x9d,
0x5a,0x79,0x0c,0x8b,0x60,0xb8,0x5f,0x5c,0xf7,0x87,0xfe,0xfe,0x3e,0xb3,0x33,0xf0,
0x90,0x9d,0x71,0x6f,0x21,0xa6,0x97,0x89,0xe9,0xe1,0x94,0x9e,0xce,0xc0,0x7b,0x73,
0xdc,0x9d,0xe7,0x98,0x1d,0x09,0xd7,0x22,0x1a,0x1b,0x71,0x6d,0x7a,0x4a,0xe4,0xa0,
0x2a,0x0e,0xcd,0x84,0x84,0x6c,0x53,0x49,0xf8,0x19,0x42,0x37,0xd1,0x89,0xcc,0xeb,
0x7d,0x2a,0xdd,0x47,0x7b,0xc5,0x35,0xa3,0x3f,0x07,0xf0,0x07,0x0f,0xe2,0x93,0x43,
0x96,0x94,0x7b,0x78,0x8a,0xef,0xe0,0xc0,0xd7,0x36,0x15,0x83,0xfd,0x83,0x41,0x71,
0x7d,0xff,0x50,0xb4,0xa2,0x53,0x19,0x66,0x78,0x00,0xd2,0x78,0x69,0x24,0x5b,0x99,
0x68,0xef,0x25,0xbc,0xb3,0x7f,0xdc,0x36,0x88,0x25,0x42,0x2d,0x5d,0xbc,0x06,0x71,
0x2a,0xae,0xc7,0x70,0x8c,0x59,0xde,0x4b,0xc0,0xb5,0x3a,0x08,0x05,0x3a,0x7e,0x3c,
0xe3,0x45,0x00,0xcb,0x2a,0x41,0xe0,0x00,0x63,0x64,0x16,0x0c,0x47,0xa8,0x47,0xe5,
0x13,0xfb,0x0a,0x84,0x03,0xde,0x24,0x91,0x33,0x1a,0x46,0x5e,0xa5,0x53,0x35,0x67,
0x54,0x9d,0x31,0x82,0xd0,0xb7,0x47,0x7a,0x01,0x82,0x9c,0xcb,0x5e,0x6c,0x3b,0x1b,
0x04,0x6b,0xa7,0xda,0x49,0xf1,0x28,0x29,0x35,0xee,0x44,0x27,0x18,0x2e,0xad,0x2b,
0x92,0x7f,0x0a,0x72,0xd9,0x98,0x1e,0x17,0x56,0xd8,0x01,0x24,0x64,0x2a,0x10,0xa0,
0x7a,0x18,0x51,0x68,0x04,0x7f,0x30,0x14,0xd9,0x2a,0x7c,0xf0,0xc8,0xc1,0x90,0xd4,
0xc1,0x5d,0xad,0x30,0x9b,0xe2,0x6e,0x6f,0x0c,0xc7,0xce,0xb8,0xb1,0x09,0xec,0x7c,
0x5f,0xe8,0x4b,0x10,0x4a,0x8e,0x37,0x0a,0xe2,0x24,0x96,0x2a,0x0b,0xca,0xa2,0x10,
0x2a,0x84,0x90,0xa8,0xfd,0xdd,0x0c,0x38,0x4a,0xe1,0x8e,0x5d,0x13,0x01,0xa6,0x29,
0x80,0x2d,0x99,0x07,0xb9,0xcc,0x45,0xad,0x4d,0x30,0x97,0x57,0xe0,0x9e,0x7b,0x71,
0xba,0xb9,0xa8,0xc4,0x58,0x03,0x78,0x13,0x76,0xa4,0x7e,0xec,0xc9,0x38,0x86,0xf2,
0x10,0x3c,0xb7,0xb6,0x7a,0x5a,0x24,0x69,0xfa,0x98,0x13,0x0e,0xfc,0xfd,0x2d,0x67,
0x1c,0x8e,0x1e,0x73,0xc6,0x2a,0xd8,0x40,0x02,0x1b,0x0e,0x30,0xd6,0xea,0x20,0xb9,
0x17,0x1d,0x04,0x5b,0xeb,0x79,0x68,0xcd,0x52,0x6b,0xeb,0xcb,0xcb,0xa5,0xf3,0xfb,
0x3d,0x2b,0x6c,0xbe,0x58,0x2d,0x82,0xfa,0x93,0x6f,0x5b,0x46,0x61,0xb4,0xf9,0x62,
0xb5,0x6c,0xca,0xa3,0x6d,0xab,0xb6,0x68,0x69,0x5f,0x91,0x9f,0x74,0x39,0x5d,0xae,
0x72,0xf3,0xf9,0x41,0x38,0xdf,0x72,0x9e,0xf1,0x46,0x8c,0x92,0x73,0x2a,0x8c,0xf2,
0xf7,0x37,0x12,0xe4,0xf9,0xa8,0x02,0x81,0xb8,0x77,0x99,0x84,0x97,0x8d,0x0c,0x9d,
0xa6,0x32,0xbc,0x1c,0xff,0xc5,0x20,0x1d,0xee,0xfd,0xc5,0x20,0xdd,0xc8,0x5f,0xa7,
0x1d,0xa0,0x7f,0x51,0x2b,0x36,0x53,0x49,0x34,0xc6,0x3f,0x3d,0x00,0x0e,0x78,0x63,
0x04,0xda,0xb0,0xcc,0xa0,0x7a,0xec,0x61,0x14,0x0c,0x63,0x0b,0x23,0xa3,0xc1,0x0a,
0x47,0x82,0x21,0x42,0xde,0xe0,0x51,0x10,0xd2,0x44,0xa5,0x29,0xa8,0x8b,0x16,0xac,
0xb5,0x08,0xe2,0x44,0x69,0x03,0xd1,0xde,0x43,0xe6,0x54,0xf9,0xd0,0xc8,0x62,0xbb,
0xb0,0x7a,0x1d,0xf3,0xf3,0x47,0xa5,0xc3,0x43,0xc9,0xb0,0x3d,0x70,0xad,0xe8,0xa2,
0x89,0x4b,0x7b,0x5b,0x7c,0xfe,0xad,0xc5,0xd3,0x65,0x13,0xc5,0x80,0x52,0x6c,0x0f,
0x76,0xae,0xb2,0x1f,0x21,0x10,0x6b,0x27,0x20,0x78,0x54,0xd0,0x86,0x86,0x66,0x83,
0xda,0xba,0x64,0x89,0x88,0x03,0x03,0x59,0xb7,0xeb,0x43,0xb5,0x71,0x33,0x9d,0xc9,
0x55,0x58,0x54,0x1e,0x15,0x7c,0xfe,0xfd,0x20,0x3f,0x78,0x28,0xcd,0xdd,0x21,0x1e,
0x7b,0xe6,0x39,0xcf,0x23,0x80,0xb5,0xad,0x67,0x86,0xe3,0x52,0x19,0x5d,0x05,0x18,
0x56,0xc1,0xe1,0xcb,0x87,0x11,0xe8,0x9b,0x46,0x68,0xee,0x77,0xa6,0x64,0xf6,0xd8,
0xe2,0xb0,0x25,0x83,0x16,0xb0,0x7d,0x6f,0x0a,0x52,0x2f,0x03,0xfa,0xdb,0xe3,0x69,
0x5a,0x69,0x7d,0x40,0x8e,0xda,0x12,0x23,0x07,0x4d,0x05,0x7e,0x90,0x7f,0xb5,0x36,
0x3d,0x0e,0xb7,0xef,0xd9,0xe0,0x1e,0xc6,0xba,0xc8,0x78,0xc0,0x92,0x34,0xbd,0xb6,
0xfb,0xa8,0x8a,0x96,0xb0,0x54,0xc0,0xc0,0x83,0x42,0x26,0xc4,0x24,0xaa,0xdd,0x48,
0x93,0x84,0x8a,0xd7,0x6a,0x63,0xe6,0x0f,0xf7,0x35,0x13,0xa0,0x55,0x97,0xf6,0x5d,
0x3d,0xaf,0x1b,0xc2,0x95,0xc5,0x86,0xc6,0x24,0xae,0x80,0xae,0x23,0x37,0xdf,0x8c,
0x1a,0x58,0x0b,0x71,0xc3,0xa7,0x80,0xfb,0x4b,0x89,0xf6,0x31,0x37,0x01,0xa6,0xa2,
0x55,0x32,0x12,0x31,0x2f,0x53,0x43,0x0b,0x22,0x25,0x8b,0xa5,0xc3,0x3d,0x04,0x92,
0x11,0x06,0x51,0x93,0x59,0xbe,0xc0,0xd3,0xad,0x11,0x27,0xfc,0xd3,0x8b,0x12,0x60,
0x79,0x74,0x2e,0x0b,0x7f,0xdb,0xe8,0xd4,0xef,0xa5,0x36,0x49,0x7c,0xd3,0x73,0xfd,
0xd6,0x26,0xcb,0xaa,0x3d,0xf2,0x97,0x12,0x77,0xc3,0xe0,0xe4,0x77,0xd2,0xa1,0xda,
0xa6,0x49,0x3a,0xb7,0xfa,0xa3,0x51,0x01,0xc1,0x03,0x07,0xce,0x23,0x6b,0x6e,0x3a,
0x68,0xb8,0x05,0x2d,0x05,0x74,0x25,0x99,0x3d,0x26,0x3e,0x47,0x7f,0xba,0x2c,0x6d,
0x75,0xa7,0xdd,0x53,0x67,0xfc,0x91,0x7c,0xe6,0x4f,0x33,0xb6,0xed,0xc5,0x9e,0xf6,
0xf5,0x5d,0xf4,0x3d,0xc0,0x4a,0xb6,0xfb,0x65,0xd4,0x58,0x7f,0x3f,0x02,0xf7,0xf6,
0x69,0x74,0xca,0xd5,0xd2,0x85,0xd7,0xc1,0x36,0x16,0x5c,0xb7,0x71,0x9d,0x0d,0x90,
0xa7,0x03,0x36,0x01,0x91,0xc4,0xc5,0xc8,0xf6,0x56,0x8d,0xd0,0x77,0x63,0x4b,0x51,
0xe0,0xc3,0x76,0x7e,0xdd,0x88,0x01,0x9a,0x09,0x7e,0xd6,0x0c,0x11,0x89,0x2b,0x92,
0x97,0xe9,0x59,0xb3,0xa6,0x3d,0x5f,0x4f,0x08,0x2a,0xec,0x5b,0x90,0x6f,0xa3,0xec,
0xd5,0x5c,0x87,0xaa,0xb3,0xa3,0x12,0x28,0x1a,0x99,0xde,0x3d,0x5f,0xdb,0x11,0xe4,
0x65,0xdb,0x58,0xdb,0xdf,0x33,0x11,0x25,0xbc,0xbd,0xd1,0x19,0x75,0x96,0xd4,0x05,
0xae,0x43,0x11,0xfe,0xd9,0x07,0xa3,0xde,0xb9,0xc6,0xaa,0x1a,0x7d,0x7e,0x50,0x75,
0x5e,0x44,0xba,0xee,0x76,0x0e,0xfb,0xb6,0x37,0x3f,0xec,0xd3,0x3d,0xcb,0x21,0xca,
0x3a,0xda,0xd9,0xd9,0x39,0xcc,0x20,0x0a,0x58,0x98,0x72,0xad,0x27,0x2d,0x92,0xd1,
0xc2,0xfe,0xfd,0xd0,0x76,0x50,0x47,0x87,0x10,0x57,0xf5,0x30,0xf4,0x35,0x74,0xd9,
0x02,0xaf,0x8e,0x0e,0xe7,0xc3,0xa3,0xaf,0xee,0x26,0x04,0x3e,0xda,0x79,0x49,0x04,
0x32,0xc0,0x3b,0xad,0xa3,0xdd,0xb9,0x48,0xd3,0xa4,0x18,0x57,0xb3,0xfb,0x4e,0xde,
0x0e,0xca,0x2e,0x2a,0x81,0xc0,0x31,0x5b,0x47,0x27,0x18,0xf3,0x9c,0xc5,0xd5,0xfd,
0x0a,0xa4,0x5c,0xce,0x76,0x33,0x84,0x86,0x31,0x33,0x73,0xc1,0xec,0x7d,0x0d,0x8b,
0x53,0x04,0x0b,0xcd,0x12,0x03,0x2c,0x29,0x66,0x18,0xac,0x34,0xfc,0xfe,0xf5,0x47,
0x06,0x28,0xc8,0x94,0x98,0x42,0xd7,0xaa,0x99,0xcc,0xe9,0x75,0x2e,0x16,0x6c,0x5a,
0x26,0x69,0xe4,0x1f,0xf6,0x0b,0xbb,0xef,0x93,0x5e,0x8f,0x9d,0xcf,0xe5,0x22,0x67,
0x8b,0xb9,0xb0,0xb3,0x68,0x06,0x90,0x81,0x99,0x60,0x08,0xa5,0xba,0xa9,0xc8,0xd7,
0x2f,0xef,0xed,0x2e,0x57,0x09,0x67,0xaf,0xf0,0xe6,0x09,0x2f,0x82,0x6a,0x64,0x81,
0xd5,0xc5,0x1c,0x62,0x12,0x76,0x22,0x55,0x64,0x19,0xa2,0x7a,0x28,0x20,0x85,0x21,
0xe2,0xb7,0x3e,0xeb,0xf5,0xc8,0x9c,0x51,0x72,0x45,0xd6,0x71,0x78,0x4d,0x36,0x86,
0xd7,0x4d,0xeb,0xd6,0xa4,0xb8,0x75,0xf4,0x1e,0x82,0x04,0x60,0x91,0x94,0x73,0x16,
0xb4,0xf3,0x37,0xc4,0x60,0xf1,0x46,0x8f,0xc0,0x6b,0x37,0x61,0x5a,0x02,0xd7,0xcc,
0x9b,0x73,0x7e,0x90,0x2d,0x86,0xec,0x71,0xd2,0xb2,0x63,0xad,0xa3,0x33,0x61,0xc2,
0x39,0xdb,0xe5,0x59,0x31,0xb6,0x46,0x3d,0xec,0xdb,0x21,0xd2,0xd4,0x0a,0xdb,0x79,
0x58,0xb9,0x8b,0x85,0x64,0x48,0xe6,0xf4,0x4a,0x33,0xd2,0xab,0xf2,0x29,0x0c,0xb5,
0xd6,0xe3,0x06,0xf6,0x1c,0x0c,0xab,0x48,0x28,0x8e,0x8e,0xc9,0xe6,0x76,0xff,0x08,
0xbc,0x91,0x4a,0x1e,0x81,0xd9,0x0e,0xa7,0x47,0xe8,0x7a,0x50,0xe6,0xa8,0x76,0x7f,
0xb1,0xba,0x84,0xf3,0x81,0x6a,0x5c,0xb2,0x5d,0xc5,0x95,0x1a,0x33,0x12,0xd1,0x65,
0x00,0xe4,0xb0,0x0b,0x2c,0xe4,0x2a,0x2a,0x93,0x5c,0xf6,0xc2,0x34,0xa1,0xf5,0xe2,
0x1a,0x6f,0xfe,0xc8,0xf3,0xb5,0x75,0x1e,0xa1,0xe4,0x68,0xa5,0x24,0x45,0x65,0x02,
0xec,0x4d,0xe0,0xde,0xec,0x9d,0x00,0xf6,0xda,0x08,0xc6,0x42,0x2e,0x84,0x12,0xd1,
0x18,0xa7,0x5c,0xe1,0x05,0x51,0x22,0x74,0xb7,0x0a,0xd1,0xee,0x5a,0x3c,0xda,0x78,
0x6d,0xea,0xd2,0x0c,0x08,0xc7,0x12,0xc1,0xac,0xf3,0x44,0xbb,0x70,0x54,0xe2,0x1f,
0x25,0x94,0x5b,0x88,0x25,0x05,0x40,0x34,0x63,0xd4,0x05,0xf8,0xec,0x53,0xde,0xd0,
0x20,0x60,0x73,0x09,0x53,0xe1,0xec,0xef,0x46,0xd6,0x64,0xd6,0x32,0x1f,0x4f,0x2f,
0x7e,0xfe,0xf4,0xe5,0x5d,0x17,0xa7,0xc2,0xfc,0x52,0x91,0x7d,0xde,0xed,0x35,0xe7,
0xc0,0x8b,0xaf,0x9f,0x4f,0x5e,0x5f,0x9c,0xe2,0x4b,0x7f,0x8b,0x52,0x08,0xe7,0xdb,
0x42,0x14,0x8a,0xa1,0xcb,0x57,0x4a,0xd2,0x39,0x98,0x60,0x2d,0x3c,0x9b,0x73,0xa9,
0x88,0xb5,0x8e,0xc0,0x45,0xe0,0x94,0xf0,0x12,0xf2,0x83,0x85,0x73,0x29,0xb5,0x70,
0x19,0xd2,0x88,0x9e,0xda,0x43,0x98,0xa0,0x3c,0x0c,0x45,0x61,0x26,0xad,0xef,0xfb,
0xdf,0xb7,0xba,0x2c,0x97,0x86,0xb5,0x70,0xb3,0x56,0xc0,0x5e,0xe7,0xa0,0x17,0xf0,
0xb2,0x8c,0x17,0x9a,0x95,0xf9,0x65,0x8e,0x99,0x0c,0x85,0x4e,0xe4,0x78,0xf9,0xa4,
0x71,0x07,0x5e,0x65,0x27,0x21,0x68,0x4f,0xe6,0xe9,0x8d,0xcb,0x44,0xd6,0x0e,0x79,
0x26,0x14,0xef,0xcf,0x40,0x2d,0xa1,0x6e,0x3a,0xd6,0x49,0x90,0x2b,0x5a,0x66,0x95,
0x51,0x35,0xfb,0xf8,0xc9,0x29,0x50,0x09,0x8a,0x24,0xbc,0x45,0xb3,0x6b,0x58,0x4e,
0x17,0xc1,0x1c,0x37,0x2d,0xe0,0x4c,0xe0,0x7a,0x9e,0xdf,0x50,0x6b,0xe6,0x16,0x31,
0x70,0xe1,0x62,0xce,0x0d,0x5e,0x8d,0x26,0x50,0x0b,0x6f,0xd8,0x14,0xaf,0xca,0x74,
0x25,0xac,0xb4,0x31,0x14,0x97,0x69,0xea,0x8c,0xa1,0xd8,0x22,0x81,0x8a,0x44,0x6f,
0x11,0x36,0x32,0x9e,0x03,0x16,0x01,0x6e,0x5c,0xc0,0x9b,0x9f,0xce,0x81,0x19,0x01,
0x13,0x05,0x90,0xad,0x45,0xd4,0xe7,0x25,0xf5,0xb1,0x62,0xb1,0x24,0x87,0x70,0xe6,
0x51,0x8d,0x35,0x49,0x5e,0x94,0x86,0xfc,0x88,0x22,0xab,0xec,0xb7,0x9f,0x9b,0xd6,
0x65,0x54,0x11,0xc0,0xdb,0x8d,0x02,0xdb,0x5a,0x43,0x2b,0x28,0xdc,0x90,0x25,0xd5,
0x53,0x4c,0xc8,0x6e,0xbd,0xb5,0x9e,0x55,0x38,0x0a,0x05,0xad,0x86,0xa2,0xc3,0x3e,
0x56,0x15,0x88,0xa9,0xc3,0xea,0x62,0x1e,0x0a,0x1c,0xc3,0xa8,0x9a,0x44,0x32,0x2c,
0x33,0x20,0x6c,0xfe,0x4c,0x98,0xd3,0x54,0xe0,0xc7,0xe3,0x9b,0xb7,0x51,0xdb,0xc3,
0x51,0xaf,0xd3,0x45,0x35,0xdf,0xe6,0x0f,0x4f,0xc3,0x71,0x98,0x46,0xe6,0xc0,0x52,
0xf3,0xf0,0x4c,0x1c,0x85,0x99,0x70,0x86,0x87,0xe7,0xc0,0x60,0x25,0x2c,0xfe,0xa6,
0xb0,0xd8,0x0a,0x83,0x43,0x3e,0x3c,0x07,0x06,0x2b,0x61,0x2e,0xab,0x1f,0x9e,0xeb,
0x26,0x78,0xd0,0x90,0xa2,0x69,0xe0,0x51,0x44,0x93,0x98,0xa7,0x48,0x48,0x4b,0x7d,
0xe3,0x3e,0x96,0x05,0x62,0x23,0x44,0x90,0x7d,0x1e,0xef,0xec,0xc4,0x65,0x4e,0x2c,
0x9c,0x69,0x61,0x3e,0x83,0x4e,0x6d,0xd3,0x0d,0x3b,0x4b,0xba,0xe5,0x41,0xce,0xf7,
0xc6,0x7d,0xd3,0x61,0xc6,0xf4,0x8a,0x52,0xf1,0x23,0x7e,0x1b,0x12,0xde,0xde,0x7a,
0xde,0xdd,0xda,0xf2,0x0f,0x7a,0x66,0x57,0x23,0x15,0x59,0x5f,0x8c,0x6f,0xee,0xad,
0xdd,0xe9,0xf7,0x29,0x2a,0x1d,0x02,0x42,0xec,0x5e,0x09,0xac,0xb6,0x02,0x13,0x1c,
0xd6,0x31,0x88,0x7b,0xce,0x4c,0x92,0x09,0x9f,0x9d,0x5f,0x26,0x45,0x81,0xd0,0x55,
0xc8,0x34,0xc5,0x9c,0xc0,0xd8,0xae,0x4f,0x03,0x69,0x82,0xc2,0x30,0xb7,0x45,0x2e,
0xcb,0xd9,0x1c,0xd3,0x30,0xc1,0xd2,0xbd,0xc8,0x03,0x90,0x81,0x8b,0x60,0x8e,0x2e,
0x05,0xd6,0x85,0x4c,0xa2,0xd9,0xd8,0xf1,0xe9,0xd9,0xa7,0x2f,0xa7,0x94,0x29,0x56,
0x10,0x84,0x2f,0x57,0x88,0xaf,0x24,0x0c,0x3a,0x0f,0x5c,0x94,0x03,0x06,0x23,0x25,
0xb3,0xd9,0x6d,0x30,0x17,0x51,0x43,0x44,0x54,0xa1,0x29,0x3f,0xdd,0x8e,0x00,0x16,
0x0b,0x11,0xcd,0x10,0x8d,0x86,0xfe,0x88,0x7d,0x38,0x66,0x9f,0x3f,0x9d,0x5f,0x80,
0x00,0x23,0x51,0x5c,0xeb,0x8d,0xfd,0x32,0x06,0x6d,0x95,0x4a,0x58,0x19,0x95,0x98,
0xc9,0x6e,0xeb,0x16,0x9c,0x50,0x5a,0x06,0x60,0x55,0x65,0x1c,0x68,0xb3,0x41,0xf6,
0xeb,0xf6,0xad,0x94,0x44,0x59,0x21,0xcf,0x43,0x91,0x6a,0x5b,0x4d,0x80,0x8f,0x0b,
0x26,0x0b,0x91,0x93,0x1d,0xec,0x99,0x59,0x58,0x6f,0xe6,0x53,0x38,0xa0,0xd4,0xd7,
0x28,0x71,0x92,0x03,0x54,0x8c,0x57,0x6e,0xc3,0x81,0x76,0x67,0x09,0x31,0x96,0xc4,
0xed,0xda,0x9e,0x1d,0x25,0x10,0xe8,0xb1,0xe9,0x69,0xac,0x04,0xfe,0x43,0x9f,0xd0,
0xad,0x4a,0x22,0xe8,0xb5,0xe9,0xfa,0x23,0xc6,0xf2,0xdf,0xf6,0xfa,0xf6,0x7b,0xac,
0x3e,0x7e,0xaf,0x54,0x6a,0xaf,0xbb,0x0c,0x39,0xf0,0x97,0xc0,0x83,0x2a,0xaa,0x0d,
0x28,0xe9,0x75,0x35,0x34,0x57,0x3c,0x0d,0x6a,0x91,0xbe,0x7d,0x71,0xd7,0xc1,0xeb,
0x1c,0x2c,0x2f,0xed,0x4a,0xaf,0xb6,0xea,0x2c,0xad,0x0e,0x4c,0xf9,0xbf,0x6b,0x78,
0xd1,0xb9,0xeb,0x6c,0x4c,0xd1,0xa4,0x36,0x73,0xa1,0xae,0x7d,0xfa,0x77,0x4c,0xc1,
0xae,0x7d,0xfc,0xc7,0xf6,0x6c,0x70,0x2e,0x7c,0xe8,0x54,0xf1,0xed,0x1d,0x7f,0x3d,
0xff,0x2f,0xaf,0xeb,0xe1,0xd5,0xa7,0xe7,0xae,0x6f,0xc0,0x98,0x02,0x27,0x92,0x88,
0xd5,0xcc,0x2f,0xa7,0xaf,0x4f,0x70,0xaa,0xbc,0x5c,0x9b,0x58,0x8f,0xbf,0xff,0xf4,
0xe6,0xdd,0xe9,0x09,0x4c,0x00,0xde,0x5d,0xcd,0x70,0x79,0xe8,0x13,0x14,0xfa,0xd5,
0xf7,0x5b,0xed,0x27,0x24,0x7a,0x77,0xf7,0x09,0xe9,0xf2,0xca,0xa3,0xeb,0x49,0x0f,
0x8d,0x93,0x0b,0xcf,0xae,0xa4,0x96,0x87,0x92,0xe4,0x7d,0x02,0xd5,0xd9,0xc8,0xd9,
0x2c,0x15,0x00,0x63,0xae,0x09,0xf2,0xba,0x56,0xc6,0xed,0x2d,0x89,0xc0,0x35,0x60,
0x92,0x90,0xa3,0xed,0x6b,0x9b,0x88,0xce,0x12,0x8e,0xf1,0x44,0xdc,0xde,0x0a,0x1f,
0xbf,0xb4,0x7c,0x32,0x99,0x78,0x64,0xea,0x53,0xa5,0x24,0x20,0x53,0xad,0xfa,0xa7,
0xb3,0xb3,0xf7,0x6f,0x3f,0x9e,0x56,0xba,0xdf,0x81,0xbc,0xbb,0x1d,0x18,0xa5,0xef,
0xaf,0xa0,0x46,0xb4,0xd1,0x49,0xdd,0xd1,0x60,0x30,0xe8,0x8c,0x6d,0x8c,0x00,0x56,
0x90,0x86,0xd0,0x0f,0x9c,0x5e,0x41,0xfe,0xa0,0x92,0x22,0x87,0x18,0xf0,0xa8,0x1c,
0x7b,0xdd,0x5a,0x09,0xab,0xc3,0x2a,0x98,0x2c,0x02,0xfb,0x34,0xad,0x4d,0x5b,0xb9,
0x37,0x5b,0x44,0x01,0xc7,0x9c,0x89,0x4d,0x59,0x6e,0x3a,0xfe,0xa3,0xfd,0x54,0xe4,
0x33,0x33,0xef,0x58,0xf1,0x6b,0x43,0xbf,0x0c,0x7e,0x23,0xe9,0xbf,0x00,0xf4,0xf3,
0x19,0x12,0x6d,0x38,0x1e,0x7e,0xa4,0x76,0xde,0xfb,0xcd,0x87,0x54,0x39,0xe5,0x6b,
0xe6,0xba,0xea,0x2c,0xb7,0x1f,0x4a,0x5c,0x75,0x9b,0x46,0x15,0x7e,0xa1,0x04,0x4e,
0x38,0xb1,0x37,0x1f,0x60,0x8e,0x0d,0x77,0x81,0x84,0xb6,0x47,0x0d,0x2f,0x5a,0x73,
0xa5,0x46,0x2a,0xf8,0x95,0x20,0x3d,0xa0,0x1a,0xfd,0xff,0xaa,0xa0,0x44,0x06,0xfb,
0x6f,0x68,0xf1,0x80,0xcf,0x48,0x9d,0xee,0x66,0xdc,0xd4,0x3e,0xdb,0xdd,0x85,0xd8,
0xe5,0x86,0x5f,0x50,0xc7,0x0f,0xf4,0x61,0x9b,0xed,0xb7,0x4d,0xa9,0x7c,0xb0,0x42,
0x98,0xca,0x51,0xdf,0x02,0x19,0xdc,0xbb,0xff,0x2b,0xb2,0xb2,0xff,0xe8,0x27,0x50,
0x3a,0xb4,0x69,0xc7,0x14,0xbf,0x9d,0xce,0xd2,0x15,0x16,0xef,0x02,0xa1,0x17,0x80,
0x11,0x41,0x9e,0x5b,0xba,0x88,0x3b,0xfa,0x75,0xfa,0x59,0x71,0x77,0x56,0x5c,0xec,
0x23,0x93,0x39,0x7a,0xfe,0xfd,0x70,0x30,0xda,0xa3,0x3f,0x0d,0x49,0x52,0x32,0x20,
0x9e,0x0c,0x7c,0x41,0xc0,0xfa,0x1c,0xc1,0x9a,0x17,0x05,0x34,0x07,0xca,0x50,0x5b,
0x8f,0x6c,0x09,0xb6,0x4a,0xa5,0xbc,0xc4,0xc6,0xfe,0x12,0x41,0x1d,0xb8,0xde,0x0c,
0xca,0x07,0x52,0xad,0x1e,0xd1,0x72,0x96,0x64,0x10,0x5a,0xe3,0xaa,0x78,0xa0,0x24,
0x14,0x42,0x9a,0x55,0x0c,0xea,0x5b,0xca,0x1d,0x42,0x76,0x6d,0x68,0x76,0x5e,0x6a,
0x20,0x97,0x89,0x2c,0x35,0x30,0x3d,0xe2,0xbb,0xa4,0x64,0xf3,0x97,0x03,0x55,0x33,
0xe9,0xb3,0x9f,0x95,0x24,0x2a,0x9f,0x8a,0x57,0xdb,0xb7,0xb1,0x78,0xb1,0x92,0x7e,
0x62,0xeb,0x2c,0x1d,0x2c,0xc4,0x76,0xb0,0x07,0x50,0x26,0xac,0xe2,0xb6,0x2f,0x00,
0xdb,0x0a,0xac,0x3c,0x57,0x5b,0xcd,0xba,0x22,0x0f,0x46,0x95,0xc2,0xf9,0xad,0x06,
0xf3,0xce,0x0a,0xd6,0xa9,0x76,0xd9,0xda,0x50,0x03,0xce,0xd9,0xfb,0xd7,0xe7,0x3f,
0xbe,0xfd,0xf8,0xc3,0x1a,0xf2,0x02,0x5b,0xda,0x00,0x4a,0x07,0x8c,0x63,0xa4,0x47,
0x6e,0xc8,0xfe,0xc6,0xc2,0x1b,0x7c,0xe7,0x39,0x81,0x74,0x98,0xaf,0x75,0xed,0xf7,
0x9e,0xd9,0x58,0x79,0xe6,0xb1,0xb6,0xf7,0xcc,0x19,0xb7,0x3f,0x1c,0xec,0xbd,0xdc,
0x7f,0x71,0x00,0x45,0x43,0x9e,0x25,0xd7,0x22,0x6a,0x8f,0x3a,0x30,0xe1,0xc3,0x71,
0xa7,0x6e,0xbd,0xc0,0x0e,0x50,0x60,0xa9,0x74,0xd6,0x35,0x76,0xbd,0x19,0xf3,0xad,
0x96,0x58,0x40,0xaf,0xe7,0x8a,0x0a,0xe0,0x7f,0x7e,0x78,0xff,0xa3,0x31,0xc5,0x17,
0x5b,0xfe,0xed,0x19,0x61,0xcc,0x47,0x29,0x6d,0x0f,0x2b,0x3e,0x1c,0xd0,0x55,0xc2,
0x57,0xa8,0xc8,0x04,0xd5,0xc3,0x0f,0xf5,0x54,0x6b,0x46,0x5f,0xe6,0x85,0x92,0x33,
0x68,0xca,0xf4,0x64,0x23,0x0d,0x85,0xcb,0xb3,0x37,0x32,0x03,0xde,0x8d,0xe0,0xdf,
0xb9,0x67,0x8e,0x0f,0xdc,0xcc,0x7d,0xba,0x98,0xc2,0xe9,0x20,0x4f,0x44,0x10,0x4b,
0x83,0xbe,0x80,0xf3,0x1a,0x9e,0xc2,0x59,0xbf,0xf3,0xee,0x6a,0xe5,0xa8,0x23,0x9e,
0x34,0x40,0x75,0xc7,0x36,0x0f,0x1b,0x64,0xd0,0x95,0x4b,0x5c,0x62,0x8b,0xf8,0x64,
0x32,0x81,0x20,0x75,0xd3,0x2d,0xa3,0x5d,0x77,0x0a,0xde,0x96,0x79,0xd5,0xdd,0x68,
0xe5,0x9a,0x33,0x6a,0x5a,0xa1,0x7d,0xf8,0x42,0x0d,0x2b,0xfa,0xa8,0xd7,0xb4,0xae,
0x9e,0xcb,0x12,0x3a,0xcd,0xa9,0xa0,0xab,0x74,0xa4,0x58,0x10,0x30,0xd0,0x60,0x0c,
0x07,0x20,0x02,0x98,0x4b,0xa4,0xfd,0xb5,0xa2,0xcb,0xd8,0x82,0x27,0xe6,0x4c,0x2a,
0x2b,0xaf,0xed,0x5e,0xdf,0x61,0x31,0xae,0x54,0x43,0x1f,0x99,0x89,0xe7,0x72,0x31,
0xe6,0x90,0x15,0x11,0x86,0xc3,0xea,0x2c,0xcf,0xbc,0x4e,0xad,0xa9,0x51,0x37,0x4b,
0x33,0xf9,0xe9,0xfc,0xd3,0x47,0xbf,0xc0,0xdf,0x05,0xd1,0x91,0xc1,0x15,0x05,0x74,
0x7d,0xe2,0x02,0x98,0x6b,0xc7,0x17,0x58,0x30,0x6f,0x6f,0xcd,0x9d,0xad,0xb0,0xe0,
0x99,0xbb,0xcd,0x63,0xd2,0x26,0x01,0xc4,0x9f,0x59,0x63,0x00,0x5b,0xc3,0xba,0x51,
0xe7,0x51,0x4e,0xc3,0x35,0xb4,0xd1,0xe3,0x7c,0x53,0xed,0xfc,0x4d,0x2a,0xe9,0xaf,
0x71,0x6a,0x22,0xb1,0xaa,0xcc,0xb5,0xa5,0x86,0x60,0xf6,0xfa,0x36,0xaa,0xcc,0x01,
0xaf,0x89,0x44,0xe2,0x35,0xbb,0xbb,0x5d,0x20,0x54,0x48,0x62,0x74,0x4a,0x24,0xcb,
0x29,0xd0,0x5e,0xb0,0x15,0xe3,0x33,0xe8,0xbe,0xfc,0x75,0xa2,0xf3,0xad,0x43,0xde,
0x55,0x69,0x13,0x47,0x94,0x35,0xe0,0xbb,0xec,0x04,0x6a,0x05,0xb8,0x2e,0x8e,0x7c,
0x40,0x49,0x91,0x53,0x0b,0x64,0x35,0x81,0x3a,0xd4,0x75,0x70,0x5f,0x99,0x45,0xe3,
0x84,0x38,0x22,0x56,0xb2,0x2a,0x25,0x1b,0x61,0xb0,0x74,0x9b,0x18,0x95,0x08,0x3d,
0x19,0x54,0x7b,0x9a,0x49,0x93,0xc7,0x6c,0x1a,0x16,0xe2,0xfb,0xd9,0x33,0x5a,0x71,
0xf4,0x1c,0x22,0x3b,0x84,0xfa,0xac,0xea,0xc9,0xa6,0x09,0x77,0x8f,0x27,0xb6,0xf7,
0xa8,0xa9,0xaa,0x53,0x06,0xb6,0x03,0x27,0x5f,0x6e,0xd9,0x68,0xc5,0x47,0x5f,0xbf,
0x79,0x57,0xc5,0xfb,0x7d,0xa8,0xa6,0x14,0x81,0x04,0x4e,0xa0,0xe9,0x68,0x5c,0x44,
0xd6,0x65,0xc0,0xad,0xb4,0x0a,0xdf,0x27,0x84,0x10,0xb6,0x96,0x2a,0x3a,0x2e,0xb7,
0x63,0xdb,0x2e,0x7b,0xf9,0xe8,0x2e,0xf4,0x58,0xac,0x64,0xb6,0x79,0x79,0xd9,0x6e,
0x9d,0x0b,0xbc,0xce,0xc0,0x9b,0xc8,0x9f,0x93,0xde,0x59,0xd2,0xea,0x04,0x16,0x34,
0x69,0x98,0x4c,0x23,0xa8,0x51,0xc2,0x85,0xb6,0xe8,0xd9,0x7b,0x54,0xc4,0xd2,0x58,
0x88,0x88,0x42,0x0b,0xdb,0x9f,0xd5,0x6d,0x87,0x4b,0xcf,0x02,0xc0,0x8b,0x6e,0x3e,
0x72,0xd9,0xbc,0xdb,0xec,0xa2,0x34,0xe8,0xec,0xc2,0xb9,0xbd,0x42,0xa9,0xae,0x67,
0xec,0xcf,0xa7,0x34,0xb6,0x3d,0x58,0xfc,0x01,0x3e,0x16,0x54,0x16,0xb9,0x9a,0x26,
0x46,0x71,0x88,0x4f,0xcb,0x4e,0x28,0xf0,0x2b,0xc3,0xa0,0x2c,0xc0,0x47,0x53,0xf7,
0x95,0x45,0x39,0x05,0x02,0xca,0xde,0x7c,0xfa,0x72,0x4e,0xab,0xc5,0x35,0x0f,0x0d,
0x94,0x59,0x3a,0x13,0x1d,0xc7,0xb6,0x4a,0x60,0x99,0xaf,0x2a,0x75,0x7d,0x12,0x02,
0x85,0x0b,0x2b,0x4d,0x91,0xfc,0xf5,0xcb,0xfb,0x73,0x70,0x64,0x38,0xff,0xcc,0x15,
0xcf,0x74,0x1b,0xaa,0x15,0xfd,0xb2,0x04,0x22,0x16,0xdf,0x76,0xb0,0x2f,0x6f,0x7b,
0x20,0xc3,0xa6,0x09,0xb8,0x5f,0xef,0xee,0xf6,0xff,0x9b,0x7e,0x46,0xf7,0x2a,0xf8,
0xb5,0xff,0x6b,0xbf,0x22,0x38,0xba,0xe3,0x82,0xc4,0x6d,0xa8,0x5d,0x17,0xf0,0x50,
0x83,0xdf,0xb8,0xa1,0xf5,0x3a,0x6b,0xed,0xb5,0x06,0xe8,0x82,0x04,0x0c,0x45,0x7b,
0x63,0xa3,0xae,0x57,0x25,0xeb,0x1f,0x49,0x05,0x89,0xdb,0xeb,0x30,0x86,0xce,0x4e,
0x13,0x03,0xff,0x48,0xd2,0x0f,0x12,0x64,0x3d,0xa6,0x47,0x70,0x1c,0xc5,0x9e,0xfe,
0xf6,0xf6,0x21,0x5a,0xf8,0x7f,0xcc,0x61,0xd0,0x93,0x53,0x93,0x4f,0xd0,0xeb,0xc4,
0x40,0x4c,0x5e,0x7f,0xcd,0x54,0xd3,0x9a,0x15,0x69,0x39,0xbd,0x78,0x73,0x8f,0xb4,
0xd4,0xaa,0xb8,0x9b,0x66,0xdc,0x74,0x95,0x3c,0x94,0x4b,0xde,0x33,0x7b,0x2c,0x1f,
0x8c,0x99,0x40,0x3c,0xf4,0xbd,0xce,0x2f,0xa3,0xdf,0x80,0x7f,0xf8,0xbe,0xe3,0x14,
0x16,0x5a,0xec,0xac,0x87,0xd0,0x03,0x8f,0x4f,0xe0,0x61,0xe6,0x0a,0x42,0x1e,0xc3,
0x8f,0xda,0xb8,0xb6,0xf7,0xe3,0xc5,0xc5,0x67,0xd8,0xa4,0x2a,0x6d,0xce,0xc9,0x75,
0xc3,0x0c,0xbe,0x9b,0xb6,0xab,0x0e,0x71,0x5d,0xf6,0xd4,0xc9,0x5e,0x3b,0x77,0xa3,
0xc4,0x38,0xb6,0x4e,0xa0,0x0d,0x49,0xd5,0xfe,0x65,0xfa,0x5b,0xb7,0x06,0x6a,0xcc,
0x72,0x80,0x3f,0xbc,0xfe,0x0b,0x3c,0x40,0x71,0xf0,0x29,0x05,0x7f,0x5f,0x86,0x46,
0x18,0x00,0x43,0xfc,0x02,0x0f,0xd0,0xf0,0xe1,0xe6,0xf4,0x9b,0x7b,0x57,0x7d,0xe6,
0x7a,0xa9,0x43,0xaa,0x80,0x69,0x5f,0x5f,0xec,0xaf,0x6c,0x0d,0xf5,0x5d,0xf8,0x19,
0x14,0x31,0x40,0x24,0x28,0xef,0x3e,0x3b,0x69,0xce,0x21,0x4c,0x22,0xc8,0x84,0x68,
0x71,0xf5,0x10,0xb1,0x29,0x72,0x17,0xf1,0x14,0x23,0xf7,0x99,0x3a,0xa9,0x0e,0x38,
0x09,0xff,0x37,0x7e,0x06,0xdc,0xa7,0xaf,0xb7,0x0e,0xfb,0xf6,0xb7,0xc6,0xff,0x06,
0x84,0x60,0xe8,0x1d,0x7c,0x2c,0x00,0x00,
};
constexpr size_t WEB_UPDATE_HTML_GZ_LEN = sizeof(WEB_UPDATE_HTML_GZ);
// </gz:WEB_UPDATE_HTML>