Loading files
927764820This file is pinned to the selected release. Download the original to open it in your design tool.
// ═══════════════════════════════════════════════════════════
// PatternFlow - /knobs page (served by core_knobs_http.h)
// Same cream/ink/LED tokens as the other consoles; no external assets.
// License: MIT
// ═══════════════════════════════════════════════════════════
// The page body below is generated from console/knobs.html — edit that,
// then run: python firmware/toolchain/console_pages.py build
#pragma once
#include <Arduino.h>
static const char KNOBS_INDEX_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 - Knobs</title>
<style>
/* Dark instrument tokens — see patterns_index.h for the note. */
:root{--cream:#0C0B09;--ink:#EDE7DB;--muted:#8A8272;--faint:#5A5546;
--rule:#242118;--rule-soft:#1B1914;--led:#FF5C2E;--ok:#57B87F;--panel:#131110;
--sans:'Inter',ui-sans-serif,system-ui,sans-serif;
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace}
*{box-sizing:border-box}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);
line-height:1.5;-webkit-font-smoothing:antialiased}
.wrap{max-width:680px;margin:0 auto;padding:32px 20px 64px}
header{display:flex;align-items:center;gap:8px;padding-bottom:12px;
border-bottom:1px solid var(--rule)}
.dot{width:7px;height:7px;background:var(--led);border-radius:1px}
h1{font-size:15px;font-weight:600;margin:0;flex:1}
.sub{font-family:var(--mono);font-size:11px;color:var(--faint)}
section{margin-top:26px}
h2{font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
color:var(--muted);margin:0 0 8px}
table{width:100%;border-collapse:collapse;border-top:1px solid var(--rule-soft)}
th{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
color:var(--faint);text-align:left;padding:6px 2px}
td{padding:9px 2px;border-bottom:1px solid var(--rule-soft);font-size:13px;vertical-align:middle}
td.k{font-family:var(--mono);font-size:12px;color:var(--muted);width:34px}
td.pos{font-family:var(--mono);font-size:15px;width:90px}
td.pos small{display:block;font-size:10px;color:var(--faint)}
select{font:inherit;font-family:var(--mono);font-size:12px;padding:5px 8px;
background:var(--panel);color:var(--ink);border:1px solid var(--rule);border-radius:2px;width:100%}
select:focus{outline:none;border-color:var(--led)}
select.dirty{border-color:var(--led)}
.actions{display:flex;gap:8px;align-items:center;margin-top:14px}
button{font:inherit;cursor:pointer}
button.primary{background:var(--ink);color:var(--cream);border:1px solid var(--ink);
border-radius:2px;padding:7px 16px;font-size:13px}
button.primary:hover{background:var(--led);border-color:var(--led)}
button.primary:disabled{opacity:.4;cursor:default}
button.secondary{font-size:13px;color:var(--ink);background:none;
border:1px solid var(--rule);border-radius:2px;padding:7px 16px}
button.secondary:hover{border-color:var(--led);color:var(--led)}
#msg{margin-top:12px;font-family:var(--mono);font-size:11px;min-height:16px}
#msg.err{color:var(--led)}
.note{font-size:12px;color:var(--faint);margin:8px 0 0;line-height:1.45}
.note b{color:var(--muted);font-weight:600}
footer{margin-top:32px;padding-top:12px;border-top:1px solid var(--rule);
font-family:var(--mono);font-size:11px;color:var(--faint)}
a{color:var(--muted)}
</style></head><body><div class="wrap">
<header><span class="dot"></span><h1>Knobs</h1><span class="sub" id="st">-</span></header>
<section>
<h2>Direction and click size</h2>
<table>
<thead><tr><th></th><th>Position</th><th>Direction</th><th>Edges per click</th></tr></thead>
<tbody id="rows"></tbody>
</table>
<div class="actions">
<button class="primary" type="button" id="save" disabled>Save</button>
<button class="secondary" type="button" id="revert" disabled>Revert</button>
</div>
<div id="msg"></div>
<p class="note"><b>Turn a knob clockwise.</b> Its position should go up by one per click.
Goes down: set that knob to <em>Reversed</em>. Moves two per click, or needs two clicks to
move one: change <em>Edges per click</em> until one click is one step (most encoders are 4;
the edge counter under the position shows how many one click really makes).
These are properties of the encoder soldered in, stored on the device — nothing to
rebuild, and a saved change does not move the knob.</p>
</section>
<footer><a href="/">Home</a> · <a href="/status">Status</a></footer>
</div>
<script>
function $(i){return document.getElementById(i)}
function say(t,err){$('msg').textContent=t;$('msg').className=err?'err':''}
var cur=null; // what the device has
var dirty=false; // an unsaved choice on the page
function selDir(i){return $('inv'+i)}
function selSub(i){return $('sub'+i)}
function build(){
var tb=$('rows');tb.innerHTML='';
for(var i=0;i<4;i++){
var tr=document.createElement('tr');
tr.innerHTML='<td class="k">K'+(i+1)+'</td>'+
'<td class="pos"><span id="pos'+i+'">-</span><small id="raw'+i+'"></small></td>'+
'<td><select id="inv'+i+'"><option value="0">Normal</option><option value="1">Reversed</option></select></td>'+
'<td><select id="sub'+i+'"><option value="4">4 (most encoders)</option><option value="2">2</option><option value="1">1</option></select></td>';
tb.appendChild(tr);
selDir(i).onchange=selSub(i).onchange=markDirty;
}
}
function markDirty(){
dirty=true;$('save').disabled=false;$('revert').disabled=false;
for(var i=0;i<4;i++){
selDir(i).className=(selDir(i).value==='1')!==cur.inv[i]?'dirty':'';
selSub(i).className=parseInt(selSub(i).value,10)!==cur.sub[i]?'dirty':'';
}
}
function show(d){
cur=d;
for(var i=0;i<4;i++){
$('pos'+i).textContent=d.clicks[i];
$('raw'+i).textContent=d.raw[i]+' edges';
if(!dirty){
selDir(i).value=d.inv[i]?'1':'0';
selSub(i).value=String(d.sub[i]);
selDir(i).className=selSub(i).className='';
}
}
$('st').textContent='live';
}
function load(){
fetch('/api/knobs',{cache:'no-store'}).then(function(r){return r.json()}).then(show)
.catch(function(){$('st').textContent='disconnected'});
}
$('revert').onclick=function(){dirty=false;$('save').disabled=true;$('revert').disabled=true;if(cur)show(cur);say('')};
$('save').onclick=function(){
var body=[];
for(var i=0;i<4;i++){
body.push('inv'+i+'='+selDir(i).value);
body.push('sub'+i+'='+selSub(i).value);
}
$('save').disabled=true;
fetch('/api/knobs',{method:'POST',
headers:{'Content-Type':'application/x-www-form-urlencoded'},body:body.join('&')})
.then(function(r){return r.json()}).then(function(d){
if(!d.ok){say(d.error||'failed',1);$('save').disabled=false;return}
dirty=false;$('revert').disabled=true;show(d);say('saved');
}).catch(function(){say('failed',1);$('save').disabled=false});
};
build();load();setInterval(load,500);
</script></body></html>
)HTML";
// <gz:KNOBS_INDEX_HTML> GENERATED by firmware/toolchain/console_pages.py build — do not edit.
// gzip -9 of KNOBS_INDEX_HTML (6466 bytes → 2599 bytes), served with Content-Encoding: gzip.
static const uint8_t KNOBS_INDEX_HTML_GZ[] PROGMEM = {
0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0xa5,0x59,0xfd,0x72,0xdb,0x36,
0x12,0xff,0x5f,0x4f,0x81,0xca,0xbd,0x52,0x8a,0x45,0x4a,0x54,0x6c,0xc7,0x21,0x25,
0x75,0xea,0x7c,0xb4,0xb9,0x5e,0x7a,0x99,0x3a,0xff,0x75,0x3a,0x37,0x10,0x09,0x89,
0x88,0x48,0x82,0x03,0x80,0x96,0x55,0x55,0x33,0xf7,0x10,0xf7,0x84,0xf7,0x24,0xb7,
0x0b,0x90,0x14,0x2d,0xc9,0x8e,0x3b,0xe7,0x19,0x5b,0xe4,0x62,0x77,0xb1,0x1f,0xbf,
0x5d,0x2c,0xe4,0xc9,0x37,0xb1,0x88,0xf4,0xa6,0x60,0x24,0xd1,0x59,0x3a,0xeb,0x4c,
0xf0,0x83,0xa4,0x34,0x5f,0x4e,0xbb,0x2c,0xef,0x22,0x81,0xd1,0x78,0x36,0xc9,0x98,
0xa6,0x24,0x4a,0xa8,0x54,0x4c,0x4f,0xbb,0xa5,0x5e,0xb8,0xd7,0xb8,0xa8,0x22,0xc9,
0x0b,0x4d,0x94,0x8c,0xa6,0xdd,0x61,0xb1,0x70,0x23,0x91,0x2b,0x91,0x32,0xef,0x8b,
0xea,0xce,0x26,0x43,0xbb,0x0a,0x6c,0x46,0x3a,0xa7,0x19,0x9b,0x76,0xef,0x38,0x5b,
0x17,0x42,0xea,0x2e,0x01,0x5e,0xcd,0x72,0xd0,0xb6,0xe6,0xb1,0x4e,0xa6,0x31,0xbb,
0xe3,0x11,0x73,0xcd,0xcb,0x80,0xe7,0x5c,0x73,0x9a,0xba,0x2a,0xa2,0x29,0x9b,0xfa,
0xb8,0x95,0xe6,0x3a,0x65,0xb3,0x4f,0x54,0x6b,0x26,0xf3,0x45,0x2a,0xd6,0xc4,0x25,
0x3f,0xe7,0x62,0xae,0x26,0x43,0xbb,0x04,0xd6,0xe8,0x0d,0x7e,0x0e,0x5f,0x90,0xb7,
0x54,0xae,0x08,0xcf,0x95,0x96,0x65,0x06,0x7b,0x10,0x2d,0x56,0x2c,0x57,0xe4,0xbf,
0xff,0xfe,0x0f,0x51,0x8c,0x91,0xc2,0x6a,0x51,0xff,0xe2,0x79,0xcc,0xee,0xbd,0x84,
0x2c,0x84,0x24,0x3a,0x61,0x24,0x17,0x9a,0x79,0xe4,0xc5,0xb0,0x13,0x48,0x21,0xf4,
0xd6,0x75,0x23,0xc9,0x68,0x16,0x9c,0x8d,0xde,0x8c,0x6e,0x46,0xaf,0x43,0xd7,0xe5,
0xf9,0x2a,0x38,0x7b,0xf7,0xf6,0xdd,0xab,0xb7,0x37,0xf0,0x96,0x95,0x9a,0xc5,0xc1,
0xd9,0xf5,0x0f,0xd7,0xe3,0x57,0x63,0x78,0x5f,0x50,0x9e,0xeb,0xe0,0xec,0xf2,0x87,
0xcb,0xcb,0x8b,0xab,0xb0,0xe3,0xba,0xb2,0x4c,0x59,0x70,0x36,0xbe,0x18,0xfb,0xfe,
0x75,0x68,0x5f,0x5d,0x25,0x16,0xc0,0xe3,0xdf,0xf8,0xaf,0xfd,0x0b,0xa0,0xa5,0xa8,
0xe1,0xfd,0xfb,0xcb,0x37,0xe3,0x77,0xf0,0x26,0x40,0xfd,0xe5,0xab,0x9b,0xeb,0x57,
0xef,0xe1,0xa5,0xa0,0x39,0x4b,0x81,0xf5,0xa5,0xef,0xfb,0x23,0x54,0xa7,0x68,0xae,
0x02,0xe7,0x03,0xc4,0x4d,0x3a,0x83,0x92,0x9b,0x77,0x57,0x31,0xc9,0x17,0x03,0xb5,
0x51,0x9a,0x65,0x6e,0xc9,0x07,0x7b,0x22,0x8a,0x64,0x22,0x17,0x81,0xf3,0x77,0xa6,
0x6f,0x24,0x18,0xa7,0xc8,0x47,0x78,0x37,0xb2,0xb8,0xa0,0x0a,0x1a,0xb1,0xc1,0xed,
0x7b,0x24,0xba,0xbf,0xb2,0x65,0x99,0x52,0x39,0xf8,0xc8,0xf2,0x54,0x0c,0x9a,0xe5,
0x5d,0xe7,0xc5,0x76,0x2e,0xee,0x5d,0xc5,0xff,0xe0,0xf9,0x32,0x98,0x0b,0x19,0x33,
0xe9,0x02,0x65,0xd7,0x99,0x8b,0x78,0xb3,0xcd,0xa8,0x5c,0xf2,0x3c,0x18,0x85,0x73,
0x1a,0xad,0x96,0x52,0x94,0x79,0x1c,0xdc,0x51,0xd9,0xab,0x62,0xd7,0x0f,0x23,0x91,
0x0a,0x59,0x91,0x20,0x7c,0xfd,0x70,0x01,0x89,0x87,0x50,0x65,0x3c,0xdd,0x54,0x64,
0x34,0xb9,0x1f,0x76,0x52,0x9e,0x33,0x37,0x61,0x7c,0x99,0xe8,0xc0,0xf7,0x2e,0x43,
0x77,0xcd,0xe6,0x2b,0x0e,0xbc,0x28,0xa0,0x32,0xc8,0x48,0x82,0x26,0xd0,0x1c,0xb1,
0xc1,0xa9,0x62,0xf1,0xae,0xe3,0xad,0x25,0x2d,0xc0,0x88,0x7b,0x8b,0x9c,0xe0,0xea,
0x7a,0x54,0xdc,0x87,0xb5,0x51,0x84,0x96,0x5a,0x84,0x05,0x8d,0x63,0x14,0x7c,0x39,
0x2e,0xee,0xc9,0x18,0xd6,0xc9,0xd5,0x45,0x01,0xf6,0x23,0xb4,0x99,0xdc,0xc6,0x5c,
0x15,0x29,0xdd,0x04,0x8b,0x94,0xdd,0x87,0xa0,0x78,0x99,0xbb,0x1c,0x62,0xa9,0x82,
0x88,0x61,0xa4,0xc3,0x25,0x2d,0x82,0x6b,0x50,0x5a,0xa9,0x01,0xdf,0xb5,0x16,0x59,
0xe0,0x83,0xb6,0xb0,0xd3,0xc4,0xc3,0xd2,0x40,0x37,0x14,0x00,0x8f,0x89,0x75,0x0c,
0x13,0xde,0x07,0x23,0x63,0x00,0x93,0xb5,0xef,0x15,0x08,0x55,0x2e,0xe2,0xe3,0x51,
0xd0,0x00,0x0e,0xfd,0xb0,0x52,0x2a,0x69,0xcc,0x4b,0x85,0x4a,0xc1,0x56,0x7f,0x6b,
0xc3,0xc0,0xff,0x60,0x81,0x7f,0x09,0xa2,0xe6,0x75,0x6d,0x55,0x5d,0x8d,0x46,0x8d,
0xcf,0x21,0xfa,0x11,0xf8,0xb0,0xab,0x2a,0xe7,0xdb,0xe3,0x60,0x63,0x66,0xab,0x24,
0x58,0x65,0xa0,0xff,0x41,0x92,0x0c,0x8a,0xc1,0x6a,0xc5,0x22,0xcd,0x45,0x5e,0x65,
0xd8,0xd5,0xa2,0x08,0xc6,0x57,0xc6,0x96,0xf1,0xf6,0x40,0xfc,0xd0,0x96,0x94,0x61,
0x81,0xb9,0x08,0x20,0x0c,0xbc,0x37,0x7a,0xcd,0xb2,0x50,0xb3,0x7b,0xed,0x6a,0x09,
0xb9,0x86,0x72,0xcb,0x82,0xb2,0x28,0x98,0x8c,0x20,0x8b,0x61,0xa7,0xbd,0xbb,0xa9,
0xa9,0xfe,0x3e,0x83,0x23,0x72,0x8d,0x7b,0x6a,0x3a,0x4f,0x59,0x15,0x43,0x7f,0x34,
0xfa,0x5b,0x1d,0x23,0x10,0x4d,0x69,0xa1,0x58,0x50,0x3f,0xd4,0x0b,0x68,0xee,0xa9,
0x74,0x98,0xfa,0x03,0xef,0x74,0xf2,0x97,0x9d,0xb8,0x7a,0xb6,0x13,0x36,0x84,0x96,
0xd9,0x20,0x2a,0x48,0xd9,0x42,0x37,0x40,0xbc,0x42,0x1c,0x1a,0xaf,0xe2,0x6d,0x4d,
0x7b,0x6d,0x69,0xe1,0xd7,0x01,0x65,0x3d,0x68,0x67,0xf0,0x25,0xc8,0xdd,0x31,0xa9,
0x39,0xb4,0xcb,0x6a,0xbf,0x8c,0xc7,0x71,0xca,0x70,0x07,0x6f,0xf5,0x1c,0x10,0x8c,
0x0f,0x40,0x50,0xa5,0xc1,0x06,0xfc,0xe5,0x85,0x35,0xd6,0x2b,0x84,0x7a,0x8e,0x32,
0x84,0xa7,0x95,0x7c,0x3d,0xda,0x4b,0x12,0x95,0xd1,0x34,0x6d,0xca,0x6d,0x9e,0x8a,
0x68,0xd5,0x96,0x1a,0x3d,0x8a,0xc3,0x14,0x90,0x68,0xf6,0x0d,0x78,0x9e,0x40,0x67,
0xd3,0xe1,0x33,0x3d,0xaa,0x83,0x0b,0x06,0x21,0x8c,0xa0,0x5c,0x0f,0xeb,0xcd,0xf4,
0xd8,0x13,0x4d,0xca,0xa6,0xe1,0x74,0x41,0x1f,0xd4,0xe7,0xb8,0xf1,0x16,0x81,0x59,
0xdb,0x1b,0x2c,0x44,0x54,0xaa,0xad,0x28,0x35,0xb6,0xb5,0x20,0x17,0x39,0x6b,0x61,
0xb6,0xd9,0x0c,0xeb,0xbd,0x16,0xf1,0x62,0x2e,0xf5,0x66,0xfb,0x28,0x97,0x47,0x4d,
0x41,0xaa,0x87,0x1d,0xab,0x6e,0x4f,0x27,0x3a,0x57,0xab,0x72,0x7d,0x93,0xc2,0x79,
0x09,0xa8,0xca,0x1f,0x86,0x32,0x2a,0xa5,0x82,0x8d,0x0a,0xc1,0x51,0xa6,0xe6,0xf1,
0x0a,0xc9,0x41,0x1c,0xac,0x39,0x8c,0x98,0x09,0x4f,0xdb,0xb8,0xaa,0xcf,0x3f,0x12,
0x31,0xc3,0xde,0x39,0x8e,0x58,0x9d,0x1a,0xe8,0x82,0xc4,0xbf,0xaa,0xcb,0xaf,0xc1,
0xf3,0xa1,0x1d,0x41,0x22,0x00,0xe1,0xdb,0x27,0xfb,0xe5,0x71,0xc4,0x0e,0x74,0x40,
0xdc,0xb0,0x8d,0xc4,0x5b,0x81,0x35,0xad,0x37,0x81,0x77,0x51,0xbb,0x1f,0xb3,0x05,
0x2d,0x53,0xdd,0x88,0x40,0xf3,0x13,0x79,0x8c,0x01,0x38,0xa8,0xb3,0x63,0xa4,0xec,
0x4d,0x32,0x49,0xee,0xfc,0x45,0xe8,0x1c,0x06,0xe2,0xd8,0x84,0xda,0xf7,0xd3,0x5e,
0x86,0xc7,0x6e,0x9f,0x65,0x6a,0xd9,0x6e,0xdb,0xa6,0x16,0x9e,0x79,0x12,0x64,0x20,
0x53,0x9f,0xc1,0xc6,0x1a,0x54,0xe6,0x31,0x29,0xb7,0x27,0x00,0x89,0xf3,0xd2,0xf6,
0x89,0x2e,0x52,0xf5,0xc1,0xaa,0x99,0x03,0x4a,0xa1,0x9d,0x43,0x63,0x7d,0x70,0xce,
0x5f,0x5c,0x56,0x8a,0xc8,0x7c,0x7b,0xa2,0x03,0x1d,0x74,0xe5,0x5d,0x67,0x01,0x73,
0x00,0x44,0xa3,0xe5,0xde,0xcb,0x56,0x18,0xf7,0xfe,0x7e,0xe5,0x1c,0x00,0x50,0xfe,
0x1f,0x67,0x23,0x3d,0x61,0xea,0xae,0x03,0x23,0xaf,0x19,0x41,0x27,0x43,0x3b,0x35,
0xe3,0x80,0x34,0x9b,0xc4,0xfc,0x8e,0x44,0x29,0x55,0x0a,0x46,0x5d,0x18,0x56,0xea,
0xa1,0x9a,0xc9,0xd9,0x04,0xce,0x96,0xbc,0x5e,0x83,0x19,0xc1,0x0c,0xcd,0x40,0x9a,
0x4d,0x12,0x7f,0x56,0x0d,0xb7,0xf0,0xf4,0x80,0x0d,0x0e,0xf5,0x2e,0xe1,0x31,0x3c,
0x00,0xbb,0x5b,0xf3,0x0f,0x2b,0x8d,0x30,0x04,0xdb,0x53,0x7b,0xd6,0x21,0x64,0x92,
0x8c,0x67,0x6f,0xb9,0xb4,0x04,0x42,0xf3,0x18,0x74,0xf0,0x68,0x45,0xd0,0x35,0x90,
0x18,0x1b,0x1e,0x73,0xb0,0xe2,0x13,0x3e,0x5b,0xb3,0x35,0x58,0xa6,0x13,0x50,0x8a,
0x7f,0xe0,0xf7,0x93,0x50,0x1c,0x55,0x34,0x84,0x46,0x69,0x43,0x79,0x17,0x2f,0x99,
0x22,0x70,0x16,0xda,0x2d,0x2c,0x7d,0x88,0x8a,0x86,0x56,0x69,0xb5,0x01,0x46,0xc4,
0x58,0x2f,0xc5,0xda,0xdc,0x11,0x0c,0xc5,0x18,0x32,0x6c,0x2c,0x69,0x47,0xac,0x6a,
0x79,0xdd,0x4a,0x81,0x2d,0x8d,0x7a,0xb1,0xaa,0xeb,0x2e,0xc1,0x1b,0xcc,0xb4,0x6b,
0x17,0xab,0xe8,0xd0,0x3b,0xd6,0x25,0x75,0xc1,0xcf,0x6e,0xe1,0x75,0x32,0xb4,0x0c,
0x27,0x55,0x35,0xc5,0x76,0x4a,0x99,0x64,0x78,0xba,0xb6,0xd4,0xfd,0x6a,0x08,0x6d,
0x85,0x93,0x21,0x18,0xdd,0x18,0x8f,0x42,0x50,0x36,0xe8,0x60,0x4d,0x2e,0xea,0x9d,
0x10,0xea,0xb0,0x30,0x9f,0x7d,0x2e,0x25,0x64,0x85,0xac,0x20,0xcf,0xb0,0x06,0x87,
0xe1,0x9a,0x2b,0xe6,0x81,0xd2,0x19,0xf9,0xa0,0x21,0x98,0x55,0xd4,0x89,0x4a,0x44,
0x99,0xc6,0x64,0x29,0x48,0x59,0x90,0xf9,0x86,0x40,0x93,0xd9,0x47,0xda,0x03,0xdd,
0x3f,0x0a,0x88,0x7d,0x2c,0xd6,0x79,0x00,0xb7,0x1b,0xb8,0xec,0x24,0x54,0x5b,0xad,
0x5a,0x90,0x09,0xcb,0xac,0xb5,0x30,0x2d,0x4f,0x86,0xf0,0xe2,0xc1,0x15,0xe0,0x0e,
0xf8,0xf5,0x5a,0xec,0xb5,0x0c,0x08,0x5c,0x80,0x72,0xc6,0x62,0x4b,0x37,0x34,0x78,
0x14,0xa0,0x3c,0x03,0x6e,0xdc,0x32,0xc0,0xeb,0x5f,0xbe,0x64,0x46,0xe3,0x51,0xba,
0x81,0x46,0x4a,0x98,0xcb,0x53,0x63,0x9d,0x85,0x19,0x57,0xe6,0x05,0xee,0x25,0x05,
0xe9,0x65,0x42,0x69,0xc2,0xf2,0x48,0x00,0x4a,0x15,0xa1,0x92,0x91,0x8b,0x10,0xb4,
0xe3,0xa5,0x8b,0x81,0x32,0xb8,0x0d,0x96,0x78,0xfc,0x80,0x12,0x60,0x30,0xe4,0xb6,
0xff,0x6b,0x45,0xe0,0x0f,0xc9,0x68,0xbe,0x69,0x6d,0x00,0xe7,0x4e,0x9a,0x6e,0x80,
0xba,0x62,0xaa,0x8f,0x81,0xf8,0x9c,0x30,0xc5,0x8c,0xf2,0x42,0x8a,0x02,0x07,0x22,
0xb0,0x52,0x2c,0xec,0x2e,0x76,0x6f,0xec,0x03,0xf0,0xc1,0x62,0xb8,0x1e,0x0e,0xc0,
0x36,0x81,0x8f,0xb0,0x09,0xb2,0xd8,0x2b,0x28,0xf9,0x2e,0x8b,0xa9,0x4a,0x42,0xbc,
0x0c,0xe2,0x7d,0xc3,0x86,0x41,0xb2,0x79,0xc9,0xd3,0x78,0x60,0xca,0x88,0x12,0x84,
0x57,0x5c,0x47,0x24,0xc6,0xf8,0x03,0xb7,0x8d,0x15,0x6a,0xc2,0xe8,0x43,0x26,0x8b,
0x19,0xb6,0x84,0xba,0x20,0x27,0xb6,0x73,0xcd,0x26,0x94,0x24,0x92,0x2d,0xe0,0xc6,
0xdc,0x9d,0xfd,0x24,0x32,0xc0,0x25,0x9d,0xc1,0xa6,0x30,0xb0,0x09,0x1d,0x92,0xfd,
0xaa,0xd2,0x54,0x97,0x80,0xfc,0x5b,0xf3,0x89,0x5c,0x93,0x61,0xa5,0xa2,0x53,0xe1,
0x6a,0x52,0x5f,0xb1,0x17,0x65,0x6e,0xab,0xfc,0xdb,0x1e,0xef,0x6f,0x25,0xd3,0x88,
0x2d,0xb8,0xda,0x9b,0xeb,0xaf,0xb7,0x64,0xfa,0x5d,0xca,0xf0,0xf1,0x66,0xf3,0x21,
0x06,0x8e,0xdd,0x5e,0x40,0xd1,0x4d,0x4f,0x0f,0xa0,0xbf,0xf7,0xb7,0xdf,0xf6,0x1c,
0x00,0xad,0xd3,0xf7,0x70,0x6e,0x7d,0x53,0x5d,0xcf,0x75,0xd8,0x90,0x0d,0x80,0x7f,
0xc1,0x6b,0x3c,0xb0,0x7f,0xef,0xc0,0x1f,0x27,0x70,0x9c,0x5d,0x07,0x9a,0x20,0x81,
0x63,0x74,0x9a,0x97,0x69,0x1a,0x12,0xf3,0x33,0x1c,0x92,0x35,0xc2,0xb0,0x15,0xd6,
0x84,0x2a,0xc3,0x69,0x86,0x9c,0xe9,0x82,0xa6,0x30,0x34,0x5b,0x4e,0x68,0x6e,0x65,
0x5e,0x47,0x54,0x20,0x6f,0x95,0x90,0x82,0x2e,0x59,0xcb,0x52,0x96,0x42,0xe3,0x69,
0xf9,0x07,0x86,0xf1,0xfc,0xce,0x39,0x7f,0xe8,0x0f,0x4b,0x6f,0xcb,0xf9,0x43,0x2e,
0xe8,0x99,0x07,0x5c,0x26,0x99,0xbd,0xfe,0x16,0x32,0x8b,0x36,0xe9,0xf9,0x14,0xd8,
0xb0,0x27,0x39,0x30,0xb5,0xcf,0x3d,0x9e,0xe7,0x4c,0xfe,0xf4,0xf9,0xe3,0x3f,0xa6,
0x8e,0x83,0x30,0x85,0x59,0xbf,0x87,0x7c,0x7c,0x3a,0x0a,0xf9,0xe4,0x22,0xe4,0xe7,
0xe7,0x46,0xb6,0x92,0x96,0xd3,0x26,0xd4,0x38,0x0c,0x69,0x56,0x45,0xbb,0xe7,0x68,
0x09,0x0a,0x0d,0xa3,0x96,0x6d,0xad,0x13,0x1d,0xd7,0xfd,0x60,0xd5,0x9d,0xfd,0xec,
0x9c,0xf7,0xf8,0xb9,0xdf,0x3f,0x77,0xa0,0x0b,0xc6,0x33,0xe7,0xbc,0x63,0xa3,0xd8,
0x66,0x83,0x72,0xe8,0x56,0x27,0x01,0x76,0x17,0x78,0x05,0x97,0xce,0x9d,0xd6,0x19,
0x60,0xc6,0x6b,0xdb,0xaf,0xe8,0xba,0x5a,0x84,0x35,0xa4,0xce,0x8e,0xf5,0x02,0xbf,
0x19,0x3a,0x8d,0x80,0x0d,0xa3,0x11,0x10,0x85,0x09,0xd0,0x1d,0x4d,0x4b,0xe8,0x82,
0xa3,0xee,0xec,0x17,0xb8,0xe7,0xd0,0x74,0x32,0xb4,0x0b,0x87,0x0c,0x7e,0xb7,0xd5,
0x5e,0x6a,0x96,0xa1,0x55,0xfd,0xb5,0x5d,0x6d,0x5a,0x4e,0xec,0x7a,0xd1,0x9d,0x5d,
0x1c,0xb4,0x8c,0xfe,0x63,0x06,0x8c,0xbb,0xb3,0xf1,0x13,0xc6,0xf9,0x8f,0x59,0x55,
0x65,0x65,0xee,0x51,0xb8,0xc2,0xe5,0xf1,0x9b,0x04,0x01,0xa1,0x65,0x95,0xad,0x06,
0x6b,0x9e,0xc8,0x6d,0x95,0x4f,0x1b,0x60,0xed,0x49,0x70,0xf8,0xac,0xde,0x22,0x9c,
0x51,0x68,0xd7,0x69,0xe1,0xab,0x59,0xb1,0x18,0xb3,0x98,0xd7,0xb2,0x64,0x58,0x4d,
0x08,0x75,0x28,0xa7,0xfa,0x34,0xa9,0x6a,0x01,0x01,0x68,0x8e,0x95,0xe3,0xa5,0x27,
0x11,0xb8,0x37,0x75,0x5f,0x9f,0xbd,0x3d,0xd1,0x86,0x62,0x3a,0x75,0x7c,0xa7,0xff,
0xcd,0x74,0x0a,0x75,0x0a,0x38,0xbc,0xfb,0x8d,0xff,0xfe,0xbd,0x63,0xac,0xc2,0x12,
0x6e,0x7c,0xae,0x1c,0xdc,0x2b,0x2a,0xf0,0x1b,0xbf,0x0f,0x80,0xe4,0xfd,0xa2,0x51,
0x38,0xf0,0x47,0xb5,0x36,0xc8,0xe2,0xb1,0xb6,0x07,0xc1,0xc0,0x06,0xde,0x8b,0x8d,
0xb9,0xd8,0x26,0xe2,0xa7,0xfd,0x81,0x38,0x58,0x70,0x3f,0xec,0x43,0xb1,0x67,0x4f,
0x25,0xd8,0x2b,0xac,0xf9,0x2c,0xce,0x0f,0xf9,0x80,0x0a,0x4c,0xe7,0x8e,0x39,0x58,
0x54,0xe5,0x1c,0x5f,0xf4,0xbe,0x31,0x16,0x56,0xbb,0xb4,0xe3,0x66,0x43,0x14,0x37,
0x71,0xf1,0xc1,0x8b,0x51,0x25,0xd7,0x0e,0x8b,0xe5,0xbb,0xd5,0x12,0x4e,0x85,0x5e,
0x5c,0x39,0xde,0x0f,0x8f,0xf4,0xed,0xc3,0x77,0x2a,0xa4,0x75,0xb8,0x77,0x1d,0xfb,
0x8b,0x80,0xd0,0x07,0x4d,0xd7,0x49,0x39,0x40,0x24,0x6c,0x07,0x31,0x15,0xb4,0x6a,
0x58,0x0b,0xa6,0xa3,0xa4,0xe7,0x0c,0x69,0xc1,0x87,0x78,0xd0,0x28,0x67,0xb0,0x8d,
0x68,0x94,0xb0,0xc0,0xc9,0x85,0x6b,0x8e,0x34,0x67,0x07,0xfa,0x12,0x96,0xf7,0x6a,
0xf1,0x9e,0x6c,0xfa,0xa1,0xf4,0xbe,0x28,0x20,0xf4,0x6b,0x16,0xcc,0x4e,0xdf,0x58,
0xe4,0x45,0x14,0x35,0x37,0x32,0xe6,0x44,0x38,0xb6,0x0d,0xc0,0x09,0xb3,0x52,0x0e,
0xa5,0xc4,0x62,0xd8,0x08,0xad,0x6c,0x63,0x17,0xaa,0x03,0x13,0x35,0x6d,0xa9,0x69,
0xb7,0xfc,0x13,0xf8,0xaf,0xeb,0xe2,0x18,0xfe,0x66,0x05,0x52,0x07,0xb0,0xe9,0x1b,
0x14,0xe1,0x43,0x88,0x47,0x96,0xe3,0xf4,0x77,0x61,0x67,0xaf,0xec,0xc4,0xae,0x55,
0x6f,0xc7,0x01,0x73,0xfa,0xdb,0xef,0x4f,0x83,0x0e,0x99,0xbc,0xa2,0x54,0x49,0x7d,
0xa4,0x9c,0x3b,0x53,0xe7,0xfc,0x00,0x22,0x55,0xaa,0x5b,0xbc,0x75,0x07,0xb3,0xbc,
0x6d,0x98,0xf4,0xc3,0x56,0x7a,0x4f,0xf9,0xfb,0x48,0x22,0x33,0xa6,0x13,0x11,0x07,
0xce,0xa7,0x7f,0xde,0x7e,0x76,0x06,0x66,0x3f,0x3b,0xda,0xab,0x60,0xeb,0x54,0x29,
0x70,0x3f,0xc3,0x84,0x0a,0x18,0x85,0xce,0x05,0x3e,0x53,0x74,0x77,0x78,0xef,0xae,
0xd7,0x6b,0x17,0xbf,0x93,0x72,0x4b,0x99,0xda,0xae,0x09,0xd9,0x19,0xa0,0xb1,0x81,
0xb1,0xf8,0x0b,0x5c,0xf0,0x7b,0xce,0x77,0x10,0xb7,0x2a,0xdb,0xcf,0x05,0x48,0xc3,
0x12,0x37,0xb5,0x63,0xaa,0xc9,0x13,0xab,0xfe,0x16,0x73,0x11,0xe3,0xf5,0x50,0xc8,
0x3f,0xff,0x74,0xe0,0x7a,0x04,0x0e,0x3a,0x03,0xbf,0xff,0x78,0x9f,0xb3,0xbb,0xec,
0x2a,0x4d,0x07,0xd0,0x78,0x04,0x02,0x55,0x07,0xb1,0x99,0x37,0x93,0x42,0x7d,0xac,
0x82,0x91,0x47,0xa8,0x35,0x5c,0xcf,0x30,0xc5,0x60,0x17,0xee,0xeb,0x76,0x16,0x08,
0x6d,0x85,0x85,0x30,0x42,0x9b,0x6f,0xd8,0x21,0x8d,0x3d,0x24,0x0d,0x2e,0x47,0x23,
0x60,0x6c,0xfe,0x9d,0x01,0x03,0xba,0xb9,0xd6,0x0d,0xed,0x7f,0x4c,0xfe,0x07,0x12,
0x67,0x90,0x92,0x42,0x19,0x00,0x00,
};
constexpr size_t KNOBS_INDEX_HTML_GZ_LEN = sizeof(KNOBS_INDEX_HTML_GZ);
// </gz:KNOBS_INDEX_HTML>