parseTable = (table) =>
[...table.querySelectorAll("tr:not(:first-child)")]
.map(r => [...r.querySelectorAll("td")].map(c => c.textContent.trim()))
.map(row => Object.fromEntries(
d3.zip(
[...table.querySelectorAll("th")].map(h => h.textContent.trim()),
row)));