private string toQueryStr(string q, int start, int end, bool escaped)
{
if (!escaped) return q.Substring(start, end-start);
StringBuilder s = new StringBuilder(end-start);
int prev = 0;
for (int i=start; i<end; ++i)
{
int c = q[i];
if (c != '\\')
{
s.Append((char)c);
prev = c;
}
else
{
if (prev == '\\') { s.Append((char)c); prev = 0; }
else prev = c;
}
}
return s.ToString();
}