@@ -435,13 +435,18 @@ function restoreNodeValues(allNodes, nodeStates) {
437function flattenNodes(nodes) {
437function flattenNodes(nodes) {
438− var treeReduce = function(prev, cur, i, arr) {
438+ var nodesById = {};
439− var flatKids = cur.kids.reduce(treeReduce, []);
439+
440− flatKids.push(cur);
440+ function addAllToDict(node) {
441− return prev.concat(flatKids);
441+ nodesById[node.id] = node;
442+ node.kids.forEach(addAllToDict);
444+ nodes.forEach(addAllToDict);
444− return nodes.reduce(treeReduce, []);
446+ var allNodes = Object.keys(nodesById).sort().map(function(key) {
447+ return nodesById[key];