392 references to Flags
System (392)
net\System\URI.cs (335)
128private Flags m_Flags; 163get {return (m_Flags & Flags.ImplicitFile) != 0;} 168get {return (m_Flags & (Flags.UncPath|Flags.DosPath)) != 0;} 176get {return (m_Flags & Flags.DosPath) != 0;} 184get {return (m_Flags & Flags.UncPath) != 0;} 190private Flags HostType { 191get {return m_Flags & Flags.HostTypeMask;} 225&& NotAny(Flags.IntranetUri)))); } 231private bool AllowIdnStatic(UriParser syntax, Flags flags) 235&& StaticNotAny(flags, Flags.IntranetUri)))); 318return (m_Flags & Flags.UserDrivenParsing) != 0; 324m_Flags = Flags.UserDrivenParsing | (m_Flags & Flags.UserEscaped); 339private bool NotAny(Flags flags) { 343private bool InFact(Flags flags) { 347private static bool StaticNotAny(Flags allFlags, Flags checkFlags) { 351private static bool StaticInFact(Flags allFlags, Flags checkFlags) { 358Flags cF = m_Flags; 359if ((m_Flags & Flags.MinimalUriInfoSet) == 0) { 367if ((m_Flags & Flags.AllUriInfoSet) == 0) { 376if (allowDnsOptimization && InFact(Flags.CanonicalDnsHost)) { 493m_Flags = Flags.Zero; 520dontEscape = InFact(Flags.UserEscaped); 542m_Flags = Flags.Zero; 807case Flags.DnsHostType: return UriHostNameType.Dns; 808case Flags.IPv4HostType: return UriHostNameType.IPv4; 809case Flags.IPv6HostType: return UriHostNameType.IPv6; 810case Flags.BasicHostType: return UriHostNameType.Basic; 812case Flags.UncHostType: return UriHostNameType.Basic; //return (UriHostNameType)(UriHostNameType.Basic+10); 814case Flags.UnknownHostType: return UriHostNameType.Unknown; 836return NotAny(Flags.NotDefaultPort); 860return InFact(Flags.LoopbackHost); 1046if (NotAny(Flags.HostNotCanonical|Flags.PathNotCanonical|Flags.ShouldBeCompressed)) { 1105UnescapeMode mode = (InFact(Flags.PathNotCanonical) && !IsImplicitFile) 1114if (InFact(Flags.ShouldBeCompressed)) { 1157if (InFact(Flags.NotDefaultPort)) { 1229get{return ((m_iriParsing && InFact(Flags.HasUnicode)) || 1230(AllowIdn && (InFact(Flags.IdnHost) || InFact(Flags.UnicodeHost))));} 1252if (AllowIdn && (((m_Flags & Flags.IdnHost) != 0) || ((m_Flags & Flags.UnicodeHost) != 0))){ 1272if (HostType == Flags.IPv6HostType) { 1281else if (HostType == Flags.BasicHostType 1282&& InFact(Flags.HostNotCanonical | Flags.E_HostNotCanonical)) { 1302if (HostType == Flags.DnsHostType) { 1324return InFact(Flags.UserEscaped); 1431if (NotAny(Flags.AuthorityFound) || IsDosPath) { 1664return (m_iriParsing && InFact(Flags.HasUnicode)) ? m_String : OriginalString; 1771if (NotAny(Flags.AllUriInfoSet) || obj.NotAny(Flags.AllUriInfoSet)) { 1808if (InFact(Flags.CanonicalDnsHost) && obj.InFact(Flags.CanonicalDnsHost)) { 1985private static unsafe ParsingError ParseScheme(string uriString, ref Flags flags, ref UriParser syntax) 2004flags |= (Flags)idx; 2021m_Flags |= Flags.ErrorOrParsingRecursion; 2038ushort idx = (ushort) (m_Flags & Flags.IndexMask); 2043m_Flags &= ~(Flags.IndexMask | Flags.UserDrivenParsing); 2048((m_Flags & Flags.HasUnicode)!=0) && 2049((m_Flags & Flags.HostUnicodeNormalized) == 0)) ? m_originalUnicodeString : m_String)) 2069&& NotAny(Flags.ImplicitFile) && (idx + 1 < length)) { 2084m_Flags |= Flags.AuthorityFound; 2099m_Flags |= Flags.DosPath; 2103m_Flags |= Flags.AuthorityFound; 2119m_Flags |= Flags.UncPath; 2129if ((m_Flags & (Flags.UncPath|Flags.DosPath)) != 0) { 2148m_Flags |= Flags.AuthorityFound; 2155else if (m_Syntax.InFact(UriSyntaxFlags.OptionalAuthority) && (InFact(Flags.AuthorityFound) || 2157m_Flags |= Flags.AuthorityFound; 2163if (m_iriParsing && (m_Flags & Flags.HasUnicode) != 0 && (m_Flags & Flags.HostUnicodeNormalized) == 0) 2168m_Flags |= ((Flags)idx | Flags.UnknownHostType); 2178if (m_iriParsing && (m_Flags & Flags.HasUnicode) != 0 && (m_Flags & Flags.HostUnicodeNormalized) == 0) 2183m_Flags |= ((Flags)idx | Flags.UnknownHostType); 2192if (InFact(Flags.DosPath)) { 2194m_Flags |= (((m_Flags & Flags.AuthorityFound)!= 0)? Flags.BasicHostType :Flags.UnknownHostType); 2195m_Flags |= (Flags)idx; 2214if ((idx < (ushort)length && pUriString[idx] == '\\') && NotAny(Flags.ImplicitFile) && 2222m_Flags |= (Flags)idx; 2243if ((!m_iriParsing && AllowIdn && (((m_Flags & Flags.IdnHost) != 0) || ((m_Flags & Flags.UnicodeHost) != 0))) || 2244(m_iriParsing && ((m_Flags & Flags.HasUnicode) == 0) && AllowIdn && ((m_Flags & Flags.IdnHost) != 0))){ 2246m_Flags &= ~(Flags.IndexMask); 2247m_Flags |= (Flags)m_String.Length; 2253if (m_iriParsing && ((m_Flags & Flags.HasUnicode) != 0)){ 2255m_Flags |= Flags.UseOrigUncdStrOffset; 2265private unsafe void CreateUriInfo(Flags cF) { 2280if ((cF & Flags.ImplicitFile) != 0) { 2288if (StaticInFact(cF, Flags.UncPath)) { 2292while(idx < (ushort)(cF & Flags.IndexMask) && (m_String[idx] == '/' || m_String[idx] == '\\')) { 2306if ((cF & Flags.AuthorityFound) != 0) 2313if ((cF & (Flags.UncPath|Flags.DosPath)) != 0) { 2316while( idx < (ushort)(cF & Flags.IndexMask) && (m_String[idx] == '/' || m_String[idx] == '\\')) { 2330if ((cF & Flags.HostTypeMask) == Flags.UnknownHostType 2332|| StaticInFact(cF, Flags.DosPath) 2336info.Offset.User = (ushort) (cF & Flags.IndexMask); 2339cF &= ~Flags.IndexMask; 2341cF |= Flags.SchemeNotCanonical; 2349if (HostType == Flags.BasicHostType) { 2351info.Offset.Path = (ushort) (cF & Flags.IndexMask); 2352cF &= ~Flags.IndexMask; 2356if ((cF & Flags.HasUserInfo) != 0) { 2370idx = (ushort) (cF & Flags.IndexMask); 2374cF &= ~Flags.IndexMask; 2378cF |= Flags.SchemeNotCanonical; 2391bool UseOrigUnicodeStrOffset = ((cF& Flags.UseOrigUncdStrOffset) != 0); 2393cF &= ~Flags.UseOrigUncdStrOffset; 2410cF |= (Flags.PortNotCanonical | Flags.E_PortNotCanonical); 2424cF |= Flags.NotDefaultPort; 2429cF |= (Flags.PortNotCanonical | Flags.E_PortNotCanonical); 2437cF |= Flags.MinimalUriInfoSet; 2452if (( m_Flags & Flags.MinimalUriInfoSet) == 0) 2455m_Flags = (m_Flags & ~Flags.IndexMask) | cF; 2475if (NotAny(Flags.ErrorOrParsingRecursion)) 2477m_Flags |= Flags.ErrorOrParsingRecursion; 2480m_Flags &= ~Flags.ErrorOrParsingRecursion; 2485Flags flags = m_Flags; 2495if (HostType == Flags.BasicHostType) { 2505if (NotAny(Flags.ImplicitFile) || (result & Check.ReservedFound) != 0) { 2506flags |= Flags.HostNotCanonical; 2510if (InFact(Flags.ImplicitFile) && (result & (Check.ReservedFound | Check.EscapedCanonical)) != 0) { 2517flags |= Flags.E_HostNotCanonical; 2518if (NotAny(Flags.UserEscaped)) 2532else if (NotAny(Flags.CanonicalDnsHost)){ 2536flags |= (Flags.HostNotCanonical | Flags.E_HostNotCanonical); 2542flags |= (Flags.HostNotCanonical | Flags.E_HostNotCanonical); 2557private static string CreateHostStringHelper(string str, ushort idx, ushort end, ref Flags flags, ref string scopeId) 2561switch (flags & Flags.HostTypeMask) { 2563case Flags.DnsHostType: 2567case Flags.IPv6HostType: 2573case Flags.IPv4HostType: 2578case Flags.UncHostType: 2583case Flags.BasicHostType: 2585if (StaticInFact(flags, Flags.DosPath)) { 2601case Flags.UnknownHostType: 2611flags |= Flags.LoopbackHost; 2633Flags flags = m_Flags & ~Flags.HostTypeMask; 2642flags &= ~Flags.HostTypeMask; 2643flags |= Flags.UnknownHostType; 2647if (err != ParsingError.None || (flags & Flags.HostTypeMask) == Flags.UnknownHostType) 2650m_Flags = (m_Flags & ~Flags.HostTypeMask) | Flags.BasicHostType; 2657m_Flags |= (Flags.HostNotCanonical | Flags.E_HostNotCanonical); 2661m_Flags = (m_Flags & ~Flags.HostTypeMask) | (flags & Flags.HostTypeMask); 2672m_Flags &= ~Flags.NotDefaultPort; 2673m_Flags |= (Flags.PortNotCanonical|Flags.E_PortNotCanonical); 2687m_Flags &= ~Flags.NotDefaultPort; 2689m_Flags |= Flags.NotDefaultPort; 2691m_Flags |= (Flags.PortNotCanonical|Flags.E_PortNotCanonical); 2713ushort nonCanonical = (ushort)(((ushort)m_Flags & ((ushort)Flags.CannotDisplayCanonical<<7)) >> 6); 2714if (InFact(Flags.SchemeNotCanonical)) { 2715nonCanonical |= (ushort)Flags.SchemeNotCanonical; 2720if (InFact(Flags.ShouldBeCompressed|Flags.FirstSlashAbsent|Flags.BackslashInPath)) { 2721nonCanonical |= (ushort)Flags.PathNotCanonical; 2725nonCanonical |= (ushort)Flags.PathNotCanonical; 2743ushort nonCanonical = (ushort)((ushort)m_Flags & (ushort)Flags.CannotDisplayCanonical); 2747if ((m_Flags & (Flags.ShouldBeCompressed|Flags.FirstSlashAbsent|Flags.BackslashInPath)) !=0) { 2748nonCanonical |= (ushort)Flags.PathNotCanonical; 2752nonCanonical |= (ushort)Flags.PathNotCanonical; 2790if (InFact(Flags.AuthorityFound)) { 2798if ((parts & UriComponents.UserInfo) != 0 && InFact(Flags.HasUserInfo)) 2803if (NotAny(Flags.UserEscaped)) 2809if (InFact(Flags.E_UserNotCanonical)) { 2820chars, ref count, '@', '/', '\\', InFact(Flags.UserEscaped) ? UnescapeMode.Unescape : 2853if (formatAs != UriFormat.UriEscaped && HostType == Flags.BasicHostType 2858(InFact(Flags.UserEscaped) ? UnescapeMode.Unescape : UnescapeMode.EscapeUnescape); 2889if ((parts & UriComponents.SerializationInfoString) != 0 && HostType == Flags.IPv6HostType && 2903if (InFact(Flags.NotDefaultPort)) { 2918else if (InFact(Flags.NotDefaultPort) || ((parts & UriComponents.StrongPort) != 0 && 2938if (InFact(Flags.AuthorityFound) && count !=0 && chars[0] == '/') 2963if (NotAny(Flags.UserEscaped)) 2980ref count, '#', c_DummyChar, c_DummyChar, (InFact(Flags.UserEscaped) ? 2995ref count, '#', c_DummyChar, c_DummyChar, (InFact(Flags.UserEscaped) ? 3018if (NotAny(Flags.UserEscaped)) 3035ref count, '#', c_DummyChar, c_DummyChar, (InFact(Flags.UserEscaped) ? 3049ref count, '#', c_DummyChar, c_DummyChar, (InFact(Flags.UserEscaped) ? 3075if (!InFact(Flags.HasUserInfo)) 3084if (!InFact(Flags.HasUserInfo)) 3087if (InFact(Flags.NotDefaultPort) || m_Syntax.DefaultPort == UriParser.NoDefaultPort) 3102if (InFact(Flags.HasUserInfo)) { 3133if (InFact(Flags.NotDefaultPort|Flags.PortNotCanonical)) { 3144if (uriParts == UriComponents.Path && InFact(Flags.AuthorityFound) && 3185if (InFact(Flags.NotDefaultPort) || m_Syntax.DefaultPort == UriParser.NoDefaultPort) 3195if (InFact(Flags.HasUserInfo)) { 3210if (NotAny(Flags.HasUserInfo)) 3243Flags cF = Flags.Zero; 3249bool buildIriStringFromPath = m_iriParsing && ((m_Flags & Flags.HasUnicode) != 0) && ((m_Flags & Flags.RestUnicodeNormalized) == 0); 3271cF |= Flags.SchemeNotCanonical; 3279cF |= Flags.SchemeNotCanonical; 3283if (((m_Flags & Flags.AuthorityFound) != 0) && (idx + i + 3 >= length || str[idx + i + 1] != '/' || 3286cF |= Flags.SchemeNotCanonical; 3292if ((m_Flags & Flags.HasUserInfo) != 0){ 3296cF |= Flags.UserNotCanonical; 3299cF |= Flags.E_UserNotCanonical; 3304cF |= Flags.UserIriCanonical; 3398if (((m_Flags & Flags.AuthorityFound) != 0) && ((syntaxFlags & UriSyntaxFlags.PathIsRooted) != 0) 3400cF |= Flags.FirstSlashAbsent; 3407if (IsDosPath || (((m_Flags & Flags.AuthorityFound) != 0) && 3413cF |= (Flags.E_PathNotCanonical | Flags.PathNotCanonical); 3418cF |= (Flags.E_PathNotCanonical | Flags.PathNotCanonical); 3422if (((syntaxFlags & (UriSyntaxFlags.CompressPath)) != 0) && ((cF & Flags.E_PathNotCanonical) != 0 || 3425cF |= Flags.ShouldBeCompressed; 3429cF |= Flags.BackslashInPath; 3434cF |= Flags.E_PathNotCanonical; 3443if (((m_Flags & Flags.ImplicitFile) == 0) || ((m_Flags & Flags.UserEscaped) != 0) || 3446cF |= Flags.PathNotCanonical; 3451if (((m_Flags & Flags.ImplicitFile) != 0) && (result & (Check.ReservedFound | Check.EscapedCanonical)) != 0){ 3458cF |= Flags.E_PathNotCanonical; 3464cF |= Flags.PathIriCanonical; 3509cF |= Flags.QueryNotCanonical; 3513cF |= Flags.E_QueryNotCanonical; 3519cF |= Flags.QueryIriCanonical; 3567cF |= Flags.FragmentNotCanonical; 3571cF |= Flags.E_FragmentNotCanonical; 3577cF |= Flags.FragmentIriCanonical; 3585cF |= Flags.AllUriInfoSet; 3590m_Flags |= Flags.RestUnicodeNormalized; 3601ref ParsingError err, ref Flags flags, ref UriParser syntax) { 3645flags |= (Flags.DosPath|Flags.ImplicitFile|Flags.AuthorityFound); 3663flags |= (Flags.UncPath|Flags.ImplicitFile|Flags.AuthorityFound); 3906ref ParsingError err, ref Flags flags, UriParser syntax, ref string newHost ) 3915bool hasUnicode = ((flags & Flags.HasUnicode) != 0); // perf 3916bool hostNotUnicodeNormalized = ((flags & Flags.HostUnicodeNormalized) == 0); // perf 3929flags &= ~Flags.UncPath; //UNC cannot have an empty hostname 3930if (StaticInFact(flags, Flags.ImplicitFile)) 3933flags |= Flags.BasicHostType; 3939flags |= Flags.HostUnicodeNormalized;// no host 3968flags |= Flags.HasUserInfo; 4009flags |= Flags.IPv6HostType; 4020flags |= Flags.HostUnicodeNormalized; 4025IPv4AddressHelper.IsValid(pString, (int) start, ref end, false, StaticNotAny(flags, Flags.ImplicitFile), syntax.InFact(UriSyntaxFlags.V1_UnknownUri))) 4027flags |= Flags.IPv4HostType; 4031flags |= Flags.HostUnicodeNormalized; 4036DomainNameHelper.IsValid(pString, start, ref end, ref dnsNotCanonical, StaticNotAny(flags, Flags.ImplicitFile))) 4040flags |= Flags.DnsHostType; 4042flags |= Flags.CanonicalDnsHost; 4049flags |= Flags.IntranetUri; 4061if (StaticNotAny(flags, Flags.HasUnicode)) 4063flags |= Flags.IdnHost; 4067flags |= Flags.CanonicalDnsHost; 4071flags |= Flags.HostUnicodeNormalized; 4079StaticNotAny(flags, Flags.ImplicitFile))) 4090if (UncNameHelper.IsValid(pString, start, ref end, StaticNotAny(flags, Flags.ImplicitFile))) 4094flags |= Flags.UncHostType; 4098flags |= Flags.HostUnicodeNormalized; 4108if (end < length && pString[end] == '\\' && (flags & Flags.HostTypeMask) != Flags.HostNotParsed 4114flags |= Flags.UnknownHostType; 4117flags &= ~Flags.HostTypeMask; 4146flags &= ~Flags.HostTypeMask; 4161flags &= ~Flags.HostTypeMask; 4176flags &= ~Flags.HostTypeMask; 4182if ((flags & Flags.HostTypeMask) == Flags.HostNotParsed) 4185flags &= ~Flags.HasUserInfo; 4190flags |= Flags.BasicHostType; 4223flags |= Flags.UnknownHostType; 4228flags |= Flags.BasicHostType; 4231&& StaticNotAny(flags, Flags.HostUnicodeNormalized)){ 4243flags |= Flags.HostUnicodeNormalized; 4250flags |= Flags.UnknownHostType; 4259bool iriParsing, bool hasUnicode, UriParser syntax, string userInfoString, ref Flags flags, 4264flags |= Flags.DnsHostType; 4270flags |= Flags.IntranetUri; 4282flags |= Flags.UnicodeHost; // we have a unicode host 4285flags |= Flags.IdnHost; // we have at least one valid idn label 4287if (allAscii && atLeastOneIdn && StaticNotAny(flags, Flags.HasUnicode)) 4292(StaticInFact(flags, Flags.HasUserInfo) ? userInfoString : null); 4295else if (!iriParsing && (StaticInFact(flags, Flags.UnicodeHost) || StaticInFact(flags, Flags.IdnHost))) 4300(StaticInFact(flags, Flags.HasUserInfo) ? userInfoString : null); 4330flags |= Flags.HostUnicodeNormalized; 4335ref Flags flags, ref string newHost, ref ParsingError err) 4337if (StaticNotAny(flags, Flags.HostUnicodeNormalized) && (AllowIdnStatic(syntax, flags) || 4356flags |= Flags.HasUnicode; 4365flags |= Flags.IdnHost; 4367flags |= Flags.UnicodeHost; 4385flags |= Flags.HostUnicodeNormalized; 4576if (InFact(Flags.FirstSlashAbsent)) 4591if (InFact(Flags.ShouldBeCompressed)) 4599if (m_Syntax.InFact(UriSyntaxFlags.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical) 4612if (InFact(Flags.E_PathNotCanonical) && NotAny(Flags.UserEscaped)) { 4635if (InFact(Flags.ShouldBeCompressed)) 4640if (m_Syntax.InFact(UriSyntaxFlags.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical) 4663if (InFact(Flags.ShouldBeCompressed)) 4671if (formatAs == UriFormat.UriEscaped && NotAny(Flags.UserEscaped) && InFact(Flags.E_PathNotCanonical)) { 4679else if (m_Syntax.InFact(UriSyntaxFlags.ConvertPathSlashes) && InFact(Flags.BackslashInPath)) 4685if (formatAs != UriFormat.UriEscaped && InFact(Flags.PathNotCanonical)) 4688if (InFact(Flags.PathNotCanonical)) 4694mode = (InFact(Flags.UserEscaped) ? UnescapeMode.Unescape : UnescapeMode.EscapeUnescape) 4707mode = InFact(Flags.UserEscaped)? UnescapeMode.Unescape: UnescapeMode.EscapeUnescape; 5078if (basePart.HostType == Flags.IPv6HostType) { 5145if (basePart.HostType == Flags.IPv6HostType) { 5243return InFact(Flags.AuthorityFound);
net\System\UriExt.cs (57)
43m_Flags |= Flags.UserEscaped; 64NotAny(Flags.DosPath) && 71m_Flags &= Flags.UserEscaped; // the only flag that makes sense for a relative uri 81else if (uriKind == UriKind.Relative && InFact(Flags.DosPath)) 84m_Flags &= Flags.UserEscaped; // the only flag that makes sense for a relative uri 114m_Flags |= Flags.HasUnicode; 131m_Flags &= Flags.UserEscaped; // the only flag that makes sense for a relative uri 174m_Flags |= Flags.UserDrivenParsing; 187m_Flags &= Flags.UserEscaped; // the only flag that makes sense for a relative uri 192if (err != ParsingError.None || InFact(Flags.ErrorOrParsingRecursion)) 234m_Flags &= (Flags.UserEscaped | Flags.HasUnicode); // the only flags that makes sense for a relative uri 510Flags nonCanonical = (m_Flags & (Flags.E_CannotDisplayCanonical | Flags.IriCanonical)); 512if (((nonCanonical & Flags.E_CannotDisplayCanonical & (Flags.E_UserNotCanonical | Flags.E_PathNotCanonical | 513Flags.E_QueryNotCanonical | Flags.E_FragmentNotCanonical)) != Flags.Zero) && 515(((nonCanonical & Flags.E_UserNotCanonical) == 0) || ((nonCanonical & Flags.UserIriCanonical) == 0)) && 516(((nonCanonical & Flags.E_PathNotCanonical) == 0) || ((nonCanonical & Flags.PathIriCanonical) == 0)) && 517(((nonCanonical & Flags.E_QueryNotCanonical) == 0) || ((nonCanonical & Flags.QueryIriCanonical) == 0)) && 518(((nonCanonical & Flags.E_FragmentNotCanonical) == 0) || ((nonCanonical & Flags.FragmentIriCanonical) == 0))))) 524if (InFact(Flags.AuthorityFound)) 531if (InFact(Flags.UncPath | Flags.DosPath)) 544if (InFact(Flags.FirstSlashAbsent) && m_Info.Offset.Query > m_Info.Offset.Path) 550if (InFact(Flags.BackslashInPath)) 564if ((m_Flags & Flags.CanonicalDnsHost) == 0 && HostType != Flags.IPv6HostType) 579if ((m_Flags & (Flags.SchemeNotCanonical | Flags.AuthorityFound)) 580== (Flags.SchemeNotCanonical | Flags.AuthorityFound)) 681private Uri(Flags flags, UriParser uriParser, string uri) 699Flags flags = Flags.Zero; 703flags |= Flags.UserEscaped; 710return new Uri((flags & Flags.UserEscaped), null, uriString); 806if (baseUri.InFact(Flags.AuthorityFound)) 893if (((m_Flags & Flags.NotDefaultPort) != 0) || (uriComponents == UriComponents.StrongPort 910|| (( m_Flags & (Flags.HostNotCanonical | Flags.E_HostNotCanonical)) == 0))) 1000if (InFact(Flags.MinimalUriInfoSet)) 1002m_Flags &= ~(Flags.MinimalUriInfoSet | Flags.AllUriInfoSet | Flags.IndexMask); 1005if (InFact(Flags.NotDefaultPort)) 1019m_Flags |= (Flags)portIndex; // Port or path 1028if (otherUri.AllowIdn && (otherUri.InFact(Flags.IdnHost) || otherUri.InFact(Flags.UnicodeHost))){