function tokenizeSingleQuotedString(sNext, sOption, iAt) {
		var i;

		function nextChar(bConsume) {
			var c = sNext[i];

			if (c === "%" && sNext[i + 1] === "2" && sNext[i + 2] === "7") {
				c = "'";
				if (bConsume) {
					i += 2;
				}
			}
			if (bConsume) {
				i += 1;
			}
			return c;
		}

		for (i = 1; i < sNext.length;) {
			if (nextChar(true) === "'") {
				if (nextChar(false) !== "'") {
					return sNext.slice(0, i);
				}
				nextChar(true); // consume 2nd quote
			}
		}
		throw new SyntaxError("Unterminated string at " + iAt + ": " + sOption);
	}
Tokenizes a string starting and ending with a single quote (which may be %-encoded).
A contained single quote is escaped by doubling it.

@param {string} sNext The untokenized input starting with the opening quote
@param {string} sOption The option string (for an error message)
@param {number} iAt The position in the option string (for an error message)
@returns {string} The unconverted string including the quotes.