1 write to _f
System.Private.Xml (1)
System\Xml\Xsl\Xslt\QilGenerator.cs (1)
100_f = new XsltQilFactory(new QilFactory(), debug);
534 references to _f
System.Private.Xml (534)
System\Xml\Xsl\Xslt\QilGenerator.cs (397)
105_refReplacer = new ReferenceReplacer(_f.BaseFactory); 106_invkGen = new InvokeGenerator(_f, debug); 107_matcherBuilder = new MatcherBuilder(_f, _refReplacer, _invkGen); 108_singlFocus = new SingletonFocus(_f); 110_curLoop = new LoopFocus(_f); 111_strConcat = new QilStrConcatenator(_f); 112_varHelper = new VariableHelper(_f); 117_nameCurrent = _f.QName("current", XmlReservedNs.NsXslDebug); 118_namePosition = _f.QName("position", XmlReservedNs.NsXslDebug); 119_nameLast = _f.QName("last", XmlReservedNs.NsXslDebug); 120_nameNamespaces = _f.QName("namespaces", XmlReservedNs.NsXslDebug); 121_nameInit = _f.QName("init", XmlReservedNs.NsXslDebug); 138_functions = _f.FunctionList(); 139_extPars = _f.GlobalParameterList(); 140_gloVars = _f.GlobalVariableList(); 141_nsVars = _f.GlobalVariableList(); 209QilExpression qil = _f.QilExpression(root, _f.BaseFactory); 228return _f.Loop(_f.Let(_f.InvokeOnCurrentNodeChanged(_curLoop.GetCurrent()!)), _f.Sequence()); 246QilNode init = _f.Int32(0); 254init = _f.Add(init, _f.InvokeRegisterDecimalFormat(format)); 259init = _f.Add(init, _f.InvokeRegisterDecimalFormat(DecimalFormatDecl.Default)); 266init = _f.Add(init, _f.InvokeCheckScriptNamespace(scriptNs)); 271QilFunction initFunction = _f.Function(_f.FormalParameterList(), init, /*sideEffects:*/_f.True()); 275QilNode initBinding = _f.Invoke(initFunction, _f.ActualParameterList()); 279initBinding = _f.TypeAssert(initBinding, T.ItemS); 281QilIterator initVar = _f.Let(initBinding); 295return _f.DocumentCtor(result); 319QilList nsDecls = _f.BaseFactory.Sequence(); 322nsDecls.Add(_f.NamespaceDecl(_f.String(rec.ncName!), _f.String(rec.nsUri!))); 462QilIterator newVar = _f.Let(nsList); 463newVar.DebugName = _f.QName($"ns{_nsVars.Count}", XmlReservedNs.NsXslDebug).ToString(); 480QilList args = _f.FormalParameterList(); 548QilList paramFormal = _f.FormalParameterList(); 549QilList paramActual = _f.ActualParameterList(); 552QilParameter formal = _f.Parameter(args[j].XmlType!); 564QilFunction paramFunc = _f.Function(paramFormal, 565_f.Boolean((xslPar.DefValueFlags & XslFlags.SideEffects) != 0), 570param.DefaultValue = _f.Invoke(paramFunc, paramActual); 597tmpl.Function = _f.Function(args, 598_f.Boolean((tmpl.Flags & XslFlags.SideEffects) != 0), 635QilParameter arg = _f.Parameter(xt); 680return _f.BaseFactory.Sequence(); 762QilIterator var = _f.Let(result); 766result = _f.Loop(var, CompileInstructions(instructions, i + 1)); 786return _f.Nop(_f.Sequence()); 796content.Add(_f.NamespaceDecl(_f.String(prefix), _f.String(nsUri))); 867return _f.ElementCtor(qname, content); 891qname = _f.QName(local, nsUri, prefix); 897qname = _f.StrParseQName(qilName, qilNs); 910return _f.ElementCtor(qname, content); 925return _f.AttributeCtor(qname, CompileTextAvt(node.Select!)); 957qname = _f.QName(local, nsUri, prefix); 964qname = _f.StrParseQName(qilName, qilNs); 976return _f.AttributeCtor(qname, CompileInstructions(node.Content)); 1014return _f.Error(_lastScope!.SourceLine, SR.Xslt_SingleRightBraceInAvt, source); 1023return i > start ? _f.String(source.Substring(start, i - start)) : null; 1028return _f.String(_unescapedText.ToString()); 1034QilList result = _f.BaseFactory.Sequence(); 1047result.Add(_f.ConvertToString(exp)); 1066return _f.String(avt); 1068return _f.StrConcat(CompileAvt(avt)); 1076return _f.TextCtor(_f.String(avt)); 1084result.Add(_f.TextCtor(node)); 1090return _f.TextCtor(avtParts); 1097return _f.TextCtor(_f.String(node.Select!)); 1099return _f.RawTextCtor(_f.String(node.Select!)); 1110return _f.PICtor(qilName, CompileInstructions(node.Content)); 1115return _f.CommentCtor(CompileInstructions(node.Content)); 1120return _f.Error(_f.String(node.Select!)); 1128return _f.Sequence( 1131SetLineInfo(_f.Nop(_f.Sequence()), after) 1144QilIterator it = _f.For(CompileNodeSetExpression(node.Select!)); 1169QilIterator select = _f.Let(CompileNodeSetExpression(node.Select!)); 1184QilIterator let = _f.Let(val!); 1185let.DebugName = _f.QName($"with-param {withParam.Name!.QualifiedName}", XmlReservedNs.NsXslDebug).ToString(); 1194QilIterator it = _f.For(select); 1234QilIterator let = _f.Let(val); 1235let.DebugName = _f.QName($"with-param {withParam.Name!.QualifiedName}", XmlReservedNs.NsXslDebug).ToString(); 1255result = _f.Sequence(); 1267return _f.Nop(result); 1290return _f.Sequence(); 1309content.Add(_f.XPathNamespace(node)); 1314return _f.ElementCtor(_f.NameOf(node), result); 1331return _f.XsltCopy(node, CompileInstructions(copy.Content)); 1354return _f.XsltCopyOf(selectExpr); 1359return _f.Loop(it = _f.For(selectExpr), _f.XsltCopyOf(it)); 1367return _f.TextCtor(_f.ConvertToString(selectExpr)); 1374return _f.Loop( 1375it = _f.For(selectExpr), 1376_f.Conditional(_f.IsType(it, T.Node), 1377_f.XsltCopyOf(_f.TypeAssert(it, T.Node)), 1378_f.TextCtor(_f.XsltConvert(it, T.StringX)) 1386return _f.TextCtor(_f.ConvertToString(CompileXPathExpression(/*select:*/valueOf.Select))); 1391return _f.RawTextCtor(_f.ConvertToString(CompileXPathExpression(/*select:*/valueOf.Select))); 1396return _f.Conditional( 1397_f.ConvertToBoolean(CompileXPathExpression(/*test:*/whenNode.Select)), 1434return _f.Sequence(); 1436return IsDebug ? _f.Sequence(result) : result; 1442QilNode content = _f.RtfCtor(CompileInstructions(node.Content), _f.String(baseUri)); 1445content = _f.InvokeOuterXml(content); 1450return _f.Warning(content); 1455return _f.Loop(i = _f.Let(content), _f.Sequence(_f.Warning(i), _f.Error(i))); 1490varValue = _f.RtfCtor(CompileInstructions(content), _f.String(baseUri)); 1495varValue = _f.String(string.Empty); 1500varValue = _f.TypeAssert(varValue, T.ItemS); 1521QilList keyList = _f.BaseFactory.SortKeyList(); 1566result = _f.Loop(i = _f.Let(result), 1567_f.Conditional(_f.Eq(_f.InvokeLangToLcid(i, fwdCompat), _f.Int32(XsltLibrary.InvariantCultureLcid)), 1568_f.String(string.Empty), 1585return _f.Double(XsltLibrary.InvariantCultureLcid); 1589return _f.String(XsltLibrary.LangToNameInternal((string)(QilLiteral)lang, fwdCompat, (IErrorHelper)this)); 1593return _f.XsltConvert(_f.InvokeLangToLcid(lang, fwdCompat), T.DoubleX); 1609select = _f.ConvertToNumber(select); 1644result = _f.Loop(dt = _f.Let(result), 1645_f.Conditional(_f.Eq(dt, _f.String(DtNumber)), _f.False(), 1646_f.Conditional(_f.Eq(dt, _f.String(DtText)), _f.True(), 1647fwdCompat ? _f.True() : 1648_f.Loop(_f.Let(ResolveQNameDynamic(/*ignoreDefaultNs:*/true, dt)), 1649_f.Error(_lastScope!.SourceLine, 1655QilIterator text = _f.Let(result); 1659select2 = select.DeepClone(_f.BaseFactory); 1660select = _f.Conditional(text, _f.ConvertToString(select), _f.String(string.Empty)); 1661select2 = _f.Conditional(text, _f.Double(0), _f.ConvertToNumber(select2)); 1667select = _f.ConvertToString(select); 1695result = _f.String("1"); 1703result = _f.String("0"); 1709result = _f.Loop(i = _f.Let(result), 1710_f.Conditional(_f.Eq(i, _f.String(value1)), _f.String("1"), 1711fwdCompat ? _f.String("0") : 1712_f.Conditional(_f.Eq(i, _f.String(value0)), _f.String("0"), 1713_f.Error(_lastScope!.SourceLine, 1767select = _f.ConvertToString(select); 1793QilSortKey result = _f.SortKey(select, collation); 1799result = _f.SortKey(select2, collation.DeepClone(_f.BaseFactory)); 1822list = _f.BaseFactory.Sequence(); 1826QilNode result = _f.False(); 1831result = _f.Or( 1859return _f.InvokeIsSameNodeSort(testNode, current); 1865case XmlNodeKindFlags.Document: return _f.IsType(testNode, T.Document); 1866case XmlNodeKindFlags.Element: result = _f.IsType(testNode, T.Element); break; 1867case XmlNodeKindFlags.Attribute: result = _f.IsType(testNode, T.Attribute); break; 1868case XmlNodeKindFlags.Text: return _f.IsType(testNode, T.Text); 1869case XmlNodeKindFlags.Comment: return _f.IsType(testNode, T.Comment); 1870case XmlNodeKindFlags.PI: return _f.And(_f.IsType(testNode, T.PI), _f.Eq(_f.LocalNameOf(testNode), _f.LocalNameOf(current))); 1871case XmlNodeKindFlags.Namespace: return _f.And(_f.IsType(testNode, T.Namespace), _f.Eq(_f.LocalNameOf(testNode), _f.LocalNameOf(current))); 1874return _f.False(); 1878return _f.And(result, _f.And( 1879_f.Eq(_f.LocalNameOf(testNode), _f.LocalNameOf(current)), 1880_f.Eq(_f.NamespaceUriOf(testNode), _f.NamespaceUriOf(GetCurrentNode())) 1911countPattern2 = countPattern?.DeepClone(_f.BaseFactory); 1912countMatches = _f.Filter(i = _f.For(_f.AncestorOrSelf(GetCurrentNode())), MatchCountPattern(countPattern, i)); 1915A = _f.DocOrderDistinct(countMatches); 1919A = _f.Filter(i = _f.For(countMatches), _f.Eq(_f.PositionOf(i), _f.Int32(1))); 1928fromMatches = _f.Filter(i = _f.For(_f.AncestorOrSelf(GetCurrentNode())), MatchPattern(fromPattern, i)); 1929F = _f.Filter(i = _f.For(fromMatches), _f.Eq(_f.PositionOf(i), _f.Int32(1))); 1930AF = _f.Loop(i = _f.For(F), _f.Filter(j = _f.For(A), _f.Before(i, j))); 1933return _f.Loop(j = _f.For(AF), 1934_f.Add(_f.Int32(1), _f.Length(_f.Filter(i = _f.For(_f.PrecedingSibling(j)), MatchCountPattern(countPattern2, i)))) 1966range = _f.NodeRange(_f.Root(GetCurrentNode()), GetCurrentNode()); 1967AF = _f.Filter(i = _f.For(range), MatchCountPattern(countPattern, i)); 1971fromMatches = _f.Filter(i = _f.For(_f.Preceding(GetCurrentNode())), MatchPattern(fromPattern, i)); 1972F = _f.Filter(i = _f.For(fromMatches), _f.Eq(_f.PositionOf(i), _f.Int32(1))); 1973AF = _f.Loop(i = _f.For(F), 1974_f.Filter(j = _f.For(_f.Filter(k = _f.For(_f.NodeRange(i, GetCurrentNode())), MatchCountPattern(countPattern, k))), 1975_f.Not(_f.Is(i, j)) 1980return _f.Loop(k = _f.Let(_f.Length(AF)), 1981_f.Conditional(_f.Eq(k, _f.Int32(0)), _f.Sequence(), 2010return _f.String(Default); 2017QilIterator i = _f.Let(result); 2018return _f.Loop(i, 2019_f.Conditional( 2020_f.Or(_f.Eq(i, _f.String(Alphabetic)), _f.Eq(i, _f.String(Traditional))), 2022fwdCompat ? _f.String(Default) : 2023_f.Error(_lastScope!.SourceLine, SR.Xslt_BistateAttribute, "letter-value", Alphabetic, Traditional) 2027return _f.String(Default); 2037result = _f.String(string.Empty); 2049result = _f.String(string.Empty); 2054QilIterator i = _f.Let(result); 2055result = _f.Loop(i, 2056_f.Conditional(_f.Eq(_f.StrLength(i), _f.Int32(1)), i, 2057fwdCompat ? _f.String(string.Empty) : 2058_f.Error(_lastScope!.SourceLine, SR.Xslt_CharAttribute, "grouping-separator") 2070return _f.Double(0); 2081return _f.Double(dblGroupingSize); 2084return _f.Double(0); 2089QilIterator i = _f.Let(_f.ConvertToNumber(result)); 2090return _f.Loop(i, 2091_f.Conditional(_f.And(_f.Lt(_f.Double(0), i), _f.Lt(i, _f.Double(int.MaxValue))), 2093_f.Double(0) 2107value = _f.ConvertToNumber(CompileXPathExpression(num.Value)); 2126return _f.TextCtor(_f.InvokeNumberFormat( 2181QilParameter context = _f.Parameter(T.NodeNotRtf); 2183QilIterator values = _f.For(_f.OptimizeBarrier(CompileKeyMatch(key.Match))); 2185QilIterator keys = _f.For(CompileKeyUse(key)); 2186keys = _f.For(_f.OptimizeBarrier(_f.Loop(keys, _f.ConvertToString(keys)))); 2188QilParameter value = _f.Parameter(T.StringX); 2190QilFunction func = _f.Function(_f.FormalParameterList(context, value), 2191_f.Filter(values, 2192_f.Not(_f.IsEmpty(_f.Filter(keys, _f.Eq(keys, value)))) 2194_f.False() 2228it = _f.Let(_f.Unknown(xt)); 2232it = _f.Parameter(null, varPar.Name, xt); 2284return _f.TypeAssert(_f.Sequence(), T.ItemS); 2289return _f.TypeAssert(_f.Sequence(), T.NodeNotRtfS); 2318result = _f.Error(_f.String(e.Message)); 2323result = _f.Nop(result); 2330QilNode? result = _f.TryEnsureNodeSet(CompileXPathExpression(expr)); 2339result = _f.Error(_f.String(e.Message)); 2363result = _f.Error(_f.String(e.Message)); 2368result = _f.Nop(result); 2391result = _f.Loop(_f.For(_ptrnBuilder.FixupNode), 2392_f.Error(_f.String(e.Message)) 2417result = _f.Error(_f.String(e.Message)); 2446result = _f.Error(_f.String(e.Message)); 2461result = _f.Error(_f.String(XslLoadException.CreateMessage(key.SourceLine, SR.Xslt_MissingAttribute, "use"))); 2476result = _f.Error(_f.String(e.Message)); 2481result = _f.Nop(result); 2489QilList nsDecls = _f.BaseFactory.Sequence(); 2492nsDecls.Add(_f.NamespaceDecl(_f.String(string.Empty), _f.String(string.Empty))); 2505nsDecls.Add(_f.NamespaceDecl(_f.String(recPrefix), _f.String(recNsUri!))); 2508return _f.StrParseQName(qilName, nsDecls); 2522return _f.Sequence(); 2634QilList invokeArgs = _f.ActualParameterList(); 2659QilList formalArgs = _f.FormalParameterList(); 2670QilParameter formalArg = _f.Parameter(i == 0 ? T.NodeNotRtf : withParam.Value!.XmlType!); 2679applyFunction = _f.Function(formalArgs, 2680_f.Boolean((flags & XslFlags.SideEffects) != 0), 2696QilIterator iChild = _f.For(_f.Content(current)); 2697QilNode filter = _f.Filter(iChild, _f.IsType(iChild, T.Content)); 2701_curLoop.SetFocus(_f.For(filter)); 2714body = _f.Sequence(InvokeOnCurrentNodeChanged(), body); 2721QilTernary builtinTemplates = _f.BaseFactory.Conditional(_f.IsType(current, _elementOrDocumentType), 2723_f.Conditional(_f.IsType(current, _textOrAttributeType), 2724_f.TextCtor(_f.XPathNodeValue(current)), 2725_f.Sequence() 2733return _f.Invoke(applyFunction, invokeArgs); 2814QilIterator var = _f.Let(value); 2816return _f.Loop(var, content); 2828nsVar = _f.TypeAssert(nsVar, T.NamespaceS); 2848return (QilName)name.ShallowClone(_f.BaseFactory);
System\Xml\Xsl\Xslt\QilGeneratorEnv.cs (137)
57XPathQilFactory IXPathEnvironment.Factory { get { return _f; } } 91var = _f.TypeAssert(var, XmlQueryTypeFactory.NodeSDod); 109func.CastArguments(args, name, _f); 157return _f.InvokeMsStringCompare( 158/*x: */_f.ConvertToString(args[0]), 159/*y: */_f.ConvertToString(args[1]), 160/*lang: */2 < args.Count ? _f.ConvertToString(args[2]) : _f.String(string.Empty), 161/*options:*/3 < args.Count ? _f.ConvertToString(args[3]) : _f.String(string.Empty) 167return _f.InvokeMsUtc(/*datetime:*/_f.ConvertToString(args[0])); 172return _f.InvokeMsFormatDateTime( 173/*datetime:*/_f.ConvertToString(args[0]), 174/*format: */1 < args.Count ? _f.ConvertToString(args[1]) : _f.String(string.Empty), 175/*lang: */2 < args.Count ? _f.ConvertToString(args[2]) : _f.String(string.Empty), 176/*isDate: */_f.Boolean(name == "format-date") 182return _f.InvokeMsLocalName(_f.ConvertToString(args[0])); 187return _f.InvokeMsNamespaceUri(_f.ConvertToString(args[0]), env.GetCurrent()!); 192return _f.InvokeMsNumber(args[0]); 214args[i] = _f.SafeDocOrderDistinct(args[i]); 221return GenerateScriptCall(_f.QName(name, ns, prefix), scrFunc, args); 229return _f.Error(_lastScope!.SourceLine, SR.Xslt_ScriptsProhibited); 233return _f.XsltInvokeLateBound(_f.QName(name, ns, prefix), args); 246case XmlTypeCode.Boolean: args[i] = _f.ConvertToBoolean(args[i]); break; 247case XmlTypeCode.Double: args[i] = _f.ConvertToNumber(args[i]); break; 248case XmlTypeCode.String: args[i] = _f.ConvertToString(args[i]); break; 249case XmlTypeCode.Node: args[i] = xmlTypeFormalArg.IsSingleton ? _f.ConvertToNode(args[i]) : _f.ConvertToNodeSet(args[i]); break; 255return _f.XsltInvokeEarlyBound(name, scrFunc.Method!, scrFunc.XmlReturnType!, args); 384result = CompileSingleKey(name, _f.ConvertToString(keys), env); 388result = _f.Loop(i = _f.For(keys), CompileSingleKey(name, _f.ConvertToString(i), env)); 393result = CompileSingleKey(name, _f.ConvertToString(keys), env); 397result = _f.Loop(n = _f.Let(name), _f.Loop(k = _f.Let(keys), 398_f.Conditional(_f.Not(_f.IsType(k, T.AnyAtomicType)), 399_f.Loop(i = _f.For(_f.TypeAssert(k, T.NodeS)), CompileSingleKey(n, _f.ConvertToString(i), env)), 400CompileSingleKey(n, _f.XsltConvert(k, T.StringX), env) 404return _f.DocOrderDistinct(result); 418QilName qname = _f.QName(local, nsUri, prefix); 429QilIterator i = _f.Let(name); 431result = _f.Invoke(_generalKey, _f.ActualParameterList(i, resolvedName, key, env.GetCurrent()!)); 432result = _f.Loop(i, result); 442return _f.Invoke(defList[0].Function!, _f.ActualParameterList(env.GetCurrent()!, key)); 445QilIterator i = _f.Let(key); 446QilNode result = _f.Sequence(); 449result.Add(_f.Invoke(keyDef.Function!, _f.ActualParameterList(env.GetCurrent()!, i))); 451return _f.Loop(i, result); 457QilList result = _f.BaseFactory.Sequence(); 462keyRef = _f.Invoke(keyDef.Function!, _f.ActualParameterList(context, key)); 470QilIterator name = _f.Parameter(T.StringX); 471QilIterator resolvedName = _f.Parameter(T.QNameX); 472QilIterator key = _f.Parameter(T.StringX); 473QilIterator context = _f.Parameter(T.NodeNotRtf); 475QilNode fdef = _f.Error(SR.Xslt_UndefinedKey, name); 478fdef = _f.Conditional(_f.Eq(resolvedName, _compiler.Keys[idx][0].Name!.DeepClone(_f.BaseFactory)), 484QilFunction result = _f.Function(_f.FormalParameterList(name, resolvedName, key, context), fdef, _f.False()); 499return _f.Error(_lastScope!.SourceLine, SR.Xslt_DocumentFuncProhibited); 503result = _f.DocOrderDistinct(_f.Loop(i = _f.For(uris), 504CompileSingleDocument(_f.ConvertToString(i), baseNode ?? i) 509result = CompileSingleDocument(_f.ConvertToString(uris), baseNode); 513u = _f.Let(uris); 514j = (baseNode != null) ? _f.Let(baseNode) : null; 515result = _f.Conditional(_f.Not(_f.IsType(u, T.AnyAtomicType)), 516_f.DocOrderDistinct(_f.Loop(i = _f.For(_f.TypeAssert(u, T.NodeS)), 517CompileSingleDocument(_f.ConvertToString(i), j ?? i) 519CompileSingleDocument(_f.XsltConvert(u, T.StringX), j) 521result = (baseNode != null) ? _f.Loop(j!, result) : result; 522result = _f.Loop(u, result); 534baseUri = _f.String(_lastScope!.SourceLine!.Uri); 541baseUri = _f.InvokeBaseUri(baseNode); 549baseUri = _f.StrConcat(_f.Loop(i = _f.FirstNode(baseNode), _f.InvokeBaseUri(i))); 554return _f.DataSource(uri, baseUri); 567formatName = _f.String(string.Empty); 604QilIterator fmtIdx = _f.Let(_f.InvokeRegisterDecimalFormatter(formatPicture, format)); 605fmtIdx.DebugName = _f.QName($"formatter{_formatterCnt++}", XmlReservedNs.NsXslDebug).ToString(); 607return _f.InvokeFormatNumberStatic(value, fmtIdx); 611QilNode name = _f.QName(resolvedName.Name, resolvedName.Namespace); 612return _f.InvokeFormatNumberDynamic(value, formatPicture, name, formatName); 617QilIterator i = _f.Let(formatName); 619return _f.Loop(i, _f.InvokeFormatNumberDynamic(value, formatPicture, name, i)); 626return _f.Error(_lastScope!.SourceLine, SR.Xslt_UnsupportedXsltFunction, "unparsed-entity-uri"); 634return _f.XsltGenerateId(n); 639return _f.StrConcat(_f.Loop(i = _f.FirstNode(n), _f.XsltGenerateId(i))); 663return _f.String(propValue.Value); 668return _f.Double((double)propValue.ValueAsDouble); 671name = _f.QName(qname.Name, qname.Namespace); 677return _f.InvokeSystemProperty(name); 688return _f.Boolean(IsElementAvailable(qname)); 690name = _f.QName(qname.Name, qname.Namespace); 696return _f.InvokeElementAvailable(name); 710return _f.Boolean(QilGenerator.IsFunctionAvailable(qname.Name, qname.Namespace)); 714name = _f.QName(qname.Name, qname.Namespace); 720return _f.InvokeFunctionAvailable(name); 730return _f.XsltConvert(n, T.NodeSDod); 743case XmlTypeCode.Boolean: return _f.String("boolean"); 744case XmlTypeCode.Double: return _f.String("number"); 745case XmlTypeCode.String: return _f.String("string"); 749return _f.String("node-set"); 754return _f.InvokeEXslObjectType(n);