vendor/DocumentUp/documentup.js
function crawl(e, i, p) {
        while (p = walker[dividedTokens[i]](p, e)) {
          if (isNode(p) && (interpret.apply(p, q(tokens[i])))) {
            if (i) {
              if (cand = crawl(p, i - 1, p)) return cand
            } else return p
          }
        }
      }
function crawl(e, i, p) {
        while (p = walker[dividedTokens[i]](p, e)) {
          if (isNode(p) && (interpret.apply(p, q(tokens[i])))) {
            if (i) {
              if (cand = crawl(p, i - 1, p)) return cand
            } else return p
          }
        }
      }
function crawl ( e , i , p ) { while ( p = walker [ dividedTokens [ i ] ] ( p , e ) ) { if ( isNode ( p ) && ( interpret . apply ( p , q ( tokens [ i ] ) ) ) ) { if ( i ) { if ( cand = crawl ( p , i - 1 , p ) ) return cand } else return p } } }
recursively work backwards through the tokens and up the dom, covering all options
recursively work backwards through the tokens and up the dom covering all options