1355    {
 1356        int num = (int)(
_flags & Flags.IndexMask);
 
 1361        {
 1363            {
 1365                while (
num2 != num && UriHelper.IsLWS(
ptr[--
num2]))
 
 1366                {
 1367                }
 1369            }
 1370            if (
_syntax.
IsAllSet(UriSyntaxFlags.AllowEmptyHost | UriSyntaxFlags.AllowDOSPath) && 
NotAny(Flags.ImplicitFile) && num + 1 < 
num2)
 
 1371            {
 1373                for (i = num; 
i < 
num2; 
i++)
 
 1374                {
 1375                    char c;
 1376                    if ((c = 
ptr[i]) != 
'\\' && c != 
'/')
 
 1377                    {
 1378                        break;
 1379                    }
 1380                }
 1381                if (
_syntax.
InFact(UriSyntaxFlags.FileLikeUri) || i - num <= 3)
 
 1382                {
 1383                    if (i - num >= 2)
 1384                    {
 1385                        _flags |= Flags.AuthorityFound;
 
 1386                    }
 1387                    char c;
 1388                    if (i + 1 < 
num2 && ((c = 
ptr[i + 1]) == 
':' || c == 
'|') && UriHelper.IsAsciiLetter(
ptr[i]))
 
 1389                    {
 1390                        if (i + 2 >= 
num2 || ((c = 
ptr[i + 2]) != 
'\\' && c != 
'/'))
 
 1391                        {
 1393                            {
 1395                            }
 1396                        }
 1397                        else
 1398                        {
 1401                            {
 1402                                _flags |= Flags.AuthorityFound;
 
 1403                            }
 1404                            num = ((
i == num || 
i - num == 2) ? i : (
i - 1));
 
 1405                        }
 1406                    }
 1407                    else if (
_syntax.
InFact(UriSyntaxFlags.FileLikeUri) && i - num >= 2 && i - num != 3 && i < 
num2 && 
ptr[i] != 
'?' && 
ptr[i] != 
'#')
 
 1408                    {
 1411                    }
 1412                }
 1413            }
 1414            if ((
_flags & (Flags.DosPath | Flags.UncPath | Flags.UnixPath)) == Flags.Zero)
 
 1415            {
 1416                if (num + 2 <= 
num2)
 
 1417                {
 1419                    char c3 = 
ptr[num + 1];
 
 1421                    {
 1422                        if ((
c2 != 
'/' && 
c2 != 
'\\') || (
c3 != 
'/' && 
c3 != 
'\\'))
 
 1423                        {
 1425                        }
 1426                        _flags |= Flags.AuthorityFound;
 
 1427                        num += 2;
 1428                    }
 1429                    else if (
_syntax.
InFact(UriSyntaxFlags.OptionalAuthority) && (
InFact(Flags.AuthorityFound) || (
c2 == 
'/' && 
c3 == 
'/')))
 
 1430                    {
 1431                        _flags |= Flags.AuthorityFound;
 
 1432                        num += 2;
 1433                    }
 1435                    {
 1436                        if ((
_flags & (Flags.HasUnicode | Flags.HostUnicodeNormalized)) == Flags.HasUnicode)
 
 1437                        {
 1439                        }
 1442                    }
 1443                }
 1444                else
 1445                {
 1447                    {
 1449                    }
 1451                    {
 1452                        if ((
_flags & (Flags.HasUnicode | Flags.HostUnicodeNormalized)) == Flags.HasUnicode)
 
 1453                        {
 1455                        }
 1458                    }
 1459                }
 1460            }
 1461            if (
InFact(Flags.DosPath))
 
 1462            {
 1463                _flags |= (
Flags)(((
_flags & Flags.AuthorityFound) != Flags.Zero) ? 327680 : 458752);
 
 1466            }
 1470            {
 1472            }
 1474            {
 1477                {
 1479                }
 1480            }
 1482        }
 1484        {
 1486        }
 1488    }
bool IsAllSet(UriSyntaxFlags flags)
 
bool NotAny(UriSyntaxFlags flags)
 
bool InFact(UriSyntaxFlags flags)
 
unsafe int CheckAuthorityHelper(char *pString, int idx, int length, ref ParsingError err, ref Flags flags, UriParser syntax, ref string newHost)