From 7fd8b25c29f3a907165ea3b3066171ad14d51a16 Mon Sep 17 00:00:00 2001 From: BobSilent Date: Thu, 2 Apr 2020 23:36:15 +0200 Subject: [PATCH] Update nunit reference to 2.7.1 --- lib/mock-assembly.dll | Bin 8704 -> 20480 bytes lib/nunit.core.dll | Bin 155648 -> 147456 bytes lib/nunit.core.interfaces.dll | Bin 61440 -> 53248 bytes lib/nunit.framework.dll | Bin 151552 -> 135168 bytes lib/nunit.framework.xml | 11266 ++++++++++---------- lib/nunit.util.dll | Bin 135168 -> 122880 bytes src/NUnitTestAdapterTests/ProjectTests.cs | 6 +- 7 files changed, 5726 insertions(+), 5546 deletions(-) diff --git a/lib/mock-assembly.dll b/lib/mock-assembly.dll index de54f7caeb77d28dbff5a16a5cc2be0f1b27de18..eb0bcf9dde691aaf92a4596c7a5febcfe0e96c03 100644 GIT binary patch literal 20480 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 P0yimelLG(0QsDmriSU?m literal 155648 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

@_6#uDHV{ij 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 literal 61440 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

NR3pIVLUN46koR-)5 zsdJw?iUEyN)#my9l){GLWhu;LG^dH#%4b>xf~IW@A2AJ7kDyEO#X;HF14ELF$u+TD zOs;8{3rj^dhDu)jZx_#*Bdz_U4G5dcha&qT5kHvNnpT|rqz-Dvl1P$DWkn`qV>HQB z%1m6(EAt5)CvY@_)My$PpV9c&S>PemK7`U9$EwJ7k7}cyDw!ACI3iqSS&fHHyQ5uQ z?cN)sDASG(du&1GEbh~s#r+imd_rO@cZtp;7^qXK|7pvAh>+3B1t`{Gg_8%Vgukh1 zXyNk;n=e}UisfW2oNGA`TKr`T@3+v`S!1P_s1xQ#g?-9tJVDoil|5y(pHf-#4$Ha6 z;)fMZ9<(sD@OjIB(ZW|OCu`wc%X!e^FI#xOg}%-jD?Mc45epx&9v54A3U3a%tMyL(9Wo!`+oH=!N1 zu{YG|Q+#l8JI~|%O3IyPw1g9T!>u8wQ28(Kgu8cyQ%GJmc)_6FYY@{MywS#)gdFg-j}tfCX(?A%QF4aVS@98FIv|SYQ0DR8bZ3p>4evOMg8r22Q-Mx2 z)cI{XPJ>66m~~sZcK(umMxnEI`~?PfOkJf_d(=KI;pV5@+*Tf^NhGirq}+)eC2jD# zTDAJKacGFi&O|7P}dK1vT`sS)l-)RSKlB-LOPeNpnJT z-Gl%1k#oym`nzvj{*#CIf8rw}fBO8%Z~MkePww1*_67ew@*nPZzLM{|dGbqF{K=-* zAD#TmuTGqD)sbhv_T_iIW9+8e=bZH2+m{_!@zKhbzk2+KdtO|->zl7i2>svp6%XT7 z=k@WndK@ydV)vd)ckUdO;j_`1)^_^DAEqJbeH5FxWxs?AYpz2xd%eXg5j2!Q`Pl6_70Ji%$7-D20%?%j}{usTD$0p4z0SIsLSUP+VEe-o0J#u ze<}Zk&nh>U`r?2daEOoHN-)wR#_{=VdMm&`Oq-m~wjB=P>bQfcF9Bx_F!b2&PNVQf zXcLy#@%Stc`c9J<@&?`t-o6WYr(Aqm#)%DzErm~dSJ1~VB(?$=8Z$kuuLq;oF(UqP z>p?p@O&sm)ZzkA7zz#Vw%TuCp8Pi_Q;Qw@V?Y%@x6?)ka3zx2jzy6{PU*~TyuKK-W`kJ{%yM9s1G5~M<-jZlW;rm+fmsgx zGIHSM6c5`v_X7EV3q^39GK<6EC*&eFw22i4$N|3mIJdKnB~AM2WC0&|C0m% E3-Nl72LJ#7 literal 151552 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.framework - +

- Attribute used to apply a category to a test + Delegate used by tests that execute code and + capture any thrown exception. - + - The name of the category + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. - + - Construct attribute for a given category based on - a name. The name may not contain the characters ',', - '+', '-' or '!'. However, this is not checked in the - constructor since it would cause an error to arise at - as the test was loaded without giving a clear indication - of where the problem is located. The error is handled - in NUnitFramework.cs by marking the test as not - runnable. + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. - The name of the category - + - Protected constructor uses the Type name as the name - of the category. + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + - + - The name of the category + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + - + - Used to mark a field for use as a datapoint when executing a theory - within the same fixture that requires an argument of the field's Type. + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + The message to initialize the with. + Arguments to be used in formatting the message - + - Used to mark an array as containing a set of datapoints to be used - executing a theory within the same fixture that requires an argument - of the Type of the array elements. + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + The message to initialize the with. - + - Attribute used to provide descriptive text about a - test case or fixture. + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. - + - Construct the attribute + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. - Text describing the test + The message to initialize the with. + Arguments to be used in formatting the message - + - Gets the test description + Throws an with the message that is + passed in. This is used by the other Assert functions. + The message to initialize the with. - + - Enumeration indicating how the expected message parameter is to be used + Throws an . + This is used by the other Assert functions. - - Expect an exact match - - - Expect a message containing the parameter string - - - Match the regular expression provided as a parameter - - - Expect a message that starts with the parameter string - - + - ExpectedExceptionAttribute + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. - + The message to initialize the with. + Arguments to be used in formatting the message - + - Constructor for a non-specific exception + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + The message to initialize the with. - + - Constructor for a given type of exception + Throws an . + This causes the test to be reported as ignored. - The type of the expected exception - + - Constructor for a given exception name + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. - The full name of the expected exception + The message to initialize the with. + Arguments to be used in formatting the message - + - Gets or sets the expected exception type + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + The message to initialize the with. - + - Gets or sets the full Type name of the expected exception + Throws an . + This causes the test to be reported as Inconclusive. - + - Gets or sets the expected message text + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint to be applied - + - Gets or sets the user message displayed in case of failure + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint to be applied + The message that will be displayed on failure - + - Gets or sets the type of match to be performed on the expected message + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Gets the name of a method to be used as an exception handler - + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message - + - ExplicitAttribute marks a test or test fixture so that it will - only be run if explicitly executed from the gui or command line - or if it is included by use of a filter. The test will not be - run simply because an enclosing suite is run. + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition + The message to display if the condition is false - + - Default constructor + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition - + - Constructor with a reason + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. - The reason test is marked explicit + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied - + - The reason test is marked explicit + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure - + - Attribute used to mark a test that is to be ignored. - Ignored tests result in a warning message when the - tests are run. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Constructs the attribute without giving a reason - for ignoring the test. + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint to be applied - + - Constructs the attribute giving a reason for ignoring the test + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. - The reason for ignoring the test + The actual value to test + A Constraint to be applied + The message that will be displayed on failure - + - The reason for ignoring a test + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Abstract base for Attributes that are used to include tests - in the test run based on environmental settings. + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + A TestDelegate to be executed + A ThrowsConstraint used in the test - + - Constructor with no included items specified, for use - with named property syntax. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + The actual value to test + A Constraint to be applied - + - Constructor taking one or more included items + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. - Comma-delimited list of included items + The actual value to test + A Constraint to be applied + The message that will be displayed on failure - + - Name of the item that is needed in order for - a test to run. Multiple itemss may be given, - separated by a comma. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Name of the item to be excluded. Multiple items - may be given, separated by a comma. + Verifies that a delegate throws a particular exception when called. + A constraint to be satisfied by the exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message - + - The reason for including or excluding the test + Verifies that a delegate throws a particular exception when called. + A constraint to be satisfied by the exception + A TestDelegate + The message that will be displayed on failure - + - PlatformAttribute is used to mark a test fixture or an - individual method as applying to a particular platform only. + Verifies that a delegate throws a particular exception when called. + A constraint to be satisfied by the exception + A TestDelegate - + - Constructor with no platforms specified, for use - with named property syntax. + Verifies that a delegate throws a particular exception when called. + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Constructor taking one or more platforms + Verifies that a delegate throws a particular exception when called. - Comma-deliminted list of platforms + The exception Type expected + A TestDelegate + The message that will be displayed on failure - + - CultureAttribute is used to mark a test fixture or an - individual method as applying to a particular Culture only. + Verifies that a delegate throws a particular exception when called. + The exception Type expected + A TestDelegate - + - Constructor with no cultures specified, for use - with named property syntax. + Verifies that a delegate throws a particular exception when called. + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Constructor taking one or more cultures + Verifies that a delegate throws a particular exception when called. - Comma-deliminted list of cultures + Type of the expected exception + A TestDelegate + The message that will be displayed on failure - + - Marks a test to use a combinatorial join of any argument data - provided. NUnit will create a test case for every combination of - the arguments provided. This can result in a large number of test - cases and so should be used judiciously. This is the default join - type, so the attribute need not be used except as documentation. + Verifies that a delegate throws a particular exception when called. + Type of the expected exception + A TestDelegate - + - PropertyAttribute is used to attach information to a test as a name/value pair.. + Verifies that a delegate throws an exception when called + and returns it. + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Construct a PropertyAttribute with a name and string value + Verifies that a delegate throws an exception when called + and returns it. - The name of the property - The property value + A TestDelegate + The message that will be displayed on failure - + - Construct a PropertyAttribute with a name and int value + Verifies that a delegate throws an exception when called + and returns it. - The name of the property - The property value + A TestDelegate - + - Construct a PropertyAttribute with a name and double value + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. - The name of the property - The property value + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Constructor for derived classes that set the - property dictionary directly. + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + The expected Exception Type + A TestDelegate + The message that will be displayed on failure - + - Constructor for use by derived classes that use the - name of the type as the property name. Derived classes - must ensure that the Type of the property value is - a standard type supported by the BCL. Any custom - types will cause a serialization Exception when - in the client. + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + The expected Exception Type + A TestDelegate - + - Gets the property dictionary for this attribute + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Default constructor + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + The expected Exception Type + A TestDelegate + The message that will be displayed on failure - + - Marks a test to use pairwise join of any argument data provided. - NUnit will attempt too excercise every pair of argument values at - least once, using as small a number of test cases as it can. With - only two arguments, this is the same as a combinatorial join. + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + The expected Exception Type + A TestDelegate - + - Default constructor + Verifies that a delegate does not throw an exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Marks a test to use a sequential join of any argument data - provided. NUnit will use arguements for each parameter in - sequence, generating test cases up to the largest number - of argument values provided and using null for any arguments - for which it runs out of values. Normally, this should be - used with the same number of arguments for each parameter. + Verifies that a delegate does not throw an exception. + A TestDelegate + The message that will be displayed on failure - + - Default constructor + Verifies that a delegate does not throw an exception. + A TestDelegate - + - Summary description for MaxTimeAttribute. + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a MaxTimeAttribute, given a time in milliseconds. + Asserts that a condition is true. If the condition is false the method throws + an . - The maximum elapsed time in milliseconds + The evaluated condition + The message to display in case of failure - + - RandomAttribute is used to supply a set of random values - to a single parameter of a parameterized test. + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition - + - ValuesAttribute is used to provide literal arguments for - an individual parameter of a test. + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message - + - Abstract base class for attributes that apply to parameters - and supply data for the parameter. + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition + The message to display in case of failure - + - Gets the data to be provided to the specified parameter + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition - + - The collection of data to be returned. Must - be set by any derived attribute classes. - We use an object[] so that the individual - elements may have their type changed in GetData - if necessary. - + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct with one argument - - + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure - + - Construct with two arguments - - - + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition - + - Construct with three arguments - - - - + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct with an array of arguments - - + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure - + - Get the collection of values to be used as arguments - + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition - + - Construct a set of doubles from 0.0 to 1.0, - specifying only the count. + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. - + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a set of doubles from min to max + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. - - - + The object that is to be tested + The message to display in case of failure - + - Construct a set of ints from min to max + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. - - - + The object that is to be tested - + - Get the collection of values to be used as arguments + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - RangeAttribute is used to supply a range of values to an - individual parameter of a parameterized test. + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + The object that is to be tested + The message to display in case of failure - + - Construct a range of ints using default step of 1 + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. - - + The object that is to be tested - + - Construct a range of ints specifying the step size + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. - - - + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a range of longs + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. - - - + The object that is to be tested + The message to display in case of failure - + - Construct a range of doubles + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. - - - + The object that is to be tested - + - Construct a range of floats + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. - - - + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - RepeatAttribute may be applied to test case in order - to run it multiple times. + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + The object that is to be tested + The message to display in case of failure - + - Construct a RepeatAttribute + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. - The number of times to run the test + The object that is to be tested - + - RequiredAddinAttribute may be used to indicate the names of any addins - that must be present in order to run some or all of the tests in an - assembly. If the addin is not loaded, the entire assembly is marked - as NotRunnable. + Verifies that two ints are equal. If they are not, then an + is thrown. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Initializes a new instance of the class. + Verifies that two ints are equal. If they are not, then an + is thrown. - The required addin. + The expected value + The actual value + The message to display in case of failure - + - Gets the name of required addin. + Verifies that two ints are equal. If they are not, then an + is thrown. - The required addin name. + The expected value + The actual value - + - Summary description for SetCultureAttribute. + Verifies that two longs are equal. If they are not, then an + is thrown. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct given the name of a culture + Verifies that two longs are equal. If they are not, then an + is thrown. - + The expected value + The actual value + The message to display in case of failure - + - Summary description for SetUICultureAttribute. + Verifies that two longs are equal. If they are not, then an + is thrown. + The expected value + The actual value - + - Construct given the name of a culture + Verifies that two unsigned ints are equal. If they are not, then an + is thrown. - + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - SetUpAttribute is used in a TestFixture to identify a method - that is called immediately before each test is run. It is - also used in a SetUpFixture to identify the method that is - called once, before any of the subordinate tests are run. + Verifies that two unsigned ints are equal. If they are not, then an + is thrown. + The expected value + The actual value + The message to display in case of failure - + - Attribute used to mark a class that contains one-time SetUp - and/or TearDown methods that apply to all the tests in a - namespace or an assembly. + Verifies that two unsigned ints are equal. If they are not, then an + is thrown. - - + The expected value + The actual value + + - Attribute used to mark a static (shared in VB) property - that returns a list of tests. + Verifies that two unsigned longs are equal. If they are not, then an + is thrown. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Attribute used in a TestFixture to identify a method that is - called immediately after each test is run. It is also used - in a SetUpFixture to identify the method that is called once, - after all subordinate tests have run. In either case, the method - is guaranteed to be called, even if an exception is thrown. + Verifies that two unsigned longs are equal. If they are not, then an + is thrown. + The expected value + The actual value + The message to display in case of failure - + - Provide actions to execute before and after tests. + Verifies that two unsigned longs are equal. If they are not, then an + is thrown. + The expected value + The actual value - + - When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + Verifies that two decimals are equal. If they are not, then an + is thrown. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Executed before each test is run + Verifies that two decimals are equal. If they are not, then an + is thrown. - Provides details about the test that is going to be run. + The expected value + The actual value + The message to display in case of failure - + - Executed after each test is run + Verifies that two decimals are equal. If they are not, then an + is thrown. - Provides details about the test that has just been run. + The expected value + The actual value - + - Provides the target for the action attribute + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. - The target for the action attribute + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message - + - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure - + - Descriptive text for this test + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual - + - TestCaseAttribute is used to mark parameterized test cases - and provide them with their arguments. + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message - + - The ITestCaseData interface is implemented by a class - that is able to return complete testcases for use by - a parameterized test method. - - NOTE: This interface is used in both the framework - and the core, even though that results in two different - types. However, sharing the source code guarantees that - the various implementations will be compatible and that - the core is able to reflect successfully over the - framework implementations of ITestCaseData. + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure - + - Gets the argument list to be provided to the test + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual - + - Gets the expected result + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Indicates whether a result has been specified. - This is necessary because the result may be - null, so it's value cannot be checked. + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + The value that is expected + The actual value + The message to display in case of failure - + - Gets the expected exception Type + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + The value that is expected + The actual value - + - Gets the FullName of the expected exception + Verifies that two ints are not equal. If they are equal, then an + is thrown. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets the name to be used for the test + Verifies that two ints are not equal. If they are equal, then an + is thrown. + The expected value + The actual value + The message to display in case of failure - + - Gets the description of the test + Verifies that two ints are not equal. If they are equal, then an + is thrown. + The expected value + The actual value - + - Gets a value indicating whether this is ignored. + Verifies that two longs are not equal. If they are equal, then an + is thrown. - true if ignored; otherwise, false. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets a value indicating whether this is explicit. + Verifies that two longs are not equal. If they are equal, then an + is thrown. - true if explicit; otherwise, false. + The expected value + The actual value + The message to display in case of failure - + - Gets the ignore reason. + Verifies that two longs are not equal. If they are equal, then an + is thrown. - The ignore reason. + The expected value + The actual value - + - Construct a TestCaseAttribute with a list of arguments. - This constructor is not CLS-Compliant + Verifies that two unsigned ints are not equal. If they are equal, then an + is thrown. - + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a TestCaseAttribute with a single argument + Verifies that two unsigned ints are not equal. If they are equal, then an + is thrown. - + The expected value + The actual value + The message to display in case of failure - + - Construct a TestCaseAttribute with a two arguments + Verifies that two unsigned ints are not equal. If they are equal, then an + is thrown. - - + The expected value + The actual value - + - Construct a TestCaseAttribute with a three arguments + Verifies that two unsigned longs are not equal. If they are equal, then an + is thrown. - - - + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets the list of arguments to a test case + Verifies that two unsigned longs are not equal. If they are equal, then an + is thrown. + The expected value + The actual value + The message to display in case of failure - + - Gets or sets the expected result. Use - ExpectedResult by preference. + Verifies that two unsigned longs are not equal. If they are equal, then an + is thrown. - The result. + The expected value + The actual value - + - Gets or sets the expected result. + Verifies that two decimals are not equal. If they are equal, then an + is thrown. - The result. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets a flag indicating whether an expected - result has been set. + Verifies that two decimals are not equal. If they are equal, then an + is thrown. + The expected value + The actual value + The message to display in case of failure - + - Gets a list of categories associated with this test; + Verifies that two decimals are not equal. If they are equal, then an + is thrown. + The expected value + The actual value - + - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. + Verifies that two floats are not equal. If they are equal, then an + is thrown. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets or sets the expected exception. + Verifies that two floats are not equal. If they are equal, then an + is thrown. - The expected exception. + The expected value + The actual value + The message to display in case of failure - + - Gets or sets the name the expected exception. + Verifies that two floats are not equal. If they are equal, then an + is thrown. - The expected name of the exception. + The expected value + The actual value - + - Gets or sets the expected message of the expected exception + Verifies that two doubles are not equal. If they are equal, then an + is thrown. - The expected message of the exception. + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets or sets the type of match to be performed on the expected message + Verifies that two doubles are not equal. If they are equal, then an + is thrown. + The expected value + The actual value + The message to display in case of failure - + - Gets or sets the description. + Verifies that two doubles are not equal. If they are equal, then an + is thrown. - The description. + The expected value + The actual value - + - Gets or sets the name of the test. + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. - The name of the test. + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets or sets the ignored status of the test + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + The value that is expected + The actual value + The message to display in case of failure - + - Gets or sets the ignored status of the test + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + The value that is expected + The actual value - + - Gets or sets the explicit status of the test + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets or sets the reason for not running the test + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + The expected object + The actual object + The message to display in case of failure - + - Gets or sets the reason for not running the test. - Set has the side effect of marking the test as ignored. + Asserts that two objects refer to the same object. If they + are not the same an is thrown. - The ignore reason. + The expected object + The actual object - + - FactoryAttribute indicates the source to be used to - provide test cases for a test method. + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct with the name of the data source, which must - be a property, field or method of the test class itself. + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. - An array of the names of the factories that will provide data + The expected object + The actual object + The message to display in case of failure - + - Construct with a Type, which must implement IEnumerable + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. - The Type that will provide data + The expected object + The actual object - + - Construct with a Type and name. - that don't support params arrays. + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. - The Type that will provide data - The name of the method, property or field that will provide data + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - The name of a the method, property or fiend to be used as a source + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + The value that is to be tested + The message to display in case of failure - + - A Type to be used as a source + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + The value that is to be tested - + - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - - - [TestFixture] - public class ExampleClass - {} - - - + - Default constructor + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + The value that is to be tested + The message to display in case of failure - + - Construct with a object[] representing a set of arguments. - In .NET 2.0, the arguments may later be separated into - type arguments and constructor arguments. + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. - + The value that is to be tested - + - Descriptive text for this fixture + Assert that a string is empty - that is equal to string.Empty + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets and sets the category for this fixture. - May be a comma-separated list of categories. + Assert that a string is empty - that is equal to string.Empty - - + The string to be tested + The message to display in case of failure + + - Gets a list of categories for this fixture + Assert that a string is empty - that is equal to string.Empty + The string to be tested - + - The arguments originally provided to the attribute + Assert that an array, list or other collection is empty + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message - + - Gets or sets a value indicating whether this should be ignored. + Assert that an array, list or other collection is empty - true if ignore; otherwise, false. + An array, list or other collection implementing ICollection + The message to display in case of failure - + - Gets or sets the ignore reason. May set Ignored as a side effect. + Assert that an array, list or other collection is empty - The ignore reason. + An array, list or other collection implementing ICollection - + - Get or set the type arguments. If not set - explicitly, any leading arguments that are - Types are taken as type arguments. + Assert that a string is not empty - that is not equal to string.Empty + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - Attribute used to identify a method that is - called before any tests in a fixture are run. + Assert that a string is not empty - that is not equal to string.Empty + The string to be tested + The message to display in case of failure - + - Attribute used to identify a method that is called after - all the tests in a fixture have run. The method is - guaranteed to be called, even if an exception is thrown. + Assert that a string is not empty - that is not equal to string.Empty + The string to be tested - + - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. + Assert that an array, list or other collection is not empty - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message - + - Used on a method, marks the test with a timeout value in milliseconds. - The test will be run in a separate thread and is cancelled if the timeout - is exceeded. Used on a method or assembly, sets the default timeout - for all contained test methods. + Assert that an array, list or other collection is not empty + An array, list or other collection implementing ICollection + The message to display in case of failure - + - Construct a TimeoutAttribute given a time in milliseconds + Assert that an array, list or other collection is not empty - The timeout value in milliseconds + An array, list or other collection implementing ICollection - + - Marks a test that must run in the STA, causing it - to run in a separate thread if necessary. - - On methods, you may also use STAThreadAttribute - to serve the same purpose. + Assert that a string is either null or equal to string.Empty + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a RequiresSTAAttribute + Assert that a string is either null or equal to string.Empty + The string to be tested + The message to display in case of failure - + - Marks a test that must run in the MTA, causing it - to run in a separate thread if necessary. - - On methods, you may also use MTAThreadAttribute - to serve the same purpose. + Assert that a string is either null or equal to string.Empty + The string to be tested - + - Construct a RequiresMTAAttribute + Assert that a string is not null or empty + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message - + - Marks a test that must run on a separate thread. + Assert that a string is not null or empty + The string to be tested + The message to display in case of failure - + - Construct a RequiresThreadAttribute + Assert that a string is not null or empty + The string to be tested - + - Construct a RequiresThreadAttribute, specifying the apartment + Asserts that an object may be assigned a value of a given Type. + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message - + - ValueSourceAttribute indicates the source to be used to - provide data for one parameter of a test method. + Asserts that an object may be assigned a value of a given Type. + The expected Type. + The object under examination + The message to display in case of failure - + - Construct with the name of the factory - for use with languages - that don't support params arrays. + Asserts that an object may be assigned a value of a given Type. - The name of the data source to be used + The expected Type. + The object under examination - + - Construct with a Type and name - for use with languages - that don't support params arrays. + Asserts that an object may be assigned a value of a given Type. - The Type that will provide data - The name of the method, property or field that will provide data + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message - + - The name of a the method, property or fiend to be used as a source + Asserts that an object may be assigned a value of a given Type. + The expected Type. + The object under examination + The message to display in case of failure - + - A Type to be used as a source + Asserts that an object may be assigned a value of a given Type. + The expected Type. + The object under examination - + - AttributeExistsConstraint tests for the presence of a - specified attribute on a Type. + Asserts that an object may not be assigned a value of a given Type. + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message - + - The Constraint class is the base of all built-in constraints - within NUnit. It provides the operator overloads used to combine - constraints. + Asserts that an object may not be assigned a value of a given Type. + The expected Type. + The object under examination + The message to display in case of failure - + - The IConstraintExpression interface is implemented by all - complete and resolvable constraints and expressions. + Asserts that an object may not be assigned a value of a given Type. + The expected Type. + The object under examination - + - Return the top-level constraint for this expression + Asserts that an object may not be assigned a value of a given Type. - + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message - + - Static UnsetObject used to detect derived constraints - failing to set the actual value. + Asserts that an object may not be assigned a value of a given Type. + The expected Type. + The object under examination + The message to display in case of failure - + - The actual value being tested against a constraint + Asserts that an object may not be assigned a value of a given Type. + The expected Type. + The object under examination - + - The display name of this Constraint for use by ToString() + Asserts that an object is an instance of a given type. + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message - + - Argument fields used by ToString(); + Asserts that an object is an instance of a given type. + The expected Type + The object being examined + The message to display in case of failure - + - The builder holding this constraint + Asserts that an object is an instance of a given type. + The expected Type + The object being examined - + - Construct a constraint with no arguments + Asserts that an object is an instance of a given type. + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a constraint with one argument + Asserts that an object is an instance of a given type. + The expected Type + The object being examined + The message to display in case of failure - + - Construct a constraint with two arguments + Asserts that an object is an instance of a given type. + The expected Type + The object being examined - + - Sets the ConstraintBuilder holding this constraint + Asserts that an object is an instance of a given type. + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message - + - Write the failure message to the MessageWriter provided - as an argument. The default implementation simply passes - the constraint and the actual value to the writer, which - then displays the constraint description and the value. - - Constraints that need to provide additional details, - such as where the error occured can override this. + Asserts that an object is an instance of a given type. - The MessageWriter on which to display the message + The expected Type + The object being examined + The message to display in case of failure - + - Test whether the constraint is satisfied by a given value + Asserts that an object is an instance of a given type. - The value to be tested - True for success, false for failure + The expected Type + The object being examined - + - Test whether the constraint is satisfied by an - ActualValueDelegate that returns the value to be tested. - The default implementation simply evaluates the delegate - but derived classes may override it to provide for delayed - processing. + Asserts that an object is not an instance of a given type. - An ActualValueDelegate - True for success, false for failure + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message - + - Test whether the constraint is satisfied by a given reference. - The default implementation simply dereferences the value but - derived classes may override it to provide for delayed processing. + Asserts that an object is not an instance of a given type. - A reference to the value to be tested - True for success, false for failure + The expected Type + The object being examined + The message to display in case of failure - + - Write the constraint description to a MessageWriter + Asserts that an object is not an instance of a given type. - The writer on which the description is displayed + The expected Type + The object being examined - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Asserts that an object is not an instance of a given type. - The writer on which the actual value is displayed + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message - + - Default override of ToString returns the constraint DisplayName - followed by any arguments within angle brackets. + Asserts that an object is not an instance of a given type. - + The expected Type + The object being examined + The message to display in case of failure - + - Returns the string representation of this constraint + Asserts that an object is not an instance of a given type. + The expected Type + The object being examined - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Asserts that an object is not an instance of a given type. + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Asserts that an object is not an instance of a given type. + The expected Type + The object being examined + The message to display in case of failure - + - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. + Asserts that an object is not an instance of a given type. + The expected Type + The object being examined - + - Returns a DelayedConstraint with the specified delay time. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - The delay in milliseconds. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Returns a DelayedConstraint with the specified delay time - and polling interval. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - The delay in milliseconds. - The interval at which to test the constraint. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - The display name of this Constraint for use by ToString(). - The default value is the name of the constraint with - trailing "Constraint" removed. Derived classes may set - this to another name in their constructors. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less - + - Returns a ConstraintExpression by appending And - to the current constraint. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Returns a ConstraintExpression by appending And - to the current constraint. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Returns a ConstraintExpression by appending Or - to the current constraint. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less - + - Class used to detect any derived constraints - that fail to set the actual value in their - Matches override. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Constructs an AttributeExistsConstraint for a specific attribute Type + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Tests whether the object provides the expected attribute. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - A Type, MethodInfo, or other ICustomAttributeProvider - True if the expected attribute is present, otherwise false + The first value, expected to be greater + The second value, expected to be less - + - Writes the description of the constraint to the specified writer + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - AttributeConstraint tests that a specified attribute is present - on a Type or other provider and that the value of the attribute - satisfies some other constraint. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Abstract base class used for prefixes + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less - + - The base constraint + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct given a base constraint + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Constructs an AttributeConstraint for a specified attriute - Type and base constraint. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - - + The first value, expected to be greater + The second value, expected to be less - + - Determines whether the Type or other provider has the - expected attribute and if its value matches the - additional constraint specified. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Writes a description of the attribute to the specified writer. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Writes the actual value supplied to the specified writer. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less - + - Returns a string representation of the constraint. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - BasicConstraint is the abstract base for constraints that - perform a simple comparison to a constant value. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Initializes a new instance of the class. + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - The expected. - The description. + The first value, expected to be greater + The second value, expected to be less - + - Test whether the constraint is satisfied by a given value + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - The value to be tested - True for success, false for failure + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Write the constraint description to a MessageWriter + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. - The writer on which the description is displayed + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - NullConstraint tests that the actual value is null + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less - + - Initializes a new instance of the class. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - TrueConstraint tests that the actual value is true + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Initializes a new instance of the class. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - FalseConstraint tests that the actual value is false + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Initializes a new instance of the class. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - NaNConstraint tests that the actual value is a double or float NaN + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - Test that the actual value is an NaN + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - - + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Write the constraint description to a specified writer + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - BinaryConstraint is the abstract base of all constraints - that combine two other constraints in some fashion. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - The first constraint being combined + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - The second constraint being combined + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Construct a BinaryConstraint from two other constraints + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The first constraint - The second constraint + The first value, expected to be less + The second value, expected to be greater - + - AndConstraint succeeds only if both members succeed. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Create an AndConstraint from two other constraints + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The first constraint - The second constraint + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Apply both member constraints to an actual value, succeeding - succeeding only if both of them succeed. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The actual value - True if the constraints both succeeded + The first value, expected to be less + The second value, expected to be greater - + - Write a description for this contraint to a MessageWriter + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The MessageWriter to receive the description + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The writer on which the actual value is displayed + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - OrConstraint succeeds if either member succeeds + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - Create an OrConstraint from two other constraints + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The first constraint - The second constraint + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Apply the member constraints to an actual value, succeeding - succeeding as soon as one of them succeeds. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The actual value - True if either constraint succeeded + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Write a description for this contraint to a MessageWriter + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - The MessageWriter to receive the description + The first value, expected to be less + The second value, expected to be greater - + - CollectionConstraint is the abstract base class for - constraints that operate on collections. + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct an empty CollectionConstraint + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Construct a CollectionConstraint + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. - + The first value, expected to be less + The second value, expected to be greater - + - Determines whether the specified enumerable is empty. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The enumerable. - - true if the specified enumerable is empty; otherwise, false. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Test whether the constraint is satisfied by a given value + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The value to be tested - True for success, false for failure + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Protected method to be implemented by derived classes + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - - + The first value, expected to be greater + The second value, expected to be less - + - CollectionItemsEqualConstraint is the abstract base class for all - collection constraints that apply some notion of item equality - as a part of their operation. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct an empty CollectionConstraint + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Construct a CollectionConstraint + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - + The first value, expected to be greater + The second value, expected to be less - + - Flag the constraint to use the supplied IComparer object. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The IComparer object to use. - Self. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Flag the constraint to use the supplied IComparer object. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The IComparer object to use. - Self. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Flag the constraint to use the supplied Comparison object. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The IComparer object to use. - Self. + The first value, expected to be greater + The second value, expected to be less - + - Flag the constraint to use the supplied IEqualityComparer object. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The IComparer object to use. - Self. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Flag the constraint to use the supplied IEqualityComparer object. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The IComparer object to use. - Self. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Compares two collection members for equality + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less - + - Return a new CollectionTally for use in making tests + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - The collection to be included in the tally + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Flag the constraint to ignore case and return self. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - EmptyCollectionConstraint tests whether a collection is empty. - - - - - Check that the collection is empty + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - - + The first value, expected to be greater + The second value, expected to be less - + - Write the constraint description to a MessageWriter + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - UniqueItemsConstraint tests whether all the items in a - collection are unique. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Check that all items are unique. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - - + The first value, expected to be greater + The second value, expected to be less - + - Write a description of this constraint to a MessageWriter + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - CollectionContainsConstraint is used to test whether a collection - contains an expected object as a member. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - Construct a CollectionContainsConstraint + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - + The first value, expected to be greater + The second value, expected to be less - + - Test whether the expected item is contained in the collection + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message - + - Write a descripton of the constraint to a MessageWriter + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. - + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure - + - CollectionEquivalentCOnstraint is used to determine whether two - collections are equivalent. + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + The first value, expected to be greater + The second value, expected to be less - + - Construct a CollectionEquivalentConstraint + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Test whether two collections are equivalent + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - - + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Write a description of this constraint to a MessageWriter + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - + The first value, expected to be less + The second value, expected to be greater - + - CollectionSubsetConstraint is used to determine whether - one collection is a subset of another + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a CollectionSubsetConstraint + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - The collection that the actual value is expected to be a subset of + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Test whether the actual collection is a subset of - the expected collection provided. + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - - + The first value, expected to be less + The second value, expected to be greater - + - Write a description of this constraint to a MessageWriter + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - CollectionOrderedConstraint is used to test whether a collection is ordered. + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Construct a CollectionOrderedConstraint + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - Modifies the constraint to use an IComparer and returns self. + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Modifies the constraint to use an IComparer<T> and returns self. + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Modifies the constraint to use a Comparison<T> and returns self. + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - Modifies the constraint to test ordering by the value of - a specified property and returns self. + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Test whether the collection is ordered + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - - + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Write a description of the constraint to a MessageWriter + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - + The first value, expected to be less + The second value, expected to be greater - + - Returns the string representation of the constraint. - - + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - If used performs a reverse comparison + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - CollectionTally counts (tallies) the number of - occurences of each object in one or more enumerations. + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - Construct a CollectionTally object from a comparer and a collection + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - Try to remove an object from the tally + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - The object to remove - True if successful, false if the object was not found + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Try to remove a set of objects from the tally + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. - The objects to remove - True if successful, false if any object was not found + The first value, expected to be less + The second value, expected to be greater - + - The number of objects remaining in the tally + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message - + - ComparisonAdapter class centralizes all comparisons of - values in NUnit, adapting to the use of any provided - IComparer, IComparer<T> or Comparison<T> + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure - + - Returns a ComparisonAdapter that wraps an IComparer + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + The first value, expected to be less + The second value, expected to be greater - + - Returns a ComparisonAdapter that wraps an IComparer<T> + Asserts that an object is contained in a list. + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message - + - Returns a ComparisonAdapter that wraps a Comparison<T> + Asserts that an object is contained in a list. + The expected object + The list to be examined + The message to display in case of failure - + - Compares two objects + Asserts that an object is contained in a list. + The expected object + The list to be examined - + - Gets the default ComparisonAdapter, which wraps an - NUnitComparer object. + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message - + - Construct a ComparisonAdapter for an IComparer + Gets the number of assertions executed so far and + resets the counter to zero. - + - Compares two objects + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. - - - - + - Construct a default ComparisonAdapter + Constructor is used to issue a compatibility warning, if needed - + - ComparisonAdapter<T> extends ComparisonAdapter and - allows use of an IComparer<T> or Comparison<T> - to actually perform the comparison. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That. + The actual value to test + A Constraint to be applied - + - Construct a ComparisonAdapter for an IComparer<T> + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That. + The actual value to test + A Constraint to be applied + The message to be displayed in case of failure - + - Compare a Type T to an object + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That. + The actual value to test + A Constraint to be applied + The message to be displayed in case of failure + Arguments to use in formatting the message - + - Construct a ComparisonAdapter for a Comparison<T> - + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message - + - Compare a Type T to an object + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + The evaluated condition + The message to display if the condition is false - + - Abstract base class for constraints that compare values to - determine if one is greater than, equal to or less than - the other. This class supplies the Using modifiers. + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + The evaluated condition - + - ComparisonAdapter to be used in making the comparison + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested - + - Initializes a new instance of the class. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure - + - Initializes a new instance of the class. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Modifies the constraint to use an IComparer and returns self + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint to be applied - + - Modifies the constraint to use an IComparer<T> and returns self + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint to be applied + The message that will be displayed on failure - + - Modifies the constraint to use a Comparison<T> and returns self + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + The actual value to test + A Constraint to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Delegate used to delay evaluation of the actual value - to be used in evaluating a constraint + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + A TestDelegate to be executed + A ThrowsConstraint used in the test - + - ConstraintBuilder maintains the stacks that are used in - processing a ConstraintExpression. An OperatorStack - is used to hold operators that are waiting for their - operands to be reognized. a ConstraintStack holds - input constraints as well as the results of each - operator applied. + Returns a ListMapper based on a collection. + The original collection + - + - Initializes a new instance of the class. + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. - + - Appends the specified operator to the expression by first - reducing the operator stack and then pushing the new - operator on the stack. + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. - The operator to push. + + - + - Appends the specified constraint to the expresson by pushing - it on the constraint stack. + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. - The constraint to push. + + - + - Sets the top operator right context. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - The right context. + A Constraint expression to be applied + The actual value to test - + - Reduces the operator stack until the topmost item - precedence is greater than or equal to the target precedence. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - The target precedence. + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure - + - Resolves this instance, returning a Constraint. If the builder - is not currently in a resolvable state, an exception is thrown. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - The resolved constraint + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Gets a value indicating whether this instance is resolvable. - - - true if this instance is resolvable; otherwise, false. - + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message - + - OperatorStack is a type-safe stack for holding ConstraintOperators + Asserts that a condition is true. If the condition is false the method throws + an . + The evaluated condition + The message to display if the condition is false - + - Initializes a new instance of the class. + Asserts that a condition is true. If the condition is false the + method throws an . - The builder. + The evaluated condition - + - Pushes the specified operator onto the stack. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - The op. + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested - + - Pops the topmost operator from the stack. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure - + - Gets a value indicating whether this is empty. + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - true if empty; otherwise, false. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Gets the topmost operator without modifying the stack. + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - The top. + A Constraint expression to be applied + The actual value to test - + - ConstraintStack is a type-safe stack for holding Constraints + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure - + - Initializes a new instance of the class. + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. - The builder. + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Pushes the specified constraint. As a side effect, - the constraint's builder field is set to the - ConstraintBuilder owning this stack. + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. - The constraint. + A TestDelegate to be executed + A ThrowsConstraint used in the test - + - Pops this topmost constrait from the stack. - As a side effect, the constraint's builder - field is set to null. + The different targets a test action attribute can be applied to - - + - Gets a value indicating whether this is empty. + Default target, which is determined by where the action attribute is attached - true if empty; otherwise, false. - + - Gets the topmost constraint without modifying the stack. + Target a individual test case - The topmost constraint - + - ConstraintExpression represents a compound constraint in the - process of being constructed from a series of syntactic elements. - - Individual elements are appended to the expression as they are - reognized. Once an actual Constraint is appended, the expression - returns a resolvable Constraint. + Target a suite of test cases - + - ConstraintExpressionBase is the abstract base class for the - ConstraintExpression class, which represents a - compound constraint in the process of being constructed - from a series of syntactic elements. - - NOTE: ConstraintExpressionBase is separate because the - ConstraintExpression class was generated in earlier - versions of NUnit. The two classes may be combined - in a future version. + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + The raw result of the method invocation + The unwrapped result, if necessary - + - The ConstraintBuilder holding the elements recognized so far + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. - + - Initializes a new instance of the class. + Construct an ApartmentAttribute + The apartment state that this test must be run under. You must pass in a valid apartment state. - + - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. + Attribute used to apply a category to a test - The builder. - + - Returns a string representation of the expression as it - currently stands. This should only be used for testing, - since it has the side-effect of resolving the expression. + The name of the category - - + - Appends an operator to the expression and returns the - resulting expression itself. + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + The name of the category - + - Appends a self-resolving operator to the expression and - returns a new ResolvableConstraintExpression. + Protected constructor uses the Type name as the name + of the category. - + - Appends a constraint to the expression and returns that - constraint, which is associated with the current state - of the expression being built. + The name of the category - + - Initializes a new instance of the class. + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. - + - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. + Used to mark an array as containing a set of datapoints to be used + executing a theory within the same fixture that requires an argument + of the Type of the array elements. - The builder. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. + Attribute used to provide descriptive text about a + test case or fixture. - + - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. + Construct the attribute + Text describing the test - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + Gets the test description - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + Enumeration indicating how the expected message parameter is to be used - - - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. - + + Expect an exact match - + + Expect a message containing the parameter string + + + Match the regular expression provided as a parameter + + + Expect a message that starts with the parameter string + + - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. + ExpectedExceptionAttribute + - + - Returns a constraint that tests two items for equality + Constructor for a non-specific exception - + - Returns a constraint that tests that two references are the same object + Constructor for a given type of exception + The type of the expected exception - + - Returns a constraint that tests whether the - actual value is greater than the suppled argument + Constructor for a given exception name + The full name of the expected exception - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Gets or sets the expected exception type - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Gets or sets the full Type name of the expected exception - + - Returns a constraint that tests whether the - actual value is less than the suppled argument + Gets or sets the expected message text - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + Gets or sets the user message displayed in case of failure - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + Gets or sets the type of match to be performed on the expected message - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + Gets the name of a method to be used as an exception handler - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Default constructor - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Constructor with a reason + The reason test is marked explicit - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + The reason test is marked explicit - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Constructs the attribute without giving a reason + for ignoring the test. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Constructs the attribute giving a reason for ignoring the test + The reason for ignoring the test - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + The reason for ignoring a test - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. - + - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. + Constructor with no included items specified, for use + with named property syntax. - + - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. + Constructor taking one or more included items + Comma-delimited list of included items - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Name of the item that is needed in order for + a test to run. Multiple itemss may be given, + separated by a comma. - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Name of the item to be excluded. Multiple items + may be given, separated by a comma. - + - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. + The reason for including or excluding the test - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Constructor with no platforms specified, for use + with named property syntax. - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + Constructor taking one or more platforms + Comma-deliminted list of platforms - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + Constructor with no cultures specified, for use + with named property syntax. - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + Constructor taking one or more cultures + Comma-deliminted list of cultures - + - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. + Marks a test to use a combinatorial join of any argument data + provided. NUnit will create a test case for every combination of + the arguments provided. This can result in a large number of test + cases and so should be used judiciously. This is the default join + type, so the attribute need not be used except as documentation. - + - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. + Default constructor - + - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. + Marks a test to use pairwise join of any argument data provided. + NUnit will attempt too excercise every pair of argument values at + least once, using as small a number of test cases as it can. With + only two arguments, this is the same as a combinatorial join. - + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + Default constructor - + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + Marks a test to use a sequential join of any argument data + provided. NUnit will use arguements for each parameter in + sequence, generating test cases up to the largest number + of argument values provided and using null for any arguments + for which it runs out of values. Normally, this should be + used with the same number of arguments for each parameter. - + - Returns a constraint that tests whether the actual value falls - within a specified range. + Default constructor - + - Returns a ConstraintExpression that negates any - following constraint. + Summary description for MaxTimeAttribute. - + - Returns a ConstraintExpression that negates any - following constraint. + Construct a MaxTimeAttribute, given a time in milliseconds. + The maximum elapsed time in milliseconds - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. + Attribute used to identify a method that is called once + to perform setup before any child tests are run. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. + PropertyAttribute is used to attach information to a test as a name/value pair.. - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. + Construct a PropertyAttribute with a name and string value + The name of the property + The property value - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. + Construct a PropertyAttribute with a name and int value + The name of the property + The property value - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. + Construct a PropertyAttribute with a name and double value + The name of the property + The property value - + - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. + Constructor for derived classes that set the + property dictionary directly. - + - With is currently a NOP - reserved for future use. + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. - + - Returns a constraint that tests for null + Gets the property dictionary for this attribute - + - Returns a constraint that tests for True + RandomAttribute is used to supply a set of random values + to a single parameter of a parameterized test. - + - Returns a constraint that tests for False + Construct a set of doubles from 0.0 to 1.0, + specifying only the count. + - + - Returns a constraint that tests for a positive value + Construct a set of doubles from min to max + + + - + - Returns a constraint that tests for a negative value + Construct a set of ints from min to max + + + - + - Returns a constraint that tests for NaN + Get the collection of values to be used as arguments - + - Returns a constraint that tests for empty + RangeAttribute is used to supply a range of values to an + individual parameter of a parameterized test. - + - Returns a constraint that tests whether a collection - contains all unique items. + Construct a range of ints using default step of 1 + + - + - Returns a constraint that tests whether an object graph is serializable in binary format. + Construct a range of ints specifying the step size + + + - + - Returns a constraint that tests whether an object graph is serializable in xml format. + Construct a range of longs + + + - + - Returns a constraint that tests whether a collection is ordered + Construct a range of doubles + + + - + - Helper class with properties and methods that supply - a number of constraints used in Asserts. + Construct a range of floats + + + - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. + RepeatAttribute may be applied to test case in order + to run it multiple times. - + - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. + Construct a RepeatAttribute + The number of times to run the test - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + RequiredAddinAttribute may be used to indicate the names of any addins + that must be present in order to run some or all of the tests in an + assembly. If the addin is not loaded, the entire assembly is marked + as NotRunnable. - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + Initializes a new instance of the class. + The required addin. - + - Returns a constraint that tests two items for equality + Gets the name of required addin. + The required addin name. - + - Returns a constraint that tests that two references are the same object + Summary description for SetCultureAttribute. - + - Returns a constraint that tests whether the - actual value is greater than the suppled argument + Construct given the name of a culture + - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Summary description for SetUICultureAttribute. - + - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument + Construct given the name of a culture + - + - Returns a constraint that tests whether the - actual value is less than the suppled argument + SetUpAttribute is used in a TestFixture to identify a method + that is called immediately before each test is run. It is + also used in a SetUpFixture to identify the method that is + called once, before any of the subordinate tests are run. - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. - + - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument + Attribute used to mark a static (shared in VB) property + that returns a list of tests. - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + Attribute used in a TestFixture to identify a method that is + called immediately after each test is run. It is also used + in a SetUpFixture to identify the method that is called once, + after all subordinate tests have run. In either case, the method + is guaranteed to be called, even if an exception is thrown. - + - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. + Provide actions to execute before and after tests. - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Method called before each test + Info about the test to be run - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Method called after each test + Info about the test that was just run - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Gets or sets the ActionTargets for this attribute - + - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Descriptive text for this test - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + - + - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. + Construct a TestCaseAttribute with a single argument + - + - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. + Construct a TestCaseAttribute with a two arguments + + - + - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. + Construct a TestCaseAttribute with a three arguments + + + - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Gets the list of arguments to a test case - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Gets or sets the expected result. Use + ExpectedResult by preference. + The result. - + - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. + Gets or sets the expected result. + The result. - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Gets a flag indicating whether an expected + result has been set. - + - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. + Gets a list of categories associated with this test; - + - Returns a constraint that fails if the actual - value contains the substring supplied as an argument. + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + Gets or sets the expected exception. + The expected exception. - + - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. + Gets or sets the name the expected exception. + The expected name of the exception. - + - Returns a constraint that fails if the actual - value starts with the substring supplied as an argument. + Gets or sets the expected message of the expected exception + The expected message of the exception. - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + Gets or sets the type of match to be performed on the expected message - + - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. + Gets or sets the description. + The description. - + - Returns a constraint that fails if the actual - value ends with the substring supplied as an argument. + Gets or sets the name of the test. + The name of the test. - + - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. + Gets or sets the ignored status of the test - + - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. + Gets or sets the ignored status of the test - + - Returns a constraint that fails if the actual - value matches the pattern supplied as an argument. + Gets or sets the explicit status of the test - + - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. + Gets or sets the reason for not running the test - + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + Gets or sets the reason for not running the test. + Set has the side effect of marking the test as ignored. + The ignore reason. - + - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + FactoryAttribute indicates the source to be used to + provide test cases for a test method. - + - Returns a constraint that tests whether the actual value falls - within a specified range. + Construct with the name of the data source, which must + be a property, field or method of the test class itself. + An array of the names of the factories that will provide data - + - Returns a ConstraintExpression that negates any - following constraint. + Construct with a Type, which must implement IEnumerable + The Type that will provide data - + - Returns a ConstraintExpression that negates any - following constraint. + Construct with a Type and name. + that don't support params arrays. + The Type that will provide data + The name of the method, property or field that will provide data - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. + The name of a the method, property or fiend to be used as a source - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. + A Type to be used as a source - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. - + + + [TestFixture] + public class ExampleClass + {} + - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. + Default constructor - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + - + - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. + Descriptive text for this fixture - + - Returns a constraint that tests for null + Gets and sets the category for this fixture. + May be a comma-separated list of categories. - + - Returns a constraint that tests for True + Gets a list of categories for this fixture - + - Returns a constraint that tests for False + The arguments originally provided to the attribute - + - Returns a constraint that tests for a positive value + Gets or sets a value indicating whether this should be ignored. + true if ignore; otherwise, false. - + - Returns a constraint that tests for a negative value + Gets or sets the ignore reason. May set Ignored as a side effect. + The ignore reason. - + - Returns a constraint that tests for NaN + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. - + - Returns a constraint that tests for empty + Attribute used to identify a method that is + called before any tests in a fixture are run. - + - Returns a constraint that tests whether a collection - contains all unique items. + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. - + - Returns a constraint that tests whether an object graph is serializable in binary format. + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + - + - Returns a constraint that tests whether an object graph is serializable in xml format. + Used on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a method or assembly, sets the default timeout + for all contained test methods. - + - Returns a constraint that tests whether a collection is ordered + Construct a TimeoutAttribute given a time in milliseconds + The timeout value in milliseconds - + - The ConstraintOperator class is used internally by a - ConstraintBuilder to represent an operator that - modifies or combines constraints. + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. - Constraint operators use left and right precedence - values to determine whether the top operator on the - stack should be reduced before pushing a new operator. + On methods, you may also use STAThreadAttribute + to serve the same purpose. - + - The precedence value used when the operator - is about to be pushed to the stack. + Construct a RequiresSTAAttribute - + - The precedence value used when the operator - is on the top of the stack. + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Construct a RequiresMTAAttribute - - + - The syntax element preceding this operator + Marks a test that must run on a separate thread. - + - The syntax element folowing this operator + Construct a RequiresThreadAttribute - + - The precedence value used when the operator - is about to be pushed to the stack. + Construct a RequiresThreadAttribute, specifying the apartment - + - The precedence value used when the operator - is on the top of the stack. + Abstract base class for attributes that apply to parameters + and supply data for the parameter. - + - PrefixOperator takes a single constraint and modifies - it's action in some way. + Gets the data to be provided to the specified parameter - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. - - + - Returns the constraint created by applying this - prefix to another constraint. + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary. - - - + - Negates the test of the constraint it wraps. + Construct with one argument + - + - Constructs a new NotOperator + Construct with two arguments + + - + - Returns a NotConstraint applied to its argument. + Construct with three arguments + + + - + - Abstract base for operators that indicate how to - apply a constraint to items in a collection. + Construct with an array of arguments + - + - Constructs a CollectionOperator + Get the collection of values to be used as arguments - + - Represents a constraint that succeeds if all the - members of a collection match a base constraint. + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - they all succeed. + Construct with the name of the factory - for use with languages + that don't support params arrays. + The name of the data source to be used - + - Represents a constraint that succeeds if any of the - members of a collection match a base constraint. + Construct with a Type and name - for use with languages + that don't support params arrays. + The Type that will provide data + The name of the method, property or field that will provide data - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - any of them succeed. + The name of a the method, property or fiend to be used as a source - + - Represents a constraint that succeeds if none of the - members of a collection match a base constraint. + A Type to be used as a source - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. + A set of Assert methods operationg on one or more collections - + - Represents a constraint that succeeds if the specified - count of members of a collection match a base constraint. + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + - + - Construct an ExactCountOperator for a specified count + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. - The expected count + + - + - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. + Asserts that all items contained in collection are of the type specified by expectedType. + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of - + - Represents a constraint that simply wraps the - constraint provided as an argument, without any - further functionality, but which modifes the - order of evaluation because of its precedence. + Asserts that all items contained in collection are of the type specified by expectedType. + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure - + - Constructor for the WithOperator + Asserts that all items contained in collection are of the type specified by expectedType. + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Returns a constraint that wraps its argument + Asserts that all items contained in collection are not equal to null. + IEnumerable containing objects to be considered - + - Abstract base class for operators that are able to reduce to a - constraint whether or not another syntactic element follows. + Asserts that all items contained in collection are not equal to null. + IEnumerable containing objects to be considered + The message that will be displayed on failure - + - Operator used to test for the presence of a named Property - on an object and optionally apply further tests to the - value of that property. + Asserts that all items contained in collection are not equal to null. + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Constructs a PropOperator for a particular named property + Ensures that every object contained in collection exists within the collection + once and only once. + IEnumerable of objects to be considered - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Ensures that every object contained in collection exists within the collection + once and only once. - + IEnumerable of objects to be considered + The message that will be displayed on failure - + - Gets the name of the property to which the operator applies + Ensures that every object contained in collection exists within the collection + once and only once. + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Operator that tests for the presence of a particular attribute - on a type and optionally applies further tests to the attribute. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - Construct an AttributeOperator for a particular Type + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. - The Type of attribute tested - - + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure - + - Operator that tests that an exception is thrown and - optionally applies further tests to the exception. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure - + - Construct a ThrowsOperator + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Abstract base class for all binary operators + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure - + - Abstract method that produces a constraint by applying - the operator to its left and right constraint arguments. + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Gets the left precedence of the operator + Asserts that expected and actual are not exactly equal. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - Gets the right precedence of the operator + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable - + - Operator that requires both it's arguments to succeed + Asserts that expected and actual are not exactly equal. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure - + - Construct an AndOperator + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure - + - Apply the operator to produce an AndConstraint + Asserts that expected and actual are not exactly equal. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Operator that requires at least one of it's arguments to succeed + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Construct an OrOperator + Asserts that expected and actual are not equivalent. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered - + - Apply the operator to produce an OrConstraint + Asserts that expected and actual are not equivalent. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure - + - ContainsConstraint tests a whether a string contains a substring - or a collection contains an object. It postpones the decision of - which test to use until the type of the actual argument is known. - This allows testing whether a string is contained in a collection - or as a substring of another string using the same syntax. + Asserts that expected and actual are not equivalent. + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Initializes a new instance of the class. + Asserts that collection contains actual as an item. - The expected. + IEnumerable of objects to be considered + Object to be found within collection - + - Test whether the constraint is satisfied by a given value + Asserts that collection contains actual as an item. - The value to be tested - True for success, false for failure + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure - + - Write the constraint description to a MessageWriter + Asserts that collection contains actual as an item. - The writer on which the description is displayed + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Flag the constraint to use the supplied IComparer object. + Asserts that collection does not contain actual as an item. - The IComparer object to use. - Self. + IEnumerable of objects to be considered + Object that cannot exist within collection - + - Flag the constraint to use the supplied IComparer object. + Asserts that collection does not contain actual as an item. - The IComparer object to use. - Self. + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure - + - Flag the constraint to use the supplied Comparison object. + Asserts that collection does not contain actual as an item. - The IComparer object to use. - Self. + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Flag the constraint to use the supplied IEqualityComparer object. + Asserts that the superset does not contain the subset - The IComparer object to use. - Self. + The IEnumerable subset to be considered + The IEnumerable superset to be considered - + - Flag the constraint to use the supplied IEqualityComparer object. + Asserts that the superset does not contain the subset - The IComparer object to use. - Self. + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure - + - Flag the constraint to ignore case and return self. + Asserts that the superset does not contain the subset + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Applies a delay to the match so that a match can be evaluated in the future. + Asserts that the superset contains the subset. + The IEnumerable subset to be considered + The IEnumerable superset to be considered - + - Creates a new DelayedConstraint + Asserts that the superset contains the subset. - The inner constraint two decorate - The time interval after which the match is performed - If the value of is less than 0 + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure - + - Creates a new DelayedConstraint + Asserts that the superset contains the subset. - The inner constraint two decorate - The time interval after which the match is performed - The time interval used for polling - If the value of is less than 0 + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message - + - Test whether the constraint is satisfied by a given value + Assert that an array, list or other collection is empty - The value to be tested - True for if the base constraint fails, false if it succeeds + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message - + - Test whether the constraint is satisfied by a delegate + Assert that an array, list or other collection is empty - The delegate whose value is to be tested - True for if the base constraint fails, false if it succeeds + An array, list or other collection implementing IEnumerable + The message to be displayed on failure - + - Test whether the constraint is satisfied by a given reference. - Overridden to wait for the specified delay period before - calling the base constraint with the dereferenced value. + Assert that an array,list or other collection is empty - A reference to the value to be tested - True for success, false for failure + An array, list or other collection implementing IEnumerable - + - Write the constraint description to a MessageWriter + Assert that an array, list or other collection is empty - The writer on which the description is displayed + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message - + - Write the actual value for a failing constraint test to a MessageWriter. + Assert that an array, list or other collection is empty - The writer on which the actual value is displayed + An array, list or other collection implementing IEnumerable + The message to be displayed on failure - + - Returns the string representation of the constraint. + Assert that an array,list or other collection is empty + An array, list or other collection implementing IEnumerable - + - EmptyDirectoryConstraint is used to test that a directory is empty + Assert that an array, list or other collection is ordered + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message - + - Test whether the constraint is satisfied by a given value + Assert that an array, list or other collection is ordered - The value to be tested - True for success, false for failure + An array, list or other collection implementing IEnumerable + The message to be displayed on failure - + - Write the constraint description to a MessageWriter + Assert that an array, list or other collection is ordered - The writer on which the description is displayed + An array, list or other collection implementing IEnumerable - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Assert that an array, list or other collection is ordered - The writer on which the actual value is displayed + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message - + - EmptyConstraint tests a whether a string or collection is empty, - postponing the decision about which test is applied until the - type of the actual argument is known. + Assert that an array, list or other collection is ordered + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure - + - Test whether the constraint is satisfied by a given value + Assert that an array, list or other collection is ordered - The value to be tested - True for success, false for failure + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons - + - Write the constraint description to a MessageWriter + Class used to report compatibility errors at execution + time from the framework, using the writer passed in by + the core runners. - The writer on which the description is displayed - + - EqualConstraint is able to compare an actual value with the - expected value provided in its constructor. Two objects are - considered equal if both are null, or if both have the same - value. NUnit has special semantics for some object types. + Construct a new CompatibilityLogger + The TextWriter to use for logging - + - If true, strings in error messages will be clipped + Report a compatibility error - + - NUnitEqualityComparer used to test equality. + Report a compatibility warning - + - Initializes a new instance of the class. + Report a compatibility note - The expected value. - + - Flag the constraint to use a tolerance when determining equality. + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. - Tolerance value to be used - Self. - + - Flag the constraint to use the supplied IComparer object. + Construct an AllItemsConstraint on top of an existing constraint - The IComparer object to use. - Self. + - + - Flag the constraint to use the supplied IComparer object. + Apply the item constraint to each item in the collection, + failing if any item fails. - The IComparer object to use. - Self. + + - + - Flag the constraint to use the supplied IComparer object. + Write a description of this constraint to a MessageWriter - The IComparer object to use. - Self. + - + - Flag the constraint to use the supplied Comparison object. + AndConstraint succeeds only if both members succeed. - The IComparer object to use. - Self. - + - Flag the constraint to use the supplied IEqualityComparer object. + Create an AndConstraint from two other constraints - The IComparer object to use. - Self. + The first constraint + The second constraint - + - Flag the constraint to use the supplied IEqualityComparer object. + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. - The IComparer object to use. - Self. + The actual value + True if the constraints both succeeded - + - Test whether the constraint is satisfied by a given value + Write a description for this contraint to a MessageWriter - The value to be tested - True for success, false for failure + The MessageWriter to receive the description - + - Write a failure message. Overridden to provide custom - failure messages for EqualConstraint. + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. - The MessageWriter to write to + The writer on which the actual value is displayed - + - Write description of this constraint + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. - The MessageWriter to write to - + - Display the failure information for two collections that did not match. + Construct an AssignableFromConstraint for the type provided - The MessageWriter on which to display - The expected collection. - The actual collection - The depth of this failure in a set of nested collections + - + - Displays a single line showing the types and sizes of the expected - and actual enumerations, collections or arrays. If both are identical, - the value is only shown once. + Test whether an object can be assigned from the specified type - The MessageWriter on which to display - The expected collection or array - The actual collection or array - The indentation level for the message line + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. - + - Displays a single line showing the point in the expected and actual - arrays at which the comparison failed. If the arrays have different - structures or dimensions, both values are shown. + Write a description of this constraint to a MessageWriter - The MessageWriter on which to display - The expected array - The actual array - Index of the failure point in the underlying collections - The indentation level for the message line + The MessageWriter to use - + - Display the failure information for two IEnumerables that did not match. + AssignableToConstraint is used to test that an object + can be assigned to a given Type. - The MessageWriter on which to display - The expected enumeration. - The actual enumeration - The depth of this failure in a set of nested collections - + - Flag the constraint to ignore case and return self. + Construct an AssignableToConstraint for the type provided + - + - Flag the constraint to suppress string clipping - and return self. + Test whether an object can be assigned to the specified type + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. - + - Flag the constraint to compare arrays as collections - and return self. + Write a description of this constraint to a MessageWriter + The MessageWriter to use - + - Switches the .Within() modifier to interpret its tolerance as - a distance in representable values (see remarks). + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. - Self. - - Ulp stands for "unit in the last place" and describes the minimum - amount a given value can change. For any integers, an ulp is 1 whole - digit. For floating point values, the accuracy of which is better - for smaller numbers and worse for larger numbers, an ulp depends - on the size of the number. Using ulps for comparison of floating - point results instead of fixed tolerances is safer because it will - automatically compensate for the added inaccuracy of larger numbers. - - + - Switches the .Within() modifier to interpret its tolerance as - a percentage that the actual values is allowed to deviate from - the expected value. + Constructs an AttributeConstraint for a specified attriute + Type and base constraint. - Self + + - + - Causes the tolerance to be interpreted as a TimeSpan in days. + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in hours. + Writes a description of the attribute to the specified writer. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in minutes. + Writes the actual value supplied to the specified writer. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in seconds. + Returns a string representation of the constraint. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. - Self - + - Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + Constructs an AttributeExistsConstraint for a specific attribute Type - Self + - + - EqualityAdapter class handles all equality comparisons - that use an IEqualityComparer, IEqualityComparer<T> - or a ComparisonAdapter. + Tests whether the object provides the expected attribute. + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false - + - Compares two objects, returning true if they are equal + Writes the description of the constraint to the specified writer - + - Returns true if the two objects can be compared by this adapter. - The base adapter cannot handle IEnumerables except for strings. + BasicConstraint is the abstract base for constraints that + perform a simple comparison to a constant value. - + - Returns an EqualityAdapter that wraps an IComparer. + Initializes a new instance of the class. + The expected. + The description. - + - Returns an EqualityAdapter that wraps an IEqualityComparer. + Test whether the constraint is satisfied by a given value + The value to be tested + True for success, false for failure - + - Returns an EqualityAdapter that wraps an IEqualityComparer<T>. + Write the constraint description to a MessageWriter + The writer on which the description is displayed - + - Returns an EqualityAdapter that wraps an IComparer<T>. + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. - + - Returns an EqualityAdapter that wraps a Comparison<T>. + The first constraint being combined - + - EqualityAdapter that wraps an IComparer. + The second constraint being combined - + - Returns true if the two objects can be compared by this adapter. - Generic adapter requires objects of the specified type. + Construct a BinaryConstraint from two other constraints + The first constraint + The second constraint - + - EqualityAdapter that wraps an IComparer. + CollectionConstraint is the abstract base class for + constraints that operate on collections. - - Helper routines for working with floating point numbers - - - The floating point comparison code is based on this excellent article: - http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm - - - "ULP" means Unit in the Last Place and in the context of this library refers to - the distance between two adjacent floating point numbers. IEEE floating point - numbers can only represent a finite subset of natural numbers, with greater - accuracy for smaller numbers and lower accuracy for very large numbers. - - - If a comparison is allowed "2 ulps" of deviation, that means the values are - allowed to deviate by up to 2 adjacent floating point values, which might be - as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. - - - - - Compares two floating point values for equality - First floating point value to be compared - Second floating point value t be compared - - Maximum number of representable floating point values that are allowed to - be between the left and the right floating point values - - True if both numbers are equal or close to being equal - - - Floating point values can only represent a finite subset of natural numbers. - For example, the values 2.00000000 and 2.00000024 can be stored in a float, - but nothing inbetween them. - - - This comparison will count how many possible floating point values are between - the left and the right number. If the number of possible values between both - numbers is less than or equal to maxUlps, then the numbers are considered as - being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - - - - Compares two double precision floating point values for equality - First double precision floating point value to be compared - Second double precision floating point value t be compared - - Maximum number of representable double precision floating point values that are - allowed to be between the left and the right double precision floating point values - - True if both numbers are equal or close to being equal - - - Double precision floating point values can only represent a limited series of - natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 - can be stored in a double, but nothing inbetween them. - - - This comparison will count how many possible double precision floating point - values are between the left and the right number. If the number of possible - values between both numbers is less than or equal to maxUlps, then the numbers - are considered as being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - - - + - Reinterprets the memory contents of a floating point value as an integer value + Construct an empty CollectionConstraint - - Floating point value whose memory contents to reinterpret - - - The memory contents of the floating point value interpreted as an integer - - + - Reinterprets the memory contents of a double precision floating point - value as an integer value + Construct a CollectionConstraint - - Double precision floating point value whose memory contents to reinterpret - - - The memory contents of the double precision floating point value - interpreted as an integer - + - + - Reinterprets the memory contents of an integer as a floating point value + Determines whether the specified enumerable is empty. - Integer value whose memory contents to reinterpret + The enumerable. - The memory contents of the integer value interpreted as a floating point value + true if the specified enumerable is empty; otherwise, false. - + - Reinterprets the memory contents of an integer value as a double precision - floating point value + Test whether the constraint is satisfied by a given value - Integer whose memory contents to reinterpret - - The memory contents of the integer interpreted as a double precision - floating point value - - - - Union of a floating point variable and an integer - - - The union's value as a floating point variable - - - The union's value as an integer - - - The union's value as an unsigned integer - - - Union of a double precision floating point variable and a long - - - The union's value as a double precision floating point variable - - - The union's value as a long - - - The union's value as an unsigned long + The value to be tested + True for success, false for failure - + - Tests whether a value is greater than the value supplied to its constructor + Protected method to be implemented by derived classes + + - + - The value against which a comparison is to be made + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. - + - Initializes a new instance of the class. + Construct a CollectionContainsConstraint - The expected value. + - + - Write the constraint description to a MessageWriter + Test whether the expected item is contained in the collection - The writer on which the description is displayed + + - + - Test whether the constraint is satisfied by a given value + Write a descripton of the constraint to a MessageWriter - The value to be tested - True for success, false for failure + - + - Tests whether a value is greater than or equal to the value supplied to its constructor + CollectionEquivalentCOnstraint is used to determine whether two + collections are equivalent. - + - The value against which a comparison is to be made + Construct a CollectionEquivalentConstraint + - + - Initializes a new instance of the class. + Test whether two collections are equivalent - The expected value. + + - + - Write the constraint description to a MessageWriter + Write a description of this constraint to a MessageWriter - The writer on which the description is displayed + - + - Test whether the constraint is satisfied by a given value + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. - The value to be tested - True for success, false for failure - + - Tests whether a value is less than the value supplied to its constructor + Construct an empty CollectionConstraint - + - The value against which a comparison is to be made + Construct a CollectionConstraint + - + - Initializes a new instance of the class. + Flag the constraint to ignore case and return self. - The expected value. - + - Write the constraint description to a MessageWriter + Flag the constraint to use the supplied EqualityAdapter. + NOTE: For internal use only. - The writer on which the description is displayed + The EqualityAdapter to use. + Self. - + - Test whether the constraint is satisfied by a given value + Flag the constraint to use the supplied IComparer object. - The value to be tested - True for success, false for failure + The IComparer object to use. + Self. - + - Tests whether a value is less than or equal to the value supplied to its constructor + Flag the constraint to use the supplied IComparer object. + The IComparer object to use. + Self. - + - The value against which a comparison is to be made + Flag the constraint to use the supplied Comparison object. + The IComparer object to use. + Self. - + - Initializes a new instance of the class. + Flag the constraint to use the supplied IEqualityComparer object. - The expected value. + The IComparer object to use. + Self. - + - Write the constraint description to a MessageWriter + Flag the constraint to use the supplied IEqualityComparer object. - The writer on which the description is displayed + The IComparer object to use. + Self. - + - Test whether the constraint is satisfied by a given value + Compares two collection members for equality - The value to be tested - True for success, false for failure - + - MessageWriter is the abstract base for classes that write - constraint descriptions and messages in some form. The - class has separate methods for writing various components - of a message, allowing implementations to tailor the - presentation as needed. + Return a new CollectionTally for use in making tests + The collection to be included in the tally - + - Construct a MessageWriter given a culture + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another - + - Method to write single line message with optional args, usually - written to precede the general failure message. + Construct a CollectionSubsetConstraint - The message to be written - Any arguments used in formatting the message + The collection that the actual value is expected to be a subset of - + - Method to write single line message with optional args, usually - written to precede the general failure message, at a givel - indentation level. + Test whether the actual collection is a subset of + the expected collection provided. - The indentation level of the message - The message to be written - Any arguments used in formatting the message + + - + - Display Expected and Actual lines for a constraint. This - is called by MessageWriter's default implementation of - WriteMessageTo and provides the generic two-line display. + Write a description of this constraint to a MessageWriter - The constraint that failed + - + - Display Expected and Actual lines for given values. This - method may be called by constraints that need more control over - the display of actual and expected values than is provided - by the default implementation. + CollectionTally counts (tallies) the number of + occurences of each object in one or more enumerations. - The expected value - The actual value causing the failure - + - Display Expected and Actual lines for given values, including - a tolerance value on the Expected line. + Construct a CollectionTally object from a comparer and a collection - The expected value - The actual value causing the failure - The tolerance within which the test was made - + - Display the expected and actual string values on separate lines. - If the mismatch parameter is >=0, an additional line is displayed - line containing a caret that points to the mismatch point. + The number of objects remaining in the tally - The expected string value - The actual string value - The point at which the strings don't match or -1 - If true, case is ignored in locating the point where the strings differ - If true, the strings should be clipped to fit the line - + - Writes the text for a connector. + Try to remove an object from the tally - The connector. + The object to remove + True if successful, false if the object was not found - + - Writes the text for a predicate. + Try to remove a set of objects from the tally - The predicate. + The objects to remove + True if successful, false if any object was not found - + - Writes the text for an expected value. + ComparisonAdapter class centralizes all comparisons of + values in NUnit, adapting to the use of any provided + IComparer, IComparer<T> or Comparison<T> - The expected value. - + - Writes the text for a modifier + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. - The modifier. - + - Writes the text for an actual value. + Returns a ComparisonAdapter that wraps an IComparer - The actual value. - + - Writes the text for a generalized value. + Returns a ComparisonAdapter that wraps an IComparer<T> - The value. - + - Writes the text for a collection value, - starting at a particular point, to a max length + Returns a ComparisonAdapter that wraps a Comparison<T> - The collection containing elements to write. - The starting point of the elements to write - The maximum number of elements to write - + - Abstract method to get the max line length + Compares two objects - + - Static methods used in creating messages + Construct a default ComparisonAdapter - + - Static string used when strings are clipped + Construct a ComparisonAdapter for an IComparer - + - Returns the representation of a type as used in NUnitLite. - This is the same as Type.ToString() except for arrays, - which are displayed with their declared sizes. + Compares two objects - + + - + - Converts any control characters in a string - to their escaped representation. + ComparisonAdapter<T> extends ComparisonAdapter and + allows use of an IComparer<T> or Comparison<T> + to actually perform the comparison. - The string to be converted - The converted string - + - Return the a string representation for a set of indices into an array + Construct a ComparisonAdapter for an IComparer<T> - Array of indices for which a string is needed - + - Get an array of indices representing the point in a enumerable, - collection or array corresponding to a single int index into the - collection. + Compare a Type T to an object - The collection to which the indices apply - Index in the collection - Array of indices - + - Clip a string to a given length, starting at a particular offset, returning the clipped - string with ellipses representing the removed parts + Construct a ComparisonAdapter for a Comparison<T> - The string to be clipped - The maximum permitted length of the result string - The point at which to start clipping - The clipped string - + - Clip the expected and actual strings in a coordinated fashion, - so that they may be displayed together. + Compare a Type T to an object - - - - - + - Shows the position two strings start to differ. Comparison - starts at the start index. + Abstract base class for constraints that compare values to + determine if one is greater than, equal to or less than + the other. This class supplies the Using modifiers. - The expected string - The actual string - The index in the strings at which comparison should start - Boolean indicating whether case should be ignored - -1 if no mismatch found, or the index where mismatch found - + - The Numerics class contains common operations on numeric values. + ComparisonAdapter to be used in making the comparison - + - Checks the type of the object, returning true if - the object is a numeric type. + Initializes a new instance of the class. - The object to check - true if the object is a numeric type - + - Checks the type of the object, returning true if - the object is a floating point numeric type. + Initializes a new instance of the class. - The object to check - true if the object is a floating point numeric type - + - Checks the type of the object, returning true if - the object is a fixed point numeric type. + Modifies the constraint to use an IComparer and returns self - The object to check - true if the object is a fixed point numeric type - + - Test two numeric values for equality, performing the usual numeric - conversions and using a provided or default tolerance. If the tolerance - provided is Empty, this method may set it to a default tolerance. + Modifies the constraint to use an IComparer<T> and returns self - The expected value - The actual value - A reference to the tolerance in effect - True if the values are equal - + - Compare two numeric values, performing the usual numeric conversions. + Modifies the constraint to use a Comparison<T> and returns self - The expected value - The actual value - The relationship of the values to each other - + - NUnitComparer encapsulates NUnit's default behavior - in comparing two objects. + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint - + - Compares two objects + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. - - - - + - Returns the default NUnitComparer. + Class used to detect any derived constraints + that fail to set the actual value in their + Matches override. - + - Generic version of NUnitComparer + Static UnsetObject used to detect derived constraints + failing to set the actual value. - - + - Compare two objects of the same type + The actual value being tested against a constraint - + - NUnitEqualityComparer encapsulates NUnit's handling of - equality tests between objects. + The display name of this Constraint for use by ToString() - + - + Argument fields used by ToString(); - + - Compares two objects for equality within a tolerance + The builder holding this constraint - The first object to compare - The second object to compare - The tolerance to use in the comparison - - + - If true, all string comparisons will ignore case + Construct a constraint with no arguments - + - If true, arrays will be treated as collections, allowing - those of different dimensions to be compared + Construct a constraint with one argument - + - Comparison objects used in comparisons for some constraints. + Construct a constraint with two arguments - + - Compares two objects for equality within a tolerance. + Sets the ConstraintBuilder holding this constraint - + - Helper method to compare two arrays + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. - + - Method to compare two DirectoryInfo objects + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the constraint and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. - first directory to compare - second directory to compare - true if equivalent, false if not + The MessageWriter on which to display the message - + - Returns the default NUnitEqualityComparer + Test whether the constraint is satisfied by a given value + The value to be tested + True for success, false for failure - + - Gets and sets a flag indicating whether case should - be ignored in determining equality. + Test whether the constraint is satisfied by an + ActualValueDelegate that returns the value to be tested. + The default implementation simply evaluates the delegate + but derived classes may override it to provide for delayed + processing. + An + True for success, false for failure - + - Gets and sets a flag indicating that arrays should be - compared as collections, without regard to their shape. + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + A reference to the value to be tested + True for success, false for failure - + - Gets and sets an external comparer to be used to - test for equality. It is applied to members of - collections, in place of NUnit's own logic. + Write the constraint description to a MessageWriter + The writer on which the description is displayed - + - Gets the list of failure points for the last Match performed. + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + The writer on which the actual value is displayed - + - FailurePoint class represents one point of failure - in an equality test. + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + - + - The location of the failure + Returns the string representation of this constraint - + - The expected value + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. - + - The actual value + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. - + - Indicates whether the expected value is valid + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. - + - Indicates whether the actual value is valid + Returns a ConstraintExpression by appending And + to the current constraint. - + - PathConstraint serves as the abstract base of constraints - that operate on paths and provides several helper methods. + Returns a ConstraintExpression by appending And + to the current constraint. - + - The expected path used in the constraint + Returns a ConstraintExpression by appending Or + to the current constraint. - + - The actual path being tested + Returns a DelayedConstraint with the specified delay time. + The delay in milliseconds. + - + - Flag indicating whether a caseInsensitive comparison should be made + Returns a DelayedConstraint with the specified delay time + and polling interval. + The delay in milliseconds. + The interval at which to test the constraint. + - + - Construct a PathConstraint for a give expected path + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reognized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. - The expected path - + - Test whether the constraint is satisfied by a given value + OperatorStack is a type-safe stack for holding ConstraintOperators - The value to be tested - True for success, false for failure - + - Returns true if the expected path and actual path match + Initializes a new instance of the class. + The builder. - + - Returns the string representation of this constraint + Gets a value indicating whether this is empty. + true if empty; otherwise, false. - + - Canonicalize the provided path + Gets the topmost operator without modifying the stack. - - The path in standardized form + The top. - + - Test whether two paths are the same + Pushes the specified operator onto the stack. - The first path - The second path - Indicates whether case should be ignored - + The op. - + - Test whether one path is under another path + Pops the topmost operator from the stack. - The first path - supposed to be the parent path - The second path - supposed to be the child path - Indicates whether case should be ignored - + - Test whether one path is the same as or under another path + ConstraintStack is a type-safe stack for holding Constraints - The first path - supposed to be the parent path - The second path - supposed to be the child path - - + - Modifies the current instance to be case-insensitve - and returns it. + Initializes a new instance of the class. + The builder. - + - Modifies the current instance to be case-sensitve - and returns it. + Gets a value indicating whether this is empty. + true if empty; otherwise, false. - + - Summary description for SamePathConstraint. + Gets the topmost constraint without modifying the stack. + The topmost constraint - + - Initializes a new instance of the class. + Pushes the specified constraint. As a side effect, + the constraint's builder field is set to the + ConstraintBuilder owning this stack. - The expected path + The constraint. - + - Test whether the constraint is satisfied by a given value + Pops this topmost constrait from the stack. + As a side effect, the constraint's builder + field is set to null. - The expected path - The actual path - True for success, false for failure + - + - Write the constraint description to a MessageWriter + Initializes a new instance of the class. - The writer on which the description is displayed - + - SubPathConstraint tests that the actual path is under the expected path + Gets a value indicating whether this instance is resolvable. + + true if this instance is resolvable; otherwise, false. + - + - Initializes a new instance of the class. + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. - The expected path + The operator to push. - + - Test whether the constraint is satisfied by a given value + Appends the specified constraint to the expresson by pushing + it on the constraint stack. - The expected path - The actual path - True for success, false for failure + The constraint to push. - + - Write the constraint description to a MessageWriter + Sets the top operator right context. - The writer on which the description is displayed + The right context. - + - SamePathOrUnderConstraint tests that one path is under another + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + The target precedence. - + - Initializes a new instance of the class. + Resolves this instance, returning a Constraint. If the builder + is not currently in a resolvable state, an exception is thrown. - The expected path + The resolved constraint - + - Test whether the constraint is satisfied by a given value + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reognized. Once an actual Constraint is appended, the expression + returns a resolvable Constraint. - The expected path - The actual path - True for success, false for failure - + - Write the constraint description to a MessageWriter + Initializes a new instance of the class. - The writer on which the description is displayed - + - Predicate constraint wraps a Predicate in a constraint, - returning success if the predicate is true. + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + The builder. - + - Construct a PredicateConstraint from a predicate + Returns a ConstraintExpression that negates any + following constraint. - + - Determines whether the predicate succeeds when applied - to the actual value. + Returns a ConstraintExpression that negates any + following constraint. - + - Writes the description to a MessageWriter + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. - + - NotConstraint negates the effect of some other constraint + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. - + - Initializes a new instance of the class. + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. - The base constraint to be negated. - + - Test whether the constraint is satisfied by a given value + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. - The value to be tested - True for if the base constraint fails, false if it succeeds - + - Write the constraint description to a MessageWriter + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a MessageWriter. + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. - The writer on which the actual value is displayed - + - AllItemsConstraint applies another constraint to each - item in a collection, succeeding if they all succeed. + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. - + - Construct an AllItemsConstraint on top of an existing constraint + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. - - + - Apply the item constraint to each item in the collection, - failing if any item fails. + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. - - - + - Write a description of this constraint to a MessageWriter + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. - - + - SomeItemsConstraint applies another constraint to each - item in a collection, succeeding if any of them succeeds. + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. - + - Construct a SomeItemsConstraint on top of an existing constraint + With is currently a NOP - reserved for future use. - - + - Apply the item constraint to each item in the collection, - succeeding if any item succeeds. + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. - - - + - Write a description of this constraint to a MessageWriter + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. - - + - NoItemConstraint applies another constraint to each - item in a collection, failing if any of them succeeds. + Returns a constraint that tests for null - + - Construct a NoItemConstraint on top of an existing constraint + Returns a constraint that tests for True - - + - Apply the item constraint to each item in the collection, - failing if any item fails. + Returns a constraint that tests for False - - - + - Write a description of this constraint to a MessageWriter + Returns a constraint that tests for a positive value - - + - ExactCoutConstraint applies another constraint to each - item in a collection, succeeding only if a specified - number of items succeed. + Returns a constraint that tests for a negative value - + - Construct an ExactCountConstraint on top of an existing constraint + Returns a constraint that tests for NaN - - - + - Apply the item constraint to each item in the collection, - succeeding only if the expected number of items pass. + Returns a constraint that tests for empty - - - + - Write a description of this constraint to a MessageWriter + Returns a constraint that tests whether a collection + contains all unique items. - - + - PropertyExistsConstraint tests that a named property - exists on the object provided through Match. - - Originally, PropertyConstraint provided this feature - in addition to making optional tests on the vaue - of the property. The two constraints are now separate. + Returns a constraint that tests whether an object graph is serializable in binary format. - + - Initializes a new instance of the class. + Returns a constraint that tests whether an object graph is serializable in xml format. - The name of the property. - + - Test whether the property exists for a given object + Returns a constraint that tests two items for equality - The object to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a constraint that tests that two references are the same object - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. + Returns a constraint that tests whether the + actual value is greater than the suppled argument - The writer on which the actual value is displayed - + - Returns the string representation of the constraint. + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument - - + - PropertyConstraint extracts a named property and uses - its value as the actual value for a chained constraint. + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument - + - Initializes a new instance of the class. + Returns a constraint that tests whether the + actual value is less than the suppled argument - The name. - The constraint to apply to the property. - + - Test whether the constraint is satisfied by a given value + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. - The writer on which the actual value is displayed - + - Returns the string representation of the constraint. + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. - - + - RangeConstraint tests whethe two values are within a - specified range. + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - + - Initializes a new instance of the class. + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - From. - To. - + - Test whether the constraint is satisfied by a given value + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - The writer on which the description is displayed - + - ResolvableConstraintExpression is used to represent a compound - constraint being constructed at a point where the last operator - may either terminate the expression or may have additional - qualifying constraints added to it. - - It is used, for example, for a Property element or for - an Exception element, either of which may be optionally - followed by constraints that apply to the property or - exception. + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - + - Create a new instance of ResolvableConstraintExpression + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - + - Create a new instance of ResolvableConstraintExpression, - passing in a pre-populated ConstraintBuilder. + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - + - Resolve the current expression to a Constraint + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. - + - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. + Returns a constraint that tests whether a collection is ordered - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - + - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. - + - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. - + - Appends an And Operator to the expression + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. - + - Appends an Or operator to the expression. + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. - + - ReusableConstraint wraps a resolved constraint so that it - may be saved and reused as needed. + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. - + - Construct a ReusableConstraint + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. - The constraint or expression to be reused - + - Conversion operator from a normal constraint to a ReusableConstraint. + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. - The original constraint to be wrapped as a ReusableConstraint - - + - Returns the string representation of the constraint. + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. - A string representing the constraint - + - Resolves the ReusableConstraint by returning the constraint - that it originally wrapped. + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. - A resolved constraint - + - SameAsConstraint tests whether an object is identical to - the object passed to its constructor + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. - + - Initializes a new instance of the class. + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. - The expected object. - + - Test whether the constraint is satisfied by a given value + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a constraint that tests whether the actual value falls + within a specified range. - The writer on which the description is displayed - + - BinarySerializableConstraint tests whether - an object is serializable in binary format. + ConstraintExpressionBase is the abstract base class for the + ConstraintExpression class, which represents a + compound constraint in the process of being constructed + from a series of syntactic elements. + + NOTE: ConstraintExpressionBase is separate because the + ConstraintExpression class was generated in earlier + versions of NUnit. The two classes may be combined + in a future version. - + - Test whether the constraint is satisfied by a given value + The ConstraintBuilder holding the elements recognized so far - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Initializes a new instance of the class. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. - The writer on which the actual value is displayed + The builder. - + - Returns the string representation + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + - + - BinarySerializableConstraint tests whether - an object is serializable in binary format. + Appends an operator to the expression and returns the + resulting expression itself. - + - Test whether the constraint is satisfied by a given value + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Helper class with properties and methods that supply + a number of constraints used in Asserts. - The writer on which the actual value is displayed - + - Returns the string representation of this constraint + Returns a ConstraintExpression that negates any + following constraint. - + - StringConstraint is the abstract base for constraints - that operate on strings. It supports the IgnoreCase - modifier for string operations. + Returns a ConstraintExpression that negates any + following constraint. - + - The expected value + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. - + - Indicates whether tests should be case-insensitive + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. - + - Constructs a StringConstraint given an expected value + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. - The expected value - + - Modify the constraint to ignore case in matching. + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. - + - EmptyStringConstraint tests whether a string is empty. + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. - + - Test whether the constraint is satisfied by a given value + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. - The writer on which the description is displayed - + - NullEmptyStringConstraint tests whether a string is either null or empty. + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. - + - Constructs a new NullOrEmptyStringConstraint + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. - + - Test whether the constraint is satisfied by a given value + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. - The writer on which the description is displayed - + - SubstringConstraint can test whether a string contains - the expected substring. + Returns a constraint that tests for null - + - Initializes a new instance of the class. + Returns a constraint that tests for True - The expected. - + - Test whether the constraint is satisfied by a given value + Returns a constraint that tests for False - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a constraint that tests for a positive value - The writer on which the description is displayed - + - StartsWithConstraint can test whether a string starts - with an expected substring. + Returns a constraint that tests for a negative value - + - Initializes a new instance of the class. + Returns a constraint that tests for NaN - The expected string - + - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. + Returns a constraint that tests for empty - - - + - Write the constraint description to a MessageWriter + Returns a constraint that tests whether a collection + contains all unique items. - The writer on which the description is displayed - + - EndsWithConstraint can test whether a string ends - with an expected substring. + Returns a constraint that tests whether an object graph is serializable in binary format. - + - Initializes a new instance of the class. + Returns a constraint that tests whether an object graph is serializable in xml format. - The expected string - + - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. + Returns a constraint that tests two items for equality - - - + - Write the constraint description to a MessageWriter + Returns a constraint that tests that two references are the same object - The writer on which the description is displayed - + - RegexConstraint can test whether a string matches - the pattern provided. + Returns a constraint that tests whether the + actual value is greater than the suppled argument - + - Initializes a new instance of the class. + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument - The pattern. - + - Test whether the constraint is satisfied by a given value + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument - The value to be tested - True for success, false for failure - + - Write the constraint description to a MessageWriter + Returns a constraint that tests whether the + actual value is less than the suppled argument - The writer on which the description is displayed - + - ThrowsConstraint is used to test the exception thrown by - a delegate by applying a constraint to it. + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument - + - Initializes a new instance of the class, - using a constraint to be applied to the exception. + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument - A constraint to apply to the caught exception. - + - Executes the code of the delegate and captures any exception. - If a non-null base constraint was provided, it applies that - constraint to the exception. + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. - A delegate representing the code to be tested - True if an exception is thrown and the constraint succeeds, otherwise false - + - Converts an ActualValueDelegate to a TestDelegate - before calling the primary overload. + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. - - - + - Write the constraint description to a MessageWriter + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - The writer on which the actual value is displayed - + - Returns the string representation of this constraint + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - + - Get the actual exception thrown - used by Assert.Throws. + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. - + - ThrowsNothingConstraint tests that a delegate does not - throw an exception. + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - + - Test whether the constraint is satisfied by a given value + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - The value to be tested - True if no exception is thrown, otherwise false - + - Converts an ActualValueDelegate to a TestDelegate - before calling the primary overload. + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - - - + - Write the constraint description to a MessageWriter + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. - The writer on which the description is displayed - + - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. - The writer on which the actual value is displayed - + - Modes in which the tolerance value for a comparison can - be interpreted. + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. - + - The tolerance was created with a value, without specifying - how the value would be used. This is used to prevent setting - the mode more than once and is generally changed to Linear - upon execution of the test. + Returns a constraint that tests whether a collection is ordered - + - The tolerance is used as a numeric range within which - two compared values are considered to be equal. + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - + - Interprets the tolerance as the percentage by which - the two compared values my deviate from each other. + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - + - Compares two values based in their distance in - representable numbers. + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. - + - The Tolerance class generalizes the notion of a tolerance - within which an equality test succeeds. Normally, it is - used with numeric types, but it can be used with any - type that supports taking a difference between two - objects and comparing that difference to a value. + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. - + - Constructs a linear tolerance of a specdified amount + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. - + - Constructs a tolerance given an amount and ToleranceMode + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. - + - Tests that the current Tolerance is linear with a - numeric value, throwing an exception if it is not. + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. - + - Returns an empty Tolerance object, equivalent to - specifying no tolerance. In most cases, it results - in an exact match but for floats and doubles a - default tolerance may be used. + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. - + - Returns a zero Tolerance object, equivalent to - specifying an exact match. + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. - + - Gets the ToleranceMode for the current Tolerance + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. - + - Gets the value of the current Tolerance instance. + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. - + - Returns a new tolerance, using the current amount as a percentage. + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. - + - Returns a new tolerance, using the current amount in Ulps. + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of days. + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of hours. + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of minutes. + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of seconds. + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of milliseconds. + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. - + - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of clock ticks. + Returns a constraint that tests whether the actual value falls + within a specified range. - + - Returns true if the current tolerance is empty. + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. - + - TypeConstraint is the abstract base for constraints - that take a Type as their expected value. + Initializes a new instance of the class. + The expected. - + - The expected Type used by the constraint + Flag the constraint to ignore case and return self. - + - Construct a TypeConstraint for a given Type + Test whether the constraint is satisfied by a given value - + The value to be tested + True for success, false for failure - + - Write the actual value for a failing constraint test to a - MessageWriter. TypeConstraints override this method to write - the name of the type. + Write the constraint description to a MessageWriter - The writer on which the actual value is displayed + The writer on which the description is displayed - + - ExactTypeConstraint is used to test that an object - is of the exact type provided in the constructor + Flag the constraint to use the supplied IComparer object. + The IComparer object to use. + Self. - + - Construct an ExactTypeConstraint for a given Type + Flag the constraint to use the supplied IComparer object. - The expected Type. + The IComparer object to use. + Self. - + - Test that an object is of the exact type specified + Flag the constraint to use the supplied Comparison object. - The actual value. - True if the tested object is of the exact type provided, otherwise false. + The IComparer object to use. + Self. - + - Write the description of this constraint to a MessageWriter + Flag the constraint to use the supplied IEqualityComparer object. - The MessageWriter to use + The IComparer object to use. + Self. - + - ExceptionTypeConstraint is a special version of ExactTypeConstraint - used to provided detailed info about the exception thrown in - an error message. + Flag the constraint to use the supplied IEqualityComparer object. + The IComparer object to use. + Self. - + - Constructs an ExceptionTypeConstraint + Applies a delay to the match so that a match can be evaluated in the future. - + - Write the actual value for a failing constraint test to a - MessageWriter. Overriden to write additional information - in the case of an Exception. + Creates a new DelayedConstraint - The MessageWriter to use + The inner constraint two decorate + The time interval after which the match is performed + If the value of is less than 0 - + - InstanceOfTypeConstraint is used to test that an object - is of the same type provided or derived from it. + Creates a new DelayedConstraint + The inner constraint two decorate + The time interval after which the match is performed + The time interval used for polling + If the value of is less than 0 - + - Construct an InstanceOfTypeConstraint for the type provided + Test whether the constraint is satisfied by a given value - The expected Type + The value to be tested + True for if the base constraint fails, false if it succeeds - + - Test whether an object is of the specified type or a derived type + Test whether the constraint is satisfied by a delegate - The object to be tested - True if the object is of the provided type or derives from it, otherwise false. + The delegate whose value is to be tested + True for if the base constraint fails, false if it succeeds - + - Write a description of this constraint to a MessageWriter + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. - The MessageWriter to use + A reference to the value to be tested + True for success, false for failure - + - AssignableFromConstraint is used to test that an object - can be assigned from a given Type. + Write the constraint description to a MessageWriter + The writer on which the description is displayed - + - Construct an AssignableFromConstraint for the type provided + Write the actual value for a failing constraint test to a MessageWriter. - + The writer on which the actual value is displayed - + - Test whether an object can be assigned from the specified type + Returns the string representation of the constraint. - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - + - Write a description of this constraint to a MessageWriter + EmptyCollectionConstraint tests whether a collection is empty. - The MessageWriter to use - + - AssignableToConstraint is used to test that an object - can be assigned to a given Type. + Check that the collection is empty + + - + - Construct an AssignableToConstraint for the type provided + Write the constraint description to a MessageWriter - + - + - Test whether an object can be assigned to the specified type + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - + - Write a description of this constraint to a MessageWriter + Test whether the constraint is satisfied by a given value - The MessageWriter to use + The value to be tested + True for success, false for failure - + - Thrown when an assertion failed. + Write the constraint description to a MessageWriter - - - - The error message that explains - the reason for the exception - - - The error message that explains - the reason for the exception - The exception that caused the - current exception + The writer on which the description is displayed - + - Serialization Constructor + EmptyDirectoryConstraint is used to test that a directory is empty - + - Thrown when an assertion failed. + Test whether the constraint is satisfied by a given value + The value to be tested + True for success, false for failure - - - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - + - Serialization Constructor + Write the constraint description to a MessageWriter + The writer on which the description is displayed - + - Thrown when a test executes inconclusively. + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. - - - - The error message that explains - the reason for the exception - - - The error message that explains - the reason for the exception - The exception that caused the - current exception + The writer on which the actual value is displayed - + - Serialization Constructor + EmptyStringConstraint tests whether a string is empty. - + - Thrown when an assertion failed. + Test whether the constraint is satisfied by a given value + The value to be tested + True for success, false for failure - - - - - The error message that explains - the reason for the exception - The exception that caused the - current exception + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed - + - Serialization Constructor + EndsWithConstraint can test whether a string ends + with an expected substring. - + - + Initializes a new instance of the class. - + The expected string - + - Compares two objects of a given Type for equality within a tolerance + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. - The first object to compare - The second object to compare - The tolerance to use in the comparison + - + - The different targets a test action attribute can be applied to + Write the constraint description to a MessageWriter + The writer on which the description is displayed - + - Default target, which is determined by where the action attribute is attached + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. - + - Target a individual test case + If true, strings in error messages will be clipped - + - Target a suite of test cases + NUnitEqualityComparer used to test equality. - + - Delegate used by tests that execute code and - capture any thrown exception. + Initializes a new instance of the class. + The expected value. - + - The Assert class contains a collection of static methods that - implement the most common assertions used in NUnit. + Flag the constraint to ignore case and return self. - + - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. + Flag the constraint to suppress string clipping + and return self. - + - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. + Flag the constraint to compare arrays as collections + and return self. - - - + - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. + Flag the constraint to use a tolerance when determining equality. - - + Tolerance value to be used + Self. - + - Helper for Assert.AreEqual(double expected, double actual, ...) - allowing code generation to work consistently. + Switches the .Within() modifier to interpret its tolerance as + a distance in representable values (see remarks). - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + - + - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual values is allowed to deviate from + the expected value. - The message to initialize the with. - Arguments to be used in formatting the message + Self - + - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. + Causes the tolerance to be interpreted as a TimeSpan in days. - The message to initialize the with. + Self - + - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. + Causes the tolerance to be interpreted as a TimeSpan in hours. + Self - + - Throws an with the message and arguments - that are passed in. This is used by the other Assert functions. + Causes the tolerance to be interpreted as a TimeSpan in minutes. - The message to initialize the with. - Arguments to be used in formatting the message + Self - + - Throws an with the message that is - passed in. This is used by the other Assert functions. + Causes the tolerance to be interpreted as a TimeSpan in seconds. - The message to initialize the with. + Self - + - Throws an . - This is used by the other Assert functions. + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + Self - + - Throws an with the message and arguments - that are passed in. This causes the test to be reported as ignored. + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. - The message to initialize the with. - Arguments to be used in formatting the message + Self - + - Throws an with the message that is - passed in. This causes the test to be reported as ignored. + Flag the constraint to use the supplied IComparer object. - The message to initialize the with. + The IComparer object to use. + Self. - + - Throws an . - This causes the test to be reported as ignored. + Flag the constraint to use the supplied IComparer object. + The IComparer object to use. + Self. - + - Throws an with the message and arguments - that are passed in. This causes the test to be reported as inconclusive. + Flag the constraint to use the supplied IComparer object. - The message to initialize the with. - Arguments to be used in formatting the message + The IComparer object to use. + Self. - + - Throws an with the message that is - passed in. This causes the test to be reported as inconclusive. + Flag the constraint to use the supplied Comparison object. - The message to initialize the with. + The IComparer object to use. + Self. - + - Throws an . - This causes the test to be reported as Inconclusive. + Flag the constraint to use the supplied IEqualityComparer object. + The IComparer object to use. + Self. - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Flag the constraint to use the supplied IEqualityComparer object. - A Constraint to be applied - The actual value to test + The IComparer object to use. + Self. - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Test whether the constraint is satisfied by a given value - A Constraint to be applied - The actual value to test - The message that will be displayed on failure + The value to be tested + True for success, false for failure - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message + The MessageWriter to write to - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Write description of this constraint - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested + The MessageWriter to write to - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Display the failure information for two collections that did not match. - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Displays a single line showing the types and sizes of the expected + and actual enumerations, collections or arrays. If both are identical, + the value is only shown once. - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both values are shown. - A Constraint to be applied - The actual value to test + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Display the failure information for two IEnumerables that did not match. - A Constraint to be applied - The actual value to test - The message that will be displayed on failure + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + EqualityAdapter class handles all equality comparisons + that use an IEqualityComparer, IEqualityComparer<T> + or a ComparisonAdapter. - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message + Compares two objects, returning true if they are equal + - + - Asserts that a condition is true. If the condition is false the method throws - an . + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. - The evaluated condition - The message to display if the condition is false - + - Asserts that a condition is true. If the condition is false the method throws - an . + Returns an EqualityAdapter that wraps an IComparer. - The evaluated condition - + - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. + EqualityAdapter that wraps an IComparer. - A TestDelegate to be executed - A ThrowsConstraint used in the test - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. + Returns an EqualityAdapter that wraps an IEqualityComparer. - A Constraint to be applied - The actual value to test - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. + Returns an EqualityAdapter that wraps an IEqualityComparer<T>. - - This method is provided for use by VB developers needing to test - the value of properties with private setters. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws a particular exception when called. + Returns an EqualityAdapter that wraps an IComparer<T>. - A constraint to be satisfied by the exception - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws a particular exception when called. + EqualityAdapter that wraps an IComparer. - A constraint to be satisfied by the exception - A TestSnippet delegate - The message that will be displayed on failure - + - Verifies that a delegate throws a particular exception when called. + Returns an EqualityAdapter that wraps a Comparison<T>. - A constraint to be satisfied by the exception - A TestSnippet delegate - + - Verifies that a delegate throws a particular exception when called. + EqualityAdapterList represents a list of EqualityAdapters + in a common class across platforms. - The exception Type expected - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws a particular exception when called. + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. - The exception Type expected - A TestSnippet delegate - The message that will be displayed on failure - + - Verifies that a delegate throws a particular exception when called. + Construct an ExactCountConstraint on top of an existing constraint - The exception Type expected - A TestSnippet delegate + + - + - Verifies that a delegate throws a particular exception when called. + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. - Type of the expected exception - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message + + - + - Verifies that a delegate throws a particular exception when called. + Write a description of this constraint to a MessageWriter - Type of the expected exception - A TestSnippet delegate - The message that will be displayed on failure + - + - Verifies that a delegate throws a particular exception when called. + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor - Type of the expected exception - A TestSnippet delegate - + - Verifies that a delegate throws an exception when called - and returns it. + Construct an ExactTypeConstraint for a given Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message + The expected Type. - + - Verifies that a delegate throws an exception when called - and returns it. + Test that an object is of the exact type specified - A TestDelegate - The message that will be displayed on failure + The actual value. + True if the tested object is of the exact type provided, otherwise false. - + - Verifies that a delegate throws an exception when called - and returns it. + Write the description of this constraint to a MessageWriter - A TestDelegate + The MessageWriter to use - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + Constructs an ExceptionTypeConstraint - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + Write the actual value for a failing constraint test to a + MessageWriter. Overriden to write additional information + in the case of an Exception. - The expected Exception Type - A TestDelegate + The MessageWriter to use - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + FailurePoint class represents one point of failure + in an equality test. - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + The location of the failure - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - + - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. + The expected value - The expected Exception Type - A TestDelegate - + - Verifies that a delegate does not throw an exception + The actual value - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Verifies that a delegate does not throw an exception. + Indicates whether the expected value is valid - A TestSnippet delegate - The message that will be displayed on failure - + - Verifies that a delegate does not throw an exception. + Indicates whether the actual value is valid - A TestSnippet delegate - + - Asserts that a condition is true. If the condition is false the method throws - an . + FailurePointList represents a set of FailurePoints + in a cross-platform way. - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that a condition is true. If the condition is false the method throws - an . + FalseConstraint tests that the actual value is false - The evaluated condition - The message to display in case of failure - + - Asserts that a condition is true. If the condition is false the method throws - an . + Initializes a new instance of the class. - The evaluated condition - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the values are + allowed to deviate by up to 2 adjacent floating point values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure + + Union of a floating point variable and an integer - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition + + The union's value as a floating point variable - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message + + The union's value as an integer - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure + + The union's value as an unsigned integer - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition + + Union of a double precision floating point variable and a long - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message + + The union's value as a double precision floating point variable - + + The union's value as a long + + + The union's value as an unsigned long + + + Compares two floating point values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point values that are allowed to + be between the left and the right floating point values + + True if both numbers are equal or close to being equal + + + Floating point values can only represent a finite subset of natural numbers. + For example, the values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point values are between + the left and the right number. If the number of possible values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point values that are + allowed to be between the left and the right double precision floating point values + + True if both numbers are equal or close to being equal + + + Double precision floating point values can only represent a limited series of + natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + values are between the left and the right number. If the number of possible + values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + - + - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Reinterprets the memory contents of an integer as a floating point value - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Reinterprets the memory contents of an integer value as a double precision + floating point value - The object that is to be tested - The message to display in case of failure + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Tests whether a value is greater than the value supplied to its constructor + + + + + The value against which a comparison is to be made - The object that is to be tested - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Initializes a new instance of the class. - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The expected value. - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Write the constraint description to a MessageWriter - The object that is to be tested - The message to display in case of failure + The writer on which the description is displayed - + - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. + Test whether the constraint is satisfied by a given value - The object that is to be tested + The value to be tested + True for success, false for failure - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Tests whether a value is greater than or equal to the value supplied to its constructor - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + The value against which a comparison is to be made - The object that is to be tested - The message to display in case of failure - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Initializes a new instance of the class. - The object that is to be tested + The expected value. - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Write the constraint description to a MessageWriter - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The writer on which the description is displayed - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + Test whether the constraint is satisfied by a given value - The object that is to be tested - The message to display in case of failure + The value to be tested + True for success, false for failure - + - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. - The object that is to be tested - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Construct an InstanceOfTypeConstraint for the type provided - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The expected Type - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Test whether an object is of the specified type or a derived type - The value that is to be tested - The message to display in case of failure + The object to be tested + True if the object is of the provided type or derives from it, otherwise false. - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Write a description of this constraint to a MessageWriter - The value that is to be tested + The MessageWriter to use - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + The IConstraintExpression interface is implemented by all + complete and resolvable constraints and expressions. - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Return the top-level constraint for this expression - The value that is to be tested - The message to display in case of failure + - + - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. + Tests whether a value is less than the value supplied to its constructor - The value that is to be tested - + - Assert that a string is empty - that is equal to string.Empty + The value against which a comparison is to be made - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - + - Assert that a string is empty - that is equal to string.Empty + Initializes a new instance of the class. - The string to be tested - The message to display in case of failure + The expected value. - + - Assert that a string is empty - that is equal to string.Empty + Write the constraint description to a MessageWriter - The string to be tested + The writer on which the description is displayed - + - Assert that an array, list or other collection is empty + Test whether the constraint is satisfied by a given value - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message + The value to be tested + True for success, false for failure - + - Assert that an array, list or other collection is empty + Tests whether a value is less than or equal to the value supplied to its constructor - An array, list or other collection implementing ICollection - The message to display in case of failure - + - Assert that an array, list or other collection is empty + The value against which a comparison is to be made - An array, list or other collection implementing ICollection - + - Assert that a string is not empty - that is not equal to string.Empty + Initializes a new instance of the class. - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The expected value. - + - Assert that a string is not empty - that is not equal to string.Empty + Write the constraint description to a MessageWriter - The string to be tested - The message to display in case of failure + The writer on which the description is displayed - + - Assert that a string is not empty - that is not equal to string.Empty + Test whether the constraint is satisfied by a given value - The string to be tested + The value to be tested + True for success, false for failure - + - Assert that an array, list or other collection is not empty + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message - + - Assert that an array, list or other collection is not empty + Construct a MessageWriter given a culture - An array, list or other collection implementing ICollection - The message to display in case of failure - + - Assert that an array, list or other collection is not empty + Abstract method to get the max line length - An array, list or other collection implementing ICollection - + - Assert that a string is either null or equal to string.Empty + Method to write single line message with optional args, usually + written to precede the general failure message. - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The message to be written + Any arguments used in formatting the message - + - Assert that a string is either null or equal to string.Empty + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. - The string to be tested - The message to display in case of failure + The indentation level of the message + The message to be written + Any arguments used in formatting the message - + - Assert that a string is either null or equal to string.Empty + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. - The string to be tested + The constraint that failed - + - Assert that a string is not null or empty + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message + The expected value + The actual value causing the failure - + - Assert that a string is not null or empty + Display Expected and Actual lines for given values, including + a tolerance value on the Expected line. - The string to be tested - The message to display in case of failure + The expected value + The actual value causing the failure + The tolerance within which the test was made - + - Assert that a string is not null or empty + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. - The string to be tested + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line - + - Asserts that an object may be assigned a value of a given Type. + Writes the text for a connector. - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message + The connector. - + - Asserts that an object may be assigned a value of a given Type. + Writes the text for a predicate. - The expected Type. - The object under examination - The message to display in case of failure + The predicate. - + - Asserts that an object may be assigned a value of a given Type. + Writes the text for an expected value. - The expected Type. - The object under examination + The expected value. - + - Asserts that an object may be assigned a value of a given Type. + Writes the text for a modifier - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message + The modifier. - + - Asserts that an object may be assigned a value of a given Type. + Writes the text for an actual value. - The expected Type. - The object under examination - The message to display in case of failure + The actual value. - + - Asserts that an object may be assigned a value of a given Type. + Writes the text for a generalized value. - The expected Type. - The object under examination + The value. - + - Asserts that an object may not be assigned a value of a given Type. + Writes the text for a collection value, + starting at a particular point, to a max length - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write - + - Asserts that an object may not be assigned a value of a given Type. + Static methods used in creating messages - The expected Type. - The object under examination - The message to display in case of failure - + - Asserts that an object may not be assigned a value of a given Type. + Static string used when strings are clipped - The expected Type. - The object under examination - + - Asserts that an object may not be assigned a value of a given Type. + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message + + - + - Asserts that an object may not be assigned a value of a given Type. + Converts any control characters in a string + to their escaped representation. - The expected Type. - The object under examination - The message to display in case of failure + The string to be converted + The converted string - + - Asserts that an object may not be assigned a value of a given Type. + Return the a string representation for a set of indices into an array - The expected Type. - The object under examination + Array of indices for which a string is needed - + - Asserts that an object is an instance of a given type. + Get an array of indices representing the point in a enumerable, + collection or array corresponding to a single int index into the + collection. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message + The collection to which the indices apply + Index in the collection + Array of indices - + - Asserts that an object is an instance of a given type. + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts - The expected Type - The object being examined - The message to display in case of failure + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string - + - Asserts that an object is an instance of a given type. + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. - The expected Type - The object being examined + + + + - + - Asserts that an object is an instance of a given type. + Shows the position two strings start to differ. Comparison + starts at the start index. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found - + - Asserts that an object is an instance of a given type. + NaNConstraint tests that the actual value is a double or float NaN - The expected Type - The object being examined - The message to display in case of failure - + - Asserts that an object is an instance of a given type. + Test that the actual value is an NaN - The expected Type - The object being examined + + - + - Asserts that an object is an instance of a given type. + Write the constraint description to a specified writer - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message + - + - Asserts that an object is an instance of a given type. + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. - The expected Type - The object being examined - The message to display in case of failure - + - Asserts that an object is an instance of a given type. + Construct a NoItemConstraint on top of an existing constraint - The expected Type - The object being examined + - + - Asserts that an object is not an instance of a given type. + Apply the item constraint to each item in the collection, + failing if any item fails. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message + + - + - Asserts that an object is not an instance of a given type. + Write a description of this constraint to a MessageWriter - The expected Type - The object being examined - The message to display in case of failure + - + - Asserts that an object is not an instance of a given type. + NotConstraint negates the effect of some other constraint - The expected Type - The object being examined - + - Asserts that an object is not an instance of a given type. + Initializes a new instance of the class. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message + The base constraint to be negated. - + - Asserts that an object is not an instance of a given type. + Test whether the constraint is satisfied by a given value - The expected Type - The object being examined - The message to display in case of failure + The value to be tested + True for if the base constraint fails, false if it succeeds - + - Asserts that an object is not an instance of a given type. + Write the constraint description to a MessageWriter - The expected Type - The object being examined + The writer on which the description is displayed - + - Asserts that an object is not an instance of a given type. + Write the actual value for a failing constraint test to a MessageWriter. - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message + The writer on which the actual value is displayed - + - Asserts that an object is not an instance of a given type. + NullConstraint tests that the actual value is null - The expected Type - The object being examined - The message to display in case of failure - + - Asserts that an object is not an instance of a given type. + Initializes a new instance of the class. - The expected Type - The object being examined - + - Verifies that two values are equal. If they are not, then an - is thrown. + NullEmptyStringConstraint tests whether a string is either null or empty. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two values are equal. If they are not, then an - is thrown. + Constructs a new NullOrEmptyStringConstraint - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are equal. If they are not, then an - is thrown. + Test whether the constraint is satisfied by a given value - The expected value - The actual value + The value to be tested + True for success, false for failure - + - Verifies that two values are equal. If they are not, then an - is thrown. + Write the constraint description to a MessageWriter - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The writer on which the description is displayed - + - Verifies that two values are equal. If they are not, then an - is thrown. + The Numerics class contains common operations on numeric values. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are equal. If they are not, then an - is thrown. + Checks the type of the object, returning true if + the object is a numeric type. - The expected value - The actual value + The object to check + true if the object is a numeric type - + - Verifies that two values are equal. If they are not, then an - is thrown. + Checks the type of the object, returning true if + the object is a floating point numeric type. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The object to check + true if the object is a floating point numeric type - + - Verifies that two values are equal. If they are not, then an - is thrown. + Checks the type of the object, returning true if + the object is a fixed point numeric type. - The expected value - The actual value - The message to display in case of failure + The object to check + true if the object is a fixed point numeric type - + - Verifies that two values are equal. If they are not, then an - is thrown. + Test two numeric values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. The expected value The actual value + A reference to the tolerance in effect + True if the values are equal - + - Verifies that two values are equal. If they are not, then an - is thrown. + Compare two numeric values, performing the usual numeric conversions. The expected value The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The relationship of the values to each other - + - Verifies that two values are equal. If they are not, then an - is thrown. + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are equal. If they are not, then an - is thrown. + Returns the default NUnitComparer. - The expected value - The actual value - + - Verifies that two values are equal. If they are not, then an - is thrown. + Compares two objects - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + + + - + - Verifies that two values are equal. If they are not, then an - is thrown. + Generic version of NUnitComparer - The expected value - The actual value - The message to display in case of failure + - + - Verifies that two values are equal. If they are not, then an - is thrown. + Compare two objects of the same type - The expected value - The actual value - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + If true, all string comparisons will ignore case - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + Comparison objects used in comparisons for some constraints. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + List of points at which a failure occured. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - + - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. + RecursionDetector used to check for recursion when + evaluating self-referencing enumerables. - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - + - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. + Returns the default NUnitEqualityComparer - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. - The value that is expected - The actual value - The message to display in case of failure - + - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. - The value that is expected - The actual value - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Compares two objects for equality within a tolerance, setting + the tolerance to the actual tolerance used if an empty + tolerance is supplied. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Helper method to compare two arrays - The expected value - The actual value - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Method to compare two DirectoryInfo objects - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + first directory to compare + second directory to compare + true if equivalent, false if not - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + RecursionDetector detects when a comparison + between two enumerables has reached a point + where the same objects that were previously + compared are again being compared. This allows + the caller to stop the comparison if desired. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Check whether two objects have previously + been compared, returning true if they have. + The two objects are remembered, so that a + second call will always return true. - The expected value - The actual value - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Represents a constraint that succeeds if all the + members of a collection match a base constraint. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Operator that requires both it's arguments to succeed - The expected value - The actual value - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Construct an AndOperator - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Apply the operator to produce an AndConstraint - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. - The expected value - The actual value - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Construct an AttributeOperator for a particular Type - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + The Type of attribute tested - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Abstract base class for all binary operators - The expected value - The actual value - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message + - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Gets the left precedence of the operator - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Gets the right precedence of the operator - The expected value - The actual value - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Abstract base for operators that indicate how to + apply a constraint to items in a collection. - The expected value - The actual value - The message to display in case of failure - + - Verifies that two values are not equal. If they are equal, then an - is thrown. + Constructs a CollectionOperator - The expected value - The actual value - + - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. + CollectionOrderedConstraint is used to test whether a collection is ordered. - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. + Construct a CollectionOrderedConstraint - The value that is expected - The actual value - The message to display in case of failure - + - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. + If used performs a reverse comparison - The value that is expected - The actual value - + - Asserts that two objects refer to the same object. If they - are not the same an is thrown. + Modifies the constraint to use an IComparer and returns self. - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that two objects refer to the same object. If they - are not the same an is thrown. + Modifies the constraint to use an IComparer<T> and returns self. - The expected object - The actual object - The message to display in case of failure - + - Asserts that two objects refer to the same object. If they - are not the same an is thrown. + Modifies the constraint to use a Comparison<T> and returns self. - The expected object - The actual object - + - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. + Modifies the constraint to test ordering by the value of + a specified property and returns self. - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message - + - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. + Test whether the collection is ordered - The expected object - The actual object - The message to display in case of failure + + - + - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. + Write a description of the constraint to a MessageWriter - The expected object - The actual object + - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Returns the string representation of the constraint. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + values to determine whether the top operator on the + stack should be reduced before pushing a new operator. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The precedence value used when the operator + is about to be pushed to the stack. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The precedence value used when the operator + is on the top of the stack. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The syntax element preceding this operator - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The syntax element folowing this operator - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The precedence value used when the operator + is about to be pushed to the stack. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + The precedence value used when the operator + is on the top of the stack. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. - The first value, expected to be greater - The second value, expected to be less + - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Construct an ExactCountOperator for a specified count - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The expected count - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Negates the test of the constraint it wraps. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Constructs a new NotOperator - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Returns a NotConstraint applied to its argument. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Operator that requires at least one of it's arguments to succeed - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Construct an OrOperator - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Apply the operator to produce an OrConstraint - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + PrefixOperator takes a single constraint and modifies + it's action in some way. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Returns the constraint created by applying this + prefix to another constraint. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + + - + - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Gets the name of the property to which the operator applies - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + Constructs a PropOperator for a particular named property + - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. - The first value, expected to be less - The second value, expected to be greater + - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Construct a ThrowsOperator - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifes the + order of evaluation because of its precedence. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Constructor for the WithOperator - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Returns a constraint that wraps its argument - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + OrConstraint succeeds if either member succeeds - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Create an OrConstraint from two other constraints - The first value, expected to be less - The second value, expected to be greater + The first constraint + The second constraint - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The actual value + True if either constraint succeeded - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Write a description for this contraint to a MessageWriter - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + The MessageWriter to receive the description - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + The expected path used in the constraint - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Flag indicating whether a caseInsensitive comparison should be made - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Construct a PathConstraint for a give expected path - The first value, expected to be less - The second value, expected to be greater + The expected path - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Modifies the current instance to be case-insensitve + and returns it. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Modifies the current instance to be case-sensitve + and returns it. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Test whether the constraint is satisfied by a given value - The first value, expected to be less - The second value, expected to be greater + The value to be tested + True for success, false for failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Returns true if the expected path and actual path match - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Returns the string representation of this constraint - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. + Transform the provided path to its canonical form so that it + may be more easily be compared with other paths. - The first value, expected to be less - The second value, expected to be greater + The original path + The path in canonical form - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Test whether one path in canonical form is under another. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The first path - supposed to be the parent path + The second path - supposed to be the child path + Indicates whether case should be ignored + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Construct a PredicateConstraint from a predicate - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Determines whether the predicate succeeds when applied + to the actual value. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Writes the description to a MessageWriter - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Abstract base class used for prefixes - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + The base constraint - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Construct given a base constraint - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Initializes a new instance of the class. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The name. + The constraint to apply to the property. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Test whether the constraint is satisfied by a given value - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The value to be tested + True for success, false for failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Write the constraint description to a MessageWriter - The first value, expected to be greater - The second value, expected to be less + The writer on which the description is displayed - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The writer on which the actual value is displayed - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Returns the string representation of the constraint. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the vaue + of the property. The two constraints are now separate. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Initializes a new instance of the class. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The name of the property. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Test whether the property exists for a given object - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The object to be tested + True for success, false for failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Write the constraint description to a MessageWriter - The first value, expected to be greater - The second value, expected to be less + The writer on which the description is displayed - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Write the actual value for a failing constraint test to a + MessageWriter. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + The writer on which the actual value is displayed - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Returns the string representation of the constraint. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + RangeConstraint tests whether two values are within a + specified range. - The first value, expected to be greater - The second value, expected to be less - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Initializes a new instance of the class. - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message + From. + To. - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Test whether the constraint is satisfied by a given value - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure + The value to be tested + True for success, false for failure - + - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. + Write the constraint description to a MessageWriter - The first value, expected to be greater - The second value, expected to be less + The writer on which the description is displayed - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + RegexConstraint can test whether a string matches + the pattern provided. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Initializes a new instance of the class. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + The pattern. - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Test whether the constraint is satisfied by a given value - The first value, expected to be less - The second value, expected to be greater + The value to be tested + True for success, false for failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Write the constraint description to a MessageWriter - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The writer on which the description is displayed - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Create a new instance of ResolvableConstraintExpression - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Appends an And Operator to the expression - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Appends an Or operator to the expression. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Resolve the current expression to a Constraint - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. - The first value, expected to be less - The second value, expected to be greater - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Construct a ReusableConstraint from a constraint expression - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + The expression to be resolved and reused - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Converts a constraint to a ReusableConstraint - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure + The constraint to be converted + A ReusableConstraint - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Returns the string representation of the constraint. - The first value, expected to be less - The second value, expected to be greater + A string representing the constraint - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Resolves the ReusableConstraint by returning the constraint + that it originally wrapped. - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message + A resolved constraint - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + SameAsConstraint tests whether an object is identical to + the object passed to its constructor - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - + - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. + Initializes a new instance of the class. - The first value, expected to be less - The second value, expected to be greater + The expected object. - + - Asserts that an object is contained in a list. + Test whether the constraint is satisfied by a given value - The expected object - The list to be examined - The message to display in case of failure - Array of objects to be used in formatting the message + The value to be tested + True for success, false for failure - + - Asserts that an object is contained in a list. + Write the constraint description to a MessageWriter - The expected object - The list to be examined - The message to display in case of failure + The writer on which the description is displayed - + - Asserts that an object is contained in a list. + Summary description for SamePathConstraint. - The expected object - The list to be examined - + - Gets the number of assertions executed so far and - resets the counter to zero. + Initializes a new instance of the class. + The expected path - + - AssertionHelper is an optional base class for user tests, - allowing the use of shorter names for constraints and - asserts and avoiding conflict with the definition of - , from which it inherits much of its - behavior, in certain mock object frameworks. + Test whether the constraint is satisfied by a given value + The expected path + The actual path + True for success, false for failure - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That + Write the constraint description to a MessageWriter - A Constraint to be applied - The actual value to test + The writer on which the description is displayed - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That. + SamePathOrUnderConstraint tests that one path is under another - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That + Initializes a new instance of the class. - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message + The expected path - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Test whether the constraint is satisfied by a given value - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested + The expected path + The actual path + True for success, false for failure - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Write the constraint description to a MessageWriter - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure + The writer on which the description is displayed - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + BinarySerializableConstraint tests whether + an object is serializable in binary format. - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Test whether the constraint is satisfied by a given value - A Constraint to be applied - The actual value to test + The value to be tested + True for success, false for failure - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Write the constraint description to a MessageWriter - A Constraint to be applied - The actual value to test - The message that will be displayed on failure + The writer on which the description is displayed - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message + The writer on which the actual value is displayed - + - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to Assert.That. - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message + Returns the string representation + - + - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to Assert.That. + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. - The evaluated condition - The message to display if the condition is false - + - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically Assert.That. + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. - The evaluated condition - + - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. - A TestDelegate to be executed - A ThrowsConstraint used in the test - + - Returns a ListMapper based on a collection. + Construct a SomeItemsConstraint on top of an existing constraint - The original collection - + - + - Provides static methods to express the assumptions - that must be met for a test to give a meaningful - result. If an assumption is not met, the test - should produce an inconclusive result. + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + - + - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. + Write a description of this constraint to a MessageWriter - - + - + - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. + StartsWithConstraint can test whether a string starts + with an expected substring. - - - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Initializes a new instance of the class. - A Constraint expression to be applied - The actual value to test + The expected string - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure + + - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Write the constraint description to a MessageWriter - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message + The writer on which the description is displayed - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + The expected value - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure - + - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Indicates whether tests should be case-insensitive - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Constructs a StringConstraint given an expected value - A Constraint expression to be applied - The actual value to test + The expected value - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Modify the constraint to ignore case in matching. - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - + - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. + Test whether the constraint is satisfied by a given value - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message + The value to be tested + True for success, false for failure - + - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure - + - Asserts that a condition is true. If the condition is false the method throws - an . + SubPathConstraint tests that the actual path is under the expected path - The evaluated condition - The message to display if the condition is false - + - Asserts that a condition is true. If the condition is false the - method throws an . + Initializes a new instance of the class. - The evaluated condition + The expected path - + - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. + Test whether the constraint is satisfied by a given value - A TestDelegate to be executed - A ThrowsConstraint used in the test + The expected path + The actual path + True for success, false for failure - + - A set of Assert methods operationg on one or more collections + Write the constraint description to a MessageWriter + The writer on which the description is displayed - + - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. + SubstringConstraint can test whether a string contains + the expected substring. - - - + - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. + Initializes a new instance of the class. - - + The expected. - + - Asserts that all items contained in collection are of the type specified by expectedType. + Test whether the constraint is satisfied by a given value - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of + The value to be tested + True for success, false for failure - + - Asserts that all items contained in collection are of the type specified by expectedType. + Write the constraint description to a MessageWriter - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure + The writer on which the description is displayed - + - Asserts that all items contained in collection are of the type specified by expectedType. + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that all items contained in collection are not equal to null. + Initializes a new instance of the class, + using a constraint to be applied to the exception. - IEnumerable containing objects to be considered + A constraint to apply to the caught exception. - + - Asserts that all items contained in collection are not equal to null. + Get the actual exception thrown - used by Assert.Throws. - IEnumerable containing objects to be considered - The message that will be displayed on failure - + - Asserts that all items contained in collection are not equal to null. + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false - + - Ensures that every object contained in collection exists within the collection - once and only once. + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. - IEnumerable of objects to be considered - + - Ensures that every object contained in collection exists within the collection - once and only once. + Write the constraint description to a MessageWriter - IEnumerable of objects to be considered - The message that will be displayed on failure + The writer on which the description is displayed - + - Ensures that every object contained in collection exists within the collection - once and only once. + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message + The writer on which the actual value is displayed - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. + Returns the string representation of this constraint - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. + ThrowsNothingConstraint tests that a delegate does not + throw an exception. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. + Test whether the constraint is satisfied by a given value - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure + The value to be tested + True if no exception is thrown, otherwise false - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. + Test whether the constraint is satisfied by a given delegate - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure + Delegate returning the value to be tested + True if no exception is thrown, otherwise false - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. + Write the constraint description to a MessageWriter - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message + The writer on which the description is displayed - + - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. + Write the actual value for a failing constraint test to a + MessageWriter. Overridden in ThrowsNothingConstraint to write + information about the exception that was actually caught. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message + The writer on which the actual value is displayed - + - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - + - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + Returns an empty Tolerance object, equivalent to + specifying no tolerance. In most cases, it results + in an exact match but for floats and doubles a + default tolerance may be used. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - + - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + Returns a zero Tolerance object, equivalent to + specifying an exact match. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that expected and actual are not exactly equal. + Constructs a linear tolerance of a specdified amount - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - + - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. + Constructs a tolerance given an amount and ToleranceMode - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - + - Asserts that expected and actual are not exactly equal. + Gets the ToleranceMode for the current Tolerance - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - + - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - + - Asserts that expected and actual are not exactly equal. + Gets the value of the current Tolerance instance. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. + Returns a new tolerance, using the current amount as a percentage. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that expected and actual are not equivalent. + Returns a new tolerance, using the current amount in Ulps. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - + - Asserts that expected and actual are not equivalent. + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of days. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - + - Asserts that expected and actual are not equivalent. + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of hours. - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that collection contains actual as an item. + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of minutes. - IEnumerable of objects to be considered - Object to be found within collection - + - Asserts that collection contains actual as an item. + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of seconds. - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - + - Asserts that collection contains actual as an item. - - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - Arguments to be used in formatting the message + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of milliseconds. + - + - Asserts that collection does not contain actual as an item. + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of clock ticks. - IEnumerable of objects to be considered - Object that cannot exist within collection - + - Asserts that collection does not contain actual as an item. + Returns true if the current tolerance is empty. - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - + - Asserts that collection does not contain actual as an item. + Modes in which the tolerance value for a comparison can be interpreted. - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that superset is not a subject of subset. + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. - The IEnumerable superset to be considered - The IEnumerable subset to be considered - + - Asserts that superset is not a subject of subset. + The tolerance is used as a numeric range within which + two compared values are considered to be equal. - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - + - Asserts that superset is not a subject of subset. + Interprets the tolerance as the percentage by which + the two compared values my deviate from each other. - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Asserts that superset is a subset of subset. + Compares two values based in their distance in + representable numbers. - The IEnumerable superset to be considered - The IEnumerable subset to be considered - + - Asserts that superset is a subset of subset. + TrueConstraint tests that the actual value is true - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - + - Asserts that superset is a subset of subset. + Initializes a new instance of the class. - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - + - Assert that an array, list or other collection is empty + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - + - Assert that an array, list or other collection is empty + The expected Type used by the constraint - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - + - Assert that an array,list or other collection is empty + Construct a TypeConstraint for a given Type - An array, list or other collection implementing IEnumerable + - + - Assert that an array, list or other collection is empty + Write the actual value for a failing constraint test to a + MessageWriter. TypeConstraints override this method to write + the name of the type. - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message + The writer on which the actual value is displayed - + - Assert that an array, list or other collection is empty + UniqueItemsConstraint tests whether all the items in a + collection are unique. - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - + - Assert that an array,list or other collection is empty + Check that all items are unique. - An array, list or other collection implementing IEnumerable + + - + - Assert that an array, list or other collection is ordered + Write a description of this constraint to a MessageWriter - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message + - + - Assert that an array, list or other collection is ordered + XmlSerializableConstraint tests whether + an object is serializable in XML format. - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - + - Assert that an array, list or other collection is ordered + Test whether the constraint is satisfied by a given value - An array, list or other collection implementing IEnumerable + The value to be tested + True for success, false for failure - + - Assert that an array, list or other collection is ordered + Write the constraint description to a MessageWriter - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure - Arguments to be used in formatting the message + The writer on which the description is displayed - + - Assert that an array, list or other collection is ordered + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure + The writer on which the actual value is displayed - + - Assert that an array, list or other collection is ordered + Returns the string representation of this constraint - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - Static helper class used in the constraint-based syntax + Helper class with properties and methods that supply + a number of constraints used in Asserts. - + - Creates a new SubstringConstraint + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. - The value of the substring - A SubstringConstraint - + - Creates a new CollectionContainsConstraint. + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. - The item that should be found. - A new CollectionContainsConstraint @@ -9192,49 +9116,164 @@ The message to display if directory is not within the path Arguments to be used in formatting the message - + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a new . This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Thrown when an assertion failed. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Serialization Constructor - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Thrown when a test executes inconclusively. - A directory to search - sub-directory asserted to exist under directory - + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Serialization Constructor - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Thrown when an assertion failed. - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + - Asserts that path does not contain actual as a subdirectory or - an is thrown. + Serialization Constructor - A directory to search - sub-directory asserted to exist under directory @@ -9357,203 +9396,379 @@ - Asserts that two Streams are not equal. If they are equal - an is thrown. + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the Streams are the same. + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Class used to guard against unexpected argument values + by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + + + + + + Compares two objects for equality within a tolerance - The expected Stream - The actual Stream - The message to be displayed when the two Stream are the same. - Arguments to be used in formatting the message + The first object to compare + The second object to compare + The tolerance to use in the comparison + - + - Asserts that two Streams are not equal. If they are equal - an is thrown. + - The expected Stream - The actual Stream - The message to be displayed when the Streams are the same. + - + - Asserts that two Streams are not equal. If they are equal - an is thrown. + Compares two objects of a given Type for equality within a tolerance - The expected Stream - The actual Stream + The first object to compare + The second object to compare + The tolerance to use in the comparison + - + - Asserts that two files are not equal. If they are equal - an is thrown. + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. - A file containing the value that is expected - A file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - + - Asserts that two files are not equal. If they are equal - an is thrown. + Executed before each test is run - A file containing the value that is expected - A file containing the actual value - The message to display if objects are not equal + Provides details about the test that is going to be run. - + - Asserts that two files are not equal. If they are equal - an is thrown. + Executed after each test is run - A file containing the value that is expected - A file containing the actual value + Provides details about the test that has just been run. - + - Asserts that two files are not equal. If they are equal - an is thrown. + Provides the target for the action attribute - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message + The target for the action attribute - + - Asserts that two files are not equal. If they are equal - an is thrown. + Interface implemented by a user fixture in order to + validate any expected exceptions. It is only called + for test methods marked with the ExpectedException + attribute. - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if objects are not equal - + - Asserts that two files are not equal. If they are equal - an is thrown. + Method to handle an expected exception - The path to a file containing the value that is expected - The path to a file containing the actual value + The exception to be handled - + - GlobalSettings is a place for setting default values used - by the framework in performing asserts. + Provides details about a test - + - Default tolerance for floating point equality + Creates an instance of TestDetails + The fixture that the test is a member of, if available. + The method that implements the test, if available. + The full name of the test. + A string representing the type of test, e.g. "Test Case". + Indicates if the test represents a suite of tests. - + - Helper class with properties and methods that supply - a number of constraints used in Asserts. + The fixture that the test is a member of, if available. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. + The method that implements the test, if available. - + - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. + The full name of the test. - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + A string representing the type of test, e.g. "Test Case". - + - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. + Indicates if the test represents a suite of tests. - + - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. + Helper class with properties and methods that supply + a number of constraints used in Asserts. - + Returns a ConstraintExpression that negates any following constraint. - + Returns a ConstraintExpression, which will apply the following constraint to all members of a collection, succeeding if all of them succeed. - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. + Returns a constraint that tests for null - + - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. + Returns a constraint that tests for True - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. + Returns a constraint that tests for False - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. + Returns a constraint that tests for a positive value - + - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. + Returns a constraint that tests for a negative value - + - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. + Returns a constraint that tests for NaN - + - Interface implemented by a user fixture in order to - validate any expected exceptions. It is only called - for test methods marked with the ExpectedException - attribute. + Returns a constraint that tests for empty - + - Method to handle an expected exception + Returns a constraint that tests whether a collection + contains all unique items. - The exception to be handled - + - Helper class with properties and methods that supply - a number of constraints used in Asserts. + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. @@ -9675,6 +9890,11 @@ is a subset of the collection supplied as an argument. + + + Returns a constraint that tests whether a collection is ordered + + Returns a constraint that succeeds if the actual @@ -9696,7 +9916,7 @@ Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. + value matches the regular expression supplied as an argument. @@ -9708,7 +9928,7 @@ Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. + is under an expected path after canonicalization. @@ -9723,74 +9943,74 @@ within a specified range. - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - + - Returns a constraint that tests for null + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + NOTE: This interface is used in both the framework + and the core, even though that results in two different + types. However, sharing the source code guarantees that + the various implementations will be compatible and that + the core is able to reflect successfully over the + framework implementations of ITestCaseData. - + - Returns a constraint that tests for True + Gets the argument list to be provided to the test - + - Returns a constraint that tests for False + Gets the expected result - + - Returns a constraint that tests for a positive value + Indicates whether a result has been specified. + This is necessary because the result may be + null, so it's value cannot be checked. - + - Returns a constraint that tests for a negative value + Gets the expected exception Type - + - Returns a constraint that tests for NaN + Gets the FullName of the expected exception - + - Returns a constraint that tests for empty + Gets the name to be used for the test - + - Returns a constraint that tests whether a collection - contains all unique items. + Gets the description of the test - + - Returns a constraint that tests whether an object graph is serializable in binary format. + Gets a value indicating whether this is ignored. + true if ignored; otherwise, false. - + - Returns a constraint that tests whether an object graph is serializable in xml format. + Gets a value indicating whether this is explicit. + true if explicit; otherwise, false. - + - Returns a constraint that tests whether a collection is ordered + Gets the ignore reason. + The ignore reason. @@ -9837,6 +10057,11 @@ way, to allow re-running of tests if necessary. + + + Get a random seed for use in creating a randomizer. + + Get a randomizer for a particular member, returning @@ -9880,11 +10105,6 @@ Return an array of random ints with values in a specified range. - - - Get a random seed for use in creating a randomizer. - - The SpecialValue enum is used to represent TestCase arguments @@ -9894,7 +10114,7 @@ Null represents a null value, which cannot be used as an - argument to an attriute under .NET 1.x + argument to an attribute under .NET 1.x @@ -10253,6 +10473,69 @@ The second argument. The third argument. + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Returns true if the result has been set + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is explicit. + + true if explicit; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Gets a list of categories associated with this test. + + + + + Gets the property dictionary for this test + + Sets the expected result for the test @@ -10345,69 +10628,6 @@ The reason. - - - Gets the argument list to be provided to the test - - - - - Gets the expected result - - - - - Returns true if the result has been set - - - - - Gets the expected exception Type - - - - - Gets the FullName of the expected exception - - - - - Gets the name to be used for the test - - - - - Gets the description of the test - - - - - Gets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets a value indicating whether this is explicit. - - true if explicit; otherwise, false. - - - - Gets the ignore reason. - - The ignore reason. - - - - Gets a list of categories associated with this test. - - - - - Gets the property dictionary for this test - - Provide the context information of the current test @@ -10501,46 +10721,6 @@ to the TestState value. - - - Provides details about a test - - - - - Creates an instance of TestDetails - - The fixture that the test is a member of, if available. - The method that implements the test, if available. - The full name of the test. - A string representing the type of test, e.g. "Test Case". - Indicates if the test represents a suite of tests. - - - - The fixture that the test is a member of, if available. - - - - - The method that implements the test, if available. - - - - - The full name of the test. - - - - - A string representing the type of test, e.g. "Test Case". - - - - - Indicates if the test represents a suite of tests. - - The ResultState enum indicates the result of running a test @@ -10617,6 +10797,13 @@ that operate on strings. + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + Returns a constraint that succeeds if the actual @@ -10665,13 +10852,6 @@ value matches the pattern supplied as an argument. - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - TextMessageWriter writes constraint descriptions and messages @@ -10708,6 +10888,11 @@ + + + Gets or sets the maximum line length for this writer + + Method to write single line message with optional args, usually @@ -10834,37 +11019,12 @@ The actual value causing a failure - - - Gets or sets the maximum line length for this writer - - Helper class with properties and methods that supply constraints that operate on exceptions. - - - Creates a constraint specifying the exact type of exception expected - - - - - Creates a constraint specifying the exact type of exception expected - - - - - Creates a constraint specifying the type of exception expected - - - - - Creates a constraint specifying the type of exception expected - - Creates a constraint specifying an expected exception @@ -10895,5 +11055,25 @@ Creates a constraint specifying that no exception is thrown + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + diff --git a/lib/nunit.util.dll b/lib/nunit.util.dll index c7e029476962f63cb129e6eff4e203536fb93d6f..dd915a6bb3782adae0c9634a222f35f547ff2237 100644 GIT binary patch literal 122880 zcmeEvcX%At74O}d)$H!bAu1Cf*U*?ROLR`|NS0j@6!f ztatcH9Y-F%YL&aDytS)3j$75SbkBV|PI8Yry1Ta4p5n9KYX_xviXO#$14(s+x z-jP6wZcICA?!!0qw;0*g?Hzrh3qq}{wt?EX8Qqdlv`@XCTHsR)d}@JDE%2!YKDEH7 z7WmWxpIYEk3w&yUPc88Okp<>)UX4G_O$}9}uKJ}?5C21{gkUj0y(^+xFp)j$7ZEk+ zkuIo&-6?+%*IIE9RsjnS=kkKepiH>7aW&e=`=&|dKYS1`8h^E)(N7; zq^}tPjUqF|w!4Ha(qa`8;$^&8c14oRdcR`jphMFPQ+*a+*eKm>n{Ed2TBaMBobT!RG1-zcGc6&S?s}3=pE<^Gunb@oY7NBEv_=+o zSYkRYU|6)w_HAL9Y;L)>n(1quE!WUYb`}a!zdq=P97>xTp`{qs&bs5M5^OiYimhKm zybE($(X2C`tRY7dY9XOR8K2L#-~%hA4QB#q+MC^0pGPNnq~dNHKr>(v&lz#kMV?y) zBVJ|pL~~Ab>H;rlIf_o!1%)~*72l_-Q{dFDCprG~|E=rT-Oe4s$Sfi#xH&o(u39xMsD@nR`7o+XP zywN^Anab48`v9896YFWzk!6>;al!nJAV}BvrKQPATP_NfHUCbaJxE&J6a$KdsJIXE zqysWHo?pq@gohB2#dvGZtCP_g)@V@{qQ zt%qBHzY73Vu?piY4>c&D*T{5C(^yUsq;5Cq6WJBDiTDM_ZEJk|@yC`s9k|>XMn9U- zXfbVQlQ}bhEfb{!&`xI@DB!nAQN=}A1f#C@fD&zOlC-5>MnlRFjqZRAr!*5tcNWP6 zY4nrUMX9MENb9YI@}0Ij2YAb!3zykXQe-9SXGCp}FBqncel%NAcOD=+kAgHGo;7H1 zA}(4YyAaJLhgvOn0sO_6htk$s)WS$AUa;csLg1duX44Uy8voo^M43$CM>x&pGj0DyU1Upk9|%eNMCb8_uR2AJ~V$zCN%Yf&G1esS4@sE+;HH#q(3raZ#u#ff`Qb(+Qo3bizG=bSsF9 z>q7E}p)u*WE+ux_F2vHdE+yJJ#dcjt(2R^hBs3>rxe~s@WEtGFRuO2UY4(7U!7vOf zTHmvqKK>YDqN9kB7RB=Jq}iFjzSzcivEI^o<{k(%MjBRTlYz><9oh;M6SWA2@4=VN z8&s1&;;+Yl0k|ha`0*HrpfD*ENxxnda=zdvAXt}D_aMk|4~FBQ{Tf!}n6AS7P<65M z4dIsM5YYQ=%IiU!l8hCsm^P)+tSbXYE|&LJkkp`^*-=e6BB=kSv}33c7+Z$qCG(l# zZH(z23YjZ{76vWZXf2FxU+UDP83BJw{Tg;b^A^;xWJImbo{w^lj@fjfpeGt(cYR=e*R0Tur5ZUGo?cWe&qAq=>!qmDUEu8>9rdZ%a_>eyIqlSVg7M7rV ze5FFqai+EQtFWZle0cF}3mH0PxhH{P++79Nb>VdR)_rF5V(Ry|MU^`sD5nvbH|Y8* zg-`eA!)o1XaNa_#LxO^Se1h|T!}oLl*L*RXV<9zN4^eX#`Z7b^20J#=j#4t`Ukfl) zbnJXK+<^2UUZLjsGeP91=%vxx5#3OU`6c&UqW4QKuh3G3i}~qF*{4{?mM_s9OdE#W}B?2ECg_Z{%{+wlFVu2FPU!%3aDh zo!EHHL2H}0t=P;LnBGr{H@KyEs|;ry!Z&hsAyWYN43dNK_}tm%Cn~Ee9_PD;av(bf zT{CumoMAaIxn;@#r4R#%QioaC3fnTAv*7K09%~#NtySWT86F4I^Dz0#TpMwgfoJY` zqo2txAT#+j2B5R;Vur%ey7MJ|yNrG`QBiX}Y;R`IXQDbY(G3p9Ko;c2WR6B%2T&-Y z-cyz4C+ePq_~%bWgfcmx3lT&Y5y%LP_vYOMoprqbB3{s~MJ@Nsh`PZ&7p@j>`M45B z1@;D`pYg5Ic_CoEPq^MaA6WMSi7I5(kP8`dQ7ELn#YOuF89w1A3&S$2bTR2J2?b=_ zuK^Mx>QrpIBW7EMd1C47z?U;jUO(N8`wfYv{okzkjZN16veje;(1YL%+7bN(MW>pzY zmKB&nOB`w~uOxUq)QY>`f?Hw#lulJ4qrdLu2=u)eciR{zQ8#>;-cUWuivBIsyIRjs z!VJ_iVo}d9^xM3ijf^)4A#1h}kL~tMq#ZodhHW|D2E8s%M^~S))$rr8u%94fbb$3c1q5= z-vp#tey5_E1i9Zu$WX1Xli^TZn9}bH`_yb#>(&I_mQqRl8U3_kVS#3NZ%9WS;(iZ2 zFF4L0mFa547)C$!Wfee^suxys%QwcsP#P*(Cm3Ws#v);`?24gS)X0>_6MMbU-->T> zJQfxX1Cv7Ba1O>dUo&tuB$gSdNmwqUYCq^YmU+Vwx`m>H@oLn=!LQZMHJ~pTRxW#f zhcqeHhSK+eO6Hq1>#mrNLY?A{NAu2!TbQr5>lV{g^v6iNl^$A zs^tmuoKI9seaWVPRo%n1Qna%VU@mkhAl+9i25)2z+6x-DbOU19`IJxU-bihQg_jPP z7GL(ojHzHYvMsMs$P@)Gu;<|-?FhJq6zVrw&qLdff^sBrotPv`!7%z+FxWIo39+)W z5GeHd6`E!MB><&@bS@fvI~mJNN3~#dS@%o^yo4mCDfJ?4Mphu*A0n2pG-4t}tDk!} zUx%pV>r2-_i1qXqUrjCjX7F)tfm3`icgSYMn`Gkvd1k6^q!eX2EvozL-j{5~YUYS_ z??YPkg6YP$pptVdVN8>VjYlZ738a)y{l1onyekbZ;lag{J!xe0`Bk zzDVd4NkY`IRZ)K)O_Uz1k5}#fn6p=>(!B#Lv6fr96W=n^je$cI@Ee^z!?_FLnCd{S zD9HQyb?;_e3{eS~?mfexdxt?kB{a_Y89%z7v2EBdDl9Mw%?_=>}sY?PtGe^h@X_>ukool(H^^!(u@J zGA3cMAdr;-PylJ!xo>C=?gqqSmrHiK%k=}kOLiCthGk;FEF)ijjec6fJtbr-&KE$A zc9jI7aZD{T5#tzQF^(}u8^?@{Hwf`-J}KTRqnPz(qIjC#PHd3x2eDcD72MNux1vO1 zENmGA4*=F(LO^^%mH0s+KHey1yzdL6CxWojLlU&y;IP<&ZJ4c=kCpPaC(?hMRve0hHE<`FnF2tj$M$5pW4mI={ z42{l!`s=lwUN!9?yMZu@)Fxe`7th%lQ|^KiCyT7gC5>?zYsfIfpd`;tI|B>+S(Sv&Aa6oHm#a z&Z4n+9y9v+EoMUL^2{jecb+Nqv20gESfpEWa0uz9NAoC5HDP5P!)qdoKOmYe6qz!m zU@j>}M0{}9T8IaT8AM3>qEdYT4>|9Fi1KQNR69qh?ESb7@r>}G7nS?)9Nc3JMT_+)2dmG3!tyooG> zY(wVHLqu-@K+Am|u;mWHEgb>nPxB)!9s?2`uQuUb!I-;&rr4SAei#6Kh@}$Vy%m_( zV&**uCt$)mEtdBP2;3JCJ85}u1b*2o&0>AseGwtv#{mnG~lj=Ve5eA)b>K;+YjKB|>?}2XOw$XZ z3H0;eR1)$KQfhg-1`Ik&+khe!x4epG?)Ja{v4240?j%A_2;io89Qz`>3bMa~#O_Bi zla3b?@r=7W!t!15toF3VH%^3xTDgQiKyo!P5^Q;wRCsVd5qqJw^Cu+O-3wfFQH{F? zz#r4YkDZOURHpp4I&<3VXU=X;<$Hoc;=~J`miOZd)1)rUad!!Lq?1zZrCeL?D-hH7 z_28;Ij_Qj|26%29UooFnrgj&lB`z9bSac& z4_y?+>%0N-(F*9Bz+)8%dz44P!CwRZPeFM-2mc)OEJmi{Q^9`)c(ikB+Y$I%fk#6k zXK3IR`sd+!2mdj^{A0WI0AQpL=Q4C>mw`!iJFelkn69_sVA$opL#?H*xqpGzZ|kHd zn~^b`h-42tTU{0Jf(%P4*kBbBE?S2n3xKE45L z3hlbq;2a;IWMgDghIK|xp!j5sJ{jwa;SfqS8k;h#8C5dN{hR2+Hc?vB+Ih#q=>F-3 zNhqgHQA^qiNtdoXsO{{RMGpKdS{SHFnoy;&oorz{TGE4dlIhKlXKM<4q0z@{FyOEw zIk4(a#4f0VO;&AHQnMl=GARP;-Qds8Y_>dBN`x&7!m!Kgu}%UEz z_KKX>IT<`L@C)%|oRk>{S4>50_oHEPs;sxsti^myQ8OWS)qCAy$Dx++kRv>&swjFd zjH2g8JFDcr`pT+-mbBwg?f-`N8B47mWKMeDq>uTPk&@s&O_UntrHAnB!J<%Wg(ljDiG@}MU|GkR ziA*aR%{d$v%>X4wA5*4P1>#OGNNUB!`34El$9g# z`2vl}Ii78ewsp&{)5eCW!zrvOuG0groPg$ubIzGo!wwi~WBy302Bqm5B3dJCTeIk( zH1*)fH};qt&=d~iVVM3&+A6xh)8SZzac@RcF>7}{id_YgBi*bM9gvMGgMBbFnMvgv zV)6C0RzikbHi|?l9z(vpDO>2%sW&HKrc;Dh?;}h?e5q4z94WP}fdoFXe1Zz&+DyIW z%n)*^Py2x$W1F<5W5Nc|ZQ7E=6CuZ9qGjC_6+A}lR>1lDu`bpYFwHhwv}d{8G8kkY z57Z%KkOforUh7H60|(;440s!c=<(X^NF%zU^Z*8T(b11Lx)}XniAyghPiG}P04Z3D z#wt=KC(RG{2AunV7Zgv5p(BYFry9;rU{FocF=H({&;(|KWd`~r(M)n^w&7ylVHdHu zBJr?U575Q5!geugf^=sLK3JkeuTr!OQ3<^iRA^xTyq7xgdfiWP4Fyw5`9qmRBESE@;w;JjyzT;TDXTG#Ap`5a&Bf$z|U!+E}~&!s^+>k?XiRr1nuJRr9G7F z8j52}iHYRkn|%UzTWWL4tOaPm-%!-gC@kODfdt6RMej{g*W53H#j!G2WBGblj3&xR z7HlT&CTky9wKR_D*bZT`D6>6dB6k^u$JF^X^)6&BR$GLVvoDMH^+rF5U0E6%Z}eke zBg<#}>gIz}U#$6LQRfY{Q;>d%h3gkOHize^I1)RjKU@V6&I|*t;@81?LBum0j^{$E zQLdp?`-_f*T|uoCgfUdFy;X&cWXzFa4gz-sEjJ=A(B5KPv!j{}3RL3g7bbEz;tlCR z5?_yNw36KZB@r0N7u_Xw*MLqAc)~y;6~?DGcbES9oZDf1qEWW_DVW)OBvZ!VCy<3` zgt%eHui4G)8XnGEXWs7O)A6h6=<{{vcnl*i-fzGg38IF$i- zGC$ToDECDaO{|B&+*kv4;dc3FC+roc2bkem>PU#1QF zgO_hIIYtaWrw-^+*+-)B zunGY&SMWo4z4}jL8N=%KBd0p|)aze3Gayyur#eajhl6OyEZbNMIVe^|7i!J)i+a{Y zt7>s4;7e4%EH7ggEz>8YOx-O{LKR0l5cFX&=8x$dh{ZbBGk#Gl2@QH*2K_chaH`CSf*~`ZdakmeE{BjhZr6;iS?KWaSa~m`c;S2dSKP z#4Ybhit2$735jYf;t^zgp*m2*I5Qx4r-QOH+=O7TI}xDp6yGL8kDE+6yM}%Q<0ee~ zt%2P^Yd0zxj2X^nfs(OL`%7CxI=>O3y^YA3k9~pf4wtCL^eH3^<@~ z#2qN3bTs_DG9rB=S8Ce2b-y#Iy)a0@EUcKrp>T~s5$mdeQ5UTT2D~h%q4I?3Ez0Sb zZkDH0$QxxrN3Ribq3^DiFP`T+4RkJ3>aR~%OBG}4QuW6%tR|Y%R4B5hlhveGqueg? zMs`o-7Ya9l0<~)|KQH79nOt+)7hja`wAtS6;&dYoH68s1Nlcmap@|m2w_PwrZj52r zsjVnvsiC?dyLv{xITsJ+t=%fSgC1W{9x_^Cm^DmZT_D0mSH#Vaus}UE#-zMHB=KKJ zP*_|bYldoGs%2p(N~ZxsZO%g|`?HXZvXRDi?b>sZ#aO<%n%|0CP`}L}|pvIu+L_8gPemr2@PsLo!c~Jpi zXo0ZK4QTnsX~TzPRH<47ov$*{tRraa6vlX{(=423XaPfLD(eDo`Dr`^eKQ8k=$k(S zj>Q&?sb@oCnGpOqpJA6VDn+543$L7D>3ah*(4eA-^9T?>CQnwNjPDRf&=L3_#Q#YzXl)?;K5lKAI?gh7;tE2fSQ|@-rfIH^Asj z8JC|Cq1}KF(xLq1+W;S^VSeOv(@G8VW4iN^G@jZy2?mwzZk(3$hbLL&BG!hqY4xTS zPVH=V#{{<4eR?s{zFQ=X)G0LGG%?4AOdp$MplC~eX$5|18-AHceo4wNlf^F+z%Lc$ zmkHpPImR2u#A_^0g^_p#%OTHOK977~gnW1IL#oi~R)#s%iBxg`la8pjD~e}u7SqzF zgJZ?C4#VwmUGVc`HR9e7am*(!#A9wBY={wNDnF?yok+ShNcpNaIiCD z&&OC;Ik%xqd+(8zqy`oWv`Co+mz_h;P1olQj?kr^- zn1(>W2upy~e8LJeN`b8z_1aZN>8PIu*?-n+e^02rIwL9A5A)J{)ZjvW=VkfE{P0GF z`OR|?Y&yzEvh2vsRNQPGi9)Y;D8r-W!x+c&j)w+DKLKg)jeZ7m{Ebe6eZ)s=Ct5jb ztjUY>jDC`GN6%i1?f_@|3R7_94`7B%yYcou8O-=S4rdRxPFJPgs`ZI%V{BC=0EiaZK; zc1QfK5Ch%L)T+AiI)0nsUZeYl8imP#+75b`FwwF*z3X9BQ*w)YAwY0{)bRbcA<+8; z9Dz%FfxzBa3wy}2fV($f?@0z@($A&+DVE%d^L9)EhuMl9^NxX6Hf6CO*6i*FTnPt2 zY;3!hum_JbNHVR@v`A)h(Cqu9@7)8sE}@M%qp;Uvc!NVx#ckSgRC$JC-+et&g+Z0G z0>ML_sez+l4R19>#--csK;N#Ml?+s}cA1&+5c_r7hr1<>Q&lU9d4zYO>xsgjf#HH= zkzCx@V;}BF#*@lK%Ntp~u{gZGP-gC?fur#$wmI)Xqm9!83iktmYX}Z9T!=t>Oo$e( zx^GUQB{;}%Ap-5OA=;kdd<> z(vMC6!9j)#5onJO(ISJwv;+qkE<~U`Aw)ZOI4!|Jh6@pBPYlua4yPqJ$Z#RjbAd(3 zukBGjIAgU-2f@Kq6^B0TLeBDTVHu zC+X6mAn7!n$I$$_hl$@koUx98GjI|V@a_X=Gqgg-L7#gh91OJPodG`F*okkvGsxMD zyy1aoO=cbyFC7Is%mG$`QNqQH$aXPBvI`xW^+vF+bOsWHY-xf@=L zJ1YfRF9p&H75(SfjDgQ)flp;~?L{T}^z% z{)R$tu687yu<_p{X!FnZUN9JWLNd4u-v?apJWDYmh+_E;zkfFx5E$325EwBX+dX~boIbaHmB>0%g(V@ z1Y>61HSlBAO`oDzE6m)J`7xY_5yAaD{CS*f+5~Es;htTKy5gdn)K}Y^WPQPQvEX2r zu!5jRm;LY*7iLPQ6Ol~E(n%N7PTLuP(9{upLaF%fmw-p~b4C!woG$}|sXR9# z-E)N~*K3w0V5;o22J_{pLc78J^K^AWZ9889b#0^RoQH4H`88x>h3R|%-iHv|7;!Fu zUzV6;WifJB7fuI5zVW9fOGNUJP8qy#%g| z2ZS6?zVtq4RKtyGIK~UIr?Rbz@1#t&r%D~F;>T+Lj<`YyPEx#Nd(UtCFosvlpl34{ z6wnTGcoSOsmhD10YMio)$+(?Iar`ByP$%?p8`CPjANd+YEA;S0_jn|- zIF-IJz~Ky|0Ys)JWet2C9@#bTVkPZnsDG^ctCeHj!;VnuxSRw{2Qdx<>#=Q%LSxqq z&D9Z7o}6!haY2`@tn*C(=(Q@tCEaVWvgMY^h8_0>OlJs5z)sT18daz@OCO<*bh_h+ zNB9f;at{<$hxd5We41<~7W*>mou?TlO{M!Rytda}ha1qCw^~WFHiO3x=3}>hz1WLQ zovg+d8@)xK0`w}5*>9*X%2+LY%9?z6bhhlUtKUyBkqB953IO(LF3 z0#+YL&J+JA9Cs76$98Njg7iHamaE;Vw-%ok@n%T6KEZBVlJHOxv{sfV)fv*GGt1p* zt1}})#5NNlBL*4XDkKdPF%MSe1?e(9mhQxuT&|x!gSa9J8&M9;rg?j3A*zcpd;nim zfqg-3vbO+OAfCxvggBsMrWo}2Z{}43e?MLOweu6*?9#{?ihppfK^^o3CHYsEdZXb zC(^x)g_3=~sZQ~2X7rQ7y9&u2!^@Vk>$23x{t?&#P)7X_@pt1)dnJyxF1Piuk1bfn z;YB~o8aNp-r|S<66nq{~kN#kLi8`P>`{yNIh2A*05DP~E6pDfc)QZrUo-9&m%)(_t z9pwClM!*=5N#(L7zb1QDy)A@+uI0Q%h_d&qq+gR^gln;LmDPOgUl41#=%A1;`tjNd z`fDE$LmCdX?m-D)xP~Nx=U9{GIQAV)5?N9O;2ZI*J8uIQT z1|m#O?~i=`UxxO3vrbWGJCB=`lFF(ioJpx#CnS5u6Q~P|4EAawJB97#ih9$>;joz& z?_v<6w?U-zSZ0hpfhJ!&R3wf!8o^1W{}0N zy=9PvX#5~cF-{ov^K-k=e=5HIv|-?M_`Ms*y!xPy9tv?*1$%Ja=z7=#c?#p5CQ*Nj z_GHZguqajo_SF1j!jQ~kXIRz(8HlrW?s_nx(IsA7uKvXBq49oi`PgW^WpRR5>Ml|0 zTVNm!rh7Sj`A!{XG*IC-sG(Op#4C1@9e`ks!B7)b@4i8wi|t;dV_!)JP2kUQcJ${s zR5_{H?+5m=k@n!wFy>wXEryy>nr=1d^h(DNvQt(hZyjYWByW^(XDGg%YT}rL@3rl7 zNL4Q^BC$@wPNJ6sNp^lW4e7n#wIS`U|77jH9oFurVeN2o%+5@|Ay`k5@sa4VN+;!S zAoh=|hz?!glsnmKc<}Hjeauaev<^_XfA>#lZfTmP*~hi`$GqPWEH)VJ`_u_8a1 zOm3xiDB*O#3GdB?BteG1zo42H>pihQ?`W8c;WPN+ zv_>dG5c_)w@QdtsgCZMxqsEtxE1t06HB?TgEu{`WNtfHdXcE)C8l2q8AnYu5c&m{_ zjXG}`>>)MRyAR0HgUHO&%rdpjJrKmz(Z=g&qsEAq-(!rN>D0k)T-3lO^L^ko#^HIf z0K((BI-60}EVURmf?)RG&t zmCw(QP;yafI<$b}$wcf>O@cI6Ijcp~*JKY=$mGTV?W6bhIf9gS3q?rue;KnDj2&^$ zYCEXu)I%3a^IjJY#Oa6}*Lg=Z1$t{Sc*J70KbvI}UPA6+ZP@)jJ{k8~xXyKO-iTkfs!Yji@h$0L{|((J<_G51HncWFZ|M(m*6#AIt) zhF-b^X_D(fQh5wc3&xPt#v+uj#*YcPhaq9Q$j4*N+0rCb7Pkuy=gnOEWWThsQpWr` zzy0t!&uY*zvs=r3CahZj-w-4v&)@4CD}^q!K=$oX7GS&bQ+YTMFa zH1F+5K)%L%5+BTH#XPkMJyAvU1SS(~(zyCOcX;Q{MzwnCLHcEsW44vkU~O!uqpds# zG@*9`GT?xB1Bk`D0a4rp+w7gOk?{tRU28rm9ws{MlR44h*L0^y>(BM>dg!oNm){oM zZW_>p`=18S>8nFVgypQY7o#P{3dhy_=1?`c(johg$)TFAXcBu@NFVD8&+69YRZT6x zfFJfoSyw8u!0&vYAHNlTKV^3O5Bv_>oFA%~=*Mq`-_N$fkG7Z$jTdjuk8>fUS2pZ( z{=yFIWAZG5I(&2b1wK8$IgC6ez&<*fzEQb`0i&gD+}yxcQJL=^u{rOBK5u?=Y9l}T z%=3LnU$gUbxLTC^3wYNsyecWk6K4l4=i5PX=tR!zLdacT7CRh`+<>OQy^_7gTU3lEyAZ|w{SuUk>XKBaOHx$IQ}^S{V^n`_?9KcV2`xmh;Uq;Hua9myF*smILMD`7xu=EgZTfRa6U*rm zd@;ws{U6lq(*59X8>L_2lgu|`4HNu}T<3oP826{h+?e|yyqzh$I$hIc)M95_>I51E zXfE}jQB9hqYMKCYeU4+Kqrkr{Xj3=&jbvAbZEK6STE1hwYvnu6dtAQby-o6+;Pqxn z*XkX{FV~YAF^68S+smHtg3{~q+yD&dr_EB&LUtF^CP)7VFm?Zg+Y0@Rg?GUnbn$ow z=r?f7L>c|)@}k97bX5eMhmiC#Q98iIayd>CRIedO5Tl2#A!xDdp?xqK(9C4H8J$aY zF+Mbe&^%3fqSzj4>C#Nz1rr%O>I7{Xhqg=GyhDBG=c{LrI zjoa+Tf=*6A*ij*rM&K8u&F0tryYewsHN5&h3-PpwbZ}Dy%RUWZh zmRF4zmbdkISXUh-eZ+2AUNv4=-qzz`Sl-s--7%^> zVz(@>8ZRtw>+$X!RUWZhmRF4zmbdkIca18K*e%Pe#tX~adc3m6RpW)_Z9U%4N0mqHmgQCBh2?EM-Y-U#N9>m6RpW)_Z5FTBEW}N` zG(MMe+I=va;m9vzmKFeZ@v@Iba+sA3BbS4cW1$u^TH0n9DMu`0!=z-&Va2#GlJVL1 zkKZgld*}%xN!g9Ig0!z9iVWD2rW?A6*6 zBZ=AfwBz?ALRydqyNLGWFdjs+RgN8Cu9nxCUIDP~*gq0YkX!T#qS&yc@+isexz{C+aiq>$eiw;3-6T9rvry%J~Ky zO#RH#3M|MtmujfQAX7t}+iVx;<=h9c<)@)TrfLW$NZ*-7g17DjFcqCGr?t zJ$n@K%fAnW;2AJkKVzCr_q<`y`NNTM;qQ4eShzwfDo#ySRgB4Tay;}{Rnd$E z>glzkF>3o2YO2=FQtO84wh6ig%T^{9tMCv(6dMDJ#$heaJq-C0lnUBPOl7)HL020W zZLnO4#T)Arl-mO=wx}HR(E4HjYo*o?S5TTA9Lm;v_NIaYAv>N7jv)(H^U&ApkJKx$ zQQo)FC#WHjN7xB(p3JJ|VF|KXMh)jmDC8H4hoM5~w6Hdg<(>`-!&wiP=MnB9)LdqZ z5D=7s8Va)Q-O(+B-OB-z;bwrg%LFxjS8bPX8_s1u^E=4g3^CXGxu*e-cA?q1n;z)S zy~V@ONFQG*hi&7z&&$+=?oTX19?KbF>`TiTVL!)xwqFo&&V%^)Ef!B$NE5k`rNij| z4U!q>Gig?tXdM`rg-z)BJEEF(qmwEB0gyf$y%f6WTZOdPufV>r5|45144(4VgZ#8z zF(z$)9=`-y4LATK`k5K&5~ShH$a4#RyC5m_+s{ET&KC{u9EkJJUbeDTt5z1BPNSa~ zcOA%|?~dTd{d5J}h-e92!4f)-a|K9T3neY|T3tuX zAU;l=7w{>z8Qxz+jL^P{)FtF#waCjSg4>SY#&dT5ZAaXMtlowkmgs6KhGnU>^2Es~ z5o%-Ok=q@FD=E@NoH(JnMw^bF_XujEuJJ=Nn&O(|T99BDvKNUk((%oVh9DXY1$MjL z^myPfm=1lM!e&C{Jv<67;y(%;dL*?8{>2c6PX#|6<#Yz%p#8*v&aZo{Q}b^E=w}Et z8np;(q+fO|_Y6cc96URTMQSOmhp@1Q%5AeQtj(ho(4fwqiP&1|Tfr~kRjTlZ&|{Rw z4ORFo#FCCd*Wn&@_{BlnYp4^EkP}cJGu4YYPmQwApT%PZ)WblVQmp)DnW+wj^`VR3H#)7KWK`YJ zN`-R2NMjoPtkBXN*e0INtkz3Yzss_@&DlO^%UkZdXeF@O63PeNe#kS6;r7Fl_MmnF) zzobjRb{N(0uO0slu=jNQ7vN_Zp94cuN9U)YMPto#OP?h%{&bPM05XCd6#v{3e$oKc zczY--2}7y*8DOLTNiZtR(9P;yh~{5I!O)N;ACgF5^gku;AK}Um3F3THjr`UFWop*N z!~D@FuBy{?#YWBaqbgHWDiLayg{dBnmW8z*iIyqAmyGvmI7rn2TIfE0B7#0-HL^5! zZV7#q)#*3c=yNUp5}YLu=XJVIprGUCKnZU(Be5L4Iv>(%oFlNU;h)jZsX*Z~`pciN z0x41a`61scKeJ|xY`?dsw69l)FnhQU%u5#%eQ5>F-(IkC&-h}BTM{#j!)1&H{b*|( zpyFLOj3=sH$le^WU_Wvvm_clv^ow<08;Y2BAY7fB^4r@|!+e6Pgy12#x)f|z$Ou>P-j+yD*ruXx0~%LP3jmZA+ym#(5IiuM>{#K@3*H+k+1w zhou}GE~S8hs9o6o(@$k&8C51R&wvnE3|#HkzbD&2fFk#OkO|eP#>c2o9eZ7a66TZfeNsE?r<@*@`I=Ml!qrhG3B(k!=N$}b|!D7}q{<(KGno+A&;fEgge z9>yfVFG=)$;k}{XOez1*LM{1C^-M2&I~TOJHxEksXQZSHM9X2@14D?;E5uFytB$(? z%S$Ge8^o_=ay$AD@xMU%B;a|U8hLwn73FEgo`IHlh|Y&z1mt_MxM54mFg}nZyahxF z^Fcc~J~+~Vsw>CD+VQ9ik2LVb)eW6vy`@lkL+3b8!c(Q^5sAOOfxArsGbW=c+RP_o zy*)s!r?&F|9TGr&IAnmSu(zs$xI-fbDhM1{RP%7o5|71S1f+}0QF#3oPLnkccajx4 zVpLXp%^K9$rkIhAdG9mspO{Jjn*zXjiE-kcyhhl5x;%^2gjbIl^E<_eG_QNrb}?0XG$Seyu4PynfEhnBKVvadF0#S21e~ zbBuJYcOPZF3|)CytAO9|mgxyz7g^-XL`!btC6V?1dD46r_&hm`Pc!-0lYE{1_&9Ld z0u-)>iXLF@6#yH~Q;_B3N`IzYoJ}oc(slBi1nCqMz-+*F{{$_&bP-0_n;?Xp7a*kX zJU$!U=3jhnYDhO=Jl^2{hBD5wJ`d8ap$UA=oll;#RHf6-OTZ4{;_oY9i&eDkjzW8d zI`IPj`;mtS0vH2-@P|H8H2`-S{!RE7BX1cN;4!7-@3vOnUMC($pA^ z)o%~8vBVwEn0}U6ApaS2mfG6H{4YUhLYLlX{xetusutZE{4hbd=+=181%jI_6Eh~} zOHACRn9e%BF!LHxg%g(H{EF-R(!c9nT#w0<|D)b0`N%B)*OKu>vdpy&b*ei4Pul!! zJ5aTFE*HA}89J9V{S&5c#&5SDqK19-Q+r%$3Fyr+(Ro?d2S)bw$BQWce!?Hf5 zvtGXv)c3UhNq2whT%WE-?$_(8n$2xDLD#`=!A_j^vn3Ad;DKH*)b*d5copLHPwXDz ztsah!mi`9aPs13`;BP*v&mmh(v3FE#jdO%JLPtZRqeVE!t!QWUeHc_pHhiGLxn=KG za7Ld@SzM(!?U~9sd^!|T&4+5|E zoeIAGTb5cbhKb4^DR+Y3xl!&gso7-Z6^iGA$#3WyOQ!nf8}D2>v-CN4yhHIWt@BF7 zIyBe_6b|+N4e1*_=Y4|c z+9Y~&)cqHuoEBtM#(9hRkK0vt=|ec>KQp5q^Mms+(mLN>1+x=|~?9kHoST zRTrR4msloC7jm{?^pm0fl@0CBxc@~w?f2eCDRMVe;bXc0{{CRb=QMX;PICat@Kv z5y-_v)(l7Lv@b{9{U;4=I{y)Se-zl;P~V14*3u@X^IuJ}Nq;`ZXV?>pz08%+KVi)L zD*yRy^>nf@7rZb&v+~{HiDV*}Na8t1C&J)*pFZZ(`>z@jG!U+HNvA-c+eV$mFX#pN zr++L)vXaY&esy$X;$;g^K#Rf#0YhqO5i-ZS@k(F`7vym4TL>)I2H@TctA~G#!&l(% zK~IIZ;kGGp5IM=5$VG6nwY6!+VFg#QDY&C zNvZO0g5Ebu7pmFlQmNOGcT!8gqWe*%fisd*s%gOGUcO{0<%9nD7-XQMI1u_}7Ci-j z1`nK6Lfz#|B9%|gI~RfBCr=XcIF0@lhR=oKB;;{SdHUqQ7~UDz$(%GIne#@#Om-ra zY;PF|Fu0#i1*&CJ(#c!+`c;&^6Xdt${2$EZ)U@*BbNE3H-^5|tELN94r{6{4Sa5qJ ziGRM1%SY&RR0Y-zgA*Oz3WQBBV@uRM`Sba$sl?Yd_}}<>X9dwr_m3!#xSp>)vJ$jK z9XKvL3>sk27W65XSDDQxv+xtGd?`oI?6OiIW6~P?Wo@({Rt_gvm$fOXefw%z`z~ak z2HEo4$Kn_+eq#?myunhZpU=Tc(KIW5No}INWBP zaDw*p05$OxJ)L0tc`)?HbR(U?irft_oaK%MEnZ{p?bJy(@utU0OtRWpD#sx#)`F*8 z^lzv1{x*kqzMBF4A(8rrCNkdr@N0BvdK1^b2iO5l#iR$bt=7|?xYSSA$M03a>mQNzV@*UXpO9X8 zT|&Ps(YKoQcJnuYhw7W6-lgD{j_Q}IkWVuI+eLlzMP1I=B0uq-sz*;R=Q!f9)#+j@ znh#2Dq%sd7gHF??@!x`yi=}u+*O>%W(4*06dPx2@Xp=EL+>UvR@>oIG5sr(83GhJY z5%h9&9Si?}9cI~4`Dx$K4v3V}RDSnxBdP6?aDNL1(j-ogc{IAuvD)gzHf!)=(r)>$ zKmB0z*Pk>^;L5;2*UNL%%9nIIx1;GigOL+{Ps(`~U%cn^s>T$6NwOU3fI^4fNg6O&T)eN>x@T zw&ChT;fmS{LY6BgU4b(23bbgdk>6%-!p%2ccWa8x`#JI&ix?j=OCEtm3p=J`3Hb%5 z&KCSmm0sqEkF9tUc&CktpFhZmRyq*_g3AGQ}g#5AWT?gO5|7+Rv^{mP7fQ8O#QJbEw(M7FV(s(|E#S52C(c6Ry7VAX7 zCS6nfNhPhZVQHOWwgIhybWXY(__jpCHV;_P>n&I%;~w-9!US7;r^%3Y;zKco(VO+!|G152yy< zY?0URNfqr?t1FA&O99X-d&sxNJ6OJBy;c1BRyqTI?`Ak#{dysdzACi&UqR>NYrAq%vlMitieR zOI1Iso;M3Y^701uF2?F-4KSIMGbCf>YzN1}sD6w+-obRnN@i2}rQX4ar)OgF@)BO- z7Ir5BosgzMn96Xr$?z_ypwm%ds5kz5?$GawEkgTri1aIDqF(}mK1KgghSr+GIQIZ38cgQO8{6fI}H;rkpEbtji1L@A6aUKSFhg(f>YW$Xh!u4lLSh z_C?2-+kj(I!-6nP<}dwJiKA{0QJgVl%iB|S1S09hYj)!n(2E0>o zc{InI8I9Ktb@)@~$11;ekNq(Wfb^RW&+*Zgpub6}-bH$ReuS?_^_3t~E3+)Dperil z1cxX!i^}>yDbKMvMh$zQw?}#IgjABr zb;4Zk`R?{`;!kUgED@!N1e~yKsDSFyPf=053VwJ%Yse!w@fWz?HY> z6G;FcMrJCEj4AzD{4=khwdzLy@%o%ntW|D;3O*mv`{^>D&csq^vAvwk3x zJ$usdKkk2H_}1WGsT(<@$DgH=O=lJ@b)C3}H@;D*S5Fs-zo@BeqJ`t=boUl_Z6p1+ zhUr)QJp-x>em7y0U=&q}yd(V8jKN3t$p8h|_=swg(4*R6Z z;ZcWDx*N|dHmZ$NTO*b_bV_TaQN8Y*gV1_)G5qh&IH$K!nLVu$8;j%Q@LKLc{D{iK z;&$dA1m#&ta+^1i?)P%!^ViI4eYX0>1k&F_anpmgqN7`)_ znM*!zPa>ZqI_NHw)O~K=bz>}bZH$-`oBox7tk z^~J6;dn`53uzg#b`o8!dpFqq{CS8)X)sBlcEV9*C;*_O2X^q|6iCH;o!y-$ywo}TP zophHb?pR={o9pSm+Di9^7P?Q(ehZY->Pho#gt{$;&bE4a!9{rB?tqzZ6rd+8*{G&% zb9&5D$4V~GSVXI)wxN5Z*!FoyuT!r|Nw`dMFbf;n>aSC%+xrL|r{eQyy>k+D$M@0Q zB=(#=m;Q?yA8l<^U!F)ipV0OuFmHC!w$U!eotAv1#Zv!nWjvkup4P221j*o)>0G3(A~et@>ADI zI~*@1YEN-*s_U9)t1B8eEJFFLXQ}8DEB!eAI_R&dWodbA!GZ~O>Q|_7b!v}R+F=DO z1M5wv#LS}B$Ru^l)E{>=s)LY^jq3g>EI(hL`bMEqwMhB7yP<0$@P(TvG^*|Lw8lwO z-Ut1J1@vDi+%Awdq@j`NHIq#5(uphyXQ8BxQy$*CXNaIpf2#4;`90!a2PoTn>-^a&iZ+(eP1DY9-5+i8 z1fgsL)Bp?57ig{zEfna8zO!4;N7%Lk{b}mit+TPax0^tN9fZc>Ej-HWm#{XxbVO+X z+}W+a#tDuS1oE~yyLB(s!AIQDpig(sZhcx!#6H<~pzpU44|gQ7+RAv}7cLW_J6?D8SB;Fl3e+Zg?xo5C{b$bEtz#m4 zt1k)kRG#wo#YqV2xgIu~jZx#3k#&H)G|S7OYJ-H`*3Gb^)b*OONa$#Fi$J?c{+*=m z5@;nf+aG7=?h~jWVXJX|h!RwS@jUgUKu=3fuTg&zXsl44s@@amZG^pu70v&Mm0aY? zJ6I2h807Nr1!uS3tiI?&YdgvFORCABC0>C9g|ah6D4#@$oDC>1(1Lba{>!S{fC%+F zDHG>m&gG6`EL&@a`+67Tb^jCa5Kx`fR}dD&k* z1cUDw6 z7cQ@;cLe&Xr0>t_1A#t3+E=UBRSh;W8q}Wo*L!EHH&w!LqOb#Jd+U zEN!B=$~&90)mv(;X(Ha<(=aTJyzN7ayEuk>M@^8hqw`9=sQ#+j1)6}t+idkWHA$el zG@F-{;{%n)nS};5tH3ZqQB`jKAQe@8b$7x4;AFb@^!^K&Z^b@JMbu04 zVl@%<R~SWQ&jBJMXpA5jlX_z1E7J>RU2sISe5)kc*uEeZGB zx_V&VHnI9EaU-g~w*{D0)7udG7iS9GE5_XgJG^2}tL;(S^%fD@y?~hP0!sgT8~wBL z|AbXP+ueiE8&Y%N{;043?y|8Ao$4%xpWG;G2e|8NnU?lR}78F15TRpO)695ogG<%0_% zpQ&9w7!!9BtkJA)=$wct&2?~t^d{#X20jmuKf2bk_KU=7mJg2aJRY(3pFsD!^~Y0U zJ+-}mHh(c;Vs{Cy*7NU4YQC>%enbN)$tR$EtdsVMPKwpcQEi2ZC_FXeNxxUeeZU{F z@N>~Xhba?2kGQ?_Nk4fC-PgUXwSbYeEuP6|GY^}YG(cbvaapE1?~{I%~3yZX4;<+_t$WdYekmE9TxO} zXXDh{ea=1V?G!E3p8O~kQpBUmNpB#4Q_iFR!6{NrrBZN%u&LZmVE^E;P>y&3=OUKrrKl<`Kah zFR`u_OtOV>&xz7~GE28x{EG#DulO&VO#DNAe}q=;6X`O)A}ZGRJp8&2vQ|da6_a0r z`-i?i!#!AX@U<~-!e2J%US31@k__D*lkSlg-B!W;TxgyZn*9Xxfndf9%_D+2USeG< zm}Cp%o)e|}WR`BX_!kTQUh!WznfQnL=ngr5t=Mz&nD>#QU$oKvPV4&>%V%c&8G ztE~XPZmC!TS(5*ini+XQ^#HHa@^WMj{JLD-vfx*>mildEL7jzp(PFqYXhU!#e%9UK z_Jzm}puDkdS>0Y8Xx7!)@yq6~L)~BDL*Jd>0O)WZdbVjSR;G{hp+7gR0_6G7_b0Ez z?Ef?$`pM)5Kxb;G_J*fe!=}nU~<*eKzW>Vpb zgv47?cT8PM9p*zf#!kXUzzsgMXLG5pUcKl;&ZJZ88dS>^9q(UFXVf*Rl>(g|AKP{x zcGFJwp&NToF*0hvhyFRQ4+|_`7wCb=u9zWb6wa#S?}5mF`_=(^fr~3@UHqb!bL+4a zgI*c=AU4aWR0WEFa;-oQBraBcDys&4Xk7L>Kri~x&=e<M@52L*8Q+5NIsy_6gdjUBrK11`oU{b-DrZPVCP+u=jc2Du4 z9>~k9UV$D^H^#?C3TmDoc4pebE!D3H^wpM&3m4X5P*bry!>*Dr=1K(6bpqY5Xfq@{ zMA7Xq54KBFOZ#e((G z+3Hju>cek>%vP8C&|S?9n1}Ees1Q%x)bogmRR^TE1Z)NMX=6tvz|MdvU~YrU(&unK=VH+NN&Dq#(voTs7q z?YT$lc2h?Qv<@v9q5FO4$TmWsl{MIP>Icn)9`d0{`6mE1!=$wJ>uu{WgML7ub*e9p zH92Ks)t9@7@AX{=Xo3%w3xt*nq&3@3trF;L%tsm!Ht0hOx}UAvUA^r?y8zll?T1Wb znJ9D*MD|pNYe-!T>+Y#mY3Tp3_vZ0YR@eXdz0b@flLW|wMF=}?7=b`!-;@vnL|GyU zC~hz$Ll{YB!b}3B)s|R`TB%C4v@W$+wUyQ`RBgqjg;ue)T1&O9v@TFBO0{+AqI_!W z@BKdaKFcJbwV&_r^?UvP_`)kE_kHet?tafX_uTtD5vj3Mb$V!d;ZnP*_N&V=%WKsQ z61QI+gkP#weaWJseJ={ts&9A*dj++}qW0n#{ua&?21VaE;c%b2oOM*EeqmEySN0m> zMskCo_N(nBf9_MSz9^_ueRk;I`>aqe2{L1J9+N>!5bbtcv|sEC?m^&d!{{lMwm0zxU-cVPU%{!a2CgL!5&i>iwxutk_4_1Fcqn^=kIC zj;pWD;-g12B}0R{U(i;?JR8)HEMlGw@&Rv-^!~yp`ZTD&OI)YS)`S{4o4IU_vb-jB zzC|o=o%*bx9ctgO6N-~+mqq_Lb7=8;^=pfsL|lt{$D&(GPApC{L;Twxxus;6?Cu2h zzO=B@BDX(VC0z&-n*Eva5c@OhA@=7+LClja+T%PNJ5-dQIYTa24Hj{Rd?IJvZgF#oJTT<6VuRckbxNFR(S%~0DB&N`(ZZ?4 zpY{-2bd6doC2(fN)Mr$?LDA3j?v%gwz{LA83+5GHE6)*K546oik&T1C8UAblon3rg z0KHLoLjctle=dNI=G_!PH$`^@&=sLC2GEM)TRgOGP)yzCq2wts^(7BoH0ZnG+g;TA zp#iIlcY5e)pgTNtrn9>ED;}x^y3<3+$m-&|JoHJRyFIk#gw@4g_0T4uuX)G`tuDUD zLni?7P7wd??>#neb@A5?0GbE%4G;YtHM`eCdC2pd9=aAa`<91p0s6LwzJ;27$3y#o zc6+D{xqR0{GlA~&&{N3eeh<9}^ni!{h+Mwsp$~z+@1eVp%Yz>J9?%{SRid>Id1x8X z!yej%);{8)Z9tED=+%L%i+|vuzXJWxL-FwH;=LZ)0JP6T-$2SAdFWA~AA2Z-l#h96 z0MO$e8aQZm@qQ1T2K0o7ZbHhRc<64RCq2}7((2-$dT1li&pdR~jMc?YdFW1{r#-aE z*@bfk^KXCehjS3EQ9tg6$xX#RD!}^l5v@@VMed!P=f?rX0%#7&P(}R4w^8jcgT;M1uOPfUP?+ZA5nt+T3s&k<%p)# zcwSv=5!duVb(=+8)4x@l&tgVLG}rX+)KwNeThLtmqN}I%vI%+WB@e9%Afu07QrF3I zMvK0r?(k3y&+RiP+BCQmZ&^QS(Wb#MpqDJVwzLzzzBep78r}tzKZiBj8ofy3Mp~3C zjUnzvi|+5$sSc~17A+sJ3+Nt;8V7Xf!|HyEMi0mq|6cX4RQR_wdMU>J_iCa=v7%i- z%PcxlMs$HiACz_I->U|TCZfDo)E6xpe%3Caofe&bR)>B?J#W!_dY5`t9kOVE)1hBg zM=e@Ew4?YB>aP}EHuRG~gXWr=omsfG_=p;5(UQV#K=UjbJ>kaU*VH0GJJe;p<~pyb z)fSEDb*p||Z8Is=G~B8?svhxB4F1%QW5)L$+7(yWJy-&Hp)VlJjGe^rkN z+M%Mcxz1nJ+ZNqZdI;X%MN3S1FZRDxzo(`zHK?vMtKV1k7QJ?AR{xLsg+)7xUkHDo zKJd_E#s5;VTJzlQ!A}<}J;$Q5A-CeBV5gw%>iS8`qmI7Uq8kT4SM2ELExKrER)=(O z9}v;+nmF0jMRfFBmS9#+M3;C7UKBmppy;(jep{TUPZqRaahIH@-?xbS;(Wbu8FSgM zXdUM3djy$Y%GW;-WGs(-{gy$|iphtHqxyY|xQ+_oij}%VAMF(b8YZYS%GFq?7uqz>c`-j9`Zc!gdjb8d*i{{3T!2N!|MayDu0zG9>sQfQ*em!Rqd$5mw!J?f*-Us@t zLF(HD9~KwuX)9Q>PIY_eI;U9AvFJO6c{rbF6~rDqR9vDzX%P0z;aFdNlZT38{q$ag zu*Ukv`s?3$D5eJJH!b46_ypbSJX2o(0oO+d>RLhEC6~qq=}SEHOsG`12zpFC*nfdD zSl??A_sm1}Z%j&Ajl=cJ9*W^K@O2Ljj*QUndT3;9lrA{mjKhylnW0YBB^Lc<6j7-` zVyT|2Cwgdf>=a#NQ~qsGC(a1YwdlSP4@E}nl@?8(vq7X4@h(KbQ*)!Ko4?h!#d z)U_q!W21F{*;<*|dYWdv#F867180~nnvTzQ`RI0du*$r++sdcJJQVrrlvz0_rcQTL zM%eRX^e`!p``cNuv3jgUS4^*pjnlI%V#@LQB8$E=N#k^+*&>cuh5o8Rm<8v=&d_^o z9QVEx^?rk7R3_@5duUl~qJGgnS2t^AY?6LmkkQkV^!c)_Jff+mC+o*7qMn|jpRg!H;{2(FrFLjkl;MpJ=K@v57=yS@adm zr8#Kj(G zMW$aW^;ZR5DRZJy@A1&nx>EmE(AMY+!#eSP@B4!Gi_fY`KNeT`w_mg8tMsHbM5gDf zbekY!gH`FEC$UOjCUM)<+e2GpRl2x=&+SlpSVwHW9_FD>0-ffe*4RRQlSMBMRe9&+ zv}lpuD{-bpi}bHe%ILz;SH%`-r%_6XEdhYO)t@hY}_yNo(V0{Z(5X?^u5?p-M@(? zbgCQs{4lo6D}m+Jd5GoJ<&06CzD%Aoy1!1}AZSPQ=Y!uu%3kZ3=T`NP;rnBC`sqsz zn&|vIR9Y&;Ck1U)vnM|jxryOltNQJ%w__LUr!4B*r&C>`k6HA6?9MLHd1;gKUO|&BYJtUaiJl|q zh+aDUnb0cTYSFUcZ^u@9ZD6hA9%9eO^|wqevi{=wr#a|19{Oi2uHP|v7EsHq(Z-2& zq+l#$$QpfRD{FS7fcj{Se!(JYpa%V_L7KXwLBDI!SEs~Oqvq#mI0vbn5_+{Dc%CQx zGqzUmwdnkrG1a6;W|*>5U5U7L`T>htW`#pXtrp*{0lC|Qr=f9APWeI;59G{K_b_|{mne&3=Bc+6V#4Q(c6LQt&TpmsrH1sTh~MV~Fm zl-Hs!H7TWcTXdU;I&_OS4yjEANG z9rDoZl6F0IGxOZ4o|w`a*`#+0f-imIf|AYphL16>Q{6wMwxmN3{kTETO_>dJzo6}E z&+HW?AJ@OQjB(r5K=9ctW| zTlLMlwv%YP`egB3=awAlc5BXl?ADz9*sXe>JcrZO5to+Srk@gI_G7o{$F5+W`xW5FX`LEtpci=P{*v$Oi#_yc$sV2c(EgH# z^)&`X3r78-YFX%+3utI4vWt1vjb?CMN442J*szGR1Httqk4};XPo$J zZ=qW)*3g}&aREIy!HXJFSclif;mPPa~|4_GCMDOxmeXm9IF7MN?T14;i zkMz*3CKq~_f2`{*qIdZ*z0D#AKGnzdV-}qNv|oQ<5xvV#=t)HQ+km_^e#WGue6BX<)7s@`T1y~}^lk6A?T@)7-kMU5w| zE`Cif&QaKwMh9dt!^+idk1-bs0Ug!5Gl1& zZc+ZAr*+7ww&+USV2C&udI;adb2eBsYtS$!-?_@7JxCdKzGTra2M%)zock;~9dU)u zlNMcj(%?vubI78{a1Wxl6SU|1IDa>BkW!}<^l@U_S?kBtyYNRAJLd~B`*rM1 zIG!Bza~4{}lY@Rvtxfsb#Ax4s&iOWu=Lr3rghf0@=;yT9l=DvdbxA*GvqiiOgWJOv zQ7ZOx9<=C9c&Yk1do4OE!qR_YQGKKX&mFMnsr=r3`#T3MI-K7R==Xw-Xx?1G7g=tU z_UWrJ4g;M59vbTma!$91H(pAec^2{J%3x=iMZBFd#93_-@3;(gQWo)6%P{9kL7i&b ziG%wNcMjS(-fuA#}k#&&YK>J0o`@8d5$M4r#YA1LbO#Ck1Q)W%?aOX&~ww@ zFD`SgzRjfMY0K%(7X@uq4`WrG?)3VSiR0PJ7^l-Bp1q89b_m+4E+{`uk9GD~)HEfA zxTgels(qvL)HvtN+nGzJx=+w%i@sfOV&8F2aK~QmxLzDuhd!d!T<-kf%gn{t40xAY z{_T&P7Co(Rx$~UFaXk!CNBuzsn9PIMPb*cuI$pVN1t6SJsv__;tQd+7YWHO@AJQ2$kZ&vtIJh_|55ae}v* z7CGUsOP(kXz6)odhv2(#Dm*l;aItfaLFkv5TH>tq(6qv(PLoADhTk8ml|N6+Ilp80 z+P=%2&vhBm-2Xv9MXtzO^0$uE^ z`>sKAfG%+!v}hF2DreSxChoF{L-6->9u%})%^rBGjys$0H*puCU)DH>1ex(`aQ^6_ z`H@CPJ;0Rv754~how46Dhh0x$n0L)oc@onF8ia@ zPVLSXL9E%&W9`lj20>!reK2S2qfFVUp2gbS=m(;pErY@Gz`d;Y_wTNE#PdjCTj_8$R`|D3TQ%s!n?x&p^4?W-a)6T^<<@?YpTb*Wu3M!_R z>aEUp8}}0K$!&G`w%hgnyVAM}a-JB(H;hf#(9Cr5zpY987L)cHPWnhbQyPw;^{qmHq)bO93LH_FAq^1ttsi`5U(?c)q8_Z{eG?=n`_^p0y%U0=alk-)Q z^JuAq36Cmgo;5|J!EsrP{&7?Y{h(DaTrPcR`Wy!Yh&A-yUJRR&`qm_d4K@Azvh=M9 z8=60v`4>l-^6XNVI_iQUtTSWXo($H?gqhw^tiM+8o$A*!81DL%J6p)_DZCKnqAh`1 zy(_gM?WtDJjwRppo(Y>?4VL>++HUG>X1gB_Nk4>h`r#HCwP5~+L+Yqj8Rh@;@aLwn zA56~gN{J@Vxsrdd^#2<+JrEMPSO!xU<`uTXhZC2S;vg-fa-j2w8 zHq@+rlUs+ZtYDtIXK}m+RQxdgJ;QNvDQtlDBJ)+9K?&AbZQ ztDh99Za7A2?G)`}@-)(eazm@ZlG0cLriV?M6GYDVEp@JYBdedOvlemlr5&o6@G8{>EO(8CaAJ-;Sk(W4BtKTOjQx?HKkf@ zcOELLRh8j4#;*kbQ?WJ3Efvdv{{gNVREFuJDGPTD{5(8K4-{wA%JA#Ow<6rs|4yX& z{_tJupuV=`n@FQ)KO`ylqO8*4kAw22N<7?-Hz)3pnv{k2Oge<{vy+af4dKt=PW2rs z8vP4O8kUCt ziJS8W#JhDs@x5Z!dB5JRc#d*&xb~E1^)=|91$qx^@*CXy9y0MIr02>00mV0u_o$2E z1HCz1H0wizM;1HI9Y~+=jB=P}k7~sm0Tk(u#H@+Nj1}M*BN_F2E>^F{hY53&)xy~+>5`!o1#Ni8^-QgX@E1f;z zX9^PtKh%FE(odhU+3CO=x|bu&8?2?$_5-@tS=TtDaKqp_@Hq$i%lsLNobPh*cF3Up zdOG-6DH1zfAHt|r=zrlh#sQh76?)(4j4c`Sb>}eZu-mE7p9*~+^xcUaxXrk2tm9Pb zwZ#c)olcv1ktkj%2EA>H) zW~CmDQ?N?83%NTyddAyM9QA+CDGT3(xsgO!kx)|4aC(O}NLWXLm2J zj!yUlDEn%=rF>U)yXHHpq%nl~PU_8i`jmKRmwt1|WuaqgsH9L(b>2@Nk4n!$(SQ z)ukBmLzoGl9l`J=BN*Pou=qcp#0q*pbW~SN<9QiZ>pRjL2Se4BzT4=8OvOg5)Vf`k&*SmYWsd>;#%LA$&}pJtohR zGX-flnm6l9R6JAwnYl7t;4B^#51$*kXDZ&{jhs91{?NIR5}Y8M8)3?ok<(7ccU+ty zvo?ZGo^`oUh8bJpw2i+7;a<2=SK?eD;nQX@d`bUrg5T8tyJ7Zc3~gUK{Z>6HTsiY} z$T~_hO1z(h?@&e#51sO>FlF^PNGh&{iZCT%S$O4$7s92^(2`CSkGz7f(Udwjj%2v{ z^oKA;L#Mof-ngvdZ{gA~zj-qXEz+R$gpYD~{xu4#Ge1)1@V)y{PIDPoJ>Sn5_RZ`Yfh)yBJ=z|W9YzV(GVpOCfvHC@N_T?SeosR%8ecnRok-0?1R{y6i} zNLh&YhY2r5WWs~v3Kd2#rH>c z>9Hdp0=*Dl;+gJTedgnl4N}7m&U+(p^VE5I_~VGJlr-DMK7;UdykRxnc>#RRlY^1% zk)cChk90Uqn6I7Anu=S(+r!tEyaWDIlm91jM`Q#(19>cb+c3(6{3-c)l_9Q<%Fqnw zPIZm6db{)BtkS$vClwo!x83P`)~R{BB2E3r<=rf?9iWr*?ub+jI|sCQ*s{FRQ1vMn zIyf6Huvt-gP(2aPvxiows?(l91zgd2(J}mXw5Po*r%XyRlujCze zUV>IV>`X!ahaGCM!wz*8CB{+2UND}VE6Pa+K(8HiMvr(a@1QfM;BR?Hk=s8&sm0zw z*vUWYTs|YEOP$AO733cS2VX})Ulr$X2){Vug#3e%ox_Lb7l3nO{z2y-!^?!u27PAc z*`S;Bcf-db6$R(!cZBB+yCDBqB#J*YRuY;%GnHQw%2c%FZ|+?3t! zu(#QJF}26x3HKg{r{1ITZkf<4T9#Kjd}z2bau_335jr7%7wEVtr$j44kKpTsWzKGW zI>MX}6`}8)TobLxd!k>5KG(TBe`$1j-d{t@qm_{dO7U#o%jnzb&f0-{5x#FC!#~1S zewW@bWF?+@wtP*rGVes3msW)MmP19}FEO$ed3R6jROjL;*5OXnVY*W&E0OPgl!ecT z-V`l$UPEt}I;ZxzGrBMG{n)N(60`S-=((VCopbZ9AMwF z?{TSf5|sMr?BSj2aHzSsQ*8)U6ciSeIjqAdhhI`D6N&MT;_Z-w&V?tQQgG18fNse9 zWB)gt4&<=gIVv_)XXr1JO0{-a^J_xy;XRxVbrVkCHiV1Ld<$!tvU-o=DgGYStMA5w zvhcqqUsg~WUV6qA1>2F&%J9untD8gb>aQ2v5qfXj?t)!neXR_SQ}0CX2yH5O5MRNV z;and*Y-D@rZ-ws_?8a071YHrmKg6fPg-qE8v|whZx=13e$lI{>;b@&@{3L%6m#*W(95e+GJPhaxq zM@D@{%DukuaOhw8(1~hej6KF#x<~OlLVHvi^YC0*3wzX9NWy)2cb)v@!VZ*pci|p& zCPwNV^;r2j+%Ela{DH!ob;B9I0sV0NOQ7k2e<-Asegn1T8TE8sIHWC~eU6rfZkno! z?trD52m1QB-bH&t|LXfpXpiXP(!3jIk1Rs#M%^D8<OKB*oDqcq*>(L4O;7b9kky0Ht6|~vQgX**aN!S`2lF7 z^JCC;&QCy_ou@%tG3%qM&DjjP+4&9VWzGwrTb#q7S2{;PuXf%5-R8Uv+CRj44hpfJ zLqpqpm8&8(qJKHQHhLQ95VZjGBvlJKMy&#!s4fMasm2T_$6pa!HlPaMX}Nen174C` zJKzx8Sp{i8cE_9C2)k3!j-6?dh&_hDiU`a1@j?mRYw+P)S zbg$4uLe&sSFLaL3)k3!j-6?dh(7Q%(hP*0tbww88y^~0H&SegJh0dvAc(u?iLU#(? zEA)_1b+(i!bdJ!~LbnLrDRi&ULqgR#l3wT>p{s>%5xP_8UZIDCszs7s=p3P|g>DhL zQ|MlyhlHxdl3wT>p{s>%5xP_8UZIDCswI+M=p3P|g>DhLQ|MlyhlI{s%6`)dt}3-$ zos2WPv*Eq?G`^hjJ$!dT>t1@8o}_E_^?Ik?t$RBs!CqeMJnlU0JntNFK5+VnhKEiL z%?zCrstYxRT0%F5z8rcq^yAQTq31&{g^q^)6*@D#F8t~6w(#e|Uk*PQ{(1P7@IS+` z$mqzJ$kfPLkwuZl$fn4a$d1UN$loKq^5*8P%4^TNGw(ZjkLIn;-<*G2{@wWx=0BeQ zRQ_}MFXz9S|Hu6I@=;aRSZ4uHNPav%bkv8O!4inBkN%K2NQ!kvq31^6;c}6&w z%2W3Ur)UtLy*f<#>w%=@5}qUcMhX? zow^8p-3OkM5`0x}AijGy7<3r^4_D*VNcc2QR1=^(W@DzFg>OAqs#Ea|vC(QFJfAi2 zJD#mhhwd1QZ+w@-YdHbl$qKaw`lUflQfo1CP0%vy)R~y!bK!xUhi?y8t1W6id^-#9 zWwC|0$G1dXt!gp*>+!Xq74r8DzBc{kzWDZV|5rdCK8fMSC%y*y#)LOP9~eYBdHCC) zyU+L==s%|Y59m#U{ssC=#qjWfO!JqM`IIvwgxfdQOo@V;r^b!xjqt_g{XpM3p%k=p zCZGC3Atsqpt(~)`Xit`;WgFbn>ZR z20b?OZctV54bY!faNJ)Tyc=OtTT^pW=Uc`-0DgJl!=S@P>;oM%>IqO&b2D2y`#cTK zGO7O;W#-&?(l5dJ$&BBC2It0~r*n1%XGrm+7r_b6lZEoEnT;mTw`DZXm(lq{{_l~# zDaw{US@t@@rY2@~jhXN#k8?u#Ul5)={FqQIS#|x4d{C3#tcaK8?6APOrl41PT*aRkyK3>w7>%>#c6r~^#7jPGuMe-(aWSgVxMg^(Um zoN5$;b2BLJW8i-j{&g66>TXcny-~fv*$vqeQ{M%3AXkdPxeqv|?#GV<310%v1CT;7 zXurPTltLOs)%Vf3n0gS@!AZ*iaP~kl#o)z10h|%YDXJdE(=qi3r~^4w3eKaDT`~0o zP}~QD)f-hm#M3dg7u10q8wSok$hDaI5vT*HHUgX<6L z?$e$K{)I>zRZl<$#_(10lfhXBSs2AR!KvW<6x4xq8x79SAQxlmDNqMrX)8l+mw`sr z(~y(=%F^lJUk58Z3SB=IoL_)C>Q2boDE#K-;QSKQ!S{p4gYzsTY7AdangGrrNY<$O z6+SE(Q@;jv)M3cksQL{gZ4A4aN#Oh*)PPXl_A|jb2b5Pv&jM$WGY6c-pqNp* z63;rIQQX^}3;t42%qU$2POUQ!oO3~OA4XRrWdt;;mO1mmuLH$jN74(xsdpBFvm6vB z+PVgu70%hnR zpNo{eL8G{Ny$t+Sps+M_9r(qd+=tbJ9|y%+(aXUv0gd9u^$PGCKyhC}p9g+FQ0~~y z2R{MosQ#KKglnA(z-a=-{L~jBMjC535q$XF9zpQ=Mr$%gF0%OUIk9Gvl^Th zP_53?ad1-38gSB}n3K8z{5hc97dC>w0o1|CK?0nNvlg5zsH5iUCZwza<=$}}`0b#M znx~WCY;-OKXA`KSs`Yx%`ML$^7l1lyp-zL==nbG}>n!-^fZ`sSZbx`AsH2wXO`uER zXU3PxK^?rI|8dY2`f|_){YlV9oa5k@ul^M1I{j(Tq`nIDQvAID2k${&i)YiIxOJmH z3%WsH5Bf2^9rP3WM$oJE=RrTGzW{opz8Ul;eJkka^_M_*=r4nQLEi!TMSUme&H8T8 zTlCjJZ-p1%QMc)DfPP7T6ZCfdZP2@L=H=k8EZhhBUHt&)efs;L_v<~N59o(Mzo#Ds z{l5Mo=z};DbksimW6&q{fja7S{WH+N=%+ykI?sSkz-bpo!Fd+6 z%J~)OJm)u{)y_fC`Ofb^7dS71E_7Z7t#J;6-t4>rdW-W1&|C4kE6(3Q?{wY+y~{ZUdbjfr)a|RFj{2JOPlWFQb=0%YhoHZ5 z;7U`!aYCTaJ9t43eiOJa)e)xv^fjjl^mV5<=uvzl2rUYgfDXdnAaK->&;ZbrLIbr{ zCxbfb6nwkKQR6~GbQtH@rI47XMn>RH`3~nx&P6}g_!|h}EwH>qd+<~p_Hxm7+*gAH z@%}wrbPXfCR17~>l!yBjU3s_043E_Odl-NHg`r@6PZxC#>dJcR{!rZ$`cOR>{ZNg-?G05^ zm2PfMG_)ntsnr##W>GTRhTpC6wsjS1ak3$k&ZgJ4m7kYPO*})@r)yGe_|4ce)T&i= zZSl5bLuDot@2E*7+v+=76LratC1zJlQb;&ul4?q{ty*3`f0~-LINjLZoH$d>s?8)f z#@iA#Ev?OomPCp)N}j==CaZ0Zx2;WQS`f@4mu2m#R3ZbAaRcPm zC$eqeRW>zc5>3d};z{!>Cr_DPJ!RUos(I6@r&mmwHg($6i4!ZQPM%aTeQL#&GbUG8 zR!pjxuNGIHzpA#fexaIQv#5GiWqtj!nz_sCt5+>qx@>XfB30LsZA-M2*DO`_)phl& z&Z%Ch7F92(tXe6-F3-%XSyo+DzjWD3wK3k@o>;X?otH_rC93Ad+v3uws&#R+p;>TU zqD_9so6rRkYRNXFGtJ30ZlV6LWXl&M(Dr15YD_nn?rD@?wV8B7BAcygRFVyTFH6K5 z)$&wxI^MW6RlhDn*k*n$O(FTE80bZal*bpwv#e56BD*ZHp*_hz7q=|IN2SA$A8Ybg zm5nI3v2j%(+eD+vBwErN6J40|lbJ+rGER(|Y%Y(PaR6CCKc@hP*#w};BfxMoFs;bV z!sEG_c#J?BOw0TSZT&oUpdB91E!1P!9$>vZo?EELXf1geJ+e=vx$~9 z&B;X8OR+TNMq-3fhKra>rAgl5@@!SQvQ5WTwzb6@*4gsw+A&qgITB*79q);ym$Ky&0>5IdWnwOQ#8B z2|)2>2rz5iAP2w=*JKgVmTXC^NMy25Z*}dht!a6H^QC%oqM==~GU_EL>1Afdo1sJ- zRWe(Xf+|TiswIg{3)=B}L85Ij*`HmP29uMq z8?!!>Y^hEeeNmrgs1kjLUoDBYb!imT9?yVB<+LmTy~Jj($u?w?YZA~gt1AfdZuALS42W({h+L{RJ_?l)YK(18|C(%)#NhH+b_#Sle*RKw({3m{;jc zM^~;{MBVvWn-Pnhmu`tCQ_Hg~nvD(O#y}j?E{3_{rgOs!5^eSAbaQ>OHNbI$E%pIS zf@L&S)RJ^ta&3nlwWVu~rc0I6vzt z(534=z^Ixm#iqnAfw^M+w~_H zYl*d$F#ecx+6JY0?aj?@npN{%z?kI_Q)U5r@sRAz$p*2Agx8cwx3`**eLz6Gtt}$~ z*=%4^*kQ4}Hu>Gqp2_vI>=Nf-v(E&4Vq~fEi*q3$XRd zVQ?r@te_bT2}&!VUyS%>0GqT#Jp-Gtz$CylcBLxV1As2FO>-farrE4XMMOxcgFvmQI(GZFciCbV~mNb9^ zFH9@570o>5?4G(keu!k$G_<1k&@5s<4Hd+Jpa;RDg?yOjr@Sm89E=y#Q z4t5r>F&m&2m&tCN9ZWj{j5?`}i!hRj46A1t97&q==*Bwqr$i*GcOx+Vpg+|b;fh1OKa8(Z}jYykk=xeXs>iatlo zGZ|qCFOF}P-&jlO6qXM6Q`o_@wqjG1g?e!rEtq?Z;>53kr*G+6wFv91Ce@hOjPTMm zmo7`-*V?s`BB;C}kK1x^JfPW4>h`v@QS{RNl|GF7!4-8@%i5Gi1F2?I!nzMsn{gw! zZb9SJLw|Smy^&=%&^AvRvE&B!;4Ui;X9VT1ivv4vm*sA{UF<$$JOY8zn2*nNAM-hU z(ALOo>;lhr;|J>MCw7bWIf456Ot)yClM#1jEi43<$x*Jxgc4v~yLMHTQ&4gimz#}; zn;g+8hM{y?TN%JM4+^0X_81Y=5=I9KybjC4^2F)uEfLGCPul?IunloTZF0f(ta&Y_ zf3gt^n}r#-K-a3tfcxGDrnKFV%Vam?a@c>!4Z0yC1=z=eEIt&(ZkKm`hJ)?#+z$5` zltS}GDw~F28DpJDm>ujRc7u(ut(}*NZ(@@;NN`ucSZp$?L;8LbZA`^|l382L&FM`j zXcN2?byzIx6x={vIP)Pj)?qK)w$ANPsFrfs#7Q2sNn~Y8fW=nP9qO@tgv$Cr5_a`6 z%0o0GB~S-j(#w>3-pkVi%mph1s z;#T8#kvLIJ5;B|kMpq{a54q;xxHVfPl2xl)7jH~&qWTqGmc1$2khZl}v5{uwV zX0OcUShJo6?!}QUSZ@eI`4q8`F4?y0J6H>F7T!_LC3ULTm8)Ol&K-rSlnU zy$V?eD?E1T*1BX9)Fy(NrLbzKLfvKM?o7%tmr@PMR>Ulhr`qw0{hzJgz##OxS#`!{ zr)LbAp+1-dG~x{deN!(RsT?lmhM&ZW3z|XL38lox*33h}8tgJM^aeNMNYiW=U`MP? zVBsXNh+LL&-_;4(q~wKr!ImCei+a|pl9j)-yPjezGQK`Jv%a4KO> zo^D%$mF!>~Aok(k*H&340hD7KKuci47+}CZ5XDepj2b^!{3aN}Fwr z&tf&)qhOWf88Dq_rgm8gE={Sq@E<1PDV1(rwLsjnnR*Nj;Udf}39}M#1Ey4)P*{!1 zOa}YtZLCRyXUc8;qD8X6J4T~)&&y=!!<4OCMx~FL510U zHp6gS4jVYrC6Wbuaw3>hRddFL4Svw-GB;+UISb)*sNO7=ID5o()&y8A2BH#k3-JVX ziMICEz<$r2%p;4U^if| zN(8S>(1Gk3eE#lVaTsM+6X10*_yaMliY-IGpO(07lJ*I3n<`CuE1sb0f0`jMbfJ^rL7) zE>B?vz<(WJTkErjn5C&6n6eRwz9G@fkerb)z~Wdro@1&uH{fy20f&8% z>6mPJYJDobDTVDOP9?coxzag$5;k{XpgZ7P5(Z<;vJz-KGZI|VE=QcQj}QjS^}Kf; zM{F}ecFy|@R>@1}T8qM9Ob)|y1-m&xtF_@a6RJ;})?4{TO#1soYXfA382Y-URnhT_>BHS4oWI-vEuizA&I3-~tU=xq5;>=;pvp4d!lMvDSs7K? z?7OY&64cRfgh~v%hwIt&oA``v(2O`8lZgzalnsFmrSG%rp<66+`^G|~?GnmWTa!%EI00{gAbb&CWoF= z)EKr`oN2o#1QhP>$(CkBu|XhGzqv<$a!w7S75XrvtcQxV!C|z^WwT9NU5?TDE@Hf> zf0rRvfD3Z;kH^HGisuwAUXY-n$SN40DFQX;apQ{sSBo1qGs#8PHguuCtXxiwJEkrp zZg)&B=HSZFAsx}SJXo{1m*(S5fqHNRn-Yx+MX+OH+U&ZpC0AE|xoPcH3n|Uz`8CdA zcUJ{D(e4t;VR|ib^Im7`h^taqlo>@+C!^#U_p%b!i@CLAtV?SZLZHFaG_H3z$Cb0X$uYmfIW6fGx(TZVhl5yB&o5h}2`BY@ld zGBSQe{1cw@GI8AY$QaAsJNI$9$!;7r!y3OlUxaKDZv45_CiJ;`3cM(z{iwN7H#5ryb(f}Hw>~EX9=> zNegC)+r{xq(>9dEwJ24c$$)bA?kO7O-d%vwG53OaY1Q6mAkPeP zfPt0-P|dugSfUW~0qznEEGQ$qoJB9lRV7^W$hwMrUNVlWUs)WeW!c$ctYia6jpa#>>RMb>0#|M}Wu=d- zI>-h#iXKarDVC(iaCMwfAt)OL0QT{IJXO4h+|7kGG3*}MkI%Z<%*PEN46Ix-%G#4s z`V7jw?Q(g>i#9q0wW4dqv_UQf@p2JrBzBt5tRz}) zF04*%OybG}9V07v>Wf=7S%p0&^g)kNs1p{q%`33If{Wd|MrPN_W|NTB#yOM!l-~wF zL08^dDFcPczL2(^bcea%X@fhtvV5MfRq~+WaLt8RilE&5zv%p;U6eB?X4Yeco}b4@vJlMU-p6S_t{$zHa&vFlRDhFQM#Kap$IY;v zvkI3}aZ{QhtT%Zns9m%JPUdkP1!1fh8{Vv79mG+DToRw#0pA_Y^Iar;4-0(*CDx^{5E}PxT#=5vI5XS8= zmtEb`+UDMZRjtN~x7z5eFF2Dhz zB=dJy2FHafixQr(YV&%US)^9~x;%OngVFGoz@L`G@=c!{Hpb7IDLHJ@T9?H+FfZL8 z%iZNkwXjw)Z7xRud(CASaRR~3KCsR3tRR=s=w__sDBMRa&0g3q%VW_fmGd?kI=dNE z_UuqChG(mu`yHs8Ho0$NodF_FaE^snn6m2(fVTr$4-LltfKmoK3s+0k;>e`U^}ozV zZl*ArJPOB;(5PbmsI}&fngKX-^sWdQjw~T4ScB5yFg4*UURm(dc$&np65RFJbVkJc zNzM2eY^J0iM_ZYf=vYg4^%}%^Y(kiG)Q5b91PW867CdV*f>>F6o~|e>Yg8S?qGTnv zYK>6k{aWZ-5MDxD!_BL4%Xwvr@Zx;nVu0+Cpb<$DWZfu}jKcx13=|-g03hEQc8cpzAodv2A`rPE2kx-Q6EO33Pko>MBEM6-^5Xd+iaFVsuUJ z#!}`t*qd8Z@r}}mCFxC2Fq<(#;wzMUV{jwk_86O1ZMH5@M75d3+T>=)Y5B#HupN(g z$jF+I>{$bQOX)uB@7>=tpiG!oKpQ&T2Kn|}8kfAmmOFCh7{1o9YAD?h#bN_N_Me4u zlK|Vx4egSY-ro)@M$O*D`VTC?jvenb@ud`_oozU4SS$!TUcQUM6xeaN!3DS??d_)+ z$LlTp&2wV@ZcCGj#+Lvtaqzb>aWfJ|A?v}C*4UY)kgvJ)2y4b}T{|G~ynSqkq`+`= zc(JhU_-17X`dlviRi+U1ofOvE4KO%;0}$hDMLeEkU&2(yVwjHuL%4L2DOzEC+dxiVs z#p&Du8^ibG5JQ5qx#$k}l{-MM8t%ZEGjR_|#XU5)J=?*vdf5))Rx86bDa=J2&H_nd z`y#y`-3RhLZj=6u&B)Ai=W(u^2YoGMmJn}*b6(M5P13JY%r znQ+qnmRIk4&&Ic*7U3=XO1x#S3TETY`+B^AuOhSYg()@czRZ$V@J_3d`2G|_Eh-K)1K59>dGHzh5upJ~kcz1n;ddNg;7{O3 zmAD9Bvd1^9M&g@D%TznUHTbDTx(t4r@gMIMAkIxa65qW_qr_H;X+x|UupCb`+q}Kp zMg+M%JT=~wHd4O9RjoE6CmbH4j!BipZ=wY1Fx$3C&#psE6S$^UZaF5GIy}J|^SMU! zk?DuA_+4T8pkyv$nvg>Zea%*?-qoOZr_rF5j8IzG}#P=$sj6C(!`|Tttphdl#vi+p=z%m!HN8L5ru4@$i$7g)8Gi7mnL^|6rQ_4^ z8-J1_gg`a5-9m#+E&B z9-iQ;WFIX@-uR>gQmaroJ`+}sT+-mLMQju1VYxh)0%}7)EJ1n`Ha+5&s^VSi)G9sZ z#=CRGmj$!%-MOCgI#b%tnPFPQkw?u+a>pK{)w?QK(~>w^lEpLb8d0Tj>5-(Y-keqq zh@&q!8*;b>?BjO!L~$IYx1v{>Cvd50jhVwa<3F&m=e{hUB;cG-_^PYlpX^nxCRHqd zqXT7_RjdZ)Vvai7uST&(oL6R^b7h%)HzC)IS`QiRK zp#hScn5LK8g|3p}WZ?vHO(UZmsA@S$Ov8P#%cq0sDT>@hOR;9E>E@k9cT*_3#+@jH zscv_fDZ*tk66x4Pw~Kok1U0@5o!1HlH6H&fu+XQXlPB1p3h+&LjkkhD6<4ADGz2Ja zpgtk=Og&U@BRCr|aA~OH?s=(n&~)iKl;tpN*t1FLv!wbMe!IO;4pZ1SVA~{}nIc9w z8*|0*7a^8ogu0EWx5E24@dfkILn2VBdRlx9GUi5skC$-nQglrs+Y?2nqt~o}D)uKW zM_yG{A_m{yK(G0uLGjD!$2r2;MU$H*2E)OUWFn7Q)&rN%y7~HMy&Be2Yh1%yReiLD z#_a=hPeZg(y|}7a${Qaennz-*#B~ugs?hi6eAM>RH0O$EZVjMR=eRD9w$r>5 zF<$-A^7;?C4Dn|}a8xr?6e0A__!`t8XjV3OJ?U>Z0^?mg4}HWw<7|ck8{b{%xw3;B zL8{|MF-fh!AHe#iJ;T*im*rY-$i(TU>Lp2C?d_1v&NcpJ#c-Ipb?Ze3J$J)~}M=JaHW8LPsbOL37P zoT;ukr22J#N?o`dt#DHW%}#%{=hoKk9extsEsHaydoSowoWpKD?p*VG1~cX3{)qXm zA8uBRM4@(cd*^s|7q>G0xKv>)v<%p6Y;tRuYmccR#udbI!r_KUMXn#&Dvsf1+^w;% z>&78pcU)NpM^A^)j#KEK8Yg|t(WBO*zH;R!pUEgakZE$ak+U&M8jb_d4j*6;gt0!m8vV)XuGmkp-23nzy1Bz7xfrWyZzE z)y0|CbE{X`)lrVNrjer_Pul>mdZ9dO730j|_)$Nx_Oy;o?df7Oa+r3h+q=OYHK|n< z-C9QSn5~*S2fC*X&e)*Mq(XD8wrN8@WKcJ^Jl1U!>ef9kS~Z*t<6sAu<45On+Y9R^ ze`4S_{>p6rB#TWtmCxU_f_m<=a^%X*svg~Q{5Zr;!zZf!bpEO+7u$-KiNTcfF?zY%)pFQ*#=%5KuGuH4asSOTbbl#qwy6+#%Y&VWxBO_h6sT#NhwWZw1 zwQ|+?Tud!y+U3qne>~YI>ZI4K|Hx1f6rfVIky^d4Q zQ@YkOxCUKa@lp4=T>EZ0OHrol-=NM`3t0EA))DP%qwCyq-SyzEnA~2%t`0kLvuE%v z64sM##GJUir&8QH`FZo;f;&Oit3zqo)k@`4Ov9Q{8=Df0ElC;1F*Lj6xiXe$<4m_V zeG80Z?dHI?`gNcbGj4Qz15~NeuBC5EqfDX&V2%%|n~iMjSqizaK`T#<>nTUJqI<3= zzbrU8{#)3&g`M`1uezFu zb*C&cIyegtGj|I;$EpH%E>TAwFO}=jRU?+l3~UwJLthR%S*}31hwr8aCLOLilri@B zrMNXg%E|Sp3v;cpnMyrdJ9uTaZJNMK?H%(7@Ex{a% zOI~g&$*FfRC)JPjHXN@l(o!>9U27#!|8qY2$eoVynT!6UrfNjk%sGx8EljMO(p-sx zOEjo4SHH?>uQx{dwA~Qf`#j0RqMWq8M;V_4!5nl;S55v*=E($)7^%Iu&!lIu1v%2v z;t{7g%rwX4El5l2$D9D9F{e2;j?`*?T+C*c1?NT{xHGrG;_+-Kc*lQV6_1yT>5 z$*4{LZ|2rLujBTAwtL##8F9S$o?6j8ZEy~HqdUZu&{GbopIKX!5bo+%qyGJx!&<}D zrrD5ImqBx-(63b(iRJLEbnX9OZM^w2y9Un$edew-GZK~>-L=3tW~_BkYk%~ojeW^^ z7`#fQrY=VQ)D&j5m{T13f!#|r#$RMEk8qyTN`c)ADV@c7!$qSF-2WIKo?lmL2)2Y; z$oGl4mYm@m8=Y2^@r4uJP=zE@=jGEa;nNzoeuNa&=%x(8H7KvD5?E8yVES3x5D*ST}A7cU+uf?tD}E z4cJ|wmr6PJC=J=71fEO*vln!M*%{yp*+4gxdupZ!xbt8f%5>)e`_W!<>F39D7r{BF zaj}N8kJ6T7<*nzEgh+Sx44*>HdIx8b!sxc+Dc6Eh15U!9jx+zw`7$LiFZh@pC4D&< zH(b&&yO$>PEK6kBsw9^STWNq<->&p=)8%rJuE@v)xlAPWV|g4iRc!25&oV2{o!M$2 zy*lja_2^@+TVvnq;$SOLxBQEt@y|qlx%yI7b62+>KRiL@9?JN_S*p2+!SOSGq2OtT zFR3V>RCR8y!OLpgfp9L3gf-&Mfzd$hzg#(^7kso_{JuI)K2xjF4@MUF`#iRT7iu_L zdTxnosgxMkzY^RnZjw>v403(BlvnJv6#Ctd^>^X9ZK2#V-Y||3_dPn_p7jjLU1_u7 zhc=$t6LEpj_aSx7PbEIu4&itfaXGXW`+`@U%+*h0eFp7K&h+wtwMGB&NNT^5TIpZc zlEc+U{7G{5g=q`>N#t<4C!ay?KDnpUaNl#p=iU7yd*1iG5gEB^Zmn>AtK#Lb_Rhi2 zQd~M+f)n8XUHNLne6)sFk$ED=6BE~8Vfsj)T~r0ZHrPCEFf+)<%+*^H8CVSfyHL9UNGerarDm()e{;Mm(61@#zfk-dRD zy4IwJJo@?dS&N#9ZVilj*O|f8UDI?e#Y;2Q&zn+`r(M*B)VH)&%?cX_oO^vzPdmh1Kn~-(mgD;Kj2-6gZR?R!D@$DZ?@RPsYFf`z z0<#}?bEwA1vwZq2F;}a)mLH5azL!QwFzSj{D>rg$_`j)B*L;IzqE3^$)~QCM7Uu|8 z3fBl{VQ%m8&Hybm|J=__S1zw!m^t=uo-c5{YJ7!(CxYgLR+Uhn@YWl9fO<;xTZnRK z<+&q@J{Z@v&h)C8yI_<=w2I~ebAON2-hCi92fwcW_PK7eWfAh^nGoj`?XO&IsLHz5 z%D*=fTqzvGt|{G`xg}7K@^qE+hG$l}&o9LYkwd+~`gHG)U@TMToEwbkS~^o7$KN}; zr?hUlrXJMms#{+zmOPK^>7Cj&Uw1yZUK_6D9(=alo;#kMQ-}HK-$VVVzTS_RTLpWJ zdk4z(ab4y?Pj}07w|-n~NY;e^&V2i+7r*e_ z+4oH!xAQYEub!*IBejl(a62S|KuHN<9|@L`_PyB23q|rn(P%WH98knZhlca@un?Y! z=8bfQAug=6gH+D2q0y+)eLHJPt{4_Y)KCPSJQa%e>ElH6L&N&kMEll6Mk=uXpZ2ak zMyl(&zxU?jy;*i2JJ-g+)(m=HjA5Jo#7p_G7qjI<5HmHH4@1JrjA4KgyDYG?#%pDj z_huo53P*BFQc#TIIB^@hMlz~tMP<@j#VT0Z$VlC&G*AV~Dx#@BP=jQwkoNaGcV-86 zp`{;xRMp#^x!?EPbIv{I+&eSxp6hrfvdQ8!fN=>gRb|^LS1n7qjurDP*KusaN)ZBb zW-5htmSaR%;93#ebby|djsPE*NTrB`>DJngT3H$h!#ggpc3s!;qH3j^0u;j_b;#h7 zbkz-D0OiI>X|cn$BPwgDTof2)F&b4O)xA~T(4i%wPplY zxKF_i?o*6dm5COlupL66idjs8m3E_X1s~7?}BDHd#C%;^V5E=1jj#ycvlZnBpM- zO8Vzq@Yf&43u)#1QZ=0LfW^ly-WVRqVc}w_6=AjUpJcQ_l_1Q*Y-m)R=q3G;33gny zi^Sz9RhA2pwgmJ2oY1WD_d}>%w1QCj`;~tkNQ&fL|B{W88!RPU`BVN)l|gN?coe`~ z=!qpd7l*$1!&;wGwh?uyP7m1=R1gC-Ktl#{-K4*l}465;>qG;+<6YVOXo5sId3A4m`f#S!(u6Bp| zjG9QCx}SCd5TWCO(JW0CG2hU@Wbq^>*0Lyxc`Ggu@(%QkY6}8Hr@#u#Uyue%0o;OQ z9RdWklD5Z<8G=n1p#vt4>FCPOziN zpcTC9R5_R&D58OU8hq7)63oKrOarB0F5YRGyJRqnGZ>`F&NO5Y3`{d6L$i;_N-9O1 zRM6o%RL3E;#)TF*ln|I9NZT4rEAUx~QY%#r+JnVVM-^nW!K#soT1JMd;xOhb0!x)n zRU=lxF;zUTiWe!OLA#?el#qai6$%lov;fj{Y6vn50*-=pN1irC zi$;wqUJ~sLmT4xHq8vpzz;r;4f;@4|vJ+mphwX_f*hPr08v$?nRM71Jn|>7xs31_m zKG;GoT#!{vk>y%4A+RA}U7sFBqGa)^)R0~bR>Ms3W0{MaGH~(QeMSt>^&qmESVAa**H z5qpKEom$ifA)2D8{uP=*v|g@PFz5#)vtDYKBQep2?Ffz_1?pzeC>d(-K@uI*gX>tU zX)o}Siib<{wp`%BED;pOndI6Dt;RwK?HBOH@{cu})CV;ha`6&}ADl*ETgQLe!*!qz z>pp^N2wOF_5mt(}1S`nLI=V(I1{)z~oYBG7Di7K)I14FR+k@jOIDr9R$g$s`_@2bX ziT(Xd`FzP@^_i9mtOKU%Kx0>Bn9N`d%t7WpJ5j|6hRB&UGG8jA4R7!P3@=*^s00elj5{Sy5Gio6kxkR~1TH)&?obabfA;%xcyR=C$R08LJbC(}?WSh26Ft z!&cf&)dJbzjb!j9)rOiV=)NIrd(-)gmo}_@u!&USA z*NjIDBkCK*A#C~M76Rm-S=G^ML=D5lf9oed*m?Z$Q(tsX`IC*8KHQl5$(4s5n*QqR zZGZUW)jh9$r>?=h|HjDo2i6{F+0gwB75~v!SDiliTCHOr`ROO0X3zfqsmU+AIQ>HG zAO3lJ (w?yWulqDY?@qkeiy)U`2jkiq_F97@h$#EQ#yXA+BtS+W-`3wWnc z5=^t=HH_O?{T@@YEj^9;jVwCMB8RC949*Z4Sac*`W$+OJ{ykE`3TCgM+dAgD8JuM0 zuTa#FcZT%`7<|UMQ>Y7~%>EjcU3lm5Ud|r-SQ>y#ZpQU{R5A00=wM2uduqj3qiu;gg^jL7Q59%tPy1w>A}pCU#@qP3S2W z0WmQCD{9<7XtUAVgddE9376UO<7>h$J(jGb4iWLFpJwj$(AZYe~R#!Wt)B zZ6gx$!9%vi4s0q`N-!Ru7-jc@NzlV!^~LxFfxlP7-%DId1|il|#CVM22VyD5;sjTpGn5eJhH zfgiBZ>{bv7H8BWR7Y+U+Vu`&FKbT@i6fENs1}TT4X<%s~YZCio6VGW5AdbThI-pr; zw-YSa6Ok5Z{uTDoVbEO?)X(`boC4&3P6^|PKSQYi6gRfgX&ph)$V6F^g! zWCTrA`3Eo-+C(v;tSJ5gR>@xGbBZoT&`AAS1YL4wRUX`Lljua(;Lk%H7^a*FZq)$hY-YCh#QtU|jf`n%q$65JUCAh35La(!wlK06BKdN;EHP)Q@CkZZ9PD* zVz`ib)PJb>AMG{Kj_WqQT{H1`B>i$V_3Yk?FQQB%CRxMq|H?G{lcU$ddNUT*d+;C zNwD)LAAb5{7QcdbSK0e{*>O4iA8QZi`U;W;uNzKH!IbA4ytVoUsrH#oE&OlrO4l~G z@5uE5o2~{=JWXzb%Q(5~tNr=ev$L}{&HC-uxsSEwTIS51I({(iV7NRc+~;u`1!u%7 zIu`NuZvWr@DRRbnyeIR!bbX4BPXhC|aXuA>UwZLpo^YRd689Q-a2d<{zS`?rn_B8T zxil26>DueotX|SMr_OtFeofUAxcO{e#WCxcE&#HlcOIIw*KI2lcFt>V-m_;<)1JpD zRn4t)=gw_jw`zIwsNeUxGC*7zwzIF`!7K8%p3Uvk3vgpNy&09I@o=9TJmME}UN`Ua zXs>H#$AqAQDztpaK~hY#TBjy-#iajP~1D;cJzS%eLKdC(%_Z+Lf;e0 z3raqt#{&`1tDEl;h;BR%$SQbV-I=>bAav7;#$$kp5SJuU*i{mv{1%VwhA=l**#5QB z9Cp^t7wI0AMsG>}MczT>LDkpn^hO2awyDsvn%`2E)G@j-DzJARaa4ZCVum~1b9YCK z9{vA!@VR}Q{}`PGSSB|06>=~ZOW=$?H+>w(dOe7j$m0KmM}pHG1{=kWGvsZ~_wuTS zMs3C#aj99B*DkkD@6Yv4pa1C87Z*K_pyTn|jmdw-Oc9T-SLCE(|HfG(IJcMk@@CXS z5Gz7df4e2q#&cZf1v{`piva5eTC2zC&|Ug&!eYF6-n<>~y*s1684GG4LTvZNxyg1ewnYSIkv?3=bXVvXH229aA<3DL>Kt*Uc}d6A;ZswZoT=V9s0c0Kod z#hYK=c;lHB(S`Y^R?q*V`$t~ikv>23o8Nl(Z2r5y>HF{(4}LQJlR3Xyvu@u%Z68?h zPWRi(T9d;aQ{OuFrJ*i=>g&ep!k=$>_iK9>yp@0X7u{E;yuRUQ>e`>JI`=!|Ick8Un?#aLVt(M5-#Pi1YPOrV3+1BtkSGb=m(+cdyPHW-iNNAa&4U&e6|JUAczg&YVu5ON^o zK*)iR10e@O4ul*CIS_K-{}2aEgFj7A#uwJNBgHSk4ITs>SI%}z@m}|H(>NGqPX8T@ zwjr?=$E)b}Y%w0wUWEtZpT?o2=Meuc9_oKu8lH-N`Wt@fiXX#}uf$JkFa|;DZ`Vr& zh!){(0xBN}FFz*ChxNDMF>wApBE9%+T zI}h&`{O(X`yB2LLu8dKQWARPm0Js$~@tJQ-M0;|eAZ>Znq6=7*j{T#YkEZh|LK9Nt zL>E#eC%EW;*!)ZM=fSP5(vy_Ykt{h=I?5!}-d^U3bB20gtdHr>#AjWmTEQPWJ<{np zNa=^}cVko@0M$OvdANb@(rUoV@#EbMb_-y8##c&|@lfHjfZ>5wIyK@kWjgKP=sf7n z+;d_O8bg@E)f}e8c>NTk7ZGY%JRw_kHi}PsVp@Z`2DwZ5MVQ;jgC_) zl6Whwl=Jaz$4Yxe)(yDdqh54?YI3UL=I8Exw0;Pa!XV^8$bpapAqPSZgd7Mt5ON^o zK*#~Z_-oVPGvweQ)Ir%s(Zb!xdUJogsk8e>xUd+s@7?#Gk=*2wRkf3_pJv+uK==DzH=7Tw==(zh0! zdD+HV|CTVgG+cjW|AzIOHwWYW7mf9YTQ~P_+}wZEDQEOw8C*Oz($SII*P=f4Xk$)l zbIsTPe9M_pX-^twQNAr>%#&@#^lR)Le~8{4M6A*HE~T3gq+kB6K|139@KFc#TJvfN zAl!J$o5JGvB;Y+oLXP=Mj3iD*IgTkLf_weiZwzV>|H~kJTpTiHWPI$JafI)F%+`x_ z6*?P0$a3LGSPM5GN@>%&nP&i-__qcO841TW1ppLUL9^n*Gw}~_M<#;Lzdp}_=Q;2^ z2cGA^^Bj1d1J85dc@8|!f#*5!JO`fV!2d@a*v@%1{&8;Vn09mAGnh-awVABM8ngUq zV`gI_duqQi+il#Q9;4ZJzhL|KuDEaDq%URWzV(XxPTlpAe?RS#?+xEM^!LaAdt%t=p%2>JOt37}N1gvg+WfEw#e5IC5f zj3IQ0g10Qm1!X39L4^-9SX$mDb9dw+-OMUv%|m_8108TpfCy&-&s5NhJca6lOfUy8 z<0!o?=LK`|j(T=vhf|gOR5cUKLj*!Uo|>E43Vdy)RFS+uRHm2;<|EZSVaoZcG3i0m z2A(*k(^L;JKx7Qdy%5iKmRnl@VAd-xy`wrO+bBKnrGte43HpdMD{!wv`N=~-62o%;?Z(IFRs%nZU%4HkKam+Ha;zEN);rm<6 z=y&uzlA*Nn4Ub5MQs%9Y5_Dtm(j0$Qo zqmt@~EYv9o_BEV8Mx#q4m=Xneu#36>(sAdJf7LIk!1 z5I_P8X5lq5@1NOAP-9j(7SV`+^RECjbcvQdc8DJW~h+K`Xh?1+EymQ(IJ2t z@Rc2^@8WaQ>niI4l<$>N+1fHNIdIX^t4(KibDuDiXQ_Y5lAxX+mMjF3S^;Jpg=MOZ%+`aj00jn(@ldI(V8Q^v_zb86s+~Kzo75<}N%%z}bBG`eL|h$n1|nef>=|a!xIq`Bu5-;fc!KrC7H!s1 zEjQ~}H#ic2>v9PNJGEB|HZHfz3>*~cSkEi~FZ04X)d_C}rInkYcG^n0Vh%l;gJtjn z{Op8O97Q5A1VW2o+#}NhG<=IpzU(64G zN7aqAO2J75a9w*HmT6xFDZLF+G9aLmy>SerHAtBtC7En+ED7_E!*9tB$X@MuglZ=+ zs@<7r2OPTt3*82BY7AqgLUjc?SKP`aFNMC@k9@(2_=z%g6g?-^-kAzcLZm?k=^;e- zFuF%UyGKW{1A-uhWQrZJERcy_sohi|2hAm~+KZBVitSO^FCYPoJrvSmG^GXk24M|ELS-w4h?WI8w#zrk7f8A$Yz$Ny)2WVso+AnGHI*u|ZsFIjrNT1q#B z2DaDPDAJ@wED9N_hP23ps0KtdRD-p3I?bYGQUBlDGG6q*UB=M(1YzieLG-dwfLhws6|!9(wHJ+dnmz~pb&Zi zRHGI8y(&RO*$JQ+JQZg#=GA8EGeajT&nb07AJ+ESE(~J`i|r zWND%gWDs{bia|7tD9`b)K;YRFQXU&*Uf`fjgUO-bSU3#_S{;+NYPmT-Vt>H-S$c2) z)mjGZX2v)2cu`a*8Gr5V3xRMkOE_D3Oc!}tOOd3p4X+J>?r`#RdY@oT_ zl#!-9bt^ZKp*gRd+UfbDLJ8~TnIpkjz!l9TEQwUOp`pH0L4a~@LgTm9i5erkM1Xm1 zb%-D453BA+2{z~JkW-D1e7cODzXh3hrh}J~Xr;}wv9*v%&IECIwOS&u!vgLI#t|EA z)w}}NNVtQlllpptYm#B-S?@?xv34yXwr%7{59ZUwKXH=brK3*Nl^R#D#-?GnYF@$;L^>Zn4vg* zClaLpHxfj@q7nv%0eG||=f7GIYfXQjs3}ZY)-=%?W-86t;%^095FXSA^fG${T``Phv z4baaNAb35>xOt3EoM*nZdJnVPtbetBMP4JG(p;%8kg6_K_zb+&Z*I z$|={OG*h6F`sonR1gn`eq2)-Enhy&wIrmQj{-KOR8{Vt7Pu>J{bwXKStC9rI<-jvv z@c6Lty__=vt(ppNLaqFpkq=nu0fS@d=*mqCp=#)IDtkMNsoEQmOdYG`4Wu2x5Zr=j z3VZ|42x5Tb@w9lSsOM7VQz#e4FX;DANR<1=sNA917QQOG&KmRzt@S@h{lD2PbPu(jW!qtD_e9?W`9IQ($yxX|@4vwVVxk`D)hjPXvc#+|qIp zH1G^Y<<{N|EV*h2#z{7O@D|od-^1IZQaE-Ak#|Kgs1k_$hDA&{e-L>4wM||KM8I(} z9!g&U`h@vcfn!KGB~DlZ`$EKX$ppo7Nk?U!$Z56`+y+71l>@1Yh~4t09EJ+auJDr@caJr%Yo1z<>h=;s0urRv0nL zrA8s@a}sfef4Qfj>_x=CX&uQ!=1|NBuQOHSo2BN01ycPbyZ!?l^lt~1+sV&3XQvfJ1v&8|*YnK|E3T z!S1Ibk=~qVmYtw>Gt0jK??zG5NCz3Gb~gfbMh~8x2v~hf{igIFF`$ zwFep8n>SX@@!y9E?FcRbgfZ1)K`KUAJB$gAysa~%HIYRfid+LyC}t&aI%6=%Nl+2d zGiF!-Tw+KYJs)-?#tLX`_D!f3vmfd2!MuukrZ-YPu+8(;$taTbfJRzr-13~@{eXj- zy0ve3|Jh!Jk50$yy*0pWigi;hn(ED0k1*9da`b8rBm#D179Y#@FFTwWc|*urY0Zjx zN=j!X98(~bAQ1n%{s&O+1k0Tz{z8BTr^>U~imU{?gTemdA$=(Mxk)RGe_ z>z0(#XBN{ts%>6J#>pyX|06&jd=x(>D=q^z*3c|0Wl-3)Ik}F*65G)pQw5r$VU&P)oVfT=&$n zClvNS)S57P;XN?=N@*lfG(j0smQ3D823E2t^&-21xHnM3N7L*0l^Y2HF;4{odF65viu+mag1;y%r0xND_ z@L2$qGH}0V29I(4&mqK-s}36)Lnc}ajW@wS@OdT;(r3w_8+@T9{6I_iK?!rr%%l9} zY-|4^#6|jdy6=*@3hiT75Y`RnxMoZF#+Bem@I~aihi^G3l*&0rL*h8YqXi`^cGX38 z4VQTW^pl*aL4aVtchw$7C|}Lg-UQcUWCLs2P-NmG!{8oGETJ!T4+IK>th+v1%wwUw z=Nt`FMGED!y3!W7qEX-?DR7_Z3BQ&EjK%(S@&+fH=;d31Xn*0$m&g}qq92S+1!t4c zR7lL_8_`E>_4!6iA|7~VVJE~R$S9+b(_6?;z%8A#fLiF>&)u5BYtOSThO+^8E4b!# zWQX$E;J2V9E#?hU3XYrd>xhX~|JfEV1d;<<>2sAnchB_E_=xFafb@y60ju&ws9>FS zb^J*b$+5|}&~Z?u@-Jb=fu}I=YN%y>F<&S6>-t|tMC5YQm^F++@1etoF%3T(L)Mq3 zN$@JY5yd85ZYk?dgFK-O{>JV!4S-H!mh@-6H!=ImSmJiZYbRkj>Yb8K!eB+cWO3M% z!TM6p_!Jpb#KG%;4AUy8P?lp|H8$-A7K9AU2R)q3S5}{nGqEpnK{co|mH}si{0m+s zOs2D&k=EG_my1(pSe#v&07Ef1-bkPfAi`{v za>1mju1_6oR&Eqs1|@N`S^8;x=S*3+ zkqYhrHj&Rre;*|LxR)&EWC)4+e>6#CzG#v-g_+q>hRbzuln+R3luD(#3)t(JZD590 zOH&zC@!r^%=4e|HKngp%IZs8912btu|FLUA6NDGdpd*a-6?6bA9}_TpQbTa{@To$1 zGw6tn6u=Q5#x`pk`JX^#VHm;31jU4EXEm#0r%m=!z#c5Lx^*Je^r61iB4`vbo%0-& zSAmeup(~PTZOUWh2w}K?NML`8M8)bjwGEUk+gI zdx;zkx*YnrIVVAX^go08fsGj+&2cR{&nC zPbqLxr1&Kmvh^JWjFm6O4p$tN8}cr6Q_yJ8K)EVBtRhZpnxbtbTFRoROA7Vn3t}2v z?E@1mX2^4uMQHl{*u+F0!ie4Ce-9;SU$EVzqK%AJZYc*fNYsfTsgu?l^`d@*kr2_6 zl1{DsaO+HPAW1p@A&QU}Nm5kCp_(6N+RXWxu&4ZoX@0i7;=m?f`0BfPH3auI|9#j1uY_QHedTXd>%_ z>og~x)7bC&W5gdJG`T_DLFuHalv?#>*3S+f;END;1JdD-B5%{dEC|0?d{8PHlSd4? z(pN!#I>;hW0J_%`CuY_;>>!B z&k-`%L2KsStWxj!>}wm$!0U7yor6*MgP+xR`V-#k8ncEx(Ed;ZPja~)?DGWa|AhAe zFZc-_6*!lIC-4$3Vu!gIZ_=5{rOsj}tdTjlu4*c>y3-`Z^OVB0Fpy?{p$sLc%M z(K{uQ$V#({vkrL!Rl%(AcH%`p%?2zeeN~vilBPzjEA(ND?zFDzw4Lk6b9T~~2M`AH3N;V&r{bXErUi)Dt_zzUL zm=_JFebQ7NSXaTXfSCD45BodT`pc?%tTkn(E*mh<&Mg&8_#iN1U*A6i+J6c^c>foD zJdKBTgHneH|4g_Jfzy5>tFPKwAU7S(~*Nv%T42vBrkJi{TCi zi!pD2;3VS@Ks;<1SeDK4=Og|w#P=f}eMs=!fVg+y4@Jm7>V;JZuVu0wDE+U4PdY~G zsQg=2?_co)pI7j2%jyOrh-TZ zgp2Y#hxbau<lp-hb9bK4?%^I=E(>Uaftm`xdJ`>L`+A-Z{(c^<_a4=jZxCt2GDO26;yQ~liNVz zOpSvgqZjB#csm^LF`pOwfp`)c0)tp;FxuaKH9FY~ApwuziME!1?008C2Huaqza`?2 z;T-E@s14-h+k6a;h<&;p23KluFmlPnbB{dmKo4NA3TFIj@?pE$b_T=`a2?W*jME|9 zn45M_!o%lowTA=vpqgV%AM-vwYEA*sX9;-)P z>C6tS_XdAqr7}3@lSy-d2UUIwQ0OKCHJ4D_W+my9n1PucYNw89Upp{ zUeMj(4|<1VUStXz#C3!BQ_Rw9^!>K*#h%%+oe~qim2VV>vdCTdV}{vCgF1i2d^MWO zf1g!*5tcfC`C;>m4ulX0$%^I^UK z{ZN7rGE){WVmm4kHK7BIHbU zY4n!1i~lgThYMc1a?X;x1wmjPWDe>pI;ujL8#Gi|QPnoCtXS;XsB;?B$g)*rn$pZ< z)>#ceA>w6hBp<6_Id7&-%07H=Si7`)wp{UjiB5O?pF-GN`SoFpdeNG*ySDrg4}ea^P~7hs~99 z{U`An)!*SdxH(bEpaTN^eiAe9oOpUMnq(bLAKrSo-k?$ntQ+RgpNlY_y z(w*07<@(MSE&_u-K#>BxCzW27^&0C`iSqDXAxyAkV?fBaMc(#aNej+&KXb z)xsHx*IxSyukqQklV>}nauTk^+;(=mcaez22Sjx%u>G6~Tf z)4*NcsRn+IB6>GRO@l6?b?nOAGU_XooZEUJ?7KSADN@zy;Avj0@0=vbsoz5Z6Q{0# z3Wp+x>y}yjmv1#D=yfqeA(S)G1dH7(Q%7OwEP{X-K`-Vt3fqn7pv0dZrO=1(0>YG^ zn#D;pysk<*Ohxcp_urmpu6j(GQTUI#qw?fS02RkF;9^{3xv`#S5+y#Uu#h8AX@3oW z_Q8+c`YW^rYY~BELZw6O8;A03ar?bOUQ{;}aiA^YG%|BvW=6}fQo$U8#v2?kg@osr z38(|`a%|^Lsjh=eJM1IO0|!j+;ml#o*}LX(c)W}RcHw6`n{-gu24PFeKOn;^*Ay^1 zC)O0|r~p<9;imNJu=mgo^82g@Md;P$vi1W=0|^5V1i=A2Reh(9@Na?`M6TFRDA&qY ziFc#f3aZ{k1X3JTD^UVA(mOT}Y2>a9Z+L+-0UJ>k9{5zfeKTqY!vH;4d!Odt06ef+ zDC5jeU%cRf0btEylPq-M zsE#beX{jT)-b5oD`bM)TY<6geTl7&b%l~o>g4XKwfF6g`bIf95cNh zO|r&xD{C(GXC!NkPqqW*RBoM-P#Js-xfRHOmHkNiA~`-)dBl!kaXX1IeS-0Bqjk0a zwBk5Taj^4P97?y55xq`lDc?9E!)b2Z{JRA~4pU z0R_;Qi?=L#<~=#qo!0YGd%fuC_iE{X04xu0RhH$Z)&RW|B)0g(=7#wpvC7&oiX0<$Rp0R_g))YVV}oFaVe{ z1;+JZDqs^4$l$X8t+JYaJCqsEWe=( zEDz>`k6L}95472K(E96M|A;@F@y6@2tSZ_G`hAT_Z51|Z{cUsU%9UlwXW3>WpbBk< z9B4CUuLQQuq->1FkqlVe(D*};0R?@CT-9@h>Uu+JD;_w67RWfSrrJXLzLMLB`fT75 z*l?QQr0OSt3a7melOmE6)hn*F(FBv5^o@-tyu^o*2MWRl8x`86AH~$6mVhsL97qyV zHi7ckq<5LxRLhA*tl7stDQk-AG3j$Ic0T1?NGPIA~gS`ZfKi$>|vs|}& z)|LRI1`CW9B)ZrX`dkgR8z&&NAYpL9u;S^pzJt~NTHH6ZowTqQ`2)ypw@>rfgoabW zeu!r0rd-cO?x(7TdFs@~zp4ISlp7Im%0=7$akDyg$+}*s&-C1isLXt$j=JLUnZ`;6z=acO~|l zoGZ8{7%AK*?>D22^BC{;jRb?pA05X*H=pGQtSb()LiJc1w2h%oF=L&R-Dyl*wQ&?2 zd&Q@^Y+}O?#(mbZS6ub?Dzorx^$n7i%R$TeGtmOZbVY>+;6B_Am~1FK)S96T`wkGshqd<<;a6whEO}; zP`7sv!^193Tv=kuMSR4*W%2a@Dx%#}r(^Z7sEl%2b}L)AV#bA^MCP#;5H!=j2n-GH zVuR)j%5l-813>vv)4Se z<>Z5V?5+UpON7_{DioLV55ccEP5d>GODs!8yXj^}+aY$K3fxUM3drPs1lhe{HzU{; zZLUFO;01&xmt_`pa;Z!&G6Toza)=8$pp)buCX_H)IIo0N!Uv23J}^G;0X57Ap!tCE z;RAYu52%Thvya7N>gcH$omADBL6&i$O#|%zgEG({$3mh+1|4%P%0hX?|2JhBH?c0E z#kQvd*0ENua86;hVzwP+D6MwhhuN{9F@wgx(f2-bs7vyKlA-^=>k_k30 zLVT>cK>^s%h?4eh0;q06cD6rKMGTr#Pev-`0jVMu&8f?gO2I%XAJu+@DK7}~QSCyQ zVuUas=(28b1Zt;d+X)Dv#=4^vr%UYpGjq@bcmPn^TW_5KOMfvn*Is<58;}syya7q& z{;0Oam$c1Aom*`pHbiXG%tCrm+l?Hd$EAwCy2yBYJ7(DJG9M5tbS?G+YBcsM(+*G_PJ2D3}JiVf?e0*l+PthTTAY0MXz zbEg}*hoBeNKzv}H7Sar0kjdeA`;mBbM27~58*2@OD`X|fe*xZYv7?ux%NqX*=#uc? zSx|5_UZcb*3QqD?ypC0Gr>Jx^t(4>BI}R^l@f)XZf}{Bcg)FY^if*SM2`6Its3POJ zn5(6_Q%s?Dm13ig#dOv`ra|toTTFLg9K@|vV4d(SxoaAP%|k0Ne)L5+ z>4=s14&7vpeKm~?ozW0c%}e72=vrV{wsste=SuzYcp2&thi^8R4L2`XETyeBO82Wl zccMwNaie5CX$Aj;1kqqWTLy$jWn>fLQp~E)KoPIZH6boGFc-7Y(w1E-&9_}~Ra+06 z$T7b&AH75G%Q}0P-#mg-tYUZj*-njvR2`Cw@d|xDhwOtl&k&0#7lvwFs#3oY5866< z2aL>T!plLXGr<%w^qdL8`X{26wu{JI=20NOSo;{$d4&O=jeXbScQ|HIl{ ziz1jUcp>1o-bux3cLEH+^f(!jG%N)T(Bsr+Ei^FbWBUh=ge8#xUh6W;boD77_>BVi?6}oI#*1`>)7~@1HNbZx z?h=+$!^u!gkirk3d0df#;4D(A+libga37Mxhw-BkH5_!x<#)kyX%j0mcoD+k<4j+N zH$6Fu)#+g@%ggnE;W2rnorAQFOn3?2Wt$?_#Ib1I6P$~9V`}H&QEJC6nCaU2eD$yf z3`I?urB4P9o1&iiEBA`iw8S8UH0r=OkTLg)y-gOrM9*ECwsv z#F&25bAVaYkMd|YL#crX(gAUSV}=BYq{J&Ox=zHK*77~3{k_O{_AWGH(vl}Nu^!O5 z&nn>ENW7Df-iEoh(0>jaiFX|vhU~oI( zCi&BZ19Jn=ftH$v10E5rhtk2|cESm8j02Mxwij@q#irpHYR19fcEU9S=W1!xw2@%N z1ajmU*7Hii4~|X4zo;2MgWCx=$)A`;;((60JSDFiIr$jPd9hDjOX=gNg3c z8J44GngAiljW-fv8}%U4=1dS}Of&nj)o+ZK8$6eLS0ke6IgW>5Awps`eeY zD#Vk-z69~%di+dqsZ_o?;%$YDTc-wwjI4JL!};oLj1Zp%y)qi)r@R4^%Ci%rms$VX z3Nves@jL{ha%y`l=hZFcFq|moLg(DqP|vNqFK4m0 zb$xR=;|y~%gs{!>-=*K(T(x^Vqu$nh3m%5^)kPS#(f(K^U@Pc0?{P_*xh>|M6tzW4 z&O2Q_Lz!?UrBa3J3EtL2<1!JK^~M>-)vab1U(_9P5&4wv@i*Y9LiJ3o$IWGkFA5DJ*KTkpG(Lo!JwdfPR(=`4y2j^tj^lp(=+SGH_qzzsF)d}j z16+{GsE^pbKvM>D=+__-*P4?1L-SJlEa}AsDQOekwsf8f`cOF~0zcHLf}Rp_A6c!w zJ*K{#h>*%>N`6QBw2_8-QqovM1uqqhffwj*Fy~+^!=!PzvZ7T@@m`xmU6DFtT}99C z3+fYmQr6HuA{W$fhke8V{gDpGc5{vJLi@XnrYYQnaeD0%kd$+3m*SB(SiZ^lw?Hun zKnIRwUWWMKK?oCiaj+4ACA<(j8rmN-Y*VL0w!>58FgkP7l#b7R=D;(J*AJG^hIkoh zxRx|5yoqe@$d<$VFzoNlR>CLb*&7ZN7@iYeAkVqs4f329-Y3ub;nVV55SBX#$Bk%x zShT_gFPNZ#uklSXsY(H=hcHP0ux+`=)_hTrRh|#NUv_jW+lZNU~5ipXQtBd!HPk;Gh=Vg6Z~*Hp&4^i^9GC} zdLIx40dj(XE0x4moZ9j2JkO6C zvml>Z??E8a$t&#D1je1wMT2sUGHB;Esq@krObh$ zxPAlMI#qu?AMN!U@!-rIwJJF6K?tb&8xbd~c{AlPgOj^OrWtpi{)XKlzG-&}H}5WC zx2SHB9MO7XUHcX5Z0(k&bx1OyDSlGn$(5#f=o9L8(%BU6YCJ366ra|3lHU}+UE@i8 zQ#@2T@soIor>XWP1neyV%W0}HET)VU$Pp*p){=u^$)O329C5;1TXHZgIW(b>BTjf*OAdx5hbA;~#0hYlHF1|= z$)O329C5;qmK+RA4ozs}h!ft?l7nH%p$Ux~al$)Waxg48G@+3rPPn}#2g8y>6B;?< zggaVtFf2JVp^+m_cvnjfh9!q4G;+iVcednUSaN7WBS)NYS4$3tC5I+7a>NNRVVYWy zVacHhjT~_TJS9yz7?vEG(8v)d+})CcVacHhjT~{pJuNvHmK>VU$Pp*JrzHo&l0y?3 zIpT!(w&Y+~a%e&$N1X7!mK+RA4ozs}kOcZ7T<$M`Qo{c{XMyn{>*7A=cfhPLgXhwG zpc*Q>wRa&V$cbqz(bO%KrsxX@O$E~HrfPS!fKyG(X#y84)CF^!q6G^({Ja^kuv^cc z4$i*20N{5t3KcZ$p$nVQNIWIJuP_}C<+`tiqhNHIRheg=)Uaq4D7ajxV0@w zkziu)?8`S}k_3u-A8u5u-PuwHN_AhCTYL9z;_q&Wr@Zx*+}h5TcuG}Y&vZQO1AWEm z@Ranv?k0F4l(N=0ySWC!REks|1m&Ja!I52jRkT72yX5@<^J}m_++bX6l|jfK=Mx7; za_CGDMul;%5m=21wlV`uET+>j>-bkOhNop=EOue^#IuSIPvIeR8jPDN+k1)A@v#a6 z+v{+rwhu(zAEms*_l(mLwWBbV@(+t61i+0Wbl)^AGWiD@KL#4{__#hkp^s1L!0C67DDO|$}75IPK>vYFqo>}&qwVQD7gMnyecc6_09qjwQE3V%t87Ix>2(9V`qYe zs!=aihVo)@Bb~HyzcZgfKMGagXt$NZ&jYCNkQ#{*}y51H`1O)zphp>5T^OKU!|HO@zT+clniw(*Wxg!m;I z-$ds^(&?3Ng0iryuZ{Y<0`DIIhNJ%S6x+GAUMDMFwqg?kL6)qdL4w z^M0-ghM~b%n8|zb3@^a6K{ui}6J(K_3g%J{sh{1t$dtwh^BU12V>WueL~jOka4p29 zejkunQ~^E}WW61NI#}2e?rRD6OBj~~32tYCxZGfo#L9Sb7Wn*X)+rTiqm0f1e}f6U z<erK%VCg@6;*o2t_4$=&y_A*~kGE|eF~>|M;~vGqMwZ4bM;;1r4G z@>ZCHi^4=VztzuO%OGZ9fZ8 zF}efPc+;ES3p!Z=$3Gkob&%tx`U@q_4iv&-FPOzRGZnY=BfDW54n1}$Xe^Tp%^@#R zo^ecA2KrP7`Kz^17;AlRok8nnbS605rDa2#4y2Nr z7C#a$Ppl`0QyoWjCq=oK+(|*isO&}-%Uu~#(u;ZQ7wXq;8G&yRR~yS9T%DavI0OlL zWKG6q8MDf|u{&8QJ1BIs3{zchobX)G;K~glwT0k8qGKw{oCzwHpd>lWPqB21&t$3K z>_pbA?a^7u2x(ahK%TzEcaNyJegL}g0j~|%y)Xx_;#ijZS>;BjY%qy3MZXT=B#;c8 zlJ`G=05>T73=epUg%fZNh7U=JlIJO4%htG^TuQEX;(W30>L4F)!IloY@5x@~!dTqp z5^d>dVoIWl%@X0AvuPj5q}kQIVeNUPcCGf|-H}_22a3zZ_8Zas_#9kborq@YfRbl9 zv<;xx<0AVnonlf)D|3;ijGaP{z`Z6XsZIDgFnJus{vFQ+EZ_cHj^}=edlCK?;qMJ7 zmq}6lHIVxQ5bn1+eizJZqb$>xXqRvs$*YtaDcFo}K; zTanY{UD@pgvxz|2cy;_a!i4I06co**Z=pKM%*yp}-CMz1;x_J##t6q?f@f}EpO@V@ zuI$Fax*Tr^zs~WGLFQmJC`P|hUB-kBsFI`%BL&|Zurey9l{bXOc^SmZjW!m+ic*AA zRh2Y^zSXk54pE8ibu&r2Wm!sOrpXs56`FMW6FTmIH8jcsE)pnb4w@ z-1;Y3`fgPq5Jw77mBH>cSZ_m+_AN!DDYjEY1LaYOoJo*WuyKV;Bu%J=S<6WQ{w=~E z_G}w$4j z>Ismz4aDP2d>-MU**Xy12n^+DOC1y*vf!dfHWCUapfm9W`9Bk?bFCtosq{Wf) zcz})eKZF8!FnnH&qFD5>E$Z9NMe$P|;JMP|)}<_Gf;N9$N^~Y@+t*pHB?#xMn5+p& zT9W%uqPhcnG*+HXeWCt;bTgQD)X;tcUL9{DZr2R7d2`*hRBD<1$n&==*veZUu^ zq}n?ee^4Wy-{yrn(skCgGnKzGDswmGH(@^5V$(Lg0P+X>oNd||PE#08`E9MGy zbbGTzgAr|(o7uysNis~2T%AE#-Gai&fhbpE;B67q?SfVNfoD!eUC_7avtX+1t?f5| zHAdEjp;VTJU1cr~5~*APuYhF%l4CV;+Z(U5_3_=@$brGV1dD(h<^}f0&4|M0({<6v zPb=`a%a*7X`d7sWnZ6kKRuiA>^2~XuzW(6VU`Ngk2SB42T#tb424SDjeLIS8;$cuv z{|=x28z6a+f9C@3uftY9bWBICbgzF2AdS0&yOcMK6u-yLMkDIA!(Ty)Q@aI()-kb# zw`)6I#WWLHLAxstoC!jT2`h*YANfZtjZBxMC?2*N+l6RtyklSj@puCJ`D;*H`BDQ8 zKykYXR_b5u1W%&P!$GjaF7HQ4N9v`ia0EO8eEN-$h4PIM-eWR?To`wV2A>~+ftvgR z2x1@SHUREGAz#a&f$|I*zK?v9UuMOK!B&iCx&Dqyy;13xdQXBYrLJNZPJUWWyo!9X z@4%1~cETwl;J-yg?X_&qd9v@JR4f+Da@WDmVzDB(Ea9bB?q0&nobVvj7%y`pn1ZRn zB*qQa>EH%Dqk>3pDb<6%o+@=0yAQ!9>rAmbT!Y-|vRQ@DsZnUu)#MA~h(ERo{FXT4 z=ZIMKFZeOp@D+#+Ue8v!5kIApUXEANSf>BFa(`!!@pn!#tHpnnsyWr}HD zdDM5E921nUSz|8-Syw1#%b1Sb#ya5EPA}}KM2Ik}2oFH0m7j7!iku7eZzf^vA)JDQ zrvn(X9}P#BMq(ej7hZ>y09_CFu2=v~kAbEDyK=C5Te=X^Zbll~ucVVc)GN9iucTY~dx||#tun=)Xx>-t zaJ;Pla^xN0b(&^sj$D{Ii&h@1Tb$*;S`cHRfh|4h;EgC$Z@7e=c(L?<^EXJy`ynRy zI!M#}>{`UbS7CmDzZBl1`B@bIW5mx!d_TkouW}xXbGAR=4~57->c$m#J4N~%^w}#w z4$qg;$mh3N=TOPLvL(`f2nqS3tG{xq%7Ajb@U?)D z_R1r$GYS+k;r)E4CK&F@gbzgl5Q2%2VChWj4QU*w@>LiFa(SAB?7flfKYGC}#B}sd zRxqpmsZhNv`s(;vb|&m%FQyWmshz=ZN7R%&x2Tsr^F}hgsR@0nU4;f6OeH1LBqG^J zL=vA#e?9yHd;Cm#B|1EzbGCPyYiH|u3F^UZXs26+ufdy8Gk&m`JKKK+GQ&UNCwMc3 zB^91OhXdGK5RhvK!7}QnVQ{^;>R{kVg&z=z+W;{RYZgr#ycO>qsc`XJW{nfL2~CpN zNfRwnM5wh%SVU*G(Ig$!LblN)9X(K3=}4Ku@5Qb&2Q4QAl+w8GEqEJf2yX)g(Pb|} zcKfQ60o_Ag7QCGh9|uIR18?>YUP6t+o(IY-mtt|ZS}_-Xg;2UHP1N)7mAG#$d^(C1 z-wAXfsXiSk#XK&sx)1c&E7;I|%YFT~7kesw`{6fuC-FiLg})<)Zvil3YpIwi<1EhG z5Vb%*HC4)xmUM`HT20I>^gs=A^PZHNg#eQ4h~tUj2pu@lfr9}rE_Ng$Q$^2e&doow!Z*Ju@E+ zYOeVe=ZXmcg(f5OPOlPjK;G%~h8%}?dUIs_-sx?pWfMLDblYi?42BL@r*rkMBhWD0 z>R&^U=5MS0#rP)s>n*IGGr{b!{Z&Ce48XK~E(D+So8enwmD;;VxX!yCFmELcfG!1) zd~l;s-N$}*QGmUGx3I^T70~d)9Sc?c03<@+o0^-^K}io`A}Zk};%5y^yg%H*_PrHH zsGkVF2TRylD0x8kv63E$`u~(3d?|Bp>49TxH}qhEd@~3c#OW~XugKNEk!TAuc-0KC z*ku1^um&ddZc^W(si^4$vAMyWK&%UA8oo=y{K^OS2;@@SS&;MJ%52~KAeZvr zCK1O(XnIls7WRSY`i88O{ojK4+ItXRdoO} zz;DWjcHq1S^qRM`J>1&Sn0dhFC0cv)v;=aGo8CZdGlqckf)f#4=yv=M0Yg*rq$K0S+RVwg{1~~R$!AW!Ly~b+Yv$y8B^iFP znUlXJ$vA*EbMlWQ`Lx|7KP}0pPD>VFJXT(WZGQn!I&>CbaQbj-)q4?}4i~qi`L|Oh z9RHmn8ZLAYdXfIKI1fOMCeEKs6!#K6TwKlU-OQwq%#@^eX;TNWj6b)O@ut=?K0rht zC8Ce<=i@V>48KC4{uz^|nDmJmll~MZ-G}rWAA)5uy&~R1 zkpCb+bF_>87%n9KswbkjyP2)Jb`QQ49yG`R5(YaUE9#uVFl(a~0ZKjsmBIjTqu(QB ziTE|zm}3IQ5(9@Ib#NlpzTXcVQT%80ol0Z~f=r!)Qq{rx0st|ge0lKM23YNLcxQgX zdco%r3gCRrVKySSQG>L`ZPZaQe^3B7ny2U;$>$h+1OYA&a<9$2;TB#$!Zv6(7eZ&f zQ*>72Rs~cWPSfKo%J2lVaZ}g05D}KcUm#IQF`>fJiyJiBR0ktGm$%|k*au=1;QE6I zfGsEEvl=eyhdFSaJXPm&Ku^o?kpr0BZ=Gien!Mx=d8z#rZn zHYydpfdc9_{0e~mF9Ftn1V2qwJt26$jOdPTH=&nx?f*;Q`Qikx--Wgs>b0C?z%EP0 zpGg{pB^C)*_^-gN%>X{FX33Ie82Jj-)yYp#N40YLq8yf&I+`S!OJ%w7dFs#X{u|Lr z@rIS9bE4DDiML1Js>XM_AxpO>>h~282}??7BF`R{AhUCB~7R#6vY-xHM>?PBS6mp9O8#9reK zx5ZiAfZlHH&)x8YGbCQxe@qi~E7x-FNYM1A1mcEz=10)ah~%YEjXr`7d67F%WZ;Rv zzrKf$pf__x<$K61KDi;^yFd^6oc%tj{}2jwg0E6uzlNWjdO10g&eBEF2>sJ(Uyxud=E%{kQK*$4FZeo1{sw;dQDJ;jSnC>?{ch9gW3-mI zj&;R7Y~XOX6TJ6=Zz5B4F&BJLPIb9*&GpjWIheF#29*mQ1&~SiuHy<7rYE^)Qv!<1 zr3%$g!h2<}rNhk*lr-GW&8fcTf=f;#H8_ZS0xSLpD8HCCT;%xo%GwxA@^2$27CxW? zV7AjAvld$9PL&m=)k5IJCbe&YmZ4c*@NGQHmx~gh%ZioB;==ncj{kay1k6=8Gcer!e1Ukd|SHS1fcIuQ44_E}Z+F|$!eh5gD4%hMhcL2gW zzseQaCrj9fK%ziG1`GsuGe81X?y{R0KzY ztd8_)X(71c8qyKDyZGj^Z&p!BJ^dF3WbVW2x{eQGaSA?DVt8VBtL!;4t6~|nJ za^F3@+DH;i@9gngu8qB_(LDtz^J!G%y{&ol^N4vzTqXs3Wq+wuES2#^_+qKjH-z5~>uHr} zcv=y?7{8@d_zdVRwb#I6T#=HIGtZ^;ss$*CUR7@~`Uv{EIAGzXrTaFWm9JyaLEF0n z{Y1RA*kc)oA%R6aPnOk=l>( zW6dFmBJ8mPv3b9jz4xDxBHupgm2aP5i}6no<9``)+x&SaWcn$;XVq?o(SJTb+@|(~ z;B{sDL-11sc&2|!p8n79$WMM3S~c7kCE2BjeIStbZqjt{BtS~-<&w7ww1OQ)ZwID# zyWsC{lN~qZ;DZ3ad87Tb8<;tKoypXGj%=_LzX#OW;1>u4zr+vw7$F9<%mYxSy>AVw zsH}iHVG;idu%@~{22Dlq&kSpxt9F;?r62Ma1GpkAamWM*H^%;1q(jGkd}3ToCDz?uRHu9L zUJ1T@m~fMiBT2g)s<+V&$q%8yWP3?)4H{rOVFXY=!7&1+L$UzB)PEXP>Xk(+Tq6;t z_TdqeO4uV$|4Hae$y}W!+5KMwS|YUEh~MpIrE7RM1ok}s1|V29J^&c}-{M^+gu0{S zUlGL27VViE>egrD61-ttfuGk%nd#six-(aBxfe0l;c|N-CKtRck~?gMuQi#WuFSOW zjWG$=Igc}IcBm^mBfzMfLrDi$0V?;28uW*db%ENIdbOu7;CExYYg-kwEX zXtNp~{twA!GQPW52p8`QF{hFXo+Aj5!1RWRm4L;8mNvw3o9L`!Crm5{AwZV8;Hl`s z)zfb6XF%yci67Caocq5F{re;APmQ}=a(Z~f>-OY0Pu~A7GISep$%^+7PGc9S{jadC zC@mOwWR&d4iqn9t!@(qztpq93V5ZtnEid-Ny0m=@bKx*M>cbz$zNgG`$0cn-3`AFRpNwu6`)@(FxBz5cQ;6(aPMK4gTy=33 z?tm|&J#zLdvbb7HH8%Y=gnF{+PVakQle>WrBP!@Bb`M^dorXOy(LByd*!I#P% z#M{f6m{hquZJsIS@)}b>`(R95k7JAeMNCGJ4Axc4?Gw zRdf;ilp}lbhI=C4UgCQ^(ksLf199j6e2J*|xGW)_XP>$ex3CeIAQFR1E>pNs^ct(I;5=$NZRlVh{Ldl(H5}B;)o`FMSI6`P#|!w& zlc8J;Q#uj zkF=KYRrzoVcnT5KUC4)Ze5nBr0p_I&qoc8fY2JJ+>buLp=UzQ99b~c^!cE!Mr)-C^Nqw^f@MP)@_h&IbzrMf>tn0I-w-7M~6G6;6BJ#bIAK!~-{8@xvBMqT++0&0gmn+5OJmFftQAs!z;rzrG zG-ZOEmYKEv3OpQ^UtqCmdyF`(-xDBT;ovv-v&`@k)E|5Me+;RqtXq<=^Chi@-&3fU z)un7lw6l2y^Em!fV6--$UMDW~ScP=!Ba((tKJCq!Y;E!Zs5y+-_Uw$_*Z3Kh2kHMO zP*o^*ROe^1I}%Pr;T7G8J@|raM>Z4RC-)=kFC^V3fG&7PoAB&QJe(X_Z=@h<_yy;g z7JR!Pn-n+QfTY@pe1tu0J_p=5IY!1gm79(Px!6Nidl=9=y*dfE+jwvphL|b-Ge|-{ zZX8?2ITjRu1cNzG9V%QD7yXIkxhp)MAQVq2Moj{qyWFp!-=}dVm@T{xtvQ?5d&tII zUfhhnb`lsUsrMmu@@K@O5b`b{Sl*8Fd%6x(2a;q)UOfP^y~&>ffqV-Es5OMoh(evD zqNNlK*&9naH*$H0wx!emBWj;>^XVDzAaXh$sJECj70f_LOM4L!-0M#e|F2}MeA9$; z&(AmbCQ{5shJ_Xmy0vEnuCicf>bthleONiCiQ67ZIh?%iGyY`g*rhp66|6pA)&{TEGLuJNXMl ziC8`W_CJY$b)HQA67S(_S*qUn@dA!6``}02RP=eJ#8!Nec$|r!OWtn+U>wE->?XBO zQ7`T%A!c1|N>!Ifb}!*DILgUoiWOi>5vH`R-KBHYLS)$@`O8!DBD)qwFG@gM;=2Wn zG8ZWQw+a2w7`oY4@2IQ}XyTM4vR=5MffbV~o(N#AqWvnM+KNNwh%3a^D!x_jt$2v_ zPFAf@J=L!D2m_3kvV1=-5jXG)3-?8F5YeClk>MN)hjM>OexC$jdni|CEAa-|_v~?9 z$l6D%P5wBYV{wn{1)HL^DVO&Rn=fiRNlP4!@^e*Q`of@oFL0|ghthGq&@m&?Sbw)f z<6?FpdIx~*#q2^fzMZ@T%}K3~=6MJEo!Xa2n*0luK730_vObEe(LEnR82TrAhE^C6W+-7|bG!+ORyKn@C-)1H|~9LeUJLEK3q0a}|~O!%X>f-5)m+ zcKg_8PIe5Q;H3P?h>K4lMs$^Du1^{BC6Tf4AOMGFx0?yE0RZ3K7( zaeD)NKH$PF_-UqEqTf6%`hG$`Gc9_cishadqYTh2*AhSXK#RSBk(`% zCGg-dfG@<49$--B-HEU;?*sbM8{V%kbHZ=vOT^A81jE9}-Vt^b;6ncFO)bU=e8*k_ z|Bk@Cc4lud&tC>$UQMt!z{e4omkaC-@D>8|!1~?*-$`JeUEdqv9}&1~`Q8Cv0JxCm zdXvOWu-AvTAdQ}<_H-J<6jKg-WmHBi#CvsXTq-EPR4Kp?;<=K*Pm0*}#0S5U+ z(XM9j0;e{J*ZS|kq{eY;T_d^|^gJTNfHT4LU@0K;)k|>Q1~mKl>729~Z{isy;gUCe z#bx+-g#UmrNJI#(5((*d;uW&L3rhyP_YKB)bKZgtE<_qi)}3*{a?4aDElbw28x#@r z%z*&7S}a|@Xl#D0MaCl?4?4~GD|Fu<=TgT2OI6&U52XbAAY(K_VI1ra`@tMd zyAd<0+cDgCj6t)&M<$>0@)ssrQyl;O;oAh+v9yxm%}~2K?Abr6l$N+0VY}Y4KP|di zKV$>9l`O)e94w|d`upIwnV#@`WOMxUAat?<(c$k)c)R9+vziwoU5Lh7-WuSgORO@o zxtN(d(!T0D;GLG>FG03ofTe`jBa2pMPOu+hBzq~klHPt1WzV#^T$xh@c9fa2LyI4~AHP#%Hy( z>U<5_qMFkHI*c3x%I{}@!>;Oc(?(jpo+|#6omee9id|a)&pm*O--85j9SwkNkzfQr z0Ib;HG7Z`*|3wlr>7Gh$F{B|Fzz-I8^utix_wWYrY@5noEOy*VPtO`GKIi6=udO#-7$a*@t@$(1?} zDlPX6{CEaaRP-;`pG(kHwmoP_DrT zxPjYK>2ta;6K9w8L<5SB)~)sgSZ?e4pLS{ZQIv6dYrCp-wil$r2wed!I4(U&>l$@)^j*LOkP&_ZjLNVc=1Y!~QDb$&9{ zMpi-#hBMhIFgb_g^wlLi0=+{%P8M%`BXu~A+zy`gaFZL)Oc${;1{>0t^ewd;_wXBJ3|}AflF2cXf+*;`F6gH z%V+O8t$FUt!D#S~Xqt>kF8dQUgwvkDMjHHh03cXM6 z9yqDmau}5TRZ+?Lv~(d?rI%|$sdQm#IW9+-2l*5?`In~V+Y1a;3rJ+b85DgKJkkSe zPmxbs;Tvm~%7(VV&JZD$F33g&0;!aI*qM>RAp#?Fc~r#gYVfUAr7j_}u-oQLD26&S zME>@38x0bS0!RH%NHl_%Z^5Av-Zt6y^qAt6BwB^S9UkW*b7C7see%*K&V;~{F*X_0 z0ZGP~Z-3+W53p~)5r3P`xVAPvcIC+FW3^ywxM8doznwm|{^GH4sQ=2^h9KOu@uH#r zv&X{P#$fa6l_Sgf-%$Sxwr(2V8jh{rJhpW_T)%0k|J1D)ZQ8iu#IbA746Yd4y!xVp z4_<%Zh64{;amfA$j4fYv$Uf5x+q!vt1T|M!`9$xy8JtJ?NR*yzH7hwL58u2 zVS3Mi+v-aEw;m?^wPpk#C#vDYbmIcw_Q}q}j=1K^P5oC{N*AvfS-!Y`Z1aZT;*Fax zUA_3MGmjZwwYdL?!#i?^T~pgMS{uK1(^&1Yv9a-%EI_ikHVTl{i!U1=-!i&v+0|EH zJ#zK_BSCoSvK5CMa>%lEXPmU`%y9kY+9g4F<>ClouyuUP*75!;$Hp%UE?&Lg_}De$ z`z=GFEf1XDvT6PJSpSvl$2VNIdhs%5%nB*%w`|#T?QjH8W2VEFk;W)$_gKcqYU9J< zSPiXFiz#8zho6a*T7S58^JssB46&A&tJZJYIyM|!(q9|fG`3-U_2M<-!T9=3i=}8S z8NfsRM~7h$*7gp=n7~d$am@OSn;KCsUf(%+B4^T;z!z$8EiUan7H z#X{-WSmT5kO@VZ`vkK7c{Hs(JJ^KCDB*Qcsk7lFUF?avGKSUQY8b2k34reQ{q z_G$pak!4^G$$kddJ^}}O2w&qh@;wo_iFhxnoV_CsqU4i*Fn8pc#uKKHymM9M@%Hbu z=di~2T)SsxdwgFc??-ye@Qu;a5aXG3^1I2q2r*aVz0J{-TD<^+kk3hy~{8{Tu~!}9y6#Q$01J2Q+QlHb$h zcN2a+^XUvr>Cf{0rYz|^Iyac>Ht)=l&d=eu+x#f^4aAi4{2j_)gi@}^6Was%59U3b zEhQx<%I^amAL{VTXFKoh%$YxQ66d^G#QDG2d-M3HiY;7p)$XLzop~k!MCO?Q5<-9= z37Lp8g)llnNIK9Gl8{b-$We&`isDfeQ5;dw1Ij^h1Vsf!6h}}T;{b{XdX6~H%Kg@= z+PgcT_ulvJAMgEf!;jVVt(sS@S~c#ydxA#Nz46TXSJF**3D)l9%`uU5S_*SsY{Ox` zNjsS4rkM2C!&9kiyAy5Qw4vSQ?b_0_?H_LMrmxzw#7?y5@V|E9@Z-C`9^QdcdPd^? z7&V}Y^i0onaDUu$AE@dT*%NKiYnHnM4eZsiR|m=y&P;G3>A~JC&+&bj)`PmKr4QG4 zOkXa;%6_khC(@COH!~9Hw~Td22cr>uU+&NOPCtX|*dX*8q4x@XM(DdjzY`ieh(q=e zI#%e)LDhrYv>7y(J{-g{`~ei(pP4M5wVCYhnZ_mAlF4zmgO7S;zL^nAKZ|dN!OTB< zFqhl)u zWf;O~-Y|qqxJBH@#QihevD7Y`%QhpM!z>hfrO>_ET%NDQ{Tt*4nGa=p+R!brII9%* zNYGfia44s6qj2sAO{5OPxV`!h;}#qN8cR*XPM}R6fZI(whH=}qi0===$r^rBQX)M) zoYViWP|9IoA zm#S9iO`wsqEtm8CC6{aD&g1$H5js(5Kmi@4;&ia4DqMO??riVmj5(m#cN7xOJ3$kv$7t?5myYJrJ}{bl(DR^dIoXynRn!dIo{n!$;G3rMFP`wJ4A|L7tW$AU z6i=gR)Jf1hpcMFZ<)@wLA|S#o&4J=~HBdTGwxC-DCEx^sQ`sUYl}ZIYO|RifZX22^ zxxWjPj_tb(#P3Ul?1W37^^(IcKtvsp6Q>fbIERk-IwzwZK-oZ-$`jeSK;01Ya*0<4 z#BVacLPDM=@j78tX~ssu96{ai{u-`BjfCumw^!k6BV7X24gYQxzZ;F;os!DECf>b* zb_nW@+xJ|Sy@CePenIaD8jPDW>~{#L7o>VjaySmu5AXc_TKs;Kka-4qEtYNxMW870 z)Cp)HP9YKnWdo(t7)n!I>d`=ir*J!o-z1>HKs^OrC?Utw06~`l4W$V*44;&br|U89 z_M(Y+X8`ALhlDJn0<{jQJpjaS&zmfMd&TbpnxdK!@)MwNnnBaW@4w<#N#%n65afeg zxnyn^r!tS`i(foYI?yG8ItZ$zYX$WO>P5A5y#l0RK;6*lw+K2Ls2|WB5^@UA2z=Mz z4#}Ysh~MnFMf~c3(t$n@v{cY0>S}SCYk~UFebmF^l5LcDTY$Lkj{t>3FNccXGvc=s zCll=V3Q#)jr1^qcfHvUP!y-XP#BVp=g2^Gj7W5*m5JX|zelO8VL2ZH3fmR9XC+KBb zD`*7JdC>b!lKX_PSz)}_^l$N743rM^fYf0PLUw~*JuZIt1C0QBQqWUjZzALy^pv2l zC5JcYIYEB_h0_7rD<~?Q%kmbzVX+pZhZE2{^s)H$6usyZbcAADEbC_Y^`p-z-o>e01GItu3&bIBmi&%WXF(eTeMepJ6iPfj zB?i&8aVSbv9*3~oeJ;W;jIIY=5}giurO@xAPe)!SqPrlxH-=-S#Biy)$1vxr z*nNn5H1=1}syI%$Hm(~a$+>gcdRt-CGyYtaMFZp6cev1Ep%dacg=s=($Cn~jt++3W zpA7dE;$9m+9qxzXFR-%cyrgubGZQp{<|cKaENXyz%95Dm!`74~-G$~Px2I$(O#abI zrt?5;$+Su73<+nXba%PklTzB#lqKh-3~^0aQZ953sG@l(TK)7q~Gt!cjnbZPtTVPW(_`$6H{b|b>=lKYGtGtklwET#0*=DHR26q+S; zw9x57{X#Dmx1?5o_SoniNH6y|En*TY=Ji?&x3&h0dUF|W@68tD)!w$=!ahJ76^+J6 z?R8BP=*~Wzds*L39z|N;{C&B-ZtvY4oLBn}0__=pO;{Ga2YwbE5_(L+jK+l$v~Rz2 zq4O8?8|l$$4y0H6ahkde-}f8jXs;`y#xrF}l+a|MZH1l=YD>OnM!@5yeHjmd9?5td z^s9`{E;oITFepjJ%b;ofJ6+cs)CfMcFxm7?NX}RZa@9S7w+-J}hpwnr$4oOdW-$t0P4SL?&0@RVGd-zJ@ zUZ74?Y0y6JLEN^zSI};H&-)p5p$8560;n53VbE{hFR|yeTTnB3BeQT1<{Lq}M$)jz zVNdw!;>Wo$>e>p8jrA(!nAQnurm(0kYA_u(ew=$2tvZ9Hd&JAR zXVHBIaqdHCHxSWM>KfHoWmEe>8s$c1s$qniDdKllR2JpXs7yv$E;-a!kk*$RI?M5E zLC8vtJQqh5su8qVP%~XAs4I33(cfu}prZ!eA!ufn_IowzY{c6pXgPfxRSL9Jb|;(Z zD9SQ|4jA-PR6fw}2B~O97w`jMq)Rq}76@8StS=+zN`v}F&s1lUXDEkUPQ!pk(o&5) zQ=_X?F5PAPs-m+fmmbha>{2f6HX&C>mm=f`2Hg?ef{;fI+8BK&` zZO{(H8%13WdIj-DQHDm6Lq26W=rWa0;~aFQDxf7MUUp0|R?s&aG&Uw5Xs1Eb1ih;f z)x=z@5OO$|Ww#2%+^C8vhp*ZJ{UhcUHJUCk=$e=otT7iEbZg8(tT9&_^kU4N>TLSi zpm$>arN&aj2%XB2m@R4??J($vm`Bxk${wlxPQ*N|CSpH^(Q@hilW3bkNwIs>WZGv? z=h%^W1M$y-_Nc+JSwNm#j<-h*i!DXSbr7l6!2>`K3ED%~Bjgl%)S#OM?KbF+*!R^G zI^dud>?|BMXhUoZo(B6~BhPcOAFJsUJxcNu8#$ew_}de{FZN6L>AyYUAIE;H&Y_Mv zq+-AG=t_gw?|iydknSrpXoE?UL(U*5DW^#sawcsS)J%WIo=~$WoHx-;AFE&|MkP)q z!m`mGl^oYXKI6AXWyQrQ;xep8I%v>!ahcXa>R7~SuAzUyuZboY^g!G&YcYG^ zZ%_CGarxK_(tmqmw#Ahyjcj?^NXrvP9r$xW&sd(9I*8?YnIKN{mAG8%atFPGc3A45 z&w!RW=$p7gYq^8|h&$W5(m}EDS^Vu)`P&oTPEdo?;fUfKR?zhZaSm6}27@?19EC6z6a)y=D;Sa4qdOA-Tn_r2~SreqKvQ9n=E9j-xq;<({YG zOVxFhZP07+EqL$21cN?;-zusz=-c>wT1D#&@+7d|D+Z+`w7_pniB7XK{H~{JgZd=o zV|Qk$LBkTd!0$SPN)jrp8z}579q$~(yMg)|REu~w(0K-3BB;Tj)kx(AT4KO`K_VG#Ff@s$`!PnRwNF?Gqep3YQZj}XRMSA zBiAbHHi{mnQ8wn0w^P@N8m&!ablYSbwE%4qq{qKI=m|m1GOpY~FA7@Yxj1Qybq9TH z&{atf0Ub5y;iSi{JE@M3=1|V(lCA*SX3(oiPg(2e6+x@0C21E>+Eg9#^Q67j-SiKG zzE0X_t*3%%?5E3e4^<0VLkp6xu)*7&LD8-U=tYBGO-^xbB|2Y+{19nAL`wv%qMwtuSP#=}23aZX zT@TYfgQ8PTSdUPf3pk$c9gmR`r0eh)o!-i?kAsHc{Q%h-c}Ax6aXn5G1Yx#~l?KoZ zPIC|O+F~1RHi&!UHtIN&{d5l7C|eNc-U7en8hJLPOmuCh>kQ(4^aO1*=)sg0JX!vM zpk@#E#wV$LIpJ@)hkN6bw9+8%jZe}}gSMxXsvVR(i$gYhUQ5Zxv&xx*mV3D8?4W9c z{)-%T&^m)$sio>E`oP3HEj1s{)BbM!hKgUZ3|GrNV^Uk-hc`7yS!Se8b3ILU2GypX z4|JPBm!?*@o}ot!VhKJ&uNd^t)Hy&uYeef)Yh633!6&7rhf^DXmKd}rH4D$oy)K9) zIMMYi9o7glkE>kIk*7+RWwG}<*KQi75&GB~*Yh;hK`m&hIR^3C;sv@+P%}+ybEA5Z zjvBvx-rHPz$unEhBwlyCMEnsH%&cf;o6m69c&S0W?s%16)*+=gzD{pDs0FtpKXK3& z*FHM#pvPQqQ1l#K>gF~hu~XaCpz8$XXe9db7EO21v#z(P!GvsSQ>xyjl?EMd^OEab z+F;OkZSv_|dc~kW1^p~&52dGZyuN+m_-v-^E_OLHX&zBLP9LEi2JtxkIlW>KkJCq~u3CrWarz6o!5|)|zoaz=@i_e@ z-DVJ5hA-(kL9EGL!oH*rH1Z^-kHr4@&w}>IIvl&{^Eih+n1kihSG2?+o`ZcwcM4ig z9n%?Y5v1GiE84C7ki#(eePH6T%{oq=8cEZ`yDDGPb%L~2{F=UZ(Dm?}S<4~WFEi{L zI;s(EO~0PLr7P!)pNDPMceKu+C)4xkJKAB;3#id|bikl@1pUXL!-B%~YEfS<_MCxW8((`J&Kp3eH4Ej&Ii-9^`B&m3!+g|}xX;7c` z*8}Y~XmoqLiduPOYQDxZqy0vpF$OiZe;DXGgKlX5G|&M-c3C+6jL;{KlC zAnxyp4&wfvq&{%!FeE%heI-ciM5_7)h<9V|MjcXBA{HWyxJGSMUm&(pueTo+o~8-} zX={_FDjoD|Sh`y2APR4%zITv2{4{mm#hePqiw-|s?RHRNcqbKoiS3sb-bF2OP_OWA zDohqW+Me}LBMsvE^;8oK;`;SceV6D|*h=+L=LuRv@zE>s#L7WItLW4AS6F@3+-44` zTeF`Ev_h9UXc*p}x>6%g)M-<~Gt>q_diIo|c3;M+=-E?$wd8V*c=xrx+G!A%Wsur0 zNb4>hJ;R^9;S=cpdC%wzO@_(+xOpx?vu z)JzA3y9?A32gSRK)mjIoyGztV4(jYaTfOX{zV5N=utuJ9J7l@XtKSV`i#c8;FXLJ) z_wa7^c-7aSst!2_Szu70!$|m@XHav8QlJKdR(8lk$dv}&(xDiLQ{-N?t3zc7Isi1m z@%sX()Iq-kO>|Jg>6Pv>2lW8LQx7K1T%gGgnhZ3>LGys7I;a_FnuBfzn(m+nfzENz z%RqQ6(B#kpgePDO`U(h7#u)Sm&;<^P>saZ=gIdO~Gtf*2WdoHv=q#XF4w?Z};h;L8 zN(U_k@;PWNP?dwW0?l^Nb3k((^e&L!LC1jb`fj__Kyw|G*s0Q8?V#R3^Bgn`sK!BK zfodIeK2V*5>VW1u=rW*s2i*h|aL^{81_wP2g!eL;lD!VJz(Jn^Ep*WLK#LsY>0Ie< za!^~KiyYJ+Xt9IN1p0^C0F7kJ$2xeiddeWy!AsQJ2C)uas*W4PI=Do6mg{(|gUzaw zL9Bz9sbL1O4qmRx3}PKzs;UiQ9bBfC8N@ocT-{+1>);jYaf4U~uT=XCVjWzejv2%{ zc$KoQ&}CsAyjrz0h;?wK$~1^|@ESGNAlAWusw#t62d`C^8pJwyox0f|*1=V3t3j-T z*Q=KdVja9eeQFTv;A-`|L9Bx}s+22r$yf*1s0@Qx2X9iv2C)v_tY#YY2hdv8WDx7% zE$VuMSO;%a_Z!4Ic$?a75bNOW>O+HA2k%fn8pJwyr;1yl%fdRiPW3d1b?`2gXAtY) z-Rc~JSO?dufI+N-8`MgJSO@P>_ZY-Fc&~ceAlAWusdo%w9o(qCHi&g_lk#4r%fdQ% zpXv(4yWkT#*SYUk`GS_y>h(U)sU*vvF{b|tG2)RwAUd?4$POdIk&8rN9Qh=URMFw^6vc*Ao}O3lJLqccdwy%s4P7p! z7gXd*U6u_9`J(D<(4+9%tA-i$0{mW56AgL~`Ms>>8uVqCo9R_`xkfSJC3&Wf{4$39TdJ; z=cjW3!phsuFMK)Bz7TYidw&SJOugx#>ygR<2dz5^wS@R>g5O(C$VXbCXS&|*4*I3BIpZ8pINOUu`fU_jY>?XovA*dA_ecFo@;(zWUyTJkTuM zG`IW5?$6X)#*a_cKUYT$VqH3_s#od!SeK5fwCgom-t{K;G4+arTIfslu7fU9|4}n< z&>>lu{;T-&!hBA$r29nIf7Nh7xF-O=uheJQ{A}_M`e9rRrDpia{3(`j0`^ z_K1o2RkdFysd#RM-|wnGBc!>Eeplxiza2f2BK}kjj$aG?sn!`ko|m6cI}PGSa}WD9)AFu;Ba}7TpiVve zM!2kX_iDdEK;c%wCXI@Ew&1m1=NWWv&n;39(-^vsNiv^E&D0w~)0K#-Phtkv;8 zPK71dLa|n^MzS{(XH7Hc($wOJIIGT}#ojWY)ebr*BHl{AUsA!ITzN!-)zu*0|4g(t zXoMWHD9PH~3O(zf7Wf@>(Bg<>>rag!mljH~VmIp?vOS91FD1dh@fV=sMqy$x;1kP=g>?mdu35aYqvqS3wq%Jo%}VYp)J#tSb+R@-sN?NJ$j;WBtr{JIUuWyULmGVx)Wv$_VU4`Kug9(9v`01S2-MB0 zGiVS{cPs2M?N)k@VtjKMQbo=$T+BoQrh(6W;L3@bz z75iC_Z0C@Bi1!uosu20x6Mk9mgCS^D?+pI|#1pyjl&_k9tAte)D>`%Lc#BL-VJ264~9Q}y_BNq!NQ zjd)eQBLc4l5Ib2Re2*Sl1Ww3g@`q|_s=4F++kb1i<| zCqD!KL+>{t@~ljQ+lqSedO*u0}MVPZkwew;43DPYclZ z&vLvYitSmU<$X>gwsnP8v>@I83a!q@Z)Bf$BMPldjl7fl;4X(X#`w+ba}cQ7piBCE z98qlDCJ47^`W%fo%WA(nnBUpf=>~CrXIotbX}f#2HAIlE(b?7*L2Eo)`W%lq+xkHJ z(XKw<0kwUR(_D@ds^22USbYUG(`$W7)mZCAL96IkAIme=TD_M;Hq+02yqnd4b>7Pw_3ZnUHPO04kRAgjT2~pwGMi|v7o^KM(Yi*Emf1w> ze#h^(h>6xtjpQV)%&LBcb7-b>`esp?mG&y5<Dr=o~9ekgn}HR!J)~-9g!&bF4)=o|n&1&b4kfh)-M2wQ~1M z4qiTOIoEp7AUR;?}IR1_{#bS80tFw8qoWufS7j z%@DMln){svbe%z~`c3fotSjH*G?&wD{j#Xa%6?m;2L!!h&@+O*6r|6!tE}jEIHb<6 z%IYgfOBbm)sEewy9v7rrWwy1$Aa0e})_(*w(?`f*w)Ky9gK5sTt`x*+Uf`K+-KG)! zhLC=1z=s^N8K}zRw{8-obFa2GI%pYHTRR2qA>QS$u~vS>@s6mGeHM9Ytb>A<(-|3; zcxtVlAG6DN(bHG30MaWnw7E0(`d~+$f-0_ZN_b$ z1=i|MG`cL~9?wE6_fw5-%(wx_bC}U8`d7yNo+j(M&otTrbdmL^Al+{lTb?8ArzN=9 zN))6ezZh?1XFsm{4$oq1f<`!V+vmB|T4c~t?|Ysl);7oQQ_p4A=+7k{<`Z9fF1IQS z+Uxz+v(#E-5TDg8v#u0$L`C-h#k0)1NBhahwanV?pd{}yYo7_3(LW2{M?0vIH?#kp zK+#7zzauKQf4+P>4R^02_?frT{!F!dK@_{61K%QcyKp0%U)+LsoBvPvZ%I1yQaDy= z2M(Ddbh@M*N;SVod}oH_t8)*f7m6=ai|}Gdq!~&V2q%<=hCJ1MIl{YWrNp`s)WS0x zoThf)Dg4m%b?$tB)*|hz-8$A|r-Xk>Lh_wjMWOC4fe%>HRL-W$^JrcKj4Ckob zntm+&Plf7qJ`?wspcbC);50R5j*_?*ars?xt5*@HV9^iatLt@DEQi!-{vv!$wI)2; zgTrh0|32q8$;BGLDObhW)FLl9E@EHY_!oL=-8sA^x0MwoBD^KHlUut_j%C-K`G4h3 zmy(2*>NMdn{i{;F+M7$LX?F?9Zi@zpTTA$VC(Q78PUqy({;xRCwc%Kr>Ne6jj*#3# z(<~OwI8ckGi2Hn@<-+lcTc=YioQ4q2Lg8F2oKxMG3;!Ak6LjP0i?+eCg~n=SJwy-x z_iG*6%JmXAwAO2+B%!*k-JyIAZ(9cK)-65*+RIO;u- zxkW5I$0czgJ?(bUYZ9Ji_4mI0+i|SWmI{{Eq63nG*8Kky_aP@8Jp1Rk?cVf))cXJ1 zGW=Ic^_|dAP5!&FFVvD~?bY@<=yr*%3u|TT2EgWP>*O-_Kgi*y(Sp8u+zjRDu~KvN z2&>)OWVF@p&@g&b4VCKub^l)p{G9~SyRz=-8B3_GV>iD4BXgDiHQzE?{eK=yTP@uS zw8hh9(3-C~p>7>shtZnPHNw+?(xZdaB0S6tzMi@16!a`NTKMgSvKw!P6nCh^LQAFl z-KnM0^VrZb2W!gHaV+9Sf(Ze4fn*0uhBN}rJQ^(Y_O7K>!o7b=rb_lpuMNG*Cp zIREd)0zJ-#rvG>D7ReFYVU+(7ZHXub%Ym zE7Z3q;@UF=EqP7#%t!lvBRK}$dc}d>Cww}CQ_!;ICnqh67EUrKzBvf$qCUb2)z3Df zMS5Pu^~H)w=ou1{dxS;WtwRn!gfhRs=@iy2v{7(cg7604d8LBq;?SkJf`0YuzQ7`=V!xujL;kQ5H z_s4H0-dH>szu8D98~1v%@qAo9dGLH&A)Z|G;F+{M8jYvVM&q{x|IY^RZ2XSFQ#NDp zI}ZO#X)ONd;mtFpGzm|Kbs|0iTxIdj^;*y_>Mqb0ygP&GR-xO4?h?9J=zgK^2|XnA z80awi1{CjGptlC?@cv?bIp|rhmzc9(sB&?b{q*~wect^Pk;!hpdB2~MGh6UxY2K08 zM7+O{Kzz2kiFkJ*o%l?9yQGjne3N!Nb;|t0i%)^#KG!brPk4_J?~8j~12ccIwo*1y zJ4PciOVu%|>cAA|F}O{=&)XsL7@o9b->I2hB3D?$=P;wZdBL?S(X#dNU%oV>c!< z5^aUMz~zef9}`@B>ukT2Hr;i1=1MC;c46`E4Ll>=$;Gwc@>e1*hu=<%y>lZw5ue!( zbnVToi%ftFPk8sDgbk73(A$}dkv`wzOCWx(dM~wPUXPHUWj06drQ?}PBZngV-I1jd zW-mnzE=EXx%KAN1Hh#uBf%w_#PQ=etClH@bcf$Jva8iTU#xdpd+)j9l+RdPR?wf}+ zagsuVk=lDw!gSY}gRihkg#R8b#ZCQE*N)^5BTHR-y&p#QqN>4r)O>6C;A5!QQ{HdE z;Tz`snV6B(M0X61jY`1jMT4uCv~sfW+au-fQCsPu!IhD{6zA9pG>dwvZG%fyC-u_c z7Md>->!dz`yOa8DaNnqAlp(_Er0(_(it41gWOY#k5o>AWKs8+4C7>%L%s}PO8ip`i z5OS4^b!?#A9UiFoX~?y%+p{J`t#z#j%~RYid1_-;DN=hhD<2{G&T*-0S5{TjKq+&H zx?^xIH1N%=6V_cw|Dve7T+e%NcW)B+R#0{`r&Q`vs{YJsA+IZP$YW7nSMrb@pr;QR z2~PhZ&%r%p$iArUuDl^{MeRad^dMJM_R*;6iuLLcO^q(5L$2Q0S6GMW%zeG2(O%c8?2PE`uG_QUit6P0cXkdqyRr+T z=UZ=QPmA`egV{U031L5GH^Z%lW<<`nB8TSFbUeAR0wI%!+zA>v8b?vy2)JvP7CVGeQmm& zrFmV?4?PGD_d&1gHMrAV?;(YB=;1G*pNU%yV|T)^mH5~ZTbl$cvj4J}(y+|_rK&WH zt<7{vxsz2g?Dm*W)>NU~`qRVs$&u+{{KQBnt8&=-7_V#ouu|m@TRH4_1j}b5O5Qo` zLBv`=EFW*9;wL7(u8qSUkC`uV=Sy7XJcTf zB?(Iyev^AeSoh(0&M}Nbt_oAh?y$9LncvK5>5tx7T&=@T+6Ju7sRBV$)sx=9^NaFbv}hKdDtp zd=H>h-YPU-p0p^Xv>dibY!yqzh982J&T*HDou4l|`w7tD2x}nq$k~hXu$3+sU1Hio zOt-iOh7HO2Bz9|9cG?xzRy8_@`_913uTYYSIX}d1m0so-%d?&CPx}nEl=r{=l8)Ck zt<4XRo^SXa5o^^2IT(EqzKfa<-;B5>t2So{Xfx8BPgmxQh+9j1!oao&VsX(!%BdyDJ6a@$szR}d|AS<526oE(q4y%Z$ceXVY$5%4yn}K$Z?2~A;F<(8`bknKyZ z?Q};jY<}4K+~W~@iF@l_;`=OnX?N}u30~KM+?}8w<|c;2dgQ*6unM*KI7W%|l!ZGM z30^BP?~{bJ;bKX`I^^v~iww*>27dRv;|U3n@QtW1_fTaOYf`JP8QO0qbD%LaWD zx}Rx6x)s%HXCiZ6Nn{IiK;=m+=Dd}-BJ7VmjDunEqcDz3A3qkJp7wEKX?V|3yU>oq zLGMx%MwLJ->PLN(_)YkboR`q!t{U}I;xFOrNBxmFFzmrm$0G)Y?G*Yd=!&p|qu5@t zwLcX8&8WyEE>&DoFYC`yrRorQ@>#arB72G7->{cb^7F|X#uf%Wh28GF{L_+}QIal6 zd#NHHElz>_E|K%qW%*|%%~x0FPXN6ve=6we{0ov;izs|W7~kud@8YNMda2Wg%t?^e zfz0p7Z%FcDK6Vl4L;1}~Tf=wdAEd3}Y`xRnY&X)~@8;i{v?AK@Ej_E!;B-8&wJ1EqEvIM-l6ir-S}0`Htp<36N`^W zG+A?t^Qp;dDsD_^vTj2e=2LS{QEHRubCb2E_`=j(?hVCV)GoEHxGr_CdvEa;%OCbG z;_h-EE#~{h>1ofcDYMOgCZ7} zVaDj=5nELwVto^SSoQ)%FeO&otcSAv{9{N~#d_6~&x=ia7^_^RBu$9O2bvpa<0zpoi5;(4%S< z=zr82(6804px>)?pg*g7Kz~>Ffs*wAXqfc~sK?q48f|@!eB-UB;ZC-m15LAD1Z{7< z3fj?n1GKC44(Mi!OY)$_C3(c+vaNG5XM>A58(qxV?BcRL=(;RC1D})_ikBAk!58E* zXf6$ayPdeZP%Jous0-+DIs+8%mI1{ZP(aV6(-E=)A=lGy*6We^s!w=gbcJH~b1vb8 zi93SnZch?qRT0VV^^u>3<+^sKFefaP>CPVadvjgu`Y^2=%N&I@HoqJDCGR`l7VpR2 zZ@iw!^vI!+<07X;u87M&Cy$O3#h^vkJN8BxOZ^wNWmloeY zz9fEX`~~rq@pI$r`=a zF)7nhnp18}xijToDUYW-oAN@+fs{{Dj-?z=`7!19l*rUJsXbB$qz+FVlUkNKEp=w< zvea8s?@xUq_080eQol(3Jyo^gH{;^NhS(QzVeJ`)J&|y{`^k-cj|k|F2YVi;qa|34TwZSwcq(oi5Zb^kShagsv94Ug%b#PYZor=!ZhT z5c-?YT^>$9q65=!#hoH<@-nBhxI2pb|1TxMo;73|0ahn*?BaS4668x@FuIpcxTilNMQ+LUWQmpX*4av?$mPZNL_)wsH>2| z)!2!;2GTpnyB_oc??%vaFJCqFdmjW{;C&SI-w{uMwvGH2G(LJV+PXTLpYi%2nxB&T zBpP4TrK935ise{Si_r*djPq;mQ?<@h$t>E4DpXNvo{T7tM^+bjdsskM!~8}7D|8$s`C z!}Z!Mv}YQ}?U(ir_}OWk!bqX3(>ToSLf5B#A#qQDzLl01M$|W*eYN~`38%N^xaDn` zKTqfap%)8XD)btmw+Ovg=oX=mwH=8xpA`2w?YKN&hwTREkFb|OqrzVYy|?{aprfr8 z&_`T{K(7h^9JFWne?eQ?7l#wxlYbuQrVeA>w%oLCyb@6c&VwDeY)^DxJ$c+S4V;eN z3qarQ$|XM{RO{7uU0L!cx^hXhUWJB9>cRRJ8nQ!=?~zVu_-;KoeJvlI@1P#srUgAX zuWHY)@V&1GryuD~!x^iVq1LfUNjVN@Y@4xgw~d@5v=;Qm-j6xH$9i)LH}_$E9?|zS zkKJCn?R2aCVNCgZJVQJ$j zS1ho$5m$p7Pb)$3scu*c58e|L3C?Ozw$f2>*Q;po=Yv}KjRB`w#lp1&)PjwOLw?;r zJ$ULX9=;ENTEsh#@tBJxg8v|>gIlv=pg38Ft&68!sx$aIL2;u3R?kDvs;=Na2WsJcT;0Igt-6ErJg9|_YW0Bo z1=SP$J)n5cCTybx>(&dL7gcZg?gh2*ej?10@WfYNa9##gSS$1cpLh9r2ABc9>d9fck|C6x`%cD%dXL+|1}h4J(rsD*dn42Qc#<$#Z;kidBo_B)PW9weU`v zv%&dNjREHiP(^QIM8UZlXgr<>8VCM=Kyed=#)ETQO#lba|A6x)_G@_l%%5lf22{~E z7>PXet(pYRcc2Py!kCPZ-|{>3Fvp$({tuuQeGd)w;8~h!;QR!t=tt-#ZpDG}Jp3H+ ze*v}d9*T3p`4w-si>Kc}EzJDS2j_RZ5-Fbk09EuW-u!OSFQ6VgAu|*F6QCCT2AxHh zwq}8&KrO5nD&TfmmEc>T7X5+oR?(lJ@f2=Vfgc76lc8qA_XN!bKf;;=z8e&FK>6YJ zSQmot1%+);a}nMJioUGofqGRfXe#!?ENY_yplwwnXgjqKw7qHqJxwh}tj_9UxH}2$ zqArEIt7-=Ar!EH_sFr~aS66`Ms}-Q5)zzRS>Kf3q)U}{zW6f;Q7`$)HqOo{i7|z(# zO`zk|TF?pVR?t#)JLp7pCukYYX<#?hdeC##J)m>czd-$J6X=ENe$ct<-=Nj%0nmBa zOF}PJ4};dKM?o)BkAtpO+d=PDPlEmnZ(_1&qk0B(liCG(pL!1Te)T-)X7vK-zp+DM z;klBRL3>)Sg7&gr2kmX`2km3M3EJ0s3v`6_4(OTId!Qq&7SLSlL(n|yW6)99uZJ|O zPeBW;&p->U&q0fD<^&6AeF-|+`Y&jSbsQ2tOXwKu8*t7Ry3qO#?k4L8(8bnIp#QLb z0lnDz4fHDO574Wv6QFoczOv{V%LV$V6%P8Cg$JZ)hvfx*$%+Df!@`CZR-|#D-&zR@ zIu8mB#~V1HKUNB87grnbyMkKO&6N(?&(#jJH^!9TBGaNykD8Fp-yjNG0%gUR5k|4u z&_HVIeQ6MLf`9147`=m`*o|)h{RM9YM$ePuzHY*?kN#8iIc}}B4%adKVVq*O=HYXa zJx}I!3=b=29{+J^-x|%|OzKK!!OD!sN$Et`2Yp6bhIQm*2}e0&YbzV8eP>clV~xKd zqp`tXol#j`O?k6t*ZXFdH{b(Llkj=BiH$WizIqxrnFCEmAR3F$4f^YP(?UQjnK9o4Sw!W!wQ5`-V$X}i$ zn>Dt)2H)hWr}1_Cg|NH^e1~clKB7kX_-5Cv>T;x>UpsGJc}?XQe~nKE3V>A;sIB%* zt;c5p>!~DItD^FX2INB}HKw?ydKLJp%2D4_J&OF*zWh1mHM4z{qmf@Vr)*b<{cLw} zV|jfgm6Z9atETWb0Y$J*l}}CqAID?C2g*<`RFua0=AnQmbEPp*tlx;2Ov<;_NtP&`nhFcamYmSv4-%X!^&syN0iPR`^g;)|#NQi?eV6%4)Ye`{ik&u~Yo=>SrT$2L^(%3jBdOqxj-&OExsM zG3B#-)nj}MeAPOQF}3_jR!JkoIeu0^swjLdu@ZbVRG_XgO)0b0#BrHsKM9Al*R*-n zIx*B=f8~@Mmgz&lw!CajEeUEBq|PD>nv9IXMGd~1fPWUtA3EyjpAH$4x1DM$`L<$; zV5j&4jpfy44ULulTGZ#%3{TD?KzWt;60B`L1lW2>+KAbH8cnXL)-pFKu{@zMp(<{( z%aF0Ji72FA3)>B7O%in>G38XC27Fs^7ay#Svnh1HNC1?3IpqQnj=tZAI*t1oBe zx4+R#`UAT(w!A(tr@VSp(?nm@_*r5fw0TE*z6^g2+NBCg9WafP53bf8ZRJZ?Icw!p zkR(mO2HVH>-+aI~*i>v*ZCfG5GuZ`gvWZeM9yu&(Fq$J{1il5?P=Nl6QO0M6A1)s& z#-b+f6vhg0MJW&8$MsjhY}VF?%%?hv=hM#hLMY$TiohvX7V;Pm3QCL#YO(Z4}Z@Pqdw6of79Ekw%IfaLl(~*sIaDzfAY&~Dty)Knp*B}kSe2h zz>-LC+Zmz)jWtF78b3bbTp6Ox8LiYd1Iamo%J{Ru4&u@|U~&yca*W}X!Q|P0ynGFn zB%)n_63m1A7|1X3jqz9ccu2DKOZOd?5X4--brgxWk~60&(iKA;;PzpQ-OAjVIRTYd zR?e{9^%yG`_#8N?RuqYi8Y~if@g%1KQ?USzhvqT|6Cq5}(80z-!2&SJAq?0k2Nn72 z?TL&OgQP?->oN+~H~dA{&nRY_;IGiyG;<&io)|QX>V3`!y#rEwyY44d<7D>9m}eK- zdf2n5s^E+&KGf zO&$R%tS+w$KnHki7t=AmMyD1mPpF?=sR{h;^S~S}yxO_|df}o5s$tT=UqcsFMiM+G zqQv~e{m*bvo{)Ji&?H~|JTB#gdjCAA8k#o5aOp^}z36^CMGhu%Dn~xWPW%DrsdJ$D zWpyz8+}Xxgu|1}7ASHqEb!H?nDUB`<%xPe$5KJy-!P6zEnMvNDyz1%@MoG{LOU**O z@~eI2^>%4Fa&27$rooLqc8H~_#J7g){d#W6Vkw(b3!UShp|L#%%`}~_!wbp8lc40)wK&T1zw0rd>Pgkb9Cp` zU+fMB;{uICpTwMxoeAF`6r{AahGR^(C+9_e zUv;JE@K~NpN`*z7#l8lt8D{zFB?Rk{PE-rSfmDV;)p+IAR0hTBWU6c8KrNrqzUn$o zlYd2tOu>VaFj6>G0!~U;nb;N6iB{<48Rb{kVya$L-3TemY(Z0A$=MQ+JPT_oYB4_R z(bfTD%je2i$z~Tl45P_JUnA1f-?+yxjmZVCNU`e0IEy+=DzBf-y)1-_+MvVo0=228 z!i;_5&W9e%!T_iTEfWk~$+(aX^sl#xXtRNtfYvd5Z+=`O zFS}dg@%4rC>M&Qfy+tF?BSpW)>Q7UX{fpYb0`tPrj0UZdS<;j*z)+<_v9R*_YuEPd zokw-!34bpij)fV93CsfIz4}vddeUu zL`Q0D;F&rvII-x4RWraJu&wjddVK92Er-;D?PMn7{2^|tl)Z+@;%14X>3D)GxucY= zux=4qy7S~z!Z6PUWp%y^f0Z8v4CPAm*+Ild`Vo2MEQ%vSRfckb%oIlN36n$%^W0=LxUOCyQrCBUtouQzdRo`|sta;{@pJ!s#@ousAP&`V4k9VA98Chb9%4 zO%e`^iKl|XWf?kPtiPhZHc(sDkTKO?Gw2NTXT7m=wy#MPGQY9D9wXCaOy~%_!bMmE zU^>9VET;jML1m4zIF9&;qqeSzf1R8{Qz|MMQ#d1U(xizcqb5%(oKa9Ru`qwq_=(f$ zB#&|9Cyvb!xxwd0`{p1?n2f^HR7LN+H>0oniyG3PA!nUqWuJ=PLA=t{=g)nnG z1WIrwfx`LNQoy^DCk;-A|VB>~<`PEi*^)gZ(bVMg%(uM?O`d|1y#kf_*Um zTz~<`Y#avDI@M3CO6%a-tcL74atTaQQZ-J+G#Lwmy-yLRJ)}=COV6O-oP`jEM}Jk5 zF)QP%%-Cu$I*(Q@M@*;4AXu$aytHQgjSx<%ZAeW@prMP#S2@cts)nYHYvd`JI49Hw zFssKX$`atYjq$Ug;~(P3PKWPwHLBzF%oNOKIk}4JdfO>2#D46^A2TtOZwv5eU5#2T#|)d5l#-WHHj6=Lt0+r13a z)mq-r;7w(8852`a4DCRA`D&&%c~~64&Y+*NHRDvx9EM@2)2s@y=TI)QMcp4UtHXke zS9qLEU73G&4LWIYqhHSipgBC)l~l?m1SbASvCf`4f{V>FWX`jk08RyTF&kia`Je-y z{^~|7rlpp?`g&MHaRwSII8hD!n7!6iV3I2X6U!rj6`JvzU4z{z?XIbnT`-v~u$93s zgxL(&mDXvBThCN=G!_V(cqtHr3EXRRg6MNRcE#^eWUx7RNd>l(5bu zQX*y43G(V#0!WTJ7Ro8LMRNs3v$n)HU~_A3^{XP<^CIf23wFCUv(g3Qbir%zrnJV06x}@W{VY@MfjeIZ%i##1)_zr z6+gMY8amDA4(!s~WFe^(W7!c*^M6$aDzS4fE3d-N3I_RrY}IfS)9$m%BdcGQ_uX_nK;oL-Z(9N0C&F5v zjVEs+>k67xgxT}wa%h7T3}8yY1s5x*%P94zwCAOaSb3oXCb-@N4T)e55KanUBH5DR z@U|Oi+0KwqXmwK%_SDFP)F32munZj5DL@dIu;>i3o5{Hc_craaI9?ntxF5=^HViWj zV3N;1vl3`_N!cf8gLtxS202d0nYl0shSD}d8ZVfWtt2L0lTt9Ei3An5wZ(2LvrBqX z3!W4Z(mORAm?s4@vN|=W@dybXlzZ#YLH;R$Pbq}cTBij4%Yx|OAw^;FoFs-&7N=_C zVBR5|&;YG-v;&=#Sx_-er8!)XX{YCC>?xs)$b->N&9;?>+bIU68j@s?**aM3y0#KB zXWUARrz96r-)Abb>h%LxVX?yOvI8HKDjt4$ltc z#0m-I@a#ar{udG|$h3o*P8kx$aQGMj7PsDaQtvy7g$6l^W279y4L0T}%+}FcH6MrN z>f5~_6q{(acSx2&Enxd+$8i*;HRGgsL2b8#IojTu5fU#{YdBD-*4UAp2DBMYV=<$( zzBrs#VYpVowzHElEp_T)m&}Ll`v>|YtRAw!%$S$qq@ z7Oi10G{GbQW1cU_I55t)(DviTvfWzfHew%+WsVocsl}_EjWzs>%?>#>WH&^K)xC+& z(NUIG1>-<=^6YjB$;NdM6P<+VUn)x?MgpJa_OanaISI9qRxo>N89d0fIUz!o z9)W}FR>C|*kf+ECn{IrXHOoiyu;9a_7xPp5A`urnWW#<^ZEf`=f1S;l=&P&7`P`)P zS$a(d8(=OVQHZl%A8v57ut*>$R#t2~`EhbBS8Q;WLb&XP+kAXo!mxtff>j=<%!CkV zrq#I9!}oj&YAfXIOAh*{l$|kPz#zLLuzbdrjcUZXfz5(e)GjoKK%AKD?X+Ub^)XIZ zt~KyN#Ev|2Vh`(0(!fKy{ z;A3N0>;|8mDAcB2?qJv z9B5*(faN0E+H581tobGrEoAYC0AabY>4v3p1MkoB1qR2BEfRL~L9OZ0xN&1^^Jr`s ziPaN_5SS!hsyeF-vr-it>Na^eci-$xrbI{9KP@{BVtH2+?T~o+PXU4BxM_Q($=Pqep22iK^_}$E2u&L zXfq3=tzn(L$cG5f%m8UAzP;*un8rBX@jzwup%2d615|<<+t5c=;wuIOL45f zri`a8*i4jPb9^Lj&fJ7!oinN-7aVMMZT*CLUzLB6bUDMsmZ-fK0s#egJ9x`6pf@jg zw^Md8WdD~c^|fI$ve>&S(u#I?G_*bNh}A^OHV#?{!-2wJ9}+V#2g|vRg94^_Y)wQ` zMt@u1JtV$yhg}%siJ8^hn%admJiwsqV_w3huZc!A24p9-u8w&a#A+I(=VFM$j+#;1 z65e3s36B}1%Npz07j2AsoUk>}q0GH9 zSjz^(L2Bdp>N(C19JMAe*%(Tk!bMu?u{mq+5BbZnM;U1FS2&lT^-W5yD0e=-0$1Rd z4T^H?7O19g z5f9S1^p7@AxQJAjiF+?BF>oh?f_{x`dXXdF3yk>qOl zIIcp@-oz>M|B!pxw(#wVqYf$=V_1^omMZ%mx-1o(R>B?p@%4U8jUnh7xp5V+&;5ex zTUlE{HFC)l&o4--frcg=n9T7($Jmmh?*5v(Mp>Xxtz1In9B5HpP5A})`0*?So3()1Y&E}PdMfmi#@GibkzwgNv+4$D zA+BZ0{yWUYY?wi_;8{R^C>NgZ;`1$x%*LQMVc;ll;`5cDQrccn2(HgxdT@@XddNvt zP1C6!Fea6a6%D6)@X(2tnDZB2nD15k@L<8*Q)3xxcB%&trTicS1YKVJx1nHJal^$N z!3GmChRH}Q!%R%EpDrT?rc5$ZmBe8*%NL0&5R7jkiV$#IC%5Q>zQN~r#4z#`9wmIy z8wEv8VJ2YUc)bR#VylU(sp!kHelSiXkM3qb5xTy#I>x7oe0|bPwRzO2D90r>zAlXB zpWy_wQV|s} zJRZuODycKZA*lO2oYbM~@kV5itm7bMgRe%_};!-pnA%Kh1a&y{D z8g#ZnQF9^X0yXv-aKJjT7UL8qcIN6AM{)X4o89Fy4) zgDQr4+|?^&{l$$l*mRa4tC}8;oD#`AgRkE~C($QGyim828ZrZ!5M}93JQh}?w2{Zpr~JV(a@rPqlOO3A5buA@W7#k zMHd@0;H$T%zLi16lOauP^$eVMBk>B+6P_qCmnXL)24+&%u6j@(uqbN)7VZNp`wg`3 zvhbBnUQZbvl zxv%G-AYWg<3}BiL5o69ylWJM6x&*kH1smeSSXzL=w1K-xeq*4acAk@vHk#$wbA~~| za5uZCx*Ss>1eBVYQ*NI4h}1@5x5ZbEhYaShNfTC?&)h`Tb&)9_Y#cUEY?CKD9nixv zBo8LmNSGn%=i#8C!NoZzfIUt7pb>#YCdP(fR&77$X6%ibD@$oxcV*j>@Qu)*H8J}u z`l`0<>(~$DK_hXU2?B&p)Hi4+i@@$LA`U%$;$WCcIICzQiXcYVAkdSGkZG~m?cfyx zBm%_SIU+}%2&3(A7z?$RiaTCN(rGZX@0i+!Y>Rk0-)f+gNFwakY|ad)ygcl3jzNL2 zy@CNNs%@+Zd17NWnql&!qHGgIRy1s!bP58Iifl#H>#M~gwN^VBPI1lbN!es5$R1dD0juw*(OGybNrc3Yxym}7 zZ?fTk85Z@pl?HK$H!dTH-673K?mR7K4Ho+ra_5^DlzIaVH-PH>*yJG@srBFxGB)DQ zxepf(D}2VAg>0rjGHgh`W6Lk(=b*|lxiGh%bj5Y;CgHIV-Gk-oqP_g%lrV$mpFGUw zu`ZQcA@&$y?38n3BSY_$@{)9X4W8KunG4FW#19P_dxoAZ*LMtLA4K6IU|gwhvS*<( z)3AXvV(O=&Wnk5F0yei=yeDH^1huCPAtSrg$Y60hmeiJ;F$^}ei(vYe$YoynY(5$a zSzu#DH=`Jf12pF(7%@pXzxACjY&qG>X%0OGi);xh1_*+4=9_p_5A6yClZOR$Qb-fm zN@StWM$)+XN`b-360g*1i;}D3^kV9 z91>3_NUug+U|Z)xBNq7CtcWg{g)d*M;4MikhxJ_0#wMNoYCr7FU#C-|J?*lEW`PHO zIsd=%f_~U#ws-ApTvqM#)oDWxIR*_88$kO36Z8OvFkwiaI~}Lz0J8)ruCATMJJ`CL zhHm*vv*R(4dVhHh20Pgc#xr%TGC*<-Snrv>Yb=@W$VPd1nj+gcG8kziB|E6-!A2P& zw#w?@C~med%!VLO*8bwK#vJ$lg%93l$irDZbj>+1IxZckV6XR z3FY**{yM=csFeWgPC zm@|I#61H3tG**o7z83o$Mm05PhgMB+bZ?fRcFFCz2WKcJEm}n}`UKU%nMRsBhe0fI zK(4&yil$*>P>&50-Z0_>p`a)2tnzF^PXnCU2FitJ6lHst#bllym#D!auzY!}#GVs7 z^>8ht?j+y5I$6FU5jjnFQ9tLkbO3FoJ>!1b4=^=pq7`U|WNj#Yq zF)w&D5v)j%XUoODb1ugsQZ{3t%b>!%iIy>;7TIA=!XuMyJRNWjU+O<82F`SJRPlsx zF>b^@mXlh3}d_+*W{duz}|8KHr(0ec$~-nF;#W-HO`Td1sz^=9%Z$JTvdS z?>4tBN40F{Mvyl2KqY2s_qLk4EVJr7e`@Lin~n8cjcz(=Q)H)iXC%?0PmdomU-|7K zcj`a_aJdMuHb(&c>Fu@9R!SV_sd!#j38x6LOEEe+zV3EntQRsa?_SXHf_Z9655#$m z@P~2gQ;OA&NTyECBA7wXUyv!*cIqr(B;viZek$Y)6)DOWU;C;(9Cb=DZT`kzk*v(>z4g3%+?oT1cF<@<41j?hAT@oIOPH=w#UoB1B5Ek7WY ze~g+lU^vfvp)^XwF21YcMsGB66;F}vt zz|Gqp&H5vh^WeM1FJ8{mx@0Z`sT)#fslCKY9os`aPAhTw2)(+IPxE%Vc*~M`mfkLb z(T&Tjd7LZV2|LV3l+1H|%I3|Qqu`q+FL>^rK*^MaM&|2$Umla>a+bcN0ah#4G}EXt zIc#S95dDZdlF(UFr#F%8N{n`?r&=%J@vzDDRXsMK^NEb2A#V&FVxJer%I&>?k4gBhVx+NluPm)0T@5 z*C}$^;M$-Qt9Jn}7>(o@W16sBFoTD{GE?Ixdv)YxGg!f@F>21h1#v{$iq+g7*N^kS zMtX7{NLi5i?9wpOFzJ*u?*eV5dC~%IhFSiap}l-R4{hT6X=-PX!B>GlWqT5=bY+q^ z_Cig*1k^0Kdf&;iG5vZ^_Y7svQhNs7FWdU_T+Q*q1_P9O|O->sf<oFQeH826crGX8l zS@Cin45ohq4qt$K!pZfZ8;!G@205=j4VE^Vk(Kw6?9D*D4{=o%Z2G@Kj(d_;B4^RC z#%oFUg5cJPBI%E_Em^a}dzpSO@%Cktt>f7F^U9#+BPM^bcA6zL2I-`;m(Ao3K^L!& zuoO#=R42RkhaNz3(ABiu~oA39@DM&)OzA=_OL(P55Z!IyWQSMK+s`fPtI({E1WY_Zs;$ zWwJxf5AvoOgDH;H^Uki_Ealpn9rE9rl|+*~wyZ+)hPbDh$J6VvoI-=l8MX4gHABo< zKkzs-IGq$e=aq#$-q*+WgKajB(+rOz$4iz@C!uG_H)^i;KQ%3UM6riPF1{nPS?8mVV#MomZSMDymM4-G%dfhY ziV!r{tCZREv#l|L>reB&Jc|6T;+RY190qSgrt*h!t&uSMHOFH5$Dv=rhujU*Bu>xKVfviog;(`Nbc1}f{b9Nz;E8hne$q3rk9<4d=CF-+}!%6E< z#@iX+DJyd~QE##NMpN`*Sd9}KB6*g1`LgKc^=5T79%npu3ftQrZnq8lqKQ`5a;uS1 zcnQ}r?QD-pa4y()w70a|v~)Y^>|xqV$Ig*A8}AN#1UTs*uK1xiWb5=;CP;K)fxGFWb;hma?B(*_r}D^F{AOyz>{u8mr7-WhJPSO~u1YO`?*R zn^tAz&(y4-Os||RAsq2|<=~wAma~N$s}xcRN{ctwtJ&D>oJ$S;`3XZ@Z*ARf|Jalg9Q{WR1)~D!4Hlb22NF4VXsWt1{X=fu0{Mgh?qr$)?=v?1SXWTyh zLfVWkH$)Kco#h>*Pd{TRz%x&Xb{`=4FiQcBHWqa4{DQX?Z%vI{BA_d}IYqv~&y zW5nOQ*sd2(Q-oVv6Q`_HxzmO?I(qtU>FwfcLYx+f<1*Ak5hEwazUOTXb%8`4~J;gu{7fvsN>iwlFx@ z(?GSeRkM3}*gpo#hA}itO9w6Jv|LvBuVuS7x%?cDeD*J|w`F2ms|_H{CNp?x#Y`8N z;k{+i+cL-YF<2g19?i~Qwb@!&ru^cuLu_km%@-M$HVAfMd6(d)7Aq>ji)_#)*ip;v zIXmtv)VT=a2&Ftz3P;%X8gTQ2qH%4G))w+fes!kzEKqYmJxnaFxMYesNSjB`(~tMb zZZk;|b+e$W|4MY77yMVP%xe&*w(tUed7^pb!>d9pU5aF8niR&IW#675mkKFgXy zQf*&rvR>B=^XpPjK881I4_XbqVAD3dEIwd26#W*jiy#~v9NehdrF-#|0J%f!7h(Bj z^Jv`~M)|p!!BS6v&z|)JcN&-`IX?i+8nmVje=1$;cLun=i%!(lHf-_ z);IG%PEB2ZM)%StzRB*roAa=m@!fWs;s>`+5TDhT-`YhoZto$6VdsAED|VKq`wc~H zd-+>8ilXJ4wWlFHS9C;NjF;vyAljIVT06ODFQQd5ghrwn*lkEE>XF5$wJUcqyvk(> zDpfqC4O~abgl*v?S^4nV8hy}5XhThyg5EiBx&12BCkv9LX;aMP8&|fJ^t*^xIMi=2 zsD4iYuT(eK#1q-0>36sPgvqX>`e*TXT6;)`h?A+0%g|(byN%_O8F&Gi>2C-xxu5hj ze*rfJ-1fW4@8Ks6AI8e3NhJj{c#592wsG_45RjU8W=ybFHPII65LCt?gZrE7#jhrq z)sh8I5P?VIln=C<#cQJN>mfVlXd^LLEpA+b_QpNKU_d^sr8KV7KlyMl?yw^IVI9AnP_Uxly^==ftTQYTYfeU?7rsqzB?-?Y73Ms9viK>0H3A6zPt< ztz=cV=lrDg=i-c7L0Mm19}Uu-rTdlvpYG46x3|y$ABJjitc$I=^6VAz2#Lr{tztNBHYE4*MIm+pN~EkhuLEe3tFH z7&z#Uj}-dSPc!R(9(;{+rrCXrUY_Hlh*s+?w-4a;#jn1^=ji6MTh};mB@bhEH)4(7 zid4KTeJT-=cs(51h*wMC*|{4&IDeoU#EomSrAK0>$LtvW{)}6{%Fk$z zT9TF)$+xLQK1*CX58tEOXr)Z9nRtUc}fsEhWX zn(^_w=(cy)T9jGuH@UpE!&0$wnfXi{(rqty^uWcX@kmrQP>#i6qP3)XF@MN%-QT+9 z)_d=#7)k9WSpPn7`lBJ}%-9$;nt$V~d)?v_uN1>eg9WeEuJZBSY-`P%4!0>)TaPz3 z`?3Ggdb`T&#&UOR+O6B_^E1LkN16KmU8DeIk z*sK@#jT~p#(7LbJx(^I*pIV+4IGvKzBn90%(;AvHZ&v!6Q}9j8T+@CGmNk*I<5IJ$ z$}M~8Jsug!mpU#*M`U8MoRQCpEX~=Yc<<%ucbMWUT)%^)JxjHZU=^!)U6XaY8Qa|f z)68M|kFkz;iqAm~%^Wah=P%a3>DP{{pq*C zh1@=a>2q481hj!wX*9v)f=XqKsV7}0ZC)z7q3YTVU>Cr6G)|@Y0 z`ik{qH9FTwwgl8<iqB>F4gIWJx}T%KvTBY&H1|@27>N4S(F)$# zf>$whn`s?^b{txvnz6^AR!2Q(ZKaipb|B1#rK#Vu1YC134RFkqUMh;puh5hBGJXYI zM9@P^_vSoI19Y#nuQsb?k0NUu;l^+@Q_=>4u{0Ns)LUy7jUQ+-JL0`*{#sUFU+{g&3u(ooHRDnE zsso~B_N;uYJ6kJ_C~)+*(6N5$=s;Mt0wBg4yL-Rd-E*9pz_a;SW}l_2hG9!{KaIXf zmZK>1D3~s&$Afq8F&e2Gz3$~UV%Ux3eO!R9jyLxouXnrLoEnFJI<)6x(@5bjLQ^x| zc%RU;qnW0?&>VSo*@(2Tk-O#*&l%5W4_CHFsXw-T*5BXIkz^g$)rlCW$t$kci4t)@ zzTB+Z12tMt`<~#zP&3W$7_9Dq$P;Pp`51V#lL~Y_9`P6=TJPGfMO*fPQ?a~sO0!L4 zOk*}SQx(lyaZ8a5n;|`Az6V7FIs@b9y~g$j;gw2!#MsJ@c&(tt7k}W{Y-;XZ&~7KH z1$IL_Sl_RsLvgNY;njYNbIE&dJDc%(eK-J}ZihiSp@`^+jV9;FNtVs+mRdKem0}9b z9L!0}yz911Y{TN1k8FpU^q^gA8?^9of6Z@BHJo5E{XSl)#nS6OuBX7>#r3o_YNRMJ z175fM=@`3)I_R%-zufiJeBWGiRJ3pE_6W2l)9TmlGRm{b60}e0>v?UA>=^$LkHfSE zmM&->jG|SyuRpn(5W9j$2WCk84)7wlcrmZmo2QzM|76jnsPX z=#dQ{i#y&lb0M(O@^}QJST#O!^Q%!58r^Z90n+it?PE!2mp&)ycC7t=w(h7Mw!LT! zjTFj9DcTW5$YhPK++Z+W_OVtz z!v4f@+k;USRIy*(_hhpD5xZYm7);=I>;k4Ti zG;7;yN*S!0dxH(_>xZcQjQKRUYH-Gsi?1BM`p)0%{`KF!_PM?{2mirj{^VD_e0*^G zyDw+{{f~d^m;U5~Cod5UoT|I{rruW)8Xqt@LdbTuB-L2ntCv-Js=5h^{-h>lV*-3w>SX?__C`uiOr+yBOZ~M0cM6i#UUl z=|h40&>^_v6zaWl7334S1SyIEpTePBIFxz)k!Su@{$|g^a3QR`5A)xL@)MG5ctSL+Od-+}sRxxn z=p7|LwLH9Id3Z-0$7uh1A0DvsJ>_IyvW&k-p}-~u7fgzgm{hltw33Vx4o#UD;uBuYaxVmu4 zXC|Ha{{l4i+)Ip4-h^2Vf)4S;^!}m6`yt415Y>QhzPcQq4*{rV z1wcxpY8ISfvxgmMXJJvL- z!(73kJG9P))7^MNzHp(I)E$}^t9C>u9Y<6ms9KoZIK`U?9Ja2UmgkpZTq$Ib6V>Cw` zVI9+GI8wtqMw_s@hte8qE<{pwPdMUOvPWOSK!?XNh{HmsZ6+K+wT?Ns-Iec{2QZ|H zG5-!*>XwV=`tXslVdfAfk-+@u$=?66`Okkd^|Pz5 zTpPMH^-lJ`{rcNn+?V+AZ@l`WFZ|i`;lKOW5B)Up#8U?!FTT`!YTdW8 zzqj+@`~PbA_}?f0@&|wXYoETcZtWjgT^LE5ApDXzo=zxalTfSGWID+4$@HYV!fYZu zmI$4?Ro>`J6Ved}Oxr@Mb5q6e;>vU;L$F3Jya;^Qmr4gVyh`9A5#?@8^zxRZWHW_( z(tVi>Nbrn`l&)-zgMRI@?`1?+J&zKpaJbk^NNMbLL|I!EXD z;vV9}Y)@Y}Su9vWtfpkUAgB6m5l<~2jmY+9a}2d0g0tDcr1TCSoL@Rf^qNFiea-#P zz@{o{@?EPTZ;&U1qK%S7Cef8nW)h0>M%7d0YWF}`eKW}MRf`c<8R>tJui79ctbWgp z;``k+gwkF{UU?;8dM5dTj$dD^0yVI#mE}>vGDFPD7OuCCG zkx|L$PGk+1SbZa3eLs^{K@Bre5Ka>yWr#D=U8EUk7RC%? z7GjjASP&z-O%hdr2i;shNMR9wA8l87?QlGyB9%D!bGZh{N(+zg?bv~rV*@LVFnmz7klh)a!{Kq1Gd!>1X& zH<}ZWnLwWi-CUZZQ=wP-w#dJtf#hVGb7(J$EDKxMm`@X!eUKx}lTI&ewB`AQVMIzi z0-MAhoFGIgZq4NiX+i;we=xl=Tp(JR6Fv4{xPS+(CVaqn&B}IRET7IYwOF{C#fo)A z&p2v*!F<&Cy8E9%d&wmdR$;GmnNpCPzzC6#fOO?}pA6G0)NzqNWPq;ZRKsPm7fwEn zdK8lsp`@5u77T*5W(VtJd^uDGi!3Jd3tz}czm$ipL@vK@%!=(MU~m==5;4QZdse{t z`CK^f+ys$4u8HzFc%KR9AeWRbB=}nv1JQ9({DPyIB%@OxY&#br@S$SU>*yvm*U?Q2 za$U+=P>D3&&N%ypv^ttXZu>2Fs;-+G{S0;*4oubjt6bD1u`(SHlq^iIKhvntQZbSSVz0bqgRL5y3*@cgYoc5SFSc@8giV z!i6`&g*VZ$Y`RMdSCqCv^&KIo{FDp`<(1K#Vu30JumD_CGG#%lHhszJ(H#|^v;{vT zO8_ZnUd^TXI!T7k?Ki?fd61V?jQqk|ES7riO|R&Ywl0k3`lzAQYHqP$>6}6ZPzrQE zoVV@LP=)Fx!v~nKr!_B7{yLsSzH8no)c2W@bD5+i=))9;Cz95-7*K6Lr8;1xeBF8s z=P8L?H>3y9r?;`yD!xUrEIMN|cp!Dox>v;fi?po-_PT)hN4=xd`YdS@a=3xk0s`1g z<$xq-0p78_-_C7He}W>RS-3^zEfCqv?OeuQdA!9Wfr@m8=o(HFQj=Cbu*wBtAK2Mm z?1BuJw@N!0F1)V*nkW--T$2%n3wOw&qWF)ua(3$c59F9p(3g*_*8Gfoelegw43aIZ zAaJ3{0y@EX-nKTq*o6~<+{G-;E0O3!(V5S7XL2q&u?FrO5bmx^Hihfz(pOiJ?H8uz zuKskEaXp=plM`1h3AZd~ZV}c)&-GQBZmuE?xFP-vOjcGM&h@7=2%*Rv<9gKSs~ID8e`^1RCILpQ_Z6yIFUSkt)y7hPC0!bs##2ANzIK4RZQE~C1UVG#3-U~+adiA9JN z>_+Afux-?TQH}ZKP&eX2E1JbYi_LxI7uVS<>#>6T;_xbin5`0Y55V z$GXa@9)?u8ZRNYiMrb1jHge7Y?~U!0IYDz~i$-DDE8g;N7*v3!&Y21trM zUMv>+ArJhv3nIBboUEE^aVX3-;!wPyfA9pZfGxi`-DBgE8!ELXvB!3DF`w?vFV5F6 zE)w|KCC)L3E>PZOL*9D=9ylv+;lKL@h}rYJEhiW7{FmOaU7opghUH6Oy6mMfm1}{i z{BiwfF-i}PZ!GcaZrg^oZ5`fL(hDegqi*StUX)($>uC$Ob$jVaz2UU<#d3-F&^AB6N{ZpsTPE4LFjh9PDFVAc)jh&mkGC5TmE0>PX@Z!R`*_r3t;oC~TTep=Co#odo zE|kVEO-!8ujQ0eW>?>SnOT1cHuj)O`-O5h}W}O{HX==7KQJV9=-%*-*wiFxe%E0t) zD}TDYy*#}Ap&i_@V0ECqDPw*~E8wGvPv{q>4(NyRYA;adwSzO4XM?#rmZ28(-zZR<2Ra<+ zaG=A14hK3M=y0IJfer^c9QfzsKwxxc=w4R&jX1ULH9EZ4QZBeXd`_5z`Bq9-?%%gk z+sPcS9jDyQkjcoG>KX4^J zpD`<9uuX?isn@00ItjS#T9yulOA~0t3PyT zc!HX9T#sA0qd?8r`Z3$T4v|h#J7#N-Q|DeDp+}Tw%=62pZ)R<2Ra<+aG=A14hQ~!JL thbQkk|2iD#aG=A14hK3M=y0IJfer^c9O!VM!+{P5IvnV5;Qvhy{9o|9U;zLC diff --git a/src/NUnitTestAdapterTests/ProjectTests.cs b/src/NUnitTestAdapterTests/ProjectTests.cs index b116136..01eddb7 100644 --- a/src/NUnitTestAdapterTests/ProjectTests.cs +++ b/src/NUnitTestAdapterTests/ProjectTests.cs @@ -38,14 +38,14 @@ public void ThatTheReferenceToMicrosoftTestObjectModelPointsToVS2012Version() } [Test] - public void ThatAdapterReferencesThe264VersionOfFramework() + public void ThatAdapterReferencesThe271VersionOfFramework() { var dir = Directory.GetCurrentDirectory(); var assembly = Assembly.LoadFrom(dir + "/NUnit.VisualStudio.TestAdapter.dll"); var refNames = assembly.GetReferencedAssemblies().Where(ass => ass.Name == "nunit.core").ToList(); Assert.IsTrue(refNames != null && refNames.Count() == 1, "No reference to Microsoft.VisualStudio.TestPlatform.ObjectModel found"); var nunitVersion = refNames[0].Version; - Assert.IsTrue(nunitVersion.Major == 2 && nunitVersion.Minor == 6 && nunitVersion.Build == 4, "nunit must be of version 2.6.4"); + Assert.IsTrue(nunitVersion.Major == 2 && nunitVersion.Minor == 7 && nunitVersion.Build == 1, "nunit must be of version 2.7.1"); } [Test] @@ -64,6 +64,6 @@ public void ThatAllDllsUsedAreNetFramework35() } } - + } }