JQ6BQZBLU3OUANQMZML2FWWIE4QI2GDLOYL6GJTXFKONQDQLKDMAC
Panning (test these at multiple zoom levels):
* When no node has cursor, arrow keys and pageup/pagedown pan surface around, preserving relative positions of nodes
* When a node has cursor in viewport, arrow keys move the cursor within the node, keeping cursor visible, panning surface if scrolling is needed
* Pageup/pagedown scroll a whole viewport height at a time if possible, but keep cursor visible if not possible.
* When a node has cursor, pageup/pagedown pan surface around
* Position a node with some area above viewport. Position cursor at topmost row on screen. Hit up arrow. Surface pans. Cursor doesn't hide behind menu bar.