1240    {
 1241        bool flag = false;
 1242        bool flag2 = false;
 1243        bool flag3 = false;
 1244        bool flag4 = false;
 1245        bool flag5 = false;
 1246        int result2 = 0;
 1247        int result3 = 0;
 1248        int result4 = 0;
 1249        int result5 = 0;
 1250        int zeroes = 0;
 1251        int result6 = 0;
 1253        TimeSpanTokenizer tokenizer = 
new TimeSpanTokenizer(
input, -1);
 
 1254        int returnValue;
 1255        for (; 
i < 
format.Length; 
i += returnValue)
 
 1256        {
 1258            switch (c)
 1259            {
 1260            case 'h':
 1261                returnValue = DateTimeFormat.ParseRepeatPattern(
format, i, c);
 
 1262                if (returnValue > 2 || flag2 || !
ParseExactDigits(ref tokenizer, returnValue, out result3))
 
 1263                {
 1264                    return result.SetInvalidStringFailure();
 1265                }
 1266                flag2 = true;
 1267                break;
 1268            case 'm':
 1269                returnValue = DateTimeFormat.ParseRepeatPattern(
format, i, c);
 
 1270                if (returnValue > 2 || flag3 || !
ParseExactDigits(ref tokenizer, returnValue, out result4))
 
 1271                {
 1272                    return result.SetInvalidStringFailure();
 1273                }
 1274                flag3 = true;
 1275                break;
 1276            case 's':
 1277                returnValue = DateTimeFormat.ParseRepeatPattern(
format, i, c);
 
 1278                if (returnValue > 2 || flag4 || !
ParseExactDigits(ref tokenizer, returnValue, out result5))
 
 1279                {
 1280                    return result.SetInvalidStringFailure();
 1281                }
 1282                flag4 = true;
 1283                break;
 1284            case 'f':
 1285                returnValue = DateTimeFormat.ParseRepeatPattern(
format, i, c);
 
 1286                if (returnValue > 7 || flag5 || !
ParseExactDigits(ref tokenizer, returnValue, returnValue, out zeroes, out result6))
 
 1287                {
 1288                    return result.SetInvalidStringFailure();
 1289                }
 1290                flag5 = true;
 1291                break;
 1292            case 'F':
 1293                returnValue = DateTimeFormat.ParseRepeatPattern(
format, i, c);
 
 1294                if (returnValue > 7 || flag5)
 1295                {
 1296                    return result.SetInvalidStringFailure();
 1297                }
 1298                ParseExactDigits(ref tokenizer, returnValue, returnValue, out zeroes, out result6);
 
 1299                flag5 = true;
 1300                break;
 1301            case 'd':
 1302            {
 1303                returnValue = DateTimeFormat.ParseRepeatPattern(
format, i, c);
 
 1304                if (returnValue > 8 || flag || !
ParseExactDigits(ref tokenizer, (returnValue < 2) ? 1 : returnValue, (returnValue < 2) ? 8 : returnValue, out var _, out result2))
 
 1305                {
 1306                    return result.SetInvalidStringFailure();
 1307                }
 1308                flag = true;
 1309                break;
 1310            }
 1311            case '"':
 1312            case '\'':
 1313            {
 1315                if (!DateTimeParse.TryParseQuoteString(
format, i, stringBuilder, out returnValue))
 
 1316                {
 1318                    return result.SetBadQuoteFailure(c);
 1319                }
 1321                {
 1323                    return result.SetInvalidStringFailure();
 1324                }
 1326                break;
 1327            }
 1328            case '%':
 1329            {
 1330                int num = DateTimeFormat.ParseNextChar(
format, i);
 
 1331                if (num >= 0 && num != 37)
 1332                {
 1333                    returnValue = 1;
 1334                    break;
 1335                }
 1336                return result.SetInvalidStringFailure();
 1337            }
 1338            case '\\':
 1339            {
 1340                int num = DateTimeFormat.ParseNextChar(
format, i);
 
 1341                if (num >= 0 && tokenizer.NextChar == (ushort)num)
 1342                {
 1343                    returnValue = 2;
 1344                    break;
 1345                }
 1346                return result.SetInvalidStringFailure();
 1347            }
 1348            default:
 1349                return result.SetInvalidStringFailure();
 1350            }
 1351        }
 1352        if (!tokenizer.EOL)
 1353        {
 1354            return result.SetBadTimeSpanFailure();
 1355        }
 1357        if (
TryTimeToTicks(flag6, 
new TimeSpanToken(result2), 
new TimeSpanToken(result3), 
new TimeSpanToken(result4), 
new TimeSpanToken(result5), 
new TimeSpanToken(result6, zeroes), out var result7))
 
 1358        {
 1359            if (!flag6)
 1360            {
 1361                result7 = -result7;
 1362            }
 1363            result.parsedTimeSpan = 
new TimeSpan(result7);
 
 1364            return true;
 1365        }
 1366        return result.SetOverflowFailure();
 1367    }
static bool ParseExactLiteral(ref TimeSpanTokenizer tokenizer, StringBuilder enquotedString)
 
static bool TryTimeToTicks(bool positive, TimeSpanToken days, TimeSpanToken hours, TimeSpanToken minutes, TimeSpanToken seconds, TimeSpanToken fraction, out long result)
 
static bool ParseExactDigits(ref TimeSpanTokenizer tokenizer, int minDigitLength, out int result)
 
static void Release(StringBuilder sb)
 
static StringBuilder Acquire(int capacity=16)