nl_tokens: first : xxxx xxxx? xxx?xxxx second : ?xxx xxx?xxxx
pl_tokens: function join ( first , second ) { if ( ! first || ! second ) { return first + second ; } var firstIndex = first . indexOf ( '?' ) ; var secondIndex = second . indexOf ( '?' ) ; var firstQuery = '' ; var secondQuery = '' ; if ( firstIndex != - 1 ) { firstQuery = first . substring ( firstIndex ) ; first = first . substring ( 0 , firstIndex ) ; } if ( secondIndex != - 1 ) { secondQuery = second . substring ( secondIndex ) ; second = second . substring ( 0 , secondIndex ) ; } var query = firstQuery && secondQuery ? firstQuery + secondQuery . substring ( 1 ) : ( firstQuery || secondQuery ) ; if ( second ) { var lastIndex = first . length - 1 ; var startWithSep = isPathSeparator ( <mask> [ 0 ] ) ; if ( isPathSeparator ( first [ lastIndex ] ) ) { first = startWithSep ? first . substring ( 0 , lastIndex ) + second : first + second ; } else { first = first + ( startWithSep ? '' : '/' ) + second ; } } return WEB_PROTOCOL_RE . test ( first ) ? formatUrl ( first + query ) : first + query ; }