src/utils.js
function parseQS(qs, keys) {
	var index = qs.indexOf('?');
	var parsed = {};

	if (index !== -1) {
		var pairs = qs.substr(index + 1).split('&');
		var pair = [];

		for (var i = 0, c = pairs.length; i < c; i++) {
			pair = pairs[i].split('=');

			if((!isEmpty(pair[1])) && (!isEmpty(parseJSON(pair[1])))) {
				parsed[decodeForm(decodeURIComponent(pair[0]))] = parseJSON(decodeForm(decodeURIComponent(pair[1])));
			}
		}
	}

	return keys
		? pick(parsed, keys)
		: parsed;
}
function parseQS(qs, keys) {
	var index = qs.indexOf('?');
	var parsed = {};

	if (index !== -1) {
		var pairs = qs.substr(index + 1).split('&');
		var pair = [];

		for (var i = 0, c = pairs.length; i < c; i++) {
			pair = pairs[i].split('=');

			if((!isEmpty(pair[1])) && (!isEmpty(parseJSON(pair[1])))) {
				parsed[decodeForm(decodeURIComponent(pair[0]))] = parseJSON(decodeForm(decodeURIComponent(pair[1])));
			}
		}
	}

	return keys
		? pick(parsed, keys)
		: parsed;
}
Parse QS

@param {String} qs
@param {Array} [keys]
@returns {Object}
@private