From 6ee2ae5ee2deef5aa8da8df031a904b0787fabfe Mon Sep 17 00:00:00 2001 From: sbohlen Date: Fri, 24 Sep 2010 21:27:51 +0000 Subject: [PATCH] SPRNET-1372 Initial support for native .NET 4 compilation introduced --- Spring.build | 4 +- .../net/4.0/Castle.DynamicProxy.dll | Bin 0 -> 77824 bytes .../net/4.0/Castle.DynamicProxy.license.txt | 13 + .../net/4.0/Castle.DynamicProxy.xml | 687 + lib/NHibernate12/net/4.0/Iesi.Collections.dll | Bin 0 -> 32768 bytes .../net/4.0/Iesi.Collections.license.txt | 9 + lib/NHibernate12/net/4.0/Iesi.Collections.xml | 1887 + lib/NHibernate12/net/4.0/NHibernate.dll | Bin 0 -> 1101824 bytes .../net/4.0/NHibernate.license.txt | 460 + lib/NHibernate12/net/4.0/NHibernate.xml | 29887 ++++++++++++ lib/NHibernate12/net/4.0/log4net.dll | Bin 0 -> 270336 bytes lib/NHibernate12/net/4.0/log4net.xml | 28655 +++++++++++ lib/NHibernate20/net/4.0/Castle.Core.dll | Bin 0 -> 73728 bytes lib/NHibernate20/net/4.0/Castle.Core.xml | 3176 ++ .../net/4.0/Castle.DynamicProxy.license.txt | 13 + .../net/4.0/Castle.DynamicProxy2.dll | Bin 0 -> 106496 bytes .../net/4.0/Castle.DynamicProxy2.xml | 688 + lib/NHibernate20/net/4.0/Iesi.Collections.dll | Bin 0 -> 32768 bytes .../net/4.0/Iesi.Collections.license.txt | 9 + lib/NHibernate20/net/4.0/Iesi.Collections.xml | 1887 + lib/NHibernate20/net/4.0/NHibernate.dll | Bin 0 -> 1638400 bytes .../net/4.0/NHibernate.license.txt | 460 + lib/NHibernate20/net/4.0/NHibernate.xml | 36622 ++++++++++++++ lib/NHibernate20/net/4.0/log4net.dll | Bin 0 -> 270336 bytes lib/NHibernate20/net/4.0/log4net.license.txt | 201 + lib/NHibernate20/net/4.0/log4net.xml | 28655 +++++++++++ lib/NHibernate21/net/4.0/Antlr3.Runtime.dll | Bin 0 -> 116736 bytes lib/NHibernate21/net/4.0/Iesi.Collections.dll | Bin 0 -> 32768 bytes .../net/4.0/Iesi.Collections.license.txt | 9 + lib/NHibernate21/net/4.0/Iesi.Collections.xml | 1903 + .../net/4.0/LinFu.DynamicProxy.dll | Bin 0 -> 20992 bytes .../net/4.0/NHibernate.DomainModel.dll | Bin 0 -> 180224 bytes lib/NHibernate21/net/4.0/NHibernate.Test.dll | Bin 0 -> 3289088 bytes lib/NHibernate21/net/4.0/NHibernate.dll | Bin 0 -> 2129920 bytes .../net/4.0/NHibernate.license.txt | 460 + lib/NHibernate21/net/4.0/NHibernate.xml | 40555 ++++++++++++++++ lib/NHibernate21/net/4.0/log4net.dll | Bin 0 -> 270336 bytes lib/NHibernate21/net/4.0/log4net.license.txt | 201 + lib/NHibernate21/net/4.0/log4net.xml | 28655 +++++++++++ lib/NHibernate30/net/4.0/Antlr3.Runtime.dll | Bin 0 -> 117760 bytes lib/NHibernate30/net/4.0/Common.Logging.dll | Bin 0 -> 28672 bytes lib/NHibernate30/net/4.0/Iesi.Collections.dll | Bin 0 -> 32768 bytes .../net/4.0/Iesi.Collections.license.txt | 9 + lib/NHibernate30/net/4.0/NHibernate.dll | Bin 0 -> 2699264 bytes .../net/4.0/NHibernate.license.txt | 460 + .../net/4.0/Remotion.Data.Linq.dll | Bin 0 -> 250880 bytes lib/NHibernate30/net/4.0/log4net.dll | Bin 0 -> 270336 bytes lib/NHibernate30/net/4.0/log4net.license.txt | 201 + lib/Net/4.0/Apache.NMS.ActiveMQ.dll | Bin 0 -> 479232 bytes lib/Net/4.0/Apache.NMS.ActiveMQ.pdb | Bin 0 -> 2641408 bytes lib/Net/4.0/Apache.NMS.ActiveMQ.xml | 7961 +++ lib/Net/4.0/Apache.NMS.dll | Bin 0 -> 73728 bytes lib/Net/4.0/Apache.NMS.pdb | Bin 0 -> 185856 bytes lib/Net/4.0/Apache.NMS.xml | 2654 + lib/Net/4.0/Common.Logging.dll | Bin 0 -> 28672 bytes lib/Net/4.0/DotNetMock.Framework.dll | Bin 0 -> 45056 bytes lib/Net/4.0/DotNetMock.dll | Bin 0 -> 61440 bytes lib/Net/4.0/EULA.rtf | 522 + lib/Net/4.0/NUnitAsp.dll | Bin 0 -> 180224 bytes lib/Net/4.0/NUnitAspEx.dll | Bin 0 -> 45056 bytes lib/Net/4.0/NUnitAspEx.xml | 139 + lib/Net/4.0/NVelocity.dll | Bin 0 -> 286720 bytes lib/Net/4.0/NVelocity.pdb | Bin 0 -> 931328 bytes lib/Net/4.0/Quartz.dll | Bin 0 -> 438272 bytes lib/Net/4.0/Quartz.xml | 17105 +++++++ lib/Net/4.0/Rhino.Mocks.dll | Bin 0 -> 259584 bytes lib/Net/4.0/Rhino.Mocks.xml | 8127 ++++ lib/Net/4.0/nunit.core.dll | Bin 0 -> 139264 bytes lib/Net/4.0/nunit.core.interfaces.dll | Bin 0 -> 57344 bytes lib/Net/4.0/nunit.framework.dll | Bin 0 -> 135168 bytes lib/Net/4.0/nunit.framework.xml | 10228 ++++ src/Spring/Spring.Core/AssemblyInfo.cs | 4 + .../Spring.Messaging.Nms.build | 1 + .../Spring.Messaging/Spring.Messaging.build | 1 + .../Spring.Scheduling.Quartz.build | 1 + .../Spring.Services/Spring.Services.build | 4 +- .../Spring.Template.Velocity.build | 1 + src/Spring/Spring.Web/AssemblyInfo.cs | 3 + .../Spring.Aop.Tests/Spring.Aop.Tests.build | 2 + .../Spring.Core.Tests.2010.csproj | 1 + .../Spring.Core.Tests/Spring.Core.Tests.build | 6 + .../Spring.Data.Integration.Tests.build | 1 + ...ng.Data.NHibernate.Integration.Tests.build | 1 + .../Spring.Data.NHibernate.Tests.build | 1 + ....Data.NHibernate20.Integration.Tests.build | 1 + .../Spring.Data.NHibernate20.Tests.build | 1 + ....Data.NHibernate21.Integration.Tests.build | 1 + .../Spring.Data.NHibernate21.Tests.build | 1 + ....Data.NHibernate30.Integration.Tests.build | 1 + .../Spring.Data.NHibernate30.Tests.build | 1 + .../Spring.Data.Tests/Spring.Data.Tests.build | 1 + ...ring.Messaging.Ems.Integration.Tests.build | 1 + .../Spring.Messaging.Ems.Tests.build | 1 + ...ring.Messaging.Nms.Integration.Tests.build | 2 + .../Spring.Messaging.Nms.Tests.build | 1 + .../Spring.Messaging.Tests.build | 1 + ....Scheduling.Quartz.Integration.Tests.build | 1 + .../Spring.Scheduling.Quartz.Tests.build | 1 + .../Spring.Services.Tests.build | 1 + .../Spring.Template.Velocity.Tests.build | 1 + .../Spring.Testing.Microsoft.Tests.build | 1 + .../Spring.Testing.NUnit.Tests.build | 1 + .../Spring.Web.Tests/Spring.Web.Tests.build | 1 + .../Web/Support/PageHandlerFactoryTests.cs | 4 +- 104 files changed, 252548 insertions(+), 5 deletions(-) create mode 100644 lib/NHibernate12/net/4.0/Castle.DynamicProxy.dll create mode 100644 lib/NHibernate12/net/4.0/Castle.DynamicProxy.license.txt create mode 100644 lib/NHibernate12/net/4.0/Castle.DynamicProxy.xml create mode 100644 lib/NHibernate12/net/4.0/Iesi.Collections.dll create mode 100644 lib/NHibernate12/net/4.0/Iesi.Collections.license.txt create mode 100644 lib/NHibernate12/net/4.0/Iesi.Collections.xml create mode 100644 lib/NHibernate12/net/4.0/NHibernate.dll create mode 100644 lib/NHibernate12/net/4.0/NHibernate.license.txt create mode 100644 lib/NHibernate12/net/4.0/NHibernate.xml create mode 100644 lib/NHibernate12/net/4.0/log4net.dll create mode 100644 lib/NHibernate12/net/4.0/log4net.xml create mode 100644 lib/NHibernate20/net/4.0/Castle.Core.dll create mode 100644 lib/NHibernate20/net/4.0/Castle.Core.xml create mode 100644 lib/NHibernate20/net/4.0/Castle.DynamicProxy.license.txt create mode 100644 lib/NHibernate20/net/4.0/Castle.DynamicProxy2.dll create mode 100644 lib/NHibernate20/net/4.0/Castle.DynamicProxy2.xml create mode 100644 lib/NHibernate20/net/4.0/Iesi.Collections.dll create mode 100644 lib/NHibernate20/net/4.0/Iesi.Collections.license.txt create mode 100644 lib/NHibernate20/net/4.0/Iesi.Collections.xml create mode 100644 lib/NHibernate20/net/4.0/NHibernate.dll create mode 100644 lib/NHibernate20/net/4.0/NHibernate.license.txt create mode 100644 lib/NHibernate20/net/4.0/NHibernate.xml create mode 100644 lib/NHibernate20/net/4.0/log4net.dll create mode 100644 lib/NHibernate20/net/4.0/log4net.license.txt create mode 100644 lib/NHibernate20/net/4.0/log4net.xml create mode 100644 lib/NHibernate21/net/4.0/Antlr3.Runtime.dll create mode 100644 lib/NHibernate21/net/4.0/Iesi.Collections.dll create mode 100644 lib/NHibernate21/net/4.0/Iesi.Collections.license.txt create mode 100644 lib/NHibernate21/net/4.0/Iesi.Collections.xml create mode 100644 lib/NHibernate21/net/4.0/LinFu.DynamicProxy.dll create mode 100644 lib/NHibernate21/net/4.0/NHibernate.DomainModel.dll create mode 100644 lib/NHibernate21/net/4.0/NHibernate.Test.dll create mode 100644 lib/NHibernate21/net/4.0/NHibernate.dll create mode 100644 lib/NHibernate21/net/4.0/NHibernate.license.txt create mode 100644 lib/NHibernate21/net/4.0/NHibernate.xml create mode 100644 lib/NHibernate21/net/4.0/log4net.dll create mode 100644 lib/NHibernate21/net/4.0/log4net.license.txt create mode 100644 lib/NHibernate21/net/4.0/log4net.xml create mode 100644 lib/NHibernate30/net/4.0/Antlr3.Runtime.dll create mode 100644 lib/NHibernate30/net/4.0/Common.Logging.dll create mode 100644 lib/NHibernate30/net/4.0/Iesi.Collections.dll create mode 100644 lib/NHibernate30/net/4.0/Iesi.Collections.license.txt create mode 100644 lib/NHibernate30/net/4.0/NHibernate.dll create mode 100644 lib/NHibernate30/net/4.0/NHibernate.license.txt create mode 100644 lib/NHibernate30/net/4.0/Remotion.Data.Linq.dll create mode 100644 lib/NHibernate30/net/4.0/log4net.dll create mode 100644 lib/NHibernate30/net/4.0/log4net.license.txt create mode 100644 lib/Net/4.0/Apache.NMS.ActiveMQ.dll create mode 100644 lib/Net/4.0/Apache.NMS.ActiveMQ.pdb create mode 100644 lib/Net/4.0/Apache.NMS.ActiveMQ.xml create mode 100644 lib/Net/4.0/Apache.NMS.dll create mode 100644 lib/Net/4.0/Apache.NMS.pdb create mode 100644 lib/Net/4.0/Apache.NMS.xml create mode 100644 lib/Net/4.0/Common.Logging.dll create mode 100644 lib/Net/4.0/DotNetMock.Framework.dll create mode 100644 lib/Net/4.0/DotNetMock.dll create mode 100644 lib/Net/4.0/EULA.rtf create mode 100644 lib/Net/4.0/NUnitAsp.dll create mode 100644 lib/Net/4.0/NUnitAspEx.dll create mode 100644 lib/Net/4.0/NUnitAspEx.xml create mode 100644 lib/Net/4.0/NVelocity.dll create mode 100644 lib/Net/4.0/NVelocity.pdb create mode 100644 lib/Net/4.0/Quartz.dll create mode 100644 lib/Net/4.0/Quartz.xml create mode 100644 lib/Net/4.0/Rhino.Mocks.dll create mode 100644 lib/Net/4.0/Rhino.Mocks.xml create mode 100644 lib/Net/4.0/nunit.core.dll create mode 100644 lib/Net/4.0/nunit.core.interfaces.dll create mode 100644 lib/Net/4.0/nunit.framework.dll create mode 100644 lib/Net/4.0/nunit.framework.xml diff --git a/Spring.build b/Spring.build index 23ed684e..5e8aa6c2 100644 --- a/Spring.build +++ b/Spring.build @@ -472,7 +472,7 @@ Commandline Examples: - + @@ -1187,7 +1187,7 @@ Commandline Examples: - + diff --git a/lib/NHibernate12/net/4.0/Castle.DynamicProxy.dll b/lib/NHibernate12/net/4.0/Castle.DynamicProxy.dll new file mode 100644 index 0000000000000000000000000000000000000000..3feebda14e2eac50e883914b2a41a3f17a89a078 GIT binary patch literal 77824 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 literal 0 HcmV?d00001 diff --git a/lib/NHibernate12/net/4.0/Castle.DynamicProxy.license.txt b/lib/NHibernate12/net/4.0/Castle.DynamicProxy.license.txt new file mode 100644 index 00000000..b7530910 --- /dev/null +++ b/lib/NHibernate12/net/4.0/Castle.DynamicProxy.license.txt @@ -0,0 +1,13 @@ +Copyright 2004-2005 Castle Project - http://www.castleproject.org/ + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/lib/NHibernate12/net/4.0/Castle.DynamicProxy.xml b/lib/NHibernate12/net/4.0/Castle.DynamicProxy.xml new file mode 100644 index 00000000..4afaa733 --- /dev/null +++ b/lib/NHibernate12/net/4.0/Castle.DynamicProxy.xml @@ -0,0 +1,687 @@ + + + + Castle.DynamicProxy + + + + + Summary description for ReferenceExpression. + + + + + Summary description for Expression. + + + + + Summary description for IEmitter. + + + + + Summary description for ArgumentReference. + + + + + Summary description for TypeReference. + + + + + Summary description for Reference. + + + + + Summary description for AssignArrayStatement. + + + + + Summary description for Statement. + + + + + Summary description for AssignStatement. + + + + + Summary description for BinaryExpression. + + + + + Summary description for ConditionExpression. + + + + + Summary description for ConstructorInvocationExpression. + + + + + Summary description for ConvertExpression. + + + + + Summary description for ExpressionStatement. + + + + + Summary description for FieldReference. + + + + + Summary description for FixedReference. + + + + + Summary description for GotoStatement. + + + + + Wraps a reference that is passed ByRef and provides indirect load/store facilities. + + + + + Summary description for LabelReference. + + + + + Summary description for LoadRefArrayElementExpression. + + + + + Summary description for LocalReference. + + + + + Summary description for LockBlockExpression. + + + + + Summary description for MarkBranchStatement. + + + + + Summary description for MethodInvocationExpression. + + + + + Summary description for MethodPointerExpression. + + + + + Summary description for MethodTokenExpression. + + + + + Summary description for NewArrayExpression. + + + + + Summary description for NewInstanceExpression. + + + + + Summary description for NopStatement. + + + + + Summary description for NullExpression. + + + + + Summary description for PopValueFromStackStatement. + + + + + Summary description for ReferenceExpression. + + + + + Summary description for ReferencesToObjectArrayExpression. + + + + + Summary description for ReturnReferenceExpression. + + + + + Summary description for ReturnStatement. + + + + + Summary description for SelfReference. + + + + + Summary description for TypeTokenExpression. + + + + + Summary description for VirtualMethodInvocationExpression. + + + + + Summary description for ArgumentsUtil. + + + + + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + + + + + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + + + + + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + + + + + Summary description for OpCodeUtil. + + + + + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + + + + + + + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + + + + + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + + + + + + + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + + + + + + + Summary description for AbstractCodeBuilder. + + + + + Summary description for AbstractEasyType. + + + + + Summary description for ConstructorCodeBuilder. + + + + + Summary description for ConstructorCollection. + + + + + Summary description for EasyCallable. + + + + + Summary description for EasyNested. + + + + + Summary description for EasyConstructor. + + + + + Summary description for IEasyBuilder. + + + + + Summary description for EasyDefaultConstructor. + + + + + Summary description for EasyEvent. + + + + + Summary description for EasyMethod. + + + + + Summary description for EasyProperty. + + + + + Summary description for EasyRuntimeConstructor. + + + + + Summary description for EasyRuntimeMethod. + + + + + Summary description for EasyType. + + + + + Summary description for EventsCollection. + + + + + Summary description for MethodCodeBuilder. + + + + + Summary description for MethodCollection. + + + + + Summary description for NestedTypeCollection. + + + + + Summary description for PropertiesCollection. + + + + + Summary description for Set. + + + + + Summary description for BaseCodeGenerator. + + + + + Holds instance fields which points to delegates instantiated + + + + + MethodInfo => Callable delegate + + + + + Generates one public constructor receiving + the instance and instantiating a hashtable + + + Should be overrided to provided specific semantics, if necessary + + + + + Common initializatio code for the default constructor + + + + + + + + + + + + + + + Iterates over the interfaces and generate implementation + for each method in it. + + Type class + if true, we inspect the + type for implemented interfaces + + + + Naive implementation, but valid for long namespaces + Works by using only the last piece of the namespace + + + + + Gets the name of a type, taking into consideration nested types. + + + + + Generate property implementation + + + + + + Generates implementation for each method. + + + + + + + Writes the method implementation. This + method generates the IL code for property get/set method and + ordinary methods. + + The method to implement. + being constructed. + + + + + + + + + Summary description for ClassProxyGenerator. + + + + + Generates one public constructor receiving + the instance and instantiating a hashtable + + + + + Summary description for InterfaceProxyGenerator. + + + + + From an interface method (abstract) look up + for a matching method on the target + + + + + + + Generates one public constructor receiving + the instance and instantiating a HybridCollection + + + + + Summary description for ModuleScope. + + + + + Avoid leaks caused by non disposal of generated types. + + + + + Keep track of generated types + + + + + Used to lock the module builder creation + + + + + Summary description for ProxyGenerationException. + + + + + Summary description for DefaultProxyBuilder. + + + + + Summary description for IProxyBuilder. + + + + + Summary description for GeneratorContext. + + + + + Checks if the method has the same signature as a method that was marked as + one that should generate a new vtable slot. + + + + + The implementor of IObjectReference responsible for + the deserialization and reconstruction of the proxy object + + + + + Proceed with, manipulate or find more information about the call that + is being intercepted + + + + + Proceed with the call that was intercepted. + + The arguments that will be passed onto the method. + The argument returned from the method. + + + + Get the dynamic proxy that intercepted this call. + + + + + Get or set target that will be invoked when Process() is called. + + + Changing InvocationTarget only effects this call. Any call made after + this will invoke the original target of the proxy. + + + + + Get the method that is being invoked. + + + + + Get the method on the target object that is being invoked. + + + + + + + + + + Handles the deserialization of proxies. + + + + + Usefull for test cases + + + + + Summary description for AssertUtil. + + + + + + + + + + + + + + + + + + + + + + + + + + + Generates a Java style proxy. This overrides the .Net proxy requirements + that forces one to extend MarshalByRefObject or (for a different purpose) + ContextBoundObject to have a Proxiable class. + + + The should be used to generate a class + implementing the specified interfaces. The dynamic implementation will + only calls the internal instance. + + + Please note that this proxy implementation currently doesn't not supports ref and out arguments + in methods. + Also note that only virtual methods can be proxied in a class. + + + + MyInvocationHandler interceptor = ... + ProxyGenerator generator = new ProxyGenerator(); + IInterfaceExposed proxy = + generator.CreateProxy( new Type[] { typeof(IInterfaceExposed) }, interceptor ); + + + + + + Generates a proxy implementing all the specified interfaces and + redirecting method invocations to the specifed interceptor. + + Interface to be implemented + instance of + The proxy target. + Proxy instance + + + + Generates a proxy implementing all the specified interfaces and + redirecting method invocations to the specifed interceptor. + + Array of interfaces to be implemented + instance of + The proxy target. + Proxy instance + + + + + + + + + The proxy target. + + + + + + + + + + The proxy target. + + + + + Summary description for StandardInterceptor. + + + + + + + + + + + + diff --git a/lib/NHibernate12/net/4.0/Iesi.Collections.dll b/lib/NHibernate12/net/4.0/Iesi.Collections.dll new file mode 100644 index 0000000000000000000000000000000000000000..c4cc037332c1262f509399c243ce549aad874db2 GIT binary patch literal 32768 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 Hvk3fecdo{v literal 0 HcmV?d00001 diff --git a/lib/NHibernate12/net/4.0/Iesi.Collections.license.txt b/lib/NHibernate12/net/4.0/Iesi.Collections.license.txt new file mode 100644 index 00000000..66c4a8dc --- /dev/null +++ b/lib/NHibernate12/net/4.0/Iesi.Collections.license.txt @@ -0,0 +1,9 @@ +Copyright © 2002-2004 by Aidant Systems, Inc., and by Jason Smith. + +Copied from http://www.codeproject.com/csharp/sets.asp#xx703510xx that was posted by JasonSmith 12:13 2 Jan '04 + +Feel free to use this code any way you want to. As a favor to me, you can leave the copyright in there. You never know when someone might recognize your name! + +If you do use the code in a commercial product, I would appreciate hearing about it. This message serves as legal notice that I won't be suing you for royalties! The code is in the public domain. + +On the other hand, I don't provide support. The code is actually simple enough that it shouldn't need it. diff --git a/lib/NHibernate12/net/4.0/Iesi.Collections.xml b/lib/NHibernate12/net/4.0/Iesi.Collections.xml new file mode 100644 index 00000000..587094a3 --- /dev/null +++ b/lib/NHibernate12/net/4.0/Iesi.Collections.xml @@ -0,0 +1,1887 @@ + + + + Iesi.Collections + + + + +

DictionarySet is an abstract class that supports the creation of new Set + types where the underlying data store is an IDictionary instance.

+ +

You can use any object that implements the IDictionary interface to hold set data. + You can define your own, or you can use one of the objects provided in the Framework. + The type of IDictionary you choose will affect both the performance and the behavior + of the Set using it.

+ +

To make a Set typed based on your own IDictionary, simply derive a + new class with a constructor that takes no parameters. Some Set implmentations + cannot be defined with a default constructor. If this is the case for your class, + you will need to override Clone() as well.

+ +

It is also standard practice that at least one of your constructors takes an ICollection or + an ISet as an argument.

+
+
+ +

A collection that contains no duplicate elements. This class models the mathematical + Set abstraction, and is the base class for all other Set implementations. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + Operator + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + | + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + & + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + ^ + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + - + + +
+
+ + +

A collection that contains no duplicate elements. This interface models the mathematical + Set abstraction. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + + +
+
+ + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns if this set contains no elements. + + + + +

A collection that contains no duplicate elements. This interface models the mathematical + Set abstraction. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + + +
+
+ + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Removes all objects from the set. + + + + + Returns if this set contains no elements. + + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a Clone() of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a Clone() of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns a clone of the Set instance. This will work for derived Set + classes if the derived class implements a constructor that takes no arguments. + + A clone of this object. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Performs Union when called trhough non-generic ISet interface + + + + + + + Performs Minus when called trhough non-generic ISet interface + + + + + + + Performs Intersect when called trhough non-generic ISet interface + + + + + + + Performs ExclusiveOr when called trhough non-generic ISet interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements currently contained in this collection. + + + + + Returns if the Set is synchronized across threads. Note that + enumeration is inherently not thread-safe. Use the SyncRoot to lock the + object during enumeration. + + + + + An object that can be used to synchronize this collection to make it thread-safe. + When implementing this, if your object uses a base object, like an IDictionary, + or anything that has a SyncRoot, return that object instead of "this". + + + + + Indicates whether the given instance is read-only or not + + + if the ISet is read-only; otherwise, . + In the default implementation of Set, this property always returns false. + + + + + Provides the storage for elements in the Set, stored as the key-set + of the IDictionary object. Set this object in the constructor + if you create your own Set class. + + + + + Adds the specified element to this set if it is not already present. + + The to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array of T. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. Needed for + non-generic ISet methods implementation + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + The placeholder object used as the value for the IDictionary instance. + + + There is a single instance of this object globally, used for all Sets. + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + None of the objects based on DictionarySet are synchronized. Use the + SyncRoot property instead. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates wether the Set is read-only or not + + + + + Implements a Set based on a Dictionary (which is equivalent of + non-genric HashTable) This will give the best lookup, add, and remove + performance for very large data-sets, but iteration will occur in no particular order. + + + + + Creates a new set instance based on a Dictinary. + + + + + Creates a new set instance based on a Dictinary and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + +

Implements an immutable (read-only) Set wrapper.

+

Although this is advertised as immutable, it really isn't. Anyone with access to the + basisSet can still change the data-set. So GetHashCode() is not implemented + for this Set, as is the case for all Set implementations in this library. + This design decision was based on the efficiency of not having to Clone() the + basisSet every time you wrap a mutable Set.

+
+
+ + + Constructs an immutable (read-only) Set wrapper. + + The Set that is wrapped. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + nothing + is always thrown + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + nothing + is always thrown + + + + Removes all objects from the set. + + is always thrown + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + nothing + is always thrown + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + nothing + is always thrown + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + nothing + is always thrown + + + + Copies the elements in the Set to an array of T. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Performs Union when called trhough non-generic ISet interface + + + + + + + Performs Minus when called trhough non-generic ISet interface + + + + + + + Performs Intersect when called trhough non-generic ISet interface + + + + + + + Performs ExclusiveOr when called trhough non-generic ISet interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns an object that can be used to synchronize use of the Set across threads. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates that the given instance is read-only + + + + + Implements a Set based on a sorted tree. This gives good performance for operations on very + large data-sets, though not as good - asymptotically - as a HashedSet. However, iteration + occurs in order. Elements that you put into this type of collection must implement IComparable, + and they must actually be comparable. You can't mix string and int values, for example. + + + + + Creates a new set instance based on a sorted tree. + + + + + Creates a new set instance based on a sorted tree. + + The to use for sorting. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + The to use for sorting. + + + +

Implements a thread-safe Set wrapper. The implementation is extremely conservative, + serializing critical sections to prevent possible deadlocks, and locking on everything. + The one exception is for enumeration, which is inherently not thread-safe. For this, you + have to lock the SyncRoot object for the duration of the enumeration.

+
+
+ + + Constructs a thread-safe Set wrapper. + + The Set object that this object will wrap. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Enumeration is, by definition, not thread-safe. Use a lock on the SyncRoot + to synchronize the entire enumeration process. + + + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns , indicating that this object is thread-safe. The exception to this + is enumeration, which is inherently not thread-safe. Use the SyncRoot object to + lock this object for the entire duration of the enumeration. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates whether given instace is read-only or not + + + + +

DictionarySet is an abstract class that supports the creation of new Set + types where the underlying data store is an IDictionary instance.

+ +

You can use any object that implements the IDictionary interface to hold set data. + You can define your own, or you can use one of the objects provided in the Framework. + The type of IDictionary you choose will affect both the performance and the behavior + of the Set using it.

+ +

To make a Set typed based on your own IDictionary, simply derive a + new class with a constructor that takes no parameters. Some Set implmentations + cannot be defined with a default constructor. If this is the case for your class, + you will need to override Clone() as well.

+ +

It is also standard practice that at least one of your constructors takes an ICollection or + an ISet as an argument.

+
+
+ + A collection that contains no duplicate elements. + + + This class models the mathematical set abstraction, and is the base class for all + other set implementations. The order of elements in a set is dependant on + (a) the data-structure implementation, and (b) the implementation of the various + methods, and thus is not guaranteed. + + + None of the implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a . + + + The following table summarizes the binary operators that are supported by the + type. + + + + Operation + Description + Method + Operator + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + | + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + & + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + ^ + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + - + + + + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a clone of this set with the extra elements added in. + + A collection of elements. + A new instance containing the union of this instance with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a clone of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a clone of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns a clone of the set instance. This will work for derived set + classes if the derived class implements a constructor that takes no arguments. + + A clone of this object. + + + + Copies the elements in the set to an array. The type of array needs + to be compatible with the objects in the set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Returns an enumerator that iterates through the set. + + + An object that can be used to iterate through the set. + + + + + Returns if this set contains no elements. + + + + + The number of elements currently contained in this collection. + + + + + Returns if the set is synchronized across threads. Note that + enumeration is inherently not thread-safe. Use the to lock the + object during enumeration. + + + + + An object that can be used to synchronize this collection to make it thread-safe. + When implementing this, if your object uses a base object, like an , + or anything that has a , return that object instead + of . + + + + + Provides the storage for elements in the Set, stored as the key-set + of the IDictionary object. Set this object in the constructor + if you create your own Set class. + + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + The placeholder object used as the value for the IDictionary instance. + + + There is a single instance of this object globally, used for all Sets. + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + None of the objects based on DictionarySet are synchronized. Use the + SyncRoot property instead. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Implements a Set based on a hash table. This will give the best lookup, add, and remove + performance for very large data-sets, but iteration will occur in no particular order. + + + + + Creates a new set instance based on a hash table. + + + + + Creates a new set instance based on a hash table and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Implements a Set that automatically changes from a list to a hash table + when the size reaches a certain threshold. This is good if you are unsure about + whether you data-set will be tiny or huge. Because this uses a dual implementation, + iteration order is not guaranteed! + + + + + Creates a new set instance based on either a list or a hash table, depending on which + will be more efficient based on the data-set size. + + + + + Creates a new set instance based on either a list or a hash table, depending on which + will be more efficient based on the data-set size, and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + +

Implements an immutable (read-only) Set wrapper.

+

Although this is advertised as immutable, it really isn't. Anyone with access to the + basisSet can still change the data-set. So GetHashCode() is not implemented + for this Set, as is the case for all Set implementations in this library. + This design decision was based on the efficiency of not having to Clone() the + basisSet every time you wrap a mutable Set.

+
+
+ + + Constructs an immutable (read-only) Set wrapper. + + The Set that is wrapped. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns an object that can be used to synchronize use of the Set across threads. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Implements a Set based on a list. Performance is much better for very small lists + than either HashedSet or SortedSet. However, performance degrades rapidly as + the data-set gets bigger. Use a HybridSet instead if you are not sure your data-set + will always remain very small. Iteration produces elements in the order they were added. + However, element order is not guaranteed to be maintained by the various Set + mathematical operators. + + + + + Creates a new set instance based on a list. + + + + + Creates a new set instance based on a list and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Implements a set based on a sorted tree. This gives good performance for operations on very + large data-sets, though not as good - asymptotically - as a . + However, iteration occurs in order. Elements that you put into this type of collection must + implement , and they must actually be comparable. You can't mix + and values, for example. + + + + + Creates a new set instance based on a sorted tree. + + + + + Creates a new set instance based on a sorted tree. + + The to use for sorting. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + The to use for sorting. + + + + Implements a thread-safe wrapper. + + + The implementation is extremely conservative, serializing critical sections + to prevent possible deadlocks, and locking on everything. The one exception + is for enumeration, which is inherently not thread-safe. For this, you have + to the object for the duration + of the enumeration. + + + + + Constructs a thread-safe wrapper. + + The object that this object will wrap. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the set to an array. The type of array needs + to be compatible with the objects in the set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Returns an enumerator that iterates through the set. + + + An object that can be used to iterate through the set. + + + Enumeration is, by definition, not thread-safe. Use a on the + to synchronize the entire enumeration process. + + + + + Returns a clone of this instance. + + A clone of this object. + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns , indicating that this object is thread-safe. The exception to this + is enumeration, which is inherently not thread-safe. Use the object to + lock this object for the entire duration of the enumeration. + + + + + Returns an object that can be used to synchronize the set between threads. + + +
+
diff --git a/lib/NHibernate12/net/4.0/NHibernate.dll b/lib/NHibernate12/net/4.0/NHibernate.dll new file mode 100644 index 0000000000000000000000000000000000000000..19bc3f9e9baf86afd57b1e44df1451f8932684c2 GIT binary patch literal 1101824 zcmeFad7K?ZwFh3)eQ)1wW->i@GIu8Hkd4mVnUDa1VOUJUBC?5yAs{>@ECLE0`%V-Y zXNZcZ2#A6xxIq+f7dI5#5mEG^QN#r$;*LJ$x!{V1-}ie?Ro}idlLUOf-(NrSfw|pP zr%s(Zb?VfqQ>UtrJ>@Fn8)I_#|MAC-`80m{Z;kxj^`9-s?p%0Br};$b-aS6ucFetd zoOsT;je$)`{DS24^9Rm2{elbPv4M?e4J4Z{7&!NWfy18p?1A&+GtXMl(NSJvQ6GP} zF~_v|=CUsy`E*y?L#A_&N?XyG8@h}c(A3X=)INU^zod@ocqHBY=YEX|CH*-oLbeOZ z0Ai8!*S<0d|26^d(R}z~1{vSozlXX^yL)~zzXQgg1?j&c-j7V*j9D>u)`equzw3>t z7kScFp|c5u7*Zi^7gmB=)~7vJofC1x4-H|XIC%%PS4#BthoBf_ue&n{``v<9=u}y z#x485=lSor;oX-$^v|#V`@WZLy|B8{GjJ)GHaY^l$uG5;+>W;19c`7uaLG)1SVx!Z zgWlwwt?Bd>l`nGU`K`s8fB7aPY%TUBcS}OQXA`3Ri28R6ff@*MieU7~A}9x*-{>WMgQqmm zf58?utcGsGBik})$cG5D;w^M7@capQ5psU7R9p^*+fDKi=xgi`qAt?*eW2OCTnuMI z(ADORODWgf12fc)w(X?3Qe=iUTU55;hy6#W(0WB&{VEfy|7Xs4J zR{}2?4p!2ANh+H`(~6_l;qaO`l5^13#t1pJKp8rCh?i_fVl-;yV}<9Z&qsKEd?3>O z=pdWBx98_tUk4_Qr`WUaKht_r?jTDQNaoJ`p_S6MadRe=KCva|RVaQ-H62ybhREhzHCh z`XHBJjBWDcLy;aGhClJ)th=XN@A7l`#zHhD8o(dHwSF74j29h2SUCU6TZmxLargaR z14^kp(TT*21kd7YZURzIHo@5kHi4eGD}8eUenBYGyl4+TdS0}YH7>@V%J%)smc$@_XCtlMD`o-1d~HKDALhf{mFMorf#mO?jcn67XcKh?1n7gL z;6#)~qo6Fj`Uy&B{2ZkD@p}A4^1-dGM@pY<{by0$S0Tu@*%m(u#h01Exhsq21<;;Q zU7=}g5S*4BSH$FVAuROzTf;(pGV&^g_!Rua&&3~5RV{|aQEDt(;lpCu;+}PRGpl(9wM#{2ho@btQ ztC>&cvES$5SNdJ$)nC{XLloF9_P(f8zy+p;YB6fjSLY(T93+z_ zu2}fI_=U(yeo!=FtZKFB(|;>fZMSma+uYh#>HYeN#LwR`x}nVZ1Omh-$F z5K9v@U~~l&Flr=ah$$GSfM&OpA(<&jT1aR0AM1aryzqh_&IN!#bQjb zft2+Osx%cX%i43-`|%IKI4O4&%8?W#=HuTZRm$WHG&JXb=t4|gN4Z+oZ|lJD$;?_H zt2t{qy8|$!vmbd#Gyt(k=~8D7o>9IOjU_ptBR z13!K-9w+88ITvBd2+CeA&q*VwctHWQM|hkdDIP2h^iD9ry3k6k<5B#g-#MQrL|XCV z27YC1VI~RlFr9m4!hs&Y*4T`cauB}+KPc%29gD3o1wVc%(%TD@ z7viTFzYKp(Ve%sU`0=>DygZvT(abURQR7D+Ucj-edPr!gndDy(N!{WSea2vykwbOakQ_ zYcH@Bq=lyM3iO!FE4@utZwTGXw)vCWK*MR8M{d>t}M+DpaB%Shps=f(&JuLwRBOME28Tkbm zV0>5})u1@Zu63D;FU%{tFxb2oR2Zjs&YhUSh9lI$0=E9JP>dhsU@V4#X!Pg=(rD_5 zX|f@CIfP*6?1E-eIR(3-D}cLNEKXjDU)%UBBc!>GyyD~=NP0283O}$;Cf}GAf|^s? z39Nx`2j!#f(Cuks-$Y2uvZf3cwqb;2WstA1NlaLR+~m!J=zHj{(Dd)L@6*mkWBRs1 zkz^#HXIBD{ZKXeqGf=Pw`p2NV%*fmD$D4d}+R%}&NW!(vgilDqTbc>)mV~!96Nt#0ysnvm zRv_W}G@;(`CQ*?cE%md!$+tJ(PVy$-(R_P`H~G%y+kyVT#TXN-I{bkxz$yL)*lBRW zbfbcI0nmRzd;@+koT&@ReqV*f&h-mWY?>Y=Xm)}a1PpZU7D_DtHEsl+E%PD1ll-#{ zXm$8cZbioB(EV*OxPWz_WJ5T2l?{Dov)?mQX{ZyMebY?YkS?1I@t$5c)XT0)r$Rn? z%S@%ON=v_YrfeuHi~M~vWuxDBm5sq_v)?~cX$&r#{ejkOng4d68(>S(mT;B;hRf*P z>>e-vAWD?=rvej3OapK7Lr7JH>`i_c&q4eV{6$~in#su64_?-O@MO-gmW4O@Q4}fI z@}27y-A#h(Q7axiddmw`t?H9j!4%=Wq3HjGt;-wIWF8;Vp4 z{qd*p3-g{6-@x6F{9Hc%G?Lnj{qgOR72koMj=Cug!XGsG8NArGdy}8V%Qo5;Vl*U| z(SrIM(sY^w*`T{13a3W8U1^9LyF*H^PfLForE5ZaIq2Pn(Qj!DWTsV=YUXTP)8giW=Z-Uo7D&RE!MUqv{LA861=rgYogj(=!rfL!pg8|K@_|_x#%SM z6+(la_zOyQ#?Vr~U;*{EvtGER;45?vr^$?sy%2oGdIegD>y-igh+a~kV!!ZaoSA~a z+58nvXIYz`}RptOI^xL5IHa%^uA>VjJqt zE81NAMYI;4-FlnF#J=<;;0s1=Xy%Hm0PIX21&hH+Ew{DMmvnV7q2H4hT~6h(wJ;~y zTT;bgE!D%@xgV0Or_v14+u2Qi!!yojv{atO&xvWR`2u|)FPZ5N{<@s$hV;%8o(&cA z@wuJ}K)l%aMJ_iU1?GJGLL`?1+K60HbOj4nTu#mFi{;3-O_|!yvhv4Y?CJ!wc~CK>9X{w?CwB`_@P4s1~g7(XgguPG{<)`7*`J zG=7HGRqAsazmVT*?16u^#F&Xm4iD%(rVYxymDsP;KrUjn>W+ABt;@3F zPgd|XH?bFg@)IlZqq^QVi_tC_=O`Ne3u z-Z-0(@{0OW(ldK2XB#nFXbSnQ0V3M`r4v+ zhi^I@qpxi8-6r}9(ql+TdF(Y978P%t#cg^4zjq_6F|P!-JGuqBpeXKPc+)?*eNIt* z!zWA#swZSHk zfap-TL^hP6bRhgJ_bily{BcZy*vyzZ*dJp;IS@n^9fyt`bMpgfk+v&Z3$!*PSJRQD zbIAU{Fa4+coSZ}c=(>*-Vh&Lhm_!zyCc0v4p*eAguD=F2mWb@eT_8Y(T&$;DPe*;c z@iipE#)zRC$}xnE4#j=38b1w>W3Olf_u&kGYo`ec@pba|E%+O6FThPWNu3%L<9h(Q z46AeX(bF*d0(|s&?FVRn&LK>tKf(4yAZC*K!|UeoP3jL%tg!5Zwq=B6U%ayGq^~gZ zIlmpjd=V3o_;pYzl9W@a7(B!!#89-@Y#g=kF>EZnrvHf^gAHNCzKFcGtewDg(QgCB z+}!E(h>kg{$4H+YbGmPdDFQOlz;vkw2leC(_>}->1)&~imq_`>9Wp~v&Y<56^j2u1 zuY>YRcU$xg{0^*HH_M#&T&cMg6)c8A7be_t+yS&Qm;48 ze8IYmijZ$$KIf1Z0tS;6_T3EsX5#U#y?u4ttev#X=_ z5LDJeEmZ1(EltY+pEniQR+ft|A(yR&ZuTK2H)rQc8%97QhSwC{>8_pdZgM9T#IGiP z(Ki_LGvjdVyQaxLB`>~I3ZoqNX<<6>{}8H4I2FH!xn_GW7Un|3%_twl|1Ev8UDRc| z|Jnsh8S)|fue)u__jcWuLC94Eb%U~(z%~YQO>R%AuAw-Q`nx|xX73 zKfxs0JLt^~*eKF{RM&WJ77X8$DXL6kQGJ?Tl2oLKZ`ZU?}Yz1G~s!IEgecL2aILy$=Bdr-1?0 zoS=cxNOlleS?wB9{v+5mWwmSIf_AuyVa3@smbGhuc&NjZLD1xlvYo@s;tuTQt=d6P zZ(F{pZ9Zj>@ory5|E^&F%6@;cs2lV7d7wzgX}k@Oc&1`%ESbd(N9hWZL{n=i991h& zM0Sv|BhH>wh&CK`XIBP$dC4)EGL-drQ5Kp4CaTNU(vK1^aV1no#L!SM2318& zg?&>KmSUO0a)dZ4{tGxi=-`%NZ0&`F-@1gNlt~_O?f_Z3Fk=dz+*AFQ=9F2OfsZ( zGhQv`$W+@)Kr^g{UB3;6L)Jth9fQYtjn(MU2}+kWfd<#x zv?H5ow4A2M^fSnT%h6(Mf=E8+uca!l%x}sx-@s(b7Hz*(3Ud@v2e5;6u`}>Hj5mPn zEfdT!aN6*9X*>Kod?=>#p$~nDMLNd?sa)D&$HnB+@#e;X=tc|!rp>fiAx%1j#`?gT zaxhd1a-0_EAjR_A>b+6LFeBFKgKMlGsN&Osq<#D8Gn8CwxI%Wg=UD1~+ZMS9yn?aGB3PEPFv%-%iQuQ4V|Bh{h#9@3s{s-(>>0}T!nlqCNr}^m8D3@G^LSJ zwi6}csRT z?J)db(qwZP4Ue?B+<8nT$LifdnJ;bvJoHW~pOu-!Q(Xo1-U?B?lYa4XLG(9e z571yc+z-YUpgqy=NRp|;3Fb$S$g|nr<@zeN@`qJ&vEW2-5VWcc9$=1pjg!Gy=JL0> z`7$Rwg6jn9eIfVLO>!|3QCE{E_EColV(ev@^vHHqr4Y1mte|ot^NsNIQqn7qF24HK zS1@(H5zyC2(`2nL6g`3YhGU6(6-(!|U!1+MGg&=j_Ehb(yMF0xb_`@bhB9HdAf)PL zpjd?&lYn1v9d(rJo2+2vpTIDB*)-CgNUx`ck<&W|m=FH4+2_Cghtsiv!Mf{7$?z4^ z2-*#=>_h?ieR535jGLRL)wz3Vcd~xrN1N@w?JL^u)Zjqd=~IDisy?dR(9)dfqoMi! z&>UYnHGVm|G}n9-?}1F=>$eSYEW!e@M-nKbBIn0YRjQnGU4+?2_RXAkrqj9;VCPlM zHmryhiNqOq#?qdQXbi0`F6iuS4uG}Oh*Ie=$Fa=34dF;6f#7J=GuoD|MZw1K{ zBmx^x$MOfBnd9&)_D{}y7WBY=!8j)-XA*$n^ED;;H*kC7ERhY#&x<#{wxMx9>MWz8 zcnq!|*;0vfNMhviFvCRe+>rySTfA{L$hXrDe2aN=2*x>G>Td=MrYkOyEiNz%@-mwxCqxisR&d`>? zrm%4M%_ytRUhXhs$pY%QA5lA5I8X_CrCm3@5eV9~$WKuupX^`5!k2xerM-MH`Zo#- z@?MMlK)|HP>lbSAE7HVTNB#IFD{YesU?#%Rm6<*9M>E`9U_V-5Bu3DKUO7E~R@4)XkViQ$MVTx7E#izz-|j`UYsv$V}EHtNYV! z2L9MRU{|-TZ_2#xPZI$qDE2AmW~}^S2SJei#y`O~8EkILVJ^n&<$!^+2L1jl6ik7pRC7gMxRUo*Fxa(wqdnub;tKndg3I&IVEGYh!+gab{fPR zCxA$19o8;iq{t+Uqg+zyV+RVvG^L{HR&x{GKn)xtoNI+jHKgV7_2|3vHk6?i z=Gt5z-b>XNmmtqNEG0A+Bm74g(>e3Z8SoLsK1QiL3seG4^uy-xl8SeU`pdM}JaZ9n zA3|E8VtthFs2{9{d}!N{Vb!X?omX2L---!9xTmc*E5`D`W}aH&WSx_Q22?fA4buntRH+{d2jXdX9K%4wsTrIVO5P4gK>?3xkldWU;RIAzz;UET zC+e-13OE^c4@zSDwW4my_ON~UR=6oE>Za@nJIFz%7Q+t5!9o>!AS|OvmWM~16W^tK zuueDJ;bhox4(dHA^ zc?z1*?}Ap7{Go~DCq!~1iU}t8R;BFEkqYrey^G;19GK(k9Q!l2#^XbQS<7rkCs6XG z(Bo+#`eFA?3&lT0M*J@R*@FQ*TB!as0G-$hltCIKFKW%3hCrGY=mcm6*Kfo0lC`AB zE&6JFa}=7qR{Lio5_M#vX)BD^zKk6CeZyu+Jch6U&7G3Z2FAZYEj!6) ztEc39rUpERHt}oR#8?60HHw9{J7F*fasFW)ehh|}$NmIKZ^FP};yHi7_|X!O-=x9g z85)-t{}M%`JsiM#Gr1WUJvo}~#lJ$P@h+k*gdQ+Q5T5`f-E+Bo1QF>0X5%-0jaMAF z^`kR^Z<*OXu*~e3Q!&ZP6u8hp90<-E3qLWew&Q#t#2f2L1_?dP>fl5&9%c^u$0EET z+M{O}9z>rm4Lq+h^Oiy#dU)Rdc!r3P?|!yT$tzJ`w9K`M^FhwM0&q?Got{$X4V#=? zlM-o1Xb%pFFD&&mext3*O>Nb!D4=VFC)X+vFYOvKwL@LI@ceYwt|2pewriJXvi-QU z*(9{NH81T#;YVv9{}wHXqGsW#{OX(seqrC&2?_iA3gCHq+TR&|VU^M3SNuOjEn;xA zc3$ImWS7C3<@Zbode4jDtbr5-xo9s`0kP<^T@I%SR0b^tuYLO-R#pZ<%XF>+KurnZ zooDtl3r^HEE_Yc*&vksn^Z8~z<%4a&M8$hMVEcIE9RAV8c^JUA$dEY*L*9#qK~eNs z{DCO$4XWb@p%?U zlZ;Yt{2X}}1vf6bZCupa_}P*!dTsoCc^2(6E;?;ol-2l!lKwLMZTutcDE4C~>N;G< zd5)ajc5KJ~_>MWa zpyNF$U@_A$Yd_llUmgXZ&`w5O_Jg;{&A7O?Ygj8L!2)~x6;-5%%pbjC~ zkDmpM5$1vHSUDE(5Pzo|yB18>jnN;;eY1TY)Zuw){#3=`1<^i0t=bR5)J2N=O=XGd z2J#bDf;mR`8Nsa^V1!w-zGlzvL(tnQ;FB*@F3TG15AMcbw`$kgnq6kk{ncKluEFZe zpq<#~{*$!Ci~o$@4jhQ9*J0=K9tB}j{3w#0R{_)&Vyv!UjHD;SO0o&d)%e$3L#OI8 z@*q23VNe)2W-yNZ_^+-8KBs|F{Q!rbDx+G!LF=a0Ae;Iq!6_fE$|#Ra%ZBgR zU9GL+Y}znsduF9seU_8wkD1lKcF&93_CLkR^Bc`$m%HcN+xGpvd+zs+I>UpjMg3=c zVqU_W9O8zuRAJVl>!>h$F#S)TrA~7b1ZSysgYYYMbo?yLRjU6u$?R{6(SaE8di0Yi zON{dj@~vV@bWfKn+>tAk;>T30f{x7mbuC!4%lWH0rZOQZa<6Q zE=gjiCPr)fnsy3pvk#+BP9zSsbmuLE?EyQIM#C6+y%38Fn|Dl_hfJFO@xLgYL46)% zTzriCKwe-!*`5qJH^SlAjB)%v+8pTMhqIA03B(rar|4!9i}&9oKnZ$Jwo({XX{FC| zmBPw`1>+UQv98NSxaj~E3{Z1=Bz9aa(lvm!kY+rmf8?-5 z!sAF-CJl5eYO(F$E0s0%ThZtsem7O`_W`M^Bwbjm9N5f-$P}MYx@zL!TxF8)0YQ5) zh_54x66TgHwlASnM=86UD#XX3tJu3NKN}q%FGWJ!fj^F!G~xLkZkxRAJVzVwQ}%kIn!NTz2#x`W zoeCSLA-2|@B~#z|2Ce4;SC4pC`36~ruz~vPC1i zGaVyWA=55_4`eAwY#Rhrc4%Up6~n1H{Hb8G9Y5`@W01R9*a4>m7bIx8C_aDd2vmx2 z1X-vqBriqPa_^sPjLoqWC$C4cdWkG#cC&2sbOcN8ZuzZFDv?RMx7uTFzN5JYA4U`5 z)1oY&ONpf)4V#Ei*gCBR;#-vB|Q>19q8L zfyc!8U?sdb^#gRw=a42IJ%fq)iD#zZQ?edk!BDZzTu{{F%ys+3@X^k8exaPX6!`v2 z=ou>69SFp3qU>Cg+z3u4KjokPMTl0$S(CD!181E%aTmGZ1r(TXlA{5ZOTK}>ejETg zDzFIL+_*(H5XaX{6smIw-XStc<#sQ#CT`OBUeE|%9(ZQwK*~uAeZOv{uTez3w7>iY zA_?HrniH4t3zt9zKVH-aM#t?;p;G0q*}eo9EsFC03vd4psP99drSvARe zBI^{=l}V1EozmS&x;q`%G`iOd-4x`F=ucthp8pnOr(4bQp0LMBUNP)(<~gtI6KO=8 zuZ;iCgD_>O+PyaUuSmAm3Jq?Zle}sd+$3GlTh3lug|XBDj^GYt*&qCH^yNPN8B)4A*=kB*z}PRUQSK+v(f1OF_V3C9r`o$z%8{ z(KS|0w9C#N>&S`Xv33k5^g}_tcCwrJx$dH!2)+p&CkP$6cnQo+M9Re<<1gAsT(kvK zT#@kHp%MFmcwp-Z9(H^g2Ljq?u>z0JU%{jHo3#_q#&mD(MBUdtL(1zcoM5fi^g*|j zJ1<+V9rd26ZOR{M?_j@T*oA$NdM8i>o%w#lWhheG9xA3uPz{JxrGgFLzNVoA+` ztIMXhEpg@70g^Ay=mMzB1u&A$S)^O1D%^-Ufo9~4OktG(myW&wTx@hx*H!Vy1a>aN zd0D)AQ7^J}F2g>a%w@SkV-#F#-;Pe`5o}F!f?+^*j-6$Wc#d?Z$YCeaZNK)&&Xi?3 zWwZ}@=p^=OF51XW#cT(S2HRY0P2OiZCR~`$m9-b0%{<0Xcs$Eu;3N+vbU28Hm}9}? z1%O^^ukOV{|0kr4G6n|dJr2p^km~d@2XCC5!DSpdhO3n0+4yrg`UJNC_1Ppa!zK0G zBur>!-12}W1>#0EEweu*aTrTb-#O9;5~I|Bc>vhtnGr0Xlkg|TIs}YQ*B-Qy(Qoki zT!&mnC6qUF-n3U;NV``9<~+hgbCDg-BT9XokH<;@CuItBZ{q|h*7nIgM8sDyASSn= zcs3@5im7oGJTzNgil@ON(vS#$;vytiUavu&5M=bzI8(*POZB-A-;TVeU^1~ZZVv>K77(mG<@kg!H=+#sa zk`=wG`FI66w$;IFHZ~Q5E$=2G{?V#&wF8MszCeUpA*USCwKwAz`U2zjFC>iPHZ$E; zZOO`@D_I{8Hh&7N&&Z|&dR-G}J*?>^K!u&QMKDgpX~^|5))Q=B5ewF($kx`;I>R)} z+XC*}J{R|6V{s&r-{^IuWui7gw629Vm{qT%Iz-@;8}@d*cOgyYDXFM|NE;1tqC8VR z*c<4Q4CI85t>ZyU2LLRf(x$zLXJuruk&9=t=4{%wgc)33aonoScHcm=6ffB>&8BzL2P-f%XrAZYcaR!F{==5*Kl8nBr# zDEDcskl%Xa6!~4O)jmW*l0`#6CAR#RDQFhN-situa z(58$W9o3wVe2!n8A3QfToQSHDQ}HJ|H9*FE-Wg^v7s5>P#8j_r@4{l)lbB(RTEQ)9 zwr|nHmQ7l{>hd5bZku>H1$q#F zKyBt*1DVYj?BIaW^4WmQw+3)d;2QBnZ{H6)w8^b#MNy9|u;0SGE@7~xnRE@eW;x!O zdW7a*gj{KUbSjj!mt58I-nbXD07&zatuDRkp~B8ny0ayXg*g`%ngPTyPTj*q$u=vq zvo&+Gu(vyhmJjOj=4oyFHk>~@XMXP) zgSj1jJB9B<^QWdrPvjy>2-f^%AJ+t;nIbE3H(Ksc2X7(wJi0zTmqa1-J)`J zwX3((!8n?YMs)b4_yA&&-61R;vGwHZ+7`D80z>pBR2;7)h+k7sQ(xfAb`5l}#7@sL zz8{AGQ8-7@@s5CM4p%l~O^WLzKp(G$uM#*QQcLWGDJ-sc&JR_EUaUn~z+I~s<7{tQ z;M%l6;N$v4TR>e1X#tM~V8jb;2(>E*Q2+^w^X$G{T*Z%T!<;E_g%r+__=&VeY|2pD z$*tMARNT4(VCW)fMdU4D#VscxbU z44aOOj|k4Su#&u!NEo^wpCw2D!s$&o!C}*(6I^H5>G)F&JKfS7!^O^V*L(YZQ}e&_3A%>O-B zbJ4Y^G!F3I?iaJHc=!piBAK_+i2(hP9mNJN83|t;&m+J%Qly^?JcfJkOKo9n~$Y!qybd?(U__w|u~Lw10aK zr}Ye>Fh9rt-@|C-{}1E;CCKLgBQM4uJ0{9hsdLDd(0%@c%{mMLEn&G=XtzTIa9lvE z8k4rqGs$hB$<9aLM|Wo&qNaYh;s{GA0)@n7Pla6cPLA-;a*&1P#!Eo}zVT29E4kyys1)yA`Nh9-vZKIJ@o)c-{7I*dqdF8UaYj$936#BaO`?z(Eb56AKJ)(w)f z_8u$Z(m%QABU*2Jd?`xC2TJAjrvuVXxR|=`21vDoWy20F9F}@*$*_Hwtw0$|A1Jzv zv|(0>ZlXJ!{6?(u8~3J5Ssk2*ftR*nozcx1px?|0Gy*yr_PMcM4Ex*!N&{>UB}<3!(fimTJhW6zio%rirul^72h}31 z!vdui@2#?83!IcebQYd5dSwbs(|3lbH$Gnb{RCGeb<|fwAFhADr(Os{EiMjb2iNrb zcl%+t!gVX0IH2pIWE^uwU;mi+_Iq~4pX}t*RQckohlHCmp=#+k(t8`|zy}Sa4--v=BS%NjXq+vD_2=#Drv9e&R~Y#jve8wklJ5W)*t+6U zTq4#uljD)!eal53B26W&s+B{Sl6lVy%_U67FT+oK8l_$~1UXMvkbxDgOwpXsJ_P&@ zRUfDlW&@-%AH9vW*app%WeHf)TI%hYQZr?-g&S$Vk|UiA6__6uRKl#mPBJsWU1sF9 z;EQENuVsUmvLS7+t_YrRn|IMLn>8c#`Jqlf{s@?c!EMJk>7Cd;eYhaurD=coF~!C8 zMA{MmAyIlZ$HT7BKMr>5U3~u#T$`Y5dP9K^)dpPzYx?=dxumVfce#l8K{yZfJLc(qXh6lFKvBAJ<9wDjaMr-w{EjNSD*0>n@Z2n)MWscDD zmj4?q{1(R~_=5kTW4!2A_J~-~mi23#G|K`6`e31H+>APT?+wFg;`fmNu;#-YIP!TA zKUc$T1`%9GO{?&Dhem=5fdk0Uz6ome8{{4%kk90Jjp8ucoqq7kps!vbWt;98xHsaL zQ>Xb7&M1d@Q@w?FZ*FB=0<`#a2%s|76W2guAzjAOmVrNTEr5ni<0c?PWi%yzWd`tJ z2PihV%%y6WTSK@OUy^}NXGQgESl5F!$nSz+(ult_Q=qw^->Gw>7QZD^;IEDzY9=^N z?2@mohYP6aUFh9v(T4-!I+h8GeJk)yFr76RSitW;agzZ|d^G@Qd6RXk;f=P&C|}!+ z->X!bdcR4^t2yl_7vM)%$vW!*$E$#22o?0DT872|=tjd)+NV)uGc(B2vPatsvS=#5tD$JQuFX z&Ew>N6b}L1eMh4pIAlF4SCNr2k9y|y;M^-Im-;Qy8UnrIcVeKZNtdgSLRHGV_&1nz zII=*pc(5wK?YgFpn^Hub*-J!m*61XRQu~IIGT#vVc1$*QLjavj(wUmQ1wL~>rs}bp zIeMd-D7K(8UVg~leF&d#Dz1bI`b6tj5K^{WOekqkiE!Bx&eHr;D>rAt`4*K}ZU zFS#6dW=k|(U%L2bN3alVx%xa5R3AWRJ{bkM>ihb=C_LMWn_Vk7%Gd!c%(b<0DPE+N z`O!zIPLsOa#7GI0z+=~P5k>IJ~l(S)^OXC4c=vbdSzUy>+ww*~uir2PpA*4_3C zJW3pN#@*(qT?t_I*x>Swpq^DpGOAEvnz3oDSif*?{{^fzqyPeb+U|V7ZK_1 z+A$lub8{^tze#9%;u&bShZUx*(km-`_=3KY0k#0gGA&k(9n)?f9* zYTP3YLUhvCDQN!YN1@~FIZ8HqKBNaI{4u6Cegv4f8?pfx$y>lgf3pw&Wd?kX17~{U z`%Uor3;oRS%T6Y8%6FVVjrnJmhR`^;#CA&aM1)CjA6MN)H=#`Yb-sJa1+I%Le)38@7j$dqKFQTCOxdIJCeiNgjPcG~a+Rar zkH3mie*6vj`yKp^-p(u5WOd+ZOzryS7XzD9tF`QTMAp9L3dcpTW85V~55p9;snCmp*T~pBR(qJ|-z~=6_7N!eLx88C7T;k= zRYJMN{3c|Cc3&Ci50h9z9+?0d`?I^B!<9J`e(?;W)DGjbV-<$W}GJ zi^~X=F*E>jy*+sqH;#Gi7aLfZ8-8y3K8II%e#~@1;b1j{^h#S7_l`a6M15*6T|aXS zBlwRor5uP(Wb>^O8;qtBJJhYcm)%tmt?(E{(Ju@aCcjz`SJc<=6aSm3R_;@oQURq! z+BED`rlyV%l|Bn;jSV+K^4S40r7zuv21{ZPSTir59R&Xp@ox@==(^@0V7y_Dccs|4 ztf>k}L?xFj09#Zc{7RbH9HnI)rGbvppD|Z)-VdB`^MKb%@qaZrOPx-7o0ha#r6;qn z1AmbNhaMjGbM;QUJxrS$^Kg8I(4nX&9V{299X1%9fKcP{xf#H8p9>3AbRR-au#Ik+ zy*UGSxkET*%e}29jtK@4gs(6#M?jtsdoGGyu49h2X0+cs9hRo{8*thW_Us+VR-PV1 zoMz-PU}gK8yF~es+mM2hnGSm1(7-*S_L(+@s0gtUfmN3&%98gYTenC10p2W2Qep#H#F72A|GhXnJg6%Qk%UOg5w(IpNErP_bzijuZmfM_1R?^IZCT8C+|e1UW}U;G`4}}87u~h zRd4(n@)UFL>x8%Ub7f`1+@)z31j(H#)vp(DTMXZ(mrX*84BwP)&Bdz7k1t1>Mnq_C zO{;9}z}}IUKp};_tsOXhOOG|7=biyz*S})Bc9e#24Qol(r3hQW*WII^Lc*%~9`vv5 z)UxDCh)4l$VkOF#eIA%L4-&G_i9ntBF^XkafC3-+0%SJ9&6YT>LrZ12E9pyLz(KAW zh%>_ELWgGKTWF`8ULQlO7o4=Pe1qtH#AoEQJ;_M6xRhOG%UUM&V-45%Yl;Tj>olK( z=mUxb+nOdhZW@whj(~513MJrwVWvvS_iM>VA?V5av?Q8xPWm!aQ)D-u2l3^6FP33B zP$7E`X5_uZ^~$vP@O+W3ltq-Q#M)%vc5HL75Ca}ir-XFv>a7|V|*P>`!%4KgU>fnP?%I<|BLMj#_~ zN>|(q0mois>56uoX{~nlRxz=~lPIWuo!f98yKe})7UXw_)v(7k!jG>+YU3Df3N{GUq#ay)4E3imoHee%!=c!4pU-yU zAJcEa`#JcXm1|8O$2+DN^Mgz}ef)=EXu^+|&f(vKREl-kV$4?Eoc&Omjju)Ybci#C z)@~=18rNCvX5>!P0t@#KfXp~tLqB&bm z4aj7?&5Y-0kt&XV3CQfF^k)s%?ClscTdf8k!ng`Hl+5cCGBy$}b?;yr&1`ALr4AL0 z(@yRj=`H4{KWdk7J=YHYUY_AEy<)mvsKOnKH8n<^9RCwCg`FS2kE>r(#}TLsTt` z!_}+aS~$KX7EklUw)1QCHdG4)IO4hi1?{Sjg|h&#D87$T&gGk~wz&tp7lic+;Y+d+ zMVpeMmK3C56uT5$UbR{ymSwapvBH`}QMX2oyA-8B}xkbD}HC>jmys-PO1>1W~`f;w)+P*Z_% z4sePm-$BWuf+Ebp-k?G1z6Z@=Z_u!APo`$=sUUeIp$MS*y;;P$q~7NHwCMEE2ox{ z4E{md`~@=s*}RgnsX=zQ2_U0_iX%MAh%KcSgMGTa$IGT*i{${^YVTS5F4u$BiVaH0 zVdy#B^TRN|k_{2gsdX3R(3xu7!6-B%48O@3cjOuo3^+S3kNdsEjw{u2&WJmOWm@eo zmcjC=A*PpvjTgn*uCMHckV;A`PLE-xL6~(n(-H#5@mMjZxGHL=#g@0#8I>Hc~GFZ1f9i zs@X40+X;x}GbaKdie@dGh7cb)r+OqF{tN%Rxt_j`>yh^c%4u#0q3kzfGzqh69C?WQ z^27$t`P}Dj#>5$KGn^*Q_e{vufMgPmsnLTV6ThICi^v&Ic9zFJz}ce;cTFMwmoyr$ zw{RpkUV^sbV|nq#_%-<=>XI`&^J&tqI+%US&iN^6UH z2}WW-Wc4>AJ*KM{%m`F3>i~>TNMQ1=Bz@QmS63?KoB*dmgGsYVB0jOLEtbYRI*ZzD zoFW9dnXoJ=4}<4cVHCHlG6s(sxd+WjaDn}l3iomqa!J_{lv?;KD@v?zgwJN=QleNk z4aI&A1y@tm9Kvl7O(|PuY@h2h8QgS*DYE)O$q~~qaeXVTR~?7dv@0z-j@zDEI(u)` z=qvOhpj}>Fh0b(ivmdRv6rF%jgLG`NpI-$#{2KPN*2x~hHs0tB07nupa390j3XZvl z$aoGd1gPuB>g5JBcdr#n(eOM^nl~j97JKHuMQK`A61d;oYIKJVSt%wL-G00SICj7N z2yql^q3KDJy;35A+eJ8P{b?FA-Xgx8Bd0-0A=osX9reklA5MZp$XyQ|XajC{H zKq0z?79{Rf_+9f&6kD&f=EbgCb*&G#HY^a1WCeVf z;(w7a6^EiI7<%(MfkV#o(Kc!+GxBf9kGS!sAfr7c!Y;#x$6-=>N^StrPgu*_iBT`I zxCMkx!L-a_l3^oJ+>Wd=N~?WPzc66{xh;ymVhDK?5oc_2^@MbR*Nk?p;CzfmvFg6L zUV{J`5UG2>UArL>)(WRLbm%n+B3v6elLG(f)jE@Qs?$U7(vXUa*pRkPkHK`Ta&K!4 z@^)rs&CK|af8qVj9IKgcacsF6$20Ux9A!*bUlQ&I$rr${soSH4dMz6OO4A^^SKwXL zBo~iAhE;7tCNb4>UBOg*ve?lH0e)~s?8{oQH@?al7x#ZgZo;qDi#826K0n z{c*<123jk_=hE&(Ex5VX*-P0r@rKsjRa03z6UTN@japq#wwirrtfsHEHH98O!UT+Q zlts_4G4HMwPk*B5zxW@aKVwGp6H}<4vJ{q8oUcI~m^x(mybOrMb-<+*LQ~Y2g2?h* z#B+MpKxcy201Vp!JoCjIC|?cpf~JA$lS6-57L7JqLVkBDzt_#!jOnA}>S;`RBBSF= zGh&~ii@!Au{cgK>ux%4C3EoIJ;b5un=4J{d3Fp*@zMilfNO`%h+f5>Tq>s*_?xk2hk>}Z!dMSiR6@h zDk11hE{W~k5rJHl!v!zBXB8Ee`Rm}?5m_l@L`B>|UUC33n^9ivUUIBU=&*Lg3y`29 ziN(ec?F4u|{_KFlG z)>s$}dcu>Qdw25p-6=%NT~L7NC=@Yz!h)B495B+t=yQ-O95L$fBJ8jPjj!QLdsTdO z64uTvhV~57uk~{D>08P3#wQtl0Y~UPC_iP&=)j%yY9XBlr#qtiGv};vz#pDdW$6Is zITyn%E3$ibb48zCDWH373(SEh>)m{(U?%f(LPKMJP^ytglo8+T1sS<6BO_^S8v=~e z6O`B#EwP1`ufK6zV+dqX-J$pxMd?s~R=9w${@t$+Zfc zAvmBnCAqIsUoM^73O&1m5XodU!859dcQ|lg;p3p~?J^E-gb;Ha;7j0B$3Zn;Pp^HZ ztCCya!pS!PRyZlT0xMTt7{Qr_OZ2s|^qNC+HGUu~&7!-@uT)UC=60@&vNyaA@Alef ztTy4s#|5Z5eioVwu2B6?8xeaX<{iRoKhLlz*;BNhU2JKWYdaWq4gVr8TDgfwtKZEg zd{+iAgCFZ+lJMMAB>|z?YlawMyq& zvnr7*)nq)M4m#f{bWX7rz%_L85+~>B9=lo*&0vyBeX-rC5t+b!MOB2-(0^3U<*_Xc zttN*WP!Hou5PO!MNw>ZiU5()^1f$LSq#ty=@SYSoH?Ct%DcZwPl+I3&TX%H34b|uH zzoA&6zPy|~eV4Q^c{~-UPUsjJb08VtSBt&@YAbLmrCUG+Tq^b7NQ_UXy9vTL|8OUa zPrU3#TlT>JpzIm8Y-{wRqnS}MnZU=B1eiR_n?Ir5|A+SOCG7vt+Pl)0{ZHD9&({l| zPyP>hwaSVN+V7cRwEvQfJYNiiR>#`td#jkK$hfPO%8Kp<+>j}odNiDVhPdFI0~RRW*>wxvy7Q zNr&89m%W{HKI7Wda%m}c*6bFjmwYQ_V{@CQT)zkw4GakTy+__auV>1!ub_iJ-OQCi z?u`FG0$G?>^9X?9D*?#T_K7{@Znr6GDS=gHCi(N1rhqv}> zvKwy$PR;C;*#*~Ma_|e6q4$H7_(6(;`^ErrFy+05t;kGy(l&c-15DiB>&Ipn^7{7a^7K2CjL^V|CPwqqaKh32 z!qXX)B|cgCtTK-lsd<8}yO{#WizEMouFLM3iC3_BnvGjwO>NDo-F1f4iA6)geiN&B zS}yiKV9KSvB_Do)2-1oo!MIbEJr?GtcG-Llf`JJ4Cci+FwuYrzn8#n&XQloSU09lv zEILwhacqH&M$$ankEKjM@`nE)UML1PP@MzubAz>}MJ$e?*#LP#{XX1+RAyIrRdb&ANk2TzW#!*AK>dzeEk()Kgib;`HD*|f-N87 z>#2PGEnh#(*K_##JHFy%Q7#$d>mz)<6|bVNw;(JTSO4+vB&(CdY5FvXF=lg!TXWN1ie{q*im}DU(COHAkK@Iiyl^J9Y+FC3vce5>b4{V+%Qx3Q1 zNPR~>$@(xVq}(%~WH|_yl>5|^EC&gYa!0k4`|xi0f*zJ~V=a8ilyk#BbNM0r4)-S7 zb0&IWXY@BzWeDBm3+`{Lr=qg1|LpG)_`E}C}=47B*gPdjf&`-1$579dO z(WFv4tQo`Ci^5r}#-1ikk-t97PMdOcP%@%B_@tYSuc=uA!$barSNvKnp9Qa7} z#1Hw?nVa~L{N^WMh2cGzc#yyOi3jAhF!2-lElyxUM0RQ7*YaDQ_^td_CLWgG_KDxf zZ^y*X<+pRozEHPAYlyKx$0Ff=d97C=Z2 zO6d6X&DthTHbl1oWkoH9uq;}W4+~DtZw_4(wuw&UU@`DPH(~KT4^|4cM<)IUXoK9u z@9^V|v(;F8fdE|mOqr_z{?Kfj*qkZf44yXyMoz6Xw?jpOovuGqagnPn=|D@qk(-jf z4AY137X9nWS{QP^3BxymY58`swqI!d6W8i>T$u?xImQJTXj9hp6O_!weQ3|nJohFg zVwkYLyUz(i3no81g(pOLKDQRJChtwY3D$2d)^b~meaWNp-0yEK&PjTo!SuPo*5bTm zkvz+tzR8(*&NUj^=|VxXgGe9N1O_@CV~xiu+WjP90XYGV?~zkj1LbTN=3^J<3EOs= zX#|MmsuXbWpAlUMrdc47U0SA~LS+i=nLE_MHiN0|3D%{HvnhS?P)lF%ZF+zGv;~H5 z(_wzm0>d|f@y$M<(bxXs0ESZn{2vazaSmgBQ|B0b79A#e3Ap9!AQ;>T5sEswCh^9l zto=4jONO9v8K}$2{Kv9&id10Ws~quybZQB|IZpJhWlQHTk=K+@zGd2LVSd#D!?z5~ zdaaupNAU2TcD}UU)83>Nb3El)L4;P2*QAviD?_Vq_D4HmpK?7?#OG8XSJZ`puvQ&m z;NYXix8NGxJ;;5rOAbSwpHw>k7nQ|_ zLf@k<{O4R%dwS!Na~N{Qj%Nc9Vl+gQ1H=-<5q@NK&puk-l#54*uM1+K2h|`5-QWgO zqopXKs~fOa`Zj8o`#m81_;6IW%x^7U!Zfmol`8Ek(=zzpIg&v%Dj~~Bupi@`Q5li6 zvuv%F*IIUOl*PILcg4@M@PWcBg}Ct^gmcRiuSgxZOFONPCOG9Wh?N79{5DN;)&EwiIdvxlT&}A?n z7ODkMjJKi4vK9yMZok6EU}Btr z@bFcs@vC$Rce5woh?^h-yvEN_!vrPEYdixjonZf4i(~MSjOpXwU_Wy^&X;+tlgU}>>88Obi#*Pb9T zj+TRtcHgK{{;X5}kcGk@Hy_z_GF8&EtIay(4PMcf`%(y%C8FMJgD>D^w91dc2>rGyujsY@hZ zlCyj~Lj}vZaT=_+xP+RZQC^ztH@$R^DR`xPF+vo63V2*{*mS_E07mG<6mD5^>U21K z$`}YEgho5K?0JjP0ri3G@}O|Ro}zFv^bGUsmCpB<=RUdltnfT}IjWatA0Wq1}4&+!;9n2Lt+Azy--|MAUR%`APTD7IU;88q$s!VSZIeH|D&+ zN5JylNJmg2;wg%a=Yq@F!Gex~TyPzHIcWUcR2qHR?-Y7*+>W%RoqwOp=@?eTCjqd<=lAxk9P7AwHImd63m($qEoF$?h*U4k2ZFCWUmp33Ppa zI$aOD);@8%{v>p*KW0X{a?vf&9lNLQz$SGZPxx|X-k2|tKJlNFbIIMPz#Hd~%Ut8W zN4N)^kN7hBzU-SoE}O(R$k;&xP*?DlQ?qu+U$_@@$={n;V4>OTniq}m_P=mZ#&OP1 z_-0&@L4GI<19Z%BV6b)zJ@~AC4vrh;)nb!CnVhJ}5f~V_7S*~O30Fx5j>SZFJ}q=X z#Xg2JGU!D_k8~l90~X^Gv9^~BoVXpZneprPMiAoY#{e2*8ZViV<9E1}Mh^>@vJu>X z9Yvri+EkJ#?rM8y4i|ym1AjxjgZshA07t86FOL%f`w*}-|U&Nt&z>z!c8eHv(Kn!rMx)>)37i&kzNy5aJv!(qLm z)tq6sgrwj;&RH;-qybplci{pSWj+@8)l@OEd47#22^Z@`&IFz$T&w|tOTs0N3&n7W z+en3G?IJlnIIAcRvvI3V9T&oM;Y?r$a>imPlxhuKUW;&qFu)hs`ev^P!oIL)?_Ah} zPlxsK>|ZY&4!8s*oV_C_bbcNMdf*Z+0tE!82cjd7B7PfLBm3^f8p60}R}|_eX8UdFb$~b&_5pw(lI$_UOLUNxdV)TV%9n*fb#4&O)deRuliI5D!g-mof{8wy3mS9` zEc^+0e;LxhkxA!T=@6uS5gh`%oMWVnjaI}G;46`Mk@4Zj zC*l#3AvGKl{U zw9Bx7Pr~EVS)r-V^Y}`9=JEs_s4F&gxgfO&0JRaA#DHXYti7oKMm<#mP0q}Xas@H# z)qXtO?Ei9Q5q&GLllcNZ40U<9)E6UX;qztasFMdLWow??!`FARsCsbAx{hS+xE1B^ zwB?i4Y>^wI+`KMuKl*97_O@J~l#rV=SF;Y0tTU3QWeaN78p%2`dFJ%2wURZQoIgEl zon&EC^JUD-?2rY6m-5=4Ve|?b;7|MolQA5jf8|ep;%{ON&t2JJehs<$vb1NMAiD27 z#US>^S&VGPrv`_6u{7cP6w_Ga2?fcNpu&o$scB?kyC!H|X?P(nQoy&pTVe~bPHGa> z3@~J9Y$xQQ1r}d2Z^AaC46*ieQHC1mCf!AY0AHwY7HEbVVk$?dp%TJSLwH7-V9j{L zmYd@M)~=Id2be=}`P76pfttcTyS^lxov~axIg@v0J~n|t%SG>O6?Jm^TM+fxs*5l; zxjrajW;+A0xDz1DcLrC8r7DfA&dQSh4hV=w(c!K(v{0|AW(&J9NB3x`gLLo_whgkO zi&O0grKGiF8#X1JvKZRll$gqJR^xs~Rd$*B8T`OCS)tP6jZ@~L6`X#nmM(_(VD>L# zq4Ojw`L0$n`6yX^J6dLAp}XRHkdujW)oKG;1{?{_$8mPsY8wN*e%lEcADO*bq8!|q zS;s?vape31KPd0knsBjkjn2%LHRxTMPH0JQ9fki?Tu|H`h5y12*QC@-^hsgD0#0vS zpvDDgoG`*Q$RVGDc&;?W(Sd1zbo?7xQlI$D`6hTfq|5hX0HW?Z_{C5f@JFATL#9qz1)I_Z_{BaEiinW4zo)k(PwDpTLuQ!3)_w;$qWqNGB8%Q@+~lY%fNh9@!&qa3?9B^V7{g>I3AFJ;adg< zo+8pyY=Plh2FB7;YJuTf2IlLE2cF+dU3|;H*#7Ehf#F*Q<{OHqvjv8485oOaRtpT@ zGBB2Ac*8RE@GS%L-&z-9FETKE%fQ^LFx3_qzNPUSx&|J~8}m)VHeQVJ$!~Of(ZzJb z%9;6B(U4#v^J;IuNayA;CJP3V@HP?ZtSPYK%%Os(3FI#K2<9OTfvtWzNj^2hf z0OO#s1{Z1<*z%_%JIr`_;=@@U{Q6N21p+U6DJO|S@@}H(jjkh_qE`J&7A;BRzf6Sb_D ze0Tw7O~_Jtv#cR)a2$ExZ(DOCE2$_Wv?0m2Nsc8P=MuQuVhKbR3;+IxY};lu_9dt& zzJRqQ^=ISjdoRErFM21N(IN2ZQBdM=JRAoUzG=M?VA-m@rPc4>g{2s4h9Vde5ns(K!D*za*S&GN0L{QN!& z0PZlfP}wT=NoCJ7iT@m+OOD20McJ)|ZbSm?o@OERdUx{{-LYj5$oL$g5T7K6Yx3S^ zfw0=>0l^mmB;j}Hb!{vH(vvJ+kNV`^I<0T^Y&aEWXK(f<>6?w&wvJMK1gH*YN6&&O zbQ2S*y-MHdKoj;}&Lr8V$Wpp}b+u+?>5T-NEt$9`>Q_K!lKUks$)98w|6$FM8zf&u zB1DrzGd_x~3*ekOMIYMZHS$o1H)ui-=9aT1^X&&r1R3>= zx!s?4zh7GlW*D!3pN9w3o{HjHn6 z-j%-0DI^c4FJZl!{1b1DZb}eNf6c-70(z6HPo|VMqcJ5H;R^7tY8$^TZ7iHZutV`T z+r|&!eWz{Q4=zY;<9#XEF52ko`;OGN>bb1%W%!$|?}vEbX?-}LYwOFO>cDnU-_6@# zHD&E@s>p47y0o~Cfw6_1I(UeeJQo-vvIdMFWI&pGUZ;6JzT%~sd-Jn6Eibce&Y*$( zf0kk>d(ta`%GwiiQOnRC-Z+2bA*>^Ydi2GM-+?zwx~j&+&c-6Crf9qfYiKSl#6JKz zarou|&v367eFWJHL;p=&}U(27V~T6O_(!@Gk>mR^FOL5puFM8Ds*C^N+V zA`q9z3loE0xWu@>#RO+`S^hJ;3y_bs z3UC__qOZzP*v1#0tu)KJ`(^vDcKf##k9q7r+mW&5+XzAf@gMyL!+;B!z`blVkDv^+ zpcj-ONc=I*1g!L@AO~aqV|0>p0A`T)pw__(XLk-59)X~jzWgF=tQ$8m(8PbT>#A9( zW-ygK4SXzBw={~)5p&qR3!erL-=Z@_D$c;IPo?n9NYM=iG@N{lYT;Ml-!g~yv3E+t zM#D5pj$y-&VLP;GTIlw0T{huis}gny92pw%0ksx)qTvlRahv$^rkb$3z)grqu0ztk@TF$~9^{aqXE-bLCr`2E$;ldhA37!XC?jeDQ zch$O^qh21zIOu*)`hsiZa2q%&&fIg#t|~{sIFPLWqG1 zut*nOb6IdHVAZsV- z3jU@HaY{+^W}G|8+JIwW+O>Gw&MgP{#?RPuE60dqwv8Y>(c(CfC_d8rAQ!%jNLn>$ zb$fnzlABHbU>o1d^aHo&fz&Y_+(F2NQ03Be_^l>LFy@7sXB5=+M13WOWSNG6O#VV;7;K3s-| z!+%0>Ng9c$&vDFoa*t{Whc<4n1j5kH+z6J!wPjFA~xsfc{vL2p@zW$JS)+*5a z$wuAHk+NwzukxWNosQ)*_Zwl+){ljJal-8G-#AmQ24Z${(pztJP`%E_2rNDzY5P>P z{Uf$5B8&nOIbYFgx04A>YV;OT$zEbfUGQ-#lk{sKVM6f8gYQ`#0tq&V% z@d%Z6*(NCKyL_iKnU=OA=(NNc7ICk2&TE3j-JvXFD3!Nl{BSR6z{n`8eK3lxz>09r zp&Zpm0mh;1c=c6pPVz+q`zuO28W>*p&HLt1w3cQB$DGBaqHjQ>3pNb54U7Hw>w{&^V0(f^aGSDbs}) zQ~HCc3qwIy&!lWt4=`oH)LQncw#8oaalbOVZ8d_9^T4h<8CXL#tN+tXZo&>0%lG2c1~4(o5dE7O;MXv5wPot90pw+<^vxrLfRCgMDf)vudxr z;#MZ$6UT!a7WK!OiLV3^SF=z7%EMECOtwv7_Q!5S_12keHC{h=ILY#7!D|8MN%W*+ zAa+=>IB@*s=U~zW;j1yD+Vmxj!BSjxSt&qmnp~wCU|5n-sotHaRKnx2onycyvO)RZ zjMJT*^jgHQ6Ea->KLUNyxf1gsNvXR2&WK=OuZ$_hn`7wGD=gf`z*Mc@6snW>)&kPG z*oik3Kjlx$Z*0=w$0eMsUBv5>~legFMkL#{_DVYulca(A`;c9s3qS*~$bqn@dO~ z!zD1ADD$iKJ}H_`d0ZVXbkqP@;<6a^e!b~>!RXB5XqTxCLO^@ODq`Yn$rGmm&Tk0E z@QY9i)2zFBn6VjzOR^a8xEmNUDL-g&ERD{{m+&oU@fdKh(W1o4@|?*@Xm2Cio6NUB zZgzbO+OoqM^<_dw+*u!fCGkw0j9I2@ygDOzX5_7C>$gIqWUh_9nxlqKniz-_zGPHm zb&9%1lT>({Gd&qJ;csC}_+4>>KPPr6q@k=0qb0{Ay<-xS)J}5XrncOCZ|Ql~CJnsp zk-ndd$4U}D#M%gzltdAOLaEx=2-QM)h_)(JClCJgUQAWH^s0L!-#p6g7t9ItsA6WW znFSD{>e}X2=;u(V$-ouE3vg1hTM3~>?e%%7ZoYexZhAN$lEWE+lMp+Q8#_^Ur6_mR z|2@+?{WaQWqE9w8dz}CNKvg;NboVd zK{pQ8i&&OFg>AuwpV!i+lY(8!MSXFsp~EX3fgEjGGqex84ySbnmUVOn*Pkj`Q}|Q0 z>Sp*;wO}WIs%ZiwvigxPv8SplOzI0)fTCsSzWMH;bDMt5GO8cTU5ZeL9bdR)PU#ER zCOY}TC1;bq@VI%i-geTlJNv@5<#u0qCmlxGaCE{>dSki_ZMv6$R(}u~ppJxUb8b;w zPm~BO?#fj7e@?;Rh?Q2?oiUjvY^333=S>P)iJ62{${M#}$KW5FbHa&lec`J2#y)n{5TwtYyyWbOm04>5|Iacms{2h7U%N~tr^~UkyLmLUzUOj7 zpFkY74~smfyz7!R`keKD;)7YL%*BM1(>))e53_{(j{`aD{UgC8A@+PVo$IX_pKLSDd?wAU zlGf*>QML*F%7fbzdkc?)Ev%oJ+*K`RxQk8-d4l z>nR^GBA30tlP-bT))GvG%i&nkU1OLdtT(Brm~Buln6>>*^(RRc`kk#W*0^EO4whS6 zN7qejmpgSf=}&RW#{QJ65~qWrEbTwbK3Fy^RD!1GAOWw6_+aDgjy_m;Fh$v5|6L#K zxk&HmgH2knel5q%<7TRx$F4PIEM5b!Q|JJWjMo@6*9V)@>dph8tX8M?CYBAO|BSO( z_*y&?A3)B#2>JgI`H@*`kH=bjJQlS!FQ_a{U3M96^M69wXEUYpXsLV?Y}dI>S;P1X z>)vW);bN88FDkR=9d;=ee+<_p+U1g>Sh}2*;(b4k8+~B^lDT*jtev^lnbR8Mz%OBow#5@;Jh#Oj zVDY3Kc?0S{C3IFf&3xYh5G{NRSjQ&BauV+%Ai+ zXlm>L_#+;pa1CIh9p`o&TEKFmQ=_eNc2iarA>gI_Xn$?zJA$|7ycPzObscpTg^aR(UrbffJ6Uz}}z+X2OYTkq6M zto`oGUFSGz1-T#dTHKI&Ok`S!-9{gdFMW0RszbfenU?h71)wrmBkjXk4mdbQ7wZwi zp9YStInxg>MBQ$8SVtF>M~Ct{Vcc|w4bf0Mm1JN1ooEZk@$7nURTnlHno&7A<|M=5 zT`q7&DUC!Fou!G!*c|o~A<@`dlk7IuE_|frG z(edlXaV^R!H~@t7_@x@DieD9rS?7wU9WZbpa_X#7}Tg8xzO&h=bXOlulj> zkVcLN-cSt7`s8CK2h=!N(vS*R_@ktNIvp%rAGUtFAQ}eX)z69dPzQ3~pBt z2$mM%5%wQU*G_jfZ~DLaJ_haLn^Dyr3#Bm*p0>Ba=_+lw+8tqt=Mno!*wadgCHVgP z^rAkS_5nNu%7eduPu%g%#jtuh*c=@5D#x@*i*?YgV*0Q)&v+n`sfZPE`KaVMGtA{+!! zs$8z!QVap7Fbi$*&smBROs+^Hq}fvH!DLfhf4$lE!B?z;QqftL zRR@SSUp9`!PI)@7KY?CLI2>O}0C_42^N8ow;e+zZls&peF7^(3z3q3(o+VCpjhxhW zVWG~p%O>Mm1%4-Qps4iWm4J*po9RcgK^XVPriRSH-OvY_??E^QCQvzzGa?6K!(r?k zREO+$!$vXZ=eF2tD%OSxE3vIN4bpBZ{%1KgO*MwOlT7Z!{{c=OT6t$>h2bMk z%w@>rq_gvZYX)}u+s0Ln6`L}7Zzq)5$TFS%0RH$o0Co2%bSw8rEM^}U-&ZOQrGUdO9E=6V7<%j+dhDc>qr72IsES1}Zui%j^g++Nn@!La=T z#uiQy4pUjhDL1^5;901fZNak(|0g-VgnNl#r%Gw}!?W%(Rl#<7C0U5E&&xAX66b;5 zjn3j1Li6p5m4*seaY7qkaWNQ}4+Jq3n9c$ow=oS@?2=_ec6Hx)EAPdp+jCP_dP{$5 z*RGsLS@&z@KWFV#l?W%NXCVIC!3bt&90Sowmb>Q|Zi-hF@(*=KnJZ45N4y^seTQXJ zXC8zP z?H9%7U8o?F18rD4a%M(u2jO*_S?>DHEcfnIxvA)N14<_J;<^c17@aVOoiw2Hat~+e_#39*yU^`iE$%O(tgOwc+pf7 zMSHaqOR(|3vQaxLHPcn4fPV;)bmEY zf&IPtSW^)flJm|2ZvDh9(DPA>g#4~TMU->pJn}fhD;3J?%zb{cZ6pe$IGLV6e%&h- z%j;}hz8+p}EB0u~xV%nuNG4QhjiN_MJhrZxLJhOVrF3Xg$?DLULpg6H`has8Tq7x? zR&f+yT#(ERev4`DS_lV##QGTMbM_~U%-H{)m` zb7cFFXgsFbaLc`q>}LJ3>Gi$wyTAlVISRz%Sb16mO&f?je<}XfbxiaGr$5d?)&>L} z;e44a5?v)|VmBj+gJ&!m$p&Nx>FI)EK|c4((AY`3#%Z4jP!>sz4gII0sITXT`A zIl5B{@;2DfCyf-WDdUI@+eB&{oR|`(chYyLGt5c)B&!L}Z4&te=SgB8aC$(Hg2nxQ zl&2$M z^)^TRui}PxYe!V@$N9t;HgUExJf2-Dr% z%Hm^>+-eZGo9v7thr_Bt&hbRXL^<+ahLio6 zMBX#MBu8O4OWx<@9wJ$@;GJtb@4mgEQpa`5Nb%G%^}oq7CG$4k;|t_WrFBn$FACHh zy{$Pm?s_7pbfEeq=V7_*q|d{~6e#Vo70<&;j}b=QrT1!>hT zF2E62PKC`q1-k(T`IKM6fR{V5=#_Kg3rTn!cF$*U99C`XbG_YfwYK#eo^FP@pn@DVLVE`<1 zse`I)dmqpf@*j49wNsT>WS$v8sRvUKG0rxOoP}xc96i;wifgg-E%tjVQcjqc%#GdS za@jUJ-76x^=Gn7kpA&8y$G@lTVBK}rVPDoD?OS|~xQ<2ePK{mDI&}XeM~HR(pKSe3 zkDJ=VSv-V5@vs>~SsHWw`mrvf`he&i^joHFXX!Z?4uQwmYTBOjC_CEEYVWFNwc*s_ zF>O{X%6Uad9tZ@)@8~gY&0w#GlVjTVO?^yT?SL8HlEdv8Sl1`D>AN+^7lX1EX>5tE z-Fj=mCUrD-#|LmogRAj(2=HQ^C?_hB{W?9C_(E$Z5Ws65Wi=vswP%L$T^gebj5EDx zGh1T-iD+thcb~(SwwDeQUmVh%SOcwvCKLt9N8#2RyJOrNVK4FG!#5g+7w6$!F6uA zqnvVj&y)>eAq{r`o^7&HkrBbeGop}+5Wj`SUW8-%)yZ$C)!OAE=SfnNWLWs-eI+Cat@W}bU|coJD9#bQ|nZC=m2k|&H=!V=nty!R%+e^O+) zjEW$Y#MZ$BbhH^S)#%!ex)P{!a?;iJ+{n6)M_mO^E^j7``t3H1T6i4eYj`}t%PMc= zQTo@7y+c68-kHR{L|NL)x8d(EbiH!+1EkAlP6#@B)>TiTz77WW%M1ndqb2Y$u-C=Q z&w=G58yxZJvgGjUGd<(#(t=Rdrp~x>t@&jZZ}@_eGp^4`4HGv_Xw1m**0w=vJKpLx z%_<*NPYmZ7sG+>4_conl&1)+ogfE>v4@eQqt8CLbt181I~AH5!-|`CtQBi<&U**i*+$m(WWG4(T4j_e6yOG1 z0w)&NT^?y=FC|R2jh#39Nb84Sl$cNAz#B%s)5zXpvRRkI{W>CVbWNV`9WkbM1pUwR zf%kso2aT&SXIqJ`3KQp8tJv~4q5ORIQ_r=!{W{F_3#ykn(#qa#=8@K%@eTLBRuDZJ8*;b+uB;$bKBIzAvQgXIc@SO5&YtoZ&Yg9F7Ta(nd zf5w9zpKWCk6>FO~+scB;*;aW=&<=;BQFFF6?twkq%F?Ejf*sc(+LLGFukn-Yf+8V% z9s5Znh1~n!@sn^5)%BBTxR&mTz@h&)b`Z`hVr9A1@s{XX!`OiZ8C_etr8VVe?Cfg3 z1PjeBJX=Soy3!zujoOvtoW%l|IZ+o=OHR~%D%rzM>6$EMbxl{3Pn|nqp^R^`lRJqW5vbs%-P`m9VIBd%H+FYA2TdtFSCr!H7#l$$L?K{Ca)|qJAyb$B}2g)UEq%))1 ztR-h>S=`9%cunYwVG-x9!5@+^nN#8hu~!jrD!kaUfZ3jsxI0iSIx<#5n{h zqCl}&OW0|glLhQ6&j>8t}Se z1!WA1Z#p2&aZolS$3eN{#6Bp9g*;zMSh~$7fdO-;Xe)jG^B!xskVp4IKeua_``VT| zT4ZmJc*x#f(x}~dLw&oqmw^MJBQ?3V$C}*RV=v4b_x6%kQ^r|7Y!jBhWS(y3-rg4b zjnE(Jr)%(cSm-joD=?ORsD6r(kQB^rtnWLjPe>xypvd8r&=-)dERB~h;zf5x-h*HE zYB{lWzPMRCBdUWAdiyN5-}cUV2LQM2iCY}oJ&(TGCRHO?ep6}$$VKW}h?q!5_I38HWc7f_%jvo#;NmvL z_K4RiX_Iz!+$PtG4rMs_sWNGOLg0|0pK+P0@{C#E(s1Zvb28%ibXQGa4P?~NHcIOk zLhRZJJ;w3XOG)>5jjaDbx^4Z|a*X7Z&JYQst(dlk*p`lC$9)VIlgR`bufRm}$38}! zv)Q^xT*K8xtXoqujVqIVc6>-qy{Y1prPw*PtJDMb1wD4)m~3|J60Qp&7#Ipd7;_1; zmAQ|~7)S}j8wI&Xj-0ajjoSR`&=k(ih@EOo`pmETJ*mWRLYLFC= z#QdVji5DjOk2jzXh-0z(1eh{*>1h;nu6cxudDSyZ2@jGIEq-K&<5Ut+iq;`Q?a5OF z3gs3CrDoBtIMm38F>=m%)AgH&z2ZK{J0<=WurGH7BcP0PF-96^JFyH+<2iJ}PLB7I zx)wbw-X=U*^n-)Ye?*9Ngppb#;{MJqjn?ud1K(LX0NBu(JjywPy(z4PF+Rj1mSY|A ziLc4`<+~s-`qOw76j+xDM3*j^4JXc1oW=9dwA&_O>X-;*^%1N>Ip{a!+uf{8iFF7` zp``|%9Wo=oS;xV?wRr=HwskCryj_k+{8!r|y<2ckp9>>8N@Ve1NpGnK-GuUByEgiW zcyxN@#%{ibaRW*3^3B~7KiB3S1=}rk6znsJGs{doI)0tcSa&!RcEI_z&nex2cv;ld&HHztfp8^G%n|u^(+d3y6a{D)?V@<#IlSBx~^g;1Q`CNZZ)Y(h72rYcvTEP=E)(Ek8Lx z&aVzOecUm39aS#7l@WOH$*<13gSPyXo%q0as&dY8uejWFodZUlQFvF|4F(5Zr*h6Q zFThhDR9d%@?%ig=S=>6oa*lWjZaj}9v~MRfPj^jD=Beu*^l#MVX|GMROP#G#-<)G# zF`d$Ss?do-GnVhvchmkGDKpu*FUh2#1Qb&+(*6}GmeQ-pliPECbk?h=4nS?ex97%p z#~ifIw#?zL$I*0)C9M7ln0DWgjcWCfbA;!=Skjm#am;jTFOhYmAJmgp0~Qie>&;rk zj7`(KLZwq?#aUohoJ2vI`sf#9xt@XUGvC{NsnvaQyw}4+Ppt0aXc5jCu-zs*14gvV z`t>SCr@<+h`Fa)8?*)eD16h+E|4JxO!LCw8quHK~lV99bs;Fw%x$!un+MWU1|0Jc4 zkFUQR@u*#^{@*wQ#{G}ygVzw((CbY+2jdeRjT18AOTgUpKi>}S#V+Ckd}DPS=|T7b zB*-z!=sLVNHlkd?y-yVrlAx+vc?-4!yKzjWgEIKPCS3T@ZeQVHbK2=}~AGJ%Vl*op`F-j6?}R zYG6Yn*WcCLrEv#3RR}+bXVvVrBC9w02x=7?-vf5~WxZl}CyK=P2EGdLfeYbxoz@9H zqzKSE9C_w5fs6~emESLhd#1ATW@uNfJ*CHd2I2V#00yyVb>1UqZWp((CnC{OD-{kC{h?PTX+_ zn4j1S(4yzQ+&ib}d3VL&PomPF$~K4~I2h=qJp&aE70- z6gU-jj5Lf-f#$G5AwF-ST5bLB25+c zV+5|Rhh&hvkr!gtG#=nfpth=x$DW`Iiee5gX2-wAW@Qfhjc=iFxCSla!r$uEjVIz^gIwc-wd*&|AK)!9TZ?-O|Ji{Bi5v^A6RmDF@s|HG-J|ywA z{zfvqk;Ptg*()2(UA@FH49|<6|i9 zk296OebOQ-aQlFZj(;HF%rZg~O7eF`{`1)` zO49s!i1Eo;6+0i)QLu%$*)R(t=T>R({X+x1`zug0`c+hr?me#IvX8} zPH91*623Y>p~*AgB}7e`(Fo(B#+iq2YjQLp3Y0nY+-DUyy@0SMKus0z^SxjVUs5AS z{DGT}lh9lncsPv<>2!*YNs?~~><%URWB4)=N#M5J}BRmv44tt zYC5(uiW$G7VY;YKsW9`OwZ#pxurz`T8Iujn;P6U*u2FI6Obr}cAat$!=k~r zTrMRDdk6w z-f0P^b?NG^n7P$<{dg)ajgtzskPuslNyHfMU#u2F12iLjb0%L2nRYti+{Ti;u# zn`w=o1JSLTHoJ(oIfFY~j!~P2pN&0$BYf+OB5x1hB6)i+=!Nk~=;d1hS~Xlyp^PEQer2Tc*vH} z-008ty{wR*vhRdoB{JscIV4LSWXX?Az{7M1c*-tFP#q8DYp!(|{&*vY;u~p=?J!c% zZSqo5&rwld7GCqmS$!1Wf#Tohv@PJhxsasbYfH;mrVm(|E?QPp8uQNa$BCVq*1{Rl z#Yhc|R9~h`(AUvDBE%l(`K3Bk%ucnoYG#Z?pI|KDt56mL!dO6^kT6-xaJ7w{%f;WrWg?uN+(W_a+#3)K zdbM?3rSQ<%Simbg&NjcQJ5D#hy3CfNTCHVoVkst1HmNQ>2yQPgW9I zSs5w%lylaFWmWedCk#_IkTbr}>X^QHPia2_+7GxTrt z5Xwp^0o*2swp?Zh-YvizjF8|bAF`qt#+YtItBRIouu4#n`BBARbQwA^R#+~wtU)iV zh=p8pX;7%^OzLvw?wnOBcS|C1DYWoIC2sVO?d476Z8xizH8_yM5z{B@|1#a=pELoa0b_g1~fWN)wjtF-R zAvY@x82gpRXYjxkbOffQ0j=zmcdqsnS$d_!6FX}o`^Ke+e^YCtBXiiZSUx%Fq(m%> zu0x+8Rj_{|cAM!!U%rMH*yqdjW*vR;DRGx*|!0TT2unF~LUAW<91_ozW zQBBPGIJqc~1!Z4_E6_01FkBJ?I53`bx*THAaX^C8t2fUN$_nT==o)3_H*lnkWgpBs z#i5Zt>=)g`33)FFx`v}Rf@s#DMd%RVM0Vs9aK?#zPdMXcc=bjOg5&Z~VILG_2{JQz z(V;VwNoW2|(K%}?chZRi53KL3oq-K4YYE~Mp$|ckKK#2y^f@a&I$LW6t+utAJZOvKu%uPN5Ux`YYP&uZy$Z z-=6hQob{vjte*2MLN)wKA+#jUI=DS+b)5D3_N+UZCEfT~I!k?-XM-295K|{S5?VZ# zJxHZtEEittsKer^=V!CAdms!%wNY-^pP1a#i-qdk0D6P&9$FFsFH zSgkt{l*fU0Jlcj*K;0r~4WEp$4FMT=4fpWotcBu+W^2*5uZ7-Nt}E2_<$>r#Ntm6x z9L-EyUlxT@_iVHYcCRa>0y!Eb+x#`MB($5%%gIDwfV0420 z_eo%HI-UF9qo6JHE)0S1>}7LNt#0hc&h?UUE=&7^kqTz#x;UbH%!sd@<@Ia4fbT5= z94NEcf4gLwSBNe{HQkaD@4DH^)V+o~kZ0y@qXkwKYk+jY){4ULb(amr%U)wbitOko zFxAnRz>Eu(3kg8LvO1LPCHmuBa}CcqbZr}N&QB=b(DzOmFcJiCbj+Z5LxzpL)MgNV zGM~8!+3|5?g2N*mcl9TPZ*b>0(}j1U#_N*#mgAskI?QD_8Ny3!C8XQFW#M&hdorGF z_jxcl1Il@?H#k40Rj0HVo+BIC4?}B8TvOloPC`2T-Pq4PiT%S*SY+W<=#5JL9x%*# z$Pv*nOcRp|q#s^@5}M|RSEou};gpt@$MDeR_C1jMw59KG-oa)>YirTMZUb<;?T%MC zIyChPq)I%74lU@e-=%};2VMxmYht|my#NaqD-SFS;kLvV$eM_6gYBfS2gW`hx5LjK z-G{gEEJ|q2_d{(9T)%*I_-5$iKTx5>kzY~PJ*-6!74?vir?LINq#pb z(C>KOGv-s|o}uT$GJd=r^6^%XJi zyE@4Y=#pWhc>ZdC+%-QhXM;r^1hC@9#vpDQufZeyvlTpO$F5CMU#HqW>QXf}vG_z( zK7q;L6FCA}g0zluw0)9t^b79^m@ty3_6uXsQ(j?F($x=b*97a|MI*F};zroUooEAw z?9^>o-}8GZD#Vpvh<(rWNDeGJfH4_RGUcoV&s(_v)9m7V#rfa9+dRIrzWu*BARXy$ z_6w1^n_Uw}gIL|ooVu^u`xao%E#zS1pWiqEql&+Swdl7%xp4|#@iv5raxcoYkaV&n z)uI|-G`}{q1S1#i>|_t&M#J-?7bPimO*t}2nH`;wfEaLJ=0s;FIdh}Sl9#QbYm%3( zqxU;6gMHC`d{zABMNcGogB2J0U^V)^lh+mb6LC)lr$;lKw|a^S^$ZmTXSie-oROge zlG+I|*c;7Bnh<+3YgBHF5)mIMLvUB7@{u()_huF!sR{=(m5)^FQl|2eNAAK9#Hn8imn>s`#^Bb#+Qv-rqn-NP(CvRU^six06f zQ>OWsnZ-x8)&tDqBb)Ugv-rqn{fJq7WV3$HEIu@A7tAed$^VmCd}M3o&PNs>S>&g1 zIrOs@A6bC&nZ-voYlK;RWV7~W79Ux5Jd#;_WV2Q~(6DPE1&1Wq>vRV5ui;rwu zFJcxS*(|z!qS*J7BGhrL#YdLe&R`ZFSsI?lEIwqTHU;oPX7Q0l<1NhMW8y{aU0%m5 zKC-oLWfmV3hqc%GB(wO)Vt7BZ_{g@^*%A0nR^THgj5jisk5p=Br{NUt&?gCoj}(~6 z{g{n45K9uoAN?7%!XZ&eMxYU-ZN?oh*p$r}>zR(7mDrs7r|Ku^@1G?7pH8~#6Y07z z>vwVUckhtz`el|fKU#@r+ArhSV-EhE`V^-*`gEKY*A2WkgNE2+fW6ZA7-(D>>x0j- zT8u75+hGmA3-S!M4xggRJO?S!M{M3OH-e$W?&uYx-`m8A?-#JcP-ns1MFvQcHq6lb zV$|O$rxLQ-)mrTV<2*w%wHqigtTmFjzvyuotxp!4=jRP32=NJvtTTmsdHZkV1nG@xQT z6oNi21sqdDRqTDEc?7C>wyD^iMXblY7Cur^a34U4_>cv@HpaLdtC1bVJU%+)oya^s zI^>B<&{c(3(NA6O1+h-e56wEVJaV~ z)OZgpyF!1O75K=mnh!9Gk8IW>%;F=PwKp|jKC*57lC}8AX8n;_d}Om?!zY{dtSkNg z#Xy6PY+Ey!#fN6OO8*r0z$v5#AF1)E5f&fWW`>x>M>cDOS$w2m?afp^vI@-p%;F=P zbttp=5bjQCUnek&k8IXi%;F=Pbs4kx$Yx#7EIzVXcQT8QY}S3u;v<{&ZD#S2&3b}a zd}x+CN~KGX#Yc*K^O(vDTx{sfalxx_a>RGjnbF=0uYgw0XJrYe; zsgrW~wo&wsq*wnLFYnKi2B0lI<-FC^&8;|6xojf?lG^E@D(LyHyF0D6I&xsg%Qj06 zbe@xm9dri3D8r|1@E@hp+vgF-eN~5X_umvVJ$(J*%&#%Y40F^-@=f-BPPTHvaY;%& zIxVSSxIj`A-t6d{BzquQlf2A{E=ykKilfa;%&o*bWnQ+9Zcd7A4afiI_^QC?ML$aN zFv}e1aQy$)$?J;#?z~Npa+fDWs7EeIj8)>01jFml1miDOi9-};#AgC-Ecvl#zH{C~ z;II61<&$d$ZK<7jIJ=;9s7J>o{i*Aiil8&uI%unt3Y#tZ9BH>zaE?dXB44yXm{5VzOqouZ@h!;9fjJ zv=Q60gk|yJOPm-rUr9}^v#B_%yhq(s{fp7>XClN5!I9UUZ2%Xy2@R|MGOez5qc7{Vw% z1UxjhG6)(^qVLhuNHNAhqU0<2<9HA8^Ts$7yypYhH$=$>0%`D1d`HF}fNAWI>YKrY zi5&v}@AOJ@?j-h!AtCTm8&2c3CiaC(FuV=HlnLIvQPsrB;!wyh&|S52rX#Ami6(`d zuy`~8hId!ue3W;x zGAHwfc=?S7Q44?7BH1^3Ey=IijxpBWnxq)b{DX0du^DsTR}oxvhTz-y69D2!VIh1P z_I9;6(?_u1AJ|9`eH|6UfF#3#GZhAX-M!rl4}y)~n=34nDq)TV@&TwTdsvLD4|hO! zc(Q7+EXUC5Yu6$WzOSdZr#3ixU2jkLRpuAG=5~Oj)f7ry0s{M{_fD@xkE8YVz0*-l zm?|p11zpYT>5zW9yTjv%CE-ndA4GZig)g%fdP|KzvQxdKXw0S$*YGLW!?-aBsOJAD+kQC^=?|>4MoRbm&G^IRr_pz>H-aEW_l|@;F*XTHR1bBVf2v z^mg0G%(Am5^+?HJnbhya@jr392!Q)g^*gp|QML$&0dvvq zuCLl#jeZOOv%{~WXBPKam^(F0A4Y)A(FoAKs#iwJ15T;wO!yE+R0sl4PKS{ryK29) z$UUQeEnWiE9N^;d!^D>D&+V@?1ToGfZRAXwI_!?6&S%V%-Yz{;`9;tKhc++|dSGZ%GODh5K;X z16Z7qvVFze;lKhPz6W721dwXY?Y**GR~K#&7^sJvMGoQbJPIQaPz!qjUc$ek-Y`y& z;S9SVRtmp?lG|0$E{BI73|wO8x%8H6>!zdF+L{5IDgYUyN zB5P{L{{oe*)O2k~ll>PbJ7YoCqw-a#t?naZl(yU5`$o^)?rt-+cSstc1LOd{s+^w} z&BW%HK>(Yy&yLg4rIP8@vubKP3jgWo%O({5lrA1^slM;(ib2xV;?L_&w|yOeaP+?K2Wjr4w5KSKiY|iyW_zBt7j#-$?i+ z<+4Q$OyRWGw;hHk5-AY%=%<8dcz*Ew=x+&lDj9(2Mlf*Bcv1E0m}O^2+weu}4@7$= zFPrUkpK3ll;Y9nEqh$&7j1zvUxL|iywFfO^C~tc0QeL#J6xq@~VybLyv==R|Z2%>p zI1R>i`@4}fuSQQ3$77l=lf8hH%6OhlcX@)>Xa7qyVF)S z&G(K1fp8cH=b0EN1^Zm}okBG08lx2qtC=7XP!b@811Pwt$yo~B0w&bQoZSe#HGr@7 zKlL^}@>j9v1GhsP5&@;hc%psT<_auh?dJtee%mQQF^HtRAcOPlpTjyU3Fc}H_w0|m z&v!Z+YClKl=D%qZ`FC~5-#ocPTb1WsH$n4c8*nRxROzOlYR4|&)6rJAGmqAmkREGv z5l2G&n?V)Yb*(F7x#No zF;~^M#ht3gijM>Y`Z=gi_G8z}!bX7Q0dHc);$viRr_I5?Ymdp z$A=)2&f_HzQG63b3jZdn@sY)UPiFCv&5GlfvRMbP79ZKHIA$rE6~`fEvyLV}KC)S- zGmDRGRuVwO%i2<1P7dwxPLWjBxxOd}R=4#v?-+w!5chdPD zOr>Y_Hb>Wp^*i5t8{j*71#}4Bn}Pe7qJILOst+FA(uL@Zcf{{j<1?jqNA6{DuB+J< zqEB{A_nOoOpXi+Ds3h9=&Ff32{snSx)1bsF$$8kQYaO*Xy233DbMm3fOqr;Lk`gl| z1#y+$9Ny!>uMAinUeENuDLz3+~9`)i}!%q_;1I1SdGYu zfFQ>Z{qk%T3#5i4Ard;8mq?h>6-5K6)yYU{d%v^E^VCRnZ-<4S|?d}%Z$qY=bCHYKQgt6rgO!dvnLHZJlxWC>~2EE#|Eb{z}U;a5-VoRBT%%ua$Hyke2)5sUL?Xfqg)brD zruiVMz1WH--asre3SE=W0aAnFy6nK3m4(IVfsU}a*)^PorFTxsIQ!$Fy^{vlo&_zw zjqKys5LQj6cLZ7U3Zg5A5+vv%moe5A?LFx8Vp4Yon zi;IuetuEn-INyaYxQwZ|KuIkjyTZ{ucpuBdU%T4e z(5K(M<$f~4H?ZG1P8=MVt9k&vQWyn;%m7{*9ig|TzZRRz5-6ilF1hAD*f?H}LN{Sg zbXpac@IK{ZlXQDrc_bGEYETGoLh{GiAA71|8l*|r#se7!a|&vs%15XEs63dr!3z&N zfN6SO2|UcZVSMj--XWLS@6G4resBb*bn4?D{N$TY5DIfsWElG}!hp7`n2qg%UUrxd z??ozZbVbo*6mnWf_vm>hTIW#oMUKL(#ye4^buN1DkMlWem+2D-V$X#OFdncPK~-GM zJl~VV=W5c?E-@^8D1!||$6kl|1ileP zo%$nfEF*teQ6@HdYa67?+T(|B0-%M(==G@D>_QkDULBnakO6w?!8|InA{xs76`d7T`B&M)Z<7#9hIoEib{>V4p&L4)edAHHQ z!0%gPy9&keom&j=^U!ytZ1`;g_BQTNQ9^~^(UCx*K26cBfBoDU3Id$DXAgIW4|zLm z2Ug?SShIA9E(N`O9kJa(a21)de)3);rB%?l23R((z{AO(hkOW0^m}Ysk^Rnv$Kfv{ zhmObJ@Im4#@;UD@J^@mcadORJfFisq?iJ(uvkt$zg7CX2UeZsx=sJX(x#gO%4FV&O z_($P^y!m=oVIjWdaXIjJzu17wt{QI!#PA_DALQju((rpRE^4o1Ix`lfJl*t&F^dDh z5yFJAV&6w`-1d!V(rW?A3=rwI0A-X9g>k{a1tz{J`E6i2 zu}2ZA4SQTE41|xcWGvUn=P`e&KDl(m`?(+ULJUj;QnRv#vm^dK3veOcFEu#%jq8c5 z=jSlfZsSZl52gLQeS0n6#+f$S4>icVj6>#zXXCBc&qm+N*|^PuPl~vmdg5( zNEm(kAvM*b$xjd~lvM<*Wk66Z^Kw6W!wqn^eUy*C5@ETCd}uTC1gRYxu`p&OI>p9ST>G z6mlOaim^1-sNC4kFc~!VjJM(kH75b$c=WYo->{Y@!O-GH8N#s*mCC0Y;WzX+;Vzlfs!+1h)1^`l(bh{UPx@4~vAQQTQuM z91vcyGdP3(B(mb_%e{gMFKB!dbsCR>a!Pvi#rJq8q|!cUe9^)bT+(^0YpMwixXyJL zv)|ZagiW8Gu5;S<#1GMS`1M#p;C-RzqYPFP@&>twYa#h2kb6$SvCv8b;Us)0Svs&1 z+S**^u zx(XH^;9_X?c$!wsUzPA_5dOmUmVBYK2JMsjPq_7!&vh(PeEvHN#lld1Ny-G_FKw=_ zk>mphM)+is9pfNz?Y0j;c5zS~F;Nm6f0E62$E@+wY(CgHu7A@Zc70B0u(#02(C}y3 z`VRg<`0Jzt9sB?DY(B(C+u5%Z-TF^4lHx<$u!R7tK-~0{UV!>CXzn?(#;P%h(QmNhHJ=$z{HrXW45*4 zko?492NaN0*cI{80&m){0JL=x(j*t3%vf|Q@bdUYLi{HmU|NMwMK+J}f>QWv6vjtq z*haaecJ2^b0;$+mSr;OIoUNhsZ&2DMu~j7fHcrCVY>wq8Uw(%agw^vyPuBq*zDjrG zx?p`@i;m)hU_6cRdt?veoPvU_&G5b4LIC*#l3`I2%Hrq4^@Q~f5^k<2zq;Nn;ILi* zB$98$>DY`5X2}5om3CZXk~t^6lLG^ZEL1tCazQ(+FdFg1u(Hs!Lkb0*+9B_%j34JX zNE5W@ZbLdS#`p`t^{YovyCK?UrP9;|(L5h3yp#-imZ-bAXIUK-u!W~pup%_RfMkjJ z5A26D0cr+w;1V&8jE#GFW${cP>oXhYl=bWl;^(#D5=eh4NBj{l`aEWuQThJ}`mgqQ z{ziNedwK`FPOiWe*@PssW{h(Hf^|j-p#1?Kr(K6&dr>GfoV6q`Hj~N?Q@56@`Qv2w z#-Gq8I?Uh6n8AT#_HuiZyX}uA-UbDM(#J;6;BjyVQ+W1-U`zxR- z<&rgqG;#4y@_o_QG~duiyGb2WiY>Mke}ELBvoAgqtz+oGnX1$ko8p zE&gVnNIoT(tzX4_p&cpz{8|WO7=yjBNbjSMt%+@!3(Dwi3<`-m4Rd3Mtji3A}TgtYf`jNr$X`7q$(a1q< zgL2;tjIFQwk*N=FWqW>#MilaG^^FWw_*{kJ{4C#a39)=(+jsjI!h*2{Y`*G720uTW zpQ0f?!`xn9bt6+hm(5q*$mHj<`KkUFviYh0a}kaEuezP;Mh1Q{TVHe|oq|DFa`PwU zfwC=SX_UgDVsjH7P+i90P|fD6E@Se$Y(7kK@BOgGd-&J~kJ#MjoR4j1$M)`&hB>7E z#^?-yP~vQ|zS`pm)luJ<&RN|fSxmMX>$XUW{9zm7ryA=?rN{Uf`##mKlNRHc_@Jg} zdwQykq;04?X7DF#rxQLM+Lk`GmBnD3#c^ofg2(xI#Djspr`p@1@$kLv0S7BK{iF|d z!*ekgA6$ksg%7$MjMc@XiXX9S75IFesQiwP18!}{XA|(Y%D{UT`jGSB1JQLs{ll|G zQO0_JuN^%H9@-f=sg3={hIoIm48**nJk^^TzhqozI_aC}*FEs`RGKcGwy&SWE+W-=8n5tez_jq2@u6$4EY8*1qe|cPO;bC&E55qNqltuQnk>p?DqxS<2-39KyOIzQ&5O81!_c}d(EAh*<-iAMkHxE;8?8^`+t+ylDYt}t^ zs}%C#0Z@L1{eor$;g?XT>J4sPJkB3ySxGn+?nJ^PY+h!3#4$N1hFc}bGL)FD+TFLV+nTSM)z`)#Fsic?2i-Wf;_|fK!;I$>6q9S z8d?L07FC-(+8e$%2l;eQ-Dm_vOo&IDNQw0iSRh+`c!j z&L+O+yjr&x;6VM^A`KTEiF)Z0GrfAZQ(zYY?#&M_PGB4Y^p^vD9@uXTAmW0b2CnUz z>n$|#38>wPKoO|akL@k;X>Lj=1-*1{oW*u~i}huFId2j6(+PXu81~|iAO+DIrTVg+ z`UQq`s8NT&N0;b?VlQ5?WfHN=qr2C)$BxhY$YxgSPh~Oy;nKtHFp4O z1V!8EbZ{JT*8*;x5`1q!c=5?k$=w9>-_RS?bA^KDnr^?6NztYS5qSZNn*IeBD&^b)U@Pl(5PlsU#Ry=%?ngnQ5=^{< zNDK*sb1n8Ic0W@d9!)78YCGJYTLh+p^Q70yuf;C_t>xC&tFyq%fXxnvH$rpOSfKKv z?*I#2GO`>E$-O<`oS8Xss;zw0G|%tL<4v4zIF{*?7sGe^2q2k`@wg3Iu!;;biic>`14!+3d%sb4gYKfO*=p?Mee=40i1)UNOnG3}WxA7Q{ATA(*bd|y-TpDsJ zY0L|TN=?)%N!*AJP5GC-diM@#+679&L(-Y1!aCS!tSC(ji*8}_2-HK;%11~xe2g#` zehqyI!bLUodq8KLeCvCnjbQv@I0=@2^zA~h(@+7-9)1&xB5S(kUO)>E0iUs|-Av z_l^O|h>t-WYxoM_4OFq3ya2;a>~kUe0zWc)@&XXYu;VJQ<5&o_x{?deAbIYx!q#EwsS-c!6phOS2oP)-suOh|Et-KnV ze)wjjBe3(uIKynS$vLRei=2hkTsTu}Vo8$Qucmu>KR|%rB_JTA;zTZ-o`7B$Vrx+2 zWuN5;=*bcAb#wN5eENaJ+6Xhq7igxV$rbT}hDnrD8t}gn1t|u2>3d$hd$_9VV!GKUQRlS}#vLs0;*4^JJ~ z8H6_h=x7~d%)irnaxyj4*2SCvgdr~nP9?vEzXDcWB~u1NdLf5O2lGi`jTPxYIzXW*|!3q1jjudS#vXz$FAb9_wm=;`0M@r zwT{1T;jioY>sJ0+&tJFUm+S=)U(p+cccNRsDY|0-iTM_g1Ra3lfxwxZp%5xi--z)I za*fvmqUj3qGPV?K`-@Rxo!m+R%igGqeB$Ax>*WN_7wW8tnaaR24N4R;ZU zSzMnX%XFG<0j2X9@t=f6W&XQd+@ zopDwA|9R{dveNBjs@wPrMqqC21N?Ode|?a@KFD8p^VgmHbq{~tgOpxDqtOOIB0lG&?%{+#ze8N3enG3-L zXB0R;U5I?&xlG5t#L(O75tlaDFO02@{?^^d_C}JFz@)H^zmxucO&?8B`n&`%Kd@=~ zuu7IbOttj6{4$zHWPpjW`$&+FB6IAE{Pi*Z`Z9lg9KY25g0DsQ`?W9Ur}~n>0#AG< zrq#j}uF;oLb#&#Zcy&`b@9FJdF$Cq=qth^E-(~3?thxdnSXc{Iox{I9!Ky3q*Dk^} za11Vc zw2E0+>(nU}&Os7Z5Ckw)?uPG8isjMjYWM^{0rJ5^_CNfSZ+((~dUCB#$=`hI)AF~_ z`V9a2jSZk%>t6i!Ms9{i7489rDkm0`nhtOeNXl7wHok(wz*c1jeO^^rTgTa=3@T+0 z(^qLa+fJp69Pr19gGmp(gHZl0qJONS;pUvt5trA_g>mVLJk^zjAPM%SAQp}Pa2 z{ZD+X$+QYupGS_+%l8(cU3j&ii$JFuEk@-Rz+d_~=za^Q7o)u~iuzJ%&Y1WtYE|$} z=g-OCoU$nU1bTZ{iB76nD!=vHcSGz`u;uesJ2_$S|D zro&IB4VE$ErMRgMH_p;>sw%-vW#d`OZ_GD-qDx>CX(`JK1~waxVY6RLle&`bF3^3r ztBP@VaD7vU%++9$HEzN3ZxEnuOc$8RuVKUHR-4PcoRg6UhdSzpZvh8kTEjNSC}A?c zmJ_NDiBN4WLH3o@V~y>NGIPD29A@JiQ7G@jVC_eCV_SIEs?C|mT8W({ABSIF1WPjE z$((mYr}ipdURtX*_sljl+sg;xC7j|A5^gh9FJA~RM@9nQ_l^Vnm!|roihlSKAkvlT z2r_ZhEeJ0Kn6Bo0PT94DSX2?Gbv4_)A5_2X4sSK-b`=Q&_5Eu6tr`MJ#bS7vG&;j8 zuG|*nP;9%JJmkhT{c7NPBw@(@Nu>}Sia91%vB4GoHE@BNDGhoq_$nW|96UZ;0x{~3 zf0ZdKFgpjAOUf|a?+b9P$O;R^AOAASz_LeqsXHt&h(%48@IN_I^wq*(OF)Q(5d0oA zv6TdXJ)N)ckDdg*UsL{%U%{bG??jXYz1R2xx-+(rIMYsYS zzuBJ_AEvi0b{W6F&U8NT`vLrct402X9|YLuwEh+o3-uN;QdS@i*Zg;IxYNbKA14lq z$hgo+o^t-zToEX&N`J%x;D-$t@Q^H5;a!R%U2>(m<`MVsidzQXIg2*~o43}$Y#{wdz+4hcVp zviS2^K~v}wz72D$FJBs+@0S`MM*8UN(n{=5_~NNDRbuZluZ};&(*g!g5S|Wn`-;&y zm>lpmad&Cqe0|I7+l=14oHp+*%5@!0zqg40^Sl5Y+b8_X-8|{u2;Bul4+4phY`1&i z;MEiB0s>W}BcDe}kw2yu{(J#R_`{z1GD#Y@Ys!86QwWbuk#j!CnbajXys;!2Hk3sI z)4M!e@7-Na&2XZ;_)2Vt=)AF=fSA(+NO3Y#coN%WB3W0N_CzEND_h$>77O9^U>dsW zcwso$5B$dyG@b`PDOQfrDnbT8Y*c``p{t3ERizLfNuF{1wr)J7OmrT`<6Or+C{W_A zo3c3CC?s(zh^+kxvMWIzuB<|MD4^=EL+~qohXUhb;fe=das_<&H{cG;pa$<`FHSI* zAK-cbcHFs4K@-ejeY03ows6hFzKxvUJQzHju4Yc{M=ypf=T!_i)hU1TdaXc@*nOY<+_-`PR4i2b%sjit#%ReBBRO!iUot{EVD)p3G4@-Wr^@#i}wI0P^`pk5EjLt}qslFOJhHa$MO?ft& zN;kSS5$=>uq z5>C>Cohxz%TgEDo&l1o%-&5!*_LO?cJ(Zqn)cw{UoH^Q~XX-$LtG z^0(Ofwfrr$ej|U&t>4Puib1+6$Z`-B`R>*~kPnIkJ6F9S+cr7^6RM`{(BJrx@C8B@muim4sH#2e*oCBub>d6b^Ao%J9u8W9BPICn>`>DWkCp5_@SJ zNLYmBj-ql90=!C6>awp!-`~sjg0XEG@#>EgnJdoJb$bVI;-`3xB4~0@R)j;OK)4MG zr#8CANg9w24J|OWF4tPj2&pX?_aP?C)@xYSm*+(P z*q#Zp`izY+lE%Tw@C;`_f)n4IGRF7CshgDHn^VU4%{Wt%GJMOHp-4!|@XaYxQQjhl zCuR8NlrcE}B~^xRD8o35*Py`7q+>3;0hE)#+|hwRmS_o&*QhQzCd*y%-rnAYm%NU;eIM=<|0TGuXmtiDl)5Z9Z zCV%xUx`5ez0!Y7VQ$z@tcJ?S^aiE)v4@EJ?cIj7KN;yPiT#v5wmHF%4{8i~KkM4{w zX3;f^ke(0F7eL?a!nqqTHq+!pp_{I1JCR+ClVkv1UdeKO)mmQ{zhniXRr>myD|-92 zm)-cR4R+zXdJ(4~q@*KAKBA;w2jXDtZF^nr?bb_8u;E`Zzq$ZaL#@%Y5UI=ge$Oy4 z=+{^jLV6iq-c+b;m7r2?M+LoYR=pC;L%Bjt1^{!o zBE$$`K%w!zDI3So#})qcFR3td$_mP(eYIL&y;IFAPR;5XBMf&Z^X-bHQc>yeIA0Ny=Lx|Od->w3bO zD00E3gV(6*bJC{L%{oTxQt9tgI9$mked&f@a$$ZUhD|St;aV{g8F$vd@Zzl6|HNz7 z{$Q%WV!R$}z;pyS?$ZVm>HmIhlUc&KYhh_H;*|-7S~wkrY36zeO^VkOqhCL5Var<0 zw`>{ERNI#_e9M->i7%%N-?C+J>dPs^w~=|X);z^FZ}unnw?*LQCt;YMENZAULVf4O z7)Sn#DF^*8U>R5~IC_P@g%%E1QA5K?Eecp12&38tMq#1QN9dY-im8Q@WTHODbh$-o zNieB#ov!I@#-!(k&u(RUFp3QpHYHwWf1J$);%aWfe3Ql{J8@xGM07{IqguYsCYS6L zlJBtjy&t) zgBFg(aU^m2Ej?~VKVZ7l5nkn+!-r?-TqcO54BwbKxfXM;la=Ee%+(gS(Q-WkRMY?Ev*h%An9aAeFKa71(5 z5l#Aj%hpv~$?iqh!;4(>E4(CG8%IZ$;(9Y3Tz*f-99&|Z zS*CBZGfOQTQ?dtu5d?=WkCLq!+GcGehTtX5ulDAf8)&IkcG>Voav0xjbD8WU$Yrf+ zvgH>R=!tYd)EpUC9tt7`3-jQQ(mQ>eGz)}z`9rSG-TG%Ql}U;5WVq5o~WA~t!CbURa;K2 zCi3;bvvn5;Bam^$;*{_u)hhWD~>5P2H;uTzFvk zmRkB&vh2^=XneZ-nJ*w~&L(l*FMRiZ89nXF{QJU*`Fq0LwN6`4FDO@Z(wp~qMBXk9 z_2%94dLEC``)h5>o0ObV`2Piq(10{Nq>f{Jo3D+hZ|)Y6zV>4rMbm`E{~p?g5e}o6-Bjf}yyq zv%ZWr6|nQ_sZ*Xh74^!yJ-02 zJd@A<)=lkX9d26fA3%oArV9j}L0J%VAwRn&hG#fLi`aN<{RRLEW1-}cw}4~zMDEQb zK34gPC}Qea^gL3x`wK?B_X%n-jeWX#r8QljNp?-tSKD`Nd0127&)VkmJ#0i=i%RTSWq{aofQc4 z_093*Qq~MBJn3*pUB?p$h^4K$IDv8W+w)XN``1@nwtvNK72k{TN&08*Dn%diu}MS1 z*tB|8DO(M?N@J=<=TY{bRrUarq0D~R*IzZSJY$vDG@r{Tch%R12->^q>kMDJ>b6o0 zE9DayH}5q>ydA{7B=?|0j|^XNTbX!`WDm(%vv4rkpPxN6&o;iT{GdQY&^Q`npaShDkrZ0k$74Eeon)sZWo&|6mi#=SHZw^b=exM+fd zP;M6y?Af+%6V~6sx$;cRcJ`z01od^&ZFinw_v6ywEe8$?d4A69p9Te*Q& z-8K-?RXn6uEmrkMy5*4%7X(?{R;lnd!i^u~iEXw!jn<|c(pFM(jSn@rbtaU-_DA0zuXyO#3C!l$zX z(HevgUxt2?=rQzT>*m0mjtgt;jCUF=;;Ywh2qxP#-YAq@B&~CRLeT>TSa*e6gpD(O>fKBCR{jhn~rP$;&`LIUMQ*VFv=uFJ&-@-4MM9*d<3MZv8JMdK-@ z6i4PTuSs+lZG5bYPc3W}&epOvN0^*&S5DFUj^tL{wEJ!}Uj?A16*ldC*GI&a`H_FD zeHy=}*?UI~ZLn%UUk!U#UU5@2Gs<=!+WY4`IW%BiJ1%Rg=7(tLh;r?s;-~gq@w4pp z`k?7#1&Pk}EH#T2{&9_YwNYN+XNIG;P?Q~DjAF6gc{TVLEj{SG`y{FQYhMrjfZ{0*9!`aT*d01DUuNunWx)rp1#Kl*8OW0%de|# zKvsDq={tVQ`o%FbEU;08pLrc>^6OkS4PQbsuDBK+u}G4!P~5=Qav4qNlJD+c(o9Ja z&c?pZRt9_73bHsg9d*C%eb(E74F_QH1_O#BI_~oyZlBzz&Ylh3j@s8veAU)$4Z2l< zQ`<3evQo`@#IZ^6_?26`B>C0crLc8|R$5ZF=Mqm1dbMt2u zG{rC+R&6ks9I>^4)kK(wTF*{yiME&9Q~86#wx4??$91mv@Owl!ctblg9d+as|KhI3 zb*l9zE;4r3D=%*Ar?Y`S(dL(T%T%UXe;!<@EI3#bd2P*s_F^2+MYqaJvdcMWWNR5^ zNGYvP`4`}NN!iv*z@_D=4e1XoeK%P5c%_}YlGeLN997Af8ipuV|a3CQ20}@^|CI|8V@?$ z0cEov_Z4OAdvEt=eT5}wO3oSpLpA$pZ{b|-3383_mfcB_FkOc8VqW5WBzI9FAeMdx z;`UeFA_Mb(Ud~S&UkHCH%p8foSO8y7U%ksJ#Cl@=t?##2o2Mc|`fz z%E7iK)Q`th_49)ktJRC!Dv(RYsq7<;tv>nKOYL1g4*9+Ev1l~N&v`Eo&nZTD?B2(4 zDEeh$$=^XH4((r%S7$szSWkZTh$7eVT9ScPzfT5^?NYMQit|4M!se;V1k2LzA+&+8 zgu($XQ_8!*-nNxmtBbGn6PwK2{J4h`TLFM&hDRK4z2*Mss zddvmBOQN-OdZ9HcN%TGuF^S?FqVcHF6z`&--O9^|wXf>?jRodJSGsWZu` z%;jf&U2Dwjw}!#l6#0IkvU$tlU24cicN-WvFt@*Ns)r)#S` zp3^}!eGj9i=goFjcz1Z|l{waaFz}NyeQ#8|mCh!9M8B2jQd;?3PIJob(wqwUS-_Bm zdF|tLR8Q|ls!WkrhevH*4XZL2O-3f#HB7p)!zJ2h<3K@v%;7U#Uj-k=0Bj z9~yM1e4h}13i(Io`T0(w^0GALhrk=LK;%&PCCGq0a=AL3!5k5kpgr~6>&!aviQ zD^B+$vMc_Z#Z?Hq6E1g4SI$F=R@H564!QeTXm&ppA2(ybEgeIyx zCupbAHGA{*_3;GF+DR`jS z*`gY85{!1+x;6EA857(s5hg}zhKW(wbAgH6Q&0G4+sJZsfRCMwn_Gm2lyM;ii%)?P zl;lDQk)h`AgIib$B}!V&usK9d)D0mMmGnOy9Yp$5DhXfeLx!L4sk`+WkTFpibnKjj zkS2y*&vzx`g-2i;gpMKNM{#);AL($Jn}m}IDxw4qEm|W0Yu*JlXTAvaT78}hRBbK7 zTJ|6qF#oMs7F8=r>i}SM_a^biYVo>U|J6iBEVDuqKDn!h(xQ4p09gh6gH;RUJqK$vSw z7$lX19D}AF@hwReU*xdf2w-e86U3|ugeAVrxotTq<;_lGA^GH}lH(7NLbxH;-26;} zp+@Mlz;n~B4}y`gq1mxKxpjsijOh4D>k@k$uhjsKJFn8gg|Bxi*3-Lz=Sw}fGs9qx zJ6s7A{Ak3HDCAws=izdcISLi)r~*cN5Ov|H~Z+%lw+8}biSJ>c+_z%ay*c4|mj_$+QHyF>m z<~vX%-zCXWjeiMLiEc5@qYf+^-m`+!ibvNjq|qblieLZ0WN>W6t2 z-`Bokd{uYM(mMf<>CX9QZXKYE%Id7Lp|o~Z;;3tK$+2wWh(+Dc<8~`*ua=w|Wc%Y7 zy0LXm-a%Dd&E7z-oukNMQ#e{bN#_`T!roAiCV~1tMFZSXyNj|cyW`2vUOk~@ff;$E zd5-oV^V{ZtZ<((nv!m{u#Sg>2)J3)u{^%Amv_h4yNUR7wKcxH%37*;%94UX#cb(Awj8=_++|ZY zFEcL{i1X`Bb>-}J}r9PXSHeX&P`ERT0Zy^5c^ zlGcZ)>KGEeyDc%#J2S6DJHmPQyvFy{?$^!C^KP?olebXL>$Ojw(9K%X-^zXDoxP8| zQ}>ZK-jnBJDByfXckubxLtg8so_emc_=?7txT`M9a~U3!!Am!;S%u)VC%rS27k$;s zbG9D7*~;T#l4KlDh9Q|5RL`6jhq-rAZ`=e2TZj6aK)fV#t{@OBy5(=|nX>Q81VwZ4 zg_+P@I2r`q^6Dr()zn_#wa5R#HkRbD*~PtXk3NqB z%M`t+jO*6!)Hqr%D5xY)=VB!3Zz|G7@49pMO{J$J0vF>2Ul!q8OY^1ZuOm@y2+xJF#qADmS6LpNbgqTcjCv0B zz?8%6dxgwp#_g1R7+&t{@N%ThGnOuT*ZkazXOJ+f;F=Ha!&l9G_XED*!2w_2 z&GA)faPnMPO|h~JJ1XUk63QDE{T!y*`8zkylyo&3dpNsmm^KKFVGHT!3%tAMSK>=*$vaaU3tcJQb)esuD8uGw%VrTttI~~PsWoOcMa+J*jxazEf zr}HluTCQYNb-M|fpQ`v&aiJ}rtSx*9I86XFk27mjrfp6e3(q6VPiwheQ0?~NDpJ?+rF%dRQVUSAxqbrj`-^IgsyK7atdQ~g?P+$m$ zaL)w*S9O<^+}FH{qo7~1pcE69J6UY1H9uDnT{L^jQq{OqW}zC-D|U|?&2MxYAfPsM z9P~)G=}332b-a`h+Nj$av>y_syk6@6AU8ngi#A?^Hnv(_RrMBp>du5MIIfoXt(LQm z*Y=&Md$z&e{Y{=9MgsfT1B){I(3qDdRR;wD%KyE6360&p2JfXm=_xaKPyR(-hCB9& z=||`)YP}x1zTp(G-Fh$(+;FO%9;&C)^z?8&-B(W+=;?HxqD7TnRKfO1{4p;>d(Ad8 zRUuooOWArYXRFClwqDEG>Zg>gSI>?%vp}TjfNqnHx@Uo$%ul}Wb@$7*k_~b9ji;Oc z!|2loGKLb4HQz=t1I4M!$W`{Y~G7?;Edfj_D3E6fRoc=OGa zZo{t2XN_vjW4rI1rPZob;9V73sH&nRNyazmuCI!46a2Ql3HP(pF$o$j+dkEw_hW0i zYx^t@?#wWa)J>w7)Aq+o*Vf8`~12-W*%m?jq04p zwVG*{4i7d~wRGSm9fiyGZb!NwVA=fIm~}1)d`a*&)qi)mxdBOa6kfKN*t19|WZIX| z#`k;2uKaxLv&Suw!b(zWR|?zK9eSUr_0jIoC3)?C=q{Aye96asHXscgw_t6m^QGff zot_nZ4hgK_`}5=b8FruO2O7I}GUa9j$*&EY+dc92rT>xq^a6^p*8{y|FX_?NMfFD4 zaBIHt>(da7uPy`Y)hsC7?(_0^s;xgF&yU-JfU5;p12&%X*9vu3VMww)K3;h>iD)Km zSuWqwP>3(eAYK8*)+iqqboa!fN3CP|SXg@8Ry}lW zG*ODdB|hN!$l-EgPqR|}B)WloLW3}t^yy@@Fscso1)ted`CwA|G*Zxy%Bur&t$&1I zN=BQVW3{0SOY5*=DwIDhAX#ruh@NN-f_tUCyOv>S8a6e-WCdf!bcO+u>U;n?%!TvK zAKMt^YbGcjnnQudqPXBgfW!?6l}5$fMQ{^d5hGD*@EP{P;hZ3}c*G-1;&&fhD)HL# z!AA0Q2YmFxuu#CzFb@(@TUeREWG*qT%-wfSA8^~tY7nB@s6K-+W_xz1m>L6hb&uz*5W&mKd9x`{fWNhJpc8gPCUV)Fd1zwqeq8SIP1Wy{(pE_Zs#aD?UTmIZ89+ z^nEV)`Ke&S7;!9DrE(gPXO2Y!MOLlUM`w@VR-WaRrYYRZ3%yeCqfb>^_SMJ~B_ea9o z#9S2A_3#l5wuseRkZ+flcz)QgEWc1PP)}@Jo9%Dcb)7zLRE>8OLjk|lXgPKBylU$! zMP|MS{6g@u2i#QT_`FEY^}N>2c~*|g|5BaSY@S@~C!wF#6*=(8(uE@FT zG;yphuJ5c_a(#z3gv%rOz07dg7Cab~Mma&a+GrRGmbg*0+*KOsj41pDJotT{pgVps z>9p{h9Gmpx>#>}l{!fuTIRCf%$^Th7e^CEFFA5CoUz*{t;0NaaazFY1y`TJF?I-`& zz4^LVRK`yxET(@b3JJ!+W&Zabl)3vJl=;&=DD&rgQ09+4Wx95s)aar#q`~vv9nRqV z?obBjcZV@JzdMA%`CahI*TU$Tm-P3==(K*8=Kp0t{?}}M+4$3COlu&!qJBA_U4Kcw z^KP$y!+?C}y`KN9{p3G;KlwKf$aj9~?LU7&zRTmDf7O2SukOkBz2ldLpVqB;miUrv z0iJH{uHRxxhQyRu>HG7N&hwYh*j@X{|KWb}f4rakpYA9BNBhbD$$s*Gu%G=e)505pZx#YPyR3VlmE;8ff$bt<$iUOsEsoj!7YX(q6MelCUbgc+*WmW zHQ|_`5dX%5kjfm8%rc4VI)x*)Bu0vC{zZP8XZ9aTLB#`mxPGgh^Zn-n{m7Yy!)50Y_R@J6KcW-j zCeTQLRn-kv41a<(1%ML82;QFZYNR~20p)w-N3~y!PvZ_gUIMo#J>1I>{Daappq}&~ zZ)$8sx^%qOesN#k?Euzxk>)b|ZK5%Ynh>{s)U&^p^A%j7Kc7f3^ken?tHsUvGq^O{ z`ZVY>P>jx`CkbUf2`NnNBmXn|$=8>W_f`L^`>DTYKlw5!?5q9n?x+5b2IZGz8rf@pppm`i2O8OHexTvr{L*}sXlSoxN;I_BG9?=Je;_JD~?Tg{JGut})iDnN;+;Gw@L;SB$X1kY(+ZR!E zjv!FKXTe!O3;#F;?h|)w37RrIcd}5kbY|A9(Z<#`PJn1!zw!J~)8Sxewiv*j?Ud#= z?}dV8;XKOLnrA(!rzl4I)(rUQY*W#;{#LS45+c5>+caUUbRvE`9 z`MoDZ7mT9+5zV5s@tHEnXak|_Da`u?IEt3$J@I)D1F(1oqq8%OZlGt397Kv6w_X~V zTuN!^TYF|27Qw(mh>=hq%Khnj;R0Zxjvvu*0AJ&Df4dW-jhC3%5D_HHD6g-An`fvX zd;Mdnr++Q8*RwjY!|QMJPoQ?@CS;^I!}f^z-BN2GiJrWAN$N^c*DgstfYj+yYM6^k z^n+>?{jQ$})Xc>y|I`i&_M^eyWg1}nvHX1uDNs{Nn}M39JC-}$QFgR&3ys#A+fM4P z5o$b`HXcVdkH-&c?!o2eu2g5et#ToR6txgV3rATGUq8O52florjWYcZtwXrjZL+Nv zH$09Q(RttqM)2*v{Iy$%5UPT!!?%s5y`2>wEk-)ixk3;uybCC5%^S%mp^2}l*%0|A zvo$lbg?lfdJ=h;tC%nCv7VSj~SJ05nC;l_eb18HF5(L3FKSr(c0*ga6jt;|b6mfJ6 zYcqzUKIAP3YqjROuk7@743z__eXhaI9!mFM#|XB_UV=P> zvdF%BNo{pF&-AHBiuv4$Ek23_*bOkQG>x*}vu_#y;7feXwIA<;W4dFo&y<%)Jk?RP zXn`3Eb6}us-{H-|!d22MyBXQNc{b!Uhd@;he6V|6Vvx; zI$6IZLy|z^33%f=SKuH=%}t__sOA- zZG678d*?)q$Y+_`qK;Z0VRm0Ci&+}0$_MKEui}fJsiEj!Aj2iN4~xyFpkTsUx3npw zm0-&E^i4Du_H@l7_tEkN2IFIIhub~@a&QXWd|li+O9K>^N{t2mhPUbZgxAQDDp%_~6S(^IYWtJxejsj^<(*>VQpEpE3J-64r`vq4$w2%Lmv(6joo(x>(| zwVI}o+6+_mN;b#qjDOtjV!l|H{Zl}h?&v$p*t%cAS~j-faqggCYnc_dvHb-4;h3SH zXyFOY3-v;wyxarnPRO)MTZO=%0;j#f*p9fpkL4tL854kv(0=S)cAGzoBw-=PB%@0@ zPZB({o8oq}H)qciBBw0f{-o{p6Ne}T7XAc$L>#EEZUrPLyB*o8Bv661|Vh0zb z0T8zh0s{8nwEWcQkiT_W)_PbClKv#xvM);el+EF!wdnu@OSeI_INnP)*(_-ztdQ<> z*XM@nUPt>Up@DV5n@98Jf=H9}P=jybeL`6!o1}%w3RiM%olI77+T+<)2sd>r>47R; z$<}-4)(S^YpRrD6vxJm5<&RjppG*=Jod$d!S$A3re7B%j5itJ;=={rl!{G_?weB;0 zX*62{K|>JNs6uwM+*o1(q@`*rBgfggXksp3|Ni|3<4Hm~yzi9I#N4Dem2o#zcVZ0} zVvdZ#`T&qq0fgmkuO7d76ZaJhOqs9QCE)7M#$PI(9e{?<_^*IynBO1qI}-EF$nD(D zcXY+|j>tC0QcKVEGDdpGS8LVSHEndTMAH*+DDr#pPPq&U$T<`dSKlw5+|QdBJU$9) ze-h0H%a@l9KHQ+x@{GIt`B45Sfv2mM_XnC_5pj9|Bh2p4=sMSu7vbtkqL!M!JIrw; zzXCqF0S`_$2{&HRUqaklZ`VbYFR>&%;Jq*6+@xURKbf}pbVz?&#wWrTm%HCDh6&Al za&TkXdlg^O{;`#cvq7xJbf=8T@Md#0W%JrQF;h0cZi%O;_H<{_e{6r5@@bQ9=M*{# zI8+wcJ4Qt0jNVs3An3#vuYEK)Zfn;}KMd)2v7QeoLTy9#?aVf}b@_T{z>xLntdgpKq6~Ge83FrU8;? ziPE1}a7D92$A~jQpmQ)W~A7 zI-hURdu;P?tq%*S01N=~h;{r6Yj-K)=HyqOzb+a3HAUTLqQGZDmdSHwGx5 zw-;vxXZPWqh<^A^e_b{8+$_B1s~5IG+Uwu`pN&)2G^ zXKsZru{} z3HQZxARDV^B3>Z0hINF}s3$AQ1ZT5f2(D;$Uac&l)gc!P*wQPt9kYEUE25#Kra>NPxt(QS7pP zdawW?>ViK+vquzrg$o2d#hRaiw(_DP+BwzUe00?O1{qFi*e*^d)p$iEx+uq0B}qrI zUE3)DngU}dLQ&5Jez;4&iUKStCp(sgvcDLFUNqaPmk57KYFS1kl{5dnFm9>aj_MWm zcdHciA(4Hv%kU!FZ&&&1Wh7Bk>f4sH(_zFGx^e`|r zTy!iPFgO2*ZcqO#pw?e{l|UpvL%=M|8rlyoFYQLsL1G{X++>g2}{(wQ%Wh(ETV>$k@Seig;dFd@NCoSFj;C&eRl1Tx0m7T*R+ z{v(|Zo>+9S!09DQ?2An$+r~QSw^V6nd&hYGj5V}yE`_}dZwh%xF6#j9@70CPl%R-q zkNFKHv-tdqUc)zf6^D{0W;(Xnte{%L8pxg=xl$omsR=r zE@01;iYIQXB~v51w$I!SxMo+${*!FNbc}I0JO z`1D4#L_Kfu%}kJvlM)h0?C5v)-XelW^o&S*Yyok3L=UqOfq{$k0Aafx@1$j;_g^+H zoiulr46{l4AS)pq_2tl1&Ez>FZ#qUSJG)EXT1MFxiVxRpEtL*ZKQ1UePCS#4xfiQt zVA!r-`jha`?JtR5$t2aizolr_q0o>*bg`wmHVL^7bn7z#Jj|7$xfI(4FN~$t!@L=m z$v45u{^oORCsIruF(!+pxlRFzN6c^{j%F|2cSCTYy)`r-qv+q`{`$2XQBw>L%Ov=f6b z3?nn|13}z+uqB=Mpz~EFx{W>>q6I$#%%lkdy!?IF9W`esftp>&-D$ASPdCs1H}q+x zB#6~{9gZg%m=dj4vRP3cchYpAR7$PBlkYVeIod5n8d$?6U+V1f0#hM7Z@|tRV9iMX z7%EoM3sgO%Y_O($->5{#K+i))&n(o3D=V?l_@~98;}TGCKYe9-{R`m5fYu))o(}a?eqy|do%V3LqJR@(}p><%xiJyWPs4I&*D47~pkS)gnk!dDd z0M4*dLn-5il~5|vG1FAZ*)^QdvoSwoo|j|bUSxxNx-p+H+swAvW){t+qPHcO%Nw@y zmJ$f$}FT34vCfYd~0t3J0UZ9(Y8+P z+{+l%WR*`KuR3aSqB^&HqB@kmogh0KN1;G=8|(a9)~$chein|Mz62ZPWIft5GTGn* zj={n=5mez;0cH5NfHq0H3L{WL2ww!rxRG6ji7LRpXL=HI!r`CJ&36;wD{-939|!$u zQ`EOT*Dgu~E%__*by^gPXs9ievc6L-0bp+24kmo_Uc!Vk3j+viL4{N&ML34$KhUMy z$CpX57oD|i`jN{oI4?%98B;z;9DwJ> zQJU8c2%?%k29*n_%&=E;orT{kc~G~GOS`gIQ7q@M6}w`R9ce3P_Hdyc)e4kRwrwp( zL*?cEXyt65i7jS$*k^j$X5R`ND>OSy{miTSSSr!8fosHgZ!U}*<1uN)xp2OAVfKf@ znBe5+(Yd<^g{7X$D%@>e;Iq;?FPMx&71mfu#;FXJas2i(xJ@j^s*Pno2>6pB0Bas2 zvS)o_?_3fYnD)iz=J@X8RiIotEv&kG(P=5iby|N`7oljb(>kt~pV8WyK5jB0~n9#HcMB;jn`jBS=&34O1@oIgPUf) zQ$#3m@ldQVmXuj91jW(X*dyVvE?+}~RKUb5zlEEzMj~{#{44U6TMG&=Tf`ifF{({z;HOBx(2 zZ;YXo-__u_GVoOzx&D~cWq-m!-x4KvnebIkdI>aCfDoiRkSd^=n-I&k02qixVs-J9B}rsDSN9Uvb8i!kXZCE_Co ziE;Uvd*LmsBvhb=6LjNd%U0V_Q?91Gx*>EL(ed zZst2dL!>VmOw8!op;D_HahouH{Z|}VNM5*(DO~q}(3t?EIXXo!UYMO^f z`@OPJ?LB_43=75S&{OLY*xhw`{#ZAEP@N*}e9@}MB`eZwA8~u%KGV!rS=?=_n3K7+ zCt3Mth#J-G>5OZ|ve3R{Y{lXm7i>xPBubcET}^MK*l@ImeKvcdrGA5_Oi%fJPM6pD zR>rh2B6)o%dOE+$Z4b_#LIW?p3Q}&=T3-ffgn1OT;Ney^NV2Cx0o4s79^%)}M2Fpn z(;jU{VBxS+q7C@)*>{3v$6nzu{*e}kakk)&NwC_jXk($<8v#rk~>@C+x}H59gRRQN;vL`^p8>8r>ZYoxE_2PsG=xVe#` zxdvuXJ~f1J#s{ZaP!^{1&Jbk!mV@ z4J3U(&#l|>76{QhCz*?H1KY~(T<9dNK&~63@p>a}5aG5_pV__z=^3IB2EgdcXl7UB zA;Ut{&@aa0bp)jslf&%Q#@Ta)H9m7t87KV~(#PT<>ONZ~#_j7RiZ=Q%1=&5F6BnPQ zsL&am?&P@o0_qZvn^>S>xcEp_cbqMw?TLU-i6i-;+C+61$BLP4U@t)O-Y6cbW>w}N zTE3ayim}$Czh!#E%*YO>};@ulj~6epV5Ne)8hLN!qZ3!G9&jPXU|vnvF+=SuENXul^gm@3}_ zm(beaTb0q2V05w=uBAIEK40HJ;IQjwiPtp7&;ZgG4$-dfC78?xI2Ko?lkBw==Nkf8 zxs&t_dam;EUM*@{N|QA>?hQ(=$JulAtImriCWox0Nr#iE9-z{!!t zH^9-db6Bbx_VS74oaZgA`F8EWT$N^-Pfw2Wy^N(r4+=%UM$w5;3k+#)HK7_@s7JV38fEv`~jXT#CiLVR}G=zZEhHF^~Mmpkh#;Bks?|Mk*;(L4q`VPM zp>H46xaF_S*LbW-5l*bOv))?8@_}dYdAV)UZ%kBxS@muMIObxQj~HDv;qlZB5iDNy zv_OzK>d)ch$xmSYs<)cY?Yu%nqHN2|nno(!E1v=u8cgZ74fM3vct z;Fyo(-E};conBZ`w5!a0fX)JoH zMtAbN#^^08_$!SbBhBieBBJavcitgU%9JWe>5G7adbyg_qN#n!ywNH3h(I!$8}PoRO5)F8xj67Vn?z&7KE3LI(|N{`)!3?j^`J6p-x?tUIF3Tkx1ovL~oT zk9(!~0k0b%i*XmSB%f8Hk5X=})23Gy=j|l zMTtJ#lr(nE^R22teahG#)#sM8XU+{Pwz^!KO-xYyZ)PnO0`}&a0^Eb&|r?FJE!DpW$jv!xkdK7bO!vc-Z=w<$- zu}5*TP*ABs}zo3!+7tXgYE)AGlrzb12K#0}*TxO{Z> ztR>wX5@=K1K;g{VlCDJgq*p>`T~yPQuH4A!Hc6Y;A6o@27p9H4k}s-HPhc+)%Az^Dp^( zHev%&pJ&tOf$DQyD5a;9=;I;uF-)^XFJH0g_g+TmzMf6fAEn1BEvLO|>lf&Yx$-i3 zui@z9w0V%)L}NDGv#Ldv#k!vP98+Xr(92X(yP5rBndH+90lO-xkw3sDa#!^V^Zx+k zOQ`z!Or!5%%HX`1G$3-E{l+C{Hqu+c5v4gVh73!Wz*;Bw738uR)*C}X(yg&isG;Z8 zL$FZBF?p|g^m^e)Yn`=_wHPg?(7C926!4SqcBGK(bP#SzY|!Sbt!j8_{XuA1Jef~q zkJq^EnO#SxJ~K3O9vjPpX>V>709CVF84io=AE;6k*(@F!nzTZ<)u@gSrGI5`G{Q&g3f~FgO?rY2Mq5>5KsedUnn3e4THbM}Y^uHF zA^9ffBF_Z9^;-J&J}xqDyr7mnM`Ny!*ZFp$t%b_YdiFKQbapI%&%Vklu-2-~b|d{8 zx*i*E5C>Q&d#2tgyYl5 zHC~lhSrs)uFX)XT#w#_af`-nFIf8_rTj}=@^}7@ar+Qk+SG@TbTEriG2K3#V4tZR? z{!r8A@VG`^>Z+n1-duQEFwfQ}KCW&=y zC(mJ_gf+iTJL(v_w&d?kfs>ix^ru??v3)?sWZrmgWo(C;MXp*@Yzeb9na)?`6w8d& zj7kkJnrsBAEzi}wEHj;jwUcDe0do|xgHlmQbN4XXILu(o5*iq;WECBrEIRn+h{Kq^ z=vQrQ10M%5+^9hk&vrDQB4OKTIefE3-Om&n1j*MjK)N2rRS=bI8SOLpSiQ}fZhjqe z`EIxtwnWB~RQ>#4EuH_9|Lgf*ALG1d=YJ$1JO4wpkn~KA`&~f|kbR3yf07~3EpKGY z0XNKotaWOC1>&n`WPBlyEn<4IJ~W5>)Qdp2GaxI+VYhCd&}>xG*RzO-!|W-^M7^56 z+Ec8Ei>0Jyf9I*D*-&$NpM%;OvR=5>1~}<1Dk7J_?=5vB2E`KSgW<-^d*miosU75M zQ+|%Sd#za=)3q2Wm*z3_;!~zUPxSKWuBWlX*l~{M7cD!$^+d7p)sLC1=j(u=6QZ#= zyU7v7hF(Wkvu%|1onH)+z2?)<&L+`BPH+)3ggf*LsAe0@5Gb!Myn$j>qijpWy0r20 zs0=UH&QY}Cv~X14ih53Sp> zx=GO4ak_v}DpnhsOB8sZRMKT_FF7=?+|}j%Py?a`;iF57S|f2%pH3H<8}!u+QXj)qOv5tPX#NYm4Dq3$neFK3 z`nz)8o*oBIuM1H9k@CKm7Mc#X{cnvHnz=ri=WC;5oz5E32N^5Qn1jZ;F|>N%7i_Gd z|9|KkD)VEJ>!r9s8B|B}**!Cx9_A-fy;e$N_VJ=FpUu_f4;b9VfFa&YNgrad_;fH9{k5AJ(m!7|T^2UakIy`gYB+M-gOLJSP z)mnSBi`gV{ncfD4`)KnAgIgUisQG`-2esMf>x}5oEAp}M{P^xzZec8Q`x?t5X>0Fe zsWM&ZA#5)iNUc)Y3+T5DZe#%HKkR}Y=Hawx6|S|uC-Hn?4tqVizt)v_Fny0BW=tMQ|OcD1EbBFd&ycSkqe)f3DneXGjuqI zb?%q^N+=8Rq1^f`lIPo5i6b~y^P2vHJx826CEHa@t}>lUtlW2!TQQA(c9WLxZ18!g zMNgyrmTsTiWTvxhnm-s=UdK=REY7wgzMyUO7h!pRj#p0g57|)DBq&~-L zjq%D*lD(VqU~;GgLr`yO+y?{0M$`XfzokbGZY$W*QAuzN=Pp0sR)VEX`(M@K}%CFOyMAF|%z^o79lt;Zw)r91g53%)BEsmBpBW=z~<&*EZ zcC=uow!IShqIXpc%GP@D8!pKe(+YR?U#n$C8n%EB@ zBdCXQdYc%wT@tIp{O4VOotq5$Rg~ymUnSWcwnA7;xVZ-F1Y}xR6CuVHZXgFchLB<+ z#AGE}S+TEly8Bs`w@;C2LWI7^UUe~|j#k-r^AdOy=#wwpHZncg;9{oq&W&4#wuNHp zF_LK6#Q`5>vWl|F3;Zvue?zW7eX?)uV~*ePiE-gq#TpaiIeu};S{1sLY-*Beko;Bh z8jNu^t(F;%1=hx9P6&$%3Y?uFfzou5sf>^_70#p(TMFg=SuH@pEOz-EQ%e-hQ02AE8~Mvn0{ z@+L}zHR5XrZ)mNZH+R#k(OapCd`!9t4cLP}M0+E#&d~oxj~%swVoHt)demVWoowq) z^a0@o?$Ncg;7pQzSYxZi$Ram?O05b8TIFh_fz!ZJIw4){(^eME`Ueix z;@2a^Ih(RdKF-*_6J+*&q91>p#sm8_J}VzRgm3iJ%q#zKRvC&G-$<9EvkQrRg+cgCB6BIH@Tt9FB$XATt4 zV3j0o{>81^AluGc$qA2dv&ZjIqw^2l$G3MM-(iohSAlnSAK%q|e0TTpJ>AFm+M~7m zzV72~-N*Oaqk;2}-PC{TK7PO+|4ki#u>1HSdo*zVx%>EGJx+K2&3``aKcBJu)8Rdx z|IlNS{*w_V5l8-B@72zK@)K?T2pdHEUwQ2453VF%)Xz+3x4oH5vz3g~uc*H7opE$1 z_)N6-a}S(8IDBbG^EN78*(=yyk=VDCd&?6BruhQ)p(LHA0jU_%FB^oLWqZ1b_F2}* zv0ny|<}DO-F%b$CpslMZ8@Dx-<|E&ZcoE`zrMPXd{PvvAHs{&d)0A@eS_vZ~p}F_c zTs=d68IGEN*0bFN!hgXU^cqOvarQ1j1U5cPKbx1yK^2hFdq)!wW7XL6Il9Ufp3jT6 zwm%5|3_%svbKW39Y?dTbd=QHV?$i(Pv+%vz7o>^r9b`N z-tMQm=}B}N@EHCLpSfY3Y1X@xgswTcvD%uCE2%yoQTk#$uK*c83wer@osWoIln$Vj61AK z=FVW#k-TB#%bPurKc>K!`Xh1fApVkQyQ=Kzxg|pGxWf&Vo29fL>Azcd@ z4VtHKKADnQcig$A;3gZd&!77;wLeFu&7T~tz*mbn2gBC^yJSrHSRZ2R#KtNwx7}_B0nHI8f=`>h1|!+nWR5gr!rgHu@zr2 z80Y{vq6U(M@QxPLF`K0PJ&uF9^SKhlXu~CSc(p2)q~z^ zS+r_8TJ2}`*kb>p1Ajh7j_0;HE))n`rO2{}A8lqL`#-_9dzH{5(S2lONUrk^fd5 z5lyNeAJ*gz8hr6kO@F6{&7Sz1JkdjyTuN2#{~?U9s(A)@(Rx0N zUytcx__L5ic;qM;k3Rox2De)JTkAlaLt;f}%Q%Syit@W;g7UirgYvsXg8W^Vob>M3 zdazo+jns!^g}jX3C35WTT|5zfl&?JrABnBK!22vApv`5wBziC9PcfRw*#y+qw- zNOyB3d2F0ia6COtRJdU#p~>mHhfqUC&Go^yk3_Q%tzYwGX0!MV^p#bc9mi6=TqejKE#N=Z;qSs@jKPJ`gQMn0jpT|oGs0IEC0e*7P`|F$ z3)yP)fdW;^;py5N_4t|zgjr4=219x%a;EP>TDw|P#+xnP$@-_Ir?Oqe*%z6>^^dj- z!b$nX+`7Y(G(VhUs!?>B!!L5mbR?X|lUcN6FD_QgzQGY|9#gZ^u*w+z_KHA~ z;oWyOci&k)d%(nUKTqqb5@#T*S$F@ph&(&isfVv{W?t@Rx)l>E#9)=$m{?Jq>AbG> zG8#8-7W*)vhG#Y2`8c5SEX;L2>d!3Lxbrc8wlZJx=NGEXCwS&_tKR^V0j?o8E2ty~ znYJXRA-oaO|6=LwircC@)R@__YGtzIFo6l#4heBvVDPPX%But7^Jt^TsDC#Y2C1(K z=`ZEkhG>_)Z>J12t{-4|x7T2P!xb-r^Jzp_z~+`a8aQR+zJr_Ks@KGAjgXEcW6+UR z)5v$Z2@uC2b+mPcgLB+A!QJQYz9u7E%jrQ-R}PUK#MB@Bm7s>`$xC#B^JVF+W@1?9 z-zgkV)J@6TkxYr_-+Bh3M*tI11>8Qb3)h7FUNy;gluqNV*U871^MBmdX(M~1oMq$o zZl0|yR|_W^Y26^_p`i!zH7fM~r}~HljsyqQVo)-M&pu)wPI?eY9SO{o($0|`#DwMRA}y~A zR4O7f69XW)A-jf}`Zd(@8u{!!SR>lBN)B|(XU`nalL%Ti$Ls`b>60VO7J~D{$k5Kv zseSo(V#Ln-!rXUzmg+n92ZnI_Hqg_N7|ZBC&riOhQ8IXf<0^fpj?Z6ExoFP@qB}KL zeTkEoRp|;H6Qg-pg|_B4CsdY>x6;vhC7Qil?^;7nh)SHE9Ak9%1_)b?#i~1m6y;Bh zZA9P1#d2HhJ8iE`--{T$E4Vp(PJxN{!~d7DC&baCqxqX$XBS6LP44}!#PoM@^qu5_ z6Dsx`MVD6QUR()&`5x=zzI{AbN{R;pi+zk~bTcQ4%M?*psb?@%NAt9|vW^Y%Q#_~|}gN!L&S6E_@g z6|p?~_8MbSKj?B}=k##sk9eAjFP$gfN{aNSi=dhH>g+YdT`>5a^JKeOeId}O42$8T z*)`(~d| zIBqWwK29kMBQYbw@Q7mqs!(QM(pBIL3ok(q4NI1*!FbtfJ8}WWF!U>7V`9jaudLzj z9izz+i$f4@|K^KChEb_hxxi%Cs0L+kSN5YPM*M5fp9Bec?Q?L6$e-m-%q4;2@#!Bn z2XZoU0bxTKgA+9^s@ilJji^HDS@_*VKi_D9Z1pog!P~qdP=#J|X030She#)ATb~il zph_RwaSWP_$x%)3`Ls9MH;o7M0UUO+uiH*Q7G(7uXaysn~q#g*?P&{W?9~+ zsDd-!ME#y)#xJu^;-54zrZsyS_9{`xJe2Sz{zvX`Mnjs`)tC4^L+c94k!)?o{;`FZ zk?h{zrl%jq52>rBAK~Rw;Cshi)EaHXtusX7|I86%lOJ^I`DYl6cdU*Q_CRU#LR{;| zaMWcUj`XeUo)y*@g3mboXzOF7xIZ9xjk8d+BZyCxoV4?MtK-p|Z!>o*_?PQNmb)HE zdP@^y^Yn1u*G?bO<7k$CL%PZbB}<`?;8fB*X!s_pAe%`?0*CWV_u&d{lz7){u-^%o zC_2-5n`DpdWYC$**Md#?rn`0tAv-0{N1^iwcDP)jqx0YKl)ay|m6!~`8AomMExznT zsxeQBfSN~t!c2!8&3!UcJ^6XcaTNNKm};Qdp!CL|$`aaqHf4Pgw;0}1WK z8-cCoa}r(@@2Lj?!>Efkc0!$GzfwTU`5|sUDE>0{ImZZPIb=~}H+iNtd%i4?sU3<- zVKK!kGh^4adiG2jlKT~HYOEIIGMT0=#evO3(D%e!pzKh?g2~Qg9}pSWEF9M4P@Et@ zDWEnIm7kg2cjj-S4IhXswn45hvGY^hme#whbFxX!%Y;~~Qiq2!T0n+gbh%zP9Bt#a zm8zC>nAMU!SYh`^m`;~F(zk)JKroZ{YDDKUH)lHyOjqn86sk#gudCQyDE3Q9Nr_pL z)2nD`lxu5ob|>w`**E#?r5mkhV}lC5j<`s(2=A|Un?ICX)r~m=?-pOzounC#o_6Np z;58lZnpiP8zVHS3j+q}v?Cg+LDc>P0rfVrK8Hn@i%G1wi2S2un2KNXB-YLF;)rhr%8FgoAzr(oN z?J9{lujhAT{6ddvf0hk=Zo}do;0}7zA#85tM15}k;#ZVX_mm0yLJaw(O-Pk5BgE>E z#|Q~NL`prE)ZuJ7M8}T%2hciE(SBFCNk`9S{Xh9+=py}KP#h7DQx!A`6Qe=n!1XWF zHgM~U4IUN=z1qGQHtLB+0sYpuvD*yU;k|Aa>W2MIS0JErzijNqSCyu5bTaDP`R4~SQKx9^md-n$_-oqu^;({qgeF&}D|mtc(8&Rv5{hV4-pzcTIzSUy$D-6vR|^ zZ&qA>*pT_Yh3Q7iY*dZ_dFi1UTSnUJRR(gO#w&LkS6shTfS|HH8ZytW6>|JjJYw8| zCMuNTPhM;n@QH%pX~-UG>8lA<531WUN_qsBElDz)B-32q#A{8t5Vq_&l}L7hb8Sq< zA}Yom;OmcPU|QqaWFH~t=0l=zuV@GN1J;cub$ke(K%s2h=)_JBe$Oo&A^zQ&&U{T+ z(IC~-h`7+}xW6mE@5DHbpEE86jt4p%I)v%|jqw;&vXb|MV=Bk+!31L+CQON)%o=tw zQ%T^dvz$h_W3sE~CXX_|*!43{%!YBE_1CrLC#{!r@HED1+n*-Y_w*$C0PsCX9der+u)- zVR2Vh0Ecq{F;LOYkZfKH|ITQAq)eFmgVtw{gyR*S9HX3&_BzZBGz;qp<5aVs{JC7>qf&TsCSnV=`8D666-P;X>97 za^Gi}KFi8w&Gq1ext0>QCq1+$jhUqz;pq*+%j;g?btO?-nfuCmkiC;Vq-+atInMh} zpUe1q`U&!#$f_rO%*P`wV3Dq|SJY<neTEVUuKf9*pI{?-HYsSvEi-0d?aL~Onq4u|i)_{%=o zygR&W`i@I}0(Q6kn!iB@InVVPeJkV|bgeO`YnWTWT@rnPF$5a;8iVi^%c%kT+-k#2 zN6Go~*GtcLmY%=Cvn&{2}8H(!_g~?SE`CaFC~@~RcrCR-oh5BN+}jYqOW;uAZV9EOHcTv- zb-SSa7az|&P5HX&fdfhK0?6jf2rZd1YX0$t86b)ciy=YH$8GggO31F)iNkfo;q&L3 zI{WzfJAA)YzvuUlALoOj-zD90d}`4wGfS}z?7~an$Zk}(Z65--#Pp>rl@y!?F z0i;&>F**&w^2}<5hZpZYvj{L8jU~)0@P}e~b_*S8^x{=CQe5{u?Ha{Fz5huH6D0B^XQPe5({)#Z9SE4No zpl}+30`b_L$%t`GJf;O&sr9JrJbyamuO=VD`(e@Q1!`5V#O09JWnu@a&QF!n)?Z)z zw1WO2`f{)SAr#3DRo^&G{fP3>!uy!=q~~L;)W+kY{e7~1ELai_qb+Bi6<2KHU2Ki0 zRJ5Qit=XhZtu#D zYn;@T%+u5z?8#?9#$hr7AWadyBUN>NVs(VRjdb07{tkJGUBrwnJ_I4zNhcdc4$S@+ zA_5`P9aV`I-i(Svcd1l%Ze_waze9oa6LbjLZTMSncNA(k22}HDz|^DXn#qT(MwyQv z>&H=5b7$ayjslN#$t_FW7Qd9DUUsUIUPzjQD4@1`34ID}KWJask9Il41~LNrg^wZi zmxyWWk2R#}FwX!1!GE1WIgTkQ4iIo*5qiVdN~1mXO~hY`_R!jlVNm*g>Mt)SBwBc$ zqf1TLcTK&-dSS%UP6EN<@njw|)9n?x$0{k%n$YOA(*jAM=J6EkLD#e)JqJC6af}xJ z)qx3f$1sooNnJVf%M)Udyauu-O zn>tQqmyuqiSZ$+EFH-SQb=J2Wneun2Br6gi&_mjM8+LP%x14m zBAh{@3)Lr+>L!$7^VDg6>91jiS5wlqq)PfH?BAyTYu@=pwp``ZvWqy_uFmd88Z@(I za|7Rw2w94xyRMsMhq%!_Lzv4#AYzYi!?Z_NT!uBSE-x@)MWNr z1KtLh(@r>7E8AMl(}|t0^S)|Z`tef^@(sTrg^8B#?IK`1$MExi(OW(Rg#Takma*B0 zjKz zc=`=b(W2hVN^W~!BY<3HxAz|%+xuQpf~%FX65QTPN^pDcQG$z>4o8rAq-bd`wi?Vc zU0cn>#Dr`$6O+pqeu-po&uul$Z#*B7cY0@fu#5%2lVE~g2y~)fsz?wrdg*9ggYmS=5nuB){3e9w{)*KasYxi4olpL%%!hf$dM;P6g zHAj_Y%^7xU4)^1rNdrjMoDsL?jPA>tGd7`+@K#0EoH19cG;*_!tSrM2*--A~;N!%& z^9mtTs*XL4J=I>F_+p9w+@HyTQ6rpU5CcU@MO#Z zSK6zAZF|C@!24*`OFsig7{OKQv;3}K!A|lVI=Xt>O`MvR^$e4GNd#Qcks7CmF%2O9 zMq$L__V4I1yBCU>VJ?9zFwzl5jB!?q8x$h!bbp}4=xoK^-}Cl-Z>lseI1z>bgLJ3O zj#~3J^?_h(+k?c*C}J8A$?Qje4eUOVrFdNlFYZ4uVtZP8Gvm4Gf%#~FU%IdN^7|MY z|A}zD$;Qe?dJ+%AE0=9}LYGwB`Tl!l$rl?iHo;U}PJdwQ~1C5fk~as_|ZQ+Y^F z)0^&d;w?6O=-)s7=bg8{b@hD z49dAhb%?bc6s)Cw-k_XE56ZbsIhPE|`LuE_9h7sYaxNQ`^Hb#vgy6rGbK#&m%kCuS z;z2nh%DJdFhp&I=aPFr~NtUAr5R#?EStWm8 z9(56e*ZOQV+tHg_pn%-5s5>WcbzS($+u>B6z7?SzsU=OB;T;zM_(=Vl?flqXAM2f~ zul4-~dK4dInQ~t+IN*!5HFqmZbiw2aq;wGhzEXa_U?0)fp z5?9`&)RBdsfbwMbO9qtq;!R2&S-?qv5{1Q}1jkiokr`Qdla+YsfHt0ZlTt?(ZnP3& z*ga$6tYKVyWcG2%?w1eBRpQ9(*~#v6`*ZQ|O7W>0zDYS;nrBb5wvzNLQb+a>!l!u) zs87sT)a3$>@A+jbPFgl4e2YiHhn+_)YOVM0DOH^jgUnlL{?kce4=}gQ&R?idY5qr^ zxPvQNLwT*EjC-t2FjWCY~dZlhYDqP zh&9${vM=cuV>&KM!+a?dBEM>M(Wcj1#DzkMryn2fxIc}ItM%J=0%=Ckx(Gl4}`f> z3t{exEyU+efEROjm(H)%^vzmkar208GI8sN(pPHMMkt2@SwC2cNA(s~^|)FP?9T%B z$N9Rod@F1pxPs}QuBOws(6TL#VH9#!2pz4rdG&>zFaEVGrp9#MxOzPMlnG69(hXjGo*2>oNen9~>>N^3715cd8lSdGuK8$x_6gl=BC;*EqL z(#n{A@g5Z1MDXpysL)wW9~M(Vx`!)${a?c(w~*!6yw*>U7C6a1KPDcqiR_VRcD%eT zu!5#0E4WeejW+g!3{4vBUK@gTi^=Mg4jpk@^Wj?tmn?kG&^?O`M?Q8B6am^kBvKh~ zvDVV4dH(_%wkJ*2ZPri{*pyAw{Y>j~OANN`L2RS8euz4TLu;7i+i3+Cr(#<;h~tk0 zIDxF&WPE&w6Hzt0Omx5|5k8Oc7kFRxxeBKIxGiMGZB116YsKH%P^17Q2}6NVHE*?>nl)4 z^pVAY+^u-hA3K#8o5nJ;b*u+Rgv67x>ui|Xo3Ir4OIk%2p>KBCm!=uo~{zz zt+w?JFF(*8_^L$nxNot}8z5dQVOL{y^C6bNWq;!YjkV2dUZN7~;O$yQ*(0^~8wWJE zTRGzagp_JNn%A(Lp3b8!r+k;_-y@8fylk&~gtEgPae02uaqcNjQtT1`>wCm|N_)hH zzg!-e+R%|a#EEL4-tA^!!OV-k^>&|Ee$*(q+TywSbZiv+RY2dRErn*cV5R3>vx zk?-@=o+aPz|M4-QP(R`8lu`6Vr|Tj=ZmTIP8n-n9d)yYz5V~2ZqOFIBl%Q}c!S$-) z3@5nZO{7@$Zc6i`%y}(+EX&PyjW~@NT1)nX>&#*K$uucMx_uQ#aADYA7LVd_%h=H3 z(fry$7%iWjUJi_!6W=br_JGcofGgd0>q9%9XTE7daw&v!FwuG!xt$g{VC&QECb#CX z9tMg{^fEe#+e)-^cd3@WryuX@Rr+H;gM>K|ZUU}7{dI2t(f|jg3kyBzZ}9S>h>-5z zM|_gcnbP?N8AKB<(1<29=RNr=_LIMIKl!8O{3OyjHS_+38rC-d!8HhM@)IG1tka#c_t{$vg*&kQbn2X%qt)@uo)Evr>RHmYNDq@m6RNJYp)iHs?c zgQ^h@QGo1?;1u%7=L5o4$cQKR;S_3(iaf!uG$b`X<4m((@Ct?ZrwRw}Pc%>##Z2q4 zYCdlPx1#cdSegfb9e23)WktD4gw{07K~h;f9oaY?hvqkh63#<=$~MEX>;C z*-Hwlzn*e0geflGZ~x`QJQvT}e>v%`79X_#atJ5OEK**cz%x%F~g z+T41%E^ThTT$eVtUam`X3X}z02)2lQ= zVd>$#?Y=NU58#sbTlxMuKb+_La))Fa-jnv9srGd;ikT0~1??aABicWOKi+;~9aY@C z2LgjxgtRAdCEvD6-17{Rkwuf;MP^d2rI7~VpxrCVsm6}IUmY}Z_fi?f1w=!BZ?{V2!Ke?&C#lxTHB z$Fa~q(EOs!uD28|x!RhIV6X^!Of@-0XZI#9&^ z!Qhs}m47H0DDm3teM&fNhD8UPgLEmoC2k~YxI6Y46kAJVAh!31O|QzMv(D&yZul9k za%Gt7EQY{F>$JCFjbR&_0{NNQa6*l9XzO0qJ)wq;MOGT6Hge+!#u=-?_b3{EicIUp zaJ-`Lw`mD9-x#}~Txw=I>Tfa_0dnOgQz&LR~dcC$eP~6ge$JTG@Hm(7A zhU5My-OE%WlcCS2z4N-`ZgEJ%W#Q(kG??EMet&Kd(MdiV^WlE$SoRnaa@Jrm**|Gf zEQ{+8vs1`7*7_889&2I5Qd{KJdfpo_Wj+YjoOngL1dP}sk>#A(_|N9|e21x6cbTz; zBb?BsrP+{Inv>X(3aD5!*-6gEX7)6_ZLMVQV3aC;ju4ZbMoFo%rJV|Rn3wW1o{pcL zqV&k_crevQ&k`(&2~sK5<@OIQw-0^R>gJV^zLoXdP+Z5;^gEN7LmSz5`7sIRQZ(99 zT}uEWDlbENn>&YtfSyF z?FmU973-*j`R)Q6gY+=5GzN-Wfq1!Xn5Ial!q;6+C6^CiKgA+}_7Za8!bFd)wdr_&fdmd{*&!U<9~)jh1w*{xArdBcvmn zKA`!SxrRHxvR&cPj)C9>Rjyoz!DU%%5l|g9?7>Y0jz0+`yU(ipomqWKZSO_{j-b$qYj;p_%E!!E))v_niFDM?o zvwf5364p)WQ%Hl8?4%q)q3lrL*Z4lMG4TGv=})Fufy>faw&EOeC0bo-Z){fmR=rNo zS7`i4veU3>MEQ3JzCa5EWRy#@I*`4PeS%8%0{&*F&@vs#X(Ne{`2JlbTSNix5Tlw@ zHoh9x%ARJR9$d+fJkX-&-k{v4TkdL%YO}t*Lb<0}ZtnJdk|4?s!!yvYXmeO{d8hqv zlQ#uyj+fbKLzH{A@uBt2I`ZY%roPTY=xlgAOpm#BGU*(o*Ce|QfI1K6S!3E~XM-Q; zx}6fUVo#(HNII(7}il$E1QRK;!eq2?2EZlX4SiWkvdNBw4K(iznpx7DlcW+6GrIB%+Jc4=Wb zQ=i@ly~rD07B$~XGWUn#C4BvLzD}~2u$KetonbG}19+yo6@xf!0;Jzz)w-ES+u*2A zKfwey1E=|yztQPuL@Qc6XpQj#Qf34vQtc4I_a!v%3yF-Q-qgS8z80_DYs3b8-_7VFW?&y zcQt(mPsKP_qNSAKq^Hq#$c$^9hf<#pgLrtaylac_RynwP>tPo#B^r{}A= zFsHk`u9(bB39unJ(zEoN*k+vrBRM9W@;OH1v&(58lO2y^1y)T zKaf#+vD(OqX*u=lobW}?L-W++A^^|ZhlP5AUb|h;C*KPR;@g(}+33VoS~~oLEt7tm zmIbFKfv60pil~EMjOnuLqScSIZ9t>xK_=vj4UWmq;TpMegTu{z!&TLY-M#^CGP}h3 z;gv>PP%WKSMt`c{*S8q|NI~mH6kGSPZLDP+PucY{zS6dM&pJEY+$*#VS#W*}^(8$| zt(TfTV&P^#z0GE=C2w{M!!_aE7pD3iOc&Vo9NjmX$aTesKHk?@QFL`Q^o~6Jis<04 zdwLu-qPzaBKA_P+r;<%y7o9;_HU#NK4*Yhwn;L(;5a8K<7S6V;kG3%Hwlx5Z8vcPU zSH5VUFnV!YT#%T0M*$1|suZW|JVy5DlH8}JFWME?ABV;7d{2z#4ZTVBYLLyM4lY4Q z<^BdE)ru!$xOkQ~OY9D~!*Ol|+21)c#8a3JD{OOGNK$IQ9g)iep6IkZ+!*Xami=b{aA}!9|mwH)q*SX$aT0d4q=?OH{`aLaYC-UU)wd^E43+a-x59Y~e z#)vhaJRz5L(aeLWfAWNj^y8#F__OF7OEn8Y$vaGQ{5`1a#8O>P{Lkw;(BaaL!*zq| z((Ap4%j!DuqHbOPShz0H{R6<4^Skq^6TUcEe425bPq^JO=2xTP8FkdpnarOL*>iC< zIXMrnT*cTS>_~}L?i?+W{Ly^Gua8F%ky`Lg>3%vSG4tzT;j+oTOFmj3Bix0PH|olm4NfanZaSWX!{W z2%?2nn7~%*j0%tP$UfKF!SPKc;uO$WYhQ8enZ3>yCLBL1>~N-W;35$-2+H~XT$f`< zl4{+#qN`z|P+Ud}og-Acn;tqUXZV#~v_CLDPjZ0kl%)fsvgw{;9mmB%p}}=ZT&h&b z-c4-2Iad?k84MosYuT52p6_x-_501uzWR$=w*$G~pBlFX33`t1YfE1WXkh?U#|6~! z0@YESdsp&gWOpUU+#_D)ez-0;9xzRgx8EC~V(z*<8Tf12d1!-ciNTaTgjZ_Zz>ma+ zO48en$3sxu(wCvMLtDPU?;huz=sZerW~?U2-ECh~vx)TOHdfJYmlXJ|bRJ7FW`x%( z3q?;~MZ5i>D3D~o!J(>ioR!LcrDyxX>(|2L*K)YhJrG`p21ay>F)CW6aZR!}0mIaT zlk9qa*R7A!8)$24&m?=1-Z=}ScaOBWn$^w}&Y`8GS5b&=+p!&fZK6!Fx0CAgq}B|= zyVGfszCs|RE6H9yKbuvI)?q|$w1?T zMsk4H2#l*BSl^Z^&w0nzaSpl_%+te~{CKMFNylQPIaUK2(&K1Rfj>imR0vt5&ZfGDB-y@vNN#v_c}CJpA>K!QfBuxt4|9%P9yXIX32fZj^7Ae0fV z0(?E+3i;h{^)~lgjZ?Rb-sYCkkao-HtyBivmvD4!PZ_J6W?9hL7j1oBv%lGdBn+nlRdLP!re9{(rE9@RoAZyaC)=t%j9taf zaO@=fuN)nSR<5a?ks@XIOd}bfo$n5g!Ac! z8G8I|9oO#!ZO-Ta*UCp4tl-odXP%%H-^0a35Usztk=$Lp7Z$!3{hl_IBkbXe%gA z>E{8-_(yvF5jh^{h`XJ~<+zcIG?$;eUsBc6ISq{rAoIX0h<`RFINBnFmyeA}{)!QcedhO%rv;K8OQ|ktOaWZQt<1eChe2#=$ zf2=YO1>M;b$l9pajtQ}(^=;+XaJuN`U#nLWYc!;G9_7u@sMYUGkUde$TW`RTSZc;1 zet6|^TLSVj)mduCLxNDR=nCJ7=rZH?)a~N`Wp;6sAYHk@-Qd0DvKP!MCLKun^h;cJ z1aZW$z=*4RIbsFmABO%CYB5TJSoDdtn2$j6yJBpNP?NyN*f@IhV)aquZ&GZYJi<|T z^L7TtRj#Ln?;J)B7@6F#iWDdkQK2~kgJOR7cEQtLo8zyvhLCvj%61CuyKa7Nq;{Ii z<)hVh+^y&IDr2JKT<&O3lG}rs3zE(=Nbm0P`QBijch*+&&fZEM_TN&Si5=YZI+=op znB#-nYpx%et`N5cN`WUC3q!iVm@i!*%$Kg_E&ZYJ%nP|Cwvzr!oMwwi#eIAskNOwl zKAuMT@OZjCUJZA3&ged#smGbS`#4-?=<-LyfInJ?r#~R#YjrC-SC8HOvvc%X?L1RI z6P;=OR66JJV{?<}O#A0o*|@Z=RMvsAttW>tyq1LiOd4P0|nB=3X4# zGKUp50d*;(AKtIGCI~_1rqa4Q3i-=~o%K3J-|7Var*IJ2>P7EyTTliYnxFdT;+b>> zGR-RlE+Dc(vmrVch@g#mAo3dl{xgWeWiufpzS#zK8|)z`x_%Hx*F}f?%AaM^kl(EH zhXI+y(}y!$9u2z8o2(J#jO0mqUNHGov=>|a#DH)2kI|Q*clvfceOTpvlWfQ> z+CG0($lo@w!Kz6GyEoP6Xed0(Qb!m=X;#1 zfy4>`W;pE`f2)#ki?iUGO|!cc1SCGw+A+ZF-_K$;(O7AGCemGt&y82u;GOk-mtn*& zk{zY`7Zfz2E%8X0hXhL|MlmGnl3Jy3+mj|#*C)Jun1`%<+?|GiEshSRzTj84hoHU} zeswBu^Va-+bp}nQ$t{p7?Iohaa$n=NhLh{+v9edP289d#!_P*Q@RDSIqGwyn|Km3D z|GbU-zm)T5)5N|-Pec>j&FTk)X9Bp}SEqFxg(N#V^wP3s^RhB>K{QKN*=SZW3A4F8 z#5rNrD<%l__Q($Lilv);(OXHr1e}Vm=KEG7QouTkc9X2c((22c{2jXB&YOR~ZRD@& z=6APIlFoAg3R!RwKLu?|CVkZLpzNN$gg&Z#kuKf|vQ_1~_dk>yx|kdqx`ZE>ACA|b zdOON3>Qnon9ThLqOYNw9w;jrh-(SwJ=D9)v&7OolG!WnVK>QnQeOPO)VL_BWS*u7T zb_jPwK7u^YKfK6SV&_!L#~_vGKeotMVuw&Qe7~Wae{PYl#10`$a^GB!N!PFbCMh8| zSbScK1YC~sPp#Clrz?%K&xAb~AWVjST<2X)zuayydy^lrf>G)Dv^h<81};>2_fHGH zXX;+Jtf{V^EF6cmh8i*)%U1MQ(qG~F^BMYV3<%xug#l}@wa@?3)b?b^0hqJZ z@($)d@+uR9TXtYcN?P^|{tQ|uwBJ*{HVrYeWvozW!S`#&X!S!p7MkGIdh(Ud&jq|h z-n)B3Fq==>wE`p1f!h-ekF4a?occFFKyU*#eD!eBqTM#Y${K=< z37TuWa$v?vU>8xv<3oyN>nABCljQ8;2wQ~i@n$&Y# z1lg*u4d*87^j4B}IC)A=3XX0Wy_L#@eIP;CEu*(mnE}_I)RAr(z0EE2(w;JUE0qa& z6b8EW=&e*Hz$5H*%jm6C<~80gVX9k3Z>2Ip)(LG^CdXTVLD&xIvCYeDYYJDYW#d{L zT$Aid&<@|LpS4Xk&4c4f8$WBOVm4c^FO2fcAv#mWjaoIR@Y(!ikMtdLWB|63st>y5 zuuW+Nj-@~~dnkWRWy2PhM8`u*`iFb;8)>~nQm@i$rSk^;R6DQM56atTikGqu7sAS7<za8x()<64$Z5~Vs@nu zVC0w$YU%T=4I2-aaq`EJPtfAgXoY-&G!xGD<9V?@ineUakH?1gcir)s%#`B22fB4t_ij3RI%aDbb^ZYfS`pPY6VOsakX2pW|+w>9sNnGz)6&GmG&+ zVr!4GUp*TsHg~W{ZZlcrzVrZ*bgoeiA0Uo7Q+VfEYwH2BS>$<)w~A!nm3zvYd9pTK ze|oRWPvsY~sH7(q--V$sWPDhYtF`c5C3+Tke4WcGeV1f+&|oPXFPHbW_WA>^-5z2a zr`Z7yOT}50nneo?VQ-f)+rlkq1^VR7`96u;Y8q_d)P>e#GEigr9$dDpeQQQ8w`g8z1I~$>Fc0y$G-G-*_Hy|SsfPFHw=#SuTA8?G4P)a-tCNm zgWEjWVf5g80f?GaP-tlTMcp`MzXxB6Q7lj_gCqd=njmgw`$@DIws^)qZgk%|txvaLc z2Ro}7bscx>8NH0FW_yCcYJ8pz{<*W1`|a30=6Kr5$9dQs1y^-NmnvKD0@z?@Z7$NO zu5VK~B-B=}_D`fWc0akf^a<_~iCw_3Hma>W*-QK7gMkk!(WUAC+eU>e0>K`4`LfP);XL~jG0V;3GPI9Ox#?GoZoSBDE6wd#M$hY|Of zLkeWnaj5LJU+2UWAzL)9P$R5V_GqrHJTQb+@=H#2xQbHmn?0^3BJMeT4Htk#PG1Gg zqL}~x^c6>sxJP5TbvWiyiDckC<)QsbeSDB`F9$rQzR2uJ-OUn{(hnrgd8quw&}<| zzMlObKNX`J5RfC5+TaR+AcgB}Fa4Ef30W|C!ce1Twr5Vm((;CViQ-fbG0}sc#^KRP zSNqHEcob^QL#rE6$LIH ze@(s*RW*J0YSBX_`!lqU zp2#)A3CZtKZqQHEKdmY9y!US<&-zv9HI)cWD|)ll*;aRwu(c4kg(16qe5koJoD@3^ z%xj9oOZ}UeSD|GNL*>23Z$?*D&^|2yvE_P5-}?SKD1ZvTh(ar-~MkK6z0ecb-f@8kA= zc^|j`>-)I<-`>aV|L=X={vYn+_WyJrxBr*>xc$H0$L;_9K5qY?|0nHBZ`FRf>#e47 z=J(y3hAO+Gd__w6aa;N@0Wr{!ebrL<{VZ6P=%usE_Ug-~5u*ZpqxmP zY4UIMSci%Jsh+!i!LVGjO_TiCfEGw$!)t7ObevUX+*Vrl4KPoSZPdH>n+y?N3Y^;F z_9Y;O%XeobZ~;^)Ty~vrTv;hV+}Wo^b?ftnS&95#m5HvxvY(o-pP2gYMGlc5d0F_Rowq{6NT2* zSFtjGPP5JpiQ4%a8;aXnhh{Gz(*4w;QBJe!HGMs0A#_I&cf2(yeLSO0mOV-Ifh~o8P%h-YUt9CWx(g8hNT35|y~x7)Z1&^GcrPBsy9b zj`Oj8k&U$|B1bO9IwC>}y?L2SRR-KH)Q5G?t&fdy?cf+P<6sFY{=Jm{*}I9RkOe#O ztUXULlF~oT!=p%NyUYH`evJoF^j4SgGWy(#BThLc-2w7>DfOP6oWCPdxEh2lA-6cW zyjo2?r@Fk7)u@nHaO*!LgW|T5U0BH$!o7ac+pOIQ+n1jH6XBH2;6%~F9y3;5{|ze6 z{n$@;qfB-r-YM*y{R!R)LsP3~KNce@(&$8X4UfcM7^_W;)z@FF3Sh)dHa0r2q45gz z72817o!I)lqxI}!F@anQ1T%Kl&+4-3Kl3L@h^HYTvcD+)vpKu#$!%qA;gAn*(g%No zo@tt?Ypl-D`gI2c?c8uSETKM~LIFkb+^_=)U2psO!+SEu9$R8n^sB)>9Sdika6Q0$ zsF;b9TKaF3`#jv8Km1GBmtC+HUBWll3FmkPL$@YcOOh3VC#nsEETZMsGKtJ#5L1Xk zox(IR`C^d32CD^2*p6uZNhRPfyBhSJuoz;qU~fIMwv~P!eGxnxfrr2W2G3*XgU1AY zfY9Kfl?MB2#*A<9R+MC8pQpb$w7x*&uc=sEOSOL)?GwDg+CTFiwLc#|7MJh=FAF6K zD|63LqS6;v!tL}LQ~6|>e^2Y9njwwje7k!Fig6y2j-Y*9_ZN=SzcS3(T^jVJ9gbB0 zJ^+us-FVC~rgMyOTUuT=!DG(XSMi)e8@0jd&r|=<^pE&!v3J%7q(IT#`M27DbO%w2 zv%@4}`+2(qlsgL*(RE6C00Nf_fY-g(=WW*>qydiA=A_iQQlhyZt=bG9TGhz=)J+^! zBxEBSWV(K%NlSJ{^jvCIUs@ZX*&F+(Zv-u4IdK{i45e{fI%|FU7P`*0uV2znJ^M00 zYg0F119~UF%IvbSZD;tAkfiaR$Tn&2Q0&-Q-tSeW4Liu-S%%{JrA!fW~ zAC37H9uu?g=X6vM0%c>&v-SEKDMaPAwlIssEM7PYA=54_`M|Ygc&o#-u0czLgVLzES z+~+9xul!FwkaDXX5^c(@R;f1UC3ZgMJ%Y!Bhz@ieB3L3aC7be*#};kEggCz{_9rcx zdSh2FFS3f&MVoV_lHBNh6o~FIlAXv#e_p*!a|C->|5l17rCZ09vEcMdKqTY{ZKprvPoBH3>)30halU>Y!xDlRSZy5Z`;md%B=cKEX0+8; z;vN%9e!l(+-uHI<%l$qAYOvh#A;Lgq-&dOn;Yvy!&ZonJ0vd+zf0+RztUR={FM^~ zzlUE3YOO!>oVCP~9}!DZMr9FZ?&CG1)X9{1`>r`~zZP-s2X=cYJH8(yi`M6feezM~ zAo(jK5zdCu2UO+c0RFQdCo7L+qGt~_a>U<&0&$7i0H=JqlLvbJ1VwzxMEu}t=(!yw z2XDhqb{{{*W7Mpmpu)#ijh{A1sCcZh{ta{rT|~YP9tY64f_fhi=Cio1$~-P$-R~%m z+p5%)CNFyt0^QT2CfDwkiraW*9nIl}P!OeBCcKtw)Y*u!SNOp~ z`!Q)g+`r+mQt6lHvEU(bZ~&mvox zFe?z7bTTYhC?fc9pI~{d|B{G1iVTUT8W(#EtQ@zSKPWZk-?wfk$~1SfuW)mbxJp++ z&;BvUQ0;v5;huQy8d*j2x}sO_5?B^nu$uOTSwcSY4+id!7_DYiC9~e*hpG7lD->eU z`_(IG@JErF&7eCEDrRqbq7}L$s_&NL9--5bm$1V&+r-PUak5=CT`P$v?e()p2*4nj zv^T%=j`N`mVcb?(%=|KY<)eIwuoZm4{QG&wa>4J>(wn{C&pTcVet*%N_UFafg5QIL zqWwz5d=-7daGo~kB+g|LD}xx-UP9=z$KmUI zfoJ9!=~H_F$KPZt)fBIyAz+n?SeVa_s)_9I;wLpFPM^;t72@5}ePE1M?HG+Th%Aw> zhv>F+0DWi*W1b$?NrI#&{WjwhYdxe_Ef&(Jy7goyFpV&oA*l{WX6y@n(o@MXMHCE= za+rzwKQ?Hmj$?@c?U{$_6uJ@vKX4z%$Qb-8qriXrD* zkP|LkJ}y?Q+jMUi07>VIAPf*KZq!5g-u^khwL1{joU3q?O+*tU0krx64?b^L(8v+#Y2-RZFY zE+CJ+06~UDxRhyL@AZ`kqCx5u8*e*M@+W9&^ zqPtvn1R0^iJ+dRn6n)*34$j2Ws;wtIlvnkZ&V{~bYT(Qd7{t$#3Hm;JIwwM`a48?y z^ZK&~mhvT2rzls*RO?<_?Pbq{7p#9SPQOmOg*cV&BU!q92bZN!AlP#vPJD=SVx{v9 zs!%NUYVoI6jRRKNESn3^7hqs?kSi`o+u^o$m-o z_m-j=Tw@DSNci=a9mvHFx(xF z3?w6sk^Y=sE1lcb&5>&74*RWjzGuJn&KCVvJ9pY^rSpA$T_*NNi?Kp}RNtdMn zL-cKI;w;I=&1z(vc;*&Du&W!_EDaI5qsnXkBsIrv)z&p-1v?6sRI2jKj6FPv(2uYGiqcqFcAyF0)8t?! zd#h$PuCqMEdXudjw{6}5taP<(dtRyrSoYy1nyK2Vf-vBu*RxfoHAU1QyNwRRt$Pm^ z%|XBBb7*u(7EPr#Mu&3at^qO>;Q1+)g~y-qXnDiE0IvTfsGkkvK{TJeM}Ssz_!*ag zfsH%El3LU{J6p4lq||CkjRNsFzuZ@5_&N)egrZh%mxx-h=uW6Vaa%*q8=G!;re*Ks zC+tY-o!gAQ!9>g!eOu5wD)47AT*Pg4qn3@S(OGFincah&XRzO+G+s}KB?2-_xZF^4 z=a;RbGwz>Wi&?qzbJ`7<`~{ET@P4I1eol_SKVU)|tK)i;5kF6x`mz7~lEK|7ik8ib zme6UnNL^f2M3tZ@{U#X7&O-yAr&rIsC%uZ>s?)pnOLeW9JsFbj{8)X9Xa3I5_;_|P zo5!X`c7CGtEyHVxF#XS5)nFu*9JlomYJv^@dzsVG^RolRWrn$5D>unbEE0a>36C!l ze(MP*7YV=fgyV~Z|0RLuL=YMKwF5bGEzR-16U;T%&?(XfNVxZ~%O&E61 z@BGQSAE#G=+|Ivwsb<7=D(X3m0632R=^7~O{Dl$>=+h}efEm4o?CgE;TIbKoHc^m1 z3+qnjF5V+-S=f~9%W*F;?imu>(ZR2T`T6}R|0^!ke(0|E<5&Nb{$ITJ@&Bc~l+(Y+ z`zy$Q0*mTAUEf^EyEc;E$L}z|YqV71_fRI=UHN?mzj=A3zagaGR7%%=!h^{BoaxYQ z%@TQhR74aL`i_jN%_eKwnoTB8STk(XO8=^h`0V7`=Gf-q=sz zcO%$Zo~vVKo*a(|mNWyC55Uh{pCodYV3N27k50Vx4+E z7oMob^yx(bts!=z?U27CkNS5}4lQoKY(^EuZ5`UAz?Vv6Cv_pa66WK^1KodY-7G%r z+Pv`r%G*g}SlNN8l&hzHj|=KHk7P1Ev)p!Uezjlrwl!HgPn;_Oi7Be4Kn}hTTN1Ti zj9^OaI;82dWXdYhQEYc_g?c1+d+I4vdVStf5pI-fY{=&82*z-k0(#(aWg!tEx8$ zYASa@?NeL&0ijm=#$XMJatyLTlU@4$-t?WK)|GtfnXRAMqo&5R4xrNnLdAscEll2> zw}7&Y1Gwq1$9EHp{S!a4gLsrYvc4Sw>=SqUL7cqrL0%R4v-@8D{?MMj_t?Vi`@^=8 ze{fH}qFdwp;_zvT_i^3$3nm1ILgS_~U-PlotRKc6jk8onzNF8vdXn@R;MGF16ujxa zrXF)Hxrt5L zEl8T22OTfop5y(*S^XBg->^Ofc%)qx@Ho8R4Ebl#z`0{0b(b}=7w*G6`7Py7{|KIu zK0HgUsjbHu7RPa4Hi&VFK6dUJe#h@tOfT)VZ+J6BqWVUq;w!BHDZ_Xpuje;g3caDX zXP5I5isSw=D$ciU`bl;KWE+$N_yqo;jj`(Y-lXc9k1Ca7RtTQzQFDD>wL(KpZQsaV zM%8#*HL{nhK@WH}A%`n@AF#;Dzob(7aSHu3pi@^(YrcL7-sbwGfqHc+rR14;t6=l{ zEVjTt8`+0kjza=9Rl}a~vgppgxq2XcN*DR|*6>+f|0Tf@BGS);PnHN9t`hFA?(z4H2eecs~ z!Mve{d=;ZU=nf^VUnVBAwk>ju-tcylxAgu`$nRo)Nwojx^XIX?HS7I$)i|2&+wM~L zIg=iCHski4AX_z83=~7m?0mdaNN&s_g|l8Z!S?@~y_ZV*4oJXs6rbZ|NYI`MClmSW z+a>jeOY5HR&f7Nju>*SBCWXju-L_3YmzxfxctdDFeLJ1{Zx8ir z-k@(`8=RgT+gtzKzRkYalD=t=n(Yn##(B52FHUgYyjw-T?wGgTd(bb{-rFxVk#+m! z^J!U6IcnB?I!3?C^M55fg5mH9GuLy1tT6ICsOS5+^*?%^d?wUFj}kG5>6rezPxtq% z|F%@_kzE`7JMmyhuSOWRqAe=lb?BC3)8!1=VDqugqd^%GTb9(veRBTL%A8ezt+tKl zf+6>wB%&c2)i1 z`y~4!6)a-o^UzyHBdK|5z{Qeq-xGi&%FK`$qc4*E7l;F{CdD&0FocE~P){neT`qr}K7x)G0 z{IRFY64;vR>pRCR$LG4vpc!py!)T@T=y%{k{waE}ZcpBxO)-CK^7h)|Z7pwC6>mE> zQ+(FXjHmwuG{enP;_18X;ly~l4^#ed^O5oNU6yh<0_l2OLvhry4FwrG2xB%{O)rFC zH^RN~@Rps1f^_~ME!4UJT^oK1cYK&3>Mv;HqG-*v(N0bqj?zq@Fkwub}+6} zp+wZ=vcswk{q*0#o+n~Iu^UP|Rn@ifesNn5Cso!Z(#KDjl^nNKQ+g=)@vOj)qMxwl z5ln$jystr?2*{rFMNU7eFr>#8%l@arO>*v=#4O#VGdI5sHf4!=o5{(jZg;R95pV(> z3hc!G?!8Z(zL`=O0W0S5e1{qntxHJW+?b3vH^0T_ z*=MX%A5^D6jXLGJ;KS&Pjn~}jVcVUQ zTJ>%jY_T7H_(AUkvNW`}Q}>fk8?+_eVNU%Ux`l1L0z9lV2F|_L_3NI=Q4pekY~C)` z0IVG7jOy1V*ber1HMMtk(c?sCSO3|~e>i%R@2~By$HHT*^|ZZM@O8jhXOS|J)?`xQ{XGBSe`n8MyHNfb&wuzr`4gUh-a`44p8sa$W0Nl7ccWfAE6KP0GwDYs!5_ag z{vIZ|^?5#W&W_tEmwg8pC|AL1HB_+mu*!u_>~UL^T_XAYB|#G7jJPeX$Ywl6Lm#&_ z?D+++8vD2{M!ZZzo;}A4ibvwM7@|apRxKO3WBMM78n7ce&K7f0#SBc_R#r!shno9% z0MT%CIc|%c@}tUT_=?;5C_jYkwlEKFO20p~Wzu8*+96~Tx`&XHmRQy+%sU_^_4@J@ zQE}WB$(EQSU`iAmw?(ccIu3ba=eRB2EirY-6D!AU@$K9^v2olM&(20+(h>{DZSm{e z@5H`wTf90KPH|G)7Te^#67R%qF-o2yZi(AsjXXvC5x2z*d5S1LZi~G06!A#h7DIRn z!z?*l8fGK*IjJIXhS|!_Kg{}W)-da%|74iOh;dsL=3tBU;;bLx< z)hLc`iw;@Vr>zH`KOP^_m)Ns-Fog#Z)#xC`gO7*N0uQF2K#}1C8|>_SRLZfz=9$60 zAdoa+FYGkF-EtJ$!RfW3n;Xx9-|_ak5+;`Y72h1(zVSyC=X!D`qfYjExy5TCDsvsn z!vSY>^tIsRqc1P*dMpf&4(Ig|Eh)F>GJ4`JJMm}--8$k!PLJ#sSkm+REi#a^i9ZKN z8#|;@s)K!KwfiaClAx**UxS7d%4i_0){?5BVXVf(O>{vP@N*x=3>fw&RFz^1ZB$x% zfTGuAQ~bp$K7_%U9RcV4o<6^BTYaW?It{CijuJ%2LbTx{fGTCZ!A(i$KSNKxMM<%A zHp57|x5!BIpwSWEQ|T~Rc#GgJ;sb=+$c)UxXJ~{vJTX9v-RYxeh(_G%uKv9ba7TO} zW5FRZLKaXyMBu@t$BY?Q(Dl4yyX76bSRLaCEJh>|996i%2=uQO zuh=FAf}C7Rd3~r zQi>^eD+y7-cy~;bTRD)PS$tr++sbjDQ6=Ex{Kb@@{KYh${KeFp{Ka&Y{KXU-7g;XJ zzF$Z((>L<9Y|Gc^>u9fM&B{_wwja?*PdXA_=~5{yU3WdpRu!Ujw{dl}I-O~k1>ckQTD|;J3{h>KmACO++K@$r)3|SOVX!um zZ;9=y>FmB$@iMAtWN#IJHQa1^2V!IGaOls&=?}qbsM>@{C2GBhl+nucQ_XbQ1N95G z4YdLKFV!Y$H%O*5U5T12*~M~qiMA|-W*wVfu(tB%=?n2E;pG@FnyJU<{CjOQ^d1ZM zNdB9n2i_h{EK?CZ|2|qQdsiI2GMZVE^Z4O?qbKw&Rl4p{(;C?R#juaga(4t{@R77N zUQVs4(lO)`T_gK9XWFw{u+#p=dv7)nahBYQWy5(=a=H}1~dxVW$TeSc)+J=lB% z*1hy*=&WQ&!$fb=Vxc5?S}DqR}2eo00xYeAA8Ct&&(FLX93g{?{c3s)H2UU#Nk zi0fE;gSH|}2Hy^>@st-E8I8q&{jns9DIIkE|{QL2`^GW zfA4jQKtsFI8NHBjx2RjkV#*+I^1Mp)Zu0(M-}lg(Iq^XdJNH8n=4J%Fd`t9#p;dHa zo_1DhfA*-)0Xtk)C`l%dJ)&>b)2~npy=-}q8^=2D& zsL}^Q7KFvnKsNfPzaW(CxBEIlefx$LVTuqs}|mqp#5R9}RDb0WJUg$5IrdxqO>* zM?~9f=gyGp1_a4Fpv>%0Xw@TVT|vPM>ob3g36Em9)2_Ds7Sr`Y!-l8nfKfp!(?YGkUMFyZtXbM`Lte}C_Wuq8{NH(acZ>22H7Tg4GmtX zjS1f!?~mU7AvUp1X7l{fXpv;|82$bh{r=NjdO=F$vgsh|bJ-NMr;vxSt(6sd^N|w; zPwpWm63V1>kQO`|n(Ry9kW9ww{nS{uAujF0Pk&X?$??#oJ9@(fW=>-hf$oIIwTh2r z#Dx$T+p}T*#(!2Hd+5rr%f7#1cXFujoNB4Xfa4K!h0-wAI8YTeABPw*Di+&(mbRR2 zRA686h&Tx+s}lPtOT&`0&j>Y`^VRf6)TgM52t5WmlS}soe#LV7=AZ!BE&%4hBpZ*X z$8iSts#IQZyHN0mq9DN|i5r&GsuM2p(yxoS6gZ2qUcTo*bR;wPUxbfpwtr|+H!+Pc z*PKWbGNA&`NOfJKl6?`DZT4}PELk>Q8@J02jKONAvs*+q7_s}A)*ZJ857 zrr)7*V4O(r)I%2m`$fd|iKmZM+qIbBj=F_SPH@MOGEik!GPPCl0KuPIGLz(;3FR%jtBernDMCMB6p-}_|nQ)tBP7Z8LiX)@q8av+4*RdhjVhP z!&&2IFV@BomfKT~iIzMWy5e6Pt%#TG8QZh=EOsaDF40_)en5lRk5`~3mVyKwIWLaT@~L>#p{v;al#ibwJ#QXNh@{%*FK|evKO4h*$c_Q zyXpn}AQ2RDm2j5Co+i#zrGU~Hly^jmyOT~1D?D{|Gm0grIEm{XrHo>jR)^oM%( zVyZ^pAm$Vrd5Aov`JxiN3()>K554RW=*6%}*wReuxT6A!F`B)A;j-k#vS0XV1Iw!n zHBV-aEL1J0G9;v{8@RRd6|Oh=6zOxKYfyJHTQ>Xa*|V5B4b5PrL0KjlORf0GF zs3g{Wa%j-rqiN5UJCk*vf0&Su3;=$v0Fe7ZrM&Jw;txv=JW--%RYG9dbYC6G`_p_t z&9n`9W*$rfRt!Iz{V7pT-$_-rvpQ{lHZVy&{T}ej-?SEeka_fO;ks9^(6q2RG;}r9 zR4el8*N(&!4sI0z@z8o3dx>TQA_#%P^5E$H%H&9fVG7z}FK&ZpwRhC93X5?H%g4rEM}? zgw<@L_VSpAtW1CQZwPa3==u8#6z7UdyQ{beMZ2S@2SCQXGfaXVtrUEWZZ9hM-lGJ_ zmL1kE_{H7JbdXX8)Bv0rc(n=$sBBFxf-rp$4g9&q(=7}v5!FZQ9W%69pT?>=P=zkj zogHW1!dho?d@Je>z6BbW+C)$TdJyIKHznX0HI0c`4P#<9qj%3(;GpW?qJ&sT>rl25 zBDl|;x(&Fc>2nrT#RzY&Ngx{OJL$B(9o&ZVr@rxq&)ISG@_6jc-T8Y@O8#54UP(?g z8_obu-JF??>lV@~!-s~Uw<}OQHsp^z+)$K17i~z-Wl`%?hA%O>L99ByXl$Ck-SlTW9T$gKe;<(ytlOC~ zTVwa|CF{Xl+yAC&tE96%VSOKLJgH2?(+_4ud>m9~*$;hcBF=sdR;Nbd>{tBekh)uu z$_iJ$#!r7hHB&o!crE|T9dkx1{;{oma+f6G>Jj<3NgjI^xCw9#xW`GJN6q^)ovT{X z5xBc7F6cUe+5}jtD8ChhEj`x0v2{=-x{A8{G!DIU0~pR{hAUOuDl>;Cse&3a24oXo z@C*dMrV1^5w5T8C_lre=@xb(@#TnKBLQ9tC2r5Fbevu~T2v(HvMm_yG^#LNfMkTro zmXGJcYUYToL2CtS(Ru`c=GGi!pLeH1lm$#1Xz^BbGC;m=G@lWo^<#W%p}=MPSQ!dT z7X_&H%Rss|vIFt(r4}j7BG6-D^2nz})zFGKU#{t0;z$WQgeu=Vx60-rDlDvxxfm>L z0s3(J@Zlf%aI{jsDJAA)eSeO?=3}Bsw%lrs^kRncp0r9N1Dh95T#{oUt_3)XT76vZ z6n&P)CD;T44ap{O19b#jW}zF+9kE%eIOj{dcFv&2Yy5g>@bozYS~NgpFQ-f5QHKRJ z#(_q_NOKQncNrQg#%}n`QCL$h{ zb)|f*jtr2_a)!oFcGs$@J0+p`rFmM?HmtS#Gh@wpW*M3LCbl*OYHf(#5Oex&{CL{s zpKK7a-_MKNoZt2s?>lE?9+M0`*K(cBI`2A0-P|J6g9FzTxuAG{Qw1yYnHvN<>ym}d z75QCU=S35jIqX{J$%c!wrj&QP!65w&02Maes@#qEJ^1nAL zzhY-0M>N;^xjzP=mi|ry5G>S^kFpb2MVr%?z~h)_W|ff-!>1`zEAeU%8JnWZMMXws zPXyV)z0pXLEoa-g`W>)oVduBlBopcXs;7{FT=Fpc=x2iElx}_>A}~OeiJ4jGGbE*O z3EwuzXiV6x@YdoTlY`L~GgdOG^|#KV;b5%X!hTt(_(XU4tEX?X>FW;o(RGz4MfblV zw`21BYPVy?(UYQwy)9x((${aAL+jRW>qSCub_dW*hd2k!$xsT%cFa$WP1)ywHT#EY zFMiVA7K~af+=)T21^{bw<5`aP@7caZGP4(z&fK3r=^qOM(D`$8DRu;nK8lEnmCbmW z{}-!Uuu;Vewflu&cA5zF<}~r=yi&z1mVLT^!LiijkdNgXwmOzE$G~k6i?gpbB@H+o zvCKYQ7Y?v<(>Iuph7YqWGGkG_0nX4}J`2|J&;*7sLGXk6^m8G`vC5X6WsROaz zx|{*ii9#RO3!>fMnvW~bH{|1bL3Hqk!6W~)C#>}d-h_qz(o4@;+5g8l(8t5hZ`dZT zror*S@gdRm-7%M&2Lppqx*-R#*uw-|a#m>`1iN942djhX`uVWYSj}yz#&uovY4hCiw<%hDeU3k#-x-a%KL3j7ls`NE za@uuY_cHDNH77IZ&}nyY8?@W~!ujo0plfKsaS5G7U5?rB*8(*}*M%H)I|i5QKosd63Ck!43#p#65DBPGCHgYX!@BCHgqx3roGhsg@XgsBP{x14EQW}$B2MT(c z_MD##m|`7xE26ZXzc?iA7!WJSuZAqn9fn)F0=8M5Okqn#)BgW0l*qT$3d?Jy`_Nj*f)L^gxM zptt=X;;^(-#Yrz;#ucD~Aq z35}&V2AtiD4uV#neVJdcXOK7pEW4zkB-yk0z|4yh(wc<`JO)SF1|u+R4e zdXRmEP2#n@d{HmA>V-uK&wlIbB9+r?_BCZ`&6Sv9!=M6N4%IX0bR|vbM;Gr&v;N3+xWy4_?V013j?C?T!h#4;TlrXv184O%T-cpGk%d*Hef}%%fOVI1Uu;EPTWLYxs5U%FUzy0GCeuak{ION)OZz z2JO?sl(EZXQN$gW&9x~wD2HcraSqQ#!;>ct>KvRwQqT55F+nRNv0gK6l)?NV*N=3^ z%I*GR>R%;$5cmoE`^)$ew6z?b?3?t7PLPr>nokBo|DyGL9@80d^r!iQ1lIDHqJl#^ zGS%#UN*}2VHV@aErkFT8kj4<9ULwg>sR-7!HO1$X<<;>(ZKRUz!OjDOm5*OFdMH@8 zu}`uCsBWr1EX=Vj(S9|m4mMM7!GrV}L6F0N-kPS?I%pqcLyK~e4$Dd>*W91xi>N74cR$D|$hCo9{J`-D1Pog5Fl$2Om`-0*psol=F29f(IN z+gB?!7H%vzY!|aDYNu+F4A2=fbnX}NQBYnhn?l^@N_&RJcfr;b(7}3FwuoLk1z_4V zmu@H8lRro`I)?AJE6Ibc**UmsgDNH`(+MH5&Zg{FU^#9gst;|!{ezQ?su!Wk9*wVs z*G9_^mV1=To*nponaR{!*P`j#*_$LC=A&!%ZoDYD3hm4-S4o%l6x?c^OL~fKrOxep z3R0(VA{x7wIGJ#q%!`Tw7faUXxBzLi;eKIBW!y$(B3%YB1BI-rnw&E@M)1p!LxBva zjKDxuC;do#I$NZs-|n?jkGR2yB&1;`#9@w}yGfi9YHAt)hfySp`GV*7$< zdpRbm1^{_nWL>_B_J9DD=&4Oh+!qxPM!&fc5NLV9Oh8xJ;9;mpoI#z~RX_bVJ>cF8qed(2ut8)j-C~ezBuZqCGCqkZ83;peEY-Th08%) zetalee6xivFgblR!|H1r-}9|@^?3v(`uyAIxa;#(W2x@S2Y^k`3^a#%WMMH0kX@ak zYWFa0weBBowQdQVQ1|4Vx-Vt_bo;q{qRqj4Ewya>t@26E0}3^3JAJIsQSRNL3dWF& zmTgfhbHnGwHn?JGGhn#il>ITxhf_;X(sv&~GY@Kv#itS!BT?&N08mMSdu$_{W`wMv z{bw<^isz=w%lRe*k!iS(U}oCK_*i58tDy0?(T~;97An28T<-asmKBwh7s3tdu`u>l=w`?v= z(z${rA5B~H8Kx8Kz6)?>CU(kPMQ@_gAf>k-4{~p^mb=e|je@!>Nj3L>OPFAMPlJ$AeN{#!w?Wd0r0_uvHM#!`S5nnd^ z>HU-}J*pbr1o12vK6>{I%|?~)>U^5!X73tW0jvZs6uo!%;l2PB6~45xbKyx|Y~0ws z*KjX&s7yY{chOFxf3DMSf5SaZ#MdH9eZy3~dWYWPK9xr{3(g`XeUUpE|DDf#U&!~2 z=CtRIH`WTWb;x!6b^nxGP!RZI~wy}l9M$(Zb5 zV;b~&VNHyocIna!)Fr#ICiupn++X8op@T0VQ z0(EI1E^TXZ!`ck_`4xfvg#q;2!TGa+qmy?0Ikk5lQfX~H>34U_dKq0Cu9z!W$`I|a zVqS>wMG}hZB@~y$BI&ZNjN+aY+r1Mm1^er^QmLC8s-z^l%5pu;_Fm3vu9mK36f%su zEZ^&ePp^QI2k`fDh-17k>6WdN*~*}WE=WEN(NOXu&K__r^b0584{vW{i1 zml!{s*1{yOb-gxDE-Tq|{J>3;eHH1`)dl*ZrSq1{zLpnLdotF0U4B;m>v<;WYKu5o zJ?pYr9{W(=$LNkLE4k&M$20&9Yj5lA(D3~VIo*m^<|qxK(~kqKU~6@pq6oKkrd@V+!bxn|J1#p1 z!`bHg($;#*+CCh>E@driJ;t(@mwc7NS39)Muq=Y}*s-N^F#d6A#>;$eznSC-~(qnFlc-7h?TfT&?&&#@9U`T?5U zX)?F8ys`Lja(F$qGv=I(k@W_p{AU>vlqYBvtr z2GaMzzMYwH+&?v%`BB6X49TA)`Z&L^NrrP!!~NUuUh8LR4HKJeV<|yEvCo3!M!KgBOOHT&=e7i5*M@rBvt1UB z?Kvbl7ws&#!~UG_HDFr=SPAXM9mfdg!4d9bP(O-5fp7z`7}P` z#7gk`)`EIW$pl3W-*O7#NIoV?1NT1l?C8bWIm%$kuL&c3HQL|ci=*s|iLu(G!d67h z2CeX1=LeU~(OP|UpwYi%Fx?A$Nag3_4R0tko5I^rbspb?uiUj_pPjVQ?(S%ojT6m$ zU+1)~6aw$h0W${nH0-c2(#{vs2tP5!bhwUdZA3u=Y%h)+1=z9X*UBAN=)<}AgTVNH zNZ(f?&VSVMb8mT#vyQ&SR53a@I*{%Smd5anAJL)yyvZG++y{SbgvC~-YsN-Ld~weC zt#!pP=e2W6`zHjEXCNE3Nk0bWGCq*X=)h=j|Mv~s(P7TxOrL}V2~wg=w>WUH`{^;- zg$yiSEFt{>S})DQXvy?dpgJd5ZR$#A z^Ut6kdGb-!bz_Mwe5MAIoI^anNpsmL;9~l8+GLlC!`9go#V8|e7o9=cvHqiNCPF+$ z+Ga9%*thaEfivyo?vpgWcm$KX)t6#Y*QvYQO`312(bM_H_5d6jAjjr^EMASGEq{Z< zeNSnqiD_d5w@9v8ygwt#CJ-m}v|rv_;=hS4;MjwtrNK%)Nq6T#+Xgsh4TZBcmFRrh ze3xW=k{wMyX$8@JS_Ie0VRs-{t=;5$864niXe7y(5OyRV5Va;(_noucRu4msiNu0E z6RNO6sKSa_3PY^IT6jq((an4@#Mo&M2Durn)!5A^kE_jRBa}4rZCxG@^e;sw2QO%Z z!n%j(mV1e0%oVddFIby`C`?D@>AAJ@1QLj**HYt#jXkmES^Y{8$x8!o2I}k|wuB}bmdu!e_oU=ty-U;vQLk?TjDga*eW-7ndoAT8R z_n#O}-8|>c3d(Phzl-5BoR{i7A~@^FSAHH3T0{HU%wXox6?7VJsJW|bU9--3Q83y$ zFX+Z0Cn?h#@EKFADQK$HFx=MT5N&7u205n}YKMR^J21IO$IADB;|SzOyUwl)P^;Qc zKeG6ik;oGt5X7%JubW+toZ+Z`?TgS3Bn_Hld?qg*KcHqw+Qu~4Z=}85ti3R;$?dAa zPSW~KV&dYc^rc)0K9fJwBfaDSAf2LK*~<8Tgf zv?TYn?=3)v*whX}x1!cl7?aqo^M^wCzS(D9Nbp%b`XA=RruycKrZsEw)dnzWHEfDd zt_3};tOX4y_}5KTnMeA1BQkIumZq!t72I0jaqPGpA}l@F`p}~Y-LNf1$RRsx4rFJe zq6Ns-e~y7D12+^ciH*@MGTAUMWk|0ELWbBN+>wrIfq_lxtt8j8>-ZZ_A6S}|vTI7^ zx%bi5I+VY`%D-KI`?ELLXWip8Xs6fC`b>+O`9C|P+gcen8+LW+vekvNuWb}z_r#9N zlbFb|TVC%mYGe!G*0^Y@JH}rvFj=fc3=@iZZed_Hn)+`J#9APjQN-fE)tVQwV4p|s zo+Ujvh*rlqbMdQ7-RGXZkR1-sHTP&_BA9#_R?(2c&JaI{)P{}1^o>0B`<^Pp8?H@( ztTvq2b8SkHx^7S?q;5_ejpp_oH51S%Mcx}I#iEwzcD%wu@m=W9<1NZQEH0f@p)+aO z=+lM(Mxa5@qbse+m1Q@GxHHczQh?Rc4$a&gZ`p zY+xdBh{f}t*~V2CHt*P(gt6$skM_GHu57c4lLy-7gFm5r~)B|N(Y8@Qd?8idc@rkq+_P4`14 zWY_D>I6c?RseHd6m9C`)bSrVD9cF8Nkp$ctdFS$yJk{=&%5bz9kd(x&L9#|T(EO(( zfGnM))8M-uI?DW_b06s;CY4wp@qDN~+u5u~^Nq)-3HWhIbo;!G%Zb7p2PQ!lI_Lm; z|4LBFC*|+dzlX*l$A7o~Q|Ruh1TxI0fPCL(*Inl8d$)O7)|XR@0~jqiY02$5Nz_j*E^F}$!`%ZFLQmJb?dM_zq$RR5HhM$7Skmosjukc^H z@q=w%3RjGLG6H%rIq9P-yB|%Vm8!z2#oj>H#Tk&m3(o_RGB23NjCHPngn~pOo6I&- zPYw(KlDwyq->l?H7G@q&^F7S|UGo_?$*vSL@~=6WWY_cTn6PT!V%2)gDfte8HtEKS zDi-cgxJFi8DSR_|dP3F*`HsEe>31^19_rHfJ0A$n_c9qk#B$2$yyIb%DK;%7X1^j} z$ao|f?p`2~cpy7?Z*u5NMCLs?y66dqtk-{A-#Wv*smP#fPed9d=@Y4OxPNLi?l(2k zd=$3t+D`H+e^Y#^DxcS_a{t}BSUV94W=VD{BRjpr`YTD(l(1DT2j(B6Q$oMHXP>zUTOrLXb~s_jUYAj4E)c*i!Up-i$DLJPyOzu8@ z8`X7<$;4hm?6=SK&L%mB{DwMw_FMlZjj(OP5~7aMnVh(Z{?PF+ZAM}J2*;|$iirXj z0u~>l*4<;qWJx$G&L=TxTiGDa?Ejh2!U#hJJSICY$w>* zBqw$PM$^Z1d$abnr(dp_iwIKJn5ZWdSb7YDCZVJ9+VTnIr!QZiq{`_$!G3DHw_dts zEI+sY!WMzEj;8VsDKhfuOhvPK?M|01ce9hO+@+njjX+a z9W)|nY$*2L*4}n4i)HP`?y9@%uI{?4Yx}=H=gd6i<|YAu<^RhI?)RCQGwsZoGiT16 zIRgTW2xy9p5du%b)lSJBekVo#yThS#)Inh!TFSGS3_?qG)-)3T7K7?ABuv?;YvUj>UW#hZEDktA>OzcRLr`H-+?% zH`0Ay<@sH&=!p7l+4_*}voYJvoS&P+CI@`tFXQXK0q_$5CaX5@7%D41X<+IryhFA> z_Ai~vuV4r;aOtJ_J5VXx(Qn{)+}*^(yx^`1INs;rayX|wqw}Ks02BIrU*-sNPHRFk zvs`b@@+p^o9|4Oi<&;+tY5q=C=Ht||x7v;pZTd}UzZ-4$-~ImjH6oMpT%ct>CV7J`XqXfFq* zRXaF?ZQF9}*X`N$K9=fuI~BuE?dx!uR^NWC!P&37E?o$+aTks$f2Z0r$H^uy@Tn4f z$4gG&4$)-{6{5r-ur1`ndIEBvuEyI9c!t-u1m|c+zD?W4xwg`;#~JQ7Y7z8z1Q6CoxFTh%Vls1` zTKQnZptpu(F>+VfU0-QOXZ8)MQD3xKo{QU9Flj$I+DUiV9w9Kj5)ohBx-44iFqV`| zT#qA<#+OXy!sGUsC*N{qsORkv^Vdu zJi<3YkF7#)GZy)ep(op1wg3Lq7=lvG3q#U{s`0_FJ7kOz63@SF#|eYz@H_a#442bU z{qcO>g?I7L-YrygeX^|^hN1HQ5);|)o1dN>`efuAkeVcXKQ-PrKRr3^mgt9}ZT5mE zsGp@Di*_f!np(m%*E|*PZu+rk!blgdE%S+Y6JI=XKObK_biC&Kpoei4X(~99Oqmm_ ziSEp%N%=k#_Wqp4y^26ah0z;XR?zk6n&4XODi{xUeE|9vPjnK)+jx9q()T&a+tuc1 zXbXEzyO3_CUyA=QxW^?aJ_`L>f0sQor=X&dBzbbO>rILIQdghfNX$upeV?^0to2zz z^%RbAV%UCOBUMg@L$$lX1-^*HTyTcXR8@r{u-_cH_vYxIr=i6LF+_<42{sH(kGZpFC2o8sueZbABE5gCAlyFd0fwh| zHErYmteo&&WI68fUr4o_xFHex3EI`D{;%(B5R5J5l7BA%*QZz+VceTXorg4Uw?-$d zl&?h~ct9P2Cw9#3syu7L;N^TQ2n$-1zeF7m+)f>)U6`F$iw z25KE^iDfEyf+|`gM5V)e^=N%e^%2{P`ns%Ki2ZGaMAmeQVHa33S0I6ov z9rCE)C;I61)8vuVbE{|5N633$njvcBVr%t0Y4|2S(??BVW4q1in)?x!j2`3 zguShog*vdCKgsYz*XUa-c_F{P@3ZB(?(aTq8GSq4=sH`%xI_6gU9WEzw$aphqRtJp zt76$k;ZJ_9Nrqj!L=8{0-F#5!NtcnCF<2|#q!!y)WXZL(_cY-M*T0zNKD0NqS*nIz z9bcxzk@cb^txk2g(<+_?nLraO(HYf1r@2lgm$zIGGFP{uE;#b^dTx-|!XcH^%WZt> z`$QQTmLeESnbm~xJMU+xFIjOp2+4}e?C&G_>-d_R=FC=i zyW07)16}AW838jnvyOuR{jacbpo`y%og3$$n(tVt-N9wnf0gWB4zf_YHW_%`6;{}{ z9g-}0fXiC4+k80npLMtDk0l4UPOW`_|QF?fn1#zo{*ReZO76w)x!e7fsNSLp`zfw2xmLYZV zClPwEHV@x*^Ki2?5Ak(VaXFv88*jR3ywQOqXFI+>%>2oU4jY#ZE1Ao%18BH-8MY=P zUA6?>dQ#EQU1M z&y2P<6(fQ7yt@iK{5XNW};TJW*^uj#vXj09-!Bsf27eV z?4S;3Ff0rs_<(ZLgD#-wP&#b>GDIJ6Mo|cM_`beK(P?*sHnsVB1(KPiT;T-_7@3$$ zB_0mSXizM(TcGp^jyfb)yqUD~z0U`W^4W&yGy~$TPBSPlzA(|gPgD!BYuMPf!yb~& z@A;z=j5QxZ1KOrU2+WUFfR_yH6e65F*bU;S%!ru}V$a&f6#6DL{F!??Tm9=@Z_6#n zu}mYZn+#h_Di6GkX|v?q(>B9e|jH=XS1$+>awDiw(9E zE_6MloU0)VLZ!69sz-am2iNP#^4m2hy`0X}W31ENuGTnoy@mV z;N0Q-xxU+(-dwzr_KmvYO*r2`9qSjYLw!;mo1wQ@e30E$cC6#$WgRPoO{?R(Fr3D# z2NW^AdG>q4xk2?zPb^*KWz>IRt$vu4kW@E@SP~2iY!slwm(YXCRAJ2zcW6!E#rY=K z^^AKY`yCbc?pbm^_4AfAv@|>WK+Y5HLd!kON|IVvp_W4rg<2lUpSd6pm zaGBnRA_4<*c{04fsc1^o4~L8^oJ66~G&za97kOK&ybwE=0!C)mge=vmZ*-}p1=vap zTgj-Vurk#TPG#xG+&^kIX?m+J>Wy>Tt`B}pdasTx<_c%U*NEWAt2U?HH2TRfDzK_O zfbLcwB%GTRHTyaSHmCxk9rX2KmaJvSXYZEN4StJRI|$- z+>eN~H8@;9?ZI08ENTz#Z@;aDmp8^Xn_OzLLJ5|`e6_>uKR)0%;;Rg^RSHPB%1Lbvy=VN(<$FqAgybD zE_{j8sJbQtD<50Ri8S2ud81lv*fn=`Uio6<3;D-rOu4X*%pUgd)UcFduBT@oAz-*}9WTC2!pPP|!z_@%cjnNwbC}b$d*gWfNcKA>Srq59=z7Q85R{TcX9mK**xRUsOBDmLIqJqpmEQ_`h$aBslVvvC(}ip!2?KzwolO zoox1twrkB=$uGKDt#zu$_GLGI1@c8YQUrIb*|MN#2>Nf)kMt3j*_ak>jX|1c{K$Is zm!b^XeHvlBv#s|L%1_`IzKHIti${8$a`J~QbRJcvp$GcB?mvs%Fps6=xv(+4BVuBjn~|z$R5tl zZQe^>zaqd2b3FIe*H{*bZU#E$#UHeuo18QIGw5aR5t5@~{G*k>5#KW5>`E)wh7tq2 ziy;33mcSdgW&JIaYa9+my?k=z|4CaNKr|w`C#2i!bXoo%+e^<|tom90n_Bup<^Q&p z-YCE28>)K#uANC-rGB)QA6#IlYJ#O5Pf1^mo7_|G7i}Ee`T*~YE?l-s;nJx&>-ILW zi^mt%(G@0wjM=tB^9H`!#xEKO)7a{4G2+YG+s?}l318ww)oAx7|n@a1??JZ|lLz}%JL0``ypY&QkM8I}yXw980`5JXU*6a4U zX_;5!Pv~Ga1n512G&6Vm#Qq)^G>e!gm=){Edy+^H3uaApm`Y8w}YHC zPni&N8)Z`xc*V)dxi5=%HeDX`HM4&4Oy=%cBuxY6x0NCNj3#hH!W!TGTjia>5JmE?bfiUV6TUiwukyjr-A`Wtn` z?kIjph_#|xb^)i*vq_j8hNCY-1CK5mL{`Y2q_I<66_e(EiACUu!=WR65P%`6Texy= za%|=tiDc?YR{R(>AADE=?0XD+(^=vyr!pkafmO`Op5kVQ4`&wn{UA7ew7T;xCjD!f zf9Y$~KUP_;;Q1?#`Q;RDtp#B`!!SM2IPiGg7Nmmu()uM^!*2i+To|lyq|<%Wy3pE{ z`1iJ^+JlT>M-MXM8;40iZJnXb-J#7^n_4a6QPv^uo1!9VQJbA(F>Bmld(9W@-o9XT zIlB|yU{poWq|wD8wB=g01))P47OIp>EEX`FchDP`C>HDDB~!Gv-i)PPZFTbPG6U=*ssjGC<1 ze`o_np&HCd4)c%(j6yY-F^9RZ0i#e2Ce*dQ0i#e2X04a=;0BCBHJArE4li!NC{%-C zNfZvxi7-(n{*24KiZ8G>j7u#v?6^lCq;&A(z!&WW`;31PoLGUQAM$9R1VWA zb&UZT-&q8Gw2;qtW02#!@A)2_uthnsm%Il$n>CtG^ChGdFNUy(xmKLD73=8BXaUh8c%I30xN2?rtEn@vqecqP?J1`LPxog=T6MH5TP=GY#&n^~vrkRq*BV?)9P4pALzZv;CNt)W`Xn-tR?YS9Ft zZlbe@Ey8BQ+XSQgENbGF${{Z2+{EX2cN`;@@!smrc(3;Y7Vbq|Qf?&0kvWt?1B=jy zgU+Ei;%n8yXaYeC*BqGCE8#$Jv!O+;^1J~X_Oz5w)k&&Yzc_PyG=DNjef`Uy|MC~c zYdArfnOwIJj;6-eBCCUtA*{BH6{)C+mQ1el{V@#16D}fMB>Iu@ku`;YH;U}R22Ts; z(+JZOY<0EpiJ&I9SZ9bC!U_xDl!h7Hi)apjoguI@G-TLOYK5I)z(EbqeJ<+YX(mjF z!&QGokLq8U)T`2pYv|#`!Lx?xK?l~4`fBS4A@90Lu17iDq|ytDKf+`6ZslPJ?95L7 z)8&CK8qI8YhTBWm zZ3St_`n1Ps0WU`?^^l>=J-5Zn5L#EHx3u-ZpXRjw+)CUN)t~TMH5cn-y94#c)5s@t z;D#`R@g)Km|4U>|`G4kEP9QJk=<{OFN>9kb8QjJ@p$@j@BB)L=u_yE|V*tE@>Lmts zcxFZxq$_7nM4HQFbsmhV*!pzx*hBunQtg<2B0$ZWm5-f)r4-A|*F_O-@#>=2c9*X8Kb zD5o#jcJX}hwdr&0*o=U{K@aL_@hHna34Wr>#nfiNaEQs@ER4Y3yTuGO`5}$y>ln&i zq4sl!Knn)MD234)T`34b{5S3mnK+p(PK_}bHIZIoL;X3HvT#mKS@|LAPNzoa5FNL+ zuua>u6=R8F?=ZXWFg-Y>tzOiqXwUXi%6gK~eLh85#Z%f8IEj^c@T@U&O0*sSx$VNb ztL2K|CWHZNReW3&fBD6;iQJ$yym-E31^F98@PD3t_eMC>^v#%djyv`F5uc(9`jg$0 z3m@nEE}b_$iZ&0_W<5w@?Lj6q;$$3Caw11P%WQU)YKNgm}j0 zIvjSXC%6vcH5pkszt-u|1W2DcrC9=6hjHO(kb&Mww{84zL(X`!9wB>DIdX~W7sdoCbUrn&pc zar4uJ=BE*hBRK~6D(W^uv#*uVz!Q`1>IE>M0xk-}6bnC>V&+qq;10v*#fAkde%AIY zR)3(m;4?&h{5{JiI)IKlA;nBx+c=faXK@(~=duvKjbTmh7Sz(15+1kvg~cJ#4Fe)R z7It#n(LjMFt|^;E-L+l8|ExduPxJoY`FgU(1ubvz%BMO{NahCELGYHx=KOj-Bx`}n zP2Xnn7Ed4opUTtgM_4z5LG_PuF-i2?5}t};Oyzh;MdmjWIXZVGf3y5@{vw<|il4E$ z2>~ME)GFPLIXF~2n&e^+Qn@^MHZil`oa4-NN)dC9BWOdPczOlF2WuT2F-zsOIO&;G`pa$9$rdUPpgPb$a zu2#GF$j>@!e-7g6vjHfMs|Rh!~O@B~#ML0sVzzAf#m zQYAlw;084VZ)XT9Gfz_CC1XTu)|xl<)~ujH^%#o^$`v+{CPTT>DoBYHcQm3Lu1<#r zwtZu>Py?-U>*u8+R*`?N;WB4o^7nq_dxJT#O;yKTw@E`U)v9sQ=IJ*AAy8CsN??!b z{PKCpU!LneaAezeGqmtGMhk9!<-A9d-&nF~gBm%!b`BT@YB8au51E^UA~{;rvgOn{ zW%`)4s|{+%uSSdABinnX=?f2DoPo0{334)=YXm0P(n^7`dP&zmZo2YbNCJxLZWdsO zUcH1{<03jw*H_Qd(G`xjSIZWNUaUJ_Wio3IgS%y@s%$mU864M}S!O3AkXV z*dN?FA4A3(A6|87P2X?{9Y){qaDGhRkeY8glb^B;T&hfmJAEal_SdRkjZ)7A? zSm>uNpXwYA#XqvFXZb8GHrehFgzbEHcme>cB!{qX;Rz%5C=8M_Mhih3F)oWi~ub_zDFYqYdBUwvZQRV;_T&<{dA<*=n9zC`^k3I(r}qC%K6$eoIn{| z%p6brXtRD%gR*ee?_3e{kOF89&~j6yY-pcB5L0i#e2 zCg_$Q9buxbHt5M8H9tP+aMg9|V}uVn^GD8)5BlxP=EsM&T^{2z_7&G_F6kfKW1R6F zs6Tv<=vyW5J*IE9mhVj8Y9ZfkeGAuoi;@SzDc`&5TYctxNZ+cF?+JYir+jzyt(IeS zfKBW%1l5MY)kM|D*Y@g|?=b$>cT}`GI(ZQA`5hvPfLHPS$2!kf5oR-O8Hm59^k@Za zpB~ro);CRFZ%s~C9nYdN$>uq~Fho#a$L@SRLwq`umL@;f(t^@_?g&CMAvjyHY4LXT zW79P>yPPbuPePBuG;x-$XD{Aw5lhpe0D4Qe_FP565zYHpCu>JEDr?oIa*=HhVC`CD zuhmaBcpN_vTfiC|RYKZV8eCeCQ!nv*PRQqHz+4s8eaUDCfBu`}dFH*7 zp4p*|b*6@I?=!`lGVT>?LD1gzSS0>?vEtfY?-R8nM=dm&aC4&5dkF{NmxJfVRc~eb0ZNm( zhmta;BTk?$vv2G){_1)}5<9Qw!Bsu}e)bBd+gagC>dnkJ>uN4v^es+{WfXEaeUVd# zT-qL_FjFOoXFnCZJWKRuAZsNf=#|#~~*?+tv^-)a3-kgSu?sNu}5jw_rh5sCPeLLb3wq z6H!=D@6fte!om*L-=Lij>#uT7P7)^`*4doqz7kKH{Jii|%<0T?&^ziu(&9{w$YCsh z#kW~Y>uYk$*JMstS(6R+48gV~0NV0cs&jLOOpbk zsrc6;L&VPc*TaF_hJVdbYsJ4la?kkJ2b=s$Wx2fhTAKJApj~JaKRx1t`#xh1$jt z$P{?I1=@or@EhN+Sd|>S-fhLVz*fBav~Q4o%iOo}deIeK_APVY%G)tM zRN#Dkyh(zC@8($3HmO+Hn_guzA=CCjgC|={u90>-!nPbX3u&??8cJRTojuq1Rob_r z^6Mb-8hg~e$8#wx5Ls~X%kV|p%95&ny2Hx_EU_xTxQTX7PNsb|aCdjTpG@fLSmH5Z*)AW3`>dec3$Ko9^&uOJ}G}Zo%5#+7ThPnLwvu(Z2|4ipEAGx zuwQs;72ip|LtkzZe|78Gr;*03>DNOwdh7a3!-QWo?Bs};VzFWmB`9uIiAUPI3 zSG-Cos*>;9`8IVAEW3COfmZQa`+HkVa23O~1ku^A#gfXdFtAJX37l`{*4LJ9D6dh7 z=PWE|+E;rS(-D+0L3`nG`C*8I1NGG8k)h;H`uThx7j>mw+(Zd9pPj4TtMa(#6F0K< zDS(Ek*h!$uqt!>nv{wM#F1osH(#Z#9ant3D^Nq7@n@48um2~_aT*|^8qdL3gLS}VT zTh@}`zea1qFl}*K6Ru~t)#B&JYlwGR%|-L65yyrD&;+N(xoT2T@n2AU$V!>5l;*11C+=opLb1|L1W1;XQ zen#8HD`DBd8PL6xIdrST!&o#zez^0%u%mdQ7Uva2H#~9Zg!a2!l!ew_O$nuuuV@wJ zTk;aar&SWK5*R++l=4LIfnT8sPXA>-xiZOQ>j4c7Z&2I>9;3!vtJ(2|dl6fL@nkTa zysNhjPJF&qItR@|j@<$s%tLHeyb8P;?k@JFHWxKQ|J=2D4rt{m5Awg5{QAdTi<^i{ z=iVa*^?dvM9Bm!Ez&?et!3(R;7gew?u0CI)&uFpN8a!9Q_TYK?$p$ag&!X1gMgw}0 z+LGok_Meyf&&~d`SwF@fUG@y?lV$9yl{L$TD4)6?slM73v8@eNkKM?!sGmJMoEpX>?#0hpUrp4l==NE1%0 ztDq3mft+%fB3KSnAk;K}9UbqQF-h?lQRGP|Cb^bTGZ^>+s@@&Gf$o@hSBceIH!zBnx zw3jfLv{Mw)wQ0{Of(1f*?c7}~hRYL2)8cNev7KTanBj~;v{>f0z|iwVkIt-iR79O@ z)?MO!Ud3E9UzqzGDJSg@q!-XIYLAF zDbQ{ju*ooXJ!gCxTvk#ImH4sp%Eaa<@~}>@bIn)CoGIa0$dLR+%87t*;ISF(Si2j9 zVngrpgH0*l$yphO?FtEdrdDzTZGNlUB^x8NveLfzP+;;t5(P$A!y_|?`lE{B=@Fl( z;Q^BJ(H@<&=PzSKLjmQ>lAqkclZ)}r({WeC_ZHJ+BW>Fp=t$IHZ5W+7%BerLAwGFx z)!rgP!kr2e7hFK%x^S#X-VO7(QXG6>CzMSuST@sSQF7Xak+$7`|0`_H8V3rPG6y$H zpta%7hDm-#>~v++@0L%^tzw{X{Zh>Eif?gsH%=I$&l!ftl5- z&8+gN8*;2W&8J0p8X%mVsi@l78E01<4cpswj=Lk050__BZfAL`;V#QHP=+cj(H=;L zt#6@U>O*B;C&8^e3)Zq~(o9&6OrIiq^;fD~*>?HbA!?O;6F800%1C_3ZG)y3#>wJ( z4VSQ!g7^$sH)xqL4Foqt`l^)245fau)ils`eMz`wXG?;Y;!`#4YkBrk*a`$X8&9s@ z6nTm70YB%mwPv?ivtv4W-FPrGhO;DE|dU_{*uN}!KaZpm|*Y6ay zs1fx)idx)=`h%i&Qt#>WjUMiJDU?l$Caei{3?5vs&Cyq98i ztSu9XB8NEO<5jQUPp`*!)azJzwe~HVSsTYhTzLW;j*;SU+NO6rBi<&Nbm{nr)jmEN zDsJHWLp#H_Tb`H5+g&5>s9naVai$R7oABHZQIAfrAdHV0EkgOSB)vWkui!4&HmB-k_dtScg#6dzi(k3NfY zff;6*+q4*K+E||ZDi8Xdvd&t*skAu9GHR2p`ej!abSd-T)8f1mQu}f5PtdQFuv5i@ zN+|8OrYLVdO!43n#MabXfw^6Cbot(Hk%Zg2(8g+pwr7rqC!0*`Gqh{_A^JW$C5I$t zT*q6WjftBThf~!U51hF%9wpd3)JF0h&_%echy{V@NwKvjB|Bzz5O!wHpZ8AAD{W+3 z$t|?|RiWMZRU00z+MQ|GjI*?6j)~&iM&m49+bXKvW_EQI^JOLNhS!`zWUqK2f79X$ z3=4vRXPs}pn?~FT|3`D|$Ci(bK@O-}7 zTxH(6-%4tG4z)3G%nQ}65C>L!fVttVS;8ab(6n$sLz2<4WIt_CRo*4UY_YcZG}l~W zJBF8lsp10YB`SVgBD!}~?daCLRxQ#}t=gqjJG!-}YS9d_BZzh9$>?ETx8@fq2?sx9 z#KPka@Q}ZYKO6Rw+$~K3r&&-%B`ce(P}Zq(1s@Xe6C#`?DnEYgFZ zTXTET&q`)!+1qVCPc=aAjtx`bJp?G|z5EoXAbMC;l7*!+dF{4%9O(r0-MiFi42YzkRHo*o3ljcfr26ic1-KZDDw|a3M`0N%h=C2`j6v4OjP~9<7z7$|oD#ES!b)()^{YyFXqMP`=pDzv19Q!zU+vLFzTGng~m1eJk0APTCiAt2mcNY#zLxZ!3P%KhxQh8G*L#><4dBqMu8R(I=xFq>KSMol0C5 zR+`ZvY1cQ>-2aKErF|iRmvKu7;T;LX$19VOxA0RNGK7(cp!uVwyoZq2#_Vq9twv7m z?j~oD|1F}Gthk6q-E`$}=SESAtjY33FNat>uYhnL_xr-BhHQ(j@*4WX#aRv(q;UIE z*Co$w=B!X0=+o!&{hbeM7#i_mZfeXL@nMc@+#B%$UZWJ^{cRw-*U9BSm_5(1Zq5&6 z<=o;9D^l6uL2N%=bw3?mRD|2$GntEHKL2WKN>*%&gD3pg$Nfn$0h~%c`UPvsTfuGc zIq(+R2(ey+I$mo{F@*K?;LVEcD=906Wsh!pc~VD|`c~rWiVOQ5wZCKbcfyk=+8*lo zPuG8X{xjr1!&4I@QxkgUZ&dZz=49`+SF~U%d;7lXowSTsJwo_t&dka2kB_%OlUs$e$+1JGQ%Oq!tIjc=4&SgVd*M0~3?ulXeLh zRyd)dJtG;Pw98bjBImZT<9kVGe8~bR>`~&U%Mt^Umei4ytmQ07Sh}l;rH_XZR`kTw z_*C&>ikX<^7SFUiZVgZD-W}h)K3E-KDy*dA)A_HIW9j%(68=_gcp#I_8a}bd_#SEg zE@oA6Fg=)9)*4^t8eLfi)M=+A45)UhhN>Q+-i`1c{eX7~5(J=Ump4fAI&uzQK zMZS6c+H*VoG9#CuW2Pka(T*N=KsxpQ>{;s%L%(P7Q6b6a%yx$U%$*EZ@>3e*yUMx@PRe7GNEN{rm&@3LjvsQ+_$M+hFWhlKW!!wm-aCTvhdKY={ z_v|Hd=$j7S9ZJ-TBKjUjMHPz_KviVO7RtN}2M}J2j{gVmsTHGdiYc)rfLbvPbWzMu zejnlMedLl-*G!7uZ-LSA?pJ!Q1v4IFuw-ew zepfe3227c^N#2+o&g$!c+;>dytd7I_#v=K>^V%c)h#YP%Ju#T%Ab zLC=^ix2f%}lrD=(KB=(@^BzeZAEcex#!pgUSnsG~oerF+MzQ`JkJy!SAasPFzT`mC z!zX+m*!Z}MV2>3nFX>{wWbEtLXsmR-s!`w`D7d#%AUj{*49Go; zsnM8ynQf%Qw%E$8ucSlht%vG+s&KzYQ_AG0Lz3B_Q;Itu1Pf6n3iotGO%3_$q?EBt z`y&5F{HVuk-Ypa_(r?5EyC?}lA--*gh`|mi$Vh2lgjrc1seNs;Q(^z6c8Ct~*5hcw zkO$k0O3!l@{dv359+dD$4e1s3SYGiMezYL!#QX$wu`~P2B@d$A@CN=YSd7VCP8`9PD z&W0hrjSra`FphJOvo+-#?F?rKs>|Y`lhsE=I(dD$%gff_k+sMDPteI#4gMQ^fGns~ zKFE*lqx_!GJH3BOM0W(naHnw;9TpgG~6+sOsm+10o@WW)Htv? zHTp)v8z53CADne&GIpmkySU-q$yM71ABt_zDRuChjES3~H(ReRO_vNlOsJMe!GwE7 z+a&z0;97%^Sh~^S9E%~-HFcf6PZJ1l-iTHU#O@jJJaKeCM8liz`Qk@i)1uh@f#{9sl&h*EXH z1C|k0oTGTWb9IvNZl^3J)HGgkFq0}>P5Vbyj@s2UHEY#dL)$-3Af38u@CE%=1M+tY zwg!LCkLysJZv;FlQ^33XG}2~-idD$eReyE`vi760Me{L9^S#v675uTB;+4b69P;_Q zeeS77Q_L=(Tt8>$SNODoPq8`eD{Xln4^*5)A21Rg3)Jm*IGm>rnNxp1qFRd%yNvG+ zU1-i(Jt-75fMI%JqqV|N>)*j(IgE2J{|36p|6Y(*?x1WIhh9>-H8_`+3Spd(?L#-k z!qrB00mQ)Vaf5q+p=kQ5^@eZWwn;k6`^B-0Q~+5%u+YjRS$l|y^Q|cs_|pN9GXpD~ zgFs4`?}89iWh~U)Sm7+Zo(B#5odY}($Q>6K0R!}bK$n4i>wyF6ftB^ZegyKp`LmsF zJYw9uU#hnk{FRkk70b6<1$Vz&n**n`7({lX+(m&S+Zjj5lbh8rK< zTs^Wq_vqRY>Y9D@k@9+4RkJ&)7pogijJGg>kFNb8M4z-_L0K!#JZPolalSS`2sv-|9)JhU_;w1=@IK1{J&r+EtG zB$T2~p(xsHg2>eD4=i(AMYVUIz3wO#++GUs^R$ffy~pe=9%&b2>m|-Zk)M@uf+HTl z86jDCiP#k?jba^NsZwTBC1=I~~gSqkyxx}0ef@3ZYf@7|=6ySh4#=|J-EfjZ+jtkj0s0;Jq z4<@aZuTtVF-pR7`Y@xAo+J{y$LX0b{&*ppPL=O@#`VUhS}w zK{qY2Zc|uN$HpTV?aZ9ttx2v1cyO|Zx&G%RK{vMQg&e;FYb!$`y_lcN&nDCc7}I?u zt8PxsjmbbA3@fne#wJ~@3=8n8x|Dbq@wS)MdOAV>e67W^64>yag)gXaz5Rgozps2* zalS}HT4T+%noqqnq+ifXua|$=cFO-?z5E9?^J~2ivYFTa;BC``4B_b)Hq#M~{G8PV ztFKl#fdB?yR+mDT=O4MY2VWsoTP?0baW>N$D6`wv*YxFSUxftO#pA;ntg<)aLpxQB z#Xmkc5;&YDL*cE#*GNJ7{YQT4GE(TjQXA!kc!4im-q*dnZ!BD%QWq*u;Ei~OS+dxV zV!ZA?$TmX%0?B=wwD9?z>hrtR=l815t<~rEtIr=)pFh;+)ZoYd^Ar74a^$xZYz@>H z$5EQxpLTr6X-Mq|hfDSdL}%l-OVtOgSo=an6zf2_jtB9Do|t{AXn6(Ypa`X}S$=}Z zhznD$KPuUI*h^-~-vj$$)yWymlR%D|)!AID%_jIoWr|gcNxK@@E!I+c*XMP2<9Evz zS{_}x^3paa1dFW`dwIeEq1xI3D@tjnEZj{SrB;5x6`@v zNDPNs!h!t6{H^0sD8{J=O8w!^#sg8~u;&Jc2(@>zEc@0*zBbS!28fk;oN7s1g?00*-EudTZMv=~QHju}7R#tQ8&m`5r znK%FZRO|7~IoZbVm&lC(ipfuNfO}^fzq1X1V)C;bfXz>4!;qhC5v%-7wpMa9ZTP6; zNmR}iN7CbCgdDyhh3vyA*Taa-Pv(!jGzcU!((B}>^X>H8N*+U5b_SpJt*r2%Uz$Ha z88>~C@?8YuF6HchOC-XHi2R34AFc1D99ISjqH7X_?+DYr<{Y*uE3^cseN8Y9Z!M(r z-d6G^>iwAYAwSNVRvzH6wrQ4P66BflQ%E1FwM4RvwIs+g$EhVlOS|)Anb;D|bI3ll zMDv^Nq=m58Lhg(!C)-YUNGEz4<)(c*Ka-k!jxOO#a*A}XA6L6wK{bc@_VDm5TfA#^ zA;JuM+xQ%HYf2MNMw8vr%B**6s9T&5QdFyKBH2$7bC{O?Gx!7OXGrz-u??-+RLbY* zj%_M~Ic1Pp_Dn9^7;O_3na}QY&XSLal0E9xsoAG%2*-z~dAn|S z_t{r_2-+GSj*|VbQCCpCTK!$4cq>dVc{_8Xi^In5^o*wS9&fE*#@V2;9m5mdu{5gC zF_+k0sW?`<4@F=s@BEi&61*Q7=?VETlN?9M%n1}Rjy6qW>P3vV{P>I!c1Oc{Pl-+L zc-JN*&bdPo<2CXE*WKi`==47+T-(9&ut^Ts3#{Ehd|=MK%{A6DvD^4=Yu1!0{-6jp zxtGx3q2glx&Mj77U1D3CQ;hRwN~!phN?G@FYA6#oDAACkA)jbxYsTn!ej)+7sX1}zi#?>XkLE#Mbk07p2uMxjw?1zN@Z`IsA1 zd%O7T_CDhx-k2ZZ6%Yrii2cDuiGzv-8xCFp$(D&5lxT+rjsvIk*pJ=mnTFerL2Udd zh9@UR7ev&$=Q?i1ePVvcl~`SjQHg0^{3^y6uC7yuMwlj$myrHf8yb~Spia@cBei%9nz z*Q`l&!7sfMv8GsL1#s7cFB4siL_eWKoPY+ziy;NXt~=fbfBul%-9cW{UjVJrRsCNW z(JL0L`v1rXE(V=qhcf-~U%308rrOKf~-cvo`^$s7|E1oxv>3|UA)Ms?h2XR&4tq(}%LCP5 z&}zdC6n^XShY|*6)deXIKU#UYzx)}{CQmf>uZp$Yl?T_>;Gc+OgZy*PA-TJeNAaP5 z9v{wCl+EIAGw(dnsl(u(tvFlM2mfNQOjleLj?>?IGUFP~Lk z>i!6iU&tTfR1*CWa{LAx(_wusWHs|)ZQI5 zJ~(>`)5P7@n7LPeA`}_RX(#7Wj`!8P;eXby;@>%1)X}I$MQV0K`mWvxye)k?D=7Y~h<9j>v8%o`>8L46E6 zx$AuUstuOlW0aBa3FOzmk`uKD{|O8%==b^wS0UQP6WF!qH_(m2Z#~}bLbQt~mhu1P z@pc)aU0h$r|F_56ZHRW!SNz|ooZk_juyRLxdx_jM1cnpWo?yG73d0!s+7sec;X?7M zun`~DY*n~Wy!spBTgmfjg5QrA-S&RO?KUuYJ60CmjChwt=w^f(nLn8>Z0Rlw7bbKw zLTwDudxZ-VdlRiDhG_0b_>GC>?D5q^u1t(Fm;yS9-a^L8GnkV%nNN9m;~M<$801`3qM==eU>_3$t1NT%w0*>yk3>Wt92% z>gSY};RlrVUq5FF#Pxw*BZ!W}Y~5Os^!hd|@o3p%-H(XW&ht&gwAQ_8i7S#bbSRfl zpZ#N{Rwv8}Zt6w$ZQT1dqJ10lzQ(dxkGsDlz&q%ayJhtv$|(8nD;^?XU!P8+qJU48 zxq4Ms_cwF&g`B@sGpPR+J92l>%p0rs9K#osv)8;a4KivIn~sud7Gm@sy3(@Z z?`Z8x@tQbCKJW8OsUc>(~(Rz8@6-40NONvf_nQ20_T;$s>NJuK3&TwTRd^&0}_~ z;vGsY&Z5=U&|2S*uhK)`oo@ttFy(8+hkaB##_OKVGb!&2hQn;21i3XS-Y!a`^+^23 zher|qo4Jey$42hpMr&V9%Y8XFR+OAUD|_+K38qfZ{FfAu(s$#4{+&D72Si^-)5*D4 zM)}|S6nNfnZ2L;2>w!WbEYiXkofb3*)^CGRNGB^C*!T6F=I^F=Y4HyJX2mk*Mxdv5 zawLuYl9w?Gq@Ufw`&LM8XQW_#O#2;Dv;1Y4wGISG$@;N6kC)Uxd%=--RroM9*xDgH zOLOuMDjQ%S$_p3cTlXB2Y_E{t!5PH@qrk@F2sDP~zo9-3qvmHy!>}yb0shH)DPw6& zR<1;L{K|B)bL=wD-$4&iNM^Bi1R-a{Co3hQJ|Gh?=6|(+kX3y>YD&A)F`%a@@ zy_*?DY}>P|Z(pQhJ}k+Nut%k9;qrdP{juS8CeahHo=c>g$`zJZNfW53L(`)fOO zn-T9Vx-HFK$-U2r=Tbg*zv}JzJT11d)fik%JHMv*ddn(b+-ev0PO(KkJ|kOKS1z@7 z?2B81RHDOoZ_}dW;3M6y)U=gV0DE`f~iI!+h_O=EdIo22lg~B+<$6$c5 zBKk_3yCq6ln0CLIspD4w{5-c&uJTm$tVQOyTi z9~PPqwYX8>{?YK?-;MlL-3nQsynSDH7~Z|9!6+197Mg!5JMi4eMm~i?J_b0zhB9w4PLDoZxGra8&hCp;{k-VPd2x9mUp1+~7V6Wvml7;!)w&RhReZ@C@ z9QUWta{Urd`@K!RWvo6*O7q_kPV+sP@cH|2AZwMy@o@SserH)|MC9?-?;34w+lE?O zcL>+e`-sXmwo!g#1JYVf?0v ztzZ-iFrwK&E25xcd;yvb^@<*=G8C%S6JVA#U=*ssgtjbiz$jFM338yAL{*nUH5gle z)BZjU7=>yup{_$3FbdUR;BS&S4{g9GWH7Dd2yhe1QS41uW@f{-Dw+K(e9sY|nR$&D z66{9vN3agML64caK2#j#5XNl3*#C7%W_AI7peU^qS#oVvuNs&Yf6rf9e_%5E zqT?bGyzzyW>0%$2hy3Fu2E311aYvc$z~ifI*8kfV$Y%3Ue8bk$O+TyoD%(Y891F&a zM~6OX;#c&eP;K19U6hp(Ch~$1f6#W~S8pf&Ui0Gv%^bL$_*L79M=bL;$M%GB&;T{# zU*vmf>>n14XQ#Yi{K4CazfX*x)%Y*M40s^apk7iBP%o*XRaK(!L!!DtqH3!p3K=A- z%_OSmTB0yWqB=^V+Ovv1L|-2Yuu3-Ah{He+2gLY_ z#uZh`LIKzJi*Uw&6{^uqDC_VBj6&POtZl$3RD%h1-M;~&(5geG%&z|it&^(`W;DLb z+yEn0JA-_4L?f?4q5N|Ghq*5K^D~t2En6$|zfj(2Z{7QdN#^Fn>jUShMCP%Xsjv_B zZ2$(Aw-|qM<8yQ~KiIlQc%77yl{n1mOSo6`1Bfq16~=v41s&=zFvS zll@O~IX6YyzW=TMEuM88opT&#`QFYf)uKA@`f!a2S!);KT{Z&8Ti*j+wvq=@w#yy) zI4SHP*fhh+r}HIVQzdMq`Gg=g=XaXWG1(AAZi|A5M){O_9WJAWHTlTKI4fl1?EV+O z?PFT6@ia=xUm44$tqpm`X<{B-wUSf+iax#3>cBd-E?wOoD{ju?u%;i~=!-(NIpK0x z|Ck1hLN%B$|Bj0=I-fZzj&(LwoXt*r`NQqX4J*_N24!#(upB*QW|hdh(YmiSPyy!0 zC-YCLu(fVqe!Y(TTJX3A8B3ruqbLRSQM??zt#KE@w-OndeaB@`Yg7892LP3G>wLKG ztPF!eCFgsfVHoX&YiYU)JeT*hg##cQIv&c zR@_Qs{FyhEH4UYCoLgXeSDD?G-IbxM_e%Rh$eJY{JA2XzyIh;^L$jz3)i;Orp<2|N z?3}e(wxh>jjH$V`e~F_kzXT+47m8_VLQw28ChgH5RV(=f@TtpLR`ouiKR#Fo9*oJQ zkTaEI>@VXb*TCO5m=BEhre;rlUve!kIM}K=0zEL{KDe; zJFVOf4^^*~5mQv&}!p5iJQL!niFPB$IJ z??A+j<^8exnI0&K&Wb9@)yl!k%`{CJdg#Fbji*X^=Pjw-&K9wdqzl;n>pK!=F;@E#v5j@i5gf z_?3sTPSB8{Xpo*kda>!=C5CFhardp=)IB-ZzAEFSmcm_EOP zh7YItdVUOtwya<}K%W#>TnxF7V2+O=_C@w7+Ey`kj0E2FB0!Sh(34E2y5-uz5Izte zOKwq>Ur-R-;lQmBO->@vLvxS^hYQ0q`=_-qypk8FL^4>Ps{x;iWNl-leNz}C!4#h@ zQ>!ry{7Q|i@S#v`oCD586cvm@+rn%IufAS{x=wDCqmY%8im%1JjAHe4xPEQ2;5rfn zS@k9T1wN>rTY~T=A66cppASFb4m{j-{;Ky<>ivQ0bvx;1-OJ|J zeZ4k^zo%V|(}r)|qxvUht*k9&@|4(ST8?1`}kT2R2|7s==J#Yl>QE<7;&(RD%g~;i@m=rpXh*?~e_?hERz#KF{(7t#^w) zt?~z7g-ad&v~ile^{D#9+u1$X*`+5o&!p>T6N{6zr!08(c4mWS6spn8@lJbZMHunM zedtr*<%(~dfqFzZ0|id=rN+aQydVz?`sTA^Jx1dSSzFv^yV3aUgXv?MzZ{Om-nfTA z#@i$WOb=tzgF3mPK-~_1dj;Qicnsl`gLkSL`OXY;Uu_KP`BkgZ{5F6njCSbVdwQ1q z#K-exB$(X6QeJ*@=L7D0j=DKb+lre3vJqz%LHE^}(^%5&aiK+P3-ZeP(Z(G4`p)Kv zYRPv{HVEOR@o(qMs6cTJeBunf5 z)lY@D%<&?GIoj+iuBx&dz4v`+(S+Z~0k7IF4oIXj-Y3%6A-HqmPQ^t97tbj5aGEu2_-J#s0R?nAvrVJ@f zRgje}U1!h*J-E?#g+kvK(gn?uub~TC^QcM@^iDePe^PJ5z9D4?x&J9U)YYgJbzRN7 zji6l1VJ+OQuI3%&q)k)cKnf0 zH}}f=4-vt%*i*}-$O2a(tIeJVr1@w``|E+=KCn2UC7p8+1{C_@>>6*nM<=Cm`Mk#; zrbj69LUQ+tFHol$qc}%%?=SI^hd^vW3AWR3?acn+z);7^+QSdR(SG#B*My5`VQ5@f zL%jLYk`e zs;%;v+uEYD0@E#RI-8?#E8{LRK-_=%%JvE{ZnYwsi+Jt;e%#=s-kPjduPzje^NVPa?Q#>KmUC;Qe#D4(9nh{tU`O)vNLM;;aJUEHqI+h_$!C#J$=O4h;2 zQ|c`++fKV3nulYnNC%;R%2V}Ep?S(x$tNG94K>~BYV0!qiRPMCXnLf(?&YK>>F!a} zx({8O{a5;se*zNqef$g}KwTgDEAmG@tp84L&fjA5`N3&!CA1%K&r5i#m9Qk4J&4SH z)R*S9Gvs#iwPs(ubq}X?zwjQRbHHcLPiomiS3TjCr%>+YW|CBOxZW{WEtg$-vo+}Q zdhzpgv#&LX<4crM&x!?*wE;nPm;5!Me|2Q$ueQi=MqbIg`BG75c^=8_4A=j^-zbf{ zQ&HFDyU0f{_O`y)*Wmuc8}y-2Z7u~HKjkzU(z<(J@M|{PXh*qyd7<=bUMLj$&0(0^Or-tGi7k$$LR*?cL7HEJ2|B0>Mix^w z81b|qyQxi8T?*B39C*6=V=!_48t+W=A27y^_!E2&qmTd@FUHGqomhwqx%f?uS?PnCK)e~SI-+)o51`}ifc7wI{Dr7KO@(6JL&(^2n z0H*LT;vK4bzHp|%-`diJx7JhOTb`PFs${R=8pgBN7W?<5{aNaX3Qg*n$J3N*Vj%im z>%4T0mjm}Nj^i?2nsf{Nk?JaK=dMxPIYdMM8f~ZRI`>EpJg(Apa#1(=*9HyNYL2?j zvgToG{ws8yp*yA|4T@K9OQrXW{4L0-YJ}nFVsKGZXyt*bm(qqx#~Jw7wGrOvMxj6x zHNB3CSx~PN>QuVb8QT*0^kZYZm90>%>_BgdElyy#tN<-mbHqeiPeg1O8g=ussu-Nc=v~8YM^*pL&ULIfHLSG(7x;4@IqEP6Ic&yDY=lQ7Pvr}2L zuVr6zz3SE4X6du%5uX-q)%vN}VW;&9=Ib-;)fa&Awp`$A)%A_GC}eH%cj^Ak=Y(Rz zeXbVdZ%v=iGtgty`lJx$$nO0GwE5o+zh+qhN<|pOX30mLO^@L_#JDC$CyT{PO?WcE zXyK4ni@j;dMrWpKsvG0YZjj*`8|;NK$O!Mpx?{9{7X?j6w$EI+|Y_?wBefr~DNDINo$lDSg9llnx>&i$}IshR#TBF4eCo zc_SY*Q%J;kV~X{MBWO>H4$F?U|#Z3Rg}Tuo-Zf#Ew3A<+s;zib!VEKb?_m_`NA3 zUo4T5*3^zc-n%muZ?bhc7d8$$jUk^skG}zdIwy=bIHFRPcDr77kL1ipyDm22Ht!Rk zohc4Ym`1!*=4IIzK+x|83e% z{NHRR{%JA3GUZd35Ng#T4DwW9&00_WB2mpEQKi-r)j1N?HWF3zDy=%t;3M-V!OgU< zuW&T&i+BtCSZPLRF+SkunK9nh422jA&9}1|)Bp1M#*Du@66?s;BZh-RTvDx%R!(C$G#K4xg4Wi5ZMU%}3YxBh-@cT+tDA+VFMSxSF-|)aAR*euxsyKI8`R z^HoX4T6GTX(!X$4qIErdN~{Q|~n1yUob&lei!EQJhK><4~M-GU?W?nQ;!Kl{?8uwx3r)|g2 z$X1#~ds@J*$M||v`D{}k#7C?TPy-0+nAUW8o*(=FdS__2_ve7*!tx#QR#KgJe4jCC zoV~^K4ieH{zKT)DZMH~p-{%-cS(}pX%3`)Ylrm%moykXt?uzWIlt_Jji?`1huMH#ncjeT z1^_o*IXX2qb07!s#f=0vyDUSxhn6WK9_0TKNuiM|3M06 zKZjP$t~n8fy5!L~m8ufHP(i)v@NJ>q?Df39f*LwuTPU@SDsQNueh-~BY8*~Bz15&* zE((oW`ptO-0rEBnSr!vmGP{OU2Q<4s-+DIQCkbOM98}|^P#C9`H2C+m zagu!j4j4qwIP}g}p_&F`(H_evMQPZOq{+ea^2(NiyqW~7Cm6j(0lXRFHeFVRV9X9h zvRhb3L?^2`kuiFC4Q0jq&&~BFe`XYTVtnZ1jpVQTsF3wBOLnJ@|FJ&iHo~^}fpUTwG_VW8weNpYJcT4;F^&7XMz1Sh(V%x*o zdJ}L}+Z77qGYxFm>nL`Cy-xiOS}u7lT;7n>>-(;IQ%2Ce3bz}jdhvH;P`^%w*=Guw z;&a9>^a5$n8;f6@;QO)XH`=I>mEX{hzMui4Pz~l!PG{ndRbLe{m@H9W_qDnX=)ZyJ z>GcPU4D``8aKoAQp~nAex<|Fq_cZ;N$Fd)Sj%lD!YH?95P~ttD#cq!9MwJQ$oXOW% zpi7nFGO{;gei^qn%1|iudETD6%oobNwUJMuTE0sS4^_X_#~|NG>bC^VLD^6?bp%p% zyV0Dh1x^MNd6!7pS6eNS_Choe3e{j-k5pX|6%IAN zCup2}y0Blo41PSfmYI%D#OH<6S+O*Z85ht^aUIh`A70z2TcKLr0e`P+z$g@8c0y;b zZ{$nKIYuDX&hjjObu#+_Eikr~E_?&5jx2a_tk&LL#VUPoVdHYaU85}O zHD84#R7Z4> z&vwrl^SA4uZ0%-BtDnbl+;`tI7*6x_JuiE>DDpNtVdE69s%ZOXbgwhu!|PSdJMw$I zLClNXVv)wnr4RlWTKQ*RgLF4&Y-rtgh^b6MzE5OzLV&^3bbX&uQ$`UDj~PaRvvtSr z0nALxF8)cDG@S{>=FMW=_W&b6c`dvZ$mrIUUR6C`+;KfUvf_cHad{}2NfDr3FOVlI z&vd^8Y4YUc@b~&Rz8hakvlzN;aEIupHFzUG$*M=;L;L0hQ{cmOTcxzGeC_T~0XZBanNh?RL=BB0Dtz#@@WUN-bNv%qYt0;c(7HgX5S#rM1@pe#P z$u?PtkG#Rt`^scVF`x4T&$nM}HM@C>$%_4L0)=u^kFO;Te@uk0)nhy??W>^`A63Za zw7(zz7hk*IOsw;GrW&K=g&t{z>R3YQRT&BezMyva8tqx8V>_yL?>@iXfp_X0redHK z{2ue+otJv~Q?dLS9_r=o71OKo_TEu>liR{Csl%5%xa3dU>=PN++PfprjVub%Ghs1i zII!wsE!3kbG>)WHaJ92{UxRWj@P=c{u&AD4wPjE}tLb-BE-;O!AF+gCtDPno)h?XR z&|g19utl&gVOTq?t<8p8yfrDt$M!k>*T-w$*s0oh)#+tfOh3BB&YsrU8hpLHb=$%p zF&{px>DIxcBfOR8=O|22tz&oAX&xdEv?y{{Qbq0xLGCtxMep_Y92m>5+MmyFPkmmW z7U7X9-Xh+&hEAP~^>g8po4|CX34v_f*XV!MI z;qri=StAncdiFe#z)T$$wDAkLyjRuUGt~?u{3lb46Ta6HXwr1;W|QRS!rGVB`Q)w? zkmmZk-Vh&Yb{CD6dFs;3AX3T|e_(lA33hCJFDFNc3ADb89ddfV^GB16HK4;P5VvZp zG%2qnBFsaLtMAzy_6m}$A)&AP^UJ*{=%!F#T_zFHxYW*9es#=}aRzlh@cNg|y+;m~ z-cG}Vj`3a9=ew)V_t@u;>Du4}`i#apo8C`IM!EVOyq7;Z1I>~(lx^!2-59}yk^TAG zNL)Q7UPCy%GTyX>*I~Cy+HM6JLw|aVsE;#ope$2 zj?zWqjdY#Wu0qY137@ml-b`1756$^i zQKLVB4e+B0tj6g7F|^NgYSUKeu4wRQ-zJJv^C1Z&W>w;bY}P>0ieT5B#Un?k_&ff* zI!{W|I4eZ2OJ4>Q?!3C((%_ViadkcT>B;+ByFl`O=KbvyerkBUFE{oA9^1L@pg1Bc z>tsR{hq)kd(l_Hf9eSu}4nuAgXiLJfw~7`@^=Ro0@Mz`|j!C`;JFoTa+OjdBHRKn{3 z=cCnFb1_O(5y4NQ6@fY|`(mJLlrgh^l7+z2zd^l;Zsl{s@l-;SVV;Sb!HdP9=md^g-I@fkyulZnX&-7Ia(H`;fQz@h4FyfCv zkNX#9Q)J;74XjM&J`Onyqr&|dzY^^}tlzY6dGKYgDXx3fiR>j}xm_<;d^40QJU7eD zL9@y=`xVMHBbT&qdFGcZemenvdMYT4zcd@>zz1qwA8RMk^ouJvDSea46|DMBFSkLj6!BoAh9%BVedU<@+f(Qqg%kyuy8c{J@9R7 z&$j2{hu0NLqkgwWr+V|)7k6vw%kIj?G5Cl7s$=l5UhbKka=EhwwfSwa&3Ee@{QsB6 z&;A;0&Td-Af*=)?d%TQi;HQLp$Kqpm;|%<95V^gwYy%t5z`=p;jqVHijxc^k)$w`gez^I`}7j^B{wMi;gn? z(Nhms>i_U<&mzt}Q0HzG)>ZUp1;XR*{J5kx_`JvHXH7OagV1g;eYJ$Q!YDUCNlvr= zPHHA0ieT=^Uv81!IQ zss~#E;*~rfiEq~fU#kcHu^#w(2s{UAd+?2V;F|<^jZpiGN^d^7_Fc@SIEHd0J0Ufa zDjOdfXK!veKUae`J{%p)THo%Uj1O=4qcY&0NKF8qFTp!a7jICmw67K^tQ}t?^7U; zknvYCE$dRG{vh~5w3Ix zJ~26SbVRImcX2YlXnfak9H$skZ6>6BE2xUKtLx*t(npG{`ncvjJD(xri|SM4Tk0q@ z8k(2qh2r}98*yZYE12bx8lt2s9y*6b(@vwZ4Sy2) z#?$ffqP$@{_%bC-!V_X-9W_fDsM!tEImE27dXKm6w8ssy8T?YM=HbH{dc&veqzC`3 z{WeI>EzApYT#9ER&8d?tt3Nev}kRxt@++NY=cnuXPW!zJ)QbqctqP41MFdN~&5_Wvg(^Qn^`@H*N zlFb2jMw2c72Ii-aQi30nAP{wX4J(37%(5J4Z=L8l%?yi!Ow6h?E4hJn_LnMS)1O0< zO6!SX6z+(#tXffK_Q{iX&WaXZX2!=`<699bvr7oHa=|FK#+0wXuF+wyuvD&w z=m>*cLDgq2lj80-G=Rt>7mWO^M?Qqe_5}Q&xRs^mnkh*Y=q?I&vi8sZo04)z507*}lW$(9Fr|+#=xX$Pu$xy(jqGp$@eJ#boc%P0s1~usF>FE9y zte3U!^C5+(|87Mna3#n+B;+;#R$&>FU>iKKlv{$;1idehR=VG_#O`MqkqpAUH?)|E zgWRn(_*Z-lcTQ5R*HM^B&qTow4|fi!q;C?NAah($i~oI@xPK-jxSpIYoJ)q5o?+DL zYX6D|bBNQ3CPp_&sHoU|aoC>zD^W9dL1EHo@{>vJMdBBzLv{j?-TQQ^$&aa3s;E_h zFP8i0=!o15yp>j3&Y`H@@GUxES-N9EYLy4PW5H{vr>7tXPsg|mdIg(*-t6l36#Z3Z{f10`@`%>90>W`1}w;_;;gqFh$rF1x7Nen zR$m(N@C&5z@^|>2wHV7#zJ~|-RRY37;a?gIU+n!80qaX2!nKwx6fW|2pwEU7bTO zFDdSQyIgZN55s)8kGMX33gO==!rd<+#9H(-aICaI^iv$0uHMS;21v|@`VyNv(C}Ls zNxSF$J-k4}lk~Ri<#xSrap@g!X660I4t;I;+|!CU^KRlR?f3A@wwB~x?@#&xLIOJ5 z7+;*h2piEy(KI1K?Ruy-Os3o1Z~gwCxXkrl@VtYNWS3+metCY5XUa@BS6h&J|I^%FH60 z6Y2LYl8wLl5ZWt1=p#TVKqcC_uehl3sx&IyUkre*?R*rNdfby}5dS{F-?9Atjz7jr z_`V3H%EB+@xeVya208n87B3aT&f^byrhX}Tl!dc@Xv~Ak(RhE6SjntRQycH$*6`*# zl%u~l1h3D=``|Me?@Gb^Wj$jDFBXmIN%-p<^~q6o4mpDMR^p=x`W{%Qkxg7ZVAaOx10xC z=*9!Spt)s2v_=SPJNQ^iGewFD`5{Xr=}ji z;GBxn?|>09su4D^>Cfht%dMIs=^GetD65M_aW-jCYcgk0V8=ZvA8aN{C@~5=UY%f~ zaTpoqVrYD1(`piD6R^(Q3Wcmc2E}PMzQv5Wk=6u~ZLdDb?6sI=BC&g(#U>fo0uIhB zshn%AdN!qC4~|wyMFFDk_*W8!pz(4H49Ef(Vk;XO$<$`l>6$$z$U#&Fx`euYB+b=97XMiY8n?>DM@oER` zv+2Q6z4;lld2}(`Cw;o;^)%i&`CIuQR{1c`<*5sD%E`|)k`Z>!&fMqRkl9mRbHO@XUZ!{Q|5f~ znS#wrSaa4e-XCPhzrnM-<|v$HFXAk3-5 zYtCizN#N&&?tOfI&`W4rw=ewrvGIM{66gyL`Vege^o0j`RJ*JeE*+ar?M!Npg7=yi zBc02FrI~iu@K<723k=ttXTv5Xi8?1GbvN+4pA1YCLifYHynt(SwR^~!i>~q{=F&bK z0m^dyiCoiI$Joe|_Z1K5@B{(Q^=8dz>$c3ViJzT?xM2&S3*>XB*+H28d+XxjxF`K| zl0KX@#Cj}QFo{m3&yUaZRx(>Q@*a$C{5}%XDZbbVEln^I5^gt=tB=6s%jfMXJ_So&)GoIOx zJ&Vq8yzQS+qNdVK&;E*d(_4VRq7TvwzLtpfb-Q=F)3R%}k*04T(DZzvL(*HwmV8Qc zZRQF(fS~moN|S#6N|bDf(HI7h%Z&NVg0-y6c^r9hyj$eewnd)T_aZp*@CH*sx5Lft;9|R9GSCOLDshGV5|CvY8$nVz`T$u~9IvX3Z_`Mk8>qNH7BCp@aXJfx@i^kEEMba&bwl8yjN47n|rjJtqEBkgO zC~CB`ne+X&H7^&)d$Ze6u~yd_Xw{^wYd;FWYn5L_lNHy#=+Hl~e$W z#N1-jJ#wQGYoVF)&M-wy`^M}n0;H7NUia!m3^W&BLEBf9U{y`m081+PHHi~6uJ(za zQ>LeQFPRo3x!LO))yY;+J6p)V?-&O{9_Rw+x+qLwm6ACX}8eV z2nm(0t~8o?6mWIC_O#fz{JW=RrZPR)1Gda1lECSU$f#FQPWfz4@4v{8UkTf2OCKwe z7^*yT$0VasI+rXJDR~U;AiMBW6wssgoVrqE53NX#K?-8Y6Q!%yl8$9xM zen;a{YUf(EeM39h(q5>PLkVV$2-JzT9JI@}bXVK~y+51`$j)iGhlllpphy_Ei+&fO zWIuG*Ijp0$T~y9dOOK@D@>=zI`npf4uNrSD|25*NMtu6e)2%Nm!=7|Y3Fmh!WM8mb zo@20Eo}&-XN@r0^elr&0zw)qBy5cOO0ncpivbiQ5?&FXJRvWy0&n-BOkr=$bF*!cG zX(I{P7>e7!0M+_5v+OS;6^`m;$0WjSGm~x8MP=C*1#AU<3ibu!eNyCiqp6g?`4|$q zno+eKo14Pu>yTVI`+8+_RlmKu-pF2ay%Adm+%lI*zPrmIIT><~J}AhhC}>@Kn&XD` ze}$((`!yi`b{?xuutJ-ZWBow3OdOVG3B7Iyjjt-DK-7UIPfNo@OaX;VD9+WkY&dwo zT)mWOms(XcwP+MvVVjAvg6i`Z5@iL_k|-rcJrkUv#-+`O4d1uCEST2`xaF5@sMuS)6$c^3cew|8%`rzT(nq?RofMowPA2$ z3{Kv-I!+`i{M}^AY4|bJxu5j~D*)e+P14hpqE@LpXXQJUF*=m6J6lc5yR#$VTw=q{ zH#%G}VR@CB_B%Cg86ptZ+Su=;{jTJCf63l6fO_b_?p=3AS53Az+WUWfA-ZZRydQj5bk(x({)Ep* zS1k|kw~=N=c>fyjE5rM%d0%Dk_m5wrDnd>5z2f#^l)mnt(m3iW zK4{5vcG+k3E$g%Tko8&p%=)Z;W_=cnvOWt&d7o89sHw46Vtqd9*L13B-LCSs4}U_O zv-!K4KQS!Y6x^hN34MIN`k2&g4|#agXB1KC1Hv_Z3AU5Kxe~F(lilqfm0Gkiyy>Oo zoR#ifTg9Cl6jeZb$dLT9yzEN%D+{JLDelXw)`h$sVoG^RF+MPr(!kW={bIXsCGfh| zkf*38HB|oH=GpxNsd21D$I^uZHICKmu9z|{3`rk3kkmVm^UF&2-kIpC>g1fcWi(~e z_J)xa(G;z_K^J3npQF0PD|0U6LC^r7FL5NDiOHwkS5lFC3b>TRTBC{w;1G2QVi3Fw!YY;6KBjJLXhXAy;#VcGf0vXUrpYFJns_nRxIz9J~>e* zcF0``x#M1|KjCmDKFY)2CicMRyi#-Ew=`-r>&>|mi;o@q7=a1t+VZ{&21$wAbjebc zeYAl=GfSDnqh6EeqN`TgMc}A-5=2J_I(nUoISAffU!G+#<03Q7sD?J4Mt zYZxo(7^QNg-iUsBJs*&HX((y}W;#lPmLzr}j}R{I5bdwD$8CUeQIjYv&J!0kiDwm< zv=p5+`Ed!-j9VJE4sD%SYANWfaJWlf+eV9k$J$jOT_v67VM6S5l$hAuo+1keS8CM> zZ-KqioC$9ZSv%wzu_MZoe)o%#hGiO!n?)wQ=9#Ep=Zr)K4z~Ku4J5S(aT#2>EJ{EP zD~C;H@F9%Fc(vMSRoe%k@ENa-Ro0ClCWmjVQ^)IZi!;G<+LQwx)kr(l_8YM#=j+rNhrZ!o# zyR~DpZGETPBpMdZpEt}o$i=F2MOjV+UmY)e1-~VnwbFDAuPPqGpGUejm8 z&lrB>Ds7}~00aK^lzyl~2amT7vK=v0S_5Od8{G6^xRtOna@Dq%u|%8Csyi4fg_6od zo7Ge}?7EK7Kd%pi4<3+;}3%9B0= zTHO7XeXA%V-9gWc;z>d2c6gpGS7;ZamR4~2;AKI*YUwfhoTE2Z*143GE+z;uk#U>s z3m>y^n5uJ?C;bz;{PgquOs_q2$C`fig<3tJzMx-8^nCi&F?#L#i+QrU^cP+E8FM9z3pL}gQW9AN_epnRP~XpiT$Czr2Xn^0=OA=acq z$W7Ix>0Df5%Fz0<+?*{9pSh>PLFlT5DM zGUHE-Qel~a1yW-`{Kf)j^Vdkks>{fa^I4L=^;JmIW})Hox4kZ8w*hG>$=|!nk;&ie z4d?sL$i?+WpIAIyG%XW~o7qnBWYl~Bq1dl84VD+`>A&__UWDCU^|B-q2g{2b9GTeL zXZ3Ud@LFG!aSJQEK`l#Gl8#Y`RChIE*=Q9*brAAGF;tA=E=KD=_H4BF#FVXnw04(c zq0!1{ih%%*#Yb;I-C?2m=D*p}{GS`rFZ`bxQk-EhoVy%L)0FJHX9|zwKI@X^MuuvV zVSPA%(nnIm~h@?}6OKf}@e+Tfce+s{k?}zcX0yrJxo7x7Zoo19L1JV9prePdev*ei!4%=HqsmDk{nu2wqJzl6exvVlDvW6+bpK#GpwEI32;6EIGG&k zd(S;fb0=xausftEV-;oe+3B0m!s@Jnl%2j?`4{byjJv^j6EFLpOJ&QxE>rLJkA&DWOjUR=r2!`~CdeMzwd_N`W!(xb*MQ7|hGW(TCxS3`0`8VJ`g@FT(?Gmh*l z%QaeDYrl>DhnXUIbfI!E=g!M{?;e#C+ddwc!C0l=rv|STtM8$xgSxfXp;>ujI8^f^ z`WVzF>Zu=i@?<_VSQiD|s^69SE-(8dlx?CQY$hf=8z?rU&-Xbi(G!5p;Rc(mEo8xb z$HD)1Kt266KU?0cS}(1j7{weym!=HOWB$`ALV&OQOCM* zp9ir~0E0Rl2t>INB_o?&Nn#2TaY$!e@*xT^9C7{vU?625x}TI!M>6HeuF&*ketL?^vAn$Q}R(Xt0Q zUTq|!;d>T-q=$nwMYw3pcB9!2-R}d~f`0kEoIzGJ`j$gKB+AM*9b4Qxs9bigdy9MR za=7YbNfceMGQTlU=V1J|b`$>(1M#XioVz@tsJHLjWr5EF{dlm$Xnm2-b&Zu$d%rMH z-(Y*c(-$8{i}U`b!hhzLS1Q5sB!aOf>EQK`zlYn z-;=SHevq_{NJ- zYyCu0L=Urb;ft3T!A-A+Eoj$a0p~AQDY1oX9Pd7RVo`@1sm# z!eq(xrUTh4NhfJsVegS{;1lmZxdBL;T0qbkb0=Ok+B6nL524>djd&R26db z-B0gvPY-z?u+R1n>G^=ig8eopu z7~1g)U#chl7rtPna4w=R_|~D>LsYf5HI;Xr*@G1j_w+CfnbpG97oZi5EN4>2>{ED` ziALF-(P7+Tc38Y2(vczU&dpiD#Khjk7ZY*|*hHEC7^7za3| zTK|4`wFX}!%1MRg7Hkxx)q*h8Hn8IRLa^NxxrNhG@vIizFx-}4!b1SN#^>4%N+aea z3piW>;&MU)X*SnS6rIMDOJIEV4r0ut_E+9 zd#a}tDoonmVxJ`LdHT8Z+ae&GiXzAp&!xY#pk_JMw=8JLt_qdEDp3`AtIA4w3qu5| zh{7m1E6IZAS0Pdk$8CaCmH%=7dNn`Yy= zJ26c$gjm#7ts+NoBK8EO)k%0fXXT~!#kKarXo$ufkOpHJcLlLOk$p{qWi@@y!-nanTT;uA!2S%IL=Pnctt@umKl^v9Gxmic43KUVl-r9W2rV{d=# z&s_>?F^ z))IP+AJjUqHQk!BYq)P}9nhLydQ)qvbx`QZ{=^-$y|p^anVt!{hPcT*Q10_QFzTGQ zU@dKxjPtY8&UF)Arq43r;Gl8C$W`lZq`9KQ~F4g+R9Nzqs|1zh|yTR{?9a=KX$T{6ff6Y!~ z_5^S~ZmnK0?j(zwS}^WJi(9rsh9adh4-mzCw8br5FyF}*H@RTk!!2(4f^myYhCR~a_O{`^7UQ{i_OXOajvpMg_D=sOa30oK zlg%*2kFRBQQkvGmT&XaAaBJ=MGUV5Pb$6^n+*;+eX(VSKlhw9ru(q2OKi;7>rO9gR z-1OhAZ6B}AmZj6O+V+`Oo8rgUQJd0awXMU+V}VtB(6=4>6LljbQx6|SNKqR zqta50Ry<@?)V;Bvc`un#v^Ip~RwQ|i{ZZbGo5XD-X)HLTNk8wBmQA|tG*SHKkmjTl z=*|-}+*vI4>X4{)i1l^+(AJ@$lUj0V*Vu)*P@yAW<#runvQO*KqGveA-@vywqHl<< z-yQlvJxXoH@LnDR>BQ`T27Uik7pbArOpib>k5aLT6ly8@-WfREaZ>jA=1%EOC4aQ` zxDmJyAaW!>41R<;cfQZ0@E!bMHxgBWRkr`6@Ne=>*P`txoyy_2A>_Z3a2Dmh@W&DU zV({ae1L3D)_*5nA3;e| zPXCb6DB|=~bSuv+TzUfYYLfG|)W3dkiBDddQr z3D~AWaH%P?TT{4e15DAF*{NmPV^e-Tj`E~x=sRWPn=i7nLvLcmV?Y(mFR`4PY&7Q( z!a{jwRacxS`Z5IuJ%d#MCRqulZYY%zr@y1xqL{VlpR3W?jMu}|XQro3mHH;Ri)q!J zZ(IHajP>D}MpAaEtNJwFn6Y5wR!jgjZAMp2cp4NMky3u{F4JSMzRVS~i^r z9%>CqY*lE31^kIrgM*$7`q_|5fuh?!-lAxO%cZ<2*XDbjcdb8Aachq|0%}XfSM#U+ zgrD-4;iAG-=pg|7DE_i==~^!%{20f@iS#QB9Dcc6Fi$U&fUlt8Jm~T)i0eM2=h=1) zHp8`)3t1$?S;(=3)cZn?Bc$OWZg0kPjPB_>JL@)DTj@8&h=k|5K@djgeHCuH!Fvm} z;DY+iZ!Qr3RkyRV{6E}H{6Fp{{>KZ%gU@;U?pYwdT>p=D6aSNecS=^}8r0M1t0&)~ENu4ze5GFt{j5fh zqW%+9KO2qL{w2K3P@H~SxXQ*Ur-mE##`Wu##_4+qV)v9&k_TrNw39dbSxMWWG)lH3 zX!k|41=r8{cxv|NaMiwg&|^!#Sh7d9B;ca^!wYRSB_;dQdfF9HllRBjQA5L9mFH=V z>f=_&s5dg1mnWS!@>O)A`WR^DaOc=SE`M+S43e6=F8CAE8}%}N3tl9q!mPZzU*Xl` z%YF;Eo6{42VCR$*6uZ=j++3{wM3IU6d~Z9Bn$f9enK=RN^)u%u*?7mjHFS!T9#XJZ z+E*f^c#}z&n6FPym)KGB_D@7pe6v&gx0leTldT*Z8%FIDVbmVN6qhjHkas?I4z)r_ z+03C>T+q+Ojdp_yz0jYLCnJ@z&O+~Hv-|VR9=ky6y=$pw{Ln`9NS+TjJjvX{)7O2Y zr0@!l)rNY4ixq4%(f(>1FcjnsEs=GgP?YQpySZ0|K+UVhq>xN1pykd4m z9?lNVn*kKoGwqeY&X`vpWZ{6;7b`cMUN?&mUrpzok*B=Aw59~AaBy6+ul?u}-&8Tb z5}{pxN9}eML#V=dj*v+{$3vSFv&)7L6MYsk1(^Pb5yoEvD{6t8B|FN}c}J~PHcuC_ z!OYXS?+3?+q`id3IW!7f33S1*^s6OY5pVQe>Ue~3w9gL1jz8eWLbe&*V=rQ2C+&A- z+gZW9IBs7K_=lhma?LgcS8@ia)9L!L6w$tEWG*&Cm2VEZbI#9N|@V zp69!#A%r^uc0MvrKTKbsO`qbS?RtnP;TuDRa9!?k@ID!|$>U-7Ndpb7wZ~}T)piAovA zPtGL=%!M+Do_#S(P8p(sV#;nKW{M4CE=c4z&LW$j5cKq6r!{HsNi$ zzXprTCc+KWvCu^D)kG(W$i8SePQO8^BXRo*ux~V+hUKk4HPl^Gc~LOgvCy(yU3%^H%oRNi^dst{yjPR?ui**@cxKJduiUuM)FExA7$gxTLI?J{7A%<{pv-)G5s+g z(>cn6GMFC5J#B)eKT(t{dkE0BU;0xE2wx6nw}1avMPSjyBP^)myF?IvQ{vOVUZRnT z&*^YZbN$}#K-;CpU{QJyg=Xte)$V+IwBwlV2L(1!m?1V1_rHxBM(a)S8-eK6xcP*` z)8Z(cJ=Afsd-EP!DgY6ucTfh-gVXzXwh!f4>y09e;n11ZK-q@wp}!wnWH}eM3x7Xx z#J0Szk-l+~%!S28{Dk5HpP{{@T?BGiPa~sU%$9-2rXkh+#EQ5=uq@2nsln+j~%U}me4fzDQzK_u(ys`>s#@{6)u-k z+M3#2zxI5@A-S9FtU;qtQTxQR49E0=h2c^Xp-Z+C_pM4DqfV9ZHQNzxUq~c(5E~Vf zM+A;TD1U~k5GIasam=kURvW8R_}o~dy_7sOd9cLKttD_JNcvtB0jH@yV^zr;vdxlA z68D}2=8RS6+#3UtOWZ^9I!<|f)Dw;L(R}lScX?PxFW+w=ifoD+Im|oOla;+89(jp- zLmWd(geS!F{c}0fNz)1qRKG(+{50=B*0cqAjLSNi;yiR}gok--(CXaT_W_f*M`qwC zum!Wzv1)S+$h8jwY}^uxE1Gt~DU&~1Q!d2 z^qb#B1b8gEzy(>BVA%$$>_9X$nBz4ZSahBVfp68X#|@RvAf}g4%sTLyAO=KAAC0r1 zcN}F&hHcg7h;=E}BGA5N5lzJujl(rYt8Q~bu6IEPtd}+0`a~p^vH8!~p(@<+!gn~3 zb5{{udlG`&IW=}y^=A8vG>2l%v1r~-aLP0H9d9X|`ex;nohI&VmySVP0}_K^O}*}<)`p#2|s{v zU;h$2BM@YagBg|8Ys?2*Vy5DOoFP{_-3>gwHc*o5OSJCil=oO)cO+Sw&0EP3K3Krt zs*XY=Ak~DgpzUn-Eq3N z5~IIcqbC;Y`|63?l}ZP5Vva}k6^Q9ZWe$@Ligd^JS&=PQ`l`$?#HmCrp`$(#DdeZ^ zXo{77^}}>wyveH9C)SDnS zp{pBYB{B&CoirLg4UFAGxyiRkb1abUKLMKY`geZI7-ppvVrv%S?X23WQmP4wwy38$ zSdSCMY4+1}7(ees`wM){{69UikR=ZQc2(BDxR(Ls7Yt ze-pXK*)?j_x=Su)#Mws z0rit1ZDno*x??6LMgfn}?dO>*2;H49B_>Mb%9O7)y9fyTq$S2%DQ)HsBBNtY#+3Da z&Fms{(eB67o-@>*q&z_K1rD-X0krqsZ5pRs1eEx>ym7l0uAevAs$M2Nfz+99WHyx^kAM0;d-r}Xz09r zzE<``cS~`L%5sVFU3Z0dJ6}74Tq640mrw0yh@`KR{F%4^6v7`NSm{75{|#8laOc5^ z-yNLTE$AtzEmg)aEB8fy(L0Eh{sW=myKqKY_+pSu%kvSE?#}JwgM20Oo1|YV z1k-G7d%WSci3Fj&F3$!&!kn(G5~77OKM6RZJv#db)AJ?j)V91Ba*U9TnkVTvng9;> zl)hZK;vG1~9Wj_mkqz5Pc927^UNpP~ZjXDwBV^ZH`QzRNER1+!;L~C{T@Nh z^ge#gxtaZ>-{q5~><2v3f8-~Zp{vmcf!$dKI}_@mwI&tMK7syZ?~gCNpT+y+@TRwE zZp4$mr&mwUrtNGwD-&|e1$xY}y%*kG47AHUJBu3InGgay4%#JQ<4{#)lI_Ago4+-S z3n@E`n%m=g`%2R5YFssl3>SF@+`#%9%04k6UJ;6i?S3$n9VcPq=0_t=QTN9*ixKk~ zY}=7c&!W`XGbxLJll6YKy|-h%pQHEo7G5)?Mkx}vpQE^QiGyF-Iv9DiBG0o(?_Agd zojsp07LZjCPrcFw>v~v3Zw%*HEzqO}&7rTx?b9ibdVWg7c|6^}{y|^bulM!gY^NhK zge%eOJ~>D>cqKW=Y2Z&vI=%iqvPy(~UcV1%nGwl#^r68 zZTg)bCu5Izn|@1iEJ)c}Ib?fr>0W|^0IP7>Ng1sBd{9?R4{1JH;z@)~(SU3$%5h0$ zvMOpjcX_ccgjHUS?21UFi=DQTEf zhNwmANdv~O*?s~+#9YQ>V6FRh)H#`QoCL(}3p`;~1TtGa#NmSXd?K533zzfts9w@5 zH_+lo(fPY{~rO?q2R#qC?=_sP`?>hOJOE-E+~Q6N03 zO^vw)Gkimb=(6#=z}jLIGapa!a3Ne2yD!|wr6+RO7ar1!UWM>#^c&WW3$1)#cgD8c$;G;UN(v&OheJEu*Qjih!v0zXZFS%FF6*oVkP z@ig}&5O4Zq*=tOJne)vHtfU(&>sR^;Dqr$q4O4AdP*czd8O< zIbY{&Wi5Ilg7(Gg%Yf?r$zV>VdEW!YyOeN2qu#yPR+~YafLvFX?aI#I=XRa1ikikr ztSi=C1A>yl6zf3;;#%|00S}x?N)1FPDc4OBX(rm0a6Od#G@Bj@1-sBtm2&H~?UFYc zge+aO>CFswc}zFf$8=GPW-ggFzkq1+Nf$2G)%5G8N2GtQL5vWW`bX#8X+3B*8 z1%rI&ggx_3ucHKw7z)&3v|J4%=Gq^z`Q`f~&y@bl48u?_;tG2XC3iv5w1e^>5VOg# zkS3b$=3I%8xeNXlR?eb)t%eaY<+vweaUsClM0vh%{YBb|M4NBT2V`}VGuux&4PsVr zG|j2MT(z8o-J{b1?Y8_9Gv4|*i(5<1TC?@DLV@7@!P&Ye9j)#wyHs%P<1_89&qtMY zwDatN3Xx7qud;rYX*f?m8~2__tz+oTsIN9OR$1Thd&YqAFhqHOl*!Uwf?l@i)=wM4 zrrQH05&0O2xcd($ORlViP_kR;+FB#lYA18aOUWl|UwPi1a{Mp);_K0&Ijl^O z2T+(&y&WPQZn`qpym9Yb0j~W_TGDpp`Q}muz&MUeT=)hLxy`hqMHd4Q< z(N~FoN(l#ae~(kul*Sb_dHahkI=u%)W2ZEMcL2Ecs$t&;$5ltRO&H1!MJ_97N$A348#^epP~3) zsN#I(qL}?rP5R+-WP)trf-g5YA^oMbvu-AXGfPE$bwDu*ulND1nBu6tfw`0eg8i|I zslny_R~qlEAJynA=;r0>hs~>@TKB7ejo(SB%uR*g{k7;_q1bP;&pBk#afr&b`kv|A zPY>BW-llOWeVEFod+)CKKwnzoa=knd(MC=n*K#V~zE)6$#2zo{!7f!6B}80xRlS-_ z_q?qTQ0s!-pQJYqPNY+o!YHcmhARK6G_5u;kp8o0`w6+$KHnsD@QWoza7 zb8&I>JBDah#3hRDHjORUL5^lc8DN>7N@DY%=CXy+I{=PFOa z=UnFN9VvlRuPT*?<(cpjCOk)OA2zOL;12H#^{XDLz5*lbb~ep$R& zxZo+EmcB-Q4=}qP@>wNGnF333(6OQMy*meS>fI{Ui6Xq;OMuofcka3ll;T24!b)*( z_cfr7e~Gh=d;4L;eOmiSsiM$EYoF`@QImU+tjE@;OS6`)LOdetst3v%Hx@klFA5qr z7d+4}!sfm*nhx_8R^Gb?`i2tFzxF={`W!j2diwtZ)K~5a)LYF3!EUSZ!eH-eMB<)O zWV=r@yiX$Fu0fvFdus^vSAy2ioNl}t!nwc@xP_J@%gD}|aOcauMqYOX4uZ1R*(=Ez zzS@7u5;d!}m;eoU`(+Avh61dH$<}atjvA<04J$t5o{G8l5>W?j8uukRXfGONSGdA$?ZB_3e9*3n)+hwH)Vq z`Ra_y_i!)&g1mgS+frYgm9H0-AJWG?FCZ^p;Ika(c=>{j%J*eXoNnU_5$32zZ8jD4ug{tlA!O@%I zo@xleB4Zxh8e<}iiR5SGasA78M;o2WE%8UoAA8a8!aq>|I7d z?di8QIdx8J>GnP*WbnLIW{k6FEe(g>DIiq=Ju5)JDj+uTWV?ztyqi^Ql8#dC zJY;g3=3~KhP*Q8d)J@86g+JE{*RK~Ys@IyDo1DWS4*&TRUi-wXRWmWGgy=z+fh~oz zl2w~NtyL^=9p{7p+Vfza6I%C*c%NVg`eYmkcG<|r4v zFka8qfLXojM?3%FOW$w7Lw<%^Tt{v#-uJIHx^O4 z_AsWOaS#aGN!`p+*_W3+ui11t0@mj$>tI-uDhtSKAS(p9-<_`n94ME+VAG-cEA zP!gEkII2dj!y7ug$8Z4CimG4eIMb|yCK{MpK!#bcf*dEQ(?vgWi zEBR$e0CZ)zKab4@>=s@H(9+Wp8+CV_Y(OgQbp-Y4U`E`&QtMR+=iXMzf4aj?LPz@N z0vpJ%4gld^U38@GhY@^o0bSo_FtGV_qyr4^OS_0F-8!;tu&Xgh<;$Rg*Nkc>*@A2pmO0#h?% zLotx!Y@c1M*vS$;EixNs*Y~s!r@`yTU2fLdsc%svXu!^*^+01()^C{r68h$Kgnb^@ zY+1~?k&J^iUhXj`{ixvR$4j4|Ax` zVq#3R&F0$8T8M6#%j~H*b4?jOw+xQ!>!!c$OgS7`tz?%~Kr_@`De3PR5oc=6YSa=? zW(J!81EmOg``|Ceex7YvnClwnQd}P##9&!@YqM*~qQ2|B{+xJx48M?vbneyYd$j2) z!D`!I5LUYP;4lyAzU6LRHmMBhCQXJDz@2cxmkKLi@CCD{p!6&h76TW2G0D*flrH$P z0_9+0;DWCrJip-U@m%mF(p0qJObe-`Pp~Hhh$qKrPuHUg+?CQy9?aaq2KCGx9ps+& z$+X^;wCXMhmW@Y%?aK%ab`7{37;7SyoS6T zFD|!ZF}UP3q9-_NpDfr5_QCSyMV^KA#5ly(37EE&#G<>0hGhy$wx@bwlWJ@Y`b^yW zD=KtCh&m`X@85B{gc^d@H=$s@e68!#`cidJ{S+!>UDac&;(`j~em$`UC8PD-tDl3q z^FvhRP!TNq;=lgddGSf~x8#4O(=yu&m2O#Q&~+fsb<5TkJ7Vrf=KTCz`ZE&7?fuj* zJNjk;)ACyUr%Oo4O{vo2F*!+VA8_n(+Q4FWJtuKV;}Xo( zy{-M~7807Wg;Gt|LaCOYwhB5~spiOfq!9cN=Qp2;?GLix-VCF8jAAm36D}?I@#0z2 zabk?g%AMkGBxLq4DK~1SH(~7Ty6(NqTCufP$={w5yqN@9nJ1yD-ttE&q^oEq(!W8s zFe?JeN2a`3t^I+wDMG6e@~(()*cQ;b6?KkLA*R)?VImYLnv~g|G!ME+LCQiQR>_1F z38~-9bu;SyV_dA<%T?Fot#N6+)%`|mJkxr^9|=0??et_;YaWDy@2pdte6)pWR?Azw z?QVW&wF1VIv!d0}rhhd6A3l&pi&Dt)<#}0jpbr*5J&jE3hI1gon0lFUPwlY15#4$V z)vBt6&(I!-HAAPu_2SziYEHEC(bG})PKMMo+oi8Akl5~qZpf`(rU6$`r7qjSD!W_S z&8fnsO1=^qxE6D$$kxfsm1)#DoMRq_B>@oGSWaYvqAn0#`i|;43NPWVo7Tv z^f^-cU7V~FT&Q36+Vo38vo@Rhg`*$F<+Mh%2Q%6la~%xNGA6Cg7#8t4A&o0uqD|VE zAgGK*It^lMkx;2WdFL6@VF|!nwST6&1eB74;bR4+^k><5)Naw^O`u08z!0anOu27P z#d|QPbQDJ7j2&Hb#hF&t$??Tp9US-c-da3~i{!UB@eE z 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

j$X=ViIz;Ww&!6|%M}!}O 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 z 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 WhZw&1tI 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 z zg8FMdKEZGWlW|Z$YxOb&Te$!e8MM63f%_G`W7-(6o z&vyjb43-EQFFk9nR}Ejt$2;oR`?0V3n-%;0m|@>H>q`pdyX)-XMzE=Uvyr ztpT^r8V5)XF4_*yHSTf@1SE*olh@}$T)XV)X#_GSJOm;f5CX!V z>GL7&+5bG~rmTv9io+<4?}byL((Otf^U^vVWVK4V6gDoe13!rQGCkjx+}P3RfOF0? zCx|{wY_yHXp=@ywh)Sm4i%#G|N3GA1(h`2H(cM+LDVy1-o7@u2if3tKt2CH#4rBU4 z>&f)be2!XYk8F18l2etFZQ}(AhIxs5^-8-&)I`3CSH{SR^Q1sEs?!0QC$5}3Yam5* z#kFjzzMTYMO9T{6EK{w8C!BX8$=t4*FFg4K>lT(M6A^^1Hu)2{l~UsVDg)X&+pj`c zDRzSbkrE`Raw^yy$_%e59)-^^Y>#@qxTt;BZ4lVgItJ3} z$c6M1^v-KCU6E;Uf-&}D>+hrjI^JJopHcUT(%o*hhp+UCyuwGyis6~Uo_oygVhksU z?oEm3xA@Qk|LG&Ttc-~4L}+?O?p|3;6tIU(qU%+(h+gWal)hA3oqjt~BoAnq>>3+M zE8xwAu2caP42tv42BCrxm?kDVJrD4_(1ZtC;%ZtOBgapmgV9YtqXW@eT_+NN66C@y zs&B$*ge;6qk}rmCkYSaa&a&a^utk?(Y1{=vZ(UiiC+Mi7W$Ietad|i(@@snWq02Y8 zIC%h22>?OHujjpD{m6a|ryiy5l?1CfB|Y96S?<4uS0A-^wLzb;Ac6Biu+DbSGhMbb z2SB&7YUTv>T2<@AIGh2=GMYY7FcIA}&OU+4nT-iX%kEr;qUFwFKW>8{u$fWD1mDFN zUB#nzIgrk=W5B&Xx&560z#?o505A--Zl!Vr zWYk*bleOyD^1;Qa7(|2PQj-lWKX3&{itQ#<@3np`2Y9E@j)!nXxqN@=lZeu2C@8$S z)saX-s76Rx1&C~tlYhuuOlec^4VeOs2A>9Q)YM$dlnRNr$6s8|Y^GbA)8#~L_HgYh zZ2_2kE-7|1cGj-lQCbr`$XT5SWzt;8UnY_y-IOuuP--7)kVjPRW>|o9e*xO0tByeM zniO}rO1!dmlbIVYC0BTsea8cEcpyyqfdchgm(fh-v&Q$y47FUJ@(3wXT5Z=77JYF4 zI4@RTi8Mkf1Fm^K{ao^@JjT7kxyM~&owOG}eStC{Ab9HB`9idz7 zqgo}b!~06!00zE|Fh)SeJ8qx%*m9k9^89y}_gcQzHXc`>CO?mYI zPzOfjq^S3|Lyj2d?ea8Kw>bo5yo3QH#%zBN6dL0AUKLo(VCa-> zKtgtAGpl+`Ol1%K`-}0A+jurMvn_+ndD~_>@)%?YCI9s2e&5}2FBHO)m2lMt5AACOkWU<5vK@h zS`m^;r;cgt@o_XW%@}&>QaOaR%7R(}X}~BjI+4bgup46t_K&tLisOWu5NDCkl|2>Pa=SB~RUa66U4re;P%l=(*+7kdOi5aW(LYdW^kZqx zRJ*KTk83AOki>#%GS6n0i}=}I>V)?QOv${MRGG$3Jon*tV)`Wz4 z*+Yq#Yhsd+%ZL~$cYj+o$i2X*iD~a`3b`gUXK%A~mIYzDyh#%i7$-NLR5ZWaP6 zlqhR#hYC1*;SRP^+L)qOfUdc-rjK>+PS(vYdgcT-G5ZfVdtd~{#t&n-lg#%)`RX^P z;!A&F=#2Epc{8;|qhVIyloJE+dR)=2!@>lWNkfgrg4V|ivcdpSR&U`_qsgsM42H?Y z^(e3s=fO-`krY5GAXbbI$Y5q3AWXQ5s_7aFm_Ja#sJ#Nr$QZj#96p;0LK}1#*9^v; zDjbX!*AnKBf&_hU6Ud$$kG;WPw=$}<;6bp7- zMiz7j!!q)1z(z}$08y~ZAky#X2J9=sE)^8ap%4b#AtYj9E`Vf$Qq!3(0O3hd028Bk z{7FQ!w2{<8W@xSec|X-buS+*fzxyTb?+(u!pAcZak)v+4m@5W$*LLke4{_F2c3J zSSUQPe+$Qy!7J^dCs;cCD*3h4uVo+x{nk*09Ue@8gk$dqVMx%HSP=Vp3Nh2)i7=#& zw?r(77&{bM?vWzenuPpCN*8eDyp0%fMg@h9nRwKgaa$U97Kn`MqNml%!jE=ZeaTQ# zC!YhOPNY2(ox1BhM^!EpYSLv6Wek_u+#{VXD9v#`0?DE*)${HXM?G&M427+UuqH$& zVni?3EDEvn6Tjq>&ZRi4LG1Kg(MH+C`A3s%aDFA}mi#i%l7L<6*D^L?Ar{$57~2Tr zrnRZW-TurY{$cP@PrRL2vBnHVYcwQSLQ7DV5u?z?5KEPCenLx%DEEI&ERAoEC9&%y zkJcD536qZJQJ`GMQx9RT%RN#mEGl}rh6nI;#UnSr0h%xu$-Iu|W?>(cQ;w{$LqW@R zIE}kjqJ^=!g*mi>a$}$*czV8DS!xIf(_*gBt%D6AI2C|iw;%~3z=AG;Id*}76=Uu3 z?a@6PmF!rpUJ+G!$=V(^ND%a@r7Y(Gv&z%n~skFOO2lszR|~V zo#qB~9hHv&gAD>JLLNYrY1(I%0+rr%5YCRFX{kZ0*@6sbRWf1_Dvr^4^b~k}(FhXI zBmBt5dQ3JGLfHvPt~$`q5kp9Ww+rKA>h76XOL#Xf%3Se|39r25DVmKJC1Ormj_p-e z#_B{nr~2AOHQyz$S{v+dR~D+=n=i}=!#^4*s5&pk6?tWFJ1@CPt#cnjryS1Pney;oP{mBU$}6Kx4Vls{>j+z=tGAOJ#g&t z%BZDw9~e9Q=SRr-%y(BsM!&w}^}xdIbr+`=^8M-khsU;!j667e@K7OwE>M5Lkr3A_Nv8un2)g2rNQi5dw=4ScJeL1QsE%2!X#J0&NAY)80a% zdVSt7a(Rj9ucn)CJAaS7w5o6>#e<5XXWH-L_lt#xc^~2z3l9|jn5!LyFBBf)eh1&5 z=h}ZScKq%C^o_Q&v-YP z|89#?yLmcH>Jgp~$BR@CbC>>|?I_b%qFj?cMh(7V^;c_pn}!K7v+(~eUUUWw3eCbj zq~9NJLTkOq^$6*M)Z;5z_Z7ZOk9>LSK)l9vj6NLX&)2aYidVD_(5Hjsvxj56Jk2+& zrB}I*k>}d}4s$n9*dHSpro=GyRQSX7P}o{nxzLYMo*bg4hxoNm{(A__*orS{I}|lk zC}%r(J@~h^u#EDpac_%yALr>odhLs6Tk!gI^;rI%>&kyI+Hs_@g+ZRDDs|GM@z0fQ0#`)_CA2Fef7-V;$$OpG#id;Ub>0JRo)nqG!0{wtIn zC>*7|)(h)~3V%o~L-fmk+XIeY$jeI&_NN6G?-E4+zJ4Wm?4+Ke@j`K;dJreZv+m^Te#ea(sScJeL1QsE%2!TZiEJ9!r0*eq> zguwqN5IDQ4u$-a3#H$1r|1Cmb5dw=4ScJeL1QsE%2!TZiEJ9!r0*eq>guo&M79sHe HCItRBwcDG{ literal 0 HcmV?d00001 diff --git a/lib/NHibernate12/net/4.0/NHibernate.license.txt b/lib/NHibernate12/net/4.0/NHibernate.license.txt new file mode 100644 index 00000000..8a88d148 --- /dev/null +++ b/lib/NHibernate12/net/4.0/NHibernate.license.txt @@ -0,0 +1,460 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/lib/NHibernate12/net/4.0/NHibernate.xml b/lib/NHibernate12/net/4.0/NHibernate.xml new file mode 100644 index 00000000..39b0414c --- /dev/null +++ b/lib/NHibernate12/net/4.0/NHibernate.xml @@ -0,0 +1,29887 @@ + + + + NHibernate + + + +

+ Expected row count. Valid only for batchable expectations. + + + + + Any exception that occurs in the O-R persistence layer. + + + Exceptions that occur in the database layer are left as native exceptions. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + CodeDOM-based bytecode provider. + + + + + Retrieve the delegate for this provider + capable of generating reflection optimization components. + + The class to be reflected upon. + All property getters to be accessed via reflection. + All property setters to be accessed via reflection. + The reflection optimization delegate. + + + + ctor + + The target class + Array of setters + Array of getters + + + + Set up the compiler options + + + + + Add an assembly to the list of ReferencedAssemblies + required to build the class + + + + + + Build the generated code + + Generated code + An instance of the generated class + + + + Check if the property is public + + + If IsPublic==true I can directly set the property + If IsPublic==false I need to use the setter/getter + + + + + + + Generate the required code + + C# code + + + + Represents optimized entity property access. + + + + + Factory that generate object based on IReflectionOptimizer needed to replace the use + of reflection. + + + Used in and + + + + + + Generate the IReflectionOptimizer object + + The target class + Array of setters + Array of getters + if the generation fails + + + + Represents reflection optimization for a particular class. + + + + + Represents optimized entity instantiation. + + + + + Perform instantiation of an instance of the underlying class. + + The new instance. + + + + Class constructor. + + + + + Generates a dynamic method which creates a new instance of + when invoked. + + + + + Generates a dynamic method on the given type. + + + + + Generates a dynamic method on the given type. + + + + + + Emits an ldc.i4 opcode using the fastest available opcode choice. + + + + + Emits IL to unbox a value type and if null, create a new instance of the value type. + + + This does not work if the value type doesn't have a default constructor - we delegate + that to the ISetter. + + + + + Defines a new delegate type. + + + + + A implementation that returns + , disabling reflection optimization. + + + + + An item of cached data, timestamped with the time it was cached, when it was locked, + when it was unlocked + + + + + Summary description for ILockable. + + + + + Lock the item + + + + + Is this item visible to the timestamped transaction? + + + + + + + Don't overwite already cached items + + + + + + + + + The timestamp on the cached data + + + + + The actual cached data + + + + + Not a lock! + + + + + Represents any exception from an . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Factory class for creating an . + + + + + No providers implement transactional caching currently, + it was ported from Hibernate just for the sake of completeness. + + + + + Creates an from the parameters. + + The name of the strategy that should use for the class. + The name of the class the strategy is being created for. + if the object being stored in the cache is mutable. + Used to retrieve the global cache region prefix. + Properties the cache provider can use to configure the cache. + An to use for this object in the . + + + + Allows multiple entity classes / collection roles to be + stored in the same cache region. Also allows for composite + keys which do not properly implement equals()/hashCode(). + + + + + Construct a new key for a collection or entity instance. + Note that an entity name should always be the root entity + name, not a subclass entity name. + + + + + A soft lock which supports concurrent locking, + timestamped with the time it was released + + + This class was named Lock in H2.1 + + + + + Marker interface, denoting a client-visible "soft lock" on a cached item. + + + + + Increment the lock, setting the + new lock timeout + + + + + Decrement the lock, setting the unlock + timestamp if now unlocked + + + + + + Can the timestamped transaction re-cache this + locked item now? + + + + + locks are not returned to the client! + + + + + Was this lock held concurrently by multiple + transactions? + + + + + Yes, this is a lock + + + + + A simple -based cache + + + + + Implementors define a caching algorithm. + + + + + All implementations must be threadsafe. + + + The key is the identifier of the object that is being cached and the + value is a . + + + + + + Get the object from the Cache + + + + + + + + + + + + + + Remove an item from the Cache. + + The Key of the Item in the Cache to remove. + + + + + Clear the Cache + + + + + + Clean up. + + + + + + If this is a clustered cache, lock the item + + The Key of the Item in the Cache to lock. + + + + + If this is a clustered cache, unlock the item + + The Key of the Item in the Cache to unlock. + + + + + Generate a timestamp + + + + + + Get a reasonable "lock timeout" + + + + + Gets the name of the cache region + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cache Provider plugin for NHibernate that is configured by using + hibernate.cache.provider_class="NHibernate.Cache.HashtableCacheProvider" + + + + + Support for pluggable caches + + + + + Configure the cache + + the name of the cache region + configuration settings + + + + + generate a timestamp + + + + + + Callback to perform any necessary initialization of the underlying cache implementation + during ISessionFactory construction. + + current configuration settings + + + + Callback to perform any necessary cleanup of the underlying cache implementation + during . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Implementors manage transactional access to cached data. + + + + Transactions pass in a timestamp indicating transaction start time. + + + When used to cache entities and collections the key is the identifier of the + entity/collection and the value should be set to the + for an entity and the results of + for a collection. + + + + + + Attempt to retrieve an object from the Cache + + The key (id) of the object to get out of the Cache. + A timestamp prior to the transaction start time + The cached object or + + + + + Attempt to cache an object, after loading from the database + + The key (id) of the object to put in the Cache. + The value + A timestamp prior to the transaction start time + the version number of the object we are putting + a Comparer to be used to compare version numbers + indicates that the cache should avoid a put if the item is already cached + if the object was successfully cached + + + + + We are going to attempt to update/delete the keyed object + + The key + + + This method is used by "asynchronous" concurrency strategies. + + + + Called after an item has become stale (before the transaction completes). + + + + This method is used by "synchronous" concurrency strategies. + + + + Called after an item has been updated (before the transaction completes), + instead of calling Evict(). + + + + This method is used by "synchronous" concurrency strategies. + + + + Called after an item has been inserted (before the transaction completes), instead of calling Evict(). + + + + This method is used by "synchronous" concurrency strategies. + + + + Called when we have finished the attempted update/delete (which may or + may not have been successful), after transaction completion. + + The key + The soft lock + + This method is used by "asynchronous" concurrency strategies. + + + + Called after an item has been updated (after the transaction completes), + instead of calling Release(). + + + + + + This method is used by "asynchronous" concurrency strategies. + + + + Called after an item has been inserted (after the transaction completes), instead of calling release(). + + + + + This method is used by "asynchronous" concurrency strategies. + + + + Evict an item from the cache immediately (without regard for transaction isolation). + + + + + + + Evict all items from the cache immediately. + + + + + + Clean up all resources. + + + + + + Gets the cache region name. + + + + + Gets or sets the for this strategy to use. + + The for this strategy to use. + + + + Defines the contract for caches capable of storing query results. These + caches should only concern themselves with storing the matching result ids. + The transactional semantics are necessarily less strict than the semantics + of an item cache. + + + + + Defines a factory for query cache instances. These factories are responsible for + creating individual QueryCache instances. + + + + + + + + + + + + + + + A cache provider placeholder used when caching is disabled. + + + + + Configure the cache + + the name of the cache region + configuration settings + + + + + Generate a timestamp + + + + + Callback to perform any necessary initialization of the underlying cache implementation during SessionFactory + construction. + + current configuration settings. + + + + Callback to perform any necessary cleanup of the underlying cache implementation during SessionFactory.close(). + + + + + Caches data that is sometimes updated without ever locking the cache. + If concurrent access to an item is possible, this concurrency strategy + makes no guarantee that the item returned from the cache is the latest + version available in the database. Configure your cache timeout accordingly! + This is an "asynchronous" concurrency strategy. + for a much stricter algorithm + + + + + Get the most recent version, if available. + + + + + Add an item to the cache + + + + + Do nothing + + + + + Invalidate the item + + + + + Invalidate the item + + + + + Do nothing + + + + + Invalidate the item (again, for safety). + + + + + Invalidate the item (again, for safety). + + + + + Do nothing + + + + + Gets the cache region name. + + + + + Initializes a new instance of the class. + + the sesion factory for this query key, required to get the identifiers of entities that are used as values. + The query string. + The query parameters. + The filters. + + + + Caches data that is never updated + + + + + Unsupported! + + + + + Unsupported! + + + + + Unsupported! + + + + + Do nothing. + + + + + Do nothing. + + + + + Do nothing. + + + + + Unsupported! + + + + + Gets the cache region name. + + + + + Caches data that is sometimes updated while maintaining the semantics of + "read committed" isolation level. If the database is set to "repeatable + read", this concurrency strategy almost maintains the semantics. + Repeatable read isolation is compromised in the case of concurrent writes. + This is an "asynchronous" concurrency strategy. + + + If this strategy is used in a cluster, the underlying cache implementation + must support distributed hard locks (which are held only momentarily). This + strategy also assumes that the underlying cache implementation does not do + asynchronous replication and that state has been fully replicated as soon + as the lock is released. + for a faster algorithm + + + + + + Generate an id for a new lock. Uniqueness per cache instance is very + desirable but not absolutely critical. Must be called from one of the + synchronized methods of this class. + + + + + + Do not return an item whose timestamp is later than the current + transaction timestamp. (Otherwise we might compromise repeatable + read unnecessarily.) Do not return an item which is soft-locked. + Always go straight to the database instead. + + + Note that since reading an item from that cache does not actually + go to the database, it is possible to see a kind of phantom read + due to the underlying row being updated after we have read it + from the cache. This would not be possible in a lock-based + implementation of repeatable read isolation. It is also possible + to overwrite changes made and committed by another transaction + after the current transaction read the item from the cache. This + problem would be caught by the update-time version-checking, if + the data is versioned or timestamped. + + + + + Stop any other transactions reading or writing this item to/from + the cache. Send them straight to the database instead. (The lock + does time out eventually.) This implementation tracks concurrent + locks by transactions which simultaneously attempt to write to an + item. + + + + + Do not add an item to the cache unless the current transaction + timestamp is later than the timestamp at which the item was + invalidated. (Otherwise, a stale item might be re-added if the + database is operating in repeatable read isolation mode.) + + Whether the item was actually put into the cache + + + + decrement a lock and put it back in the cache + + + + + Re-cache the updated state, if and only if there there are + no other concurrent soft locks. Release our lock. + + + + + Is the client's lock commensurate with the item in the cache? + If it is not, we know that the cache expired the original + lock. + + + + + Gets the cache region name. + + + + + The standard implementation of the Hibernate + interface. This implementation is very good at recognizing stale query + results and re-running queries when it detects this condition, recaching + the new results. + + + + + Standard Hibernate implementation of the IQueryCacheFactory interface. Returns + instances of . + + + + + Generates increasing identifiers (in a single application domain only). + + + Not valid across multiple application domains. Identifiers are not necessarily + strictly increasing, but usually are. + + + + + + + + + + + + + + Tracks the timestamps of the most recent updates to particular tables. It is + important that the cache timeout of the underlying cache implementation be set + to a higher value than the timeouts of any of the query caches. In fact, we + recommend that the the underlying cache not be configured for expiry at all. + Note, in particular, that an LRU cache expiry policy is never appropriate. + + + + + + + + Extracts the names of classes mapped in a given file, + and the names of the classes they extend. + + + + + Returns a collection of containing + information about all classes in this stream. + + A validated representing + a mapping file. + + + + Holds information about mapped classes found in the hbm.xml files. + + + + + Allows the application to specify properties and mapping documents to be used when creating + a . + + + + Usually an application will create a single , build a single instance + of , and then instantiate objects in threads + servicing client requests. + + + The is meant only as an initialization-time object. + is immutable and does not retain any association back to the + + + + + + The XML Namespace for the nhibernate-mapping + + + + + The XML Namespace for the nhibernate-configuration + + + + + Clear the internal state of the object. + + + + + Create a new Configuration object. + + + + + Get the mapping for a particular class + + + + + Get the mapping for a particular collection role + + a collection role + + + + + Read mappings from a particular XML file. This method is equivalent + to . + + + + + + + Read mappings from a particular XML file. + + a path to a file + This configuration object. + + + + Read mappings from a . This method is equivalent to + . + + an XML string + The name to use in error reporting. May be . + This configuration object. + + + + Read mappings from a . + + an XML string + This configuration object. + + + + Read mappings from a URL. + + a URL + This configuration object. + + + + Read mappings from a URL. + + a to read the mappings from. + This configuration object. + + + + Read mappings from an . + + A loaded that contains the mappings. + The name of the document, for error reporting purposes. + This configuration object. + + + + Takes the validated XmlDocument and has the Binder do its work of + creating Mapping objects from the Mapping Xml. + + The NamedXmlDocument that contains the validated mapping XML file. + + + + Create a new to add classes and collection + mappings to. + + + + + Read mappings from a . + + The stream containing XML + This Configuration object. + + The passed in through the parameter + is not guaranteed to be cleaned up by this method. It is the caller's responsiblity to + ensure that is properly handled when this method + completes. + + + + + Read mappings from a . + + The stream containing XML + The name of the stream to use in error reporting. May be . + This Configuration object. + + The passed in through the parameter + is not guaranteed to be cleaned up by this method. It is the caller's responsiblity to + ensure that is properly handled when this method + completes. + + + + + Adds the mappings in the resource of the assembly. + + The path to the resource file in the assembly. + The assembly that contains the resource file. + This configuration object. + + + + Read a mapping from an embedded resource, using a convention. + + The type to map. + This configuration object. + + The convention is for class Foo.Bar.Foo to be mapped by + the resource named Foo.Bar.Foo.hbm.xml, embedded in + the class' assembly. If the mappings and classes are defined + in different assemblies or don't follow the naming convention, + this method cannot be used. + + + + + Adds all of the assembly's embedded resources whose names end with .hbm.xml. + + The name of the assembly to load. + This configuration object. + + The assembly must be loadable using . If this + condition is not satisfied, load the assembly manually and call + instead. + + + + + Adds all of the assembly's embedded resources whose names end with .hbm.xml. + + The assembly. + This configuration object. + + + + Read all mapping documents from a directory tree. Assume that any + file named *.hbm.xml is a mapping document. + + a directory + + + + Generate DDL for droping tables + + + + + + Generate DDL for creating tables + + + + + + This method may be called many times!! + + + + + Instantiate a new , using the properties and mappings in this + configuration. The will be immutable, so changes made to the + configuration after building the will not affect it. + + An instance. + + + + Set the default assembly to use for the mappings added to the configuration + afterwards. + + The default assembly name. + This configuration instance. + + This setting can be overridden for a mapping file by setting default-assembly + attribute of <hibernate-mapping> element. + + + + + Set the default namespace to use for the mappings added to the configuration + afterwards. + + The default namespace. + This configuration instance. + + This setting can be overridden for a mapping file by setting default-namespace + attribute of <hibernate-mapping> element. + + + + + Sets the default interceptor for use by all sessions. + + The default interceptor. + This configuration instance. + + + + Specify a completely new set of properties + + + + + Adds an of configuration properties. The + Key is the name of the Property and the Value is the + value of the Property. + + An of configuration properties. + + This object. + + + + + Sets the value of the configuration property. + + The name of the property. + The value of the property. + + This configuration object. + + + + + Gets the value of the configuration property. + + The name of the property. + The configured value of the property, or if the property was not specified. + + + + Configure NHibernate using the <hibernate-configuration> section + from the application config file, if found, or the file hibernate.cfg.xml + otherwise. + + A configuration object initialized with the file. + + To configure NHibernate explicitly using hibernate.cfg.xml, ignoring + the application configuration file, use this code: + + configuration.Configure("path/to/hibernate.cfg.xml"); + + + + + + Configure NHibernate from an representing the root + <hibernate-configuration> element. + + Configuration node + This Configuration object + + + + Configure NHibernate using the file specified. + + The location of the XML file to use to configure NHibernate. + A Configuration object initialized with the file. + + Calling Configure(string) will overwrite the values set in app.config or web.config + + + + + Configure NHibernate using a resource contained in an Assembly. + + The that contains the resource. + The name of the manifest resource being requested. + A Configuration object initialized from the manifest resource. + + Calling Configure(Assembly, string) will overwrite the values set in app.config or web.config + + + + + Configure NHibernate using the specified XmlTextReader. + + The that contains the Xml to configure NHibernate. + A Configuration object initialized with the file. + + Calling Configure(XmlTextReader) will overwrite the values set in app.config or web.config + + + + + Set up a cache for an entity class + + + + + Set up a cache for a collection role + + + + + Create an object-oriented view of the configuration properties + + A object initialized from the settings properties. + + + + Set a custom naming strategy + + the NamingStrategy to set + + + + + Load and validate the mappings in the against + the nhibernate-mapping-2.2 schema, without adding them to the configuration. + + + This method is made public to be usable from the unit tests. It is not intended + to be called by end users. + + The XmlReader that contains the mapping. + The name of the document, for error reporting purposes. + NamedXmlDocument containing the validated XmlDocument built from the XmlReader. + + + + Adds the Mappings in the after validating it + against the nhibernate-mapping-2.2 schema. + + The XmlTextReader that contains the mapping. + This Configuration object. + + + + Adds the Mappings in the after validating it + against the nhibernate-mapping-2.2 schema. + + The XmlTextReader that contains the mapping. + The name of the document to use for error reporting. May be . + This Configuration object. + + + + Allocate on first use as we are expensive in time/space + + + + Allocate on first use as we are expensive in time/space + + + + The class mappings + + + + + The collection mappings + + + + + The table mappings + + + + + The named queries + + + + + Gets or sets the to use. + + The to use. + + + + Gets or sets the that contains the configuration + properties and their values. + + + The that contains the configuration + properties and their values. + + + + + Get the query language imports + + + + + + The named SQL queries + + + + + Naming strategy for tables and columns + + + + + Defines operations common to "compiled" mappings (ie. SessionFactory) and + "uncompiled" mappings (ie Configuration that are used by implementors of IType + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for ConfigurationSectionHandler. + + + + + The default + + See for a better alternative + + + + A set of rules for determining the physical column and table names given the information in the mapping + document. May be used to implement project-scoped naming standards for database objects. + + + + + Return a table name for an entity class + + the fully-qualified class name + a table name + + + + Return a column name for a property path expression + + a property path + a column name + + + + Alter the table name given in the mapping document + + a table name + a table name + + + + Alter the column name given in the mapping document + + a column name + a column name + + + + Return a table name for a collection + + the fully-qualified name of the owning entity class + a property path + a table name + + + + The singleton instance + + + + + Return the unqualified class name + + + + + + + Return the unqualified property name + + + + + + + Return the argument + + + + + + + Return the argument + + + + + + + Return the unqualified property name + + + + + + + + Provides access to configuration information. + + + NHibernate has two property scopes: + + + Factory-level properties may be passed to the when it is + instantiated. Each instance might have different property values. If no properties are + specified, the factory gets them from Environment + + + System-level properties are shared by all factory instances and are always determined + by the properties + + + In NHibernate, <nhibernate> section in the application configuration file + corresponds to Java system-level properties; <hibernate-configuration> + section is considered to be the session-factory-level configuration. It is possible + to use the applicatoin configuration file (App.config) together with the NHibernate configuration + file (hibernate.cfg.xml) at the same time. + + + + + Used to find the .Net 2.0 named connection string + + + + + Issue warnings to user when any obsolete property names are used. + + + + + + + NHibernate version (informational). + + + + + Gets a copy of the configuration found in <nhibernate> section + of app.config/web.config. + + + This is the replacement for hibernate.properties + + + + + The bytecode provider to use. + + + This property is read from the <nhibernate> section + of the application configuration file by default. Since it is not + always convenient to configure NHibernate through the application + configuration file, it is also possible to set the property value + manually. This should only be done before a configuration object + is created, otherwise the change may not take effect. + + + + + Whether to enable the use of reflection optimizer + + + This property is read from the <nhibernate> section + of the application configuration file by default. Since it is not + always convenient to configure NHibernate through the application + configuration file, it is also possible to set the property value + manually. This should only be done before a configuration object + is created, otherwise the change may not take effect. + + + + + Converts a partial class name into a fully qualified one + + + + + + + + Attempts to find a type by its full name. Throws a + using the provided in case of failure. + + name of the class to find + Error message to use for + the in case of failure. Should contain + the {0} formatting placeholder. + A instance. + + Thrown when there is an error loading the class. + + + + + Similar to , but handles short class names + by calling . + + + + + + + + + Called for all collections. parameter + was added in NH to allow for reflection related to generic types. + + + + + Called for arrays and primitive arrays + + + + + Called for Lists, arrays, primitive arrays + > + + + + Called for Maps + + + + + + + + + Called for all collections + + + + + Summary description for ImprovedNamingStrategy. + + + + + The singleton instance + + + + + Return the unqualified class name, mixed case converted to underscores + + + + + + + Return the full property path with underscore seperators, mixed case converted to underscores + + + + + + + Convert mixed case to underscores + + + + + + + Convert mixed case to underscores + + + + + + + Return the full property path prefixed by the unqualified class name, with underscore seperators, mixed case converted to underscores + + + + + + + + A collection of mappings from classes and collections to relational database tables. + + Represents a single <hibernate-mapping> element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds an import to allow for the full class name Namespace.Entity + to be referenced as Entity or some other name in HQL. + + The name of the type that is being renamed. + The new name to use in HQL for the type. + Thrown when the rename already identifies another type. + + + + + + + + + + + + + + + + + + + + + + + + + The default namespace for persistent classes + + + + + The default assembly for persistent classes + + + + + + + + + + + + + + Gets or sets a boolean indicating if the Fully Qualified Type name should + automattically have an import added as the class name. + + if the class name should be used as an import. + + Auto-import is used to shorten the string used to refer to types to just their + unqualified name. So if the type MyAssembly.MyNamespace.MyClass, MyAssembly has + auto-import="false" then all use of it in HQL would need to be the fully qualified + version MyAssembly.MyNamespace.MyClass. If auto-import="true", the type could + be referred to in HQL as just MyClass. + + + + + Queues mapping files according to their dependency order. + + + + + Adds the specified document to the queue. + + + + + Gets a that can now be processed (i.e. + that doesn't depend on classes not yet processed). + + + + + + Checks that no unprocessed documents remain in the queue. + + + + + Holds information about mapped classes found in an embedded resource + + + + + Gets the names of all classes outside this resource + needed by the classes in this resource. + + An of + + + + Settings that affect the behavior of NHibernate at runtime. + + + + + Reads configuration properties and configures a instance. + + + + + Provides callbacks from the to the persistent object. Persistent classes may + implement this interface but they are not required to. + + + + , , and are intended to be used + to cascade saves and deletions of dependent objects. This is an alternative to declaring cascaded + operations in the mapping file. + + + may be used to initialize transient properties of the object from its persistent + state. It may not be used to load dependent objects since the interface + may not be invoked from inside this method. + + + A further intended usage of , , and + is to store a reference to the for later use. + + + If , , or return + , the operation is silently vetoed. If a + is thrown, the operation is vetoed and the exception is passed back to the application. + + + Note that is called after an identifier is assigned to the object, except when + identity key generation is used. + + + + + + Called when an entity is saved + + The session + If we should veto the save + + + + Called when an entity is passed to . + + The session + A value indicating whether the operation + should be vetoed or allowed to proceed. + + This method is not called every time the object's state is + persisted during a flush. + + + + + Called when an entity is deleted + + The session + A value indicating whether the operation + should be vetoed or allowed to proceed. + + + + Called after an entity is loaded. + + + It is illegal to access the from inside this method.. + However, the object may keep a reference to the session for later use + + The session + The identifier + + + + Veto the action + + + + + Accept the action + + + + + Implemented by persistent classes with invariants that must be checked before inserting + into or updating the database + + + + + Validate the state of the object before persisting it. If a violation occurs, + throw a . This method must not change the state of the object + by side-effect. + + + + + Thrown from when an invariant was violated. Some applications + might subclass this exception in order to provide more information about the violation + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + An unordered, unkeyed collection that can contain the same element + multiple times. The .NET collections API, has no Bag. + The interface closely resembles bag semantics, + however NHibernate for .NET 1.1 used so + is used to ensure the easiest transition + to generics. + + The type of the element the bag should hold. + The underlying collection used is an + + + + Base class for implementing . + + + + + + Persistent collections are treated as value objects by NHibernate. + ie. they have no independent existence beyond the object holding + a reference to them. Unlike instances of entity classes, they are + automatically deleted when unreferenced and automatically become + persistent when held by a persistent object. Collections can be + passed between different objects (change "roles") and this might + cause their elements to move from one database table to another. + + + NHibernate "wraps" a collection in an instance of + . This mechanism is designed + to support tracking of changes to the collection's persistent + state and lazy instantiation of collection elements. The downside + is that only certain abstract collection types are supported and + any extra semantics are lost. + + + Applications should never use classes in this namespace + directly, unless extending the "framework" here. + + + Changes to structure of the collection are recorded by the + collection calling back to the session. Changes to mutable + elements (ie. composite elements) are discovered by cloning their + state when the collection is initialized and comparing at flush + time. + + + + + + Clears out any Queued Additions. + + + After a Flush() the database is in synch with the in-memory + contents of the Collection. Since everything is in synch remove + any Queued Additions. + + + + + Return the user-visible collection (or array) instance + + + By default, the NHibernate wrapper is an acceptable collection for + the end user code to work with because it is interface compatible. + An NHibernate PersistentList is an IList, an NHibernate PersistentMap is an IDictionary + and those are the types user code is expecting. + + + + + Called just before reading any rows from the + + + + + Called after reading all rows from the + + + This should be overridden by sub collections that use temporary collections + to store values read from the db. + + + + + Disassociate this collection from the given session. + + + true if this was currently associated with the given session + + + + Associate the collection with the given session. + + + false if the collection was already associated with the session + + + + Read the state of the collection from a disassembled cached value. + + + + + + + + Iterate all collection entries, during update of the database + + + An that gives access to all entries + in the collection. + + + + + Reads the row from the . + + + This method should be prepared to handle duplicate elements caused by fetching multiple collections, + or should be updated + to return for the collection type. + + The IDataReader that contains the value of the Identifier + The persister for this Collection. + The descriptor providing result set column names + The owner of this Collection. + The object that was contained in the row. + + + + Get the identifier of the given collection entry + + + + + Get the index of the given collection entry + + + + + Get the value of the given collection entry + + + + + Called before any elements are read into the collection, + allowing appropriate initializations to occur. + + The for this persistent collection. + + + + Does the current state exactly match the snapshot? + + The to compare the elements of the Collection. + + if the wrapped collection is different than the snapshot + of the collection or if one of the elements in the collection is + dirty. + + + + + Disassemble the collection, ready for the cache + + The for this Collection. + The contents of the persistent collection in a cacheable form. + + + + Gets a indicating if the rows for this collection + need to be recreated in the table. + + The for this Collection. + + by default since most collections can determine which rows need to be + individually updated/inserted/deleted. Currently only 's for many-to-many + need to be recreated. + + + + + Return a new snapshot of the current state of the collection + + + + + To be called internally by the session, forcing + immediate initalization. + + + This method is similar to , except that different exceptions are thrown. + + + + + Does an element exist at this entry in the collection? + + + + + Do we need to insert this element? + + + + + Do we need to update this element? + + + + + Get all the elements that need deleting + + + + + Is this the wrapper for the given underlying collection instance? + + The collection to see if this IPersistentCollection is wrapping. + + if the IPersistentCollection is wrappping the collection instance, + otherwise. + + + + + Called before inserting rows, to ensure that any surrogate keys are fully generated + + + + + + Called after inserting a row, to fetch the natively generated id + + + + + + + + Get all "orphaned" elements + + The snapshot of the collection. + The persistent class whose objects + the collection is expected to contain. + + An that contains all of the elements + that have been orphaned. + + + + + Get the snapshot value of the given collection entry + + + + + Called after initializing from cache + + + + + Clear the dirty flag, after flushing changes + to the database. + + + + + Mark the collection as dirty + + + + + The owning entity. + + + Note that the owner is only set during the flush + cycle, and when a new collection wrapper is created + while loading an entity. + + + + + Is the initialized collection empty? + + + + + Gets a indicating if the underlying collection is directly + accessable through code. + + + if we are not guaranteed that the NHibernate collection wrapper + is being used. + + + This is typically whenever a transient object that contains a collection is being + associated with an through or . + NHibernate can't guarantee that it will know about all operations that would cause NHibernate's collections + to call or . + + + + + + + + + + + + + + + + + Is the collection dirty? Note that this is only + reliable during the flush cycle, after the + collection elements are dirty checked against + the snapshot. + + + + + Called by any read-only method of the collection interface + + + + + Called by any writer method of the collection interface + + + + + Queue an addition if the peristent collection supports it + + + if the addition was queued up, if the persistent collection + doesn't support Queued Addition. + + + + + Queue additions + + + + + After reading all existing elements from the database, + add the queued elements to the underlying collection. + + The to add. + The that + is currently loading the collection. + + The default implementation is to throw an + because most collections do not support delayed addition. If the collection + does then override this method. + + + + + Clears out any Queued Additions. + + + After a Flush() the database is in synch with the in-memory + contents of the Collection. Since everything is in synch remove + any Queued Additions. + + + + + Not called by Hibernate, but used by non-NET serialization, eg. SOAP libraries. + + + + + Not called by Hibernate, but used by non-NET serialization, eg. SOAP libraries. + + + + + + Return the user-visible collection (or array) instance + + + By default, the NHibernate wrapper is an acceptable collection for + the end user code to work with because it is interface compatible. + An NHibernate PersistentList is an IList, an NHibernate PersistentMap is an IDictionary + and those are the types user code is expecting. + + + + + Called just before reading any rows from the + + + + + Called after reading all rows from the + + + This should be overridden by sub collections that use temporary collections + to store values read from the db. + + + + + Initialize the collection, if possible, wrapping any exceptions + in a runtime exception + + currently obsolete + if we cannot initialize + + + + Mark the collection as initialized. + + + + + Disassociate this collection from the given session. + + + true if this was currently associated with the given session + + + + Associate the collection with the given session. + + + false if the collection was already associated with the session + + + + Read the state of the collection from a disassembled cached value. + + + + + + + + Iterate all collection entries, during update of the database + + + + + + Reads the row from the . + + The IDataReader that contains the value of the Identifier + The persister for this Collection. + The descriptor providing result set column names + The owner of this Collection. + The object that was contained in the row. + + + + Get the index of the given collection entry + + + + + + + + Called before any elements are read into the collection, + allowing appropriate initializations to occur. + + + + + + Does the current state exactly match the snapshot? + + + + + + + Return a new snapshot of the current state + + The for this Collection. + + + + + Disassemble the collection, ready for the cache + + + + + + + Gets a indicating if the rows for this collection + need to be recreated in the table. + + The for this Collection. + + by default since most collections can determine which rows need to be + individually updated/inserted/deleted. Currently only 's for many-to-many + need to be recreated. + + + + + + + + + + + + To be called internally by the session, forcing + immediate initalization. + + + This method is similar to , except that different exceptions are thrown. + + + + + Does an element exist at this entry in the collection? + + + + + + + + Do we need to insert this element? + + + + + + + + + Do we need to update this element? + + + + + + + + + Get all the elements that need deleting + + + + + Is this the wrapper for the given underlying collection instance? + + + + + + + Gets the Snapshot from the current session the collection + is in. + + + + + Called before inserting rows, to ensure that any surrogate keys are fully generated + + + + + + Called after inserting a row, to fetch the natively generated id + + + + + + + + Get all "orphaned" elements + + + + + Is the initialized collection empty? + + + + + Is the collection currently connected to an open session? + + + + + Is this collection in a state that would allow us to "queue" additions? + + + + + Gets a indicating if the underlying collection is directly + accessable through code. + + + if we are not guaranteed that the NHibernate collection wrapper + is being used. + + + This is typically whenever a transient object that contains a collection is being + associated with an through or . + NHibernate can't guarantee that it will know about all operations that would cause NHibernate's collections + to call or . + + + + + + + + + + + + + + + + + + + + Initializes an instance of the + in the . + + The the bag is in. + + + + Initializes an instance of the + that wraps an existing in the . + + The the bag is in. + The to wrap. + + + + Gets a indicating if this Bag needs to be recreated + in the database. + + The for this Collection. + + if this is a one-to-many bag, if this is not + a one-to-many bag. Since a bag is an unordered, unindexed collection + that permits duplicates it is not possible to determine what has changed in a + many-to-many so it is just recreated. + + + + + Counts the number of times that the occurs + in the . + + The element to find in the list. + The to search. + The that can determine equality. + + The number of occurrences of the element in the list. + + + + + Is this the wrapper for the given underlying bag instance? + + The bag that might be wrapped. + + if the is equal to the + wrapped collection by object reference. + + + + + Is the initialized GenericBag empty? + + if the bag has a Count==0, otherwise. + + + + Implements "bag" semantics more efficiently than by adding + a synthetic identifier column to the table. + + + + The identifier is unique for all rows in the table, allowing very efficient + updates and deletes. The value of the identifier is never exposed to the + application. + + + Identifier bags may not be used for a many-to-one association. Furthermore, + there is no reason to use inverse="true". + + + + + + Initializes this Bag from the cached values. + + The CollectionPersister to use to reassemble the PersistentIdentifierBag. + The disassembled PersistentIdentifierBag. + The owner object. + + + + A persistent wrapper for an + + The type of the element the list should hold. + The underlying collection used is a + + + + Initializes an instance of the + in the . + + The the list is in. + + + + Initializes an instance of the + that wraps an existing in the . + + The the bag is in. + The to wrap. + + + + Does the current state of the list exactly match the snapshot? + + The to compare the elements of the Collection. + + if the wrapped list is different than the snapshot + of the list or if one of the elements in the collection is + dirty. + + + + + Return a new snapshot of the current state. + + The for this Collection. + + A new that contains Deep Copies of the + Elements stored in this wrapped collection. + + + + + Get all "orphaned" elements. + + The snapshot of the collection. + The type of the entities the collection + is supposed to contain. + + An that contains all of the elements + that have been orphaned. + + + + + A persistent wrapper for a . Underlying + collection is a + + The type of the keys in the IDictionary. + The type of the elements in the IDictionary. + + + + Initializes an instance of the + in the . + + The the map is in. + + + + Initializes an instance of the + that wraps an existing in the + . + + The the bag is in. + The to wrap. + + + + .NET has no design equivalent for Java's Set so we are going to use the + Iesi.Collections library. This class is internal to NHibernate and shouldn't + be used by user code. + + + The code for the Iesi.Collections library was taken from the article + Add Support for "Set" Collections + to .NET that was written by JasonSmith. + + + + + The that NHibernate is wrapping. + + + + + A temporary list that holds the objects while the set is being + populated from the database. + + + This is necessary to ensure that the object being added to the set doesn't + have its and + methods called during the load process. + + + + + Returns a Hashtable where the Key & the Value are both a Copy of the + same object. + + + + + + + This constructor is NOT meant to be called from user code. + + + + + Creates a new PersistentGenericSet initialized to the values in the Map. + This constructor is NOT meant to be called from user code. + + + Only call this constructor if you consider the map initialized. + + + + + Initializes this PersistentGenericSet from the cached values. + + The CollectionPersister to use to reassemble the set. + The disassembled set. + The owner object. + + + + + + + + + + + + + + + + Set up the temporary List that will be used in the EndRead() + to fully create the set. + + + + + Takes the contents stored in the temporary list created during + that was populated during and writes it to the underlying + set. + + + + + + + + + + + + + + + + + + + + A persistent wrapper for an array. lazy initialization is NOT supported + + + + + The that NHibernate is wrapping. + + + + + A temporary list that holds the objects while the PersistentArrayHolder is being + populated from the database. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Before is called the PersistentArrayHolder needs to setup + a temporary list to hold the objects. + + + + + Takes the contents stored in the temporary list created during + that was populated during and write it to the underlying + array. + + + + + Initializes this array holder from the cached values. + + The CollectionPersister to use to reassemble the Array. + The disassembled Array. + The owner object. + + + + Returns the user-visible portion of the NHibernate PersistentArrayHolder. + + + The array that contains the data, not the NHibernate wrapper. + + + + + + + + + + + + + + + An unordered, unkeyed collection that can contain the same element + multiple times. The .NET collections API has no Bag class. + Most developers seem to use s to represent bag semantics, + so NHibernate follows this practice. + + + + + Counts the number of times that the occurs + in the . + + The element to find in the list. + The to search. + The that can determine equality. + + The number of occurrences of the element in the list. + + + + + Initializes this PersistentBag from the cached values. + + The CollectionPersister to use to reassemble the PersistentBag. + The disassembled PersistentBag. + The owner object. + + + + Gets a indicating if this PersistentBag needs to be recreated + in the database. + + + + if this is a one-to-many Bag, if this is not + a one-to-many Bag. Since a Bag is an unordered, unindexed collection + that permits duplicates it is not possible to determine what has changed in a + many-to-many so it is just recreated. + + + + + Implements "bag" semantics more efficiently than a regular + by adding a synthetic identifier column to the table. + + + + The identifier is unique for all rows in the table, allowing very efficient + updates and deletes. The value of the identifier is never exposed to the + application. + + + PersistentIdentifierBags may not be used for a many-to-one association. Furthermore, + there is no reason to use inverse="true". + + + + + + Initializes this Bag from the cached values. + + The CollectionPersister to use to reassemble the PersistentIdentifierBag. + The disassembled PersistentIdentifierBag. + The owner object. + + + + A persistent wrapper for an + + + The underlying collection used in an . + + + + + Return a new snapshot of the current state. + + The for this Collection. + + A new that contains Deep Copies of the + Elements stored in this wrapped collection. + + + + + Does the current state of the list exactly match the snapshot? + + The to compare the elements of the Collection. + + if the wrapped list is different than the snapshot + of the list or if one of the elements in the collection is + dirty. + + + + + Initializes an instance of the + in the . + + The the list is in. + + + + Initializes an instance of the + that wraps an existing in the . + + The the list is in. + The to wrap. + + + + + + + Initializes this PersistentList from the cached values. + + The CollectionPersister to use to reassemble the PersistentList. + The disassembled PersistentList. + The owner object. + + + + + + + + + + + + + + + + A persistent wrapper for a . Underlying collection + is a . + + + + + Construct an uninitialized PersistentMap. + + The ISession the PersistentMap should be a part of. + + + + Construct an initialized PersistentMap based off the values from the existing IDictionary. + + The ISession the PersistentMap should be a part of. + The IDictionary that contains the initial values. + + + + Initializes this PersistentMap from the cached values. + + The CollectionPersister to use to reassemble the PersistentMap. + The disassembled PersistentMap. + The owner object. + + + + .NET has no design equivalent for Java's Set so we are going to use the + Iesi.Collections library. This class is internal to NHibernate and shouldn't + be used by user code. + + + The code for the Iesi.Collections library was taken from the article + Add Support for "Set" Collections + to .NET that was written by JasonSmith. + + + + + The that NHibernate is wrapping. + + + + + A temporary list that holds the objects while the PersistentSet is being + populated from the database. + + + This is necessary to ensure that the object being added to the PersistentSet doesn't + have its' GetHashCode() and Equals() methods called during the load + process. + + + + + Returns a Hashtable where the Key & the Value are both a Copy of the + same object. + + + + + + + This constructor is NOT meant to be called from user code. + + + + + Creates a new PersistentSet initialized to the values in the Map. + This constructor is NOT meant to be called from user code. + + + Only call this constructor if you consider the map initialized. + + + + + Initializes this PersistentSet from the cached values. + + The CollectionPersister to use to reassemble the PersistentSet. + The disassembled PersistentSet. + The owner object. + + + + + + + + + + + + + + + + Set up the temporary List that will be used in the EndRead() + to fully create the set. + + + + + Takes the contents stored in the temporary list created during BeginRead() + that was populated during ReadFrom() and write it to the underlying + PersistentSet. + + + + + + + + + + + + + + + + + + + + The base class for the ConnectionProvider. + + + + + A strategy for obtaining ADO.NET . + + + The IConnectionProvider interface is not intended to be exposed to the application. + Instead it is used internally by NHibernate to obtain . + Implementors should provide a public default constructor. + + + + + Initialize the connection provider from the given properties. + + The connection provider settings + + + + Dispose of a used + + The to clean up. + + + + Get an open . + + An open . + + + + Gets the this ConnectionProvider should use to + communicate with the .NET Data Provider + + + The to communicate with the .NET Data Provider. + + + + + Closes the . + + The to clean up. + + + + Configures the ConnectionProvider with the Driver and the ConnectionString. + + An that contains the settings for this ConnectionProvider. + + Thrown when a could not be found + in the settings parameter or the Driver Class could not be loaded. + + + + + Get the .NET 2.0 named connection string + + + Thrown when a was found + in the settings parameter but could not be found in the app.config + + + + + Configures the driver for the ConnectionProvider. + + An that contains the settings for the Driver. + + Thrown when the could not be + found in the settings parameter or there is a problem with creating + the . + + + + + Get an open . + + An open . + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this ConnectionProvider is being Disposed of or Finalized. + +

+ If this ConnectionProvider is being Finalized (isDisposing==false) then make + sure not to call any methods that could potentially bring this + ConnectionProvider back to life. +

+

+ If any subclasses manage resources that also need to be disposed of this method + should be overridden, but don't forget to call it in the override. +

+
+
+ + + Gets the for the + to connect to the database. + + + The for the + to connect to the database. + + + + + Gets the that can create the object. + + + The that can create the . + + + + + Instanciates a connection provider given configuration properties. + + + + + + + + + + + + A ConnectionProvider that uses an IDriver to create connections. + + + + + Initializes a new instance of the class. + + + + + Closes and Disposes of the . + + The to clean up. + + + + Gets a new open through + the . + + + An Open . + + + If there is any problem creating or opening the . + + + + + An implementation of the IConnectionProvider that simply throws an exception when + a connection is requested. + + + This implementation indicates that the user is expected to supply an ADO.NET connection + + + + + Throws an if this method is called + because the user is responsible for closing s. + + The to clean up. + + Thrown when this method is called. User is responsible for closing + s. + + + + + Throws an if this method is called + because the user is responsible for creating s. + + + No value is returned because an is thrown. + + + Thrown when this method is called. User is responsible for creating + s. + + + + + Configures the ConnectionProvider with only the Driver class. + + + + All other settings of the Connection are the responsibility of the User since they configured + NHibernate to use a Connection supplied by the User. + + + + + Provides a current session + for each . + Not recommended for .NET 2.0 web applications. + + + + + Extends the contract defined by + by providing methods to bind and unbind sessions to the current context. + + + The notion of a contextual session is managed by some external entity + (generally some form of interceptor like the HttpModule). + This external manager is responsible for scoping these contextual sessions + appropriately binding/unbinding them here for exposure to the application + through calls. + + + + + Defines the contract for implementations which know how to + scope the notion of a current session. + + + + Implementations should adhere to the following: + + contain a constructor accepting a single argument of type + + should be thread safe + should be fully serializable + + + + Implementors should be aware that they are also fully responsible for + cleanup of any generated current-sessions. + + + Note that there will be exactly one instance of the configured + ICurrentSessionContext implementation per . + + + It is recommended to inherit from the class + whenever possible as it simplifies the implementation and provides + single entry point with session binding support. + + + + + + Retrieve the current session according to the scoping defined + by this implementation. + + The current session. + Typically indicates an issue + locating or creating the current session. + + + + Retrieve the current session according to the scoping defined + by this implementation. + + The current session. + Indicates an issue + locating the current session. + + + + Binds the specified session to the current context. + + + + + Returns whether there is a session bound to the current context. + + + + + Unbinds and returns the current session. + + + + Gets or sets the currently bound session. + + + + Get the dicitonary mapping session factory to its current session. + + + + + Set the map mapping session factory to its current session. + + + + + Gets or sets the currently bound session. + + + + + The key is the session factory and the value is the bound session. + + + + + The key is the session factory and the value is the bound session. + + + + + Provides a current session + for each . + Works only with Web Applications. + + + + + Provides a current session + for each thread using the []. + To avoid if there are two session factories in the same thread. + + + + Gets or sets the currently bound session. + + + + Provides a current session + for each . Works only with web applications. + + + + + Used to show a better debug display for dictionaries + + + + + ANSI-SQL substring + Documented in: + ANSI X3.135-1992 + American National Standard for Information Systems - Database Language - SQL + + + Syntax: + ::= + SUBSTRING FROM < start position> + [ FOR ] + ]]> + + + + + Provides support routines for the HQL functions as used + in the various SQL Dialects + + Provides an interface for supporting various HQL functions that are + translated to SQL. The Dialect and its sub-classes use this interface to + provide details required for processing of the function. + + + + + The function return type + + The type of the first argument + + + + + + Render the function call as SQL. + + List of arguments + + SQL fragment for the fuction. + + + + Does this function have any arguments? + + + + + If there are no arguments, are parens required? + + + + + A SQLFunction implementation that emulates the ANSI SQL trim function + on dialects which do not support the full definition. However, this function + definition does assume the availability of ltrim, rtrim, and replace functions + which it uses in various combinations to emulate the desired ANSI trim() + functionality. + + + + + + + + + + + according to both the ANSI-SQL and EJB3 specs, trim can either take + exactly one parameter or a variable number of parameters between 1 and 4. + from the SQL spec: + ::= + TRIM + + ::= + [ [ ] [ ] FROM ] + + ::= + LEADING + | TRAILING + | BOTH + ]]> + If only trim specification is omitted, BOTH is assumed; + if trim character is omitted, space is assumed + + + + + ANSI-SQL style cast(foo as type) where the type is a NHibernate type + + + + + Emulation of locate() on Sybase + + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + Whether the function accepts an asterisk (*) in place of arguments + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + True if accept asterisk like argument + Return type for the fuction. + + + + Classic AVG sqlfunction that return types as it was done in Hibernate 3.1 + + + + + Classic COUNT sqlfunction that return types as it was done in Hibernate 3.1 + + + + + Classic SUM sqlfunction that return types as it was done in Hibernate 3.1 + + + + + Summary description for NoArgSQLFunction. + + + + + Emulation of coalesce() on Oracle, using multiple nvl() calls + + + + + Emulation of locate() on PostgreSQL + + + + + Represents HQL functions that can have different representations in different SQL dialects. + E.g. in HQL we can define function concat(?1, ?2) to concatenate two strings + p1 and p2. Target SQL function will be dialect-specific, e.g. (?1 || ?2) for + Oracle, concat(?1, ?2) for MySql, (?1 + ?2) for MS SQL. + Each dialect will define a template as a string (exactly like above) marking function + parameters with '?' followed by parameter's index (first index is 1). + + + + + Applies the template to passed in arguments. + + args function arguments + generated SQL function call + + + + + Provides a standard implementation that supports the majority of the HQL + functions that are translated to SQL. + + + The Dialect and its sub-classes use this class to provide details required + for processing of the associated function. + + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + Return type for the fuction. + + + + Support for slightly more general templating than StandardSQLFunction, + with an unlimited number of arguments. + + + + + An SQL dialect for DB2 on iSeries OS/400. + + + The DB2400Dialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.connection.driver_class + + + + + + + + An SQL dialect for DB2. + + + The DB2Dialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.connection.driver_class + + + + + + + + Represents a dialect of SQL implemented by a particular RDBMS. Sublcasses + implement NHibernate compatibility with different systems. + + + Subclasses should provide a public default constructor that Register() + a set of type mappings and default Hibernate properties. + + + + + + + + + + + Characters used for quoting sql identifiers + + + + + + + + + + + The base constructor for Dialect. + + + Every subclass should override this and call Register() with every except + , , , , + , . + + + The Default properties for this Dialect should also be set - such as whether or not to use outer-joins + and what the batch size should be. + + + + + + Get the name of the database type associated with the given + , + + The SqlType + The database type name used by ddl. + + + + Get the name of the database type associated with the given + . + + The SqlType + The length of the SqlType + The database type name used by ddl. + + + + + + + + + + + Subclasses register a typename for the given type code and maximum + column length. $1 in the type name will be replaced by the column + length (if appropriate) + + The typecode + Maximum length of database type + The database type name + + + + Suclasses register a typename for the given type code. $1 in the + typename will be replaced by the column length (if appropriate). + + The typecode + The database type name + + + + + + + + + + + + + + The syntax used to drop a foreign key constraint from a table. + + The name of the foreign key constraint to drop. + + The SQL string to drop the foreign key constraint. + + + + + The syntax used to add a primary key constraint to a table + + + + + + The syntax used to drop a primary key constraint from a table. + + The name of the primary key constraint to drop. + + The SQL string to drop the primary key constraint. + + + + + The syntax used to drop an index constraint from a table. + + The name of the index constraint to drop. + + The SQL string to drop the primary key constraint. + + + + + Generate SQL to get the identifier of an inserted row. + If the returned value is not null, the caller will prepare a statement from it, + set SQL parameters just as it would for insertSQL, and execute it as a query + which is expected to return the identifier of the inserted row. + If the returned value is null, the caller will execute insertSQL as an update + and then execute IdentitySelectString as a query. + The default implementation (in this class) returns . + + a parameterized SQL statement to insert a row into a table. + The column for which the identity generator was specified. + The name of the table the row is being inserted in. + a SQL statement that has the same effect as insertSQL + and also gets the identifier of the inserted row. + Return if this dialect doesn't support this feature. + + + + + The syntax that returns the identity value of the last insert, if native + key generation is supported + + + + + The syntax that fetches the next value of a sequence, if sequences are supported. + + The name of the sequence + + + + + The syntax used to create a sequence, if sequences are supported + + + + + + + The syntax used to drop a sequence, if sequences are supported + + + + + + + + + + + + + + + + + + + + Create an JoinFragment for this dialect + + + + + + Create an CaseFragment for this dialect + + + + + + Add a LIMIT clause to the given SQL SELECT + + A Query in the form of a SqlString. + Offset of the first row is not zero + A new SqlString that contains the LIMIT clause. + + + + Add a LIMIT clause to the given SQL SELECT + + A Query in the form of a SqlString. + Offset of the first row to be returned by the query (zero-based) + Maximum number of rows to be returned by the query + A new SqlString that contains the LIMIT clause. + + + + Return SQL needed to drop the named table. May (and should) use + some form of "if exists" clause, and cascade constraints. + + + + + + + Checks to see if the name has been quoted. + + The name to check if it is quoted + true if name is already quoted. + + The default implementation is to compare the first character + to Dialect.OpenQuote and the last char to Dialect.CloseQuote + + + + + Unquotes and unescapes an already quoted name + + Quoted string + Unquoted string + +

+ This method checks the string quoted to see if it is + quoted. If the string quoted is already enclosed in the OpenQuote + and CloseQuote then those chars are removed. +

+

+ After the OpenQuote and CloseQuote have been cleaned from the string quoted + then any chars in the string quoted that have been escaped by doubling them + up are changed back to a single version. +

+

+ The following quoted values return these results + "quoted" = quoted + "quote""d" = quote"d + quote""d = quote"d +

+

+ If this implementation is not sufficient for your Dialect then it needs to be overridden. + MsSql2000Dialect is an example of where UnQuoting rules are different. +

+
+
+ + + Unquotes an array of Quoted Names. + + strings to Unquote + an array of unquoted strings. + + This use UnQuote(string) for each string in the quoted array so + it should not need to be overridden - only UnQuote(string) needs + to be overridden unless this implementation is not sufficient. + + + + + Quotes a name. + + The string that needs to be Quoted. + A QuotedName + +

+ This method assumes that the name is not already Quoted. So if the name passed + in is "name then it will return """name". It escapes the first char + - the " with "" and encloses the escaped string with OpenQuote and CloseQuote. +

+
+
+ + + Quotes a name for being used as a aliasname + + Original implementation calls + Name of the alias + A Quoted name in the format of OpenQuote + aliasName + CloseQuote + +

+ If the aliasName is already enclosed in the OpenQuote and CloseQuote then this + method will return the aliasName that was passed in without going through any + Quoting process. So if aliasName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Quotes a name for being used as a columnname + + Original implementation calls + Name of the column + A Quoted name in the format of OpenQuote + columnName + CloseQuote + +

+ If the columnName is already enclosed in the OpenQuote and CloseQuote then this + method will return the columnName that was passed in without going through any + Quoting process. So if columnName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Quotes a name for being used as a tablename + + Name of the table + A Quoted name in the format of OpenQuote + tableName + CloseQuote + +

+ If the tableName is already enclosed in the OpenQuote and CloseQuote then this + method will return the tableName that was passed in without going through any + Quoting process. So if tableName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Quotes a name for being used as a schemaname + + Name of the schema + A Quoted name in the format of OpenQuote + schemaName + CloseQuote + +

+ If the schemaName is already enclosed in the OpenQuote and CloseQuote then this + method will return the schemaName that was passed in without going through any + Quoting process. So if schemaName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Does this dialect support the ALTER TABLE syntax? + + + + + Do we need to drop constraints before dropping tables in the dialect? + + + + + Do we need to qualify index names with the schema name? + + + + + How we seperate the queries when we use multiply queries. + + + + + Retrieves the FOR UPDATE syntax specific to this dialect + + The appropriate FOR UPDATE clause string. + + + + Retrieves the FOR UPDATE NOWAIT syntax specific to this dialect + + The appropriate FOR UPDATE NOWAIT clause string. + + + + Does this dialect support subselects? + + + + + Does this dialect support the UNIQUE column syntax? + + + + + The syntax used to add a column to a table. Note this is deprecated + + + + + The keyword used to specify a nullable column + + + + + Does this dialect support identity column key generation? + + + + + Does this dialect support sequences? + + + + + The keyword used to specify an identity column, if native key generation is supported + + + + + The keyword used to insert a generated value into an identity column (or null) + + + + + The keyword used to insert a row without specifying any column values + + + + + Retrieve a set of default Hibernate properties for this database. + + + + + Completely optional cascading drop clause + + + + + The name of the SQL function that transforms a string to lowercase + + + + + Does this Dialect have some kind of LIMIT syntax? + + False, unless overridden. + + + + Does this Dialect support an offset? + + + + + Can parameters be used for a statement containing a LIMIT? + + + + + Does the LIMIT clause specify arguments in the "reverse" order + limit, offset instead of offset, limit? + + False, unless overridden. + Inheritors should return true if the correct order is limit, offset + + + + Does the LIMIT clause come at the start of the + SELECT statement rather than at the end? + + false, unless overridden + + + + Does the LIMIT clause take a "maximum" row number + instead of a total number of returned rows? + + false, unless overridden + + + + The opening quote for a quoted identifier. + + + + + The closing quote for a quoted identifier. + + + + + Whether this dialect has an identity clause added to the data type or a + completely seperate identity data type. + + + + + Aggregate SQL functions as defined in general. This is + a case-insensitive hashtable! + + + The results of this method should be integrated with the + specialization's data. + + + + + Does the dialect support the syntax 'drop table if exists NAME' + + + + + Does the dialect support the syntax 'drop table NAME if exists' + + + + + Gives the best resolution that the database can use for storing + date/time values, in ticks. + + + + For example, if the database can store values with 100-nanosecond + precision, this property is equal to 1L. If the database can only + store values with 1-millisecond precision, this property is equal + to 10000L (number of ticks in a millisecond). + + + Used in TimestampType. + + + + + + + + + + + + + + + + + + + + + Add a LIMIT clause to the given SQL SELECT + + A Query in the form of a SqlString. + Offset of the first row is not zero + A new SqlString that contains the LIMIT clause. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for FirebirdDialect. + + + The FirebirdDialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.connection.driver_class + + + + + + + + Add a FIRST x [SKIP] y clause to the given SQL SELECT + + A Query in the form of a SqlString. + Maximum number of rows to be returned by the query + Offset of the first row to process in the result set + A new SqlString that contains the FIRST clause. + + + + + + + A generic SQL dialect which may or may not work on any actual databases + + + + + + + + + + + Summary description for InformixDialect. + + + The InformixDialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.connection.driver_class + + + + + + + + + + + The syntax that returns the identity value of the last insert, if native + key generation is supported + + + + + + + + The keyword used to specify an identity column, if native key generation is supported + + + + + Whether this dialect have an Identity clause added to the data type or a + completely seperate identity data type + + + + + An SQL dialect for IngresSQL. + + + The IngresDialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.use_outer_join + + + + hibernate.connection.driver_class + + + + + + + + An SQL dialect compatible with Microsoft SQL Server 2000. + + + The MsSql2000Dialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.use_outer_join + + + + hibernate.connection.driver_class + + + + hibernate.prepare_sql + + + + + + + + + + + Generates the string to drop the table using SQL Server syntax. + + The name of the table to drop. + The SQL with the inserted. + + + + + + + Add a LIMIT (TOP) clause to the given SQL SELECT + + A Query in the form of a SqlString. + Maximum number of rows to be returned by the query + Offset of the first row to process in the result set + A new SqlString that contains the LIMIT clause. + + + + + + + + + MsSql does not require the OpenQuote to be escaped as long as the first char + is an OpenQuote. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Does this Dialect have some kind of LIMIT syntax? + + True, we'll use the SELECT TOP nn syntax. + + + + Does this Dialect support an offset? + + + + + Can parameters be used for a statement containing a LIMIT? + + + + + Does the LIMIT clause take a "maximum" row number + instead of a total number of returned rows? + + false, unless overridden + + + + Add a LIMIT clause to the given SQL SELECT + + The to base the limit query off of. + Offset of the first row to be returned by the query (zero-based) + Maximum number of rows to be returned by the query + A new with the LIMIT clause applied. + + The LIMIT SQL will look like + + + SELECT TOP last (columns) FROM ( + SELECT ROW_NUMBER() OVER(ORDER BY __hibernate_sort_expr_1__ {sort direction 1} [, __hibernate_sort_expr_2__ {sort direction 2}, ...]) as row, (query.columns) FROM ( + {original select query part}, {sort field 1} as __hibernate_sort_expr_1__ [, {sort field 2} as __hibernate_sort_expr_2__, ...] + {remainder of original query minus the order by clause} + ) query + ) page WHERE page.row > offset + + + + Note that we need to add explicitly specify the columns, because we need to be able to use them + in a paged subselect. NH-1155 + + + + + Sql Server 2005 supports a query statement that provides LIMIT + functionality. + + true + + + + Sql Server 2005 supports a query statement that provides LIMIT + functionality with an offset. + + true + + + + Sql Server 2005 supports a query statement that provides LIMIT + functionality with an offset. + + false + + + + An SQL dialect compatible with Microsoft SQL Server 7. + + + There have been no test run with this because the NHibernate team does not + have a machine with Sql 7 installed on it. But there have been users using + Ms Sql 7 with NHibernate. As issues with Ms Sql 7 and NHibernate become known + this Dialect will be updated. + + + + + Uses @@identity to get the Id value. + + + There is a well known problem with @@identity and triggers that insert into + rows into other tables that also use an identity column. The only way I know + of to get around this problem is to upgrade your database server to Ms Sql 2000. + + + + + A dialect for SQL Server Everywhere (SQL Server CE). + + + + + A SQL dialect for MySQL + + + The MySQLDialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.use_outer_join + + + + hibernate.connection.driver_class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create the SQL string to drop a foreign key constraint. + + The name of the foreign key to drop. + The SQL string to drop the foreign key constraint. + + + + Create the SQL string to drop a primary key constraint. + + The name of the primary key to drop. + The SQL string to drop the primary key constraint. + + + + Create the SQL string to drop an index. + + The name of the index to drop. + The SQL string to drop the index constraint. + + + + + + + + + + + + + + + + + + + + + + + + + It's a immature version, it just work. + An SQL dialect for Oracle 9 + + + The Oracle9Dialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.use_outer_join + + + + hibernate.connection.driver_class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SQL dialect for Oracle, compatible with Oracle 8. + + + + + + + + + + + + + + An SQL dialect for PostgreSQL 8.1 and above. + + + + PostgreSQL 8.1 supports FOR UPDATE ... NOWAIT syntax. + + + PostgreSQL supports Identity column using the "SERIAL" type. + Serial type is a "virtual" type that will automatically: + + + Create a sequence named tablename_colname_seq. + Set the default value of this column to the next value of the + sequence. (using function nextval('tablename_colname_seq')) + Add a "NOT NULL" constraint to this column. + Set the sequence as "owned by" the table. + + + To insert the next value of the sequence into the serial column, + exclude the column from the list of columns + in the INSERT statement or use the DEFAULT key word. + + + If the table or the column is dropped, the sequence is dropped too. + + + + + + + An SQL dialect for PostgreSQL. + + + The PostgreSQLDialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.use_outer_join + + + + hibernate.connection.driver_class + + + + + + + + + + + + + + Offset of the first row to process in the result set is non-zero + + + + + + + + + + + PostgreSQL 8.1 and above defined the fuction lastval() that returns the + value of the last sequence that nextval() was used on in the current session. + Call lastval() if nextval() has not yet been called in the current + session throw an exception. + + not used + not used + + + + + PostgreSQL supports Identity column using the "SERIAL" type. + + + + + PostgreSQL doesn't have type in identity column. + + + To create an identity column it uses the SQL syntax + CREATE TABLE tablename (colname SERIAL); or + CREATE TABLE tablename (colname BIGSERIAL); + + + + + PostgreSQL supports serial and serial4 type for 4 bytes integer auto increment column. + bigserial or serial8 can be used for 8 bytes integer auto increment column. + This dialect uses serial + + + + + The sql syntax to insert a row without specifying any column in PostgreSQL is + INSERT INTO table DEFAULT VALUES; + + + + + An SQL dialect for PostgreSQL 8.2 and above. + + + PostgreSQL 8.2 supports DROP TABLE IF EXISTS tablename + and DROP SEQUENCE IF EXISTS sequencename syntax. + See for more information. + + + + + A SQL dialect for SQLite. + + +

+ Author: Ioan Bizau +

+
+
+ + + + + + + + + + + + + This is a subclass of SybaseDialect for sybase 11 databases (specifically tested against 11.9.2). 11.9.2 does not support ANSI JOINs + therefore we have to provide a special join fragment for left/right joins (*= and =* respectively). + + + + + An SQL dialect compatible with Sybase. + + +

+ This dialect probably will not work with schema-export. If anyone out there + can fill in the ctor with DbTypes to Strings that would be helpful. +

+ The SybaseDialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.use_outer_join + + + + hibernate.connection.driver_class + + + + hibernate.prepare_sql + + + +
+
+ + + + + + + + + Sybase does not support quoted aliases, this function thus returns + aliasName as is. + + + + + + + + + + + + + + + + + + + + + + + + + + This class is basically a port of the hibernate 3.2 Sybase 11 join fragment. It usees concepts from that join fragment and the Oracle join fragment in NHibernate + + + + + Represents a SQL JOIN + + + + + An SQL dialect for Sybase Adaptive Server Anywhere 9.0 + + +

+ This dialect probably will not work with schema-export. If anyone out there + can fill in the ctor with DbTypes to Strings that would be helpful. +

+ The SybaseAnywhereDialect defaults the following configuration properties: + + + Property + Default Value + + + hibernate.use_outer_join + + + + hibernate.connection.driver_class + + + + hibernate.prepare_sql + + + +
+
+ + + + + + + + + + + + + + + ASA does not require to drop constraint before dropping tables, and DROP statement + syntax used by Hibernate to drop constraint is not compatible with ASA, so disable it. + Comments matchs SybaseAnywhereDialect from Hibernate-3.1 src + + + + + This class maps a DbType to names. + + + Associations may be marked with a capacity. Calling the Get() + method with a type and actual size n will return the associated + name with smallest capacity >= n, if available and an unmarked + default type otherwise. + Eg, setting + + Names.Put(DbType, "TEXT" ); + Names.Put(DbType, 255, "VARCHAR($1)" ); + Names.Put(DbType, 65534, "LONGVARCHAR($1)" ); + + will give you back the following: + + Names.Get(DbType) // --> "TEXT" (default) + Names.Get(DbType,100) // --> "VARCHAR(100)" (100 is in [0:255]) + Names.Get(DbType,1000) // --> "LONGVARCHAR(1000)" (100 is in [256:65534]) + Names.Get(DbType,100000) // --> "TEXT" (default) + + On the other hand, simply putting + + Names.Put(DbType, "VARCHAR($1)" ); + + would result in + + Names.Get(DbType) // --> "VARCHAR($1)" (will cause trouble) + Names.Get(DbType,100) // --> "VARCHAR(100)" + Names.Get(DbType,1000) // --> "VARCHAR(1000)" + Names.Get(DbType,10000) // --> "VARCHAR(10000)" + + + + + + Constructor. + + String to be replaced by actual size/length in type names + + + + Get default type name for specified type + + the type key + the default type name associated with the specified key + + + + Get the type name specified type and size + + the type key + the (maximum) type size/length + + The associated name with smallest capacity >= size if available and the + default type name otherwise + + + + + Set a type name for specified type key and capacity + + the type key + the (maximum) type size/length + The associated name + + + + + + + + + + + The ASAClientDriver Driver provides a database driver for Adaptive Server Anywhere 9.0. + + + + + Base class for the implementation of IDriver + + + + + A strategy for describing how NHibernate should interact with the different .NET Data + Providers. + + + + The IDriver interface is not intended to be exposed to the application. + Instead it is used internally by NHibernate to obtain connection objects, command objects, and + to generate and prepare IDbCommands. Implementors should provide a + public default constructor. + + + This is the interface to implement, or you can inherit from + if you have an ADO.NET data provider that NHibernate does not have built in support for. + To use the driver, NHibernate property hibernate.connection.driver_class should be + set to the assembly-qualified name of the driver class. + + + key="hibernate.connection.driver_class" + value="FullyQualifiedClassName, AssemblyName" + + + + + + Configure the driver using . + + + + + Creates an uninitialized IDbConnection object for the specific Driver + + + + + Generates an IDbCommand from the SqlString according to the requirements of the DataProvider. + + The of the command to generate. + The SqlString that contains the SQL. + The types of the parameters to generate for the command. + An IDbCommand with the CommandText and Parameters fully set. + + + + Prepare the by calling . + May be a no-op if the driver does not support preparing commands, or for any other reason. + + + + + + Create an instance of according to the configuration + and the capabilities of the driver + + The connection manager for the batcher. + + + + + Does this Driver support having more than 1 open IDataReader with + the same IDbConnection. + + + + A value of indicates that an exception would be thrown if NHibernate + attempted to have 2 IDataReaders open using the same IDbConnection. NHibernate + (since this version is a close to straight port of Hibernate) relies on the + ability to recursively open 2 IDataReaders. If the Driver does not support it + then NHibernate will read the values from the IDataReader into an . + + + A value of will result in greater performance because an IDataReader can be used + instead of the . So if the Driver supports it then make sure + it is set to . + + + + + + Can we issue several select queries in a single query, and get + several result sets back? + + + + + Change the parameterName into the correct format IDbCommand.CommandText + for the ConnectionProvider + + The unformatted name of the parameter + A parameter formatted for an IDbCommand.CommandText + + + + Changes the parameterName into the correct format for an IDbParameter + for the Driver. + + + For SqlServerConnectionProvider it will change id to @id + + The unformatted name of the parameter + A parameter formatted for an IDbParameter. + + + + Create an instance of according to the configuration + and the capabilities of the driver + + + By default, .Net doesn't have any batching capabilities, drivers that does have + batching support need to override this method and return their own batcher. + + + + + Generates an IDbDataParameter for the IDbCommand. It does not add the IDbDataParameter to the IDbCommand's + Parameter collection. + + The IDbCommand to use to create the IDbDataParameter. + The name to set for IDbDataParameter.Name + The SqlType to set for IDbDataParameter. + An IDbDataParameter ready to be added to an IDbCommand. + + + + Does this Driver require the use of a Named Prefix in the SQL statement. + + + For example, SqlClient requires select * from simple where simple_id = @simple_id + If this is false, like with the OleDb provider, then it is assumed that + the ? can be a placeholder for the parameter in the SQL statement. + + + + + Does this Driver require the use of the Named Prefix when trying + to reference the Parameter in the Command's Parameter collection. + + + This is really only useful when the UseNamedPrefixInSql == true. When this is true the + code will look like: + IDbParameter param = cmd.Parameters["@paramName"] + if this is false the code will be + IDbParameter param = cmd.Parameters["paramName"]. + + + + + The Named Prefix for parameters. + + + Sql Server uses "@" and Oracle uses ":". + + + + + Does this Driver support IDbCommand.Prepare(). + + + + A value of indicates that an exception would be thrown or the + company that produces the Driver we are wrapping does not recommend using + IDbCommand.Prepare(). + + + A value of indicates that calling IDbCommand.Prepare() will function + fine on this Driver. + + + + + + Initializes a new instance of with + type names that are loaded from the specified assembly. + + Assembly to load the types from. + Connection type name. + Command type name. + + + + Initializes a new instance of the class. + + + Thrown when the ASA.Data.AseClient assembly is not and can not be loaded. + + + + + iAnywhere.Data.AsaClient uses named parameters in the sql. + + - Sybase uses String.Empty in the sql. + + + + iAnywhere.Data.AsaClient use the string.Empty to locate parameters in sql. + + + + + A NHibernate Driver for using the IBM.Data.DB2.iSeries DataProvider. + + + + + Initializes a new instance of the class. + + + Thrown when the IBM.Data.DB2.iSeries assembly can not be loaded. + + + + + A NHibernate Driver for using the IBM.Data.DB2 DataProvider. + + + + + Initializes a new instance of the class. + + + Thrown when the IBM.Data.DB2 assembly can not be loaded. + + + + + A NHibernate Driver for using the Firebird data provider located in + FirebirdSql.Data.FirebirdClient assembly. + + + + + Initializes a new instance of the class. + + + Thrown when the FirebirdSql.Data.Firebird assembly can not be loaded. + + + + + A NHibernate Driver for using the FirebirdSql.Data.Firebird DataProvider. + + + + + Initializes a new instance of the class. + + + Thrown when the FirebirdSql.Data.Firebird assembly can not be loaded. + + + + + A NHibernate Driver for using the Ingres DataProvider + + + + + + + + + + + + + + + + + + + Provides a database driver for MySQL. + + + + In order to use this driver you must have the assembly MySql.Data.dll available for + NHibernate to load, including its dependencies (ICSharpCode.SharpZipLib.dll is required by + the assembly MySql.Data.dll as of the time of this writing). + + + Please check the product's website + for any updates and/or documentation regarding MySQL. + + + + + + Initializes a new instance of the class. + + + Thrown when the MySql.Data assembly can not be loaded. + + + + + MySql.Data uses named parameters in the sql. + + - MySql uses ? in the sql. + + + + + + + MySql.Data use the ? to locate parameters in sql. + + ? is used to locate parameters in sql. + + + + The MySql.Data driver does NOT support more than 1 open IDataReader + with only 1 IDbConnection. + + - it is not supported. + + + + MySql.Data does not support preparing of commands. + + - it is not supported. + + With the Gamma MySql.Data provider it is throwing an exception with the + message "Expected End of data packet" when a select command is prepared. + + + + + Some Data Providers (ie - SqlClient) do not support Multiple Active Result Sets (MARS). + NHibernate relies on being able to create MARS to read Components and entities inside + of Collections. + + + This is a completely off-line DataReader - the underlying IDataReader that was used to create + this has been closed and no connections to the Db exists. + + + + + Creates a NDataReader from a + + The to get the records from the Database. + if we are loading the in the middle of reading it. + + NHibernate attempts to not have to read the contents of an into memory until it absolutely + has to. What that means is that it might have processed some records from the and will + pick up the midstream so that the underlying can be closed + so a new one can be opened. + + + + + Sets the values that can be cached back to null and sets the + index of the cached column to -1 + + + + + + + + + + + + + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + There are not any unmanaged resources or any disposable managed + resources that this class is holding onto. It is in here + to comply with the interface. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stores a Result from a DataReader in memory. + + + + + Initializes a new instance of the NResult class. + + The IDataReader to populate the Result with. + + if the is already positioned on the record + to start reading from. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An implementation of that will work with either an + returned by Execute or with an + whose contents have been read into a . + + + + This allows NHibernate to use the underlying for as long as + possible without the need to read everything into the . + + + The consumer of the returned from does + not need to know the underlying reader and can use it the same even if it switches from an + to in the middle of its use. + + + + + + Initializes a new instance of the class. + + The underlying IDataReader to use. + + + + Initializes a new instance of the NHybridDataReader class. + + The underlying IDataReader to use. + if the contents of the IDataReader should be read into memory right away. + + + + Reads all of the contents into memory because another + needs to be opened. + + + This will result in a no op if the reader is closed or is already in memory. + + + + + + + + + + + + + + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this NHybridDataReader is being Disposed of or Finalized. + + If this NHybridDataReader is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this NHybridDataReader back to life. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets if the object is in the middle of reading a Result. + + if NextResult and Read have been called on the . + + + + + + + + + + + + + + + + + + + + + + The PostgreSQL data provider provides a database driver for PostgreSQL. +

+ Author: Oliver Weichhold +

+
+ +

+ In order to use this Driver you must have the Npgsql.dll Assembly available for + NHibernate to load it. +

+

+ Please check the products website + http://www.postgresql.org/ + for any updates and or documentation. +

+

+ The homepage for the .NET DataProvider is: + http://gborg.postgresql.org/project/npgsql/projdisplay.php. +

+
+
+ + + Initializes a new instance of the class. + + + Thrown when the Npgsql assembly can not be loaded. + + + + + A NHibernate Driver for using the Odbc DataProvider + + + Always look for a native .NET DataProvider before using the Odbc DataProvider. + + + + + A NHibernate Driver for using the OleDb DataProvider + + + Always look for a native .NET DataProvider before using the OleDb DataProvider. + + + + + OLE DB provider does not support multiple open data readers + + + + + A NHibernate Driver for using the Oracle DataProvider. + + + + + A NHibernate Driver for using the Oracle.DataAccess DataProvider + + + Code was contributed by James Mills + on the NHibernate forums in this + post. + + + + + Initializes a new instance of . + + + Thrown when the Oracle.DataAccess assembly can not be loaded. + + + + + Create an instance of according to the configuration + and the capabilities of the driver + + + By default, .Net doesn't have any batching capabilities, drivers that does have + batching support need to override this method and return their own batcher. + + + + + This adds logic to ensure that a DbType.Boolean parameter is not created since + ODP.NET doesn't support it. + + + + + + + + + + + + + + A NHibernate Driver for using the SqlClient DataProvider + + + + + Creates an uninitialized object for + the SqlClientDriver. + + An unitialized object. + + + + Creates an uninitialized object for + the SqlClientDriver. + + An unitialized object. + + + + Create an instance of according to the configuration + and the capabilities of the driver + + + By default, .Net doesn't have any batching capabilities, drivers that does have + batching support need to override this method and return their own batcher. + + + + + MsSql requires the use of a Named Prefix in the SQL statement. + + + because MsSql uses "@". + + + + + MsSql requires the use of a Named Prefix in the Parameter. + + + because MsSql uses "@". + + + + + The Named Prefix for parameters. + + + Sql Server uses "@". + + + + + The SqlClient driver does NOT support more than 1 open IDataReader + with only 1 IDbConnection. + + - it is not supported. + + MS SQL Server 2000 (and 7) throws an exception when multiple IDataReaders are + attempted to be opened. When SQL Server 2005 comes out a new driver will be + created for it because SQL Server 2005 is supposed to support it. + + + + + NHibernate driver for the System.Data.SQLite data provider for .NET 2.0. + + +

+ In order to use this driver you must have the System.Data.SQLite.dll assembly available + for NHibernate to load. This assembly includes the SQLite.dll or SQLite3.dll libraries. +

+

+ You can get the System.Data.SQLite.dll assembly from http://sourceforge.net/projects/sqlite-dotnet2. +

+

+ Please check http://www.sqlite.org/ for more information regarding SQLite. +

+
+
+ + + Initializes a new instance of . + + + Thrown when the SQLite.NET assembly can not be loaded. + + + + + NHibernate driver for the SQLite.NET data provider. +

+ Author: Ioan Bizau +

+
+ +

+ In order to use this Driver you must have the SQLite.NET.dll Assembly available for NHibernate to load it. + You must also have the SQLite.dll and SQLite3.dll libraries. +

+

+ Please check http://www.sqlite.org/ for more information regarding SQLite. +

+
+
+ + + Initializes a new instance of . + + + Thrown when the SQLite.NET assembly can not be loaded. + + + + + A NHibernate driver for Microsoft SQL Server CE data provider + + + + + Initializes a new instance of the class. + + + + + MsSql requires the use of a Named Prefix in the SQL statement. + + + because MsSql uses "@". + + + + + MsSql requires the use of a Named Prefix in the Parameter. + + + because MsSql uses "@". + + + + + The Named Prefix for parameters. + + + Sql Server uses "@". + + + + + The SqlClient driver does NOT support more than 1 open IDataReader + with only 1 IDbConnection. + + - it is not supported. + + Ms Sql 2000 (and 7) throws an Exception when multiple DataReaders are + attempted to be Opened. When Yukon comes out a new Driver will be + created for Yukon because it is supposed to support it. + + + + + The SybaseClientDriver Driver provides a database driver for Sybase. + + + It has been reported to work with the . + + + + + Initializes a new instance of the class. + + + Thrown when the Sybase.Data.AseClient assembly can not be loaded. + + + + + Sybase.Data.AseClient uses named parameters in the sql. + + - Sybase uses @ in the sql. + + + + + + + Sybase.Data.AseClient use the @ to locate parameters in sql. + + @ is used to locate parameters in sql. + + + + The single available method + is responsible for parsing a query string and recognizing tokens in + relation to parameters (either named, ejb3-style, or ordinal) and + providing callbacks about such recognitions. + + + + + Performs the actual parsing and tokenizing of the query string making appropriate + callbacks to the given recognizer upon recognition of the various tokens. + + + Note that currently, this only knows how to deal with a single output + parameter (for callable statements). If we later add support for + multiple output params, this, obviously, needs to change. + + The string to be parsed/tokenized. + The thing which handles recognition events. + + + + + Defines a sequence of elements that are currently + eligible for batch fetching. + + + Even though this is a map, we only use the keys. A map was chosen in + order to utilize a to maintain sequencing + as well as uniqueness. + + + + + A map of subselect-fetch descriptors + keyed by the against which the descriptor is + registered. + + + + + The owning persistence context. + + + + + Constructs a queue for the given context. + + The owning persistence context. + + + + Clears all entries from this fetch queue. + + + + + Retrieve the fetch descriptor associated with the given entity key. + + The entity key for which to locate any defined subselect fetch. + The fetch descriptor; may return null if no subselect fetch queued for + this entity key. + + + + Adds a subselect fetch decriptor for the given entity key. + + The entity for which to register the subselect fetch. + The fetch descriptor. + + + + After evicting or deleting an entity, we don't need to + know the query that was used to load it anymore (don't + call this after loading the entity, since we might still + need to load its collections) + + + + + Clears all pending subselect fetches from the queue. + + + Called after flushing. + + + + + If an EntityKey represents a batch loadable entity, add + it to the queue. + + + Note that the contract here is such that any key passed in should + previously have been been checked for existence within the + ; failure to do so may cause the + referenced entity to be included in a batch even though it is + already associated with the . + + + + + After evicting or deleting or loading an entity, we don't + need to batch fetch it anymore, remove it from the queue + if necessary + + + + + Get a batch of uninitialized collection keys for a given role + + The persister for the collection role. + A key that must be included in the batch fetch + the maximum number of keys to return + an array of collection keys, of length batchSize (padded with nulls) + + + + Get a batch of unloaded identifiers for this class, using a slightly + complex algorithm that tries to grab keys registered immediately after + the given key. + + The persister for the entities being loaded. + The identifier of the entity currently demanding load. + The maximum number of keys to return + an array of identifiers, of length batchSize (possibly padded with nulls) + + + + The types of children to cascade to + + + + + A cascade point that occurs just after the insertion of the parent + entity and just before deletion + + + + + A cascade point that occurs just before the insertion of the parent entity + and just after deletion + + + + + A cascade point that occurs just after the insertion of the parent entity + and just before deletion, inside a collection + + + + + A cascade point that occurs just after the update of the parent entity + + + + + A cascade point that occurs just after eviction of the parent entity from the + session cache + + + + + A cascade point that occurs just after locking a transient parent entity into the session cache + + + + + A cascade point that occurs just after copying from a transient parent entity into the object in the session cache + + + + + Summary description for Cascades. + + + + + Cascade an action to the child or children + + + + + + + + + + + + + + + + + + + + + + Cascade an action from the parent object to all its children. + + + + + + + + + + + Cascade to the collection elements + + + + + + + + + + + + + A session action that may be cascaded from parent entity to its children + + + + + + + + Cascade the action to the child object + + + + + The children to whom we should cascade. + + + + + Do we need to handle orphan delete for this action? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Should the given action be cascaded? + + + + + + + Save / Delete / Update / Evict / Lock / Replicate + delete orphans + + + + + Save / Delete / Update / Evict / Lock / Replicate + + + + + Save / Update / Lock / Replicate + + + + + Delete + + + + + Delete + delete orphans + + + + + No Cascades + + + + + Do we delete orphans automatically? + + + + + A strategy for determining if an identifier value is an identifier of a new + transient instance or a previously persistent transient instance. The strategy + is determined by the Unsaved-Value attribute in the mapping file. + + + + + + + + Assume the transient instance is newly instantiated if its identifier is null or + equal to Value + + + + + + Does the given identifier belong to a new instance + + + + + Always assume the transient instance is newly instantiated + + + + + Never assume that transient instance is newly instantiated + + + + + Assume the transient instance is newly instantiated if the identifier + is null. + + + + + A strategy for determining if a version value is an version of + a new transient instance or a previously persistent transient instance. + The strategy is determined by the Unsaved-Value attribute in the mapping file. + + + + + + + + Assume the transient instance is newly instantiated if its version is null or + equal to Value + + + + + + Does the given identifier belong to a new instance + + + + + Assume the transient instance is newly instantiated if the version + is null, otherwise assume it is a detached instance. + + + + + Assume the transient instance is newly instantiated if the version + is null, otherwise defer to the identifier unsaved-value. + + + + + Assume the transient instance is newly instantiated if the identifier + is null. + + + + + A globally unique identifier of an instance, consisting of the user-visible identifier + and the identifier space (eg. tablename) + + + + + Construct a unique identifier for an entity class instance + + + + + + + + + + The user-visible identifier + + + + + + + + + + + + + + + A FilterDefinition defines the global attributes of a dynamic filter. This + information includes its name as well as its defined parameters (name and type). + + + + + Set the named parameter's value list for this filter. + + The name of the filter for which this configuration is in effect. + The default filter condition. + A dictionary storing the NHibernate type + of each parameter under its name. + + + + Retreive the type of the named parameter defined for this filter. + + The name of the filter parameter for which to return the type. + The type of the named parameter. + + + + Get the name of the filter this configuration defines. + + The filter name for this configuration. + + + + Get a set of the parameters defined by this configuration. + + The parameters named by this configuration. + + + + Manages s and s + for an . + + +

+ Abstracts ADO.NET batching to maintain the illusion that a single logical batch + exists for the whole session, even when batching is disabled. + Provides transparent IDbCommand caching. +

+

+ This will be useful once ADO.NET gets support for batching. Until that point + no code exists that will do batching, but this will provide a good point to do + error checking and making sure the correct number of rows were affected. +

+
+
+ + + Get an for using in loading / querying. + + The to convert to an . + The of the command. + The SqlTypes of parameters + in . + + An that is ready to be executed. + + + + If not explicitly released by , it will be + released when the session is closed or disconnected. + + + This does NOT add anything to the batch - it only creates the IDbCommand and + does NOT cause the batch to execute... + + + + + + Get a non-batchable an to use for inserting / deleting / updating. + Must be explicitly released by CloseCommand() + + The to convert to an . + The of the command. + The SqlTypes of parameters + in . + + An that is ready to have the parameter values set + and then executed. + + + + + Close a opened using PrepareCommand() + + The to ensure is closed. + The to ensure is closed. + + + + Get a batchable to use for inserting / deleting / updating + (might be called many times before a single call to ExecuteBatch() + + + After setting parameters, call AddToBatch() - do not execute the statement + explicitly. + + The to convert to an . + The of the command. + The SqlTypes of parameters + in . + + + + + Add an insert / delete / update to the current batch (might be called multiple times + for a single PrepareBatchStatement()) + + Determines whether the number of rows affected by query is correct. + + + + Execute the batch + + + + + Close any query statements that were left lying around + + + Use this method instead of Dispose if the + can be used again. + + + + + Gets an by calling ExecuteReader on the . + + The to execute to get the . + The from the . + + The Batcher is responsible for ensuring that all of the Drivers rules for how many open + s it can have are followed. + + + + + Executes the . + + The to execute. + The number of rows affected. + + The Batcher is responsible for ensuring that all of the Drivers rules for how many open + s it can have are followed. + + + + + Must be called when an exception occurs. + + + + + + Cancel the current query statement + + + + + Gets the value indicating whether there are any open resources + managed by this batcher (IDbCommands or IDataReaders). + + + + + Defines a complete "snapshot" of a particular collection. + + + + + Gets the identifier of the Entity that owns this Collection. + + + + + Gets the role that identifies this Collection. + + + + + Gets the snapshot copy of the Collection's elements. + + + In most cases this is the same collection type as the one being snapshotted. + ie - the snapshot of an IList will return an IList. + + + + + Gets a indicating if the collection was at one time + associated with an Entity and then later dereferenced during a Flush(). + + + + + Defines the internal contract between the ISessionFactory and other parts of NHibernate + such as implementors of IType. + + + + + Creates ISessions. + + + + Usually an application has a single SessionFactory. Threads servicing client requests + obtain ISessions from the factory. Implementors must be threadsafe. + + + ISessionFactorys are immutable. The behaviour of a SessionFactory + is controlled by properties supplied at configuration time. + These properties are defined on Environment + + + + + + Open a ISession on the given connection + + A connection provided by the application + A session + + Note that the second-level cache will be disabled if you + supply a ADO.NET connection. NHibernate will not be able to track + any statements you might have executed in the same transaction. + Consider implementing your own . + + + + + Create database connection and open a ISession on it, specifying an interceptor + + A session-scoped interceptor + A session + + + + Open a ISession on the given connection, specifying an interceptor + + A connection provided by the application + A session-scoped interceptor + A session + + Note that the second-level cache will be disabled if you + supply a ADO.NET connection. NHibernate will not be able to track + any statements you might have executed in the same transaction. + Consider implementing your own . + + + + + Create a database connection and open a ISession on it + + + + + + Create a new databinder. + + + + + + Get the ClassMetadata associated with the given entity class + + + + + + + Get the CollectionMetadata associated with the named collection role + + + + + + + Get all ClassMetadata as a IDictionary from Type + to metadata object + + + + + + Get all CollectionMetadata as a IDictionary from role name + to metadata object + + + + + + Destroy this SessionFactory and release all resources + connection pools, etc). It is the responsibility of the application + to ensure that there are no open Sessions before calling + close(). + + + + + Evict all entries from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + Evict an entry from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + + Evict all entries from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + Evict an entry from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + + Evict any query result sets cached in the default query cache region. + + + + + Evict any query result sets cached in the named query cache region. + + + + + + Obtain the definition of a filter by name. + + The name of the filter for which to obtain the definition. + The filter definition. + + + + Obtains the current session. + + + + The definition of what exactly "current" means is controlled by the + implementation configured for use. + + + The current session. + Indicates an issue locating a suitable current session. + + + + Get the used. + + + + + Get the SQL Dialect + + + + + Obtain a set of the names of all filters defined on this SessionFactory. + + The set of filter names. + + + + This collections allows external libraries + to add their own configuration to the NHibernate session factory. + This is needed in such cases where the library is tightly coupled to NHibernate, such + as the case of NHibernate Search + + + + + Get the persister for a class + + + + + Get the persister for the named class + + The name of the class that is persisted. + The for the class. + If no can be found. + + + + Get the persister for the named class + + The name of the class that is persisted. + Whether to throw an exception if the class is not found, + or just return + The for the class. + If no can be found + and throwIfNotFound is true. + + + + Get the persister object for a collection role + + + + + + + Get the return types of a query + + + + + + + Get the names of all persistent classes that implement/extend the given interface/class + + + + + + + Get a class name, using query language imports + + + + + + + Get a particular named query cache, or the default cache + + the name of the cache region, or null for the default + query cache + the existing cache, or a newly created cache if none by that + region name + + + + Obtain an ADO.NET connection + + + + + + Release an ADO.NET connection + + + + + + Get the identifier generator for the hierarchy + + + + + Open a session conforming to the given parameters. For use mainly by + implementations. + + The external ADO.NET connection to use, if any (i.e., optional). + The release mode for managed database connections. + An appropriate session. + + + + + Is outerjoin fetching enabled? + + + + + Are scrollable ResultSets supported? + + + + + Is PreparedStatement.getGeneratedKeys supported (Java-specific?) + + + + + Get the database schema specified in hibernate.default_schema + + + + + + + + + + + + + + + Maximum depth of outer join fetching + + + + + Are we logging SQL to the console? + + + + + Get the default query cache + + + + + Is query caching enabled? + + + + + Gets the IsolationLevel an IDbTransaction should be set to. + + + This is only applicable to manually controlled NHibernate Transactions. + + + + + Gets a boolean indicating if the sql statement should be prepared. The value + is calculated from hibernate.adonet.batch_size if the value exists and greater than 0. + + + + + Gets the ICurrentSessionContext instance attached to this session factory. + + + + + Defines the internal contract between the Session and other parts of Hibernate + such as implementors of Type or ClassPersister + + + + + The main runtime interface between a Java application and Hibernate. This is the central + API class abstracting the notion of a persistence service. + + + + The lifecycle of a ISession is bounded by the beginning and end of a logical + transaction. (Long transactions might span several database transactions.) + + + The main function of the ISession is to offer create, find and delete operations + for instances of mapped entity classes. Instances may exist in one of two states: + + transient: not associated with any ISession + persistent: associated with a ISession + + + + Transient instances may be made persistent by calling Save(), Insert(), + or Update(). Persistent instances may be made transient by calling Delete(). + Any instance returned by a Find(), Iterate(), Load(), or Create + method is persistent. + + + Save() results in an SQL INSERT, Delete() + in an SQL DELETE and Update() in an SQL UPDATE. Changes to + persistent instances are deteced at flush time and also result in an SQL + UPDATE. + + + It is not intended that implementors be threadsafe. Instead each thread/transaction should obtain + its own instance from an ISessionFactory. + + + A ISession instance is serializable if its persistent classes are serializable + + + A typical transaction should use the following idiom: + + ISession sess = factory.OpenSession(); + ITransaction tx; + try { + tx = sess.BeginTransaction(); + //do some work + ... + tx.Commit(); + } catch (Exception e) { + if (tx != null) tx.Rollback(); + throw; + } finally { + sess.Close(); + } + + + + If the ISession throws an exception, the transaction must be rolled back and the session + discarded. The internal state of the ISession might not be consistent with the database + after the exception occurs. + + + + + + + Force the ISession to flush. + + + Must be called at the end of a unit of work, before commiting the transaction and closing + the session (Transaction.Commit() calls this method). Flushing if the process + of synchronising the underlying persistent store with persistable state held in memory. + + + + + Disconnect the ISession from the current ADO.NET connection. + + + If the connection was obtained by Hibernate, close it or return it to the connection + pool. Otherwise return it to the application. This is used by applications which require + long transactions. + + The connection provided by the application or + + + + Obtain a new ADO.NET connection. + + + This is used by applications which require long transactions + + + + + Reconnect to the given ADO.NET connection. + + This is used by applications which require long transactions + An ADO.NET connection + + + + End the ISession by disconnecting from the ADO.NET connection and cleaning up. + + + It is not strictly necessary to Close() the ISession but you must + at least Disconnect() it. + + The connection provided by the application or + + + + Cancel execution of the current query. + + + May be called from one thread to stop execution of a query in another thread. + Use with care! + + + + + Does this ISession contain any changes which must be + synchronized with the database? Would any SQL be executed if + we flushed this session? + + + + + Return the identifier of an entity instance cached by the ISession + + + Throws an exception if the instance is transient or associated with a different + ISession + + a persistent instance + the identifier + + + + Is this instance associated with this Session? + + an instance of a persistent class + true if the given instance is associated with this Session + + + + Remove this instance from the session cache. + + + Changes to the instance will not be synchronized with the database. + This operation cascades to associated instances if the association is mapped + with cascade="all" or cascade="all-delete-orphan". + + a persistent instance + + + + Return the persistent instance of the given entity class with the given identifier, + obtaining the specified lock mode. + + A persistent class + A valid identifier of an existing persistent instance of the class + The lock level + the persistent instance + + + + Return the persistent instance of the given entity class with the given identifier, + assuming that the instance exists. + + + You should not use this method to determine if an instance exists (use a query or + instead). Use this only to retrieve an instance + that you assume exists, where non-existence would be an actual error. + + A persistent class + A valid identifier of an existing persistent instance of the class + The persistent instance or proxy + + + + Return the persistent instance of the given entity class with the given identifier, + obtaining the specified lock mode. + + A persistent class + A valid identifier of an existing persistent instance of the class + The lock level + the persistent instance + + + + Return the persistent instance of the given entity class with the given identifier, + assuming that the instance exists. + + + You should not use this method to determine if an instance exists (use a query or + instead). Use this only to retrieve an instance that you + assume exists, where non-existence would be an actual error. + + A persistent class + A valid identifier of an existing persistent instance of the class + The persistent instance or proxy + + + + Read the persistent state associated with the given identifier into the given transient + instance. + + An "empty" instance of the persistent class + A valid identifier of an existing persistent instance of the class + + + + Persist all reachable transient objects, reusing the current identifier + values. Note that this will not trigger the Interceptor of the Session. + + + + + + + Persist the given transient instance, first assigning a generated identifier. + + + Save will use the current value of the identifier property if the Assigned + generator is used. + + A transient instance of a persistent class + The generated identifier + + + + Persist the given transient instance, using the given identifier. + + A transient instance of a persistent class + An unused valid identifier + + + + Either Save() or Update() the given instance, depending upon the value of + its identifier property. + + + By default the instance is always saved. This behaviour may be adjusted by specifying + an unsaved-value attribute of the identifier property mapping + + A transient instance containing new or updated state + + + + Update the persistent instance with the identifier of the given transient instance. + + + If there is a persistent instance with the same identifier, an exception is thrown. If + the given transient instance has a identifier, an exception will be thrown. + + A transient instance containing updated state + + + + Update the persistent state associated with the given identifier. + + + An exception is thrown if there is a persistent instance with the same identifier + in the current session. + + A transient instance containing updated state + Identifier of persistent instance + + + + Copy the state of the given object onto the persistent object with the same + identifier. If there is no persistent instance currently associated with + the session, it will be loaded. Return the persistent instance. If the + given instance is unsaved or does not exist in the database, save it and + return it as a newly persistent instance. Otherwise, the given instance + does not become associated with the session. + + a transient instance with state to be copied + an updated persistent instance + + + + Copy the state of the given object onto the persistent object with the + given identifier. If there is no persistent instance currently associated + with the session, it will be loaded. Return the persistent instance. If + there is no database row with the given identifier, save the given instance + and return it as a newly persistent instance. Otherwise, the given instance + does not become associated with the session. + + a persistent or transient instance with state to be copied + the identifier of the instance to copy to + an updated persistent instance + + + + Remove a persistent instance from the datastore. + + + The argument may be an instance associated with the receiving ISession or a + transient instance with an identifier associated with existing persistent state. + + The instance to be removed + + + + Execute a query + + A query expressed in Hibernate's query language + A distinct list of instances + See for implications of cache usage. + + + + Execute a query, binding a value to a "?" parameter in the query string. + + The query string + A value to be bound to a "?" placeholder + The Hibernate type of the value + A distinct list of instances + See for implications of cache usage. + + + + Execute a query, binding an array of values to a "?" parameters in the query string. + + The query string + An array of values to be bound to the "?" placeholders + An array of Hibernate types of the values + A distinct list of instances + See for implications of cache usage. + + + + Execute a query and return the results in an interator. + + + + If the query has multiple return values, values will be returned in an array of + type object[]. + + + Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. So Enumerator() is usually a less efficient way to retrieve + object than Find(). + + + The query string + An enumerator + + + + Execute a query and return the results in an interator, + binding a value to a "?" parameter in the query string. + + + + If the query has multiple return values, values will be returned in an array of + type object[]. + + + Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. So Enumerator() is usually a less efficient way to retrieve + object than Find(). + + + The query string + A value to be written to a "?" placeholder in the query string + The hibernate type of the value + An enumerator + + + + Execute a query and return the results in an interator, + binding the values to "?"s parameters in the query string. + + + + If the query has multiple return values, values will be returned in an array of + type object[]. + + + Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. So Enumerator() is usually a less efficient way to retrieve + object than Find(). + + + The query string + A list of values to be written to "?" placeholders in the query + A list of hibernate types of the values + An enumerator + + + + Apply a filter to a persistent collection. + + + A filter is a Hibernate query that may refer to this, the collection element. + Filters allow efficient access to very large lazy collections. (Executing the filter + does not initialize the collection.) + + A persistent collection to filter + A filter query string + The resulting collection + + + + Apply a filter to a persistent collection, binding the given parameter to a "?" placeholder + + + A filter is a Hibernate query that may refer to this, the collection element. + Filters allow efficient access to very large lazy collections. (Executing the filter + does not initialize the collection.) + + A persistent collection to filter + A filter query string + A value to be written to a "?" placeholder in the query + The hibernate type of value + A collection + + + + Apply a filter to a persistent collection, binding the given parameters to "?" placeholders. + + + A filter is a Hibernate query that may refer to this, the collection element. + Filters allow efficient access to very large lazy collections. (Executing the filter + does not initialize the collection.) + + A persistent collection to filter + A filter query string + The values to be written to "?" placeholders in the query + The hibernate types of the values + A collection + + + + Delete all objects returned by the query. + + The query string + Returns the number of objects deleted. + + + + Delete all objects returned by the query. + + The query string + A value to be written to a "?" placeholer in the query + The hibernate type of value. + The number of instances deleted + + + + Delete all objects returned by the query. + + The query string + A list of values to be written to "?" placeholders in the query + A list of Hibernate types of the values + The number of instances deleted + + + + Obtain the specified lock level upon the given object. + + A persistent instance + The lock level + + + + Re-read the state of the given instance from the underlying database. + + + + It is inadvisable to use this to implement long-running sessions that span many + business tasks. This method is, however, useful in certain special circumstances. + + + For example, + + Where a database trigger alters the object state upon insert or update + After executing direct SQL (eg. a mass update) in the same session + After inserting a Blob or Clob + + + + A persistent instance + + + + Re-read the state of the given instance from the underlying database, with + the given LockMode. + + + It is inadvisable to use this to implement long-running sessions that span many + business tasks. This method is, however, useful in certain special circumstances. + + a persistent or transient instance + the lock mode to use + + + + Determine the current lock mode of the given object + + A persistent instance + The current lock mode + + + + Begin a unit of work and return the associated ITransaction object. + + + If a new underlying transaction is required, begin the transaction. Otherwise + continue the new work in the context of the existing underlying transaction. + The class of the returned object is determined by + the property hibernate.transaction_factory + + A transaction instance + + + + Begin a transaction with the specified isolationLevel + + Isolation level for the new transaction + A transaction instance having the specified isolation level + + + + Creates a new Criteria for the entity class. + + The class to Query + An ICriteria object + + + + Creates a new Criteria for the entity class with a specific alias + + The class to Query + The alias of the entity + An ICriteria object + + + + Create a new instance of Query for the given query string + + A hibernate query string + The query + + + + Create a new instance of Query for the given collection and filter string + + A persistent collection + A hibernate query + A query + + + + Obtain an instance of for a named query string defined in the + mapping file. + + The name of a query defined externally. + An from a named query string. + + The query can be either in HQL or SQL format. + + + + + Create a new instance of IQuery for the given SQL string. + + a query expressed in SQL + a table alias that appears inside {} in the SQL string + the returned persistent class + An from the SQL string + + + + Create a new instance of for the given SQL string. + + a query expressed in SQL + an array of table aliases that appear inside {} in the SQL string + the returned persistent classes + An from the SQL string + + + + Create a new instance of for the given SQL query string. + + + + + + + Completely clear the session. Evict all loaded instances and cancel all pending + saves, updates and deletions. Do not close open enumerables or instances of + ScrollableResults. + + + + + Return the persistent instance of the given entity class with the given identifier, or null + if there is no such persistent instance. (If the instance, or a proxy for the instance, is + already associated with the session, return that instance or proxy.) + + a persistent class + an identifier + a persistent instance or null + + + + Return the persistent instance of the given entity class with the given identifier, or null + if there is no such persistent instance. Obtain the specified lock mode if the instance + exists. + + a persistent class + an identifier + the lock mode + a persistent instance or null + + + + Strongly-typed version of + + + + + Strongly-typed version of + + + + + Enable the named filter for this current session. + + The name of the filter to be enabled. + The Filter instance representing the enabled fiter. + + + + Retrieve a currently enabled filter by name. + + The name of the filter to be retrieved. + The Filter instance representing the enabled fiter. + + + + Disable the named filter for the current session. + + The name of the filter to be disabled. + + + + Create a multi query, a query that can send several + queries to the server, and return all their results in a single + call. + + + An that can return + a list of all the results of all the queries. + Note that each query result is itself usually a list. + + + + + Gets the session implementation. + + + This method is provided in order to get the NHibernate implementation of the session from wrapper implementions. + Implementors of the interface should return the NHibernate implementation of this method. + + + An NHibernate implementation of the interface + + + + + Determines at which points Hibernate automatically flushes the session. + + + For a readonly session, it is reasonable to set the flush mode to FlushMode.Never + at the start of the session (in order to achieve some extra performance). + + + + + Get the that created this instance. + + + + + Gets the ADO.NET connection. + + + Applications are responsible for calling commit/rollback upon the connection before + closing the ISession. + + + + + Is the ISession still open? + + + + + Is the ISession currently connected? + + + + + Get the current Unit of Work and return the associated ITransaction object. + + + + + Get the pre-flush identifier of the collection + + + + + + + Get the snapshot of the pre-flush collection state + + + + + Get the object for an array + + + + + Register a object for an array + + + + + Initialize the collection (if not already initialized) + + + + + + + Is this the "inverse" end of a bidirectional association? + + + + + + + new in h2.1 and no javadoc + + + + + + + + + new in h2.1 and no javadoc + + + + + new in h2.1 and no javadoc + + + + + new in h2.1 and no javadoc + + + + + new in h2.1 and no javadoc + + + + + Gets the NHibernate collection wrapper from the ISession. + + + + + + A NHibernate wrapped collection. + + + + + Load an instance without checking if it was deleted. If it does not exist and isn't nullable, throw an exception. + This method may create a new proxy or return an existing proxy. + + The to load. + The identifier of the object in the database. + Allow null instance + When enabled, the object is eagerly fetched. + + A proxy of the object or an instance of the object if the persistentClass does not have a proxy. + + No object could be found with that id. + + + + Load an instance immediately. Do not return a proxy. + + + + + + + + Load an instance by a unique key that is not the primary key. + + + + + + + + + After actually deleting a row, record the fact that the instance no longer exists on the + database (needed for identity-column key generation) + + + + + + Execute a Find() query + + + + + + + + Strongly-typed version of + + + + + Strongly-typed version of + + + + + Execute an Iterate() query + + + + + + + + Strongly-typed version of + + + + + Execute a filter + + + + + Execute a filter (strongly-typed version). + + + + + Collection from a filter + + + + + Strongly-typed version of + + + + + Get the IEntityPersister for an object + + + + + + + Add an uninitialized instance of an entity class, as a placeholder to ensure object identity. + Must be called before PostHydrate() + + + + + Register the "hydrated" state of an entity instance, after the first step of 2-phase loading + + + + + Perform the second step of 2-phase load (ie. fully initialize the entity instance) + + + + + Get the entity instance associated with the given EntityKey + + + + + Return the existing proxy associated with the given EntityKey, or the second + argument (the entity associated with the key) if no proxy exists. + + The to see if it should be Proxied. + The that identifies the entity. + + Returns a the Proxy for the class or the parameter impl. + + + + Return the existing proxy associated with the given object. (Slower than the form above) + + + + + Notify the session that an NHibernate transaction has begun. + + + + + Notify the session that the transaction is about to complete + + + + + Notify the session that the transaction completed, so we no longer own the old locks. + (Also we shold release cache softlocks). May be called multiple times during the transaction + completion process. + + + + + Return the identifier of the persistent object, or null if transient + + + + + Return the identifer of the persistent or transient object, or throw + an exception if the instance is "unsaved" + + + + + Instantiate the entity class, initializing with the given identifier + + + + + Set the lock mode of the entity to the given lock mode + + + + + Get the current version of the entity + + + + + Get the lock mode of the entity + + + + + Execute an SQL Query + + + + + Strongly-typed version of + + + + + new in 2.1 no javadoc + + + + + + new in 2.1 no javadoc + + + + + + + + new in 2.1 no javadoc + + + + + + + + Retrieve the representation of the given entity. + + The entity for which to locate the EntityEntry. + The EntityEntry for the given entity. + + + + Retreive the currently set value for a filter parameter. + + The filter parameter name in the format + {FILTER_NAME.PARAMETER_NAME}. + The filter parameter value. + + + + Retreive the type for a given filter parrameter. + + The filter parameter name in the format + {FILTER_NAME.PARAMETER_NAME}. + The filter parameter type. + + + + System time before the start of the transaction + + + + + + Get the creating SessionFactoryImplementor + + + + + + Get the prepared statement Batcher for this session + + + + + Return the currently enabled filters. The filter map is keyed by filter + name, with values corresponding to the {@link org.hibernate.impl.FilterImpl} + instance. + + The currently enabled filters. + + + + Get the aliased columns of the owning entity which are to + be used in the join + + + + + Get the columns of the owning entity which are to + be used in the join + + + + + Get the aliased columns of the owning entity which are to + be used in the join + + + + + Get the columns of the owning entity which are to + be used in the join + + + + + Get the columns of the associated table which are to + be used in the join + + + + + Container for data that is used during the NHibernate query/load process. + + + + + Initializes an instance of the class. + + An array of objects for the parameters. + An array of objects for the parameters. + + + + Initializes an instance of the class. + + An array of objects for the parameters. + An array of objects for the parameters. + An that is parameter name keyed to a value. + An that is hql alias keyed to a LockMode value. + + + + + + + + + + + + + + + + Ensure the Types and Values are the same length. + + + If the Lengths of and + are not equal. + + + + + + + + Gets or sets an that contains the named + parameter as the key and the as the value. + + An of named parameters. + + + + Gets or sets an array of objects that is stored at the index + of the Parameter. + + + + + Gets or sets an array of objects that is stored at the index + of the Parameter. + + + + + Gets or sets the for the Query. + + + + + Gets or sets an that contains the alias name of the + object from hql as the key and the as the value. + + An of lock modes. + + + + Information to determine how to run an IDbCommand and what + records to return from the IDataReader. + + + + + Indicates that the no value has been set on the Property. + + + + + Gets or Sets the Index of the First Row to Select + + The Index of the First Rows to Select + Defaults to 0 unless specifically set. + + + + Gets or Sets the Maximum Number of Rows to Select + + The Maximum Number of Rows to Select + Defaults to NoValue unless specifically set. + + + + Gets or Sets the Timeout of the Query + + The Query Timeout + Defaults to NoValue unless specifically set. + + + + + + + + + + + + + + + + + + + + Return an IdentifierValue for the specified unsaved-value. If none is specified, + guess the unsaved value by instantiating a test instance of the class and + reading it's id property, or if that is not possible, using the java default + value for the type + + + + + An enum of the different ways a value might be "included". + + + This is really an expanded true/false notion with Partial being the + expansion. Partial deals with components in the cases where + parts of the referenced component might define inclusion, but the + component overall does not. + + + + + Utility methods for managing versions and timestamps + + + + + Increment the given version number + + The value of the current version. + The of the versioned property. + The current . + Returns the next value for the version. + + + + Create an initial version number + + The of the versioned property. + The current . + A seed value to initialize the versioned property with. + + + + Seed the given instance state snapshot with an initial version number + + An array of objects that contains a snapshot of a persistent object. + The index of the version property in the fields parameter. + The of the versioned property. + Force the version to initialize + The current session, if any. + if the version property needs to be seeded with an initial value. + + + + Gets the value of the version. + + An array of objects that contains a snapshot of a persistent object. + The index of the version property in the fields parameter. + The of the versioned property. + The value of the version. + + + + Sets the value of the version. + + An array of objects that contains a snapshot of a persistent object. + The value the version should be set to in the fields parameter. + The index of the version property in the fields parameter. + The of the versioned property. + + + + Set the version number of the given instance state snapshot + + An array of objects that contains a snapshot of a persistent object. + The value the version should be set to in the fields parameter. + The that is responsible for persisting the values of the fields parameter. + + + + Get the version number of the given instance state snapshot + + An array of objects that contains a snapshot of a persistent object. + The that is responsible for persisting the values of the fields parameter. + + The value of the version contained in the fields parameter or null if the + Entity is not versioned. + + + + + Do we need to increment the version number, given the dirty properties? + + + + + Converts the given SQLException into NHibernate's ADOException hierarchy, as well as performing + appropriate logging. + + + The exception to convert. + An optional error message. + The converted ADOException. + + + + Base class for implementations. + + + + + An object-oriented representation of a query criterion that may be used as a constraint + in a query. + + + Built-in criterion types are provided by the Expression factory class. + This interface might be implemented by application classes but, more commonly, application + criterion types would extend AbstractCriterion. + + + + + Render a SqlString fragment for the expression. + + A SqlString that contains a valid Sql fragment. + + + + Return typed values for all parameters in the rendered SQL fragment + + An array of TypedValues for the Expression. + + + + Gets a string representation of the . + + + A String that shows the contents of the . + + + This is not a well formed Sql fragment. It is useful for logging what the + looks like. + + + + + Render a SqlString for the expression. + + A SqlString that contains a valid Sql fragment. + + + + Return typed values for all parameters in the rendered SQL fragment + + An array of TypedValues for the Expression. + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + An Aggregation + + + + + A single-column projection that may be aliased + + + + + Render the SQL Fragment. + + + + + + + + + Render the SQL Fragment to be used in the Group By Clause. + + + + + + + + Return types for a particular user-visible alias + + + + + + + + + + + + + + + + + Get the SQL select clause column aliases for a particular user-visible alias + + + + + + + Get the SQL select clause column aliases for a particular user-visible alias + + + + + + + + Get the user-visible aliases for this projection (ie. the ones that will be passed to the ResultTransformer) + + + + + Does this projection specify grouping attributes? + + + + + An that combines two s + with an and between them. + + + + + An that combines two s + with a operator (either "and" or "or") between them. + + + + + Initialize a new instance of the class that + combines two other s. + + The to use in the Left Hand Side. + The to use in the Right Hand Side. + + + + Combines the for the Left Hand Side and the + Right Hand Side of the Expression into one array. + + An arry of s. + + + + Converts the LogicalExpression to a . + + A well formed SqlString for the Where clause. + The SqlString will be enclosed by ( and ). + + + + Gets a string representation of the LogicalExpression. + + + The String contains the LeftHandSide.ToString() and the RightHandSide.ToString() + joined by the Op. + + + This is not a well formed Sql fragment. It is useful for logging what Expressions + are being combined. + + + + + Gets the that will be on the Left Hand Side of the Op. + + + + + Gets the that will be on the Right Hand Side of the Op. + + + + + Get the Sql operator to put between the two s. + + + + + Initializes a new instance of the class + that combines two . + + The to use as the left hand side. + The to use as the right hand side. + + + + Get the Sql operator to put between the two s. + + The string "and" + + + + An that represents a "between" constraint. + + + + + Initialize a new instance of the class for + the named Property. + + The name of the Property of the Class. + The low value for the BetweenExpression. + The high value for the BetweenExpression. + + + + + + + An that Junctions together multiple + s with an and + + + + + A sequence of logical s combined by some associative + logical operator. + + + + + Adds an to the list of s + to junction together. + + The to add. + + This instance. + + + + + Get the Sql operator to put between multiple s. + + + + + The corresponding to an instance with no added + subcriteria. + + + + + Get the Sql operator to put between multiple s. + + The string " and " + + + + A Count + + + + + Some applications need to create criteria queries in "detached + mode", where the Hibernate session is not available. This class + may be instantiated anywhere, and then a ICriteria + may be obtained by passing a session to + GetExecutableCriteria(). All methods have the + same semantics and behavior as the corresponding methods of the + ICriteria interface. + + + + + Get an executable instance of Criteria, + to actually run the query. + + + + An that Junctions together multiple + s with an or + + + + + Get the Sql operator to put between multiple s. + + The string " or " + + + + An that represents an "equal" constraint. + + + + + The base class for an that compares a single Property + to a value. + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + Converts the SimpleExpression to a . + + A SqlString that contains a valid Sql fragment. + + + + + + + Gets the named Property for the Expression. + + A string that is the name of the Property. + + + + Gets the Value for the Expression. + + An object that is the value for the Expression. + + + + Get the Sql operator to use for the specific + subclass of . + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + Use case-insensitive comparison + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + Get the Sql operator to use for the . + + The string " = " + + + + An that represents an "equal" constraint + between two properties. + + + + + Superclass for an that represents a + constraint between two properties (with SQL binary operators). + + + + + Initialize a new instance of the class + that compares two mapped properties. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + + + + Get the Sql operator to use for the property expression. + + + + + Initializes a new instance of the class + that compares two mapped properties using an "equal" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " = " + + + + Support for Query By Example. + + + + + Set the for this . + + The to determine which properties to include. + This instance. + + This should be used when a custom has + been implemented. Otherwise use the methods + or to set the + to the s built into NHibernate. + + + + + Set the for this + to exclude zero-valued properties. + + + + + Set the for this + to exclude no properties. + + + + + Use the "like" operator for all string-valued properties with + the specified . + + + The to convert the string to the pattern + for the like comparison. + + + + + Use the "like" operator for all string-valued properties. + + + The default is MatchMode.Exact. + + + + + Exclude a particular named property + + The name of the property to exclude. + + + + Create a new instance, which includes all non-null properties + by default + + + A new instance of . + + + + Initialize a new instance of the class for a particular + entity. + + The that the Example is being built from. + The the Example should use. + + + + Determines if the property should be included in the Query. + + The value of the property. + The name of the property. + The of the property. + + if the Property should be included, if + the Property should not be a part of the Query. + + + + + Adds a based on the value + and type parameters to the in the + list parameter. + + The value of the Property. + The of the Property. + The to add the to. + + This method will add objects to the list parameter. + + + + + A strategy for choosing property values for inclusion in the query criteria + + + + + Determine if the Property should be included. + + The value of the property that is being checked for inclusion. + The name of the property that is being checked for inclusion. + The of the property. + + if the Property should be included in the Query, + otherwise. + + + + + Implementation of that includes all + properties regardless of value. + + + + + Implementation of that includes the + properties that are not and do not have an + returned by propertyValue.ToString(). + + + This selector is not present in H2.1. It may be useful if nullable types + are used for some properties. + + + + + The Expression namespace may be used by applications as a framework for building + new kinds of . However, it is intended that most applications will + simply use the built-in criterion types via the static factory methods of this class. + + + + + Apply an "equal" constraint to the identifier property + + + ICriterion + + + + Apply an "equal" constraint to the named property + + The name of the Property in the class. + The value for the Property. + An . + + + + Apply a "like" constraint to the named property + + The name of the Property in the class. + The value for the Property. + A . + + + + A case-insensitive "like", similar to Postgres "ilike" operator + + The name of the Property in the class. + The value for the Property. + An . + + + + Apply a "greater than" constraint to the named property + + The name of the Property in the class. + The value for the Property. + A . + + + + Apply a "less than" constraint to the named property + + The name of the Property in the class. + The value for the Property. + A . + + + + Apply a "less than or equal" constraint to the named property + + The name of the Property in the class. + The value for the Property. + A . + + + + Apply a "greater than or equal" constraint to the named property + + The name of the Property in the class. + The value for the Property. + A . + + + + Apply a "between" constraint to the named property + + The name of the Property in the class. + The low value for the Property. + The high value for the Property. + A . + + + + Apply an "in" constraint to the named property + + The name of the Property in the class. + An array of values. + An . + + + + Apply an "in" constraint to the named property + + The name of the Property in the class. + An ICollection of values. + An . + + + + Apply an "in" constraint to the named property. This is the generic equivalent + of , renamed to avoid ambiguity. + + The name of the Property in the class. + An + of values. + An . + + + + Apply an "is null" constraint to the named property + + The name of the Property in the class. + A . + + + + Apply an "equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply an "not equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "greater than" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "greater than or equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "less than" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "less than or equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply an "is not null" constraint to the named property + + The name of the Property in the class. + A . + + + + Apply an "is not empty" constraint to the named property + + The name of the Property in the class. + A . + + + + Apply an "is not empty" constraint to the named property + + The name of the Property in the class. + A . + + + + Return the conjuction of two expressions + + The Expression to use as the Left Hand Side. + The Expression to use as the Right Hand Side. + An . + + + + Return the disjuction of two expressions + + The Expression to use as the Left Hand Side. + The Expression to use as the Right Hand Side. + An . + + + + Return the negation of an expression + + The Expression to negate. + A . + + + + Apply a constraint expressed in SQL, with the given SQL parameters + + + + + + + + + Apply a constraint expressed in SQL, with the given SQL parameter + + + + + + + + + Apply a constraint expressed in SQL, with the given SQL parameter + + + + + Apply a constraint expressed in SQL + + + + + + + Apply a constraint expressed in SQL + + + + + + + Group expressions together in a single conjunction (A and B and C...) + + + + + Group expressions together in a single disjunction (A or B or C...) + + + + + Apply an "equals" constraint to each property in the key set of a IDictionary + + a dictionary from property names to values + + + + + An that represents an "greater than or equal" constraint. + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + Get the Sql operator to use for the . + + The string " >= " + + + + An that represents an "greater than or equal" constraint + between two properties. + + + + + Initializes a new instance of the class + that compares two mapped properties using an "greater than or equal" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " < " + + + + An that represents an "greater than" constraint. + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + Get the Sql operator to use for the . + + The string " > " + + + + An that represents an "greater than" constraint + between two properties. + + + + + Initializes a new instance of the class + that compares two mapped properties using an "greater than" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " < " + + + + An identifier constraint + + + + + An that constrains the property + to a specified list of values. + + + InExpression - should only be used with a Single Value column - no multicolumn properties... + + + + + + + + + + + + + + + An that represents an "like" constraint + that is not case sensitive. + + + + + Initialize a new instance of the + class for a named Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + + + + An that represents empty association constraint. + + + + + An that represents non-empty association constraint. + + + + + An that represents an "less than or equal" constraint. + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + Get the Sql operator to use for the . + + The string " <= " + + + + An that represents an "less than or equal" constraint + between two properties. + + + + + Initializes a new instance of the class + that compares two mapped properties using an "less than or equal" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " <= " + + + + An that represents an "like" constraint. + + + The case sensitivity depends on the database settings for string + comparisons. Use if the + string comparison should not be case sensitive. + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + Get the Sql operator to use for the . + + The string " like " + + + + An that represents an "less than" constraint. + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + Get the Sql operator to use for the . + + The string " < " + + + + An that represents an "less than" constraint + between two properties. + + + + + Initializes a new instance of the class + that compares two mapped properties using an "less than" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " < " + + + + Represents an strategy for matching strings using "like". + + + + + Initialize a new instance of the class. + + The code that identifies the match mode. + The friendly name of the match mode. + + The parameter intCode is used as the key of + to store instances and to ensure only instance of a particular + is created. + + + + + The string representation of the . + + The friendly name used to describe the . + + + + Convert the pattern, by appending/prepending "%" + + The string to convert to the appropriate match pattern. + + A that contains a "%" in the appropriate place + for the Match Strategy. + + + + + Match the entire string to the pattern + + + + + Match the start of the string to the pattern + + + + + Match the end of the string to the pattern + + + + + Match the pattern anywhere in the string + + + + + The that matches the entire string to the pattern. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the Exact MatchMode. + + The string to convert to the appropriate match pattern. + The pattern exactly the same as it was passed in. + + + + The that matches the start of the string to the pattern. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the Start MatchMode. + + The string to convert to the appropriate match pattern. + The pattern with a "%" appended at the end. + + + + The that matches the end of the string to the pattern. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the End MatchMode. + + The string to convert to the appropriate match pattern. + The pattern with a "%" appended at the beginning. + + + + The that exactly matches the string + by appending "%" to the beginning and end. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the Exact MatchMode. + + The string to convert to the appropriate match pattern. + The pattern with a "%" appended at the beginning and the end. + + + + An that negates another . + + + + + Initialize a new instance of the class for an + + + The to negate. + + + + An that represents "not null" constraint. + + + + + Initialize a new instance of the class for a named + Property that should not be null. + + The name of the Property in the class. + + + + An that represents "null" constraint. + + + + + Initialize a new instance of the class for a named + Property that should be null. + + The name of the Property in the class. + + + + + + + Represents an order imposed upon a + result set. + + + + + Constructor for Order. + + + + + + + Render the SQL fragment + + + + + Ascending order + + + + + + + Descending order + + + + + + + An that combines two s with an + "or" between them. + + + + + Initialize a new instance of the class for + two s. + + The to use as the left hand side. + The to use as the right hand side. + + + + Get the Sql operator to put between the two s. + + Returns "or" + + + + The criterion package may be used by applications as a framework for building + new kinds of Projection. However, it is intended that most applications will + simply use the built-in projection types via the static factory methods of this class.
+
+ The factory methods that take an alias allow the projected value to be referred to by + criterion and order instances. +
+
+ + + Create a distinct projection from a projection + + + + + + + Create a new projection list + + + + + + The query row count, ie. count(*) + + + + + + A property value count + + + + + + + A distinct property value count + + + + + + + A property maximum value + + + + + + + A property minimum value + + + + + + + A property average value + + + + + + + A property value sum + + + + + + + A SQL projection, a typed select clause fragment + + + + + + + + + A grouping SQL projection, specifying both select clause and group by clause fragments + + + + + + + + + + A grouping property value + + + + + + + A projected property value + + + + + + + A projected identifier value + + + + + + Assign an alias to a projection, by wrapping it + + + + + + + + A factory for property-specific AbstractCriterion and projection instances + + + + + A property value, or grouped property value + + + + + Get a component attribute of this property + + + + + A comparison between a property value in the outer query and the + result of a subquery + + + + + A comparison between a constant value and the the result of a subquery + + + + + An that creates a SQLExpression. + The string {alias} will be replaced by the alias of the root entity. + + + This allows for database specific Expressions at the cost of needing to + write a correct . + + + + + + + + A SQL fragment. The string {alias} will be replaced by the alias of the root entity. + + + + + Factory class for AbstractCriterion instances that represent + involving subqueries. + Expression + Projection + AbstractCriterion + + + + + Generates translators which uses the older hand-written parser to perform the translation. + + + + + Facade for generation of + and instances. + + + + + Construct a instance + capable of translating an HQL query string. + + The query string to be translated + Currently enabled filters + The session factory + An appropriate translator. + + + + Construct a instance capable of + translating an HQL filter string. + + The query string to be translated + Currently enabled filters + The session factory + An appropriate translator. + + + + Parses the hibernate query into its constituent clauses. + + + + + A parser is a state machine that accepts a string of tokens, + bounded by start() and end() and modifies a QueryTranslator. Parsers + are NOT intended to be threadsafe. They SHOULD be reuseable + for more than one token stream. + + + + + + + + + + + + + + + + + + + + + + + + Parses the from clause of a hibernate query, looking for tables and + aliases for the SQL query. + + + + + + + + FromPathExpressionParser + + + + + Parses an expression of the form foo.bar.baz and builds up an expression + involving two less table joins than there are path components. + + + + + + + + + + NOTE: we avoid joining to the next table if the named property is just the foreign key value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parses the GROUP BY clause of an aggregate query + + + + + + + + Parses the having clause of a hibernate query and translates it to an + SQL having clause. + + + + Parses the where clause of a hibernate query and translates it to an + SQL where clause. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parses the ORDER BY clause of a query + + + + + + + + + + + + + + HQL lexical analyzer (not really a parser) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An instance of QueryTranslator translates a Hibernate query string to SQL. + + + + + Abstract superclass of object loading (and querying) strategies. + + +

+ This class implements useful common functionality that concrete loaders would delegate to. + It is not intended that this functionality would be directly accessed by client code (Hence, + all methods of this class are declared protected or private.) This class relies heavily upon the + interface, which is the contract between this class and + s that may be loaded by it. +

+

+ The present implementation is able to load any number of columns of entities and at most + one collection role per query. +

+
+
+ + + What lock mode does this load entities with? + + A Collection of lock modes specified dynamically via the Query Interface + + + + + Append FOR UPDATE OF clause, if necessary. This + empty superclass implementation merely returns its first + argument. + + + + + Does this query return objects that might be already cached by + the session, whose lock mode may need upgrading. + + + + + + Modify the SQL, adding lock hints and comments, if necessary + + + + + Execute an SQL query and attempt to instantiate instances of the class mapped by the given + persister from each row of the DataReader. If an object is supplied, will attempt to + initialize that object. If a collection is supplied, attempt to initialize that collection. + + + + + Loads a single row from the result set. This is the processing used from the + ScrollableResults where no collection fetches were encountered. + + The result set from which to do the load. + The session from which the request originated. + The query parameters specified by the user. + Should proxies be generated + The loaded "row". + + + + + Read any collection elements contained in a single row of the result set + + + + + Get the actual object that is returned in the user-visible result list. + + + This empty implementation merely returns its first argument. This is + overridden by some subclasses. + + + + + For missing objects associated by one-to-one with another object in the + result set, register the fact that the the object is missing with the + session. + + + + + Read one collection element from the current row of the ADO.NET result set + + + + + If this is a collection initializer, we need to tell the session that a collection + is being initilized, to account for the possibility of the collection having + no elements (hence no rows in the result set). + + + + + Read a row of EntityKeys from the IDataReader into the given array. + + + Warning: this method is side-effecty. If an id is given, don't bother going + to the IDataReader + + + + + + + + + + + Check the version of the object in the IDataReader against + the object version in the session cache, throwing an exception + if the vesrion numbers are different. + + + + + + + + + + + + Resolve any ids for currently loaded objects, duplications within the IDataReader, + etc. Instanciate empty objects to be initialized from the IDataReader. Return an + array of objects (a row of results) and an array of booleans (by side-effect) that determine + wheter the corresponding object should be initialized + + + + + The entity instance is already in the session cache + + + + + The entity instance is not in the session cache + + + + + Hydrate the state of an object from the SQL IDataReader, into + an array of "hydrated" values (do not resolve associations yet), + and pass the hydrated state to the session. + + + + + Determine the concrete class of an instance for the IDataReader + + + + + Unmarshall the fields of a persistent instance from a result set, + without resolving associations or collections + + + + + + + + + + + + Advance the cursor to the first required row of the IDataReader + + + + + + + Should we pre-process the SQL string, adding a dialect-specific + LIMIT clause. + + + + + + + + Bind positional parameter values to the IDbCommand + (these are parameters specified by ?). + + + + + + + + + + Obtain an IDbCommand with all parameters pre-bound. Bind positional parameters, + named parameters, and limit parameters. + + + Creates an IDbCommand object and populates it with the values necessary to execute it against the + database to Load an Entity. + + The to use for the IDbCommand. + TODO: find out where this is used... + The SessionImpl this Command is being prepared in. + A CommandWrapper wrapping an IDbCommand that is ready to be executed. + + + + Some dialect-specific LIMIT clauses require the maximum last row number, + others require the maximum returned row count. + + + + + Bind parameters needed by the dialect-specific LIMIT clause + + The number of parameters bound + + + + Limits the number of rows returned by the Sql query if necessary. + + The IDbCommand to limit. + The RowSelection that contains the MaxResults info. + TODO: This does not apply to ADO.NET at all + + + + Fetch a IDbCommand, call SetMaxRows and then execute it, + advance to the first result and return an SQL IDataReader + + The to execute. + The to apply to the and . + The to load in. + An IDataReader advanced to the first record in RowSelection. + + + + Bind named parameters to the IDbCommand + + The that contains the parameters. + The named parameters (key) and the values to set. + The this Loader is using. + + + + + Called by subclasses that load entities + + + + + Called by subclasses that batch load entities + + + + + Called by subclasses that load collections + + + + + Called by wrappers that batch initialize collections + + + + + Called by subclasses that batch initialize collections + + + + + Return the query results, using the query cache, called + by subclasses that implement cacheable queries + + + + + + + + + + Actually execute a query, ignoring the query cache + + + + + + + + Calculate and cache select-clause suffixes. Must be + called by subclasses after instantiation. + + + + of + + + + The SqlString to be called; implemented by all subclasses + + + + The setter was added so that class inheriting from Loader could write a + value using the Property instead of directly to the field. + + + The scope is protected internal because the needs to + be able to get the SqlString of the when + it is parsing a subquery. + + + + + + An array of persisters of entity classes contained in each row of results; + implemented by all subclasses + + + The setter was added so that classes inheriting from Loader could write a + value using the Property instead of directly to the field. + + + + + An array of indexes of the entity that owns a one-to-one association + to the entity at the given index (-1 if there is no "owner") + + + + + An (optional) persister for a collection to be initialized; only collection loaders + return a non-null value + + + + + Get the index of the entity that owns the collection, or -1 + if there is no owner in the query results (i.e. in the case of a + collection initializer) or no collection. + + + + + Return false is this loader is a batch entity loader + + + + + Get the SQL table aliases of entities whose + associations are subselect-loadable, returning + null if this loader does not support subselect + loading + + + + + Get the result set descriptor + + + + + Utility method that generates 0_, 1_ suffixes. Subclasses don't + necessarily need to use this algorithm, but it is intended that + they will in most cases. + + + + + Specialized interface for filters. + + + + + Defines the constract of an HQL->SQL translator. + + + + + Compile a "normal" query. This method may be called multiple times. Subsequent invocations are no-ops. + + Defined query substitutions. + Does this represent a shallow (scalar or entity-id) select? + There was a problem parsing the query string. + There was a problem querying defined mappings. + + + + Perform a list operation given the underlying query definition. + + The session owning this query. + The query bind parameters. + The query list results. + + + + + Perform a bulk update/delete operation given the underlying query defintion. + + The query bind parameters. + The session owning this query. + The number of entities updated or deleted. + + + + + Returns the column names in the generated SQL. + + the column names in the generated SQL. + + + + Information about any parameters encountered during translation. + + + + + The set of query spaces (table names) that the query referrs to. + + + + + The SQL string generated by the translator. + + + + + The HQL string processed by the translator. + + + + + Returns the filters enabled for this query translator. + + Filters enabled for this query execution. + + + + Returns an array of Types represented in the query result. + + Query return types. + + + + Returns an array of HQL aliases + + Returns an array of HQL aliases + + + + Does the translated query contain collection fetches? + + True if the query does contain collection fetched; false otherwise. + + + + Compile a filter. This method may be called multiple + times. Subsequent invocations are no-ops. + + the role name of the collection used as the basis for the filter. + Defined query substitutions. + Does this represent a shallow (scalar or entity-id) select? + + + + Construct a query translator + + + + + Compile a subquery + + + + + + Compile a "normal" query. This method may be called multiple + times. Subsequent invocations are no-ops. + + + + + Compile a filter. This method may be called multiple + times. Subsequent invocations are no-ops. + + + + + Compile the query (generate the SQL). + + + + + WARNING: side-effecty + + + + Used for collection filters + + + + + + + Persisters for the return values of a Find style query + + + The Persisters stored by QueryTranslator have to be . The + setter will attempt to cast the ILoadable array passed in into an + IQueryable array. + + + + + Types of the return values of an Enumerate() style query. + Return an array of s. + + + + + + + + Is this query called by Scroll() or Iterate()? + + true if it is, false if it is called by find() or list() + + + + + + + + + + Parsers the select clause of a hibernate query, looking + for a table (well, really class) alias. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wraps SessionFactoryImpl, adding more lookup behaviors and encapsulating some of the error handling. + + + + + Provides utility methods for generating HQL / SQL names. + Shared by both the 'classic' and 'new' query translators. + + + + + A problem occurred translating a Hibernate query to SQL due to invalid query syntax, etc. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + The query that contains the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets or sets the of HQL that caused the Exception. + + + + + Gets a message that describes the current . + + The error message that explains the reason for this exception including the HQL. + + + + Handle Hibernate "implicit" polymorphism, by translating the query string into + several "concrete" queries against mapped classes. + + + + + + + + + An that returns the current identifier + assigned to an instance. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="assigned" /> +

+
+
+ + + The general contract between a class that generates unique + identifiers and the . + + + + It is not intended that this interface ever be exposed to the + application. It is intended that users implement this interface + to provide custom identifier generation strategies. + + + Implementors should provide a public default constructor. + + + Implementations that accept configuration parameters should also + implement . + + + Implementors must be threadsafe. + + + + + + Generate a new identifier + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier + + + + + + + Generates a new identifier by getting the value of the identifier + for the obj parameter. + + The this id is being generated in. + The entity for which the id is being generated. + The value that was assigned to the mapped id's property. + + Thrown when a is passed in as the obj or + if the identifier of obj is null. + + + + + An that returns a Int64 constructed from the system + time and a counter value. Not safe for use in a clustser! + + + + + An that uses the value of + the id property of an associated object + + + + This id generation strategy is specified in the mapping file as + + <generator class="foreign"> + <param name="property">AssociatedObject</param> + </generator> + + + The mapping parameter property is required. + + + + + An IdentiferGenerator that supports "configuration". + + + + + Configure this instance, given the values of parameters + specified by the user as <param> elements. + This method is called just once, followed by instantiation. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generates an identifer from the value of a Property. + + The this id is being generated in. + The entity for which the id is being generated. + + The identifier value from the associated object or + if the session + already contains obj. + + + + + Configures the ForeignGenerator by reading the value of property + from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + Thrown if the key property is not found in the parms parameter. + + + + + An that generates values + using a strategy suggested Jimmy Nilsson's + article + on informit.com. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="guid.comb" /> +

+

+ The comb algorithm is designed to make the use of GUIDs as Primary Keys, Foreign Keys, + and Indexes nearly as efficient as ints. +

+

+ This code was contributed by Donald Mull. +

+
+
+ + + Generate a new using the comb algorithm. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Generate a new using the comb algorithm. + + + + + An that generates values + using Guid.NewGuid(). + + +

+ This id generation strategy is specified in the mapping file as + <generator class="guid" /> +

+
+
+ + + Generate a new for the identifier. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Thrown by implementation class when ID generation fails + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Factory methods for IdentifierGenerator framework. + + +

The built in strategies for identifier generation in NHibernate are:

+ + + strategy + Implementation of strategy + + + assigned + + + + counter + + + + foreign + + + + guid + + + + guid.comb + + + + hilo + + + + identity + + + + native + + Chooses between , + , and based on the + 's capabilities. + + + + seqhilo + + + + sequence + + + + uuid.hex + + + + uuid.string + + + +
+
+ + + Gets the value of the identifier from the and + ensures it is the correct . + + The to read the identifier value from. + The the value should be converted to. + The the value is retrieved in. + + The value for the identifier. + + + Thrown if there is any problem getting the value from the + or with converting it to the . + + + + + An where the key is the strategy and + the value is the for the strategy. + + + + + When this is returned by Generate() it indicates that the object + has already been saved. + + + String.Empty + + + + + When this is return + + + + + Initializes the static fields in . + + + + + Creates an from the named strategy. + + + The name of the generator to create. This can be one of the NHibernate abbreviations (ie - native, + sequence, guid.comb, etc...), a full class name if the Type is in the NHibernate assembly, or + a full type name if the strategy is in an external assembly. + + The that the retured identifier should be. + An of <param> values from the mapping. + The to help with Configuration. + + An instantiated and configured . + + + Thrown if there are any exceptions while creating the . + + + + + Create the correct boxed for the identifier. + + The value of the new identifier. + The the identifier should be. + + The identifier value converted to the . + + + The type parameter must be an , , + or . + + + + + An that indicates to the that identity + (ie. identity/autoincrement column) key generation should be used. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="identity" /> + or if the database natively supports identity columns + <generator class="native" /> +

+

+ This indicates to NHibernate that the database generates the id when + the entity is inserted. +

+
+
+ + + The IdentityGenerator for autoincrement/identity key generation. + + + The this id is being generated in. + The entity the id is being generated for. + + IdentityColumnIndicator Indicates to the Session that identity (i.e. identity/autoincrement column) + key generation should be used. + + + + + An IIdentifierGenerator that returns a Int64, constructed by + counting from the maximum primary key value at startup. Not safe for use in a + cluster! + + + + java author Gavin King, .NET port Mark Holden + + + Mapping parameters supported, but not usually needed: table, column. + + + + + + An that requires creation of database objects + All s that also implement + An have access to a special mapping parameter: schema + + + + + The SQL required to create the underlying database objects + + The to help with creating the sql. + + An array of objects that contain the sql to create the + necessary database objects. + + + + + The SQL required to remove the underlying database objects + + The to help with creating the sql. + + A that will drop the database objects. + + + + + Return a key unique to the underlying database objects. + + + A key unique to the underlying database objects. + + + Prevents us from trying to create/remove them multiple times + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An that generates Int64 values using an + oracle-style sequence. A higher performance algorithm is + . + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="sequence"> + <param name="sequence">uid_sequence</param> + <param name="schema">db_schema</param> + </generator> + +

+

+ The sequence parameter is required while the schema is optional. +

+
+
+ + + The name of the sequence parameter. + + + + + The name of the schema parameter. + + + + + Configures the SequenceGenerator by reading the value of sequence and + schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate an , , or + for the identifier by using a database sequence. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a , , or . + + + + The SQL required to create the database objects for a SequenceGenerator. + + The to help with creating the sql. + + An array of objects that contain the Dialect specific sql to + create the necessary database objects for the SequenceGenerator. + + + + + The SQL required to remove the underlying database objects for a SequenceGenerator. + + The to help with creating the sql. + + A that will drop the database objects for the SequenceGenerator. + + + + + Return a key unique to the underlying database objects for a SequenceGenerator. + + + The configured sequence name. + + + + + An that combines a hi/lo algorithm with an underlying + oracle-style sequence that generates hi values. + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="seqhilo"> + <param name="sequence">uid_sequence</param> + <param name="max_lo">max_lo_value</param> + <param name="schema">db_schema</param> + </generator> + +

+

+ The sequence parameter is required, the max_lo and schema are optional. +

+

+ The user may specify a max_lo value to determine how often new hi values are + fetched. If sequences are not avaliable, TableHiLoGenerator might be an + alternative. +

+
+
+ + + The name of the maximum low value parameter. + + + + + Configures the SequenceHiLoGenerator by reading the value of sequence, max_lo, + and schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate an , , or + for the identifier by using a database sequence. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a , , or . + + + + An that uses a database table to store the last + generated value. + + +

+ It is not intended that applications use this strategy directly. However, + it may be used to build other (efficient) strategies. The return type is + System.Int32 +

+

+ The hi value MUST be fetched in a seperate transaction to the ISession + transaction so the generator must be able to obtain a new connection and commit it. + Hence this implementation may not be used when the user is supplying connections. +

+

+ The mapping parameters table and column are required. +

+
+
+ + + The name of the column parameter. + + + + + The name of the table parameter. + + + + + The name of the schema parameter. + + + + + Configures the TableGenerator by reading the value of table, + column, and schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate a , , or + for the identifier by selecting and updating a value in a table. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a , , or . + + + + The SQL required to create the database objects for a TableGenerator. + + The to help with creating the sql. + + An array of objects that contain the Dialect specific sql to + create the necessary database objects and to create the first value as 1 + for the TableGenerator. + + + + + The SQL required to remove the underlying database objects for a TableGenerator. + + The to help with creating the sql. + + A that will drop the database objects for the TableGenerator. + + + + + Return a key unique to the underlying database objects for a TableGenerator. + + + The configured table name. + + + + + An that returns an Int64, constructed using + a hi/lo algorithm. + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="hilo"> + <param name="table">table</param> + <param name="column">id_column</param> + <param name="max_lo">max_lo_value</param> + <param name="schema">db_schema</param> + </generator> + +

+

+ The table and column parameters are required, the max_lo and + schema are optional. +

+

+ The hi value MUST be fecthed in a seperate transaction to the ISession + transaction so the generator must be able to obtain a new connection and + commit it. Hence this implementation may not be used when the user is supplying + connections. In that case a would be a + better choice (where supported). +

+
+
+ + + The name of the max lo parameter. + + + + + Configures the TableHiLoGenerator by reading the value of table, + column, max_lo, and schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate a , , or + for the identifier by selecting and updating a value in a table. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a , , or . + + + + An that returns a string of length + 32, 36, or 38 depending on the configuration. + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="uuid.hex"> + <param name="format">format_string</param> + <param name="seperator">seperator_string</param> + </generator> + +

+

+ The format and seperator parameters are optional. +

+

+ The identifier string will consist of only hex digits. Optionally, the identifier string + may be generated with enclosing characters and seperators between each component + of the UUID. If there are seperators then the string length will be 36. If a format + that has enclosing brackets is used, then the string length will be 38. +

+

+ format is either + "N" (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx), + "D" (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), + "B" ({xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}), + or "P" ((xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)). These formats are described in + the Guid.ToString(String) method. + If no format is specified the default is "N". +

+

+ seperator is the char that will replace the "-" if specified. If no value is + configured then the default seperator for the format will be used. If the format "D", "B", or + "P" is specified, then the seperator will replace the "-". If the format is "N" then this + parameter will be ignored. +

+

+ This class is based on +

+
+
+ + + Generate a new for the identifier using the "uuid.hex" algorithm. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Configures the UUIDHexGenerator by reading the value of format and + seperator from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + An that returns a string of length + 16. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="uuid.string" /> +

+ + The identifier string will NOT consist of only alphanumeric characters. Use + this only if you don't mind unreadable identifiers. + + + This impelementation was known to be incompatible with Postgres. + +
+
+ + + Generate a new for the identifier using the "uuid.string" algorithm. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Abstract implementation of the IQuery interface. + + + + + An object-oriented representation of a NHibernate query. + + + An IQuery instance is obtained by calling ISession.CreateQuery(). This interface + exposes some extra functionality beyond that provided by ISession.Iterate() and + ISession.Find(); + + + A particulare page of the result set may be selected by calling + SetMaxResults(), SetFirstResult(). The generated sql + depends on the capabilities of the . Some + Dialects are for databases that have built in paging (LIMIT) and those capabilities + will be used to limit the number of records returned by the sql statement. + If the database does not support LIMITs then all of the records will be returned, + but the objects created will be limited to the specific results requested. + + Named query parameters may be used + + + Named query parameters are tokens of the form :name in the query string. A value is bound + to the Int32 parameter :foo by calling + + SetParameter("foo", foo, NHibernateUtil.Int32); + + for example. A name may appear multiple times in the query string. + + + Unnamed parameters ? are also supported. To bind a value to an unnamed + parameter use a Set method that accepts an Int32 positional argument - numbered from + zero. + + + You may not mix and match unnamed parameters and named parameters in the same query. + + + Queries are executed by calling List() or Iterate(). A query + may be re-executed by subsequent invocations. Its lifespan is, however, bounded by the lifespan + of the ISession that created it. + + + Implementors are not intended to be threadsafe. + + + + + + Return the query results as an . If the query contains multiple results + per row, the results are returned in an instance of object[]. + + +

+ Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. +

+

+ This is a good strategy to use if you expect a high number of the objects + returned to be already loaded in the or in the 2nd level cache. +

+
+
+ + + Strongly-typed version of . + + + + + + + Return the query results as an . If the query contains multiple results per row, + the results are returned in an instance of object[]. + + The filled with the results. + + This is a good strategy to use if you expect few of the objects being returned are already loaded + or if you want to fill the 2nd level cache. + + + + + Return the query results an place them into the . + + The to place the results in. + + + + Strongly-typed version of . + + + + + Convenience method to return a single instance that matches + the query, or null if the query returns no results. + + the single result or + + Thrown when there is more than one matching result. + + + + + Strongly-typed version of . + + + + + Set the maximum number of rows to retrieve. + + The maximum number of rows to retreive. + + + + Sets the first row to retrieve. + + The first row to retreive. + + + + Enable caching of this query result set. + + Should the query results be cacheable? + + + Set the name of the cache region. + The name of a query cache region, or + for the default query cache + + + Should the query force a refresh of the specified query cache region? + This is particularly useful in cases where underlying data may have been + updated via a seperate process (i.e., not modified through Hibernate) and + allows the application to selectively refresh the query cache regions + based on its knowledge of those events. + Should the query result in a forceable refresh of + the query cache? + + + + The timeout for the underlying ADO query + + + + + + Set the lockmode for the objects idententified by the + given alias that appears in the FROM clause. + + alias a query alias, or this for a collection filter + + + + + Bind a value to an indexed parameter. + + Postion of the parameter in the query, numbered from 0 + The possibly null parameter value + The Hibernate type + + + + Bind a value to a named query parameter + + The name of the parameter + The possibly null parameter value + The NHibernate . + + + + Bind a value to an indexed parameter, guessing the Hibernate type from + the class of the given object. + + The position of the parameter in the query, numbered from 0 + The non-null parameter value + + + + Bind a value to a named query parameter, guessing the NHibernate + from the class of the given object. + + The name of the parameter + The non-null parameter value + + + + Bind multiple values to a named query parameter. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + The Hibernate type of the values + + + + Bind multiple values to a named query parameter, guessing the Hibernate + type from the class of the first object in the collection. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + + + + Bind the property values of the given object to named parameters of the query, + matching property names with parameter names and mapping property types to + Hibernate types using heuristics. + + Any PONO + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a array to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a array. + + + + Bind an instance of a array to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a array. + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + A non-null instance of a . + The name of the parameter + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a mapped persistent class to an indexed parameter. + + Position of the parameter in the query string, numbered from 0 + A non-null instance of a persistent class + + + + Bind an instance of a mapped persistent class to a named parameter. + + The name of the parameter + A non-null instance of a persistent class + + + + Bind an instance of a persistent enumeration class to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a persistent enumeration + + + + Bind an instance of a persistent enumeration class to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a persistent enumeration + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + An instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + An instance of a . + + + + Override the current session flush mode, just for this query. + + + + + Set a strategy for handling the query results. This can be used to change + "shape" of the query result. + + + + + The query string + + + + + The Hibernate types of the query result set. + + + + + The names of all named parameters of the query + + The parameter names, in no particular order + + + + Guesses the from the param's value. + + The object to guess the of. + An for the object. + + Thrown when the param is null because the + can't be guess from a null value. + + + + + Guesses the from the . + + The to guess the of. + An for the . + + Thrown when the clazz is null because the + can't be guess from a null type. + + + + + Abstract superclass of algorithms that walk a tree of property values + of an entity, and perform specific functionality for collections, + components and associated entities. + + + + + Dispatch each property value to . + + + + + + + Visit a property value. Dispatch to the correct handler + for the property type. + + + + + + + + Walk the tree starting from the given entity. + + + + + + + Visit a collection. Default superclass implementation is a no-op. + + + + + + + + Visit a many-to-one or one-to-one associated entity. Default + superclass implementation is a no-op. + + + + + + + + Manages prepared statements and batching. Class exists to enforce separation of concerns + + + + + Initializes a new instance of the class. + + The owning this batcher. + + + + Prepares the for execution in the database. + + + This takes care of hooking the up to an + and if one exists. It will call Prepare if the Driver + supports preparing commands. + + + + + Ensures that the Driver's rules for Multiple Open DataReaders are being followed. + + + + + + + + + + + + + + Adds the expected row count into the batch. + + The number of rows expected to be affected by the query. + + If Batching is not supported, then this is when the Command should be executed. If Batching + is supported then it should hold of on executing the batch until explicitly told to. + + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this BatcherImpl is being Disposed of or Finalized. + + If this BatcherImpl is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this BatcherImpl back to life. + + + + + Gets the current that is contained for this Batch + + The current . + + + + Gets the the Batcher was + created in. + + + The the Batcher was + created in. + + + + + Gets the for this batcher. + + + + + A cached instance of a persistent class + + + + + + + + + + + + + + + + + + + + + + + + + We need an entry to tell us all about the current state + of a collection with respect to its persistent state + + + + + Indicates that the Collection can still be reached by an Entity + that exist in the . + + + It is also used to ensure that the Collection is not shared between + two Entities. + + + + + Indicates that the Collection has been processed and is ready + to have its state synchronized with the database. + + + + + Indicates that a Collection needs to be updated. + + + A Collection needs to be updated whenever the contents of the Collection + have been changed. + + + + + Indicates that a Collection has old elements that need to be removed. + + + A Collection needs to have removals performed whenever its role changes or + the key changes and it has a loadedPersister - ie - it was loaded by NHibernate. + + + + + Indicates that a Collection needs to be recreated. + + + A Collection needs to be recreated whenever its role changes + or the owner changes. + + + + + If we instantiate a collection during the + process, we must ignore it for the rest of the flush. + + + + + The that is currently responsible + for the Collection. + + + This is set when NHibernate is updating a reachable or an + unreachable collection. + + + + + The when the Collection was loaded. + + + This can be if the Collection was not loaded by NHibernate and + was passed in along with a transient object. + + + + + The identifier of the Entity that is the owner of this Collection + during the load or post flush. + + + + session-start/post-flush persistent state + + + allow the snapshot to be serialized + + + + Initializes a new instance of . + + + The CollectionEntry is for a Collection that is not dirty and + has already been initialized. + + + + + Initializes a new instance of for collections just loaded from the database. + + The that persists this Collection type. + The identifier of the Entity that is the owner of this Collection. + A boolean indicating whether to ignore the collection during current (or next) flush. + + + + Initializes a new instance of for initialized detached collections. + + The from another . + The that created this . + + This takes an from another and + creates an entry for it in this by copying the values from the + cs parameter. + + + + + Prepares this CollectionEntry for the Flush process. + + The that this CollectionEntry will be responsible for flushing. + + + + Updates the CollectionEntry to reflect that the + has been initialized. + + The initialized that this Entry is for. + + + + Updates the CollectionEntry to reflect that it is has been successfully flushed to the database. + + The that was flushed. + + Called after a successful flush. + + + + + Sets the information in this CollectionEntry that is specific to the + . + + + The that is + responsible for the Collection. + + + + + + + + + + + + + + Manages the database connection and transaction for an . + + + This class corresponds to ConnectionManager and JDBCContext in Hibernate, + combined. + + + + + Implementation of the interface + + + + + Criteria is a simplified API for retrieving entities by composing + objects. + + + + Using criteria is a very convenient approach for functionality like "search" screens + where there is a variable number of conditions to be placed upon the result set. + + + The Session is a factory for ICriteria. Expression instances are usually obtained via + the factory methods on . eg: + + + IList cats = session.CreateCriteria(typeof(Cat)) + .Add( Expression.Like("name", "Iz%") ) + .Add( Expression.Gt( "weight", minWeight ) ) + .AddOrder( Order.Asc("age") ) + .List(); + + You may navigate associations using or . + + IList cats = session.CreateCriteria(typeof(Cat)) + .CreateCriteria("kittens") + .Add( Expression.like("name", "Iz%") ) + .List(); + + + Hibernate's query language is much more general and should be used for non-simple cases. + + + This is an experimental API. + + + + + + Set a limit upon the number of objects to be retrieved + + + + + + Set the first result to be retrieved + + + + + + Set a timeout for the underlying ADO.NET query + + + + + + + Add an Expression to constrain the results to be retrieved. + + + + + + + An an Order to the result set + + + + + + Get the results + + + + + + Get the results and fill the + + The list to fill with the results. + + + + Strongly-typed version of . + + + + + Strongly-typed version of . + + + + + Convenience method to return a single instance that matches + the query, or null if the query returns no results. + + the single result or + + If there is more than one matching result + + + + + Specify an association fetching strategy. Currently, only + one-to-many and one-to-one associations are supported. + + A dot seperated property path. + The Fetch mode. + + + + + Join an association, assigning an alias to the joined entity + + + + + + + + Join an association using the specified join-type, assigning an alias to the joined + association + + + + The type of join to use. + this (for method chaining) + + + + Create a new , "rooted" at the associated entity + + + + + + + Create a new , "rooted" at the associated entity, + assigning the given alias + + + + + + + + Create a new , "rooted" at the associated entity, + assigning the given alias and using the specified join type. + + A dot-separated property path + The alias to assign to the joined association (for later reference). + The type of join to use. + The created "sub criteria" + + + + Create a new , "rooted" at the associated entity, + using the specified join type. + + A dot-seperated property path + The type of join to use + The created "sub criteria" + + + + Set a strategy for handling the query results. This determines the + "shape" of the query result set. + + + + + + + + + + Set the lock mode of the current entity + + the lock mode + + + + + Set the lock mode of the aliased entity + + an alias + the lock mode + + + + + Enable caching of this query result set + + + + + + + Set the name of the cache region. + + the name of a query cache region, or + for the default query cache + + + + + Used to specify that the query results will be a projection (scalar in + nature). Implicitly specifies the projection result transformer. + + The projection representing the overall "shape" of the + query results. + This instance (for method chaining) + + + The individual components contained within the given + determines the overall "shape" of the query result. + + + + + + Get the alias of the entity encapsulated by this criteria instance. + + The alias for the encapsulated entity. + + + + Expose the batch functionality in ADO.Net 2.0 + Microsoft in its wisdom decided to make my life hard and mark it internal. + Through the use of Reflection and some delegates magic, I opened up the functionality. + + Observable performance benefits are 50%+ when used, so it is really worth it. + + + + + Append a command to the batch + + + + + + Executes the batch + + + This seems to be returning the total number of affected rows in all queries + + + + + Return the batch command to be executed + + + + + The number of commands batched in this instance + + + + + Append a command to the batch + + + + + + This is required because SqlClient.SqlCommandSet will throw if + the command has no parameters. + + + + + + Executes the batch + + + This seems to be returning the total number of affected rows in all queries + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Return the batch command to be executed + + + + + The number of commands batched in this instance + + + + + A Visitor that determines if a dirty collection was found. + + + + + Reason for dirty collection + + + + If it is a new application-instantiated collection, return true (does not occur anymore!) + + + + + If it is a component, recurse. + + + + + If it is a wrapped collection, ask the collection entry. + + + + + + + + Gets a indicating if a dirty collection was found. + + if a dirty collection was found. + + + + We need an entry to tell us all about the current state + of an object with respect to its persistent state + + + + + Initializes a new instance of EntityEntry. + + The current of the Entity. + The snapshot of the Entity's state when it was loaded. + The identifier of the Entity in the database. + The version of the Entity. + The for the Entity. + A boolean indicating if the Entity exists in the database. + The that is responsible for this Entity. + + + + After actually updating the database, update the snapshot information, + and escalate the lock mode. + + + + + Gets or sets the current of the Entity. + + The of the Entity. + + + + Gets or sets the of this Entity with respect to its + persistence in the database. + + The of this Entity. + + + + Gets or sets the identifier of the Entity in the database. + + The identifier of the Entity in the database if one has been assigned. + This might be when the is + and the database generates the id. + + + + Gets or sets the snapshot of the Entity when it was loaded from the database. + + The snapshot of the Entity. + + There will only be a value when the Entity was loaded in the current Session. + + + + + Gets or sets the snapshot of the Entity when it was marked as being ready for deletion. + + The snapshot of the Entity. + This will be if the Entity is not being deleted. + + + + Gets or sets a indicating if this Entity exists in the database. + + if it is already in the database. + + It can also be if it does not exists in the database yet and the + is . + + + + + Gets or sets the version of the Entity. + + The version of the Entity. + + + + Gets or sets the that is responsible for this Entity. + + The that is reponsible for this Entity. + + + + Gets the Fully Qualified Name of the class this Entity is an instance of. + + The Fully Qualified Name of the class this Entity is an instance of. + + + + + + + + + Provides an wrapper over the results of an . + + + This is the IteratorImpl in H2.0.3 + + + + + Create an wrapper over an . + + The to enumerate over. + The used to create the . + The to use to load objects. + The s contained in the . + The names of the columns in the . + The that should be applied to the . + Instantiator of the result holder (used for "select new SomeClass(...)" queries). + + The should already be positioned on the first record in . + + + + + Returns an enumerator that can iterate through the query results. + + + An that can be used to iterate through the query results. + + + + + Advances the enumerator to the next element of the query results. + + + if the enumerator was successfully advanced to the next query results + ; if the enumerator has passed the end of the query results. + + + + + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this EnumerableImpl is being Disposed of or Finalized. + + The command is closed and the reader is disposed. This allows other ADO.NET + related actions to occur without needing to move all the way through the + EnumerableImpl. + + + + + Gets the current element in the query results. + + + The current element in the query results which is either an object or + an object array. + + + If the only returns one type of Entity then an object will + be returned. If this is a multi-column resultset then an object array will be + returned. + + + + + Evict any collections referenced by the object from the ISession cache. + + + This will NOT pick up any collections that were dereferenced, so + they will be deleted (suboptimal but not exactly incorrect). + + + + + + + + + Type definition of Filter. Filter defines the user's view into enabled dynamic filters, + allowing them to set filter parameter values. + + + + + Set the named parameter's value list for this filter. + + The parameter's name. + The values to be applied. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Perform validation of the filter state. This is used to verify the + state of the filter after its enablement and before its use. + + + + + + Get the name of this filter. + + This filter's name. + + + + Get the filter definition containing additional information about the + filter (such as default-condition and expected parameter names/types). + + The filter definition + + + + Set the named parameter's value for this filter. + + The parameter's name. + The value to be applied. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Perform validation of the filter state. This is used to verify the + state of the filter after its enablement and before its use. + + + + + + Get the name of this filter. + + + + + An action that can Execute during a + Flush. + + + + + + + + + + Execute the action required to write changes to the database. + + + + + Called after the Transaction has been completed. + + + + Actions should make sure that the Cache is notified about + what just happened. + + + + + Does the executable have an AfterTransactionCompletion process + + + + + The spaces (tables) that are affectd by this Executable action. + + + This is used to determine if the ISession needs to be flushed before + a query is executed so stale data is not returned. + + + + + Helper methods for rendering log messages and exception messages + + + + + Generate small message that can be used in traces and exception messages. + + The to create the string from. + The identifier of the object. + A descriptive in the format of [classname#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question. + The identifier of the object. + The . + A descriptive in the format of [classname#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question. + The identifier of the object. + The . + The NHibernate type of the identifier. + A descriptive in the format of [classname#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question + The id + A descriptive in the form [FooBar#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question + A descriptive in the form [FooBar] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question + The id + A descriptive in the form [collectionrole#id] + + + + When implemented by a class, disassembles the object into a cacheable representation. + The value to disassemble.The sesionThe disassembled, deep cloned state of the object + + + + When implemented by a class, reconstructs the object from its + cached "disassembled" state. + The disassembled state from the cacheThe sessiontThe parent Entity objectThe assembled object. + + + + Combines sevaral queries into a single database call + + + + + Get all the + + + + + Add the specified HQL query to the multi query + + + + + Add the specified HQL query to the multi query + + + + + Add a named query to the multi query + + + + + Enable caching of this query result set. + + Should the query results be cacheable? + + + Set the name of the cache region. + The name of a query cache region, or + for the default query cache + + + Should the query force a refresh of the specified query cache region? + This is particularly useful in cases where underlying data may have been + updated via a seperate process (i.e., not modified through Hibernate) and + allows the application to selectively refresh the query cache regions + based on its knowledge of those events. + Should the query result in a forceable refresh of + the query cache? + + + + The timeout for the underlying ADO query + + + + + + Bind a value to a named query parameter + + The name of the parameter + The possibly null parameter value + The NHibernate . + + + + Bind a value to a named query parameter, guessing the NHibernate + from the class of the given object. + + The name of the parameter + The non-null parameter value + + + + Bind multiple values to a named query parameter. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + The Hibernate type of the values + + + + Bind multiple values to a named query parameter, guessing the Hibernate + type from the class of the first object in the collection. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a array to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a array. + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + A non-null instance of a . + The name of the parameter + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a mapped persistent class to a named parameter. + + The name of the parameter + A non-null instance of a persistent class + + + + Bind an instance of a persistent enumeration class to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a persistent enumeration + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Override the current session flush mode, just for this query. + + + + + Set a strategy for handling the query results. This can be used to change + "shape" of the query result. + + + + + Return the query results of all the queries + + + + + An implementation of the + interface that does no batching. + + + + + Initializes a new instance of the class. + + The for this batcher. + + + + Executes the current and compares the row Count + to the expectedRowCount. + + + The expected number of rows affected by the query. A value of less than 0 + indicates that the number of rows to expect is unknown or should not be a factor. + + + Thrown when there is an expected number of rows to be affected and the + actual number of rows is different. + + + + + This Batcher implementation does not support batching so this is a no-op call. The + actual execution of the is run in the AddToBatch + method. + + + + + + When a transient entity is passed to , we must inspect all its collections and + 1. associate any uninitialized PersistentCollections with this session + 2. associate any initialized PersistentCollections with this session, using the + existing snapshot + 3. throw an exception for each "new" collection + + + + + Abstract superclass of visitors that reattach collections + + + + + Reassociates uninitialized Proxies with the Session. + + + + + When an entity is passed to Update(), we must inspect all its collections and + 1. associate any uninitialized PersistentCollections with this session + 2. associate any initialized PersistentCollections with this session, using the existing snapshot + 3. execute a collection removal (SQL DELETE) for each null collection property or "new" collection + + + + + When an entity is passed to Update(), all its collections must be + inspected and: + + + + Associate any uninitialized PersistentCollections with this Session. + + + + + Associate any initialized PersistentCollections with this Session, using the + existing snapshot. + + + + + Execute a collection removal (SQL DELETE) for each null collection property + or "new" collection. + + + + + + + + Summary description for OracleDataClientBatchingBatcher. + By Tomer Avissar + + + + + + + an actual entity object, not a proxy! + + + + + Implementation of the interface for collection filters. + + + + + + + + + + + + + The base class for a scheduled action to perform on a Collection during a + flush. + + + + + Initializes a new instance of . + + The that is responsible for the persisting the Collection. + The identifier of the Collection owner. + The that the Action is occuring in. + + + + + + + + + + + + + + + + + + Gets the that is responsible for persisting the Collection. + + + + + Gets the identifier of the Collection owner. + + + + + Gets the the action is executing in. + + + + + + + + A scheduled recreation of the Collection in the database. + + + + + Initializes a new instance of . + + The to recreate. + The that is responsible for the persisting the Collection. + The identifier of the Collection owner. + The that the Action is occuring in. + + + + + + + A scheduled removal of the Collection from the database. + + + This Collection is not represented in the database anymore. + + + + + Initializes a new instance of . + + The that is being removed. + The that is responsible for the persisting the Collection. + The identifier of the Collection owner. + Indicates if the Collection was empty when it was loaded. + The that the Action is occuring in. + + + + + + + A scheduled update of the Collection in the database. + + + Entities in the Collection or the contents of the Collection have been modified + and the database should be updated accordingly. + + + + + Initializes a new instance of . + + The to update. + The that is responsible for the persisting the Collection. + The identifier of the Collection owner. + Indicates if the Collection was empty when it was loaded. + The that the Action is occuring in. + + + + + + + A scheduled deletion of an object. + + + + + The base class for a scheduled action to perform on an entity during a + flush. + + + + + Initializes a new instance of . + + The that the Action is occuring in. + The identifier of the object. + The actual object instance. + The that is responsible for the persisting the object. + + + + + + Not supported for a non-collection entity + + + + Called when the Transaction this action occurred in has completed. + + + + + + Execute the action using the . + + + + + Gets the the action is executing in. + + + + + Gets the identifier of the object. + + + + + Gets the that is responsible for persisting the object. + + + + + Gets the object that is having the scheduled action performed against it. + + + + + + + + + + + + + Initializes a new instance of . + + The identifier of the object. + The version of the object being deleted. + The actual object instance. + The that is responsible for the persisting the object. + The that the Action is occuring in. + + + + + + + + + + Summary description for ScheduledIdentityInsertion. + + + + + + + + + + + + + + + + + + + + + + + + + A scheduled insertion of an object. + + + + + Initializes a new instance of . + + The identifier of the object. + An object array that contains the state of the object being inserted. + The actual object instance. + The version of the object instance. + The that is responsible for the persisting the object. + The that the Action is occuring in. + + + + + + + + + + A scheduled update of an object. + + + + + Initializes a new instance of . + + The identifier of the object. + An array of objects that contains the value of each Property. + An array that contains the indexes of the dirty Properties. + Whether the object contains a dirty collection. + + The current version of the object. + The version the object should be after update. + The actual object instance. + The that is responsible for the persisting the object. + The that the Action is occuring in. + + + + + + + + + + Concrete implementation of a SessionFactory. + + + Has the following responsibilities: + + + Caches configuration settings (immutably) + + Caches "compiled" mappings - ie. + and + + + Caches "compiled" queries (memory sensitive cache) + + + Manages PreparedStatements/IDbCommands - how true in NH? + + + Delegates IDbConnection management to the + + + Factory for instances of + + + + This class must appear immutable to clients, even if it does all kinds of caching + and pooling under the covers. It is crucial that the class is not only thread safe + , but also highly concurrent. Synchronization must be used extremely sparingly. + + + + + + + + + + + + + + + + + + + Gets the hql query identified by the name. + + The name of that identifies the query. + + A hql query or if the named + query does not exist. + + + + + + + + + + + + + + + + + + + + + + + + + + Return the names of all persistent (mapped) classes that extend or implement the + given class or interface, accounting for implicit/explicit polymorphism settings + and excluding mapped subclasses/joined-subclasses of other classes in the result. + + + + + + + Added to solve a problem with SessionImpl.Find( CriteriaImpl ), + see the comment there for an explanation. + + + + + + + + + + + + + Closes the session factory, releasing all held resources. + + cleans up used cache regions and "stops" the cache provider. + close the ADO.NET connection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the ICurrentSessionContext instance attached to this session factory. + + + + + A class that can be used as a Key in a Hashtable for + a Query Cache. + + + + + A class that can be used as a Key in a Hashtable for + a Query Cache. + + + + + Resolves lookups and deserialization. + + + + This is used heavily be Deserialization. Currently a SessionFactory is not really serialized. + All that is serialized is it's name and uid. During Deserializaiton the serialized SessionFactory + is converted to the one contained in this object. So if you are serializing across AppDomains + you should make sure that "name" is specified for the SessionFactory in the hbm.xml file and that the + other AppDomain has a configured SessionFactory with the same name. If + you are serializing in the same AppDomain then there will be no problem because the uid will + be in this object. + + + TODO: verify that the AppDomain statements are correct. + + + + + + + + + Adds an Instance of the SessionFactory to the local "cache". + + The identifier of the ISessionFactory. + The name of the ISessionFactory. + The ISessionFactory. + The configured properties for the ISessionFactory. + + + + Removes the Instance of the SessionFactory from the local "cache". + + The identifier of the ISessionFactory. + The name of the ISessionFactory. + The configured properties for the ISessionFactory. + + + + Returns a Named Instance of the SessionFactory from the local "cache" identified by name. + + The name of the ISessionFactory. + An instantiated ISessionFactory. + + + + Returns an Instance of the SessionFactory from the local "cache" identified by UUID. + + The identifier of the ISessionFactory. + An instantiated ISessionFactory. + + + + Concrete implementation of a Session, also the central, organizing component + of Hibernate's internal implementation. + + + Exposes two interfaces: ISession itself, to the application and ISessionImplementor + to other components of hibernate. This is where the hard stuff is... + NOT THREADSAFE + + + + + Indicates if the Session has been closed. + + + (by default) if the Session is Open and can be used, + if the Session has had the methods Close() or + Dispose() invoked. + + + + An with the as the key + and an as the value. + + + + + An with the as the key + and an as the value. + + + + + An with the as the key + and an as the value. + + + + + An with the as the key + and an as the value. + + + + + An with the as the key + and an as the value. + + + + + An with the as the key + and an as the value. + + + + + An of objects of the deleted entities. + + + + + Constructor used to recreate the Session during the deserialization. + + + + + This is needed because we have to do some checking before the serialization process + begins. I don't know how to add logic in ISerializable.GetObjectData and have .net + write all of the serializable fields out. + + + + + Verify the ISession can be serialized and write the fields to the Serializer. + + + + + The fields are marked with [NonSerializable] as just a point of reference. This method + has complete control and what is serialized and those attributes are ignored. However, + this method should be in synch with the attributes for easy readability. + + + + + Once the entire object graph has been deserialized then we can hook the + collections, proxies, and entities back up to the ISession. + + + + + + + + + Ensure that the locks are downgraded to + and that all of the softlocks in the have + been released. + + + + + Mark the Session as being closed and Clear out the HashTables of + entities and proxies along with the Identity Maps for entries, array + holders, collections, and nullifiables. + + + + + + + + + + + + + + + + + + + Save a transient object. An id is generated, assigned to the object and returned + + + + + + + Save a transient object with a manually assigned ID + + + + + + + If the parameter value is an unitialized proxy then it will be reassociated + with the session. + + A persistable object, proxy, persistent collection or null + + when an uninitialized proxy was passed into this method, otherwise. + + + + + associate a proxy that was instantiated by another session with this session + + + + + + + Return null if the argument is an "unsaved" entity (ie. one with no existing database row), + or the input argument otherwise. This is how Hibernate avoids foreign key constraint violations. + + + + + + + + + + determine if the object already exists in the database, using a "best guess" + + + + + + + + + Delete a persistent object + + + + + + Checks to see if there are any Properties that should not be null + are references to null or to a transient object. + + An object array of values that should be validated. + The that describes which values can be null. + A indicating if this is an Update operation. + + Thrown when a non-nullable property contains a value that would + persist the value of null to the database. + + + + + Reattach a detached (disassociated) initialized or uninitialized collection wrapper + + + + + + + Used only by Replicate + + + + + + + + + + Retrieve a list of persistent objects using a Hibernate query + + + + + + + + + + + + + + + + + + + + + + Obtain an instance of for a named query string defined in the + mapping file. + + The name of a query defined externally. + An fro a named query string. + + The query can be either in hql or sql format. + + + + + Give the interceptor an opportunity to override the default instantiation + + + + + + + + detect in-memory changes, determine if the changes are to tables + named in the query and, if so, complete execution the flush + + + + + + + If the existing proxy is insufficiently "narrow" (derived), instantiate a + new proxy and overwrite the registration of the old one. This breaks == and + occurs only for "class" proxies rather than "interface" proxies. + + + + + + + + + + Grab the existing proxy for an instance, if one exists. + (otherwise return the instance) + + + + + + + + + Create a "temporary" entry for a newly instantiated entity. The entity is + uninitialized, but we need the mapping from id to instance in order to guarantee + uniqueness. + + + + + + + + Add the "hydrated state" (an array) of an uninitialized entity to the session. + We don't try to resolve any associations yet, because there might be other entities + waiting to be read from the ADO datareader we are currently processing + + + + + + + + + + Load the data for the object with the specified id into a newly created object. + Do NOT return a proxy. + + + + + Return the object with the specified id or throw exception if no row with that id exists. Defer the load, + return a new proxy or return an existing proxy if possible. Do not check if the object was deleted. + + + + + Load the data for the object with the specified id into the supplied + instance. A new key will be assigned to the object. If there is an + existing uninitialized proxy, this will break identity equals as far + as the application is concerned. + + + + + Load the data for the object with the specified id into a newly created + object. A new key will be assigned to the object. If the class supports + lazy initialization, return a proxy instead, leaving the real work for + later. This should return an existing proxy where appropriate. + + The of the object to load. + The identifier of the object in the database. + + A boolean indicating if NHiberate should check if the object has or has not been deleted. + + A boolean indicating if it is allowed to return a Proxy instead of an instance of the . + + An loaded instance of the object or a proxy of the object is proxies are allowed. + + + If the parameter checkDeleted is it is possible to return an object that has + been deleted by the user in this . If the parameter checkDeleted is + and the object has been deleted then an will be + thrown. + + + + + Load the data for the object with the specified id into a newly created object + using "for update", if supported. A new key will be assigned to the object. + This method always hits the db, and does not create proxies. It should return + an existing proxy where appropriate. + + + + + + + + + + Load the data for the object with the specified id into a newly created object + using "for update", if supported. A new key will be assigned to the object. + This should return an existing proxy where appropriate. + + If the object does not exist in the database, an exception is thrown. + + + + + + + Thrown when the object with the specified id does not exist in the database. + + + + + Load the data for the object with the specified id into a newly created object + using "for update", if supported. A new key will be assigned to the object. + This should return an existing proxy where appropriate. + + If the object does not exist in the database, null is returned. + + + + + + + + + Actually do all the hard work of loading up an object + + + + + + + + + 1. see if it is already loaded + 2. see if it is cached + 3. actually go to the database + + + + + After processing a JDBC result set, we "resolve" all the associations + between the entities which were instantiated and had their state + "hydrated" into an array + + + + + + + + + This can be called from commit() or at the start of a Find() method. + + Perform all the necessary SQL statements in a sensible order, to allow + users to repect foreign key constraints: + + Inserts, in the order they were performed + Updates + Deletion of collection elements + Insertion of collection elements + Deletes, in the order they were performed + + + + Go through all the persistent objects and look for collections they might be + holding. If they had a nonpersistable collection, substitute a persistable one + + + + + Execute all SQL and second-level cache updates, in a + special order so that foreign-key constraints cannot + be violated: +
    +
  1. Inserts, in the order they were performed
  2. +
  3. Updates
  4. +
  5. Deletion of collection elements
  6. +
  7. Insertion of collection elements
  8. +
  9. Deletes, in the order they were performed
  10. +
+
+ + + 1. detect any dirty entities + 2. schedule any entity updates + 3. search out any reachable collections + + + + + Process cascade save/update at the start of a flush to discover + any newly referenced entity that must be passed to + and also apply orphan delete + + + + + Not for internal use + + + + + + + Get the id value for an object that is actually associated with the session. + This is a bit stricter than GetEntityIdentifierIfNotUnsaved(). + + + + + + + + + + + + + + Used by OneToOneType and ManyToOneType to determine what id value + should be used for an object that may or may not be associated with + the session. This does a "best guess" using any/all info available + to use (not just the EntityEntry). + + + + + + + process any unreferenced collections and then inspect all known collections, + scheduling creates/removes/updates + + + + + 1. Recreate the collection key -> collection map + 2. rebuild the collection entries + 3. call Interceptor.postFlush() + + + + + Initialize the flags of the CollectionEntry, including the + dirty check. + + + + + Initialize the role of the collection. + The CollectionEntry.reached stuff is just to detect any silly users who set up + circular or shared references between/to collections. + + + + + + + + record the fact that this collection was dereferenced + + + + + + 1. record the collection role that this collection is referenced by + 2. decide if the collection needs deleting/creating/updating (but + don't actually schedule the action yet) + + + + + + + add a collection we just loaded up (still needs initializing) + + + + + + + + add a collection we just pulled out of the cache (does not need initializing) + + + + + + + + Add a new collection (i.e. a newly created one, just instantiated by + the application, with no database state or snapshot) + + + + + + + Add an (initialized) collection that was created by another session and passed + into update() (i.e. one with a snapshot and existing state on the database) + + + + + + + + + + + + + + associate a holder with an array - called after loading an array + + + + + + called by a collection that wants to initialize itself + + + + + + + + + + A flag to indicate if Dispose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Just in case the user forgot to Commit() or Close() + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this Session is being Disposed of or Finalized. + + If this Session is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this Session back to life. + + + + + 1. determine the collection role of the given collection (this may require a flush, if the collection is recorded as unreferenced) + 2. obtain a compiled filter query + 3. autoflush if necessary + + + + + + + + + + Get the collection entry for a collection passed to filter, + which might be a collection wrapper, an array, or an unwrapped + collection. Return if there is no entry. + + + + + + + remove any hard references to the entity that are held by the infrastructure + (references held by application or other persistant instances are okay) + + + + + + Evict collections from the factory-level cache + + + + + + + + + + + + + + + + + + + + + + + + + + + + Instantiate a collection wrapper (called when loading an object) + + + + + + + + + Try to initialize a Collection from the cache. + + + + + + if the collection was initialized from the cache, otherwise . + + + + + + + + + + + + + + + + + + + + + + + Gets if the ISession is connected. + + + if the ISession is connected. + + + An ISession is considered connected if there is an (regardless + of its state) or if it the field connect is true. Meaning that it will connect + at the next operation that requires a connection. + + + + + Summary description for SqlClientBatchingBatcher. + + + + + Expose the batch functionality in ADO.Net 2.0 + Microsoft in its wisdom decided to make my life hard and mark it internal. + Through the use of Reflection and some delegates magic, I opened up the functionality. + + Observable performance benefits are 50%+ when used, so it is really worth it. + + + + + Append a command to the batch + + + + + + This is required because SqlClient.SqlCommandSet will throw if + the command has no parameters. + + + + + + Executes the batch + + + This seems to be returning the total number of affected rows in all queries + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Return the batch command to be executed + + + + + The number of commands batched in this instance + + + + + Implements SQL query passthrough + + + An example mapping is: + + <sql-query-name name="mySqlQuery"> + <return alias="person" class="eg.Person" /> + SELECT {person}.NAME AS {person.name}, {person}.AGE AS {person.age}, {person}.SEX AS {person.sex} + FROM PERSON {person} WHERE {person}.NAME LIKE 'Hiber%' + </sql-query-name> + + + + + + Declare a "root" entity, without specifying an alias + + + + + Declare a "root" entity + + + + + Declare a "root" entity, specifying a lock mode + + + + + Declare a "root" entity, without specifying an alias + + + + + Declare a "root" entity + + + + + Declare a "root" entity, specifying a lock mode + + + + + Declare a "joined" entity + + + + + Declare a "joined" entity, specifying a lock mode + + + + + Declare a scalar query result + + + + + Use a predefined named ResultSetMapping + + + + + Represents the status of an entity with respect to + this session. These statuses are for internal + book-keeping only and are not intended to represent + any notion that is visible to the application. + + + + + The Entity is snapshotted in the Session with the same state as the database + (called Managed in H3). + + + + + The Entity is in the Session and has been marked for deletion but not + deleted from the database yet. + + + + + The Entity has been deleted from database. + + + + + The Entity is in the process of being loaded. + + + + + The Entity is in the process of being saved. + + + + + Wrap collections in a NHibernate collection wrapper. + + + + + Walker for collections of values and many-to-many associations + + + + + Superclass of walkers for collection initializers + + + + + + + + Add on association (one-to-one, many-to-one, or a collection) to a list + of associations to be fetched by outerjoin (if necessary) + + + + + Add on association (one-to-one, many-to-one, or a collection) to a list + of associations to be fetched by outerjoin + + + + + For an entity class, return a list of associations to be fetched by outerjoin + + + + + For a collection role, return a list of associations to be fetched by outerjoin + + + + + For a collection role, return a list of associations to be fetched by outerjoin + + + + + For an entity class, add to a list of associations to be fetched + by outerjoin + + + + + For a component, add to a list of associations to be fetched by outerjoin + + + + + For a composite element, add to a list of associations to be fetched by outerjoin + + + + + Extend the path by the given property name + + + + + Get the join type (inner, outer, etc) or -1 if the + association should not be joined. Override on + subclasses. + + + + + Use an inner join if it is a non-null association and this + is the "first" join in a series + + + + + Does the mapping, and Hibernate default semantics, specify that + this association should be fetched by outer joining + + + + + Override on subclasses to enable or suppress joining + of certain association types + + + + + Used to detect circularities in the joined graph, note that + this method is side-effecty + + + + + Used to detect circularities in the joined graph, note that + this method is side-effecty + + + + + Should we join this association? + + + + + Generate a sequence of LEFT OUTER JOIN clauses for the given associations. + + + + + Count the number of instances of IJoinable which are actually + also instances of ILoadable, or are one-to-many associations + + + + + Count the number of instances of which + are actually also instances of + which are being fetched by outer join + + + + + Get the order by string required for collection fetching + + + + + Render the where condition for a (batch) load by identifier / collection key + + + + + Generate a select list of columns containing all properties of the entity classes + + + + + Uniquely identifier a foreign key, so that we don't + join it more than once, and create circularities + + + + + We can use an inner join for first many-to-many association + + + + + Superclass for loaders that initialize collections + + + + + + + Implements logic for walking a tree of associated classes. + + + Generates an SQL select string containing all properties of those classes. + Tablse are joined using an ANSI-style left outer join. + + + + + An interface for collection loaders + + + + + Initialize the given collection + + + + + + + "Batch" loads collections, using multiple foreign key values in the SQL Where clause + + + + + Walker for one-to-many associations + + + + + + Loads one-to-many associations + + + The collection persister must implement . + For other collections, create a customized subclass of . + + + + + Implements subselect fetching for a one to many association + + + + + A for queries. + + + + + The superclass deliberately excludes collections + + + + + Don't bother with the discriminator, unless overridden by subclass + + + + + Use the discriminator, to narrow the select to instances + of the queried subclass, also applying any filters. + + + + + A Loader for queries. + + + Note that criteria + queries are more like multi-object Load()s than like HQL queries. + + + + + Get the names of the columns constrained + by this criterion. + + + + + Get the aliases of the columns constrained + by this criterion (for use in ORDER BY clause). + + + + + Get the a typed value for the given property value. + + + + + that uses columnnames instead of generated aliases. + Aliases can still be overwritten via <return-property> + + + + + Type definition of CollectionAliases. + + + + + Returns the suffixed result-set column-aliases for columns making + up the key for this collection (i.e., its FK to its owner). + + The key result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the collumns + making up the collection's index (map or list). + + The index result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the columns + making up the collection's elements. + + The element result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the column + defining the collection's identifier (if any). + + The identifier result-set column aliases. + + + + Returns the suffix used to unique the column aliases for this + particular alias set. + + The uniqued column alias suffix. + + + + Returns the suffixed result-set column-aliases for columns making up the key for this collection (i.e., its FK to + its owner). + + The key result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the collumns making up the collection's index (map or list). + + The index result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the columns making up the collection's elements. + + The element result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the column defining the collection's identifier (if any). + + The identifier result-set column aliases. + + + + Returns the suffix used to unique the column aliases for this particular alias set. + + The uniqued column alias suffix. + + + + that chooses the column names over the alias names. + + + + + EntityAliases which handles the logic of selecting user provided aliases (via return-property), + before using the default aliases. + + + + + Metadata describing the SQL result set column aliases + for a particular entity + + + + + The result set column aliases for the property columns of a subclass + + + + + The result set column aliases for the primary key columns + + + + + The result set column aliases for the discriminator columns + + + + + The result set column aliases for the version columns + + + + + The result set column aliases for the property columns + + + + + The result set column alias for the Oracle row id + + + + + Calculate and cache select-clause suffixes. + + + + + Optional, may return + + + + Substitues JDBC parameter placeholders (?) for all encountered + parameter specifications. It also tracks the positions of these + parameter specifications within the query string. This accounts for + ordinal-params, named-params, and ejb3-positional-params. + + @param sqlString The query string. + @return The SQL query with parameter substitution complete. + + + + Represents a return defined as part of a native sql query which + names a collection role in the form {classname}.{collectionrole}; it + is used in defining a custom sql query for loading an entity's + collection in non-fetching scenarios (i.e., loading the collection + itself as the "root" of the result). + + + + + Represents the base information for a return defined as part of + a native sql query. + + + + + Returns the class owning the collection. + + + + + Returns the name of the property representing the collection from the . + + + + + Represents a return defined as part of a native sql query which + names a fetched role. + + + + + Represents a return defined as part of a native sql query which + names a "root" entity. A root entity means it is explicitly a + "column" in the result, as opposed to a fetched relationship or role. + + + + + Abstract superclass for entity loaders that use outer joins + + + + + + + + Load an entity instance. If OptionalObject is supplied, load the entity + state into the given (uninitialized) object + + + + + "Batch" loads entities, using multiple primary key values in the + SQL where clause. + + + + + A walker for loaders that fetch entities + + + + + Disable outer join fetching if this loader obtains an + upgrade lock mode + + + + + Load an entity using outerjoin fetching to fetch associated entities. + + + The must implement . For other entities, + create a customized subclass of . + + + + + CollectionAliases which handles the logic of selecting user provided aliases (via return-property), + before using the default aliases. + + + + + Returns the suffixed result-set column-aliases for columns making up the key for this collection (i.e., its FK to + its owner). + + + + + Returns the suffixed result-set column-aliases for the collumns making up the collection's index (map or list). + + + + + Returns the suffixed result-set column-aliases for the columns making up the collection's elements. + + + + + Returns the suffixed result-set column-aliases for the column defining the collection's identifier (if any). + + + + + Returns the suffix used to unique the column aliases for this particular alias set. + + + + + Get the position of the join with the given alias in the + list of joins + + + + + Operations to create/drop the mapping element in the database. + + + + + When implemented by a class, generates the SQL string to create + the mapping element in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to create an object. + + + + + When implemented by a class, generates the SQL string to drop + the mapping element from the database. + + The to use for SQL rules. + + + A string that contains the SQL to drop an object. + + + + + Gets called by NHibernate to pass the configured type parameters to + the implementation. + + + + + A NHibernate any type. + + + Polymorphic association to one of several tables. + + + + + Any value that maps to columns. + + + + + Represents an identifying key of a table: the value for primary key + of an entity, or a foreign key of a collection or join table or + joined subclass table. + + + Author: Gavin King + + + + + A value is anything that is persisted by value, instead of + by reference. It is essentially a Hibernate IType, together + with zero or more columns. Values are wrapped by things with + higher level semantics, for example properties, collections, + classes. + + + + + + + + + + Determines if the Value is part of a valid mapping. + + The to validate. + + if the Value is part of a valid mapping, + otherwise. + + + + Mainly used to make sure that Value maps to the correct number + of columns. + + + + + Gets the number of columns that this value spans in the table. + + + + + Gets an of objects + that this value is stored in. + + + + + Gets the to read/write the Values. + + + + + Gets the this Value is stored in. + + + + + Gets a indicating if this Value is unique. + + + + + Gets a indicating if this Value can have + null values. + + + + + Gets a indicating if this is a SimpleValue + that does not involve foreign keys. + + + + + + + + + + + + + + + + + + + Get or set the identifier type + + + + + + + + Get or set the metatype + + + + + An array has a primary key consisting of the key columns + index column + + + + + A list has a primary key consisting of the key columns + index column + + + + + Indexed collections include IList, IDictionary, Arrays + and primitive Arrays. + + + + + Base class that stores the mapping information for <array>, <bag>, + <id-bag>, <list>, <map>, and <set> + collections. + + + Subclasses are responsible for the specialization required for the particular + collection style. + + + + + Any mapping with an outer-join attribute + + + + + Defines mapping elements to which filters may be applied. + + + + + Gets or sets a indicating if this is a + mapping for a generic collection. + + + if a collection from the System.Collections.Generic namespace + should be used, if a collection from the System.Collections + namespace should be used. + + + This has no affect on any versions of the .net framework before .net-2.0. + + + + + Gets or sets an array of that contains the arguments + needed to construct an instance of a closed type. + + + + + Initializes a new instance of the class. + + The that contains this list mapping. + + + + Gets the appropriate that is + specialized for this list mapping. + + + + + A bag permits duplicates, so it has no primary key + + + + + Initializes a new instance of the class. + + The that contains this bag mapping. + + + + + + Should we create an index on the key columns? + + + + Gets the appropriate that is + specialized for this bag mapping. + + + + + Represents the mapping to a column in a database. + + + + + + + + Gets the name of this Column in quoted form if it is necessary. + + + The that knows how to quote + the column name. + + + The column name in a form that is safe to use inside of a SQL statement. + Quoted if it needs to be, not quoted if it does not need to be. + + + + For any column name, generate an alias that is unique + to that column name, and also 10 characters or less + in length. + + + + Gets an Alias for the column name. + + The that contains the rules for Aliasing. + A string to use as the suffix for the Alias. + + A string that can be used as the alias for this Column. + + + + + Initializes a new instance of . + + The NHibernate that reads from and writes to the column. + The index of the column in the . + + + + Gets the of the column based on the . + + + + The of the column based on the . + + + + + Gets the name of the data type for the column. + + The to use to get the valid data types. + + + The name of the data type for the column. + + + If the mapping file contains a value of the attribute sql-type this will + return the string contained in that attribute. Otherwise it will use the + typename from the of the object. + + + + + Determines if this instance of and a specified object, + which must be a Column can be considered the same. + + An that should be a . + + if the name of this Column and the other Column are the same, + otherwise . + + + + + Determines if this instance of and the specified Column + can be considered the same. + + A to compare to this Column. + + if the name of this Column and the other Column are the same, + otherwise . + + + + + Returns the hash code for this instance. + + The value of Name.GetHashCode(). + + + + Gets or sets the length of the datatype in the database. + + The length of the datatype in the database. + + + + Gets or sets the NHibernate of the column. + + + The NHibernate of the column. + + + + + Gets or sets the name of the column in the database. + + + The name of the column in the database. The get does + not return a Quoted column name. + + +

+ If a value is passed in that is wrapped by ` then + NHibernate will Quote the column whenever SQL is generated + for it. How the column is quoted depends on the Dialect. +

+

+ The value returned by the getter is not Quoted. To get the + column name in quoted form use . +

+
+
+ + + Gets or sets if the column can have null values in it. + + if the column can have a null value in it. + + + + Gets or sets the index of the column in the . + + + The index of the column in the . + + + + + Gets or sets if the column contains unique values. + + if the column contains unique values. + + + + Gets or sets the sql data type name of the column. + + + The sql data type name of the column. + + + This is usually read from the sql-type attribute. + + + + + Gets or sets if the column needs to be quoted in SQL statements. + + if the column is quoted. + + + + Gets or sets whether the column is unique. + + + + + Gets or sets a check constraint on the column + + + + + Do we have a check constraint? + + + + + The mapping for a component, composite element, composite identifier, + etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class for relational constraints in the database. + + + + + Adds the to the of + Columns that are part of the constraint. + + The to include in the Constraint. + + + + Generates the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + A string that contains the SQL to drop this Constraint. + + + + + Generates the SQL string to create this Constraint in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to create this Constraint. + + + + + When implemented by a class, generates the SQL string to create the named + Constraint in the database. + + The to use for SQL rules. + The name to use as the identifier of the constraint in the database. + + + A string that contains the SQL to create the named Constraint. + + + + + Gets or sets the Name used to identify the constraint in the database. + + The Name used to identify the constraint in the database. + + + + Gets an of objects that are part of the constraint. + + + An of objects that are part of the constraint. + + + + + Gets the number of columns that this Constraint contains. + + + The number of columns that this Constraint contains. + + + + + Gets or sets the this Constraint is in. + + + The this Constraint is in. + + + + + A Foreign Key constraint in the database. + + + + + Initializes a new instance of the class. + + + + + Generates the SQL string to create the named Foreign Key Constraint in the database. + + The to use for SQL rules. + The name to use as the identifier of the constraint in the database. + + + A string that contains the SQL to create the named Foreign Key Constraint. + + + + + Get the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + A string that contains the SQL to drop this Constraint. + + + + + Gets or sets the that the Foreign Key is referencing. + + The the Foreign Key is referencing. + + Thrown when the number of columns in this Foreign Key is not the same + amount of columns as the Primary Key in the ReferencedTable. + + + + + Gets or sets the that this Foreign Key is referencing. + + + The that this Foreign Key is referencing. + + + + + A formula is a derived column value. + + + + + + + + + + + + + + + + + + An PersistentIdentifierBag has a primary key consistenting of just + the identifier column. + + + + + A collection with a synthetic "identifier" column. + + + + + + + + + + + + + + + + + + + + + + + + + + An Index in the database. + + + + + Generates the SQL string to create this Index in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to create this Index. + + + + + Generates the SQL string to drop this Index in the database. + + The to use for SQL rules. + + + A string that contains the SQL to drop this Index. + + + + + Adds the to the of + Columns that are part of the Index. + + The to include in the Index. + + + + Gets or sets the this Index is in. + + + The this Index is in. + + + + + Gets an of objects that are + part of the Index. + + + An of objects that are + part of the Index. + + + + + Gets or sets the Name used to identify the Index in the database. + + The Name used to identify the Index in the database. + + + + + + + + + + + + + + + + + + + A simple-point association (ie. a reference to another entity). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A map has a primary key consisting of the key columns + + index columns. + + + + + Initializes a new instance of the class. + + The that contains this map mapping. + + + + Gets the appropriate that is + specialized for this list mapping. + + + + + A meta attribute is a named value or values. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A mapping for a one-to-many association. + + + + + + + + + + No foreign key element for a one-to-many + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A mapping for a one-to-one association. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class for the mapped by <class> and a + that is mapped by <subclass> or + <joined-subclass>. + + + + + + + + + + + Adds a to the class hierarchy. + + The to add to the hierarchy. + + + + Change the property definition or add a new property definition + + The to add. + + + + Adds a that is implemented by a subclass. + + The implemented by a subclass. + + + + Adds a that a subclass is stored in. + + The the subclass is stored in. + + + + Creates the for the + this type is persisted in. + + The that is used to Alias columns. + + + + + + + + + + + + + + + + + Given a property path, locate the appropriate referenceable property reference. + + + A referenceable property is a property which can be a target of a foreign-key + mapping (an identifier or explicitly named in a property-ref). + + The property path to resolve into a property reference. + The property reference (never null). + If the property could not be found. + + + + Gets or Sets if the Insert Sql is built dynamically. + + if the Sql is built at runtime. + + The value of this is set by the dynamic-insert attribute. + + + + + Gets or Sets if the Update Sql is built dynamically. + + if the Sql is built at runtime. + + The value of this is set by the dynamic-update attribute. + + + + + Gets or Sets the value to use as the discriminator for the Class. + + + A value that distinguishes this subclass in the database. + + + The value of this is set by the discriminator-value attribute. Each <subclass> + in a heirarchy must define a unique discriminator-value. The default value + is the class name if no value is supplied. + + + + + Gets a boolean indicating if this PersistentClass has any subclasses. + + if this PeristentClass has any subclasses. + + + + Gets the number of subclasses that inherit either directly or indirectly. + + The number of subclasses that inherit from this PersistentClass. + + + + Gets the Collection of Subclasses for this PersistentClass. + + + It will recursively go through Subclasses so that if a Subclass has Subclasses + it will pick those up also. + + + + + Gets an of objects + that directly inherit from this PersistentClass. + + + An of objects + that directly inherit from this PersistentClass. + + + + + Gets or Sets the that this class is stored in. + + The this class is stored in. + + The value of this is set by the table attribute. + + + + + Gets an of objects. + + + An of objects. + + + + + Gets the that is being mapped. + + The that is being mapped. + + The value of this is set by the name attribute on the <class> + element. + + + + + Gets the fully qualified name of the type being persisted. + + The fully qualified name of the type being persisted. + + + + When implemented by a class, gets or set a boolean indicating + if the mapped class has properties that can be changed. + + if the object is mutable. + + The value of this is set by the mutable attribute. + + + + + When implemented by a class, gets a boolean indicating + if the mapped class has a Property for the id. + + if there is a Property for the id. + + + + When implemented by a class, gets or sets the + that is used as the id. + + + The that is used as the id. + + + + + When implemented by a class, gets or sets the + that contains information about the identifier. + + The that contains information about the identifier. + + + + When implemented by a class, gets or sets the + that is used as the version. + + The that is used as the version. + + + + When implemented by a class, gets or sets the + that contains information about the discriminator. + + The that contains information about the discriminator. + + + + When implemented by a class, gets a boolean indicating if this + mapped class is inherited from another. + + + if this class is a subclass or joined-subclass + that inherited from another class. + + + + + When implemented by a class, gets or sets if the mapped class has subclasses or is + a subclass. + + + if the mapped class has subclasses or is a subclass. + + + + + When implemented by a class, gets a boolean indicating if the mapped class + has a version property. + + if there is a <version> property. + + + + When implemented by a class, gets or sets the CacheConcurrencyStrategy + to use to read/write instances of the persistent class to the Cache. + + The CacheConcurrencyStrategy used with the Cache. + + + + When implemented by a class, gets or sets the + that this mapped class is extending. + + + The that this mapped class is extending. + + + + + When implemented by a class, gets or sets a boolean indicating if + explicit polymorphism should be used in Queries. + + + if only classes queried on should be returned, + if any class in the heirarchy should implicitly be returned. + + The value of this is set by the polymorphism attribute. + + + + + When implemented by a class, gets an + of objects that this mapped class contains. + + + An of objects that + this mapped class contains. + + + This is all of the properties of this mapped class and each mapped class that + it is inheriting from. + + + + + When implemented by a class, gets an + of objects that this mapped class reads from + and writes to. + + + An of objects that + this mapped class reads from and writes to. + + + This is all of the tables of this mapped class and each mapped class that + it is inheriting from. + + + + + Gets an of objects that + this mapped class contains and that all of its subclasses contain. + + + An of objects that + this mapped class contains and that all of its subclasses contain. + + + + + Gets an of all of the objects that the + subclass finds its information in. + + An of objects. + It adds the TableClosureCollection and the subclassTables into the ICollection. + + + + Gets or sets the to use as a Proxy. + + The to use as a Proxy. + + The value of this is set by the proxy attribute. + + + + + Gets or sets a boolean indicating if only values in the discriminator column that + are mapped will be included in the sql. + + if the mapped discriminator values should be forced. + + The value of this is set by the force attribute on the discriminator element. + + + + + + + + + + + + + + + When implemented by a class, gets or sets a boolean indicating if the identifier is + embedded in the class. + + if the class identifies itself. + + An embedded identifier is true when using a composite-id specifying + properties of the class as the key-property instead of using a class + as the composite-id. + + + + + When implemented by a class, gets or sets the of the Persister. + + + + + When implemented by a class, gets the of the class + that is mapped in the class element. + + + The of the class that is mapped in the class element. + + + + + When implemented by a class, gets the of the class + that is mapped in the class element. + + + The of the class that is mapped in the class element. + + + + + When implemented by a class, gets or sets the + that contains information about the Key. + + The that contains information about the Key. + + + + + + + + + + + + + + When implemented by a class, gets or sets the sql string that should + be a part of the where clause. + + + The sql string that should be a part of the where clause. + + + The value of this is set by the where attribute. + + + + + + + + + + + + + + + Build a collection of properties which are "referenceable". + + + See for a discussion of "referenceable". + + + + + A Primary Key constraint in the database. + + + + + Generates the SQL string to create the Primary Key Constraint in the database. + + The to use for SQL rules. + + + A string that contains the SQL to create the Primary Key Constraint. + + + + + Generates the SQL string to create the named Primary Key Constraint in the database. + + The to use for SQL rules. + The name to use as the identifier of the constraint in the database. + + + A string that contains the SQL to create the named Primary Key Constraint. + + + + + Get the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + A string that contains the SQL to drop this Constraint. + + + + + A primitive array has a primary key consisting + of the key columns + index column. + + + + + + + + + + + + + + Mapping for a property of a .NET class (entity + or component). + + + + + Gets the number of columns this property uses in the db. + + + + + Gets an of s. + + + + + Gets or Sets the name of the Property in the class. + + + + + + + + Indicates whether given properties are generated by the database and, if + so, at what time(s) they are generated. + + + + + Values for this property are never generated by the database. + + + + + Values for this property are generated by the database on insert. + + + + + Values for this property are generated by the database on both insert and update. + + + + + Declaration of a System.Type mapped with the <class> element that + is the root class of a table-per-sublcass, or table-per-concrete-class + inheritance heirarchy. + + + + + The default name of the column for the Identifier + + id is the default column name for the Identifier. + + + + The default name of the column for the Discriminator + + class is the default column name for the Discriminator. + + + + Adds a to the class hierarchy. + + The to add to the hierarchy. + + When a is added this mapped class has the property + set to . + + + + + + + + + + + Gets or sets the that is used as the id. + + + The that is used as the id. + + + + + Gets or sets the that contains information about the identifier. + + The that contains information about the identifier. + + + + Gets a boolean indicating if the mapped class has a Property for the id. + + if there is a Property for the id. + + + + Gets or sets the that contains information about the discriminator. + + The that contains information about the discriminator. + + + + Gets a boolean indicating if this mapped class is inherited from another. + + + because this is the root mapped class. + + + + + Gets or sets if the mapped class has subclasses. + + + if the mapped class has subclasses. + + + + + Gets the of the class that is mapped in the class element. + + + this since this is the root mapped class. + + + + + Gets an of objects that this mapped class contains. + + + An of objects that + this mapped class contains. + + + + + Gets an of objects that this + mapped class reads from and writes to. + + + An of objects that + this mapped class reads from and writes to. + + + There is only one in the since + this is the root class. + + + + + Gets or sets a boolean indicating if explicit polymorphism should be used in Queries. + + + if only classes queried on should be returned, + if any class in the heirarchy should implicitly be returned. + + + + + Gets or sets the that is used as the version. + + The that is used as the version. + + + + Gets a boolean indicating if the mapped class has a version property. + + if there is a Property for a version. + + + + Gets or sets the CacheConcurrencyStrategy + to use to read/write instances of the persistent class to the Cache. + + The CacheConcurrencyStrategy used with the Cache. + + + + Gets or sets the cache region name. + + The region name used with the Cache. + + + + Gets or set a boolean indicating if the mapped class has properties that can be changed. + + if the object is mutable. + + + + Gets or sets a boolean indicating if the identifier is + embedded in the class. + + if the class identifies itself. + + An embedded identifier is true when using a composite-id specifying + properties of the class as the key-property instead of using a class + as the composite-id. + + + + + Gets or sets the of the Persister. + + The of the Persister. + + + + Gets the of the class + that is mapped in the class element. + + + The of the class this mapped class. + + + + + Gets or sets the that this mapped class is extending. + + + since this is the root class. + + + Thrown when the setter is called. The Superclass can not be set on the + RootClass, only the Subclass can have a Superclass set. + + + + + Gets or sets the that contains information about the Key. + + The that contains information about the Key. + + + + Gets or sets a boolean indicating if only values in the discriminator column that + are mapped will be included in the sql. + + if the mapped discriminator values should be forced. + + + + Gets or sets the sql string that should be a part of the where clause. + + + The sql string that should be a part of the where clause. + + + + + + + + + + + + + + + A Set with no nullable element columns will have a primary + key consisting of all table columns (ie - key columns + + element columns). + + + + + Declaration of a System.Type mapped with the <subclass> or + <joined-subclass> element. + + + + + Initializes a new instance of the class. + + The that is the superclass. + + + + Add the to this PersistentClass. + + The to add. + + This also adds the to the Superclass' collection + of Subclass Properties. + + + + + Adds a that is implemented by a subclass. + + The implemented by a subclass. + + This also adds the to the Superclass' collection + of Subclass Properties. + + + + + Adds a that a subclass is stored in. + + The the subclass is stored in. + + This also adds the to the Superclass' collection + of Subclass Tables. + + + + + + + + + + + + + + + + Gets or sets the CacheConcurrencyStrategy + to use to read/write instances of the persistent class to the Cache. + + The CacheConcurrencyStrategy used with the Cache. + + + + Gets the of the class that is mapped in the class element. + + + The of the Superclass that is mapped in the class element. + + + + + Gets or sets the that this mapped class is extending. + + + The that this mapped class is extending. + + + + + + + + + + Gets or sets the that is used as the id. + + + The from the Superclass that is used as the id. + + + + + Gets or sets the that contains information about the identifier. + + The from the Superclass that contains information about the identifier. + + + + Gets a boolean indicating if the mapped class has a Property for the id. + + if in the Superclass there is a Property for the id. + + + + Gets or sets the that contains information about the discriminator. + + The from the Superclass that contains information about the discriminator. + + + + Gets or set a boolean indicating if the mapped class has properties that can be changed. + + if the Superclass is mutable. + + + + Gets a boolean indicating if this mapped class is inherited from another. + + + because this is a Subclass. + + + + + Gets or sets if the mapped class is a subclass. + + + since this mapped class is a subclass. + + + The setter should not be used to set the value to anything but . + + + + + Gets or Sets the that this class is stored in. + + The this class is stored in. + + This also adds the to the Superclass' collection + of Subclass Tables. + + + + + Gets an of objects that this mapped class contains. + + + An of objects that + this mapped class contains. + + + This is all of the properties of this mapped class and each mapped class that + it is inheriting from. + + + + + Gets an of objects that this + mapped class reads from and writes to. + + + An of objects that + this mapped class reads from and writes to. + + + This is all of the tables of this mapped class and each mapped class that + it is inheriting from. + + + + + Gets a boolean indicating if the mapped class has a version property. + + if for the Superclass there is a Property for a version. + + + + Gets or sets the that is used as the version. + + The from the Superclass that is used as the version. + + + + Gets or sets a boolean indicating if the identifier is + embedded in the class. + + if the Superclass has an embedded identifier. + + An embedded identifier is true when using a composite-id specifying + properties of the class as the key-property instead of using a class + as the composite-id. + + + + + Gets the of the class + that is mapped in the class element. + + + The of the Superclass that is mapped in the class element. + + + + + Gets or sets the that contains information about the Key. + + The that contains information about the Key. + + + + Gets or sets a boolean indicating if explicit polymorphism should be used in Queries. + + + The value of the Superclasses IsExplicitPolymorphism property. + + + + + Gets the sql string that should be a part of the where clause. + + + The sql string that should be a part of the where clause. + + + Thrown when the setter is called. The where clause can not be set on the + Subclass, only the RootClass. + + + + + + + + + + + + + + + Represents a Table in a database that an object gets mapped against. + + + + + Initializes a new instance of . + + + + + Gets the schema qualified name of the Table. + + The that knows how to Quote the Table name. + The name of the table qualified with the schema if one is specified. + + + + Gets the schema qualified name of the Table using the specified qualifier + + The that knows how to Quote the Table name. + The Qualifier to use when accessing the table. + A String representing the Qualified name. + If this were used with MSSQL it would return a dbo.table_name. + + + + Gets the name of this Table in quoted form if it is necessary. + + + The that knows how to quote the Table name. + + + The Table name in a form that is safe to use inside of a SQL statement. + Quoted if it needs to be, not quoted if it does not need to be. + + + + + Gets the schema for this table in quoted form if it is necessary. + + + The that knows how to quote the table name. + + + The schema name for this table in a form that is safe to use inside + of a SQL statement. Quoted if it needs to be, not quoted if it does not need to be. + + + + + Gets the at the specified index. + + The index of the Column to get. + + The at the specified index. + + + + + Adds the to the of + Columns that are part of the Table. + + The to include in the Table. + + + + + + + + + + + + + Generates the SQL string to create this Table in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to create this Table, Primary Key Constraints + , and Unique Key Constraints. + + + + + Generates the SQL string to drop this Table in the database. + + The to use for SQL rules. + + + A string that contains the SQL to drop this Table and to cascade the drop to + the constraints if the database supports it. + + + + + Gets the identified by the name. + + The name of the to get. + + The identified by the name. If the + identified by the name does not exist then it is created. + + + + + Gets the identified by the name. + + The name of the to get. + + The identified by the name. If the + identified by the name does not exist then it is created. + + + + + Create a for the columns in the Table. + + + An of objects. + + + A for the columns in the Table. + + + This does not necessarily create a , if + one already exists for the columns then it will return an + existing . + + + + + Generates a unique string for an of + objects. + + An of objects. + + An unique string for the objects. + + + + + Sets the Identifier of the Table. + + The that represents the Identifier. + + + + + + + + + + Gets or sets the name of the Table in the database. + + + The name of the Table in the database. The get does + not return a Quoted Table name. + + +

+ If a value is passed in that is wrapped by ` then + NHibernate will Quote the Table whenever SQL is generated + for it. How the Table is quoted depends on the Dialect. +

+

+ The value returned by the getter is not Quoted. To get the + column name in quoted form use . +

+
+
+ + + Gets the number of columns that this Table contains. + + + The number of columns that this Table contains. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets or sets the of the Table. + + The of the Table. + + + + Gets or sets the schema the table is in. + + + The schema the table is in or if no schema is specified. + + + + + Gets the unique number of the Table. + + The unique number of the Table. + + + + Gets or sets if the column needs to be quoted in SQL statements. + + if the column is quoted. + + + + An Unique Key constraint in the database. + + + + + Generates the SQL string to create the Unique Key Constraint in the database. + + The to use for SQL rules. + + A string that contains the SQL to create the Unique Key Constraint. + + + + + Generates the SQL string to create the Unique Key Constraint in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to create the Unique Key Constraint. + + + + + Get the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + A string that contains the SQL to drop this Constraint. + + + + + Exposes entity class metadata to the application + + + + + Create a class instance initialized with the given identifier + + + + + + + Get the type of a particular (named) property + + + + + + + Get the value of a particular (named) property + + + + + + + + Set the value of a particular (named) property + + + + + + + + Return the values of the mapped properties of the object + + + + + + Set the given values to the mapped properties of the given object + + + + + + + Get the identifier of an instance (throw an exception if no identifier property) + + + + + + + Set the identifier of an instance (or do nothing if no identifier property) + + + + + + + Get the version number (or timestamp) from the object's version property + (or return null if not versioned) + + + + + + + The persistent class + + + + + The name of the identifier property (or return null) + + + + + The names of the class' persistent properties + + + + + The identifier Hibernate type + + + + + The Hibernate types of the classes properties + + + + + Does the class implement the ILifecycle interface? + + + + + Does the class implement the IValidatable inteface? + + + + + Does the class support dynamic proxies? + + + + + Are instances of this class mutable? + + + + + Are instances of this class versioned by a timestamp or version number column? + + + + + Gets the index of the version property + + + + + Get the nullability of the class' persistent properties + + + + + Does the class have an identifier property? + + + + + Exposes collection metadata to the application + + + + + The collection key type + + + + + The collection element type + + + + + The collection index type (or null if the collection has no index) + + + + + Is the collection indexed? + + + + + The name of this collection role + + + + + Is the collection an array? + + + + + Is the collection a primitive array? + + + + + Is the collection lazily initialized? + + + + + Summary description for AbstractCollectionPersister. + + + + + A collection role that may be queried or loaded by outer join. + + + + + Abstraction of all mappings that define properties: entities, collection elements. + + + + + Given a component path expression, get the type of the property + + + + + + + Given a query alias and a property path, return the qualified column name + + + + + + + + Get the type of the thing containing the properties + + + + + Anything that can be loaded by outer join - namely persisters for classes or collections. + + + + + All columns to select, when loading. + + + + + Get the where clause part of any joins (optional operation) + + + + + + + + + Get the from clause part of any joins (optional operation) + + + + + + + + + Get the where clause filter, given a query alias and considering enabled session filters + + + + + Very, very, very ugly... + + Does this persister "consume" entity column aliases in the result + set? + + + + Very, very, very ugly... + + Does this persister "consume" collection column aliases in the result + set? + + + + An identifying name; a class name or collection role name. + + + + + The table to join to. + + + + + The columns to join on. + + + + + Is this instance actually a ICollectionPersister? + + + + + Is this instance actually a many-to-many association? + + + + +

A strategy for persisting a collection role. Defines a contract between + the persistence strategy and the actual persistent collection framework + and session. Does not define operations that are required for querying + collections, or loading by outer join.

+

+ Implements persistence of a collection instance while the instance is + referenced in a particular role.

+

+ This class is highly coupled to the + hierarchy, since double dispatch is used to load and update collection + elements.

+
+ + May be considered an immutable view of the mapping object + +
+ + + Initialize the given collection with the given key + + + + + + + Read the key from a row of the + + + + + Read the element from a row of the + + + + + Read the index from a row of the + + + + + Read the identifier from a row of the + + + + + Completely remove the persistent state of the collection + + + + + + + (Re)create the collection's persistent state + + + + + + + + Delete the persistent state of any elements that were removed from the collection + + + + + + + + Update the persistent state of any elements that were modified + + + + + + + + Insert the persistent state of any new collection elements + + + + + + + + Generates the collection's key column aliases, based on the given + suffix. + + The suffix to use in the key column alias generation. + The key column aliases. + + + + Generates the collection's index column aliases, based on the given + suffix. + + The suffix to use in the index column alias generation. + The index column aliases, or null if not indexed. + + + + Generates the collection's element column aliases, based on the given + suffix. + + The suffix to use in the element column alias generation. + The element column aliases. + + + + Generates the collection's identifier column aliases, based on the given + suffix. + + The suffix to use in the identifier column alias generation. + The identifier column aliases. + + + + Get the cache + + + + + Is this collection role cacheable + + + + + Get the associated IType + + + + + Get the "key" type (the type of the foreign key) + + + + + Get the "index" type for a list or map (optional operation) + + + + + Get the "element" type + + + + + Return the element class of an array, or null otherwise + + + + + Is this an array or primitive values? + + + + + Is this an array? + + + + + Is this a one-to-many association? + + + + + Is this an "indexed" collection? (list or map) + + + + + Is this collection lazyily initialized? + + + + + Is this collection "inverse", so state changes are not propogated to the database. + + + + + Get the name of this collection role (the fully qualified class name, extended by a "property path") + + + + + Get the entity class that "owns" this collection + + + + + Get the surrogate key generation strategy (optional operation) + + + + + Get the type of the surrogate key + + + + + Does this collection implement "orphan delete"? + + + + + Is this an ordered collection? (An ordered collection is + ordered by the initialization operation, not by sorting + that happens in memory, as in the case of a sorted collection.) + + + + + Get the "space" that holds the persistent state + + + + + Generate a list of collection index and element columns + + + + + Get the names of the collection element columns (or the primary + key columns in the case of a one-to-many association), + aliased by the given table alias + + + + + Get the extra where clause filter SQL + + + + + + + Get the order by SQL + + + + + + + Get the order-by to be applied at the target table of a many to many + + The alias for the many-to-many target table + Appropriate order-by fragment or empty string. + + + + Get the names of the collection index columns if this is an indexed collection (optional operation) + + + + + Get the names of the collection element columns (or the primary key columns in the case of a one-to-many association) + + + + + Does this collection role have a where clause filter? + + + + + Get the persister of the element class, if this is a + collection of entities (optional operation). Note that + for a one-to-many association, the returned persister + must be OuterJoinLoadable. + + + + + Should we load this collection role by outer joining? + + + + + Reads the Element from the IDataReader. The IDataReader will probably only contain + the id of the Element. + + See ReadElementIdentifier for an explanation of why this method will be depreciated. + + + + Gets just the Identifier of the Element for the Collection. + + + + + + + This was created in addition to ReadElement because ADO.NET does not allow + for 2 IDataReaders to be open against a single IDbConnection at one time. + + When a Collection is loaded it was recursively opening IDbDataReaders to resolve + the Element for the Collection while the IDbDataReader was open that contained the + record for the Collection. + + + + + Return the element class of an array, or null otherwise + + + + + Get the name of this collection role (the fully qualified class name, + extended by a "property path") + + + + + Collection persister for collections of values and many-to-many associations. + + + + + Generate the SQL DELETE that deletes all rows + + + + + + Generate the SQL INSERT that creates a new row + + + + + + Generate the SQL UPDATE that updates a row + + + + + + Generate the SQL DELETE that deletes a particular row + + + + + + Create the + + + + + Summary description for CollectionPropertyMapping. + + + + + The names of all the collection properties. + + + + + Summary description for CompositeElementPropertyMapping. + + + + + Base implementation of a PropertyMapping. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for ElementPropertyMapping. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for OneToManyPersister. + + + + + Generate the SQL UPDATE that updates all the foreign keys to null + + + + + + Generate the SQL UPDATE that updates a foreign key to a value + + + + + + Not needed for one-to-many association + + + + + + Generate the SQL UPDATE that updates a particular row's foreign + key to null + + + + + + Create the + + + + + Superclass for built-in mapping strategies. Implements functionalty common to both mapping + strategies + + + May be considered an immutable view of the mapping object + + + + + A ClassPersister that may be loaded by outer join using + the OuterJoinLoader hierarchy and may be an element + of a one-to-many association. + + + + + Implemented by ClassPersister that uses Loader. There are several optional + operations used only by loaders that inherit OuterJoinLoader + + + + + Concrete IEntityPersisters implement mapping and persistence logic for a particular class. + + + Implementors must be threadsafe (preferrably immutable) and must provide a constructor of type + (PersistentClass, SessionFactoryImplementor) + + + + + Finish the initialization of this object, once all ClassPersisters have been + instantiated. Called only once, before any other method. + + + + + Create a new proxy instance + + + + + + + + Is this a new transient instance? + + + + + + + Set the given values to the mapped properties of the given object + + + + + + + Return the values of the mapped properties of the object + + + + + + + Set the value of a particular property + + + + + + + + Get the value of a particular property + + + + + + + + Get the value of a particular property + + + + + + + + Get the type of a particular property + + + + + + + Compare two snapshots of the state of an instance to determine if the persistent state + was modified + + + + + + or the indices of the dirty properties + + + + Compare the state of an instance to the current database state + + + + + + return or the indicies of the modified properties + + + + Get the identifier of an instance ( throw an exception if no identifier property) + + + + + + + Set the identifier of an instance (or do nothing if no identifier property) + + The object to set the Id property on. + The value to set the Id property to. + + + + Get the version number (or timestamp) from the object's version property (or return null if not versioned) + + + + + + + Create a class instance initialized with the given identifier + + + + + + + Load an insatance of the persistent class. + + + + + + + + + + Do a version check (optional operation) + + + + + + + + + + Persist an instance + + + + + + + + + Persist an instance, using a natively generated identifier (optional operation) + + + + + + + + + Delete a persistent instance + + + + + + + + + Update a persistent instance + + The id. + The fields. + The dirty fields. + if set to [has dirty collection]. + The old fields. + The old version. + The obj. + The session. + + + + Get the current database state of the object, in a "hydrated" form, without resolving identifiers + + + + + if select-before-update is not enabled or not supported + + + + Get the current version of the object, or return null if there is no row for + the given identifier. In the case of unversioned data, return any object + if the row exists. + + + + + + + + + + + NHibernate-specific feature, not present in H2.1 + + + + Determines whether the specified entity is an instance of the class + managed by this persister. + + The entity. + + if the specified entity is an instance; otherwise, . + + + + + Perform a select to retrieve the values of any generated properties + back from the database, injecting these generated values into the + given entity as well as writing this state to the persistence context. + + + Note, that because we update the persistence context here, callers + need to take care that they have already written the initial snapshot + to the persistence context before calling this method. + + The entity's id value. + The entity for which to get the state. + The entity state (at the time of Save). + The session. + + + + Perform a select to retrieve the values of any generated properties + back from the database, injecting these generated values into the + given entity as well as writing this state to the persistence context. + + + Note, that because we update the persistence context here, callers + need to take care that they have already written the initial snapshot + to the persistence context before calling this method. + + The entity's id value. + The entity for which to get the state. + The entity state (at the time of Save). + The session. + + + + Returns an object that identifies the space in which identifiers of this class hierarchy + are unique. eg. a table name, etc. + + + + + Returns an array of objects that identifies spaces in which properties of this class + instance are persisted. eg. table names. + + + + + + The persistent class + + + + + The classname of the persistent class (used only for messages) + + + + + Does the class implement the ILifecycle inteface? + + + + + Does the class implement the IValidatable interface? + + + + + Does this class support dynamic proxies? + + + + + Get the proxy interface that instances of this concrete class will be cast to + + + + + Do instances of this class contain collections? + + + + + Does this class declare any cascading save/update/deletes? + + + + + Are instances of this class mutable? + + + + + Is the identifier assigned before the insert by an IDGenerator or is it returned + by the Insert() method? + + + This determines which form of Insert() will be called. + + + + + Does the class have a property holding the identifier value? + + + + + Gets if the Type has a Property for the <id> or uses a <composite-id> + to store the id. + + true if there is a Identifier Property or Composite Identifier. + + + + Are instances of this class versioned by a timestamp or version number column? + + + + + Get the type of versioning (optional operation) + + + + + Which property holds the version number? (optional operation) + + + + + Return the IIdentifierGenerator for the class + + + + + Get the Hibernate types of the class properties + + + + + Get the names of the class properties - doesn't have to be the names of the actual + .NET properties (used for XML generation only) + + + + + Gets if the Property is updatable + + if the Property's value can be updated. + + This is for formula columns and if the user sets the update attribute on the <property> element. + + + + + Properties that may be dirty (and thus should be dirty-checked). These + include all updatable properties and some associations. + + + + + Get the nullability of the properties of this class + + + + + Gets if the Property is insertable. + + if the Property's value can be inserted. + + This is for formula columns and if the user sets the insert attribute on the <property> element. + + + + + Get the "versionability" of the properties of this class (is the property optimistic-locked) + + if the property is optimistic-locked; otherwise, . + + + + Get the cascade styles of the properties (optional operation) + + + + + Get the identifier type + + + + + Get the name of the indentifier property (or return null) - need not return the + name of an actual .NET property + + + + + Should we always invalidate the cache instead of recaching updated state + + + + + Does this class have a cache? + + + + + Get the cache (optional operation) + + + + + Get the user-visible metadata for the class (optional operation) + + + + + Is batch loading enabled? + + + + + Returns an array of objects that identify spaces in which properties of this class are persisted, + for instances of this class and its subclasses. + + + + + The session factory this instance is associated with. + + + + + Does this entity contain a version property that is defined + to be database generated? + + + + + Does this entity define any properties as being database-generated on insert? + + + + + Does this entity define any properties as being database-generated on update? + + + + + Get the concrete subclass corresponding to the given discriminator value + + + + + Get the result set aliases used for the identifier columns, given a suffix + + + + + Get the result set aliases used for the property columns, given a suffix (properties of this class, only). + + + + + Get the result set column names mapped for this property (properties of this class, only). + + + + + Get the alias used for the discriminator column, given a suffix + + + + + Does the persistent class have subclasses? + + + + + The discriminator type + + + + + Get the names of columns used to persist the identifier + + + + + Get the name of the column used as a discriminator + + + + + Does this entity own any collections which are fetchable by subselect? + + + + + How many properties are there, for this class and all subclasses? (optional operation) + + + + + + May this property be fetched using an SQL outerjoin? + + + + + + + Get the cascade style of this (subclass closure) property + + + + + Is this property defined on a subclass of the mapped class? + + + + + + + Get an array of the types of all properties of all subclasses (optional operation) + + + + + + + Get the name of the numbered property of the class or a subclass + (optional operation) + + + + + + + Is the numbered property of the class of subclass nullable? + + + + + Return the column names used to persist all properties of all sublasses of the persistent class + (optional operation) + + + + + Return the table name used to persist the numbered property of + the class or a subclass + (optional operation) + + + + + Given the number of a property of a subclass, and a table alias, return the aliased column names + (optional operation) + + + + + + + + Get the main from table fragment, given a query alias (optional operation) + + + + + + + Generate a list of collection index and element columns + + + + + + + + Get the column names for the given property path + + + + + Get the table name for the given property path + + + + + Extends the generic ILoadable contract to add operations required by HQL + + + + + Get the where clause fragment, give a query alias + + SQL alias to use for column names in the returned query + + + + + + + Given a query alias and an identifying suffix, render the intentifier select fragment. + + + + + + + + Given a query alias and an identifying suffix, render the property select fragment. + + + + + + + + Is this class mapped as a subclass of another class? + + + + + Is this class explicit polymorphism only? + + + + + The class that this class is mapped as a subclass of - not necessarily the direct superclass + + + + + The discriminator value for this particular concrete subclass, as a string that may be + embedded in a select statement + + + + + The discriminator value for this particular concrete subclass (the value in the hbm) + + + + + Describes a class that may be loaded via a unique key. + + + + + Load an instance of the persistent class, by a unique key other than the primary key. + + + + + + + + + Get the property number of the unique key property + + + + + A class persister that supports queries expressed in the platform native SQL dialect. + + + + + Returns the column alias names used to persist/query the numbered property of the class or a subclass (optional operation). + + + + + + + + All columns to select, when loading. + + + + + Get the type + + + + + Set the given values to the mapped properties of the given object + + + Use the access optimizer if available + + + + + Return the values of the mapped properties of the object + + + Uses the access optimizer, if available. + + + + + Get the value of the numbered property + + + + + + + + Set the value of the numbered property + + + + + + + + Determine if the given field values are dirty. + + + + + + + + + + Determine if the given field values are dirty. + + + + + + + + + + Return a new instance initialized with the given identifier. + + + + + + + Returns the SQL used to get the Identity value from the last insert. + + This is not a NHibernate Command because the SQL contains no parameters. + + + + Must be called by subclasses, at the end of their constructors + + + + + + Retrieve the version number + + + + + + + + Do a version check + + + + + Generate the SQL that selects the version number by id + + + + + + Transform the array of property indexes to an array of booleans + + + + + Get the column names for the numbered property of this class + + + + + Decide which tables need to be updated + + + + + Persist an object, using a natively generated identifier + + + + + Warning: + When there are duplicated property names in the subclasses + of the class, this method may return the wrong table + number for the duplicated subclass property (note that + SingleTableEntityPersister defines an overloaded form + which takes the entity name. + + + + + Load an instance using the appropriate loader (as determined by + + + + + Delete an object. + + + + + Persist an object + + + + + Determines whether the specified entity is an instance of the class + managed by this persister. + + The entity. + + if the specified entity is an instance; otherwise, . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The queries that delete rows by id (and version) + + + + + The queries that insert rows with a given id + + + + + The query that insert a row into the root table, letting the database generate an id + + + + + The queries that update rows by id (and version) + + + + + A IEntityPersister implementing the normalized "table-per-subclass" mapping strategy + + + + + Generate the SQL that pessimistic locks a row by id (and version) + + An existing SqlString to copy for then new SqlString. + + A new SqlString + + The parameter sqlString does not get modified. It is Cloned to make a new SqlString. + If the parametersqlString is null a new one will be created. + + + + + Constructs the NormalizedEntityPerister for the PersistentClass. + + The PeristentClass to create the EntityPersister for. + The configured . + The SessionFactory that this EntityPersister will be stored in. + The mapping used to retrieve type information. + + + + Create a new one dimensional array sorted in the Reverse order of the original array. + + The original array. + A new array in the reverse order of the original array. + + + + Create a new two dimensional array sorted in the Reverse order of the original array. The + second dimension is not reversed. + + The original array. + A new array in the reverse order of the original array. + + + + Find the Index of the table name from a list of table names. + + The name of the table to find. + The array of table names + The Index of the table in the array. + Thrown when the tableName specified can't be found + + + + Constants from interface. + + + + + Default implementation of the ClassPersister interface. Implements the + "table-per-class hierarchy" mapping strategy for an entity class. + + + + + Generate the SQL that selects a row by id using FOR UPDATE + + + + + + Generate the SQL that selects a row by id using FOR UPDATE NOWAIT + + + + + + Generates an SqlString that selects a row by id + + SQL containing FOR UPDATE clauses + to append at the end of the query (optional) + + + + + Generate the SQL that updates a row by id, excluding subclasses + + + + + + + Generates the SQL that pessimistically locks a row by id (and version) + + An existing SqlString to copy for then new SqlString. + + A new SqlString + + The parameter sqlString does not get modified. It is Cloned to make a new SqlString. + If the parametersqlString is null a new one will be created. + + + + + + + + + + + Factory for IEntityPersister and ICollectionPersister instances. + + + + + Creates a built in Entity Persister or a custom Persister. + + + + + Creates a specific Persister - could be a built in or custom persister. + + + + + An for a Property get. + + + + + Gets values of a particular mapped property. + + + + + When implemented by a class, gets the value of the Property/Field from the object. + + The object to get the Property/Field value from. + + The value of the Property for the target. + + + Thrown when there is a problem getting the value from the target. + + + + + When implemented by a class, gets the that the Property/Field returns. + + The that the Property returns. + + + + When implemented by a class, gets the name of the Property. + + The name of the Property or . + + This is an optional operation - if the is not + for a Property get then is an acceptable value to return. + + + + + When implemented by a class, gets the for the get + accessor of the property. + + + This is an optional operation - if the is not + for a property get then is an acceptable value to return. + It is used by the proxies to determine which getter to intercept for the + identifier property. + + + + + An that can emit IL to get the property value. + + + + + Emit IL to get the property value from the object on top of the stack. + + + + + Initializes a new instance of . + + The that contains the Property get. + The for reflection. + The name of the Property. + + + + Gets the value of the Property from the object. + + The object to get the Property value from. + + The value of the Property for the target. + + + + + Gets the that the Property returns. + + The that the Property returns. + + + + Gets the name of the Property. + + The name of the Property. + + + + Gets the for the Property. + + + The for the Property. + + + + + Accesses mapped property values via a get/set pair, which may be nonpublic. + The default (and recommended strategy). + + + + + Abstracts the notion of a "property". Defines a strategy for accessing the + value of a mapped property. + + + + + When implemented by a class, create a "getter" for the mapped property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + When implemented by a class, create a "setter" for the mapped property. + + The to find the Property in. + The name of the mapped Property to set. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Create a for the mapped property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Create a for the mapped property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Helper method to find the Property get. + + The to find the Property in. + The name of the mapped Property to get. + + The for the Property get or + if the Property could not be found. + + + + + Helper method to find the Property set. + + The to find the Property in. + The name of the mapped Property to set. + + The for the Property set or + if the Property could not be found. + + + + + An for a Property set. + + + + + Sets values of a particular mapped property. + + + + + When implemented by a class, sets the value of the Property/Field on the object. + + The object to set the Property value in. + The value to set the Property to. + + Thrown when there is a problem setting the value in the target. + + + + + When implemented by a class, gets the name of the Property. + + The name of the Property or . + + This is an optional operation - if it is not implemented then + is an acceptable value to return. + + + + + When implemented by a class, gets the for the set + accessor of the property. + + + This is an optional operation - if the is not + for a property set then is an acceptable value to return. + It is used by the proxies to determine which setter to intercept for the + identifier property. + + + + + An that can emit IL to set the property value. + + + + + Emit IL to set the property of an object to the value. The object + is loaded onto the stack first, then the value, then this method + is called. + + + + + Initializes a new instance of . + + The that contains the Property set. + The for reflection. + The name of the mapped Property. + + + + Sets the value of the Property on the object. + + The object to set the Property value in. + The value to set the Property to. + + Thrown when there is a problem setting the value in the target. + + + + + Gets the name of the mapped Property. + + The name of the mapped Property or . + + + + Gets the for the mapped Property. + + The for the mapped Property. + + + + Implementation of for fields that are the + camelCase version of the PropertyName + + + + + A Strategy for converting a mapped property name to a Field name. + + + + + When implemented by a class, converts the Property's name into a Field name + + The name of the mapped property. + The name of the Field. + + + + Converts the Property's name into a Field name by making the first character + lower case. + + The name of the mapped property. + The name of the Field in CamelCase format. + + + + Implementation of for fields that are prefixed with + an underscore and the PropertyName is changed to camelCase. + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName lowercase and prefixing it with an underscore. + + The name of the mapped property. + The name of the Field in CamelCase format prefixed with an underscore. + + + + Access the mapped property by using a Field to get and set the value. + + + The is useful when you expose getter and setters + for a Property, but they have extra code in them that shouldn't be executed when NHibernate + is setting or getting the values for loads or saves. + + + + + Initializes a new instance of . + + + + + Initializes a new instance of . + + The to use. + + + + Create a to get the value of the mapped Property + through a Field. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Field specified by the propertyName could not + be found in the . + + + + + Create a to set the value of the mapped Property + through a Field. + + The to find the mapped Property in. + The name of the mapped Property to set. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Field for the Property specified by the propertyName using the + could not be found in the . + + + + + Helper method to find the Field. + + The to find the Field in. + The name of the Field to find. + + The for the field. + + + Thrown when a field could not be found. + + + + + Converts the mapped property's name into a Field using + the if one exists. + + The name of the Property. + The name of the Field. + + + + Gets the used to convert the name of the + mapped Property in the hbm.xml file to the name of the field in the class. + + The or . + + + + An that uses a Field instead of the Property get. + + + + + Initializes a new instance of . + + The that contains the field to use for the Property get. + The for reflection. + The name of the Field. + + + + Gets the value of the Field from the object. + + The object to get the Field value from. + + The value of the Field for the target. + + + + + Gets the that the Field returns. + + The that the Field returns. + + + + Gets the name of the Property. + + since this is a Field - not a Property. + + + + Gets the for the Property. + + since this is a Field - not a Property. + + + + An that uses a Field instead of the Property set. + + + + + Initializes a new instance of . + + The that contains the Field to use for the Property set. + The for reflection. + The name of the Field. + + + + Sets the value of the Field on the object. + + The object to set the Field value in. + The value to set the Field to. + + Thrown when there is a problem setting the value in the target. + + + + + Gets the name of the Property. + + since this is a Field - not a Property. + + + + Gets the for the Property. + + since this is a Field - not a Property. + + + + Implementation of for fields that are + the PropertyName in all LowerCase characters. + + + + + Converts the Property's name into a Field name by making the all characters + of the propertyName lowercase. + + The name of the mapped property. + The name of the Field in lowercase. + + + + Implementation of for fields that are prefixed with + an underscore and the PropertyName is changed to lower case. + + + + + Converts the Property's name into a Field name by making the all characters + of the propertyName lowercase and prefixing it with an underscore. + + The name of the mapped property. + The name of the Field in lowercase prefixed with an underscore. + + + + Access the mapped property through a Property get to get the value + and go directly to the Field to set the value. + + + This is most useful because Classes can provider a get for the Property + that is the <id> but tell NHibernate there is no setter for the Property + so the value should be written directly to the field. + + + + + Initializes a new instance of . + + The to use. + + + + Creates an to get the value from the Property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Create a to set the value of the mapped Property + through a Field. + + The to find the mapped Property in. + The name of the mapped Property to set. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Field for the Property specified by the propertyName using the + could not be found in the . + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName uppercase and prefixing it with the letter 'm'. + + The name of the mapped property. + The name of the Field in PascalCase format prefixed with an 'm'. + + + + Implementation of for fields that are prefixed with + an m_ and the first character in PropertyName capitalized. + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName uppercase and prefixing it with the letter 'm' + and an underscore. + + The name of the mapped property. + The name of the Field in PascalCase format prefixed with an 'm' and an underscore. + + + + Implementation of for fields that are prefixed with + an _ and the first character in PropertyName capitalized. + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName uppercase and prefixing it with an underscore. + + The name of the mapped property. + The name of the Field in PascalCase format prefixed with an underscore. + + + + Factory for creating the various PropertyAccessor strategies. + + + + + Initializes the static members in . + + + + + Gets or creates the specified by the type. + + + The specified by the type. + + + The built in ways of accessing the values of Properties in your domain class are: + + + + Access Method + How NHibernate accesses the Mapped Class. + + + property + + The name attribute is the name of the Property. This is the + default implementation. + + + + field + + The name attribute is the name of the field. If you have any Properties + in the Mapped Class those will be bypassed and NHibernate will go straight to the + field. This is a good option if your setters have business rules attached to them + or if you don't want to expose a field through a Getter & Setter. + + + + nosetter + + The name attribute is the name of the Property. NHibernate will use the + Property's get method to retreive the value and will use the field + to set the value. This is a good option for <id> Properties because this access method + allow's users of the Class to get the value of the Id but not set the value. + + + + Assembly Qualified Name + + If NHibernate's built in s are not what is needed for your + situation then you are free to build your own. Provide an Assembly Qualified Name so that + NHibernate can call Activator.CreateInstance(AssemblyQualifiedName) to create it. + + + + + In order for the nosetter to know the name of the field to access NHibernate needs to know + what the naming strategy is. The following naming strategies are built into NHibernate: + + + + Naming Strategy + How NHibernate converts the value of the name attribute to a field name. + + + camelcase + + The name attribute should be changed to CamelCase to find the field. + <property name="Foo" ... > finds a field foo. + + + + camelcase-underscore + + The name attribute should be changed to CamelCase and prefixed with + an underscore to find the field. + <property name="Foo" ... > finds a field _foo. + + + + pascalcase-underscore + + The name attribute should be prefixed with an underscore + to find the field. + <property name="Foo" ... > finds a field _Foo. + + + + pascalcase-m-underscore + + The name attribute should be prefixed with an 'm' and underscore + to find the field. + <property name="Foo" ... > finds a field m_Foo. + + + + pascalcase-m + + The name attribute should be prefixed with an 'm'. + <property name="Foo" ... > finds a field mFoo. + + + + lowercase + + The name attribute should be changed to lowercase to find the field. + <property name="FooBar" ... > finds a field foobar. + + + + lowercase-underscore + + The name attribute should be changed to lowercase and prefixed with + and underscore to find the field. + <property name="FooBar" ... > finds a field _foobar. + + + + + The naming strategy can also be appended at the end of the field access method. Where + this could be useful is a scenario where you do expose a get and set method in the Domain Class + but NHibernate should only use the fields. + + + With a naming strategy and a get/set for the Property available the user of the Domain Class + could write an Hql statement from Foo as foo where foo.SomeProperty = 'a'. If no naming + strategy was specified the Hql statement whould have to be from Foo as foo where foo._someProperty + (assuming CamelCase with an underscore field naming strategy is used). + + + + + + A for use with the Castle Dynamic Class Generator. + + + + + Provides the base functionallity to Handle Member calls into a dynamically + generated NHibernate Proxy. + + + This could be an extension point later if the .net framework ever gets a Proxy + class that is similar to the java.lang.reflect.Proxy or if a library similar + to cglib was made in .net. + + + + + If this is returned by Invoke then the subclass needs to Invoke the + method call against the object that is being proxied. + + + + + Create a LazyInitializer to handle all of the Methods/Properties that are called + on the Proxy. + + The Class to Proxy. + The Id of the Object we are Proxying. + + + The ISession this Proxy is in. + + + + Perform an ImmediateLoad of the actual object for the Proxy. + + + Thrown when the Proxy has no Session or the Session is closed or disconnected. + + + + + Adds all of the information into the SerializationInfo that is needed to + reconstruct the proxy during deserialization or to replace the proxy + with the instantiated target. + + + This will only be called if the Dynamic Proxy generator does not handle serialization + itself or delegates calls to the method GetObjectData to the LazyInitializer. + + + + + Invokes the method if this is something that the LazyInitializer can handle + without the underlying proxied object being instantiated. + + The name of the method/property to Invoke. + The arguments to pass the method/property. + The proxy object that the method is being invoked on. + + The result of the Invoke if the underlying proxied object is not needed. If the + underlying proxied object is needed then it returns the result + which indicates that the Proxy will need to forward to the real implementation. + + + + + Return the Underlying Persistent Object, initializing if necessary. + + The Persistent Object this proxy is Proxying. + + + + Return the Underlying Persistent Object in a given , or null. + + The Session to get the object from. + The Persistent Object this proxy is Proxying, or . + + + + + + + + + + + + + + + + Initializes a new object. + + The Class to Proxy. + The Id of the Object we are Proxying. + + + The ISession this Proxy is in. + + + + Invoke the actual Property/Method using the Proxy or instantiate the actual + object and use it when the Proxy can't handle the method. + + The from the generated Castle.DynamicProxy. + The parameters for the Method/Property + The result just like the actual object was called. + + + + Called immediately after instantiation + + + + + + + + + Create a new proxy + + The id value for the proxy to be generated. + The session to which the generated proxy will be + associated. + The generated proxy. + Indicates problems generating + requested proxy. + + + + Build a proxy using the Castle.DynamicProxy library. + + The value for the Id. + The Session the proxy is in. + A fully built INHibernateProxy. + + + + A marker interface so NHibernate can know if it is dealing with + an object that is a Proxy. + + + + This interface should not be implemented by anything other than + the Dynamically generated Proxy. If it is implemented by a class then + NHibernate will think that class is a Proxy and will not work. + + + It has to be public scope because + the Proxies are created in a seperate DLL than NHibernate. + + + + + + NHibernateProxyHelper provides convenience methods for working with + objects that might be instances of Classes or the Proxied version of + the Class. + + + + + Gets the that is used by the Proxy. + + The Proxy object + + A reference to that contains the details + of the Proxied object. + + + + + Convenience method to figure out the underlying type for the object regardless of it + is a Proxied object or the real object. + + The object to get the type of. + The Underlying Type for the object regardless of if it is a Proxy. + + + + Get the true, underlying class of a proxied persistent class. This operation + will NOT initialize the proxy and thus may return an incorrect result. + + a persistable object or proxy + guessed class of the instance + + This method is approximate match for Session.bestGuessEntityName in H3.2 + + + + + Validates whether can be specified as the base class + (or an interface) for a dynamically-generated proxy. + + + A collection of errors, if any, or if none were found. + + The type to validate. + + + + Aliases tables and fields for Sql Statements. + + + Several methods of this class take an additional + parameter, while their Java counterparts + do not. The dialect is used to correctly quote and unquote identifiers. + Java versions do the quoting and unquoting themselves and fail to + consider dialect-specific rules, such as escaping closing brackets in + identifiers on MS SQL 2000. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents an SQL case when ... then ... end as ... + + This class looks StringHelper.SqlParameter safe... + + + + Represents an SQL case when ... then ... end as ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An ANSI-style Join. + + + + + + + + Sets the op + + The op to set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents an SQL decode(pkvalue, key1, 1, key2, 2, ..., 0) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents an SQL for update of ... nowait statement + + + + + Represents an ... in (...) expression + + + + + Add a value to the value list. Value may be a string, + a , or one of special values + or . + + + + + + + + + + + + + + + + + + + + + + + + + + Builds a SqlString from the internal data. + + A valid SqlString that can be converted into an IDbCommand + + + + + + + An Oracle-style (theta) Join + + + + + This method is a bit of a hack, and assumes + that the column on the "right" side of the + join appears on the "left" side of the + operator, which is extremely wierd if this + was a normal join condition, but is natural + for a filter. + + + + + A placeholder for an ADO.NET parameter in an . + + + + + Used as a placeholder when parsing HQL or SQL queries. + + + + + Generates an array of parameters for the given SqlTypes. + + The number of parameters to generate. + An array of objects + + + + Determines wether this instance and the specified object + are of the same type and have the same values. + + An object to compare to this instance. + + if the object equals the current instance. + + + + + Gets a hash code for the parameter. + + + An value for the hash code. + + + + + Summary description for QueryJoinFragment. + + + + + Summary description for QuerySelect. + + + + + Certain databases don't like spaces around these operators. + + + This needs to contain both a plain string and a + SqlString version of the operator because the portions in + the WHERE clause will come in as SqlStrings since there + might be parameters, other portions of the clause come in + as strings since there are no parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds a string containing a valid "order by" sql statement + to this QuerySelect + + The "order by" sql statement. + + + + + + + + + + + + + + + + + + + + + + + + Represents part of an SQL SELECT clause + + + + + The base class for all of the SqlBuilders. + + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The names of the Columns to Add to the WhereFragment + A SqlString that contains the WhereFragment + This just calls the overloaded ToWhereFragment() with the operator as " = " and the tableAlias null. + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The Alias for the Table. + The names of the Columns to Add to the WhereFragment + A SqlString that contains the WhereFragment + This defaults the op to " = " + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The names of the Columns to Add to the WhereFragment + The operator to use between the names & values. For example " = " or "!=" + A SqlString that contains the WhereFragment + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The Alias for the Table. + The names of the Columns to Add to the WhereFragment + The operator to use between the names & values. For example " = " or "!=" + A SqlString that contains the WhereFragment + + + + A class that builds an DELETE sql statement. + + + + + Sets the IdentityColumn for the DELETE sql to use. + + An array of the column names for the Property + The IType of the Identity Property. + The SqlDeleteBuilder. + + + + Sets the VersionColumn for the DELETE sql to use. + + An array of the column names for the Property + The IVersionType of the Version Property. + The SqlDeleteBuilder. + + + + Adds the columns for the Type to the WhereFragment + + The names of the columns to add. + The IType of the property. + The operator to put between the column name and value. + The SqlDeleteBuilder + + + + Adds a string to the WhereFragement + + A well formed sql statement with no parameters. + The SqlDeleteBuilder + + + + + + + A class that builds an INSERT sql statement. + + + + + + + + + + + + + + + + + + Adds the Property's columns to the INSERT sql + + An array of the column names for the Property + The IType of the property. + The SqlInsertBuilder. + + + + Add a column with a specific value to the INSERT sql + + The name of the Column to add. + The value to set for the column. + The NHibernateType to use to convert the value to a sql string. + The SqlInsertBuilder. + + + + Add a column with a specific value to the INSERT sql + + The name of the Column to add. + A valid sql string to set as the value of the column. + The SqlInsertBuilder. + + + + + + + Builds a SELECT SQL statement. + + + + + Sets the text that should appear after the FROM + + The fromClause to set + The SqlSelectBuilder + + + + Sets the text that should appear after the FROM + + The name of the Table to get the data from + The Alias to use for the table name. + The SqlSelectBuilder + + + + Sets the text that should appear after the FROM + + The fromClause in a SqlString + The SqlSelectBuilder + + + + Sets the text that should appear after the ORDER BY. + + The orderByClause to set + The SqlSelectBuilder + + + + Sets the text that should appear after the GROUP BY. + + The groupByClause to set + The SqlSelectBuilder + + + + Sets the SqlString for the OUTER JOINs. + + + All of the Sql needs to be included in the SELECT. No OUTER JOINS will automatically be + added. + + The outerJoinsAfterFrom to set + The outerJoinsAfterWhere to set + The SqlSelectBuilder + + + + Sets the text for the SELECT + + The selectClause to set + The SqlSelectBuilder + + + + Sets the criteria to use for the WHERE. It joins all of the columnNames together with an AND. + + + The names of the columns + The Hibernate Type + The SqlSelectBuilder + + + + Sets the prebuilt SqlString to the Where clause + + The SqlString that contains the sql and parameters to add to the WHERE + This SqlSelectBuilder + + + + + + + Summary description for SqlSimpleSelectBuilder. + + + + + + + + + + + + + + + + + + Adds a columnName to the SELECT fragment. + + The name of the column to add. + The SqlSimpleSelectBuilder + + + + Adds a columnName and its Alias to the SELECT fragment. + + The name of the column to add. + The alias to use for the column + The SqlSimpleSelectBuilder + + + + Adds an array of columnNames to the SELECT fragment. + + The names of the columns to add. + The SqlSimpleSelectBuilder + + + + Adds an array of columnNames with their Aliases to the SELECT fragment. + + The names of the columns to add. + The aliases to use for the columns + The SqlSimpleSelectBuilder + + + + Gets the Alias that should be used for the column + + The name of the column to get the Alias for. + The Alias if one exists, null otherwise + + + + Sets the IdentityColumn for the SELECT sql to use. + + An array of the column names for the Property + The IType of the Identity Property. + The SqlSimpleSelectBuilder. + + + + Sets the VersionColumn for the SELECT sql to use. + + An array of the column names for the Property + The IVersionType of the Version Property. + The SqlSimpleSelectBuilder. + + + + Sets the For Update Fragment to the Select Command + + The fragment to set. + The SqlSimpleSelectBuilder + + + + Set the Order By fragment of the Select Command + + The OrderBy fragment. It should include the SQL "ORDER BY" + The SqlSimpleSelectBuilder + + + + Adds the columns for the Type to the WhereFragment + + The names of the columns to add. + The IType of the property. + The operator to put between the column name and value. + The SqlSimpleSelectBuilder + + + + + + + This is a non-modifiable SQL statement that is ready to be prepared + and sent to the Database for execution. + + + + If you need to modify this object pass it to a SqlStringBuilder and + get a new object back from it. + + + + + + Appends the SqlString parameter to the end of the current SqlString to create a + new SqlString object. + + The SqlString to append. + A new SqlString object. + + A SqlString object is immutable so this returns a new SqlString. If multiple Appends + are called it is better to use the SqlStringBuilder. + + + + + Appends the string parameter to the end of the current SqlString to create a + new SqlString object. + + The string to append. + A new SqlString object. + + A SqlString object is immutable so this returns a new SqlString. If multiple Appends + are called it is better to use the SqlStringBuilder. + + + + + Compacts the SqlString into the fewest parts possible. + + A new SqlString. + + Combines all SqlParts that are strings and next to each other into + one SqlPart. + + + + + Determines whether the end of this instance matches the specified String. + + A string to seek at the end. + if the end of this instance matches value; otherwise, + + + + Replaces all occurrences of a specified in this instance, + with another specified . + + A String to be replaced. + A String to replace all occurrences of oldValue. + + A new SqlString with oldValue replaced by the newValue. The new SqlString is + in the compacted form. + + + + + Determines whether the beginning of this SqlString matches the specified System.String, + using case-insensitive comparison. + + The System.String to seek + true if the SqlString starts with the value. + + + + Retrieves a substring from this instance. The substring starts at a specified character position. + + The starting character position of a substring in this instance. + + A new SqlString to the substring that begins at startIndex in this instance. + + + If the startIndex is greater than the length of the SqlString then is returned. + + + + + Returns the index of the first occurence of , case-insensitive. + + Text to look for in the . Must be in lower + case. + + The text must be located entirely in a string part of the . + Searching for "a ? b" in an consisting of + "a ", Parameter, " b" will result in no matches. + + The index of the first occurence of , or -1 + if not found. + + + + Removes all occurrences of white space characters from the beginning and end of this instance. + + + A new SqlString equivalent to this instance after white space characters + are removed from the beginning and end. + + + + + + + + + + + + + + + Returns the SqlString in a string where it looks like + SELECT col1, col2 FROM table WHERE col1 = ? + + + The question mark is used as the indicator of a parameter because at + this point we are not using the specific provider so we don't know + how that provider wants our parameters formatted. + + A provider-neutral version of the CommandText + + + + Returns substring of this SqlString starting with the specified + . If the text is not found, returns an + empty, not-null SqlString. + + + The method performs case-insensitive comparison, so the + passed should be in lower case. + + + + + Parse SQL in and create a SqlString representing it. + + + Parameter marks in single quotes will be correctly skipped, but otherwise the + lexer is very simple and will not parse double quotes or escape sequences + correctly, for example. + + + + + Gets the number of SqlParts contained in this SqlString. + + The number of SqlParts contained in this SqlString. + + + + The SqlStringBuilder is used to construct a SqlString. + + + + The SqlString is a nonmutable class so it can't have sql parts added + to it. Instead this class should be used to generate a new SqlString. + The SqlStringBuilder is to SqlString what the StringBuilder is to + a String. + + + This is different from the original version of SqlString because this does not + hold the sql string in the form of "column1=@column1" instead it uses an array to + build the sql statement such that + object[0] = "column1=" + object[1] = ref to column1 parameter + + + What this allows us to do is to delay the generating of the parameter for the sql + until the very end - making testing dialect indifferent. Right now all of our test + to make sure the correct sql is getting built are specific to MsSql2000Dialect. + + + + + + Create an empty StringBuilder with the default capacity. + + + + + Create a StringBuilder with a specific capacity. + + The number of parts expected. + + + + Create a StringBuilder to modify the SqlString + + The SqlString to modify. + + + + Adds the preformatted sql to the SqlString that is being built. + + The string to add. + This SqlStringBuilder + + + + Adds the Parameter to the SqlString that is being built. + The correct operator should be added before the Add(Parameter) is called + because there will be no operator ( such as "=" ) placed between the last Add call + and this Add call. + + The Parameter to add. + This SqlStringBuilder + + + + Attempts to discover what type of object this is and calls the appropriate + method. + + The part to add when it is not known if it is a Parameter, String, or SqlString. + This SqlStringBuilder. + Thrown when the part is not a Parameter, String, or SqlString. + + + + Adds an existing SqlString to this SqlStringBuilder. It does NOT add any + prefix, postfix, operator, or wrap around this. It is equivalent to just + adding a string. + + The SqlString to add to this SqlStringBuilder + This SqlStringBuilder + This calls the overloaded Add(sqlString, null, null, null, false) + + + + Adds an existing SqlString to this SqlStringBuilder + + The SqlString to add to this SqlStringBuilder + String to put at the beginning of the combined SqlString. + How these Statements should be junctioned "AND" or "OR" + String to put at the end of the combined SqlString. + This SqlStringBuilder + + This calls the overloaded Add method with an array of SqlStrings and wrapStatment=false + so it will not be wrapped with a "(" and ")" + + + + + Adds existing SqlStrings to this SqlStringBuilder + + The SqlStrings to combine. + String to put at the beginning of the combined SqlString. + How these SqlStrings should be junctioned "AND" or "OR" + String to put at the end of the combined SqlStrings. + This SqlStringBuilder + This calls the overloaded Add method with wrapStatement=true + + + + Adds existing SqlStrings to this SqlStringBuilder + + The SqlStrings to combine. + String to put at the beginning of the combined SqlStrings. + How these SqlStrings should be junctioned "AND" or "OR" + String to put at the end of the combined SqlStrings. + Wrap each SqlStrings with "(" and ")" + This SqlStringBuilder + + + + Insert a string containing sql into the SqlStringBuilder at the specified index. + + The zero-based index at which the sql should be inserted. + The string containing sql to insert. + This SqlStringBuilder + + + + Insert a Parameter into the SqlStringBuilder at the specified index. + + The zero-based index at which the Parameter should be inserted. + The Parameter to insert. + This SqlStringBuilder + + + + Removes the string or Parameter at the specified index. + + The zero-based index of the item to remove. + This SqlStringBuilder + + + + Converts the mutable SqlStringBuilder into the immutable SqlString. + + The SqlString that was built. + + + + Gets the number of SqlParts in this SqlStringBuilder. + + + The number of SqlParts in this SqlStringBuilder. + + + + + Gets or Sets the element at the index + + Returns a string or Parameter. + + + + + A class that builds an UPDATE sql statement. + + + + + + + + + + + + Add a column with a specific value to the INSERT sql + + The name of the Column to add. + The value to set for the column. + The NHibernateType to use to convert the value to a sql string. + The SqlUpdateBuilder. + + + + Add a column with a specific value to the INSERT sql + + The name of the Column to add. + A valid sql string to set as the value of the column. + The SqlUpdateBuilder. + + + + Adds columns with a specific value to the INSERT sql + + The names of the Column sto add. + A valid sql string to set as the value of the column. + The SqlUpdateBuilder. + + + + Adds the Property's columns to the UPDATE sql + + An array of the column names for the Property + The IType of the property. + The SqlUpdateBuilder. + + + + Sets the IdentityColumn for the UPDATE sql to use. + + An array of the column names for the Property + The IType of the Identity Property. + The SqlUpdateBuilder. + + + + Sets the VersionColumn for the UPDATE sql to use. + + An array of the column names for the Property + The IVersionType of the Version Property. + The SqlUpdateBuilder. + + + + Adds the columns for the Type to the WhereFragment + + The names of the columns to add. + The IType of the property. + The operator to put between the column name and value. + The SqlUpdateBuilder + + + + Adds a string to the WhereFragement + + A well formed sql string with no parameters. + The SqlUpdateBuilder + + + + + + + Given an SQL SELECT statement, parse it to extract clauses starting with + FROM, up to and not including ORDER BY (known collectively + as a subselect clause). + + + + + Contains the subselect clause as it is being built. + + + + + Initializes a new instance of the class. + + The parts of an to extract the subselect clause from. + + + + Looks for a FROM clause in the + and adds the clause to the result if found. + + A or a . + if the part contained a FROM clause, + otherwise. + + + + Returns the subselect clause of the statement + being processed. + + An containing + the subselect clause of the original SELECT + statement. + + + + Allows us to construct SQL WHERE fragments + + + + + Describes the details of a with the + information required to to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + This is the base class that adds information to the + for the and + to use. + + +

+ The uses the SqlType to get enough + information to create an . +

+

+ The use the SqlType to convert the + to the appropriate sql type for SchemaExport. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Describes the details of a with the + information required to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Describes the details of a that is stored in + a BLOB column with the information required to generate + an . + + +

+ This can store the length of the binary data that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. +

+

+ This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a + BinarySqlType would work just fine. +

+
+
+ + + Describes the details of a with the + information required to to generate an . + + + This can store the binary data that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the binary data the should hold + + + + Initializes a new instance of the class. + + + + + SqlTypeFactory provides Singleton access to the SqlTypes. + + + + + Describes the details of a that is stored in + a CLOB column with the information required to generate + an . + + +

+ This can store the length of the binary data that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. +

+

+ This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a + StringSqlType would work just fine. +

+
+
+ + + Describes the details of a with the + information required to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Describes the details of a with the + information required to to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generates ddl to export table schema for a configured Configuration to the database + + + This Class can be used directly or the command line wrapper NHibernate.Tool.hbm2ddl.exe can be + used when a dll can not be directly used. + + + + + Create a schema exported for a given Configuration + + The NHibernate Configuration to generate the schema from. + + + + Create a schema exporter for the given Configuration, with the given + database connection properties + + The NHibernate Configuration to generate the schema from. + The Properties to use when connecting to the Database. + + + + Set the output filename. The generated script will be written to this file + + The name of the file to output the ddl to. + The SchemaExport object. + + + + Set the end of statement delimiter + + The end of statement delimiter. + The SchemaExport object. + + + + Run the schema creation script + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + + This is a convenience method that calls and sets + the justDrop parameter to false and the format parameter to true. + + + + + Run the drop schema script + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + + This is a convenience method that calls and sets + the justDrop and format parameter to true. + + + + + Executes the Export of the Schema in the given connection + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + if only the ddl to drop the Database objects should be executed. + if the ddl should be nicely formatted instead of one statement per line. + + The connection to use when executing the commands when export is . + Must be an opened connection. The method doesn't close the connection. + + The writer used to output the generated schema + + This method allows for both the drop and create ddl script to be executed. + This overload is provided mainly to enable use of in memory databases. + It does NOT close the given connection! + + + + + Executes the Export of the Schema. + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + if only the ddl to drop the Database objects should be executed. + if the ddl should be nicely formatted instead of one statement per line. + + This method allows for both the drop and create ddl script to be executed. + + + + + Format an SQL statement using simple rules + + The string containing the sql to format. + A string that contains formatted sql. + + The simple rules to used when formatting are: + + + Insert a newline after each comma + + + Indent three spaces after each inserted newline + + + + If the statement contains single/double quotes return unchanged because + it is too complex and could be broken by simple formatting. + + + + + + + + An abstract factory for ITransaction instances. + + + + + Configure from the given properties + + + + + + Create a new transaction and return it without starting it. + + + + + Wraps an ADO.NET to implement + the interface. + + + + + Allows the application to define units of work, while maintaining abstraction from the + underlying transaction implementation + + + A transaction is associated with a ISession and is usually instanciated by a call to + ISession.BeginTransaction(). A single session might span multiple transactions since + the notion of a session (a conversation between the application and the datastore) is of + coarser granularity than the notion of a transaction. However, it is intended that there be + at most one uncommitted ITransaction associated with a particular ISession + at a time. Implementors are not intended to be threadsafe. + + + + + Begin the transaction with the default isolation level. + + + + + Begin the transaction with the specified isolation level. + + Isolation level of the transaction + + + + Flush the associated ISession and end the unit of work. + + + This method will commit the underlying transaction if and only if the transaction + was initiated by this object. + + + + + Force the underlying transaction to roll back. + + + + + Enlist the in the current Transaction. + + The to enlist. + + It is okay for this to be a no op implementation. + + + + + Is the transaction in progress + + + + + Was the transaction rolled back or set to rollback only? + + + + + Was the transaction successfully committed? + + + This method could return even after successful invocation of Commit() + + + + + Initializes a new instance of the class. + + The the Transaction is for. + + + + Enlist the in the current . + + The to enlist in this Transaction. + + + This takes care of making sure the 's Transaction property + contains the correct or if there is no + Transaction for the ISession - ie BeginTransaction() not called. + + + This method may be called even when the transaction is disposed. + + + + + + Begins the on the + used by the . + + + Thrown if there is any problems encountered while trying to create + the . + + + + + Commits the by flushing the + and committing the . + + + Thrown if there is any exception while trying to call Commit() on + the underlying . + + + + + Rolls back the by calling the method Rollback + on the underlying . + + + Thrown if there is any exception while trying to call Rollback() on + the underlying . + + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this AdoTransaction is being Disposed of or Finalized. + + If this AdoTransaction is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this AdoTransaction back to life. + + + + + Gets a indicating if the transaction was rolled back. + + + if the had Rollback called + without any exceptions. + + + + + Gets a indicating if the transaction was committed. + + + if the had Commit called + without any exceptions. + + + + + Implementors define a strategy for transforming criteria query + results into the actual application-visible query result list. + + + + + + + + + + + + + + + + + + + + + Result transformer that allows to transform a result to + a user specified class which will be populated via setter + methods or fields matching the alias names. + + + + IList resultWithAliasedBean = s.CreateCriteria(typeof(Enrollment)) + .CreateAlias("Student", "st") + .CreateAlias("Course", "co") + .SetProjection( Projections.ProjectionList() + .Add( Projections.Property("co.Description"), "CourseDescription" ) + ) + .SetResultTransformer( new AliasToBeanResultTransformer(typeof(StudentDTO)) ) + .List(); + + StudentDTO dto = (StudentDTO)resultWithAliasedBean[0]; + + + + + + Each row of results is a map () from alias to values/entities + + + + + Creates a resulttransformer that will inject aliased values into instances + of via property methods or fields. + + + + + Represents a defined entity identifier property within the Hibernate + runtime-metamodel. + + + Author: Steve Ebersole + + + + + Defines the basic contract of a Property within the runtime metamodel. + + + Author: Steve Ebersole + + + + + Constructor for Property instances. + + The name by which the property can be referenced within its owner. + The node name to use for XML-based representation of this property. + The Hibernate Type of this property. + + + + Construct a non-virtual identifier property. + + The name of the property representing the identifier within + its owning entity. + The node name to use for XML-based representation of this + property. + The Hibernate Type for the identifier property. + Is this an embedded identifier. + The value which, if found as the value on the identifier + property, represents new (i.e., un-saved) instances of the owning entity. + The generator to use for id value generation. + + + + Construct a virtual IdentifierProperty. + + The Hibernate Type for the identifier property. + Is this an embedded identifier. + The value which, if found as the value on the identifier + property, represents new (i.e., un-saved) instances of the owning entity. + The generator to use for id value generation. + + + + Responsible for generation of runtime metamodel representations. + Makes distinction between identifier, version, and other (standard) properties. + + + Author: Steve Ebersole + + + + + Generates an IdentifierProperty representation of the for a given entity mapping. + + The mapping definition of the entity. + The identifier value generator to use for this identifier. + The appropriate IdentifierProperty definition. + + + + Generates a VersionProperty representation for an entity mapping given its + version mapping Property. + + The version mapping Property. + Is property lazy loading currently available. + The appropriate VersionProperty definition. + + + + Generate a "standard" (i.e., non-identifier and non-version) based on the given + mapped property. + + The mapped property. + Is property lazy loading currently available. + The appropriate StandardProperty definition. + + + + Represents a basic property within the Hibernate runtime-metamodel. + + + Author: Steve Ebersole + + + + + Constructs StandardProperty instances. + + The name by which the property can be referenced within + its owner. + The node name to use for XML-based representation of this + property. + The Hibernate Type of this property. + Should this property be handled lazily? + Is this property an insertable value? + Is this property an updateable value? + Is this property generated in the database on insert? + Is this property generated in the database on update? + Is this property a nullable value? + Is this property a checkable value? + Is this property a versionable value? + The cascade style for this property's value. + + + + Represents a version property within the Hibernate runtime-metamodel. + + + Author: Steve Ebersole + + + + + Constructs VersionProperty instances. + + The name by which the property can be referenced within + its owner. + The node name to use for XML-based representation of this + property. + The Hibernate Type of this property. + Should this property be handled lazily? + Is this property an insertable value? + Is this property an updateable value? + Is this property generated in the database on insert? + Is this property generated in the database on update? + Is this property a nullable value? + Is this property a checkable value? + Is this property a versionable value? + The cascade style for this property's value. + The value which, if found as the value of + this (i.e., the version) property, represents new (i.e., un-saved) + instances of the owning entity. + + + + The base implementation of the interface. + Mapping of the built in Type hierarchy. + + + + + Defines a mapping from a .NET to a SQL datatype. + This interface is intended to be implemented by applications that need custom types. + + Implementors should usually be immutable and MUST definately be threadsafe. + + + + + When implemented by a class, returns the SqlTypes for the columns mapped by this IType. + The that uses this IType.An array of s. + + + + When implemented by a class, returns how many columns are used to persist this type. + The that uses this IType.The number of columns this IType spans.MappingException + + + + When implemented by a class, compare two instances of the class mapped by this + IType for persistence "equality" - ie. Equality of persistent state. + The left hand side object.The right hand side object.True if the two objects contain the same values. + + + + Get a hashcode, consistent with persistence "equality" + + + + + When implemented by a class, should the parent be considered dirty, + given both the old and current field or element value? + The old valueThe current valueThe true if the field is dirty + + + + When implemented by a class, gets an instance of the object mapped by + this IType from the . + The that contains the values + The names of the columns in the that contain the + value to populate the IType with. + The object mapped by this IType. + Implementors should handle possibility of null values. + + + + + When implemented by a class, gets an instance of the object + mapped by this IType from the . + The that contains the valuesThe name of the column in the that contains the + value to populate the IType with.The object mapped by this IType. + Implementations should handle possibility of null values. + This method might be called if the IType is known to be a single-column type. + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + The to put the values into.The object that contains the values.The index of the to start writing the values to.Indicates which columns are to be set. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + + The to put the values into. + The object that contains the values. + The index of the to start writing the values to. + + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, a representation of the value to be + embedded in an XML element + The object that contains the values.An Xml formatted string. + + + + Parse the XML representation of an instance + an instance of the type + + + + When implemented by a class, returns a deep copy of the persistent + state, stopping at entities and at collections. + A Collection element or Entity fieldA deep copy of the object. + + + + When implemented by a class, retrives an instance of the mapped class, + or the identifier of an entity or collection from a . + The that contains the values. + The names of the columns in the that contain the + value to populate the IType with. + the sessionThe parent EntityAn identifier or actual object mapped by this IType. + + This is useful for 2-phase property initialization - the second phase is a call to + ResolveIdentifier() + + + Most implementors of this method will just pass the call to NullSafeGet(). + + + + + + When implemented by a class, maps identifiers to Entities or Collections. + An identifier or value returned by Hydrate()The sessionThe parent EntityThe Entity or Collection referenced by this Identifier. + This is the second phase of 2-phase property initialization. + + + + + Given a hydrated, but unresolved value, return a value that may be used to + reconstruct property-ref associations. + + + + + + + + Determines whether the specified value is represented as in the database. + + The value, may be . + + if the specified value is represented as in the database; + otherwise, . + + + + + When implemented by a class, gets a value indicating if the implementor is castable to an an + true if this is an AssociationThis does not necessarily imply that the type actually represents an association. + + + + When implemented by a class, gets a value indicating if the implementor is a collection type + true if this is a . + + + + When implemented by a class, gets a value indicating if the implementor + is an . + true if this is an + If true, the implementation must be castable to . + A component type may own collections or associations and hence must provide certain extra functionality. + + + + + When implemented by a class, gets a value indicating if the implementor + extends + true if this is an + + + + + + + When implemented by a class, gets the returned + by the NullSafeGet() methods. + + The from the .NET framework. + + This is used to establish the class of an array of this Itype + + + + + When implemented by a class, gets the abbreviated name of the type. + The NHibernate type name. + + + + When implemented by a class, gets the value indicating if the objects + of this IType are mutable. + true if the objects mapped by this IType are mutable. + With respect to the referencing object... + Entities and Collections are considered immutable because they manage their own internal state. + + + + + When implemented by a class, gets whether or not this IType contains + s that implement well-behaived Equals() method. + true if a well-behaived Equals() is implemented. + + Strickly, if this method returns true then x.Equals(y) implies + IType.Equals(x, y) and also IType.Equals(x, y) implies that + probably x.Equals(y) + + + In the default implementations s are assumed to have + HaveNiceEquals==true and s are assumed to have + HaveNiceEquals==false. + + + This code doesn't look like it is used anywhere internally because I did a search + on ".HasNiceEquals" and found no results. So it looks like it is used for a description + of the IType only. + + + + + + Disassembles the object into a cacheable representation. + + The value to disassemble. + The is not used by this method. + The disassembled, deep cloned state of the object + + This method calls DeepCopy if the value is not null. + + + + + Reconstructs the object from its cached "disassembled" state. + + The disassembled state from the cache + The is not used by this method. + The parent Entity object is not used by this method + The assembled object. + + This method calls DeepCopy if the value is not null. + + + + + Should the parent be considered dirty, given both the old and current + field or element value? + + The old value + The current value + The is not used by this method. + true if the field is dirty + This method uses IType.Equals(object, object) to determine the value of IsDirty. + + + + Retrives an instance of the mapped class, or the identifier of an entity + or collection from a . + + The that contains the values. + + The names of the columns in the that contain the + value to populate the IType with. + + the session + The parent Entity + An identifier or actual object mapped by this IType. + + This method uses the IType.NullSafeGet(IDataReader, string[], ISessionImplementor, object) method + to Hydrate this . + + + + + Maps identifiers to Entities or Collections. + + An identifier or value returned by Hydrate() + The is not used by this method. + The parent Entity is not used by this method. + The value. + + There is nothing done in this method other than return the value parameter passed in. + + + + + Says whether the value has been modified + + + + + + + + + + + + + + + + When implemented by a class, returns a deep copy of the persistent + state, stopping at entities and at collections. + A Collection element or Entity fieldA deep copy of the object. + + + + When implemented by a class, returns the SqlTypes for the columns mapped by this IType. + The that uses this IType.An array of s. + + + + When implemented by a class, returns how many columns are used to persist this type. + The that uses this IType.The number of columns this IType spans.MappingException + + + + When implemented by a class, compare two instances of the class mapped by this + IType for persistence "equality" - ie. Equality of persistent state. + The left hand side object.The right hand side object.True if the two objects contain the same values. + + + + Determines whether the specified value is represented as in the database. + + The value, may be . + + if the specified value is ; otherwise, . + + + + + + + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + The to put the values into.The object that contains the values.The index of the to start writing the values to.Indicates which columns are to be set. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + + The to put the values into. + The object that contains the values. + The index of the to start writing the values to. + + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, a representation of the value to be + embedded in an XML element + The object that contains the values.An Xml formatted string. + + + + Parse the XML representation of an instance + an instance of the type + + + + Gets a value indicating if the is an . + + false - by default an is not an . + + + + Gets a value indicating if the is a . + + false - by default an is not a . + + + + Gets a value indicating if the is an . + + false - by default an is not an . + + + + Gets a value indicating if the is a . + + false - by default an is not a . + + + + Gets a value indicating if the implementation is an "object" type + + false - by default an is not a "object" type. + + + + When implemented by a class, gets the value indicating if the objects + of this IType are mutable. + true if the objects mapped by this IType are mutable. + With respect to the referencing object... + Entities and Collections are considered immutable because they manage their own internal state. + + + + + When implemented by a class, gets the abbreviated name of the type. + The NHibernate type name. + + + + When implemented by a class, gets whether or not this IType contains + s that implement well-behaived Equals() method. + true if a well-behaived Equals() is implemented. + + Strickly, if this method returns true then x.Equals(y) implies + IType.Equals(x, y) and also IType.Equals(x, y) implies that + probably x.Equals(y) + + + In the default implementations s are assumed to have + HaveNiceEquals==true and s are assumed to have + HaveNiceEquals==false. + + + This code doesn't look like it is used anywhere internally because I did a search + on ".HasNiceEquals" and found no results. So it looks like it is used for a description + of the IType only. + + + + + + When implemented by a class, gets the returned + by the NullSafeGet() methods. + + The from the .NET framework. + + This is used to establish the class of an array of this Itype + + + + + Maps a Property + to a DbType.AnsiStringFixedLength column. + + + + + Common base class for and . + + + + + Superclass of types. + + + + + Superclass of nullable immutable types. + + + + + Superclass of single-column nullable types. + + + Maps the Property to a single column that is capable of storing nulls in it. If a .net Struct is + used it will be created with its unitialized value and then on Update the uninitialized value of + the Struct will be written to the column - not . + + + + + Initialize a new instance of the NullableType class using a + . + + The underlying . + This is used when the Property is mapped to a single column. + + + + When implemented by a class, put the value from the mapped + Property into to the . + + The to put the value into. + The object that contains the value. + The index of the to start writing the values to. + + Implementors do not need to handle possibility of null values because this will + only be called from after + it has checked for nulls. + + + + + When implemented by a class, gets the object in the + for the Property. + + The that contains the value. + The index of the field to get the value from. + An object with the value from the database. + + + + When implemented by a class, gets the object in the + for the Property. + + The that contains the value. + The name of the field to get the value from. + An object with the value from the database. + + Most implementors just call the + overload of this method. + + + + + A representation of the value to be embedded in an XML element + + The object that contains the values. + + An Xml formatted string. + + + + When implemented by a class, a representation of the value to be + embedded in an XML element + The object that contains the values.An Xml formatted string. + + + This implementation forwards the call to if the parameter + value is not null. + + + It has been "sealed" because the Types inheriting from + do not need and should not override this method. All of their implementation + should be in . + + + + + + Parse the XML representation of an instance + + XML string to parse, guaranteed to be non-empty + + + + + Parse the XML representation of an instance + an instance of the type + + + This implementation forwards the call to if the parameter + value is not empty. + + + It has been "sealed" because the Types inheriting from + do not need and should not override this method. All of their implementation + should be in . + + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + + The to put the values into. + The object that contains the values. + The index of the to start writing the values to. + + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + This implemenation forwards the call to . + + + It has been "sealed" because the Types inheriting from + do not need to and should not override this method. All of their implementation + should be in . + + + + + + Puts the value from the mapped class into the . + + The to put the values into. + The object that contains the values. + The index of the to write the value to. + + + This method checks to see if value is null, if it is then the value of + is written to the . + + + If the value is not null, then the method + is called and that method is responsible for setting the value. + + + + + + When implemented by a class, gets an instance of the object mapped by + this IType from the . + The that contains the values + The names of the columns in the that contain the + value to populate the IType with. + The object mapped by this IType. + Implementors should handle possibility of null values. + + + This has been sealed because no other class should override it. This + method calls for a single value. + It only takes the first name from the string[] names parameter - that is a + safe thing to do because a Nullable Type only has one field. + + + + + Extracts the values of the fields from the DataReader + + The DataReader positioned on the correct record + An array of field names. + The value off the field from the DataReader + + In this class this just ends up passing the first name to the NullSafeGet method + that takes a string, not a string[]. + + I don't know why this method is in here - it doesn't look like anybody that inherits + from NullableType overrides this... + + TODO: determine if this is needed + + + + + Gets the value of the field from the . + + The positioned on the correct record. + The name of the field to get the value from. + The value of the field. + + + This method checks to see if value is null, if it is then the null is returned + from this method. + + + If the value is not null, then the method + is called and that method is responsible for retreiving the value. + + + + + + When implemented by a class, gets an instance of the object + mapped by this IType from the . + The that contains the valuesThe name of the column in the that contains the + value to populate the IType with.The object mapped by this IType. + Implementations should handle possibility of null values. + This method might be called if the IType is known to be a single-column type. + + + + This implemenation forwards the call to . + + + It has been "sealed" because the Types inheriting from + do not need to and should not override this method. All of their implementation + should be in . + + + + + + When implemented by a class, returns the SqlTypes for the columns mapped by this IType. + The that uses this IType.An array of s. + + + This implemenation forwards the call to . + + + It has been "sealed" because the Types inheriting from + do not need to and should not override this method because they map to a single + column. All of their implementation should be in . + + + + + + Returns the number of columns spanned by this + + A always returns 1. + + This has the hard coding of 1 in there because, by definition of this class, + a NullableType can only map to one column in a table. + + + + + When implemented by a class, returns a deep copy of the persistent state. + + The value to deep copy. + A deep copy of the object. + + Most of the built in NullableTypes will just return the same object + passed into it. + + + + + When implemented by a class, returns a deep copy of the persistent + state, stopping at entities and at collections. + A Collection element or Entity fieldA deep copy of the object. + + + This implemenation forwards the call to if the parameter + value is not null. + + + It has been "sealed" because the Types inheriting from + do not need and should not override this method. All of their implementation + should be in . + + + + + + Determines whether the specified is equal to this + . + + The to compare with this NullableType. + true if the SqlType and Name properties are the same. + + + + Serves as a hash function for the , + suitable for use in hashing algorithms and data structures like a hash table. + + + A hash code that is based on the 's + hash code and the 's hash code. + + + + Gets the underlying for + the column mapped by this . + + The underlying . + + This implementation should be suitable for all subclasses unless they need to + do some special things to get the value. There are no built in s + that override this Property. + + + + + Initialize a new instance of the ImmutableType class using a + . + + The underlying . + + + + Returns a deep copy of the persistent state. + + The value to deep copy. + A deep copy of the object. + + A is considered immutable because a boxed version + of the is being stored by NHibernate. So any changes + made to it would require the to be unboxed and + then reboxed. + + + + + Gets the value indicating if this IType is mutable. + + false - an is not mutable. + + This has been "sealed" because any subclasses are expected to be immutable. If + the type is mutable then they should inherit from . + + + + + Gets whether or not this IType contains + s that implement well-behaived Equals() method. + + + true - it is assumed that a ImmutableType implements a + well-behaived Equals(). + + + There is no concrete rule that s implement + a well-behaived Equals(). If the does + not implement the Equals() then set this to . + + + + + An that may appear as an SQL literal + + + + + When implemented by a class, return a representation + of the value, suitable for embedding in an SQL statement + + The object to convert to a string for the SQL statement. + A string that containts a well formed SQL Statement. + + + + Initialize a new instance of the ValueTypeType class using a + . + + The underlying . + + + + Compare two instances of the class mapped by this + IType for persistence "equality" - ie. Equality of persistent state. + + The left hand side object. + The right hand side object. + True if the two objects contain the same values. + + + + A representation of the value to be embedded in an XML element + + The object that contains the values. + + An Xml formatted string. + + This just calls so if there is + a possibility of this PrimitiveType having any characters + that need to be encoded then this method should be overridden. + + TODO: figure out if this is used to build Xml strings or will have encoding + done automattically. + + + + + When implemented by a class, return a representation + of the value, suitable for embedding in an SQL statement + + The object to convert to a string for the SQL statement. + A string that containts a well formed SQL Statement. + + + + An IType that may be used for a discriminator column. + + + This interface contains no new methods but does require that an + that will be used in a discriminator column must implement + both the and interfaces. + + + + + An that may be used as an identifier. + + + + + When implemented by a class, converts the xml string from the + mapping file to the .NET object. + + The value of discriminator-value or unsaved-value attribute. + The string converted to the object. + + This method needs to be able to handle any string. It should not just + call System.Type.Parse without verifying that it is a parsable value + for the System.Type. + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Handles "any" mappings and the old deprecated "object" type. + + + The identifierType is any NHibernate IType that can be serailized by default. + For example, you can specify the identifierType as an Int32 or a custom identifier + type that you built. The identifierType matches to one or many columns. + + The metaType maps to a single column. By default it stores the name of the Type + that the Identifier identifies. + + For example, we can store a link to any table. It will have the results + class_name id_col1 + ======================================== + Simple, AssemblyName 5 + DiffClass, AssemblyName 5 + Simple, AssemblyName 4 + + You can also provide you own type that might map the name of the class to a table + with a giant switch statemet or a good naming convention for your class->table. The + data stored might look like + class_name id_col1 + ======================================== + simple_table 5 + diff_table 5 + simple_table 4 + + + + + + Enables other Component-like types to hold collections and have cascades, etc. + + + + + Get the values of the component properties of + a component instance + + + + + Optional Operation + + + + + Optional operation + + + + Get the types of the component properties + + + Get the names of the component properties + + + + Optional operation + + nullability of component properties + + + + An that represents some kind of association between entities. + + + + + Get the "persister" for this association - a class or collection persister + + + + + + + + + + + + + + Get the "filtering" SQL fragment that is applied in the + SQL on clause, in addition to the usual join condition. + + + + + When implemented by a class, gets the type of foreign key directionality + of this association. + + The of this association. + + + + Is the primary key of the owning entity table + to be used in the join? + + + + + Get the name of the property in the owning entity + that provides the join key (null if the identifier) + + + + + The name of a unique property of the associated entity + that provides the join key (null if the identifier of + an entity, or key of a collection) + + + + + Do we dirty check this association, even when there are + no columns to be updated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Not really relevant to AnyType, since it cannot be "joined" + + + + + An that maps an collection + to the database. + + + + + The base class for an that maps collections + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Returns a reference to the elements in the collection. + + The object that holds the ICollection. + An ICollection of the Elements(classes) in the Collection. + + By default the parameter collection is just cast to an ICollection. Collections + such as Maps and Sets should override this so that the Elements are returned - not a + DictionaryEntry. + + + + + Wraps a collection from System.Collections or Iesi.Collections inside one of the + NHibernate collections. + + The for the collection to be a part of. + The unwrapped collection. + + A subclass of that wraps the non NHibernate collection. + + + + + Get the key value from the owning entity instance, usually the identifier, but might be some + other unique key, in the case of property-ref + + + + + Instantiate an empty instance of the "underlying" collection (not a wrapper) + + + + + We always need to dirty check the collection because we sometimes + need to incremement version number of owner and also because of + how assemble/disassemble is implemented for uks + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The of the element contained in the array. + + This creates a bag that is non-generic. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wraps a in a . + + The for the collection to be a part of. + The unwrapped array. + + An that wraps the non NHibernate . + + + + + The for the element. + + + + + + + + An that maps an collection + using bag semantics to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the bag. + + The current for the bag. + + A new . + + + + Wraps an in a NHibernate . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + Maps a System.Byte[] Property to an column that can store a BLOB. + + + This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a BinaryType + would work just fine. + + + + + BinaryType. + + + + + Superclass for mutable nullable types. + + + + + Initialize a new instance of the MutableType class using a + . + + The underlying . + + + + Gets the value indicating if this IType is mutable. + + true - a is mutable. + + This has been "sealed" because any subclasses are expected to be mutable. If + the type is immutable then they should inherit from . + + + + + Gets whether or not this IType contains + s that implement well-behaived Equals() method. + + + false - it is assumed that a MutableType does not implement a + well-behaved Equals(). + + + There is no concrete rule that s don't implement + a well-behaved Equals(). If the does implement + the Equals() then set this to . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + Initialize a new instance of the BooleanType + + This is used when the Property is mapped to a native boolean type. + + + + Initialize a new instance of the BooleanType class using a + . + + The underlying . + + This is used when the Property is mapped to a string column + that stores true or false as a string. + + + + + Maps a property + to a column. + + + + + An that may be used to version data. + + + + + When implemented by a class, increments the version. + + The current version + The current session, if available. + an instance of the that has been incremented. + + + + When implemented by a class, gets an initial version. + + The current session, if available. + Returns an instance of the + + + + When implemented by a class, converts the xml string from the + mapping file to the .NET object. + + The value of discriminator-value or unsaved-value attribute. + The string converted to the object. + + This method needs to be able to handle any string. It should not just + call System.Type.Parse without verifying that it is a parsable value + for the System.Type. + + + + + Get a comparator for the version numbers + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a DbType.StringFixedLength column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Use the access optimizer if available + + + + + Use the access optimizer if available + + + + + + + + + + + + + + + + + + + + + + + + + + + This method does not populate the component parent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for CompositeCustomType. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + CultureInfoType stores the culture name (not the Culture ID) of the + in the DB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A custom type for mapping user-written classes that implement + . + + + + + + + Adapts IUserType to the generic IType interface. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property to a column that + stores date & time down to the accuracy of a second. + + + This only stores down to a second, so if you are looking for the most accurate + date and time storage your provider can give you use the . + or the + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps the Year, Month, and Day of a Property to a + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Handles "dynamic" components, represented as <map>s + + + + + A reference to an entity class + + + + + Converts the id contained in the to an object. + + The that contains the query results. + A string array of column names that contain the id. + The this is occurring in. + The object that this Entity will be a part of. + + An instance of the object or if the identifer was null. + + + + + Resolves the identifier to the actual object. + + + + + Resolve an identifier or unique key value + + + + + + + + + + + + + + + + + + When implemented by a class, gets the type of foreign key directionality + of this association. + + The of this association. + + + + Is the foreign key the primary key of the table? + + + + + Maps a to a + DbType.String. + + + If your database should store the + using the named values in the enum instead of the underlying values + then subclass this . + + + All that needs to be done is to provide a default constructor that + NHibernate can use to create the specific type. For example, if + you had an enum defined as. + + + + public enum MyEnum + { + On, + Off, + Dimmed + } + + + + all that needs to be written for your enum string type is: + + + + public class MyEnumStringType : NHibernate.Type.EnumStringType + { + public MyEnumStringType() + : base( typeof( MyEnum ) ) + { + } + } + + + + The mapping would look like: + + + + ... + <property name="Status" type="MyEnumStringType, AssemblyContaining" /> + ... + + + + The TestFixture that shows the working code can be seen + in NHibernate.Test.TypesTest.EnumStringTypeFixture.cs + , NHibernate.Test.TypesTest.EnumStringClass.cs + , and NHibernate.Test.TypesTest.EnumStringClass.hbm.xml + + + + + + Hardcoding of 255 for the maximum length + of the Enum name that will be saved to the db. + + + 255 because that matches the default length that hbm2ddl will + use to create the column. + + + + + Initializes a new instance of . + + The of the Enum. + + + + Initializes a new instance of . + + The of the Enum. + The length of the string that can be written to the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This appends enumstring - to the beginning of the underlying + enums name so that could still be stored + using the underlying value through the + also. + + + + + Represents directionality of the foreign key constraint + + + + + + + + Should we cascade at this cascade point? + + + + + A foreign key from child to parent + + + + + A foreign key from parent to child + + + + + An that maps an collection + to the database using bag semantics. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the bag. + + The current for the bag. + The current for the bag. + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + An that maps an collection + using bag semantics with an identifier to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the identifier bag. + + The current for the identifier bag. + + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + An that maps an collection + to the database using list semantics. + + + + + An that maps an collection + using list semantics to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the bag. + + The current for the bag. + + A new . + + + + Wraps an exist in a NHibernate . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the list. + + The current for the list. + The current for the list. + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + An that maps an collection + to the database. + + + + + An that maps an collection + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the map. + + The current for the map. + + + + + + + + + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the map. + + The current for the map. + + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the + non NHibernate . + + + + + An that maps an collection + to the database. + + + + + An that maps an collection + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the set. + + The current for the set. + + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + + + + + + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the set. + + The current for the set. + The current for the set. + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + An that maps a sorted collection + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use to compare + set elements. + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A many-to-one association to an entity + + + + + Hydrates the Identifier from . + + The that contains the query results. + A string array of column names to read from. + The this is occuring in. + The object that this Entity will be a part of. + + An instantiated object that used as the identifier of the type. + + + + + A one-to-one association to an entity + + + + + We don't need to dirty check one-to-one because of how + assemble/disassemble is implemented and because a one-to-one + association is never dirty + + + + + A implemented using a collection that maintains + the order in which elements are inserted into it. + + + + + Initializes a new instance of a class. + + The role the persistent collection is in. + + + + + A implemented using a collection that maintains + the order in which elements are inserted into it. + + + + + Initializes a new instance of a class + + The role the persistent collection is in. + + + + + PersistentEnumType + + + + + + + + + + + Determines what the NHibernate SqlType should be based on the + values contain in the Enum + + The Enumeration class to get the values from. + The SqlType for this EnumClass + + + + Gets an instance of the Enum + + The underlying value of an item in the Enum. + + An instance of the Enum set to the code value. + + + + + Gets the correct value for the Enum. + + The value to convert. + A boxed version of the code converted to the correct type. + + This handles situations where the DataProvider returns the value of the Enum + from the db in the wrong underlying type. It uses to + convert it to the correct type. + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps an instance of a that has the + to a column. + + + + The SerializableType should be used when you know that Bytes are + not going to be greater than 8,000. + + + The base class is because the data is stored in + a byte[]. The System.Array does not have a nice "equals" method so we must + do a custom implementation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Thrown when a property cannot be serialized/deserialized + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Maps a Property to an + column. + + + Verify through your database's documentation if there is a column type that + matches up with the capabilities of + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extends the to provide sorting. + + + + + Initializes a new instance of a class for + a specific role using the to do the sorting. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use for the sorting. + + + + Extends the to provide sorting. + + + + + Initializes a new instance of a class for + a specific role using the to do the sorting. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use for the sorting. + + + + Maps a Property to an + column that can store a CLOB. + + + This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a StringType + would work just fine. + + + + + Maps a to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property to an column + that stores the DateTime using the Ticks property. + + + This is the recommended way to "timestamp" a column. The System.DateTime.Ticks + is accurate to 100-nanosecond intervals. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property to an column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is almost the exact same type as the DateTime except it can be used + in the version column, stores it to the accuracy the database supports, + and will default to the value of DateTime.Now if the value is null. + + +

+ The value stored in the database depends on what your data provider is capable + of storing. So there is a possibility that the DateTime you save will not be + the same DateTime you get back when you check DateTime.Equals(DateTime) because + they will have their milliseconds off. +

+

+ For example - SQL Server 2000 is only accurate to 3.33 milliseconds. So if + NHibernate writes a value of 01/01/98 23:59:59.995 to the Prepared Command, MsSql + will store it as 1998-01-01 23:59:59.997. +

+

+ Please review the documentation of your Database server. +

+
+
+ + + Sets the value of this Type in the IDbCommand. + + The IDbCommand to add the Type's value to. + The value of the Type. + The index of the IDataParameter in the IDbCommand. + + No null values will be written to the IDbCommand for this Type. + + + + + Maps a Property to an DateTime column that only stores the + Hours, Minutes, and Seconds of the DateTime as significant. + + + + This defaults the Date to "1753-01-01" - that should not matter because + using this Type indicates that you don't care about the Date portion of the DateTime. + + + A more appropriate choice to store the duration/time is the . + The underlying tends to be handled diffently by different + DataProviders. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a to a 1 char column + that stores a 'T'/'F' to indicate true/false. + + + If you are using schema-export to generate your tables then you need + to set the column attributes: length=1 or sql-type="char(1)". + + This needs to be done because in Java's JDBC there is a type for CHAR and + in ADO.NET there is not one specifically for char, so you need to tell schema + export to create a char(1) column. + + + + + + + + + + + + + + + + + Used internally to obtain instances of IType. + + + Applications should use static methods and constants on NHibernate.NHibernateUtil if the default + IType is good enough. For example, the TypeFactory should only be used when the String needs + to have a length of 300 instead of 255. At this point NHibernate.String does not get you the + correct IType. Instead use TypeFactory.GetString(300) and keep a local variable that holds + a reference to the IType. + + + + + + + + Gets the classification of the Type based on the string. + + The name of the Type to get the classification for. + The Type of Classification + + This parses through the string and makes the assumption that no class + name and no assembly name will contain the "(". + + If it finds + the "(" and then finds a "," afterwards then it is a + TypeClassification.PrecisionScale. + + + If it finds the "(" + and doesn't find a "," afterwards, then it is a + TypeClassification.Length. + + + If it doesn't find the "(" then it assumes that it is a + TypeClassification.Plain. + + + + + + Given the name of a Hibernate type such as Decimal, Decimal(19,0) + , Int32, or even NHibernate.Type.DecimalType, NHibernate.Type.DecimalType(19,0), + NHibernate.Type.Int32Type, then return an instance of NHibernate.Type.IType + + The name of the type. + The instance of the IType that the string represents. + + This method will return null if the name is not found in the basicNameMap. + + + + + Uses heuristics to deduce a NHibernate type given a string naming the + type. + + + An instance of NHibernate.Type.IType + + When looking for the NHibernate type it will look in the cache of the Basic types first. + If it doesn't find it in the cache then it uses the typeName to get a reference to the + Class (Type in .NET). Once we get the reference to the .NET class we check to see if it + implements IType, ICompositeUserType, IUserType, ILifecycle (Association), or + IPersistentEnum. If none of those are implemented then we will serialize the Type to the + database using NHibernate.Type.SerializableType(typeName) + + + + + Uses heuristics to deduce a NHibernate type given a string naming the + type. + + the type name + parameters for the type + An instance of NHibernate.Type.IType + + + + + + + + + + + Gets the BinaryType with the specified length. + + The length of the data to store in the database. + A BinaryType + + In addition to returning the BinaryType it will also ensure that it has + been added to the basicNameMap with the keys Byte[](length) and + NHibernate.Type.BinaryType(length). + + + + + Gets the SerializableType for the specified Type + + The Type that will be Serialized to the database. + A SerializableType + + + In addition to returning the SerializableType it will also ensure that it has + been added to the basicNameMap with the keys Type.FullName (the result + of IType.Name and Type.AssemblyQualifiedName. This is different + from the other items put in the basicNameMap because it is uses the AQN and the + FQN as opposed to the short name used in the maps and the FQN. + + + Since this method calls the method + GetSerializableType(System.Type, Int32) + with the default length, those keys will also be added. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A one-to-one association type for the given class and cascade style. + + + + + A many-to-one association type for the given class and cascade style. + + + + + + + A many-to-one association type for the given class and cascade style. + + + + + A many-to-one association type for the given class and cascade style. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use to create the array. + + An for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + A for the specified role. + + + + + Creates a new for an + with bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + A for the specified role. + + + + + Creates a new for an + with id-bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + A for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + A for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + A for the specified role. + + + + + Creates a new for an + that is sorted by an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The that does the sorting. + + A for the specified role. + + + + + Creates a new for an + that maintains insertion order of elements. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + A for the specified role. + + + + + Creates a new for an + that is sorted by an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The that does the sorting. + + A for the specified role. + + + + + Creates a new for an + with bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use to create the + with. + + + A for the specified role. + + + + + Creates a new for an + with identifier + bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use to create the + with. + + + A for the specified role. + + + + + Creates a new for an + with list + semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use to create the + with. + + + A for the specified role. + + + + + Creates a new for an + . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use as the TKey to create the + with. + + + The to use as the TValue to create the + with. + + + A for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The type of the set elements. + A for the specified role. + + + + Creates a new for a sorted . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use for the set. + The type of the elements in the set. + A for the specified role. + + + + Deep copy values in the first array into the second + + + + + Determine if any of the given field values are dirty, + returning an array containing indexes of + the dirty fields or null if no fields are dirty. + + + + + Determine if any of the given field values are modified, + returning an array containing indexes of + the dirty fields or null if no fields are modified. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps the Assembly Qualified Name of a to a + column. + + + + + + + + Initialize a new instance of the TypeType class using a + . + + The underlying . + + + + Gets the in the for the Property. + + The that contains the value. + The index of the field to get the value from. + The from the database. + + Thrown when the value in the database can not be loaded as a + + + + + Gets the in the for the Property. + + The that contains the value. + The name of the field to get the value from. + The from the database. + + This just calls gets the index of the name in the IDataReader + and calls the overloaded version + (IDataReader, Int32). + + + Thrown when the value in the database can not be loaded as a + + + + + Puts the Assembly Qualified Name of the + Property into to the . + + The to put the value into. + The that contains the value. + The index of the to start writing the value to. + + This uses the method of the + object to do the work. + + + + + A representation of the value to be embedded in an XML element + + The that contains the values. + + An Xml formatted string that contains the Assembly Qualified Name. + + + + + + + + + + + + Gets the that will be returned + by the NullSafeGet() methods. + + + A from the .NET framework. + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + Maps a to a 1 char column + that stores a 'Y'/'N' to indicate true/false. + + + If you are using schema-export to generate your tables then you need + to set the column attributes: length=1 or sql-type="char(1)". + + This needs to be done because in Java's JDBC there is a type for CHAR and + in ADO.NET there is not one specifically for char, so you need to tell schema + export to create a char(1) column. + + + + + + + + + + + + + + + + + A UserType that may be dereferenced in a query. + This interface allows a custom type to define "properties". + These need not necessarily correspond to physical .NET style properties. + + A ICompositeUserType may be used in almost every way + that a component may be used. It may even contain many-to-one + associations. + + Implementors must be immutable and must declare a public + default constructor. + + Unlike UserType, cacheability does not depend upon + serializability. Instead, Assemble() and + Disassemble() provide conversion to/from a cacheable + representation. + + + + + Get the value of a property + + an instance of class mapped by this "type" + + the property value + + + + Set the value of a property + + an instance of class mapped by this "type" + + the value to set + + + + Compare two instances of the class mapped by this type for persistence + "equality", ie. equality of persistent state. + + + + + + + + Get a hashcode for the instance, consistent with persistence "equality" + + + + + Retrieve an instance of the mapped class from a IDataReader. Implementors + should handle possibility of null values. + + IDataReader + the column names + + the containing entity + + + + + Write an instance of the mapped class to a prepared statement. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from index. + + + + + + + + + Return a deep copy of the persistent state, stopping at entities and at collections. + + generally a collection element or entity field + + + + + Transform the object into its cacheable representation. + At the very least this method should perform a deep copy. + That may not be enough for some implementations, method should perform a deep copy. That may not be enough for some implementations, however; for example, associations must be cached as identifier values. (optional operation) + + the object to be cached + + + + + + Reconstruct an object from the cacheable representation. + At the very least this method should perform a deep copy. (optional operation) + + the object to be cached + + + + + + + During merge, replace the existing (target) value in the entity we are merging to + with a new (original) value from the detached entity we are merging. For immutable + objects, or null values, it is safe to simply return the first parameter. For + mutable objects, it is safe to return a copy of the first parameter. However, since + composite user types often define component values, it might make sense to recursively + replace component values in the target object. + + + + + Get the "property names" that may be used in a query. + + + + + Get the corresponding "property types" + + + + + The class returned by NullSafeGet(). + + + + + Are objects of this type mutable? + + + + + A custom type that may function as an identifier or discriminator + type, or may be marshalled to and from an XML document. + + + + + The inteface to be implemented by user-defined types. + + + + The inteface abstracts user code from future changes to the inteface, + simplifies the implementation of custom types and hides certain "internal interfaces from + user code. + + + Implemenators must be immutable and must declare a public default constructor. + + + The actual class mapped by a IUserType may be just about anything. However, if it is to + be cacheble by a persistent cache, it must be serializable. + + + Alternatively, custom types could implement directly or extend one of the + abstract classes in NHibernate.Type. This approach risks future incompatible changes + to classes or intefaces in the package. + + + + + + Compare two instances of the class mapped by this type for persistent "equality" + ie. equality of persistent state + + + + + + + + Get a hashcode for the instance, consistent with persistence "equality" + + + + + Retrieve an instance of the mapped class from a JDBC resultset. + Implementors should handle possibility of null values. + + a IDataReader + column names + the containing entity + + HibernateException + + + + Write an instance of the mapped class to a prepared statement. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from index. + + a IDbCommand + the object to write + command parameter index + HibernateException + + + + Return a deep copy of the persistent state, stopping at entities and at collections. + + generally a collection element or entity field + a copy + + + + During merge, replace the existing () value in the entity + we are merging to with a new () value from the detached + entity we are merging. For immutable objects, or null values, it is safe to simply + return the first parameter. For mutable objects, it is safe to return a copy of the + first parameter. For objects with component values, it might make sense to + recursively replace component values. + + the value from the detached entity being merged + the value in the managed entity + the managed entity + the value to be merged + + + + Reconstruct an object from the cacheable representation. At the very least this + method should perform a deep copy if the type is mutable. (optional operation) + + the object to be cached + the owner of the cached object + a reconstructed object from the cachable representation + + + + Transform the object into its cacheable representation. At the very least this + method should perform a deep copy if the type is mutable. That may not be enough + for some implementations, however; for example, associations must be cached as + identifier values. (optional operation) + + the object to be cached + a cacheable representation of the object + + + + The SQL types for the columns mapped by this type. + + + + + The type returned by NullSafeGet() + + + + + Are objects of this type mutable? + + + + + Parse a string representation of this value, as it appears + in an XML document. + + + + + Return an SQL literal representation of the value + + + + + A custom type with certain not- values represented as + in the database. + + Implementing this interface is useful if a property of the type + is used in a class with dynamic-update or dynamic-insert + set to . + + + + + Determines whether the specified value is represented as in the database. + + The value, may be . + + if the specified value is represented as in the database; + otherwise, . + + + + + Support for parameterizable types. A UserType or CustomUserType may be + made parameterizable by implementing this interface. Parameters for a + type may be set by using a nested type element for the property element + + + + + Gets called by Hibernate to pass the configured type parameters to + the implementation. + + + + + Instantiate an uninitialized instance of the collection wrapper + + + + + Wrap an instance of a collection + + + + + Return an over the elements of this collection - the passed collection + instance may or may not be a wrapper + + + + + Optional operation. Does the collection contain the entity instance? + + + + + Optional operation. Return the index of the entity in the collection. + + + + + Replace the elements of a collection with the elements of another collection + + + + + Instantiate an empty instance of the "underlying" collection (not a wrapper) + + + + + A user type that may be used for a version property. + + + + + Generate an initial version. + + The session from which this request originates. May be + null; currently this only happens during startup when trying to determine + the "unsaved value" of entities. + an instance of the type + + + + Increment the version. + + The session from which this request originates. + the current version + an instance of the type + + + + Helper class that contains common array functions and + data structures used through out NHibernate. + + + + + Sets item at position to . + Expands the list by adding values, if needed. + + + + + Computes a hash code for . + + The hash code is computed as the sum of hash codes of + individual elements, so that the value is independent of the + collection iteration order. + + + + + Creates a that uses case-insensitive string comparison + associated with invariant culture. + + + This is different from the method in + in that the latter uses the current culture and is thus vulnerable to the "Turkish I" problem. + + + + + Creates a that uses case-insensitive string comparison + associated with invariant culture. + + + This is different from the method in + in that the latter uses the current culture and is thus vulnerable to the "Turkish I" problem. + + + + + A read-only dictionary that is always empty and permits lookup by key. + + + + + Utility class implementing ToString for collections. All ToString + overloads call element.ToString(). + + + To print collections of entities or typed values, use + . + + + + + + + + An where keys are compared by object identity, rather than equals. + + All external users of this class need to have no knowledge of the IdentityKey - it is all + hidden by this class. + + + + Do NOT use a System.Value type as the key for this Hashtable - only classes. See + the google thread + about why using System.Value is a bad thing. + + + If I understand it correctly, the first call to get an object defined by a DateTime("2003-01-01") + would box the DateTime and return the identity key for the box. If you were to get that Key and + unbox it into a DateTime struct, then the next time you passed it in as the Key the IdentityMap + would box it again (into a different box) and it would have a different IdentityKey - so you would + not get the same value for the same DateTime value. + + + + + + Create a new instance of the IdentityMap that has no + iteration order. + + A new IdentityMap based on a Hashtable. + + + + Create a new instance of the IdentityMap that has an + iteration order of the order the objects were added + to the Map. + + A new IdentityMap based on ListDictionary. + + + + Return the Dictionary Entries (as instances of DictionaryEntry in a collection + that is safe from concurrent modification). Ie - we may safely add new instances + to the underlying IDictionary during enumeration of the Values. + + The IDictionary to get the enumeration safe list. + A Collection of DictionaryEntries + + + + Create the IdentityMap class with the correct class for the IDictionary. + Unsorted = Hashtable + Sorted = ListDictionary + + A class that implements the IDictionary for storing the objects. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Verifies that we are not using a System.ValueType as the Key in the Dictionary + + The object that will be the key. + An object that is safe to be a key. + Thrown when the obj is a System.ValueType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the Keys used in this IdentityMap + + + + + + + + + + + + + + + + Provides a snapshot VIEW in the form of a List of the contents of the IdentityMap. + You can safely iterate over this VIEW and modify the actual IdentityMap because the + VIEW is a copy of the contents, not a reference to the existing Map. + + Contains a copy (not that actual instance stored) of the DictionaryEntries in a List. + + + + + Compares two objects for Equality using "==" instead of Object.Equals + + + Only for use in IdentityMap. + + + + + Performs a null safe comparison using "==" instead of Object.Equals() + + First object to compare. + Second object to compare. + + This is Lazy collection safe since it uses ==, unlike Object.Equals() + which currently causes NHibernate to load up the collection. This behaivior of + Collections is likely to change because Java's collections override Equals() and + .net's collections don't. So in .net there is no need to override Equals() and + GetHashCode() on the NHibernate Collection implementations. + + + Unlike the standard IComparer interface this will not return a 1 or -1 + to indicate which is Greater Than or Less Than. It always returns -1 to + indicate the two are not Equal. + + + + + Combines multiple objects implementing into one. + + + + + Creates an IEnumerable object from multiple IEnumerables. + + The IEnumerables to join together. + + + + + + + + + + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this JoinedEnumerable is being Disposed of or Finalized. + + The command is closed and the reader is disposed. This allows other ADO.NET + related actions to occur without needing to move all the way through the + EnumerableImpl. + + + + + + + + Summary description for ObjectUtils. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extracts a set of param child nodes from the specified node + <param name="theName" value="theValue"/> + + Parent element. + null if no parameters are found + + + + Helper class for Reflection related code. + + + + + Determine if the specified overrides the + implementation of Equals from + + The to reflect. + if any type in the hierarchy overrides Equals(object). + + + + Determine if the specified overrides the + implementation of GetHashCode from + + The to reflect. + if any type in the hierarchy overrides GetHashCode(). + + + + Finds the for the property in the . + + The to find the property in. + The name of the Property to find. + The name of the property access strategy. + The to get the value of the Property. + + This one takes a propertyAccessor name as we might know the correct strategy by now so we avoid Exceptions which are costly + + + + + Get the NHibernate for the named property of the . + + The to find the Property in. + The name of the property/field to find in the class. + The name of the property accessor for the property. + + The NHibernate for the named property. + + + + + Get the for the named property of a type. + + The to find the property in. + The name of the property/field to find in the class. + The name of the property accessor for the property. + The for the named property. + + + + Returns a reference to the Type. + + The name of the class or a fully qualified name. + The Type for the Class. + + + + Returns a from an already loaded Assembly or an + Assembly that is loaded with a partial name. + + An . + if an exception should be thrown + in case of an error, otherwise. + + A object that represents the specified type, + or if the type cannot be loaded. + + + Attempts to get a reference to the type from an already loaded assembly. If the + type cannot be found then the assembly is loaded using + . + + + + + Returns the value of the static field of . + + The . + The name of the field in the . + The value contained in the field, or if the type or the field does not exist. + + + + Gets the default no arg constructor for the . + + The to find the constructor for. + + The for the no argument constructor, or if the + type is an abstract class. + + + Thrown when there is a problem calling the method GetConstructor on . + + + + + Finds the constructor that takes the parameters. + + The to find the constructor in. + The objects to use to find the appropriate constructor. + + An that can be used to create the type with + the specified parameters. + + + Thrown when no constructor with the correct signature can be found. + + + + + Determines if the is a non creatable class. + + The to check. + if the is an Abstract Class or an Interface. + + + + A map of objects whose mapping entries are sequenced based on the order in which they were + added. This data structure has fast O(1) search time, deletion time, and insertion time + + + This class is not thread safe. + + + + + Construct an empty sentinel used to hold the head (sentinel.next) and the tail (sentinal.prev) + of the list. The sentinal has a key and value + + + + + + Sentinel used to hold the head and tail of the list of entries + + + + + Map of keys to entries + + + + + Holds the number of modifications that have occurred to the map, excluding modifications + made through a collection view's iterator. + + + + + Construct a new sequenced hash map with default initial size and load factor + + + + + Construct a new sequenced hash map with the specified initial size and default load factor + + the initial size for the hash table + + + + Construct a new sequenced hash map with the specified initial size and load factor + + the initial size for the hashtable + the load factor for the hash table + + + + Construct a new sequenced hash map with the specified initial size, hash code provider + and comparer + + the initial size for the hashtable + + + + + + Creates an empty Hashtable with the default initial capacity and using the default load factor, + the specified hash code provider and the specified comparer + + + + + + + Creates an empty Hashtable with the default initial capacity and using the default load factor, + the specified hash code provider and the specified comparer + + the initial size for the hashtable + the load factor for the hash table + + + + + + Removes an internal entry from the linked list. THis does not remove it from the underlying + map. + + + + + + Inserts a new internal entry to the tail of the linked list. This does not add the + entry to the underlying map. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove the Entry identified by the Key if it exists. + + The Key to remove. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Return only the Key of the DictionaryEntry + + + + + Return only the Value of the DictionaryEntry + + + + + Return the full DictionaryEntry + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Just a façade for calling string.Split() + We don't use our StringTokenizer because string.Split() is + more efficient (but it only works when we don't want to retrieve the delimiters) + + separators for the tokens of the list + the string that will be broken into tokens + + + + + Splits the String using the StringTokenizer. + + separators for the tokens of the list + the string that will be broken into tokens + true to include the seperators in the tokens. + + + This is more powerful than Split because you have the option of including or + not including the seperators in the tokens. + + + + + + + + + + + + + + + + + + + + Takes a fully qualified type name and returns the full name of the + Class - includes namespaces. + + + + + + + Takes a fully qualifed type name (can include the assembly) and just returns + the name of the Class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converts a in the format of "true", "t", "false", or "f" to + a . + + The string to convert. + + The value converted to a . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Counts the unquoted instances of the character. + + + + + + + + + + + + + + + + Generate a nice alias for the given class name or collection role + name and unique integer. Subclasses do not have to use + aliases of this form. + + an alias of the form foo1_ + + + + Returns the interned string equal to if there is one, or + otherwise. + + A + A + + + + A StringTokenizer java like object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Count of elements in the collection. Unreliable! + + + + + Wraps exceptions that occur during ADO.NET calls. + + + Exceptions thrown by various ADO.NET providers are not derived from + a common base class (SQLException in Java), so + is used instead in NHibernate. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Indicates failure of an assertion: a possible bug in NHibernate + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Contains static declarations from Criteria interface in Hibernate. + + + + + The alias that refers to the "root" entity of the criteria query. + + + + + Each row of results is an IDictionary from alias to entity instance + + + + + Each row of results is an instance of the root entity + + + + + Each row of results is a distinct instance of the root entity + + + + + An exception that usually occurs at configuration time, rather than runtime, as a result of + something screwy in the O-R mappings + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Initializes a new instance of the class. + + The message that describes the error. + The name of the duplicate object + The type of the duplicate object + + + + Initializes a new instance of the class. + + The name of the duplicate object + The type of the duplicate object + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + The type of the duplicated object + + + + + The name of the duplicated object + + + + + Allows user code to inspect and/or change property values before they are written and after they + are read from the database + + + + There might be a single instance of IInterceptor for a SessionFactory, or a new + instance might be specified for each ISession. Whichever approach is used, the interceptor + must be serializable if the ISession is to be serializable. This means that SessionFactory + -scoped interceptors should implement ReadResolve(). + + + The ISession may not be invoked from a callback (nor may a callback cause a collection or + proxy to be lazily initialized). + + + + + + Called just before an object is initialized + + + + + + + + The interceptor may change the state, which will be propagated to the persistent + object. Note that when this method is called, entity will be an empty + uninitialized instance of the class. + if the user modified the state in any way + + + + Called when an object is detected to be dirty, during a flush. + + + + + + + + + The interceptor may modify the detected currentState, which will be propagated to + both the database and the persistent object. Note that all flushes end in an actual + synchronization with the database, in which as the new currentState will be propagated + to the object, but not necessarily (immediately) to the database. It is strongly recommended + that the interceptor not modify the previousState. + + if the user modified the currentState in any way + + + + Called before an object is saved + + + + + + + + The interceptor may modify the state, which will be used for the SQL INSERT + and propagated to the persistent object + + if the user modified the state in any way + + + + Called before an object is deleted + + + + + + + + It is not recommended that the interceptor modify the state. + + + + + Called before a flush + + The entities + + + + Called after a flush that actually ends in execution of the SQL statements required to + synchronize in-memory state with the database. + + The entitites + + + + Called when a transient entity is passed to SaveOrUpdate. + + + The return value determines if the object is saved + + - the entity is passed to Save(), resulting in an INSERT + - the entity is passed to Update(), resulting in an UPDATE + - Hibernate uses the unsaved-value mapping to determine if the object is unsaved + + + A transient entity + + + + + Called from Flush(). The return value determines whether the entity is updated + + + + an array of property indicies - the entity is dirty + an empty array - the entity is not dirty + - use Hibernate's default dirty-checking algorithm + + + A persistent entity + + + + + + An array of dirty property indicies or to choose default behavior + + + + Instantiate the entity class. Return to indicate that Hibernate should use the default + constructor of the class + + A mapped type + The identifier of the new instance + An instance of the class, or to choose default behaviour + + + + Called when a NHibernate transaction is begun via the NHibernate + API. Will not be called if transactions are being controlled via some other mechanism. + + + + + Called before a transaction is committed (but not before rollback). + + + + + Called after a transaction is committed or rolled back. + + + + + Called when a session-scoped (and only session scoped) interceptor is attached + to a session + + + + + Represents a fetching strategy. + + + This is used together with the API to specify + runtime fetching strategies. + + For Hql queries, use the FETCH keyword instead. + + + + + + Default to the setting configured in the mapping file. + + + + + Fetch eagerly, using a separate select. Equivalent to + fetch="select" (and outer-join="false") + + + + + Fetch using an outer join. Equivalent to + fetch="join" (and outer-join="true") + + + + + Represents a flushing strategy. + + + The flush process synchronizes database state with session state by detecting state + changes and executing SQL statements + + + + + Special value for unspecified flush mode (like in Java). + + + + + The ISession is never flushed unless Flush() is explicitly + called by the application. This mode is very efficient for read only + transactions + + + + + The ISession is flushed when Transaction.Commit() is called + + + + + The ISession is sometimes flushed before query execution in order to + ensure that queries never return stale state. This is the default flush mode. + + + + + Provides XML marshalling for classes registered with a SessionFactory + + + + Hibernate defines a generic XML format that may be used to represent any class + (hibernate-generic.dtd). The user configures an XSLT stylesheet for marshalling + data from this generic format to an application and/or user readable format. By default, + Hibernate will use hibernate-default.xslt which maps data to a useful human- + readable format. + + + The property hibernate.xml.output_stylesheet specifies a user-written stylesheet. + Hibernate will attempt to load the stylesheet from the classpath first and if not found, + will attempt to load it as a file + + + It is not intended that implementors be threadsafe + + + + + + Add an object to the output document. + + A transient or persistent instance + Databinder + + + + Add a collection of objects to the output document + + A collection of transient or persistent instance + Databinder + + + + Output the generic XML representation of the bound objects + + Generic Xml representation + + + + Output the generic XML Representation of the bound objects + to a XmlDocument + + A generic Xml tree + + + + Output the custom XML representation of the bound objects + + Custom Xml representation + + + + Output the custom XML representation of the bound objects as + an XmlDocument + + A custom Xml Tree + + + + Controls whether bound objects (and their associated objects) that are lazily instanciated + are explicityl initialized or left as they are + + True to explicitly initilize lazy objects, false to leave them in the state they are in + + + + Thrown if Hibernate can't instantiate an entity or component class at runtime. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + The that NHibernate was trying to instantiate. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the that NHibernate was trying to instantiate. + + + + + Gets a message that describes the current . + + + The error message that explains the reason for this exception and the Type that + was trying to be instantiated. + + + + + Thrown when an invalid type is specified as a proxy for a class. + The exception is also thrown when a class is specified as lazy, + but cannot be used as a proxy for itself. + + + + + A problem occurred trying to lazily initialize a collection or proxy (for example the session + was closed) or iterate query results. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Instances represent a lock mode for a row of a relational database table. + + + It is not intended that users spend much time worrying about locking since Hibernate + usually obtains exactly the right lock level automatically. Some "advanced" users may + wish to explicitly specify lock levels. + + + + + + + + + + + + + + + Is this lock mode more restrictive than the given lock mode? + + + + + + Is this lock mode less restrictive than the given lock mode? + + + + + + No lock required. + + + If an object is requested with this lock mode, a Read lock + might be obtained if necessary. + + + + + A shared lock. + + + Objects are loaded in Read mode by default + + + + + An upgrade lock. + + + Objects loaded in this lock mode are materialized using an + SQL SELECT ... FOR UPDATE + + + + + Attempty to obtain an upgrade lock, using an Oracle-style + SELECT ... FOR UPGRADE NOWAIT. + + + The semantics of this lock mode, once obtained, are the same as Upgrade + + + + + A Write lock is obtained when an object is updated or inserted. + + + This is not a valid mode for Load() or Lock(). + + + + + Provides access to the full range of NHibernate built-in types. + IType instances may be used to bind values to query parameters. + Also a factory for new Blobs and Clobs. + + + + + NHibernate Ansi String type + + + + + NHibernate binary type + + + + + NHibernate binary blob type + + + + + NHibernate boolean type + + + + + NHibernate byte type + + + + + NHibernate character type + + + + + NHibernate Culture Info type + + + + + NHibernate date type + + + + + NHibernate date type + + + + + NHibernate decimal type + + + + + NHibernate double type + + + + + NHibernate Guid type. + + + + + NHibernate System.Int16 (short in C#) type + + + + + NHibernate System.Int32 (int in C#) type + + + + + NHibernate System.Int64 (long in C#) type + + + + + NHibernate System.SByte type + + + + + NHibernate System.UInt16 (ushort in C#) type + + + + + NHibernate System.UInt32 (uint in C#) type + + + + + NHibernate System.UInt64 (ulong in C#) type + + + + + NHIbernate System.Single (float in C#) Type + + + + + NHibernate String type + + + + + NHibernate string clob type + + + + + NHibernate Time type + + + + + NHibernate Ticks type + + + + + NHibernate Ticks type + + + + + NHibernate Timestamp type + + + + + NHibernate TrueFalse type + + + + + NHibernate YesNo type + + + + + NHibernate class type + + + + + NHibernate serializable type + + + + + NHibernate System.Object type + + + + + Cannot be instantiated. + + + + + A NHibernate persistent enum type + + + + + + + A NHibernate serializable type + + + + + + + A NHibernate serializable type + + a type mapping to a single column + the entity identifier type + + + + + A NHibernate persistent object (entity) type + + a mapped entity class + + + + + A NHibernate persistent object (entity) type + + a mapped entity class + + + + + A NHibernate custom type + + a class that implements UserType + + + + + Force initialization of a proxy or persistent collection. + + a persistable object, proxy, persistent collection or null + if we can't initialize the proxy at this time, eg. the Session was closed + + + + Is the proxy or persistent collection initialized? + + a persistable object, proxy, persistent collection or null + true if the argument is already initialized, or is not a proxy or collection + + + + Get the true, underlying class of a proxied persistent class. This operation + will initialize a proxy by side-effect. + + a persistable object or proxy + the true class of the instance + + + + Close an obtained from an + returned by NHibernate immediately, instead of waiting until the session is + closed or disconnected. + + + + + Close an returned by NHibernate immediately, + instead of waiting until the session is closed or disconnected. + + + + + This exception is thrown when an operation would + break session-scoped identity. This occurs if the + user tries to associate two different instances of + the same class with a particular identifier, + in the scope of a single . + + + + + Initializes a new instance of the class. + + The message that describes the error. + The identifier of the object that caused the exception. + The of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + The identifier of the object that caused the exception. + The of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when the application calls IQuery.UniqueResult() + and the query returned more than one result. Unlike all other NHibernate + exceptions, this one is recoverable! + + + + + Initializes a new instance of the class. + + The number of items in the result. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when the user tries to pass a deleted object to the ISession. + + + + + Thrown when Hibernate could not resolve an object by id, especially when + loading an association. + + + + + Initializes a new instance of the class. + + The identifier of the object that caused the exception. + The of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + The message that describes the error. + The identifier of the object that caused the exception. + The of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when ISession.Load() fails to select a row with + the given primary key (identifier value). This exception might not + be thrown when Load() is called, even if there was no + row on the database, because Load() returns a proxy if + possible. Applications should use ISession.Get() to test if + a row exists in the database. + + + + + Initializes a new instance of the class. + + The identifier of the object that was attempting to be loaded. + The that NHibernate was trying to find a row for in the database. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when the user passes a persistent instance to a ISession method that expects a + transient instance + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + A problem occurred accessing a property of an instance of a persistent class by reflection + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + A indicating if this was a "setter" operation. + The that NHibernate was trying find the Property or Field in. + The mapped property name that was trying to be accessed. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the that NHibernate was trying find the Property or Field in. + + + + + Gets a message that describes the current . + + + The error message that explains the reason for this exception and + information about the mapped property and its usage. + + + + + Indicates that an expected getter or setter method could not be found on a class + + + + + Initializes a new instance of the class, + used when a property get/set accessor is missing. + + The that is missing the property + The name of the missing property + The type of the missing accessor + ("getter" or "setter") + + + + Initializes a new instance of the class, + used when a field is missing. + + The that is missing the field + The name of the missing property + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Initializes a new instance of the class. + + The message that describes the error. + The that NHibernate was trying to access. + The name of the Property that was being get/set. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Represents a replication strategy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Throw an exception when a row already exists + + + + + + + + + + Ignore replicated entities when a row already exists + + + + + + + + + + Overwrite existing rows when a row already exists + + + + + + + + + + When a row already exists, choose the latest version + + + + + + + + + + Thrown when a version number check failed, indicating that the + contained stale data (when using long transactions with + versioning). + + + + + Initializes a new instance of the class. + + The that NHibernate was trying to update in the database. + The identifier of the object that is stale. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the that NHibernate was trying to update in the database. + + + + + Gets the identifier of the object that is stale. + + + + + Gets a message that describes the current . + + The error message that explains the reason for this exception. + + + + Indicated that a transaction could not be begun, committed, or rolled back + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Throw when the user passes a transient instance to a ISession method that expects + a persistent instance + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when ISession.Load() selects a row with the given primary key (identifier value) + but the row's discriminator value specifies a different subclass from the one requested + + + + + Initializes a new instance of the class. + + The message that describes the error. + The identifier of the object that was being loaded. + The that NHibernate was told to load. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the identifier of the object that was being loaded. + + + + + Gets the that NHibernate was told to load. + + + + + Gets a message that describes the current . + + The error message that explains the reason for this exception. + + + diff --git a/lib/NHibernate12/net/4.0/log4net.dll b/lib/NHibernate12/net/4.0/log4net.dll new file mode 100644 index 0000000000000000000000000000000000000000..ffc57e11254ad9530867b35d15aaf38eb4747d8d GIT binary patch literal 270336 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 + + + log4net + + + + + Appender that logs to a database. + + + + appends logging events to a table within a + database. The appender can be configured to specify the connection + string by setting the property. + The connection type (provider) can be specified by setting the + property. For more information on database connection strings for + your specific database see http://www.connectionstrings.com/. + + + Records are written into the database either using a prepared + statement or a stored procedure. The property + is set to (System.Data.CommandType.Text) to specify a prepared statement + or to (System.Data.CommandType.StoredProcedure) to specify a stored + procedure. + + + The prepared statement text or the name of the stored procedure + must be set in the property. + + + The prepared statement or stored procedure can take a number + of parameters. Parameters are added using the + method. This adds a single to the + ordered list of parameters. The + type may be subclassed if required to provide database specific + functionality. The specifies + the parameter name, database type, size, and how the value should + be generated using a . + + + + An example of a SQL Server table that could be logged to: + + CREATE TABLE [dbo].[Log] ( + [ID] [int] IDENTITY (1, 1) NOT NULL , + [Date] [datetime] NOT NULL , + [Thread] [varchar] (255) NOT NULL , + [Level] [varchar] (20) NOT NULL , + [Logger] [varchar] (255) NOT NULL , + [Message] [varchar] (4000) NOT NULL + ) ON [PRIMARY] + + + + An example configuration to log to the above table: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Julian Biddle + Nicko Cadell + Gert Driesen + Lance Nehring + + + + Abstract base class implementation of that + buffers events in a fixed size buffer. + + + + This base class should be used by appenders that need to buffer a + number of events before logging them. For example the + buffers events and then submits the entire contents of the buffer to + the underlying database in one go. + + + Subclasses should override the + method to deliver the buffered events. + + The BufferingAppenderSkeleton maintains a fixed size cyclic + buffer of events. The size of the buffer is set using + the property. + + A is used to inspect + each event as it arrives in the appender. If the + triggers, then the current buffer is sent immediately + (see ). Otherwise the event + is stored in the buffer. For example, an evaluator can be used to + deliver the events immediately when an ERROR event arrives. + + + The buffering appender can be configured in a mode. + By default the appender is NOT lossy. When the buffer is full all + the buffered events are sent with . + If the property is set to true then the + buffer will not be sent when it is full, and new events arriving + in the appender will overwrite the oldest event in the buffer. + In lossy mode the buffer will only be sent when the + triggers. This can be useful behavior when you need to know about + ERROR events but not about events with a lower level, configure an + evaluator that will trigger when an ERROR event arrives, the whole + buffer will be sent which gives a history of events leading up to + the ERROR event. + + + Nicko Cadell + Gert Driesen + + + + Abstract base class implementation of . + + + + This class provides the code for common functionality, such + as support for threshold filtering and support for general filters. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface for your own strategies for printing log statements. + + + + Implementors should consider extending the + class which provides a default implementation of this interface. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Log the logging event in Appender specific way. + + The event to log + + + This method is called to log a message into this appender. + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + The name uniquely identifies the appender. + + + + + Interface for appenders that support bulk logging. + + + + This interface extends the interface to + support bulk logging of objects. Appenders + should only implement this interface if they can bulk log efficiently. + + + Nicko Cadell + + + + Log the array of logging events in Appender specific way. + + The events to log + + + This method is called to log an array of events into this appender. + + + + + + Interface used to delay activate a configured object. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then the method + must be called by the container after its all the configured properties have been set + and before the component can be used. + + + Nicko Cadell + + + + Activate the options that were previously set with calls to properties. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then this method must be called + after its properties have been set before the component can be used. + + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Default constructor + + + Empty default constructor + + + + + Finalizes this appender by calling the implementation's + method. + + + + If this appender has not been closed then the Finalize method + will call . + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Closes the appender and release resources. + + + + Release any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + This method cannot be overridden by subclasses. This method + delegates the closing of the appender to the + method which must be overridden in the subclass. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The event to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the abstract method. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The array of events to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the method. + + + + + + Test if the logging event should we output by this appender + + the event to test + true if the event should be output, false if the event should be ignored + + + This method checks the logging event against the threshold level set + on this appender and also against the filters specified on this + appender. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + + + + + Adds a filter to the end of the filter chain. + + the filter to add to this appender + + + The Filters are organized in a linked list. + + + Setting this property causes the new filter to be pushed onto the + back of the filter chain. + + + + + + Clears the filter list for this appender. + + + + Clears the filter list for this appender. + + + + + + Checks if the message level is below this appender's threshold. + + to test against. + + + If there is no threshold set, then the return value is always true. + + + + true if the meets the + requirements of this appender. + + + + + Is called when the appender is closed. Derived classes should override + this method if resources need to be released. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Subclasses of should implement this method + to perform actual logging. + + The event to append. + + + A subclass must implement this method to perform + logging of the . + + This method will be called by + if all the conditions listed for that method are met. + + + To restrict the logging of events in the appender + override the method. + + + + + + Append a bulk array of logging events. + + the array of logging events + + + This base class implementation calls the + method for each element in the bulk array. + + + A sub class that can better process a bulk array of events should + override this method in addition to . + + + + + + Called before as a precondition. + + + + This method is called by + before the call to the abstract method. + + + This method can be overridden in a subclass to extend the checks + made before the event is passed to the method. + + + A subclass should ensure that they delegate this call to + this base class if it is overridden. + + + true if the call to should proceed. + + + + Renders the to a string. + + The event to render. + The event rendered as a string. + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Where possible use the alternative version of this method + . + That method streams the rendering onto an existing Writer + which can give better performance if the caller already has + a open and ready for writing. + + + + + + Renders the to a string. + + The event to render. + The TextWriter to write the formatted event to + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Use this method in preference to + where possible. If, however, the caller needs to render the event + to a string then does + provide an efficient mechanism for doing so. + + + + + + The layout of this appender. + + + See for more information. + + + + + The name of this appender. + + + See for more information. + + + + + The level threshold of this appender. + + + + There is no level threshold filtering by default. + + + See for more information. + + + + + + It is assumed and enforced that errorHandler is never null. + + + + It is assumed and enforced that errorHandler is never null. + + + See for more information. + + + + + + The first filter in the filter chain. + + + + Set to null initially. + + + See for more information. + + + + + + The last filter in the filter chain. + + + See for more information. + + + + + Flag indicating if this appender is closed. + + + See for more information. + + + + + The guard prevents an appender from repeatedly calling its own DoAppend method + + + + + StringWriter used to render events + + + + + Gets or sets the threshold of this appender. + + + The threshold of the appender. + + + + All log events with lower level than the threshold level are ignored + by the appender. + + + In configuration files this option is specified by setting the + value of the option to a level + string, such as "DEBUG", "INFO" and so on. + + + + + + Gets or sets the for this appender. + + The of the appender + + + The provides a default + implementation for the property. + + + + + + The filter chain. + + The head of the filter chain filter chain. + + + Returns the head Filter. The Filters are organized in a linked list + and so all Filters on this Appender are available through the result. + + + + + + Gets or sets the for this appender. + + The layout of the appender. + + + See for more information. + + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + + The name uniquely identifies the appender. + + + + + + Tests if this appender requires a to be set. + + + + In the rather exceptional case, where the appender + implementation admits a layout but can also work without it, + then the appender should return true. + + + This default implementation always returns true. + + + + true if the appender requires a layout object, otherwise false. + + + + + The default buffer size. + + + The default size of the cyclic buffer used to store events. + This is set to 512 by default. + + + + + Initializes a new instance of the class. + + + + Protected default constructor to allow subclassing. + + + + + + Initializes a new instance of the class. + + the events passed through this appender must be + fixed by the time that they arrive in the derived class' SendBuffer method. + + + Protected constructor to allow subclassing. + + + The should be set if the subclass + expects the events delivered to be fixed even if the + is set to zero, i.e. when no buffering occurs. + + + + + + Flush the currently buffered events + + + + Flushes any events that have been buffered. + + + If the appender is buffering in mode then the contents + of the buffer will NOT be flushed to the appender. + + + + + + Flush the currently buffered events + + set to true to flush the buffer of lossy events + + + Flushes events that have been buffered. If is + false then events will only be flushed if this buffer is non-lossy mode. + + + If the appender is buffering in mode then the contents + of the buffer will only be flushed if is true. + In this case the contents of the buffer will be tested against the + and if triggering will be output. All other buffered + events will be discarded. + + + If is true then the buffer will always + be emptied by calling this method. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Close this appender instance. + + + + Close this appender instance. If this appender is marked + as not then the remaining events in + the buffer must be sent when the appender is closed. + + + + + + This method is called by the method. + + the event to log + + + Stores the in the cyclic buffer. + + + The buffer will be sent (i.e. passed to the + method) if one of the following conditions is met: + + + + The cyclic buffer is full and this appender is + marked as not lossy (see ) + + + An is set and + it is triggered for the + specified. + + + + Before the event is stored in the buffer it is fixed + (see ) to ensure that + any data referenced by the event will be valid when the buffer + is processed. + + + + + + Sends the contents of the buffer. + + The first logging event. + The buffer containing the events that need to be send. + + + The subclass must override . + + + + + + Sends the events. + + The events that need to be send. + + + The subclass must override this method to process the buffered events. + + + + + + The size of the cyclic buffer used to hold the logging events. + + + Set to by default. + + + + + The cyclic buffer used to store the logging events. + + + + + The triggering event evaluator that causes the buffer to be sent immediately. + + + The object that is used to determine if an event causes the entire + buffer to be sent immediately. This field can be null, which + indicates that event triggering is not to be done. The evaluator + can be set using the property. If this appender + has the ( property) set to + true then an must be set. + + + + + Indicates if the appender should overwrite events in the cyclic buffer + when it becomes full, or if the buffer should be flushed when the + buffer is full. + + + If this field is set to true then an must + be set. + + + + + The triggering event evaluator filters discarded events. + + + The object that is used to determine if an event that is discarded should + really be discarded or if it should be sent to the appenders. + This field can be null, which indicates that all discarded events will + be discarded. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + The events delivered to the subclass must be fixed. + + + + + Gets or sets a value that indicates whether the appender is lossy. + + + true if the appender is lossy, otherwise false. The default is false. + + + + This appender uses a buffer to store logging events before + delivering them. A triggering event causes the whole buffer + to be send to the remote sink. If the buffer overruns before + a triggering event then logging events could be lost. Set + to false to prevent logging events + from being lost. + + If is set to true then an + must be specified. + + + + + Gets or sets the size of the cyclic buffer used to hold the + logging events. + + + The size of the cyclic buffer used to hold the logging events. + + + + The option takes a positive integer + representing the maximum number of logging events to collect in + a cyclic buffer. When the is reached, + oldest events are deleted as new events are added to the + buffer. By default the size of the cyclic buffer is 512 events. + + + If the is set to a value less than + or equal to 1 then no buffering will occur. The logging event + will be delivered synchronously (depending on the + and properties). Otherwise the event will + be buffered. + + + + + + Gets or sets the that causes the + buffer to be sent immediately. + + + The that causes the buffer to be + sent immediately. + + + + The evaluator will be called for each event that is appended to this + appender. If the evaluator triggers then the current buffer will + immediately be sent (see ). + + If is set to true then an + must be specified. + + + + + Gets or sets the value of the to use. + + + The value of the to use. + + + + The evaluator will be called for each event that is discarded from this + appender. If the evaluator triggers then the current buffer will immediately + be sent (see ). + + + + + + Gets or sets a value indicating if only part of the logging event data + should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the + event data to be fixed and serialized. This will improve performance. + + + See for more information. + + + + + + Gets or sets a the fields that will be fixed in the event + + + The event fields that will be fixed before the event is buffered + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + + Initializes a new instance of the class. + + + Public default constructor to initialize a new instance of this class. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Override the parent method to close the database + + + + Closes the database command and database connection. + + + + + + Inserts the events into the database. + + The events to insert into the database. + + + Insert all the events specified in the + array into the database. + + + + + + Adds a parameter to the command. + + The parameter to add to the command. + + + Adds a parameter to the ordered list of command parameters. + + + + + + Writes the events to the database using the transaction specified. + + The transaction that the events will be executed under. + The array of events to insert into the database. + + + The transaction argument can be null if the appender has been + configured not to use transactions. See + property for more information. + + + + + + Formats the log message into database statement text. + + The event being logged. + + This method can be overridden by subclasses to provide + more control over the format of the database statement. + + + Text that can be passed to a . + + + + + Connects to the database. + + + + + Retrieves the class type of the ADO.NET provider. + + + + Gets the Type of the ADO.NET provider to use to connect to the + database. This method resolves the type specified in the + property. + + + Subclasses can override this method to return a different type + if necessary. + + + The of the ADO.NET provider + + + + Prepares the database command and initialize the parameters. + + + + + Flag to indicate if we are using a command object + + + + Set to true when the appender is to use a prepared + statement or stored procedure to insert into the database. + + + + + + The list of objects. + + + + The list of objects. + + + + + + The security context to use for privileged calls + + + + + The that will be used + to insert logging events into a database. + + + + + The database command. + + + + + Database connection string. + + + + + String type name of the type name. + + + + + The text of the command. + + + + + The command type. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Gets or sets the database connection string that is used to connect to + the database. + + + The database connection string used to connect to the database. + + + + The connections string is specific to the connection type. + See for more information. + + + Connection string for MS Access via ODBC: + "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" + + Another connection string for MS Access via ODBC: + "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" + + Connection string for MS Access via OLE DB: + "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" + + + + + Gets or sets the type name of the connection + that should be created. + + + The type name of the connection. + + + + The type name of the ADO.NET provider to use. + + + The default is to use the OLE DB provider. + + + Use the OLE DB Provider. This is the default value. + System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the MS SQL Server Provider. + System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the ODBC Provider. + Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for ODBC .NET Data Provider. + + Use the Oracle Provider. + System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for .NET Managed Provider for Oracle. + + + + + Gets or sets the command text that is used to insert logging events + into the database. + + + The command text used to insert logging events into the database. + + + + Either the text of the prepared statement or the + name of the stored procedure to execute to write into + the database. + + + The property determines if + this text is a prepared statement or a stored procedure. + + + + + + Gets or sets the command type to execute. + + + The command type to execute. + + + + This value may be either (System.Data.CommandType.Text) to specify + that the is a prepared statement to execute, + or (System.Data.CommandType.StoredProcedure) to specify that the + property is the name of a stored procedure + to execute. + + + The default value is (System.Data.CommandType.Text). + + + + + + Should transactions be used to insert logging events in the database. + + + true if transactions should be used to insert logging events in + the database, otherwise false. The default value is true. + + + + Gets or sets a value that indicates whether transactions should be used + to insert logging events in the database. + + + When set a single transaction will be used to insert the buffered events + into the database. Otherwise each event will be inserted without using + an explicit transaction. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Should this appender try to reconnect to the database on error. + + + true if the appender should try to reconnect to the database after an + error has occurred, otherwise false. The default value is false, + i.e. not to try to reconnect. + + + + The default behaviour is for the appender not to try to reconnect to the + database if an error occurs. Subsequent logging events are discarded. + + + To force the appender to attempt to reconnect to the database set this + property to true. + + + When the appender attempts to connect to the database there may be a + delay of up to the connection timeout specified in the connection string. + This delay will block the calling application's thread. + Until the connection can be reestablished this potential delay may occur multiple times. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to insert + logging events into a database. Classes deriving from + can use this property to get or set this . Use the + underlying returned from if + you require access beyond that which provides. + + + + + Parameter type used by the . + + + + This class provides the basic database parameter properties + as defined by the interface. + + This type can be subclassed to provide database specific + functionality. The two methods that are called externally are + and . + + + + + + Initializes a new instance of the class. + + + Default constructor for the AdoNetAppenderParameter class. + + + + + Prepare the specified database command object. + + The command to prepare. + + + Prepares the database command object by adding + this parameter to its collection of parameters. + + + + + + Renders the logging event and set the parameter value in the command. + + The command containing the parameter. + The event to be rendered. + + + Renders the logging event using this parameters layout + object. Sets the value of the parameter on the command object. + + + + + + The name of this parameter. + + + + + The database type for this parameter. + + + + + Flag to infer type rather than use the DbType + + + + + The precision for this parameter. + + + + + The scale for this parameter. + + + + + The size for this parameter. + + + + + The to use to render the + logging event into an object for this parameter. + + + + + Gets or sets the name of this parameter. + + + The name of this parameter. + + + + The name of this parameter. The parameter name + must match up to a named parameter to the SQL stored procedure + or prepared statement. + + + + + + Gets or sets the database type for this parameter. + + + The database type for this parameter. + + + + The database type for this parameter. This property should + be set to the database type from the + enumeration. See . + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the type from the value. + + + + + + + Gets or sets the precision for this parameter. + + + The precision for this parameter. + + + + The maximum number of digits used to represent the Value. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the precision from the value. + + + + + + + Gets or sets the scale for this parameter. + + + The scale for this parameter. + + + + The number of decimal places to which Value is resolved. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the scale from the value. + + + + + + + Gets or sets the size for this parameter. + + + The size for this parameter. + + + + The maximum size, in bytes, of the data within the column. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the size from the value. + + + + + + + Gets or sets the to use to + render the logging event into an object for this + parameter. + + + The used to render the + logging event into an object for this parameter. + + + + The that renders the value for this + parameter. + + + The can be used to adapt + any into a + for use in the property. + + + + + + Appends logging events to the terminal using ANSI color escape sequences. + + + + AnsiColorTerminalAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific level of message to be set. + + + This appender expects the terminal to understand the VT100 control set + in order to interpret the color codes. If the terminal or console does not + understand the control codes the behavior is not defined. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + When configuring the ANSI colored terminal appender, a mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + + These color values cannot be combined together to make new colors. + + + The attributes can be any combination of the following: + + Brightforeground is brighter + Dimforeground is dimmer + Underscoremessage is underlined + Blinkforeground is blinking (does not work on all terminals) + Reverseforeground and background are reversed + Hiddenoutput is hidden + Strikethroughmessage has a line through it + + While any of these attributes may be combined together not all combinations + work well together, for example setting both Bright and Dim attributes makes + no sense. + + + Patrick Wagstrom + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Ansi code to reset terminal + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Add a mapping of level to color + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colours + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Target is the value of the console output stream. + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible display attributes + + + + The following flags can be combined together to + form the ANSI color attributes. + + + + + + + text is bright + + + + + text is dim + + + + + text is underlined + + + + + text is blinking + + + Not all terminals support this attribute + + + + + text and background colors are reversed + + + + + text is hidden + + + + + text is displayed with a strikethrough + + + + + The enum of possible foreground or background color values for + use with the color mapping method + + + + The output can be in one for the following ANSI colors. + + + + + + + color is black + + + + + color is red + + + + + color is green + + + + + color is yellow + + + + + color is blue + + + + + color is magenta + + + + + color is cyan + + + + + color is white + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + An entry in the + + + + This is an abstract base class for types that are stored in the + object. + + + Nicko Cadell + + + + Default protected constructor + + + + Default protected constructor + + + + + + Initialize any options defined on this entry + + + + Should be overridden by any classes that need to initialise based on their options + + + + + + The level that is the key for this mapping + + + The that is the key for this mapping + + + + Get or set the that is the key for this + mapping subclass. + + + + + + Initialize the options for the object + + + + Combine the and together + and append the attributes. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level + + + + + + The color attributes for the specified level + + + + Required property. + The color attributes for the specified level + + + + + + The combined , and + suitable for setting the ansi terminal color. + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a AppenderCollection instance. + + list to create a readonly wrapper arround + + An AppenderCollection wrapper that is read-only. + + + + + An empty readonly static AppenderCollection + + + + + Initializes a new instance of the AppenderCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the AppenderCollection class + that has the specified initial capacity. + + + The number of elements that the new AppenderCollection is initially capable of storing. + + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified AppenderCollection. + + The AppenderCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire AppenderCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire AppenderCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the AppenderCollection. + + The to be added to the end of the AppenderCollection. + The index at which the value has been added. + + + + Removes all elements from the AppenderCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the AppenderCollection. + + The to check for. + true if is found in the AppenderCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the AppenderCollection. + + The to locate in the AppenderCollection. + + The zero-based index of the first occurrence of + in the entire AppenderCollection, if found; otherwise, -1. + + + + + Inserts an element into the AppenderCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the AppenderCollection. + + The to remove from the AppenderCollection. + + The specified was not found in the AppenderCollection. + + + + + Removes the element at the specified index of the AppenderCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the AppenderCollection. + + An for the entire AppenderCollection. + + + + Adds the elements of another AppenderCollection to the current AppenderCollection. + + The AppenderCollection whose elements should be added to the end of the current AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a array to the current AppenderCollection. + + The array whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a collection to the current AppenderCollection. + + The collection whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Sets the capacity to the actual number of elements. + + + + + Return the collection elements as an array + + the array + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the AppenderCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the AppenderCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + + + + + Appends log events to the ASP.NET system. + + + + + Diagnostic information and tracing messages that you specify are appended to the output + of the page that is sent to the requesting browser. Optionally, you can view this information + from a separate trace viewer (Trace.axd) that displays trace information for every page in a + given application. + + + Trace statements are processed and displayed only when tracing is enabled. You can control + whether tracing is displayed to a page, to the trace viewer, or both. + + + The logging event is passed to the or + method depending on the level of the logging event. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the ASP.NET trace + + the event to log + + + Write the logging event to the ASP.NET trace + HttpContext.Current.Trace + (). + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Buffers events and then forwards them to attached appenders. + + + + The events are buffered in this appender until conditions are + met to allow the appender to deliver the events to the attached + appenders. See for the + conditions that cause the buffer to be sent. + + The forwarding appender can be used to specify different + thresholds and filters for the same appender at different locations + within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Interface for attaching appenders to objects. + + + + Interface for attaching, removing and retrieving appenders. + + + Nicko Cadell + Gert Driesen + + + + Attaches an appender. + + The appender to add. + + + Add the specified appender. The implementation may + choose to allow or deny duplicate appenders. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Returns an attached appender with the specified. + If no appender with the specified name is found null will be + returned. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Gets all attached appenders. + + + A collection of attached appenders. + + + + Gets a collection of attached appenders. + If there are no attached appenders the + implementation should return an empty + collection rather than null. + + + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Send the events. + + The events that need to be send. + + + Forwards the events to the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this buffering appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Appends logging events to the console. + + + + ColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes directly to the application's attached console + not to the System.Console.Out or System.Console.Error TextWriter. + The System.Console.Out and System.Console.Error streams can be + programmatically redirected (for example NUnit does this to capture program output). + This appender will ignore these redirections because it needs to use Win32 + API calls to colorize the output. To respect these redirections the + must be used. + + + When configuring the colored console appender, mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + combination of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + HighIntensity + + + + Rick Hobbs + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + The console output stream writer to write to + + + + This writer is not thread safe. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible color values for use with the color mapping method + + + + The following flags can be combined together to + form the colors. + + + + + + + color is blue + + + + + color is green + + + + + color is red + + + + + color is white + + + + + color is yellow + + + + + color is purple + + + + + color is cyan + + + + + color is intensified + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + Initialize the options for the object + + + + Combine the and together. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + The combined and suitable for + setting the console color. + + + + + Appends logging events to the console. + + + + ConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + Nicko Cadell + Gert Driesen + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + debug system. + + + Events are written using the + method. The event's logger name is passed as the value for the category name to the Write method. + + + Nicko Cadell + + + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + If is true then the + is called. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Writes events to the system event log. + + + + The EventID of the event log entry can be + set using the EventLogEventID property () + on the . + + + There is a limit of 32K characters for an event log message + + + When configuring the EventLogAppender a mapping can be + specified to map a logging level to an event log entry type. For example: + + + <mapping> + <level value="ERROR" /> + <eventLogEntryType value="Error" /> + </mapping> + <mapping> + <level value="DEBUG" /> + <eventLogEntryType value="Information" /> + </mapping> + + + The Level is the standard log4net logging level and eventLogEntryType can be any value + from the enum, i.e.: + + Erroran error event + Warninga warning event + Informationan informational event + + + + Aspi Havewala + Douglas de la Torre + Nicko Cadell + Gert Driesen + Thomas Voss + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class + with the specified . + + The to use with this appender. + + + Obsolete constructor. + + + + + + Add a mapping of level to - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the event log entry type for a level. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create an event log source + + + Uses different API calls under NET_2_0 + + + + + This method is called by the + method. + + the event to log + + Writes the event to the system event log using the + . + + If the event has an EventID property (see ) + set then this integer will be used as the event log event id. + + + There is a limit of 32K characters for an event log message + + + + + + Get the equivalent for a + + the Level to convert to an EventLogEntryType + The equivalent for a + + Because there are fewer applicable + values to use in logging levels than there are in the + this is a one way mapping. There is + a loss of information during the conversion. + + + + + The log name is the section in the event logs where the messages + are stored. + + + + + Name of the application to use when logging. This appears in the + application column of the event log named by . + + + + + The name of the machine which holds the event log. This is + currently only allowed to be '.' i.e. the current machine. + + + + + Mapping from level object to EventLogEntryType + + + + + The security context to use for privileged calls + + + + + The name of the log where messages will be stored. + + + The string name of the log where messages will be stored. + + + This is the name of the log as it appears in the Event Viewer + tree. The default value is to log into the Application + log, this is where most applications write their events. However + if you need a separate log for your application (or applications) + then you should set the appropriately. + This should not be used to distinguish your event log messages + from those of other applications, the + property should be used to distinguish events. This property should be + used to group together events into a single log. + + + + + + Property used to set the Application name. This appears in the + event logs when logging. + + + The string used to distinguish events from different sources. + + + Sets the event log source property. + + + + + This property is used to return the name of the computer to use + when accessing the event logs. Currently, this is the current + computer, denoted by a dot "." + + + The string name of the machine holding the event log that + will be logged into. + + + This property cannot be changed. It is currently set to '.' + i.e. the local machine. This may be changed in future. + + + + + Gets or sets the used to write to the EventLog. + + + The used to write to the EventLog. + + + + The system security context used to write to the EventLog. + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and its event log entry type. + + + + + + The for this entry + + + + Required property. + The for this entry + + + + + + Appends logging events to a file. + + + + Logging events are sent to the file specified by + the property. + + + The file can be opened in either append or overwrite mode + by specifying the property. + If the file path is relative it is taken as relative from + the application base directory. The file encoding can be + specified by setting the property. + + + The layout's and + values will be written each time the file is opened and closed + respectively. If the property is + then the file may contain multiple copies of the header and footer. + + + This appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + The supports pluggable file locking models via + the property. + The default behavior, implemented by + is to obtain an exclusive write lock on the file until this appender is closed. + The alternative model, , only holds a + write lock while the appender is writing a logging event. + + + Nicko Cadell + Gert Driesen + Rodrigo B. de Oliveira + Douglas de la Torre + Niall Daley + + + + Sends logging events to a . + + + + An Appender that writes to a . + + + This appender may be used stand alone if initialized with an appropriate + writer, however it is typically used as a base class for an appender that + can open a to write to. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class and + sets the output destination to a new initialized + with the specified . + + The layout to use with this appender. + The to output to. + + + Obsolete constructor. + + + + + + Initializes a new instance of the class and sets + the output destination to the specified . + + The layout to use with this appender + The to output to + + The must have been previously opened. + + + + Obsolete constructor. + + + + + + This method determines if there is a sense in attempting to append. + + + + This method checked if an output target has been set and if a + layout has been set. + + + false if any of the preconditions fail. + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + This method writes all the bulk logged events to the output writer + before flushing the stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + Closed appenders cannot be reused. + + + + + Writes the footer and closes the underlying . + + + + Writes the footer and closes the underlying . + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Clears internal references to the underlying + and other variables. + + + + Subclasses can override this method for an alternate closing behavior. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Called to allow a subclass to lazily initialize the writer + + + + This method is called when an event is logged and the or + have not been set. This allows a subclass to + attempt to initialize the writer multiple times. + + + + + + This is the where logging events + will be written to. + + + + + Immediate flush means that the underlying + or output stream will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logging events are not actually persisted if and when the application + crashes. + + + The default value is true. + + + + + + Gets or set whether the appender will flush at the end + of each append operation. + + + + The default behavior is to flush at the end of each + append operation. + + + If this option is set to false, then the underlying + stream can defer persisting the logging event to a later + time. + + + + Avoiding the flush operation at the end of each append results in + a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + Sets the where the log output will go. + + + + The specified must be open and writable. + + + The will be closed when the appender + instance is closed. + + + Note: Logging to an unopened will fail. + + + + + + Gets or set the and the underlying + , if any, for this appender. + + + The for this appender. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Gets or sets the where logging events + will be written to. + + + The where logging events are written. + + + + This is the where logging events + will be written to. + + + + + + Default constructor + + + + Default constructor + + + + + + Construct a new appender using the layout, file and append mode. + + the layout to use with this appender + the full path to the file to write to + flag to indicate if the file should be appended to + + + Obsolete constructor. + + + + + + Construct a new appender using the layout and file specified. + The file will be appended to. + + the layout to use with this appender + the full path to the file to write to + + + Obsolete constructor. + + + + + + Activate the options on the file appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This will cause the file to be opened. + + + + + + Closes any previously opened file and calls the parent's . + + + + Resets the filename and the file stream. + + + + + + Called to initialize the file writer + + + + Will be called for each logged message until the file is + successfully opened. + + + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + Acquires the output file locks once before writing all the events to + the stream. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Closes the previously opened file. + + + + Writes the to the file and then + closes the file. + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + Calls but guarantees not to throw an exception. + Errors are passed to the . + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + If there was already an opened file, then the previous file + is closed first. + + + This method will ensure that the directory structure + for the specified exists. + + + + + + Sets the quiet writer used for file output + + the file stream that has been opened for writing + + + This implementation of creates a + over the and passes it to the + method. + + + This method can be overridden by sub classes that want to wrap the + in some way, for example to encrypt the output + data using a System.Security.Cryptography.CryptoStream. + + + + + + Sets the quiet writer being used. + + the writer over the file stream that has been opened for writing + + + This method can be overridden by sub classes that want to + wrap the in some way. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + Flag to indicate if we should append to the file + or overwrite the file. The default is to append. + + + + + The name of the log file. + + + + + The encoding to use for the file stream. + + + + + The security context to use for privileged calls + + + + + The stream to log to. Has added locking semantics + + + + + The locking model to use + + + + + Gets or sets the path to the file that logging will be written to. + + + The path to the file that logging will be written to. + + + + If the path is relative it is taken as relative from + the application base directory. + + + + + + Gets or sets a flag that indicates whether the file should be + appended to or overwritten. + + + Indicates whether the file should be appended to or overwritten. + + + + If the value is set to false then the file will be overwritten, if + it is set to true then the file will be appended to. + + The default value is true. + + + + + Gets or sets used to write to the file. + + + The used to write to the file. + + + + The default encoding set is + which is the encoding for the system's current ANSI code page. + + + + + + Gets or sets the used to write to the file. + + + The used to write to the file. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the used to handle locking of the file. + + + The used to lock the file. + + + + Gets or sets the used to handle locking of the file. + + + There are two built in locking models, and . + The former locks the file from the start of logging to the end and the + later lock only for the minimal amount of time when logging each message. + + + The default locking model is the . + + + + + + Write only that uses the + to manage access to an underlying resource. + + + + + True asynchronous writes are not supported, the implementation forces a synchronous write. + + + + + Exception base type for log4net. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class with + the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Locking model base class + + + + Base class for the locking models available to the derived loggers. + + + + + + Open the output file + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Gets or sets the for this LockingModel + + + The for this LockingModel + + + + The file appender this locking model is attached to and working on + behalf of. + + + The file appender is used to locate the security context and the error handler to use. + + + The value of this property will be set before is + called. + + + + + + Hold an exclusive lock on the output file + + + + Open the file once for writing and hold it open until is called. + Maintains an exclusive lock on the file during this time. + + + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Release the lock on the file + + + + Does nothing. The lock will be released when the file is closed. + + + + + + Acquires the file lock for each write + + + + Opens the file once for each / cycle, + thus holding the lock for the minimal amount of time. This method of locking + is considerably slower than but allows + other processes to move/delete the log file whilst logging continues. + + + + + + Prepares to open the file when the first message is logged. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + This appender forwards logging events to attached appenders. + + + + The forwarding appender can be used to specify different thresholds + and filters for the same appender at different locations within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Forward the logging event to the attached appenders + + The event to log. + + + Delivers the logging event to all the attached appenders. + + + + + + Forward the logging events to the attached appenders + + The array of events to log. + + + Delivers the logging events to all the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Logs events to a local syslog service. + + + + This appender uses the POSIX libc library functions openlog, syslog, and closelog. + If these functions are not available on the local system then this appender will not work! + + + The functions openlog, syslog, and closelog are specified in SUSv2 and + POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. + + + This appender talks to a local syslog service. If you need to log to a remote syslog + daemon and you cannot configure your local syslog service to do this you may be + able to use the to log via UDP. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a local syslog service. + + + + + Add a mapping of level to severity + + The mapping to add + + + Adds a to this appender. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Close the syslog when the appender is closed + + + + Close the syslog when the appender is closed + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + + The facility. The default facility is . + + + + + The message identity + + + + + Marshaled handle to the identity string. We have to hold on to the + string as the openlog and syslog APIs just hold the + pointer to the ident and dereference it for each log message. + + + + + Mapping from level object to syslog severity + + + + + Open connection to system logger. + + + + + Generate a log message. + + + + The libc syslog method takes a format string and a variable argument list similar + to the classic printf function. As this type of vararg list is not supported + by C# we need to specify the arguments explicitly. Here we have specified the + format string with a single message argument. The caller must set the format + string to "%s". + + + + + + Close descriptor used to write to system logger. + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + syslog severities + + + + The log4net Level maps to a syslog severity using the + method and the + class. The severity is set on . + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facility defines which subsystem the logging comes from. + This is set on the property. + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Stores logging events in an array. + + + + The memory appender stores all the logging events + that are appended in an in-memory array. + + + Use the method to get + the current list of events that have been appended. + + + Use the method to clear the + current list of events. + + + Julian Biddle + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Gets the events that have been logged. + + The events that have been logged + + + Gets the events that have been logged. + + + + + + This method is called by the method. + + the event to log + + Stores the in the events list. + + + + + Clear the list of events + + + Clear the list of events + + + + + The list of events that have been appended. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + Gets or sets a value indicating whether only part of the logging event + data should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the event + data to be fixed and stored in the appender, hereby improving performance. + + + See for more information. + + + + + + Gets or sets the fields that will be fixed in the event + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + Logs entries by sending network messages using the + native function. + + + + You can send messages only to names that are active + on the network. If you send the message to a user name, + that user must be logged on and running the Messenger + service to receive the message. + + + The receiver will get a top most window displaying the + messages one at a time, therefore this appender should + not be used to deliver a high volume of messages. + + + The following table lists some possible uses for this appender : + + + + + Action + Property Value(s) + + + Send a message to a user account on the local machine + + + = <name of the local machine> + + + = <user name> + + + + + Send a message to a user account on a remote machine + + + = <name of the remote machine> + + + = <user name> + + + + + Send a message to a domain user account + + + = <name of a domain controller | uninitialized> + + + = <user name> + + + + + Send a message to all the names in a workgroup or domain + + + = <workgroup name | domain name>* + + + + + Send a message from the local machine to a remote machine + + + = <name of the local machine | uninitialized> + + + = <name of the remote machine> + + + + + + + Note : security restrictions apply for sending + network messages, see + for more information. + + + + + An example configuration section to log information + using this appender from the local machine, named + LOCAL_PC, to machine OPERATOR_PC : + + + + + + + + + + Nicko Cadell + Gert Driesen + + + + The DNS or NetBIOS name of the server on which the function is to execute. + + + + + The sender of the network message. + + + + + The message alias to which the message should be sent. + + + + + The security context to use for privileged calls + + + + + Initializes the appender. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified. + + + The required property was not specified. + + + + This method is called by the method. + + The event to log. + + + Sends the event using a network message. + + + + + + Sends a buffer of information to a registered message alias. + + The DNS or NetBIOS name of the server on which the function is to execute. + The message alias to which the message buffer should be sent + The originator of the message. + The message text. + The length, in bytes, of the message text. + + + The following restrictions apply for sending network messages: + + + + + Platform + Requirements + + + Windows NT + + + No special group membership is required to send a network message. + + + Admin, Accounts, Print, or Server Operator group membership is required to + successfully send a network message on a remote server. + + + + + Windows 2000 or later + + + If you send a message on a domain controller that is running Active Directory, + access is allowed or denied based on the access control list (ACL) for the securable + object. The default ACL permits only Domain Admins and Account Operators to send a network message. + + + On a member server or workstation, only Administrators and Server Operators can send a network message. + + + + + + + For more information see Security Requirements for the Network Management Functions. + + + + + If the function succeeds, the return value is zero. + + + + + + Gets or sets the sender of the message. + + + The sender of the message. + + + If this property is not specified, the message is sent from the local computer. + + + + + Gets or sets the message alias to which the message should be sent. + + + The recipient of the message. + + + This property should always be specified in order to send a message. + + + + + Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. + + + DNS or NetBIOS name of the remote server on which the function is to execute. + + + + For Windows NT 4.0 and earlier, the string should begin with \\. + + + If this property is not specified, the local computer is used. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the OutputDebugString system. + + + + OutputDebugStringAppender appends log events to the + OutputDebugString system. + + + The string is passed to the native OutputDebugString + function. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the output debug string API + + the event to log + + + Write the logging event to the output debug string API + + + + + + Stub for OutputDebugString native method + + the string to output + + + Stub for OutputDebugString native method + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Logs events to a remote syslog daemon. + + + + The BSD syslog protocol is used to remotely log to + a syslog daemon. The syslogd listens for for messages + on UDP port 514. + + + The syslog UDP protocol is not authenticated. Most syslog daemons + do not accept remote log messages because of the security implications. + You may be able to use the LocalSyslogAppender to talk to a local + syslog service. + + + There is an RFC 3164 that claims to document the BSD Syslog Protocol. + This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. + This appender generates what the RFC calls an "Original Device Message", + i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation + this format of message will be accepted by all current syslog daemon + implementations. The daemon will attach the current time and the source + hostname or IP address to any messages received. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Sends logging events as connectionless UDP datagrams to a remote host or a + multicast group using an . + + + + UDP guarantees neither that messages arrive, nor that they arrive in the correct order. + + + To view the logging results, a custom application can be developed that listens for logging + events. + + + When decoding events send via this appender remember to use the same encoding + to decode the events as was used to send the events. See the + property to specify the encoding to use. + + + + This example shows how to log receive logging events that are sent + on IP address 244.0.0.1 and port 8080 to the console. The event is + encoded in the packet as a unicode string and it is decoded as such. + + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + UdpClient udpClient; + byte[] buffer; + string loggingEvent; + + try + { + udpClient = new UdpClient(8080); + + while(true) + { + buffer = udpClient.Receive(ref remoteEndPoint); + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); + Console.WriteLine(loggingEvent); + } + } + catch(Exception e) + { + Console.WriteLine(e.ToString()); + } + + + Dim remoteEndPoint as IPEndPoint + Dim udpClient as UdpClient + Dim buffer as Byte() + Dim loggingEvent as String + + Try + remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) + udpClient = new UdpClient(8080) + + While True + buffer = udpClient.Receive(ByRef remoteEndPoint) + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) + Console.WriteLine(loggingEvent) + Wend + Catch e As Exception + Console.WriteLine(e.ToString()) + End Try + + + An example configuration section to log information using this appender to the + IP 224.0.0.1 on port 8080: + + + + + + + + + + Gert Driesen + Nicko Cadell + + + + Initializes a new instance of the class. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified or + an invalid remote or local TCP port number was specified. + + + The required property was not specified. + The TCP port number assigned to or is less than or greater than . + + + + This method is called by the method. + + The event to log. + + + Sends the event using an UDP datagram. + + + Exceptions are passed to the . + + + + + + Closes the UDP connection and releases all resources associated with + this instance. + + + + Disables the underlying and releases all managed + and unmanaged resources associated with the . + + + + + + Initializes the underlying connection. + + + + The underlying is initialized and binds to the + port number from which you intend to communicate. + + + Exceptions are passed to the . + + + + + + The IP address of the remote host or multicast group to which + the logging event will be sent. + + + + + The TCP port number of the remote host or multicast group to + which the logging event will be sent. + + + + + The cached remote endpoint to which the logging events will be sent. + + + + + The TCP port number from which the will communicate. + + + + + The instance that will be used for sending the + logging events. + + + + + The encoding to use for the packet. + + + + + Gets or sets the IP address of the remote host or multicast group to which + the underlying should sent the logging event. + + + The IP address of the remote host or multicast group to which the logging event + will be sent. + + + + Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to + 239.255.255.255). Multicast packets can pass across different networks through routers, so + it is possible to use multicasts in an Internet scenario as long as your network provider + supports multicasting. + + + Hosts that want to receive particular multicast messages must register their interest by joining + the multicast group. Multicast messages are not sent to networks where no host has joined + the multicast group. Class D IP addresses are used for multicast groups, to differentiate + them from normal host addresses, allowing nodes to easily detect if a message is of interest. + + + Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: + + + + + IP Address + Description + + + 224.0.0.1 + + + Sends a message to all system on the subnet. + + + + + 224.0.0.2 + + + Sends a message to all routers on the subnet. + + + + + 224.0.0.12 + + + The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. + + + + + + + A complete list of actually reserved multicast addresses and their owners in the ranges + defined by RFC 3171 can be found at the IANA web site. + + + The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative + addresses. These addresses can be reused with other local groups. Routers are typically + configured with filters to prevent multicast traffic in this range from flowing outside + of the local network. + + + + + + Gets or sets the TCP port number of the remote host or multicast group to which + the underlying should sent the logging event. + + + An integer value in the range to + indicating the TCP port number of the remote host or multicast group to which the logging event + will be sent. + + + The underlying will send messages to this TCP port number + on the remote host or multicast group. + + The value specified is less than or greater than . + + + + Gets or sets the TCP port number from which the underlying will communicate. + + + An integer value in the range to + indicating the TCP port number from which the underlying will communicate. + + + + The underlying will bind to this port for sending messages. + + + Setting the value to 0 (the default) will cause the udp client not to bind to + a local port. + + + The value specified is less than or greater than . + + + + Gets or sets used to write the packets. + + + The used to write the packets. + + + + The used to write the packets. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to send logging events + over a network. Classes deriving from can use this + property to get or set this . Use the underlying + returned from if you require access beyond that which + provides. + + + + + Gets or sets the cached remote endpoint to which the logging events should be sent. + + + The cached remote endpoint to which the logging events will be sent. + + + The method will initialize the remote endpoint + with the values of the and + properties. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Syslog port 514 + + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a remote syslog daemon. + + + + + Add a mapping of level to severity + + The mapping to add + + + Add a mapping to this appender. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to syslog severity mappings set on this appender. + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + Generate a syslog priority. + + + + + + The facility. The default facility is . + + + + + The message identity + + + + + Mapping from level object to syslog severity + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + syslog severities + + + + The syslog severities. + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facilities + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Delivers logging events to a remote logging sink. + + + + This Appender is designed to deliver events to a remote sink. + That is any object that implements the + interface. It delivers the events using .NET remoting. The + object to deliver events to is specified by setting the + appenders property. + + The RemotingAppender buffers events before sending them. This allows it to + make more efficient use of the remoting infrastructure. + + Once the buffer is full the events are still not sent immediately. + They are scheduled to be sent using a pool thread. The effect is that + the send occurs asynchronously. This is very important for a + number of non obvious reasons. The remoting infrastructure will + flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + Because the events are sent asynchronously using pool threads it is possible to close + this appender before all the queued events have been sent. + When closing the appender attempts to wait until all the queued events have been sent, but + this will timeout after 30 seconds regardless. + + If this appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. If the runtime terminates the threads before + the queued events have been sent then they will be lost. To ensure that all events + are sent the appender must be closed before the application exits. See + for details on how to shutdown + log4net programmatically. + + + Nicko Cadell + Gert Driesen + Daniel Cazzulino + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Send the contents of the buffer to the remote sink. + + + The events are not sent immediately. They are scheduled to be sent + using a pool thread. The effect is that the send occurs asynchronously. + This is very important for a number of non obvious reasons. The remoting + infrastructure will flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + The events to send. + + + + Override base class close. + + + + This method waits while there are queued work items. The events are + sent asynchronously using work items. These items + will be sent once a thread pool thread is available to send them, therefore + it is possible to close the appender before all the queued events have been + sent. + + This method attempts to wait until all the queued events have been sent, but this + method will timeout after 30 seconds regardless. + + If the appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. + + + + + A work item is being queued into the thread pool + + + + + A work item from the thread pool has completed + + + + + Send the contents of the buffer to the remote sink. + + + This method is designed to be used with the . + This method expects to be passed an array of + objects in the state param. + + the logging events to send + + + + The URL of the remote sink. + + + + + The local proxy (.NET remoting) for the remote logging sink. + + + + + The number of queued callbacks currently waiting or executing + + + + + Event used to signal when there are no queued work items + + + This event is set when there are no queued work items. In this + state it is safe to close the appender. + + + + + Gets or sets the URL of the well-known object that will accept + the logging events. + + + The well-known URL of the remote sink. + + + + The URL of the remoting sink that will accept logging events. + The sink must implement the + interface. + + + + + + Interface used to deliver objects to a remote sink. + + + This interface must be implemented by a remoting sink + if the is to be used + to deliver logging events to the sink. + + + + + Delivers logging events to the remote sink + + Array of events to log. + + + Delivers logging events to the remote sink + + + + + + Appender that rolls log files based on size or date or both. + + + + RollingFileAppender can roll log files based on size or date or both + depending on the setting of the property. + When set to the log file will be rolled + once its size exceeds the . + When set to the log file will be rolled + once the date boundary specified in the property + is crossed. + When set to the log file will be + rolled once the date boundary specified in the property + is crossed, but within a date boundary the file will also be rolled + once its size exceeds the . + When set to the log file will be rolled when + the appender is configured. This effectively means that the log file can be + rolled once per program execution. + + + A of few additional optional features have been added: + + Attach date pattern for current log file + Backup number increments for newer files + Infinite number of backups by file size + + + + + + For large or infinite numbers of backup files a + greater than zero is highly recommended, otherwise all the backup files need + to be renamed each time a new backup is created. + + + When Date/Time based rolling is used setting + to will reduce the number of file renamings to few or none. + + + + + + Changing or without clearing + the log file directory of backup files will cause unexpected and unwanted side effects. + + + + + If Date/Time based rolling is enabled this appender will attempt to roll existing files + in the directory without a Date/Time tag based on the last write date of the base log file. + The appender only rolls the log file when a message is logged. If Date/Time based rolling + is enabled then the appender will not roll the log file at the Date/Time boundary but + at the point when the next message is logged after the boundary has been crossed. + + + + The extends the and + has the same behavior when opening the log file. + The appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + When rolling a backup file necessitates deleting an older backup file the + file to be deleted is moved to a temporary name before being deleted. + + + + + A maximum number of backup files when rolling on date/time boundaries is not supported. + + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + Edward Smit + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Sets the quiet writer being used. + + + This method can be overridden by sub classes. + + the writer to set + + + + Write out a logging event. + + the event to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Write out an array of logging events. + + the events to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Performs any required rolling before outputting the next event + + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Creates and opens the file for logging. If + is false then the fully qualified name is determined and used. + + the name of the file to open + true to append to existing file + + This method will ensure that the directory structure + for the specified exists. + + + + + Get the current output file name + + the base file name + the output file name + + The output file name is based on the base fileName specified. + If is set then the output + file name is the same as the base file passed in. Otherwise + the output file depends on the date pattern, on the count + direction or both. + + + + + Determines curSizeRollBackups (only within the current roll point) + + + + + Generates a wildcard pattern that can be used to find all files + that are similar to the base file name. + + + + + + + Builds a list of filenames for all files matching the base filename plus a file + pattern. + + + + + + + Initiates a roll over if needed for crossing a date boundary since the last run. + + + + + Initializes based on existing conditions at time of . + + + + Initializes based on existing conditions at time of . + The following is done + + determine curSizeRollBackups (only within the current roll point) + initiates a roll over if needed for crossing a date boundary since the last run. + + + + + + + Does the work of bumping the 'current' file counter higher + to the highest count when an incremental file name is seen. + The highest count is either the first file (when count direction + is greater than 0) or the last file (when count direction less than 0). + In either case, we want to know the highest count that is present. + + + + + + + Takes a list of files and a base file name, and looks for + 'incremented' versions of the base file. Bumps the max + count up to the highest count seen. + + + + + + + Calculates the RollPoint for the datePattern supplied. + + the date pattern to calculate the check period for + The RollPoint that is most accurate for the date pattern supplied + + Essentially the date pattern is examined to determine what the + most suitable roll point is. The roll point chosen is the roll point + with the smallest period that can be detected using the date pattern + supplied. i.e. if the date pattern only outputs the year, month, day + and hour then the smallest roll point that can be detected would be + and hourly roll point as minutes could not be detected. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Sets initial conditions including date/time roll over information, first check, + scheduledFilename, and calls to initialize + the current number of backups. + + + + + + Rollover the file(s) to date/time tagged file(s). + + set to true if the file to be rolled is currently open + + + Rollover the file(s) to date/time tagged file(s). + Resets curSizeRollBackups. + If fileIsOpen is set then the new file is opened (through SafeOpenFile). + + + + + + Renames file to file . + + Name of existing file to roll. + New name for file. + + + Renames file to file . It + also checks for existence of target file and deletes if it does. + + + + + + Test if a file exists at a specified path + + the path to the file + true if the file exists + + + Test if a file exists at a specified path + + + + + + Deletes the specified file if it exists. + + The file to delete. + + + Delete a file if is exists. + The file is first moved to a new filename then deleted. + This allows the file to be removed even when it cannot + be deleted, but it still can be moved. + + + + + + Implements file roll base on file size. + + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. Moreover, File is + renamed File.1 and closed. + + + A new file is created to receive further log output. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + + + + Implements file roll. + + the base name to rename + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + This is called by to rename the files. + + + + + + Get the start time of the next window for the current rollpoint + + the current date + the type of roll point we are working with + the start time for the next roll point an interval after the currentDateTime date + + + Returns the date of the next roll point after the currentDateTime date passed to the method. + + + The basic strategy is to subtract the time parts that are less significant + than the rollpoint from the current time. This should roll the time back to + the start of the time window for the current rollpoint. Then we add 1 window + worth of time and get the start time of the next window for the rollpoint. + + + + + + This object supplies the current date/time. Allows test code to plug in + a method to control this class when testing date/time based rolling. + + + + + The date pattern. By default, the pattern is set to ".yyyy-MM-dd" + meaning daily rollover. + + + + + The actual formatted filename that is currently being written to + or will be the file transferred to on roll over + (based on staticLogFileName). + + + + + The timestamp when we shall next recompute the filename. + + + + + Holds date of last roll over + + + + + The type of rolling done + + + + + The default maximum file size is 10MB + + + + + There is zero backup files by default + + + + + How many sized based backups have been made so far + + + + + The rolling file count direction. + + + + + The rolling mode used in this appender. + + + + + Cache flag set if we are rolling by date. + + + + + Cache flag set if we are rolling by size. + + + + + Value indicating whether to always log to the same file. + + + + + FileName provided in configuration. Used for rolling properly + + + + + The 1st of January 1970 in UTC + + + + + Gets or sets the date pattern to be used for generating file names + when rolling over on date. + + + The date pattern to be used for generating file names when rolling + over on date. + + + + Takes a string in the same format as expected by + . + + + This property determines the rollover schedule when rolling over + on date. + + + + + + Gets or sets the maximum number of backup files that are kept before + the oldest is erased. + + + The maximum number of backup files that are kept before the oldest is + erased. + + + + If set to zero, then there will be no backup files and the log file + will be truncated when it reaches . + + + If a negative number is supplied then no deletions will be made. Note + that this could result in very slow performance as a large number of + files are rolled over unless is used. + + + The maximum applies to each time based group of files and + not the total. + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size in bytes that the output file is allowed to reach before being + rolled over to backup files. + + + + This property is equivalent to except + that it is required for differentiating the setter taking a + argument from the setter taking a + argument. + + + The default maximum file size is 10MB (10*1024*1024). + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size that the output file is allowed to reach before being + rolled over to backup files. + + + + This property allows you to specify the maximum size with the + suffixes "KB", "MB" or "GB" so that the size is interpreted being + expressed respectively in kilobytes, megabytes or gigabytes. + + + For example, the value "10KB" will be interpreted as 10240 bytes. + + + The default maximum file size is 10MB. + + + If you have the option to set the maximum file size programmatically + consider using the property instead as this + allows you to set the size in bytes as a . + + + + + + Gets or sets the rolling file count direction. + + + The rolling file count direction. + + + + Indicates if the current file is the lowest numbered file or the + highest numbered file. + + + By default newer files have lower numbers ( < 0), + i.e. log.1 is most recent, log.5 is the 5th backup, etc... + + + >= 0 does the opposite i.e. + log.1 is the first backup made, log.5 is the 5th backup made, etc. + For infinite backups use >= 0 to reduce + rollover costs. + + The default file count direction is -1. + + + + + Gets or sets the rolling style. + + The rolling style. + + + The default rolling style is . + + + When set to this appender's + property is set to false, otherwise + the appender would append to a single file rather than rolling + the file each time it is opened. + + + + + + Gets or sets a value indicating whether to always log to + the same file. + + + true if always should be logged to the same file, otherwise false. + + + + By default file.log is always the current file. Optionally + file.log.yyyy-mm-dd for current formatted datePattern can by the currently + logging file (or file.log.curSizeRollBackup or even + file.log.yyyy-mm-dd.curSizeRollBackup). + + + This will make time based rollovers with a large number of backups + much faster as the appender it won't have to rename all the backups! + + + + + + Style of rolling to use + + + + Style of rolling to use + + + + + + Roll files once per program execution + + + + Roll files once per program execution. + Well really once each time this appender is + configured. + + + Setting this option also sets AppendToFile to + false on the RollingFileAppender, otherwise + this appender would just be a normal file appender. + + + + + + Roll files based only on the size of the file + + + + + Roll files based only on the date + + + + + Roll files based on both the size and date of the file + + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + + + Roll the log not based on the date + + + + + Roll the log for each minute + + + + + Roll the log for each hour + + + + + Roll the log twice a day (midday and midnight) + + + + + Roll the log each day (midnight) + + + + + Roll the log each week + + + + + Roll the log each month + + + + + This interface is used to supply Date/Time information to the . + + + This interface is used to supply Date/Time information to the . + Used primarily to allow test classes to plug themselves in so they can + supply test date/times. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Default implementation of that returns the current time. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Send an e-mail when a specific logging event occurs, typically on errors + or fatal errors. + + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. + For these features to be enabled you need to ensure that you are using a version of + the log4net assembly that is built against the MS .NET 1.1 framework and that you are + running the your application on the MS .NET 1.1 runtime. On all other platforms only sending + unauthenticated messages to a server listening on port 25 (the default) is supported. + + + Authentication is supported by setting the property to + either or . + If using authentication then the + and properties must also be set. + + + To set the SMTP server port use the property. The default port is 25. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + + Send the email message + + the body text to include in the mail + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of recipient e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the name of the SMTP relay mail server to use to send + the e-mail messages. + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + + + Obsolete + + + Use the BufferingAppenderSkeleton Fix methods instead + + + + Obsolete property. + + + + + + The mode to use to authentication with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + Valid Authentication mode values are: , + , and . + The default value is . When using + you must specify the + and to use to authenticate. + When using the Windows credentials for the current + thread, if impersonating, or the process will be used to authenticate. + + + + + + The username to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the username will be ignored. + + + + + + The password to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the password will be ignored. + + + + + + The port on which the SMTP server is listening + + + Server Port is only available on the MS .NET 1.1 runtime. + + The port on which the SMTP server is listening. The default + port is 25. The Port can only be changed when running on + the MS .NET 1.1 runtime. + + + + + + Gets or sets the priority of the e-mail message + + + One of the values. + + + + Sets the priority of the e-mails generated by this + appender. The default priority is . + + + If you are using this appender to report errors then + you may want to set the priority to . + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Values for the property. + + + + SMTP authentication modes. + + + + + + No authentication + + + + + Basic authentication. + + + Requires a username and password to be supplied + + + + + Integrated authentication + + + Uses the Windows credentials from the current thread or process to authenticate. + + + + + Send an email when a specific logging event occurs, typically on errors + or fatal errors. Rather than sending via smtp it writes a file into the + directory specified by . This allows services such + as the IIS SMTP agent to manage sending the messages. + + + + The configuration for this appender is identical to that of the SMTPAppender, + except that instead of specifying the SMTPAppender.SMTPHost you specify + . + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Niall Daley + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + Sends the contents of the cyclic buffer as an e-mail message. + + + + + + Activate the options on this appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + The security context to use for privileged calls + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the path to write the messages to. + + + + Gets or sets the path to write the messages to. This should be the same + as that used by the agent sending the messages. + + + + + + Gets or sets the used to write to the pickup directory. + + + The used to write to the pickup directory. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appender that allows clients to connect via Telnet to receive log messages + + + + The TelnetAppender accepts socket connections and streams logging messages + back to the client. + The output is provided in a telnet-friendly way so that a log can be monitored + over a TCP/IP socket. + This allows simple remote monitoring of application logging. + + + The default is 23 (the telnet port). + + + Keith Long + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Overrides the parent method to close the socket handler + + + + Closes all the outstanding connections. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Create the socket handler and wait for connections + + + + + + Writes the logging event to each connected client. + + The event to log. + + + Writes the logging event to each connected client. + + + + + + Gets or sets the TCP port number on which this will listen for connections. + + + An integer value in the range to + indicating the TCP port number on which this will listen for connections. + + + + The default value is 23 (the telnet port). + + + The value specified is less than + or greater than . + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Helper class to manage connected clients + + + + The SocketHandler class is used to accept connections from + clients. It is threaded so that clients can connect/disconnect + asynchronously. + + + + + + Opens a new server port on + + the local port to listen on for connections + + + Creates a socket handler on the specified local server port. + + + + + + Sends a string message to each of the connected clients + + the text to send + + + Sends a string message to each of the connected clients + + + + + + Add a client to the internal clients list + + client to add + + + + Remove a client from the internal clients list + + client to remove + + + + Callback used to accept a connection on the server socket + + The result of the asynchronous operation + + + On connection adds to the list of connections + if there are two many open connections you will be disconnected + + + + + + Close all network connections + + + + Make sure we close all network connections + + + + + + Test if this handler has active connections + + + true if this handler has active connections + + + + This property will be true while this handler has + active connections, that is at least one connection that + the handler will attempt to send a message to. + + + + + + Class that represents a client connected to this handler + + + + Class that represents a client connected to this handler + + + + + + Create this for the specified + + the client's socket + + + Opens a stream writer on the socket. + + + + + + Write a string to the client + + string to send + + + Write a string to the client + + + + + + Cleanup the clients connection + + + + Close the socket connection. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + trace system. + + + Events are written using the System.Diagnostics.Trace.Write(string,string) + method. The event's logger name is passed as the value for the category name to the Write method. + + + Compact Framework
+ The Compact Framework does not support the + class for any operation except Assert. When using the Compact Framework this + appender will write to the system rather than + the Trace system. This appender will therefore behave like the . +
+
+ Douglas de la Torre + Nicko Cadell + Gert Driesen +
+ + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Assembly level attribute that specifies a domain to alias to this assembly's repository. + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's domain to its repository by + specifying this attribute with the name of the target domain. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required domains. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies a repository to alias to this assembly's repository. + + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's repository to its repository by + specifying this attribute with the name of the target repository. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required repositories. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + The repository to alias to this assemby's repository. + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + + + + + Gets or sets the repository to alias to this assemby's repository. + + + The repository to alias to this assemby's repository. + + + + The name of the repository to alias to this assemby's repository. + + + + + + Initializes a new instance of the class with + the specified domain to alias to this assembly's repository. + + The domain to alias to this assemby's repository. + + + Obsolete. Use instead of . + + + + + + Use this class to quickly configure a . + + + + Allows very simple programmatic configuration of log4net. + + + Only one appender can be configured using this configurator. + The appender is set at the root of the hierarchy and all logging + events will be delivered to that appender. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Initializes the log4net system with a default configuration. + + + + Initializes the log4net logging system using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the log4net system using the specified appender. + + The appender to use to log all logging events. + + + Initializes the log4net system using the specified appender. + + + + + + Initializes the with a default configuration. + + The repository to configure. + + + Initializes the specified repository using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the using the specified appender. + + The repository to configure. + The appender to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Base class for all log4net configuration attributes. + + + This is an abstract class that must be extended by + specific configurators. This attribute allows the + configurator to be parameterized by an assembly level + attribute. + + Nicko Cadell + Gert Driesen + + + + Constructor used by subclasses. + + the ordering priority for this configurator + + + The is used to order the configurator + attributes before they are invoked. Higher priority configurators are executed + before lower priority ones. + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Abstract method implemented by a subclass. When this method is called + the subclass should configure the . + + + + + + Compare this instance to another ConfiguratorAttribute + + the object to compare to + see + + + Compares the priorities of the two instances. + Sorts by priority in descending order. Objects with the same priority are + randomly ordered. + + + + + + Assembly level attribute that specifies the logging domain for the assembly. + + + + DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + Assemblies are mapped to logging domains. Each domain has its own + logging repository. This attribute specified on the assembly controls + the configuration of the domain. The property specifies the name + of the domain that this assembly is a part of. The + specifies the type of the repository objects to create for the domain. If + this attribute is not specified and a is not specified + then the assembly will be part of the default shared logging domain. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies the logging repository for the assembly. + + + + Assemblies are mapped to logging repository. This attribute specified + on the assembly controls + the configuration of the repository. The property specifies the name + of the repository that this assembly is a part of. The + specifies the type of the object + to create for the assembly. If this attribute is not specified or a + is not specified then the assembly will be part of the default shared logging repository. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize a new instance of the class + with the name of the repository. + + The name of the repository. + + + Initialize the attribute with the name for the assembly's repository. + + + + + + Gets or sets the name of the logging repository. + + + The string name to use as the name of the repository associated with this + assembly. + + + + This value does not have to be unique. Several assemblies can share the + same repository. They will share the logging configuration of the repository. + + + + + + Gets or sets the type of repository to create for this assembly. + + + The type of repository to create for this assembly. + + + + The type of the repository to create for the assembly. + The type must implement the + interface. + + + This will be the type of repository created when + the repository is created. If multiple assemblies reference the + same repository then the repository is only created once using the + of the first assembly to call into the + repository. + + + + + + Initializes a new instance of the class. + + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Initialize a new instance of the class + with the name of the domain. + + The name of the domain. + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + The repository to configure. + + + + Configures log4net using a log4net element + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The element to parse. + + + + Configures the using the specified XML + element. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration file. + + A stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Assembly level attribute to configure the . + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + If neither of the or + properties are set the configuration is loaded from the application's .config file. + If set the property takes priority over the + property. The property + specifies a path to a file to load the config from. The path is relative to the + application's base directory; . + The property is used as a postfix to the assembly file name. + The config file must be located in the application's base directory; . + For example in a console application setting the to + config has the same effect as not specifying the or + properties. + + + The property can be set to cause the + to watch the configuration file for changes. + + + + Log4net will only look for assembly level configuration attributes once. + When using the log4net assembly level attributes to control the configuration + of log4net you must ensure that the first call to any of the + methods is made from the assembly with the configuration + attributes. + + + If you cannot guarantee the order in which log4net calls will be made from + different assemblies you must use programmatic configuration instead, i.e. + call the method directly. + + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Configure the repository using the . + The specified must extend the + class otherwise the will not be able to + configure it. + + + The does not extend . + + + + Attempt to load configuration from the local file system + + The assembly that this attribute was defined on. + The repository to configure. + + + + Configure the specified repository using a + + The repository to configure. + the FileInfo pointing to the config file + + + + Attempt to load configuration from a URI + + The assembly that this attribute was defined on. + The repository to configure. + + + + Gets or sets the filename of the configuration file. + + + The filename of the configuration file. + + + + If specified, this is the name of the configuration file to use with + the . This file path is relative to the + application base directory (). + + + The takes priority over the . + + + + + + Gets or sets the extension of the configuration file. + + + The extension of the configuration file. + + + + If specified this is the extension for the configuration file. + The path to the config file is built by using the application + base directory (), + the assembly file name and the config file extension. + + + If the is set to MyExt then + possible config file names would be: MyConsoleApp.exe.MyExt or + MyClassLibrary.dll.MyExt. + + + The takes priority over the . + + + + + + Gets or sets a value indicating whether to watch the configuration file. + + + true if the configuration should be watched, false otherwise. + + + + If this flag is specified and set to true then the framework + will watch the configuration file and will reload the config each time + the file is modified. + + + The config file can only be watched if it is loaded from local disk. + In a No-Touch (Smart Client) deployment where the application is downloaded + from a web server the config file may not reside on the local disk + and therefore it may not be able to watch it. + + + Watching configuration is not supported on the SSCLI. + + + + + + Class to register for the log4net section of the configuration file + + + The log4net section of the configuration file needs to have a section + handler registered. This is the section handler used. It simply returns + the XML element that is the root of the section. + + + Example of registering the log4net section handler : + + + +
+ + + log4net configuration XML goes here + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Parses the configuration section. + + The configuration settings in a corresponding parent configuration section. + The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. + The for the log4net section. + The for the log4net section. + + + Returns the containing the configuration data, + + + + + + Assembly level attribute that specifies a plugin to attach to + the repository. + + + + Specifies the type of a plugin to create and attach to the + assembly's repository. The plugin type must implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Interface used to create plugins. + + + + Interface used to create a plugin. + + + Nicko Cadell + Gert Driesen + + + + Creates the plugin object. + + the new plugin instance + + + Create and return a new plugin instance. + + + + + + Initializes a new instance of the class + with the specified type. + + The type name of plugin to create. + + + Create the attribute with the plugin type specified. + + + Where possible use the constructor that takes a . + + + + + + Initializes a new instance of the class + with the specified type. + + The type of plugin to create. + + + Create the attribute with the plugin type specified. + + + + + + Creates the plugin object defined by this attribute. + + + + Creates the instance of the object as + specified by this attribute. + + + The plugin object. + + + + Returns a representation of the properties of this object. + + + + Overrides base class method to + return a representation of the properties of this object. + + + A representation of the properties of this object + + + + Gets or sets the type for the plugin. + + + The type for the plugin. + + + + The type for the plugin. + + + + + + Gets or sets the type name for the plugin. + + + The type name for the plugin. + + + + The type name for the plugin. + + + Where possible use the property instead. + + + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + + + + Construct provider attribute with type specified + + the type of the provider to use + + + The provider specified must subclass the + class. + + + + + + Configures the SecurityContextProvider + + The assembly that this attribute was defined on. + The repository to configure. + + + Creates a provider instance from the specified. + Sets this as the default security context provider . + + + + + + Gets or sets the type of the provider to use. + + + the type of the provider to use. + + + + The provider specified must subclass the + class. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + The repository to configure. + + + + Configures log4net using a log4net element + + + + Loads the log4net configuration from the XML element + supplied as . + + + The element to parse. + + + + Configures the using the specified XML + element. + + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration URI. + + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The must support the URI scheme specified. + + + + + + Configures log4net using the specified configuration data stream. + + A stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + URI. + + The repository to configure. + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The must support the URI scheme specified. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the specified repository using a log4net element. + + The hierarchy to configure. + The element to parse. + + + Loads the log4net configuration from the XML element + supplied as . + + + This method is ultimately called by one of the Configure methods + to load the configuration from an . + + + + + + Class used to watch config files. + + + + Uses the to monitor + changes to a specified file. Because multiple change notifications + may be raised when the file is modified, a timer is used to + compress the notifications into a single event. The timer + waits for time before delivering + the event notification. If any further + change notifications arrive while the timer is waiting it + is reset and waits again for to + elapse. + + + + + + The default amount of time to wait after receiving notification + before reloading the config file. + + + + + Watch a specified config file used to configure a repository + + The repository to configure. + The configuration file to watch. + + + Watch a specified config file used to configure a repository + + + + + + Holds the FileInfo used to configure the XmlConfigurator + + + + + Holds the repository being configured. + + + + + The timer used to compress the notification events. + + + + + Initializes a new instance of the class. + + The repository to configure. + The configuration file to watch. + + + Initializes a new instance of the class. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Called by the timer when the configuration has been updated. + + null + + + + The implementation of the interface suitable + for use with the compact framework + + + + This implementation is a simple + mapping between repository name and + object. + + + The .NET Compact Framework 1.0 does not support retrieving assembly + level attributes therefore unlike the DefaultRepositorySelector + this selector does not examine the calling assembly for attributes. + + + Nicko Cadell + + + + Interface used by the to select the . + + + + The uses a + to specify the policy for selecting the correct + to return to the caller. + + + Nicko Cadell + Gert Driesen + + + + Gets the for the specified assembly. + + The assembly to use to lookup to the + The for the assembly. + + + Gets the for the specified assembly. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. The results of this method must be repeatable, i.e. + when called again with the same arguments the result must be the + save value. + + + + + + Gets the named . + + The name to use to lookup to the . + The named + + Lookup a named . This is the repository created by + calling . + + + + + Creates a new repository for the assembly specified. + + The assembly to use to create the domain to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the domain + specified such that a call to with the + same assembly specified will return the same repository instance. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. + + + + + + Creates a new repository with the name specified. + + The name to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the name + specified such that a call to with the + same name will return the same repository instance. + + + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets an array of all currently defined repositories. + + + An array of the instances created by + this . + + + Gets an array of all of the repositories created by this selector. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Create a new repository selector + + the type of the repositories to create, must implement + + + Create an new compact repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + throw if is null + throw if does not implement + + + + Get the for the specified assembly + + not used + The default + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Get the named + + the name of the repository to lookup + The named + + + Get the named . The default + repository is log4net-default-repository. Other repositories + must be created using the . + If the named repository does not exist an exception is thrown. + + + throw if is null + throw if the does not exist + + + + Create a new repository for the assembly specified + + not used + the type of repository to create, must implement + the repository created + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + If the is null then the + default repository type specified to the constructor is used. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Create a new repository for the repository specified + + the repository to associate with the + the type of repository to create, must implement . + If this param is null then the default repository type is used. + the repository created + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + If the named repository already exists an exception will be thrown. + + + If is null then the default + repository type specified to the constructor is used. + + + throw if is null + throw if the already exists + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Notify the registered listeners that the repository has been created + + The repository that has been created + + + Raises the LoggerRepositoryCreatedEvent + event. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + The default implementation of the interface. + + + + Uses attributes defined on the calling assembly to determine how to + configure the hierarchy for the repository. + + + Nicko Cadell + Gert Driesen + + + + Creates a new repository selector. + + The type of the repositories to create, must implement + + + Create an new repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + is . + does not implement . + + + + Gets the for the specified assembly. + + The assembly use to lookup the . + + + The type of the created and the repository + to create can be overridden by specifying the + attribute on the . + + + The default values are to use the + implementation of the interface and to use the + as the name of the repository. + + + The created will be automatically configured using + any attributes defined on + the . + + + The for the assembly + is . + + + + Gets the for the specified repository. + + The repository to use to lookup the . + The for the specified repository. + + + Returns the named repository. If is null + a is thrown. If the repository + does not exist a is thrown. + + + Use to create a repository. + + + is . + does not exist. + + + + Create a new repository for the assembly specified + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the assembly specified. + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The name to assign to the created repository + Set to true to read and apply the assembly attributes + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the specified repository. + + The repository to associate with the . + The type of repository to create, must implement . + If this param is then the default repository type is used. + The new repository. + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + is . + already exists. + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Aliases a repository to an existing repository. + + The repository to alias. + The repository that the repository is aliased to. + + + The repository specified will be aliased to the repository when created. + The repository must not already exist. + + + When the repository is created it must utilize the same repository type as + the repository it is aliased to, otherwise the aliasing will fail. + + + + is . + -or- + is . + + + + + Notifies the registered listeners that the repository has been created. + + The repository that has been created. + + + Raises the event. + + + + + + Gets the repository name and repository type for the specified assembly. + + The assembly that has a . + in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. + in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. + is . + + + + Configures the repository using information from the assembly. + + The assembly containing + attributes which define the configuration for the repository. + The repository to configure. + + is . + -or- + is . + + + + + Loads the attribute defined plugins on the assembly. + + The assembly that contains the attributes. + The repository to add the plugins to. + + is . + -or- + is . + + + + + Loads the attribute defined aliases on the assembly. + + The assembly that contains the attributes. + The repository to alias to. + + is . + -or- + is . + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Defined error codes that can be passed to the method. + + + + Values passed to the method. + + + Nicko Cadell + + + + A general error + + + + + Error while writing output + + + + + Failed to flush file + + + + + Failed to close file + + + + + Unable to open output file + + + + + No layout specified + + + + + Failed to parse address + + + + + Appenders may delegate their error handling to an . + + + + Error handling is a particularly tedious to get right because by + definition errors are hard to predict and to reproduce. + + + Nicko Cadell + Gert Driesen + + + + Handles the error and information about the error condition is passed as + a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + The error code associated with the error. + + + Handles the error and information about the error condition is passed as + a parameter. + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + + + See . + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + + + See . + + + + + + Interface for objects that require fixing. + + + + Interface that indicates that the object requires fixing before it + can be taken outside the context of the appender's + method. + + + When objects that implement this interface are stored + in the context properties maps + and + are fixed + (see ) the + method will be called. + + + Nicko Cadell + + + + Get a portable version of this object + + the portable instance of this object + + + Get a portable instance object that represents the current + state of this object. The portable object can be stored + and logged from any thread with identical results. + + + + + + Interface that all loggers implement + + + + This interface supports logging events and testing if a level + is enabled for logging. + + + These methods will not throw exceptions. Note to implementor, ensure + that the implementation of these methods cannot allow an exception + to be thrown to the caller. + + + Nicko Cadell + Gert Driesen + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + the exception to log, including its stack trace. Pass null to not log an exception. + + + Generates a logging event for the specified using + the and . + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + + + + Gets the name of the logger. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Base interface for all wrappers + + + + Base interface for all wrappers. + + + All wrappers must implement this interface. + + + Nicko Cadell + + + + Get the implementation behind this wrapper object. + + + The object that in implementing this object. + + + + The object that in implementing this + object. The Logger object may not + be the same object as this object because of logger decorators. + This gets the actual underlying objects that is used to process + the log events. + + + + + + Delegate used to handle logger repository creation event notifications + + The which created the repository. + The event args + that holds the instance that has been created. + + + Delegate used to handle logger repository creation event notifications. + + + + + + Provides data for the event. + + + + A + event is raised every time a is created. + + + + + + The created + + + + + Construct instance using specified + + the that has been created + + + Construct instance using specified + + + + + + The that has been created + + + The that has been created + + + + The that has been created + + + + + + Test if an triggers an action + + + + Implementations of this interface allow certain appenders to decide + when to perform an appender specific action. + + + The action or behavior triggered is defined by the implementation. + + + Nicko Cadell + + + + Test if this event triggers the action + + The event to check + true if this event triggers the action, otherwise false + + + Return true if this event triggers the action + + + + + + Defines the default set of levels recognized by the system. + + + + Each has an associated . + + + Levels have a numeric that defines the relative + ordering between levels. Two Levels with the same + are deemed to be equivalent. + + + The levels that are recognized by log4net are set for each + and each repository can have different levels defined. The levels are stored + in the on the repository. Levels are + looked up by name from the . + + + When logging at level INFO the actual level used is not but + the value of LoggerRepository.LevelMap["INFO"]. The default value for this is + , but this can be changed by reconfiguring the level map. + + + Each level has a in addition to its . The + is the string that is written into the output log. By default + the display name is the same as the level name, but this can be used to alias levels + or to localize the log output. + + + Some of the predefined levels recognized by the system are: + + + + . + + + . + + + . + + + . + + + . + + + . + + + . + + + + Nicko Cadell + Gert Driesen + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + The display name for this level. This may be localized or otherwise different from the name + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Returns the representation of the current + . + + + A representation of the current . + + + + Returns the level . + + + + + + Compares levels. + + The object to compare against. + true if the objects are equal. + + + Compares the levels of instances, and + defers to base class if the target object is not a + instance. + + + + + + Returns a hash code + + A hash code for the current . + + + Returns a hash code suitable for use in hashing algorithms and data + structures like a hash table. + + + Returns the hash code of the level . + + + + + + Compares this instance to a specified object and returns an + indication of their relative values. + + A instance or to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the + values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + This instance is less than . + + + Zero + This instance is equal to . + + + Greater than zero + + This instance is greater than . + -or- + is . + + + + + + + must be an instance of + or ; otherwise, an exception is thrown. + + + is not a . + + + + Returns a value indicating whether a specified + is greater than another specified . + + A + A + + true if is greater than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than another specified . + + A + A + + true if is less than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is greater than or equal to another specified . + + A + A + + true if is greater than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than or equal to another specified . + + A + A + + true if is less than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have the same value. + + A or . + A or . + + true if the value of is the same as the + value of ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have different values. + + A or . + A or . + + true if the value of is different from + the value of ; otherwise, false. + + + + Compares two levels. + + + + + + Compares two specified instances. + + The first to compare. + The second to compare. + + A 32-bit signed integer that indicates the relative order of the + two values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + is less than . + + + Zero + is equal to . + + + Greater than zero + is greater than . + + + + + + Compares two levels. + + + + + + The level designates a higher level than all the rest. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events + that will presumably lead the application to abort. + + + + + The level designates very severe error events. + Take immediate action, alerts. + + + + + The level designates very severe error events. + Critical condition, critical. + + + + + The level designates very severe error events. + + + + + The level designates error events that might + still allow the application to continue running. + + + + + The level designates potentially harmful + situations. + + + + + The level designates informational messages + that highlight the progress of the application at the highest level. + + + + + The level designates informational messages that + highlight the progress of the application at coarse-grained level. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates the lowest level possible. + + + + + Gets the name of this level. + + + The name of this level. + + + + Gets the name of this level. + + + + + + Gets the value of this level. + + + The value of this level. + + + + Gets the value of this level. + + + + + + Gets the display name of this level. + + + The display name of this level. + + + + Gets the display name of this level. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a LevelCollection instance. + + list to create a readonly wrapper arround + + A LevelCollection wrapper that is read-only. + + + + + Initializes a new instance of the LevelCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the LevelCollection class + that has the specified initial capacity. + + + The number of elements that the new LevelCollection is initially capable of storing. + + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified LevelCollection. + + The LevelCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + Copies the entire LevelCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire LevelCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the LevelCollection. + + The to be added to the end of the LevelCollection. + The index at which the value has been added. + + + + Removes all elements from the LevelCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the LevelCollection. + + The to check for. + true if is found in the LevelCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the LevelCollection. + + The to locate in the LevelCollection. + + The zero-based index of the first occurrence of + in the entire LevelCollection, if found; otherwise, -1. + + + + + Inserts an element into the LevelCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the LevelCollection. + + The to remove from the LevelCollection. + + The specified was not found in the LevelCollection. + + + + + Removes the element at the specified index of the LevelCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the LevelCollection. + + An for the entire LevelCollection. + + + + Adds the elements of another LevelCollection to the current LevelCollection. + + The LevelCollection whose elements should be added to the end of the current LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a array to the current LevelCollection. + + The array whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a collection to the current LevelCollection. + + The collection whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the LevelCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the LevelCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + A value + + + + + Supports simple iteration over a . + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + An evaluator that triggers at a threshold level + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + Nicko Cadell + + + + The threshold for triggering + + + + + Create a new evaluator using the threshold. + + + + Create a new evaluator using the threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Create a new evaluator using the specified threshold. + + the threshold to trigger at + + + Create a new evaluator using the specified threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the event level + is equal or higher than the . + Otherwise it returns false + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + the threshold to trigger at + + + The that will cause this evaluator to trigger + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Mapping between string name and Level object + + + + Mapping between string name and object. + This mapping is held separately for each . + The level name is case insensitive. + + + Nicko Cadell + + + + Mapping from level name to Level object. The + level name is case insensitive + + + + + Construct the level map + + + + Construct the level map. + + + + + + Clear the internal maps of all levels + + + + Clear the internal maps of all levels + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + + + Create a new Level and add it to the map + + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + the display name to give to the Level + + + Create a new Level and add it to the map + + + + + + Add a Level to the map + + the Level to add + + + Add a Level to the map + + + + + + Lookup a named level from the map + + the name of the level to lookup is taken from this level. + If the level is not set on the map then this level is added + the level in the map with the name specified + + + Lookup a named level from the map. The name of the level to lookup is taken + from the property of the + argument. + + + If no level with the specified name is found then the + argument is added to the level map + and returned. + + + + + + Lookup a by name + + The name of the Level to lookup + a Level from the map with the name specified + + + Returns the from the + map with the name specified. If the no level is + found then null is returned. + + + + + + Return all possible levels as a list of Level objects. + + all possible levels as a list of Level objects + + + Return all possible levels as a list of Level objects. + + + + + + The internal representation of caller location information. + + + + This class uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. + + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + Nicko Cadell + Gert Driesen + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + Constructor + + The declaring type of the method that is + the stack boundary into the logging system for this call. + + + Initializes a new instance of the + class based on the current thread. + + + + + + Constructor + + The fully qualified class name. + The method name. + The file name. + The line number of the method within the file. + + + Initializes a new instance of the + class with the specified data. + + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + Static manager that controls the creation of repositories + + + + Static manager that controls the creation of repositories + + + This class is used by the wrapper managers (e.g. ) + to provide access to the objects. + + + This manager also holds the that is used to + lookup and create repositories. The selector can be set either programmatically using + the property, or by setting the log4net.RepositorySelector + AppSetting in the applications config file to the fully qualified type name of the + selector to use. + + + Nicko Cadell + Gert Driesen + + + + Private constructor to prevent instances. Only static methods should be used. + + + + Private constructor to prevent instances. Only static methods should be used. + + + + + + Hook the shutdown event + + + + On the full .NET runtime, the static constructor hooks up the + AppDomain.ProcessExit and AppDomain.DomainUnload> events. + These are used to shutdown the log4net system as the application exits. + + + + + + Register for ProcessExit and DomainUnload events on the AppDomain + + + + This needs to be in a separate method because the events make + a LinkDemand for the ControlAppDomain SecurityPermission. Because + this is a LinkDemand it is demanded at JIT time. Therefore we cannot + catch the exception in the method itself, we have to catch it in the + caller. + + + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + Returns the default instance. + + + + + + Returns the named logger if it exists. + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified repository. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns the named logger if it exists. + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified assembly's repository. + + + + If the named logger exists (in the specified assembly's repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Retrieves or creates a named logger. + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Retrieves or creates a named logger. + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Shorthand for . + + The repository to lookup in. + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shorthand for . + + the assembly to use to lookup the repository + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The repository to shutdown. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The assembly to use to lookup the repository. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Resets all values contained in this repository instance to their defaults. + + The repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + The assembly to use to lookup the repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Gets an array of all currently defined repositories. + + An array of all the known objects. + + + Gets an array of all currently defined repositories. + + + + + + Internal method to get pertinent version info. + + A string of version info. + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Initialize the default repository selector + + + + + Gets or sets the repository selector used by the . + + + The repository selector used by the . + + + + The repository selector () is used by + the to create and select repositories + (). + + + The caller to supplies either a string name + or an assembly (if not supplied the assembly is inferred using + ). + + + This context is used by the selector to lookup a specific repository. + + + For the full .NET Framework, the default repository is DefaultRepositorySelector; + for the .NET Compact Framework CompactRepositorySelector is the default + repository. + + + + + + Implementation of the interface. + + + + This class should be used as the base for all wrapper implementations. + + + Nicko Cadell + Gert Driesen + + + + Constructs a new wrapper for the specified logger. + + The logger to wrap. + + + Constructs a new wrapper for the specified logger. + + + + + + The logger that this object is wrapping + + + + + Gets the implementation behind this wrapper object. + + + The object that this object is implementing. + + + + The Logger object may not be the same object as this object + because of logger decorators. + + + This gets the actual underlying objects that is used to process + the log events. + + + + + + Portable data structure used by + + + + Portable data structure used by + + + Nicko Cadell + + + + The logger name. + + + + The logger name. + + + + + + Level of logging event. + + + + Level of logging event. Level cannot be Serializable + because it is a flyweight. Due to its special serialization it + cannot be declared final either. + + + + + + The application supplied message. + + + + The application supplied message of logging event. + + + + + + The name of thread + + + + The name of thread in which this logging event was generated + + + + + + The time the event was logged + + + + The TimeStamp is stored in the local time zone for this computer. + + + + + + Location information for the caller. + + + + Location information for the caller. + + + + + + String representation of the user + + + + String representation of the user's windows name, + like DOMAIN\username + + + + + + String representation of the identity. + + + + String representation of the current thread's principal identity. + + + + + + The string representation of the exception + + + + The string representation of the exception + + + + + + String representation of the AppDomain. + + + + String representation of the AppDomain. + + + + + + Additional event specific properties + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + + + + Flags passed to the property + + + + Flags passed to the property + + + Nicko Cadell + + + + Fix the MDC + + + + + Fix the NDC + + + + + Fix the rendered message + + + + + Fix the thread name + + + + + Fix the callers location information + + + CAUTION: Very slow to generate + + + + + Fix the callers windows user name + + + CAUTION: Slow to generate + + + + + Fix the domain friendly name + + + + + Fix the callers principal name + + + CAUTION: May be slow to generate + + + + + Fix the exception text + + + + + Fix the event properties + + + + + No fields fixed + + + + + All fields fixed + + + + + Partial fields fixed + + + + This set of partial fields gives good performance. The following fields are fixed: + + + + + + + + + + + + + The internal representation of logging events. + + + + When an affirmative decision is made to log then a + instance is created. This instance + is passed around to the different log4net components. + + + This class is of concern to those wishing to extend log4net. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino + + + + The key into the Properties map for the host name value. + + + + + The key into the Properties map for the thread identity value. + + + + + The key into the Properties map for the user name value. + + + + + Initializes a new instance of the class + from the supplied parameters. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + The name of the logger of this event. + The level of this event. + The message of this event. + The exception for this event. + + + Except , and , + all fields of LoggingEvent are filled when actually needed. Call + to cache all data locally + to prevent inconsistencies. + + This method is called by the log4net framework + to create a logging event. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + The fields in the struct that have already been fixed. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + The parameter should be used to specify which fields in the + struct have been preset. Fields not specified in the + will be captured from the environment if requested or fixed. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Initializes a new instance of the class + using specific data. + + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Serialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Ensure that the repository is set. + + the value for the repository + + + + Write the rendered message to a TextWriter + + the writer to write the message to + + + Unlike the property this method + does store the message data in the internal cache. Therefore + if called only once this method should be faster than the + property, however if the message is + to be accessed multiple times then the property will be more efficient. + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + The data in this event must be fixed before it can be serialized. + + + The method must be called during the + method call if this event + is to be used outside that method. + + + + + + Gets the portable data for this . + + The for this event. + + + A new can be constructed using a + instance. + + + Does a fix of the data + in the logging event before returning the event data. + + + + + + Gets the portable data for this . + + The set of data to ensure is fixed in the LoggingEventData + The for this event. + + + A new can be constructed using a + instance. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Obsolete. Use instead. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Returns this event's exception's rendered using the + . + + + + + + Fix instance fields that hold volatile data. + + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + incurred by calling but it + is essential to maintaining data consistency. + + + Calling is equivalent to + calling passing the parameter + false. + + + See for more + information. + + + + + + Fixes instance fields that hold volatile data. + + Set to true to not fix data that takes a long time to fix. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + The param controls the data that + is fixed. Some of the data that can be fixed takes a long time to + generate, therefore if you do not require those settings to be fixed + they can be ignored by setting the param + to true. This setting will ignore the + and settings. + + + Set to false to ensure that all + settings are fixed. + + + + + + Fix the fields specified by the parameter + + the fields to fix + + + Only fields specified in the will be fixed. + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Lookup a composite property in this event + + the key for the property to lookup + the value for the property + + + This event has composite properties that combine together properties from + several different contexts in the following order: + + + this events properties + + This event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + + Get all the composite properties in this event + + the containing all the properties + + + See for details of the composite properties + stored by the event. + + + This method returns a single containing all the + properties defined for this event. + + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The fully qualified Type of the calling + logger class in the stack frame (i.e. the declaring type of the method). + + + + + The application supplied message of logging event. + + + + + The exception that was thrown. + + + This is not serialized. The string representation + is serialized instead. + + + + + The repository that generated the logging event + + + This is not serialized. + + + + + The fix state for this event + + + These flags indicate which fields have been fixed. + Not serialized. + + + + + Indicated that the internal cache is updateable (ie not fixed) + + + This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler + changes in the caching strategy. + + + + + Gets the time when the current process started. + + + This is the time when this process started. + + + + The TimeStamp is stored in the local time zone for this computer. + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the of the logging event. + + + The of the logging event. + + + + Gets the of the logging event. + + + + + + Gets the time of the logging event. + + + The time of the logging event. + + + + The TimeStamp is stored in the local time zone for this computer. + + + + + + Gets the name of the logger that logged the event. + + + The name of the logger that logged the event. + + + + Gets the name of the logger that logged the event. + + + + + + Gets the location information for this logging event. + + + The location information for this logging event. + + + + The collected information is cached for future use. + + + See the class for more information on + supported frameworks and the different behavior in Debug and + Release builds. + + + + + + Gets the message object used to initialize this event. + + + The message object used to initialize this event. + + + + Gets the message object used to initialize this event. + Note that this event may not have a valid message object. + If the event is serialized the message object will not + be transferred. To get the text of the message the + property must be used + not this property. + + + If there is no defined message object for this event then + null will be returned. + + + + + + Gets the exception object used to initialize this event. + + + The exception object used to initialize this event. + + + + Gets the exception object used to initialize this event. + Note that this event may not have a valid exception object. + If the event is serialized the exception object will not + be transferred. To get the text of the exception the + method must be used + not this property. + + + If there is no defined exception object for this event then + null will be returned. + + + + + + The that this event was created in. + + + + The that this event was created in. + + + + + + Gets the message, rendered through the . + + + The message rendered through the . + + + + The collected information is cached for future use. + + + + + + Gets the name of the current thread. + + + The name of the current thread, or the thread ID when + the name is not available. + + + + The collected information is cached for future use. + + + + + + Gets the name of the current user. + + + The name of the current user, or NOT AVAILABLE when the + underlying runtime has no support for retrieving the name of the + current user. + + + + Calls WindowsIdentity.GetCurrent().Name to get the name of + the current windows user. + + + To improve performance, we could cache the string representation of + the name, and reuse that as long as the identity stayed constant. + Once the identity changed, we would need to re-assign and re-render + the string. + + + However, the WindowsIdentity.GetCurrent() call seems to + return different objects every time, so the current implementation + doesn't do this type of caching. + + + Timing for these operations: + + + + Method + Results + + + WindowsIdentity.GetCurrent() + 10000 loops, 00:00:00.2031250 seconds + + + WindowsIdentity.GetCurrent().Name + 10000 loops, 00:00:08.0468750 seconds + + + + This means we could speed things up almost 40 times by caching the + value of the WindowsIdentity.GetCurrent().Name property, since + this takes (8.04-0.20) = 7.84375 seconds. + + + + + + Gets the identity of the current thread principal. + + + The string name of the identity of the current thread principal. + + + + Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get + the name of the current thread principal. + + + + + + Gets the AppDomain friendly name. + + + The AppDomain friendly name. + + + + Gets the AppDomain friendly name. + + + + + + Additional event specific properties. + + + Additional event specific properties. + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + This property is for events that have been added directly to + this event. The aggregate properties (which include these + event properties) can be retrieved using + and . + + + Once the properties have been fixed this property + returns the combined cached properties. This ensures that updates to + this property are always reflected in the underlying storage. When + returning the combined properties there may be more keys in the + Dictionary than expected. + + + + + + The fixed fields in this event + + + The set of fields that are fixed in this event + + + + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Implementation of wrapper interface. + + + + This implementation of the interface + forwards to the held by the base class. + + + This logger has methods to allow the caller to log at the following + levels: + + + + DEBUG + + The and methods log messages + at the DEBUG level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + INFO + + The and methods log messages + at the INFO level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + WARN + + The and methods log messages + at the WARN level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + ERROR + + The and methods log messages + at the ERROR level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + FATAL + + The and methods log messages + at the FATAL level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + + The values for these levels and their semantic meanings can be changed by + configuring the for the repository. + + + Nicko Cadell + Gert Driesen + + + + The ILog interface is use by application to log messages into + the log4net framework. + + + + Use the to obtain logger instances + that implement this interface. The + static method is used to get logger instances. + + + This class contains methods for logging at different levels and also + has properties for determining if those logging levels are + enabled in the current configuration. + + + This interface can be implemented in different ways. This documentation + specifies reasonable behavior that a caller can expect from the actual + implementation, however different implementations reserve the right to + do things differently. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + Log a message object with the level. + + Log a message object with the level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Logs a message object with the INFO level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + For some ILog interface log, when you write: + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, string construction and concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed (who isn't), then you should write: + + + if (log.IsDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in and once in + the . This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. This is the preferred style of logging. + + Alternatively if your logger is available statically then the is debug + enabled state can be stored in a static variable like this: + + + private static readonly bool isDebugEnabled = log.IsDebugEnabled; + + + Then when you come to log you can write: + + + if (isDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way the debug enabled state is only queried once + when the class is loaded. Using a private static readonly + variable is the most efficient because it is a run time constant + and can be heavily optimized by the JIT compiler. + + + Of course if you use a static readonly variable to + hold the enabled state of the logger then you cannot + change the enabled state at runtime to vary the logging + that is produced. You have to decide if you need absolute + speed or runtime flexibility. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Construct a new wrapper for the specified logger. + + The logger to wrap. + + + Construct a new wrapper for the specified logger. + + + + + + Virtual method called when the configuration of the repository changes + + the repository holding the levels + + + Virtual method called when the configuration of the repository changes + + + + + + Logs a message object with the DEBUG level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + DEBUG level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the DEBUG level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the DEBUG level including + the stack trace of the passed + as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + INFO level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the INFO level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the WARN level. + + the message object to log + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + WARN level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the WARN level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the WARN level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the ERROR level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + ERROR level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the ERROR level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the ERROR level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the FATAL level. + + The message object to log. + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + FATAL level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the FATAL level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the FATAL level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Event handler for the event + + the repository + Empty + + + + The fully qualified name of this declaring type not the type of any subclass. + + + + + Checks if this logger is enabled for the DEBUG + level. + + + true if this logger is enabled for DEBUG events, + false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + + For some log Logger object, when you write: + + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed, then you should write: + + + if (log.IsDebugEnabled()) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in IsDebugEnabled and once in + the Debug. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. + + + + + + Checks if this logger is enabled for the INFO level. + + + true if this logger is enabled for INFO events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the WARN level. + + + true if this logger is enabled for WARN events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the ERROR level. + + + true if this logger is enabled for ERROR events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + Checks if this logger is enabled for the FATAL level. + + + true if this logger is enabled for FATAL events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + A SecurityContext used by log4net when interacting with protected resources + + + + A SecurityContext used by log4net when interacting with protected resources + for example with operating system services. This can be used to impersonate + a principal that has been granted privileges on the system resources. + + + Nicko Cadell + + + + Impersonate this SecurityContext + + State supplied by the caller + An instance that will + revoke the impersonation of this SecurityContext, or null + + + Impersonate this security context. Further calls on the current + thread should now be made in the security context provided + by this object. When the result + method is called the security + context of the thread should be reverted to the state it was in + before was called. + + + + + + The providers default instances. + + + + A configured component that interacts with potentially protected system + resources uses a to provide the elevated + privileges required. If the object has + been not been explicitly provided to the component then the component + will request one from this . + + + By default the is + an instance of which returns only + objects. This is a reasonable default + where the privileges required are not know by the system. + + + This default behavior can be overridden by subclassing the + and overriding the method to return + the desired objects. The default provider + can be replaced by programmatically setting the value of the + property. + + + An alternative is to use the log4net.Config.SecurityContextProviderAttribute + This attribute can be applied to an assembly in the same way as the + log4net.Config.XmlConfiguratorAttribute". The attribute takes + the type to use as the as an argument. + + + Nicko Cadell + + + + The default provider + + + + + Protected default constructor to allow subclassing + + + + Protected default constructor to allow subclassing + + + + + + Create a SecurityContext for a consumer + + The consumer requesting the SecurityContext + An impersonation context + + + The default implementation is to return a . + + + Subclasses should override this method to provide their own + behavior. + + + + + + Gets or sets the default SecurityContextProvider + + + The default SecurityContextProvider + + + + The default provider is used by configured components that + require a and have not had one + given to them. + + + By default this is an instance of + that returns objects. + + + The default provider can be set programmatically by setting + the value of this property to a sub class of + that has the desired behavior. + + + + + + Delegate used to handle creation of new wrappers. + + The logger to wrap in a wrapper. + + + Delegate used to handle creation of new wrappers. This delegate + is called from the + method to construct the wrapper for the specified logger. + + + The delegate to use is supplied to the + constructor. + + + + + + Maps between logger objects and wrapper objects. + + + + This class maintains a mapping between objects and + objects. Use the method to + lookup the for the specified . + + + New wrapper instances are created by the + method. The default behavior is for this method to delegate construction + of the wrapper to the delegate supplied + to the constructor. This allows specialization of the behavior without + requiring subclassing of this type. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the + + The handler to use to create the wrapper objects. + + + Initializes a new instance of the class with + the specified handler to create the wrapper objects. + + + + + + Gets the wrapper object for the specified logger. + + The wrapper object for the specified logger + + + If the logger is null then the corresponding wrapper is null. + + + Looks up the wrapper it it has previously been requested and + returns it. If the wrapper has never been requested before then + the virtual method is + called. + + + + + + Creates the wrapper object for the specified logger. + + The logger to wrap in a wrapper. + The wrapper object for the logger. + + + This implementation uses the + passed to the constructor to create the wrapper. This method + can be overridden in a subclass. + + + + + + Called when a monitored repository shutdown event is received. + + The that is shutting down + + + This method is called when a that this + is holding loggers for has signaled its shutdown + event . The default + behavior of this method is to release the references to the loggers + and their wrappers generated for this repository. + + + + + + Event handler for repository shutdown event. + + The sender of the event. + The event args. + + + + Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings + + + + + The handler to use to create the extension wrapper objects. + + + + + Internal reference to the delegate used to register for repository shutdown events. + + + + + Gets the map of logger repositories. + + + Map of logger repositories. + + + + Gets the hashtable that is keyed on . The + values are hashtables keyed on with the + value being the corresponding . + + + + + + Formats a as "HH:mm:ss,fff". + + + + Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". + + + Nicko Cadell + Gert Driesen + + + + Render a as a string. + + + + Interface to abstract the rendering of a + instance into a string. + + + The method is used to render the + date to a text writer. + + + Nicko Cadell + Gert Driesen + + + + Formats the specified date as a string. + + The date to format. + The writer to write to. + + + Format the as a string and write it + to the provided. + + + + + + String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. + + + + + String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. + + + + + String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. + + + + + Renders the date into a string. Format is "HH:mm:ss". + + The date to render into a string. + The string builder to write to. + + + Subclasses should override this method to render the date + into a string using a precision up to the second. This method + will be called at most once per second and the result will be + reused if it is needed again during the same second. + + + + + + Renders the date into a string. Format is "HH:mm:ss,fff". + + The date to render into a string. + The writer to write to. + + + Uses the method to generate the + time string up to the seconds and then appends the current + milliseconds. The results from are + cached and is called at most once + per second. + + + Sub classes should override + rather than . + + + + + + Last stored time with precision up to the second. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Formats a as "dd MMM yyyy HH:mm:ss,fff" + + + + Formats a in the format + "dd MMM yyyy HH:mm:ss,fff" for example, + "06 Nov 1994 15:49:37,459". + + + Nicko Cadell + Gert Driesen + Angelika Schnagl + + + + Default constructor. + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" + for example, "06 Nov 1994 15:49:37". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + The format info for the invariant culture. + + + + + Formats the as "yyyy-MM-dd HH:mm:ss,fff". + + + + Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + Formats the using the method. + + + + Formats the using the method. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The format string. + + + Initializes a new instance of the class + with the specified format string. + + + The format string must be compatible with the options + that can be supplied to . + + + + + + Formats the date using . + + The date to convert to a string. + The writer to write to. + + + Uses the date format string supplied to the constructor to call + the method to format the date. + + + + + + The format string used to format the . + + + + The format string must be compatible with the options + that can be supplied to . + + + + + + This filter drops all . + + + + You can add this filter to the end of a filter chain to + switch from the default "accept all unless instructed otherwise" + filtering behavior to a "deny all unless instructed otherwise" + behavior. + + + Nicko Cadell + Gert Driesen + + + + Subclass this type to implement customized logging event filtering + + + + Users should extend this class to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface to provide customized logging event filtering + + + + Users should implement this interface to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Decide if the logging event should be logged through an appender. + + The LoggingEvent to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Points to the next filter in the filter chain. + + + + See for more information. + + + + + + Initialize the filter with the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Typically filter's options become active immediately on set, + however this method must still be called. + + + + + + Decide if the should be logged through an appender. + + The to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + This method is marked abstract and must be implemented + in a subclass. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Default constructor + + + + + Always returns the integer constant + + the LoggingEvent to filter + Always returns + + + Ignores the event being logged and just returns + . This can be used to change the default filter + chain behavior from to . This filter + should only be used as the last filter in the chain + as any further filters will be ignored! + + + + + + The return result from + + + + The return result from + + + + + + The log event must be dropped immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This filter is neutral with respect to the log event. + The remaining filters, if any, should be consulted for a final decision. + + + + + The log event must be logged immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This is a very simple filter based on matching. + + + + The filter admits two options and + . If there is an exact match between the value + of the option and the of the + , then the method returns in + case the option value is set + to true, if it is false then + is returned. If the does not match then + the result will be . + + + Nicko Cadell + Gert Driesen + + + + flag to indicate if the filter should on a match + + + + + the to match against + + + + + Default constructor + + + + + Tests if the of the logging event matches that of the filter + + the event to filter + see remarks + + + If the of the event matches the level of the + filter then the result of the function depends on the + value of . If it is true then + the function will return , it it is false then it + will return . If the does not match then + the result will be . + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + The level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + This is a simple filter based on matching. + + + + The filter admits three options and + that determine the range of priorities that are matched, and + . If there is a match between the range + of priorities and the of the , then the + method returns in case the + option value is set to true, if it is false + then is returned. If there is no match, is returned. + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when matching a + + + + + the minimum value to match + + + + + the maximum value to match + + + + + Default constructor + + + + + Check if the event should be logged. + + the logging event to check + see remarks + + + If the of the logging event is outside the range + matched by this filter then + is returned. If the is matched then the value of + is checked. If it is true then + is returned, otherwise + is returned. + + + + + + when matching and + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Set the minimum matched + + + + The minimum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Sets the maximum matched + + + + The maximum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a string in the event's logger name. + + + + The works very similar to the . It admits two + options and . If the + of the starts + with the value of the option, then the + method returns in + case the option value is set to true, + if it is false then is returned. + + + Daniel Cazzulino + + + + Flag to indicate the behavior when we have a match + + + + + The logger name string to substring match against the event + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the equals the beginning of + the incoming () + then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + This filter will attempt to match this value against logger name in + the following way. The match will be done against the beginning of the + logger name (using ). The match is + case sensitive. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a keyed string in the + + + + Simple filter to match a keyed string in the + + + As the MDC has been replaced with layered properties the + should be used instead. + + + Nicko Cadell + Gert Driesen + + + + Simple filter to match a string an event property + + + + Simple filter to match a string in the value for a + specific event property + + + Nicko Cadell + + + + Simple filter to match a string in the rendered message + + + + Simple filter to match a string in the rendered message + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when we have a match + + + + + The string to substring match against the message + + + + + A string regex to match + + + + + A regex object to match (generated from m_stringRegexToMatch) + + + + + Default constructor + + + + + Initialize and precompile the Regex if required + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the occurs as a substring within + the message then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching or + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Sets the static string to match + + + + The string that will be substring matched against + the rendered message. If the message contains this + string then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + Sets the regular expression to match + + + + The regular expression pattern that will be matched against + the rendered message. If the message matches this + pattern then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + The key to use to lookup the string from the event properties + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The event property for the is matched against + the . + If the occurs as a substring within + the property value then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + The key to lookup in the event properties and then match against. + + + + The key name to use to lookup in the properties map of the + . The match will be performed against + the value of this property if it exists. + + + + + + Simple filter to match a string in the + + + + Simple filter to match a string in the + + + As the MDC has been replaced with named stacks stored in the + properties collections the should + be used instead. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Sets the to "NDC". + + + + + + Write the event appdomain name to the output + + + + Writes the to the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + + Nicko Cadell + Gert Driesen + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Protected constructor + + + + Initializes a new instance of the class. + + + + + + Evaluate this pattern converter and write the output to a writer. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the appropriate way. + + + + + + Set the next pattern converter in the chains + + the pattern converter that should follow this converter in the chain + the next converter + + + The PatternConverter can merge with its neighbor during this method (or a sub class). + Therefore the return value may or may not be the value of the argument passed in. + + + + + + Write the pattern converter to the writer with appropriate formatting + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + This method calls to allow the subclass to perform + appropriate conversion of the pattern converter. If formatting options have + been specified via the then this method will + apply those formattings before writing the output. + + + + + + Fast space padding method. + + to which the spaces will be appended. + The number of spaces to be padded. + + + Fast space padding method. + + + + + + The option string to the converter + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an object to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the Object to a writer. If the specified + is not null then it is used to render the object to text, otherwise + the object's ToString method is called. + + + + + + Get the next pattern converter in the chain + + + the next pattern converter in the chain + + + + Get the next pattern converter in the chain + + + + + + Gets or sets the formatting info for this converter + + + The formatting info for this converter + + + + Gets or sets the formatting info for this converter + + + + + + Gets or sets the option value for this converter + + + The option for this converter + + + + Gets or sets the option value for this converter + + + + + + Initializes a new instance of the class. + + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + + Flag indicating if this converter handles exceptions + + + false if this converter handles exceptions + + + + + Flag indicating if this converter handles the logging event exception + + false if this converter handles the logging event exception + + + If this converter handles the exception object contained within + , then this property should be set to + false. Otherwise, if the layout ignores the exception + object, then the property should be set to true. + + + Set this value to override a this default setting. The default + value is true, this converter does not handle the exception. + + + + + + Write the event appdomain name to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output . + + + + + + Date pattern converter, uses a to format + the date of a . + + + + Render the to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter pattern based on the property. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert the pattern into the rendered message + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone. + + + + + + Write the exception text to the output + + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Nicko Cadell + + + + Default constructor + + + + + Write the exception text to the output + + that will receive the formatted result. + the event being logged + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + + Writes the caller location file name to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location file name to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Write the caller location info to the output + + + + Writes the to the output writer. + + + Nicko Cadell + + + + Write the caller location info to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Writes the event identity to the output + + + + Writes the value of the to + the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Writes the event identity to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the + to + the output . + + + + + + Write the event level to the output + + + + Writes the display name of the event + to the writer. + + + Nicko Cadell + + + + Write the event level to the output + + that will receive the formatted result. + the event being logged + + + Writes the of the + to the . + + + + + + Write the caller location line number to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location line number to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Converter for logger name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Converter to output and truncate '.' separated strings + + + + This abstract class supports truncating a '.' separated string + to show a specified number of elements from the right hand side. + This is used to truncate class names that are fully qualified. + + + Subclasses should override the method to + return the fully qualified string. + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Get the fully qualified string data + + the event being logged + the fully qualified name + + + Overridden by subclasses to get the fully qualified name before the + precision is applied to it. + + + Return the fully qualified '.' (dot/period) separated string. + + + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + Render the to the precision + specified by the property. + + + + + Gets the fully qualified name of the logger + + the event being logged + The fully qualified logger name + + + Returns the of the . + + + + + + Writes the event message to the output + + + + Uses the method + to write out the event message. + + + Nicko Cadell + + + + Writes the event message to the output + + that will receive the formatted result. + the event being logged + + + Uses the method + to write out the event message. + + + + + + Write the method name to the output + + + + Writes the caller location to + the output. + + + Nicko Cadell + + + + Write the method name to the output + + that will receive the formatted result. + the event being logged + + + Writes the caller location to + the output. + + + + + + Converter to include event NDC + + + + Outputs the value of the event property named NDC. + + + The should be used instead. + + + Nicko Cadell + + + + Write the event NDC to the output + + that will receive the formatted result. + the event being logged + + + As the thread context stacks are now stored in named event properties + this converter simply looks up the value of the NDC property. + + + The should be used instead. + + + + + + Property pattern converter + + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + the event being logged + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Converter to output the relative time of the event + + + + Converter to output the time of the event relative to the start of the program. + + + Nicko Cadell + + + + Write the relative time to the output + + that will receive the formatted result. + the event being logged + + + Writes out the relative time of the event in milliseconds. + That is the number of milliseconds between the event + and the . + + + + + + Helper method to get the time difference between two DateTime objects + + start time (in the current local time zone) + end time (in the current local time zone) + the time difference in milliseconds + + + + Converter to include event thread name + + + + Writes the to the output. + + + Nicko Cadell + + + + Write the ThreadName to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the . + + + + + + Pattern converter for the class name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Gets the fully qualified name of the class + + the event being logged + The fully qualified type name for the caller location + + + Returns the of the . + + + + + + Converter to include event user name + + Douglas de la Torre + Nicko Cadell + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + + + Write the TimeStamp to the output + + + + Date pattern converter, uses a to format + the date of a . + + + Uses a to format the + in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the TimeStamp to the output + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone, this is converted + to Universal time before it is rendered. + + + + + + + A Layout that renders only the Exception text from the logging event + + + + A Layout that renders only the Exception text from the logging event. + + + This Layout should only be used with appenders that utilize multiple + layouts (e.g. ). + + + Nicko Cadell + Gert Driesen + + + + Extend this abstract class to create your own log layout format. + + + + This is the base implementation of the + interface. Most layout objects should extend this class. + + + + + + Subclasses must implement the + method. + + + Subclasses should set the in their default + constructor. + + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by layout objects + + + + An object is used to format a + as text. The method is called by an + appender to transform the into a string. + + + The layout can also supply and + text that is appender before any events and after all the events respectively. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text and output to a writer. + + + If the caller does not have a and prefers the + event to be formatted as a then the following + code can be used to format the event into a . + + + StringWriter writer = new StringWriter(); + Layout.Format(writer, loggingEvent); + string formattedEvent = writer.ToString(); + + + + + + The content type output by this layout. + + The content type + + + The content type output by this layout. + + + This is a MIME type e.g. "text/plain". + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handle exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + + + + The header text + + + + See for more information. + + + + + + The footer text + + + + See for more information. + + + + + + Flag indicating if this layout handles exceptions + + + + false if this layout handles exceptions + + + + + + Empty default constructor + + + + Empty default constructor + + + + + + Activate component options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This method must be implemented by the subclass. + + + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text. + + + + + + The content type output by this layout. + + The content type is "text/plain" + + + The content type output by this layout. + + + This base class uses the value "text/plain". + To change this value a subclass must override this + property. + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handles exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + Set this value to override a this default setting. The default + value is true, this layout does not handle the exception. + + + + + + Default constructor + + + + Constructs a ExceptionLayout + + + + + + Activate component options + + + + Part of the component activation + framework. + + + This method does nothing as options become effective immediately. + + + + + + Gets the exception text from the logging event + + The TextWriter to write the formatted event to + the event being logged + + + Write the exception string to the . + The exception string is retrieved from . + + + + + + Interface for raw layout objects + + + + Interface used to format a + to an object. + + + This interface should not be confused with the + interface. This interface is used in + only certain specialized situations where a raw object is + required rather than a formatted string. The + is not generally useful than this interface. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The event to format + returns the formatted event + + + Implement this method to create your own layout format. + + + + + + Adapts any to a + + + + Where an is required this adapter + allows a to be specified. + + + Nicko Cadell + Gert Driesen + + + + The layout to adapt + + + + + Construct a new adapter + + the layout to adapt + + + Create the adapter for the specified . + + + + + + Format the logging event as an object. + + The event to format + returns the formatted event + + + Format the logging event as an object. + + + Uses the object supplied to + the constructor to perform the formatting. + + + + + + A flexible layout configurable with pattern string. + + + + The goal of this class is to a + as a string. The results + depend on the conversion pattern. + + + The conversion pattern is closely related to the conversion + pattern of the printf function in C. A conversion pattern is + composed of literal text and format control expressions called + conversion specifiers. + + + You are free to insert any literal text within the conversion + pattern. + + + Each conversion specifier starts with a percent sign (%) and is + followed by optional format modifiers and a conversion + pattern name. The conversion pattern name specifies the type of + data, e.g. logger, level, date, thread name. The format + modifiers control such things as field width, padding, left and + right justification. The following is a simple example. + + + Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume + that the log4net environment was set to use a PatternLayout. Then the + statements + + + ILog log = LogManager.GetLogger(typeof(TestApp)); + log.Debug("Message 1"); + log.Warn("Message 2"); + + would yield the output + + DEBUG [main]: Message 1 + WARN [main]: Message 2 + + + Note that there is no explicit separator between text and + conversion specifiers. The pattern parser knows when it has reached + the end of a conversion specifier when it reads a conversion + character. In the example above the conversion specifier + %-5level means the level of the logging event should be left + justified to a width of five characters. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + a + Equivalent to appdomain + + + appdomain + + Used to output the friendly name of the AppDomain where the + logging event was generated. + + + + c + Equivalent to logger + + + C + Equivalent to type + + + class + Equivalent to type + + + d + Equivalent to date + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + exception + + + Used to output the exception passed in with the log message. + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + F + Equivalent to file + + + file + + + Used to output the file name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + WARNING Generating caller information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + l + Equivalent to location + + + L + Equivalent to line + + + location + + + Used to output location information of the caller which generated + the logging event. + + + The location information depends on the CLI implementation but + usually consists of the fully qualified name of the calling + method followed by the callers source the file name and line + number between parentheses. + + + The location information can be very useful. However, its + generation is extremely slow. Its use should be avoided + unless execution speed is not an issue. + + + See the note below on the availability of caller location information. + + + + + level + + + Used to output the level of the logging event. + + + + + line + + + Used to output the line number from where the logging request + was issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + logger + + + Used to output the logger of the logging event. The + logger conversion specifier can be optionally followed by + precision specifier, that is a decimal constant in + brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the logger name will be + printed. By default the logger name is printed in full. + + + For example, for the logger name "a.b.c" the pattern + %logger{2} will output "b.c". + + + + + m + Equivalent to message + + + M + Equivalent to method + + + message + + + Used to output the application supplied message associated with + the logging event. + + + + + mdc + + + The MDC (old name for the ThreadContext.Properties) is now part of the + combined event properties. This pattern is supported for compatibility + but is equivalent to property. + + + + + method + + + Used to output the method name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + n + Equivalent to newline + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + ndc + + + Used to output the NDC (nested diagnostic context) associated + with the thread that generated the logging event. + + + + + p + Equivalent to level + + + P + Equivalent to property + + + properties + Equivalent to property + + + property + + + Used to output the an event specific property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are added to events by loggers or appenders. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the event properties + + The event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + r + Equivalent to timestamp + + + t + Equivalent to thread + + + timestamp + + + Used to output the number of milliseconds elapsed since the start + of the application until the creation of the logging event. + + + + + thread + + + Used to output the name of the thread that generated the + logging event. Uses the thread number if no name is available. + + + + + type + + + Used to output the fully qualified type name of the caller + issuing the logging request. This conversion specifier + can be optionally followed by precision specifier, that + is a decimal constant in brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the class name will be + printed. By default the class name is output in fully qualified form. + + + For example, for the class name "log4net.Layout.PatternLayout", the + pattern %type{1} will output "PatternLayout". + + + WARNING Generating the caller class information is + slow. Thus, its use should be avoided unless execution speed is + not an issue. + + + See the note below on the availability of caller location information. + + + + + u + Equivalent to identity + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + WARNING Generating caller WindowsIdentity information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + w + Equivalent to username + + + x + Equivalent to ndc + + + X + Equivalent to mdc + + + % + + + The sequence %% outputs a single percent sign. + + + + + + The single letter patterns are deprecated in favor of the + longer more descriptive pattern names. + + + By default the relevant information is output as is. However, + with the aid of format modifiers it is possible to change the + minimum field width, the maximum field width and justification. + + + The optional format modifier is placed between the percent sign + and the conversion pattern name. + + + The first optional format modifier is the left justification + flag which is just the minus (-) character. Then comes the + optional minimum field width modifier. This is a decimal + constant that represents the minimum number of characters to + output. If the data item requires fewer characters, it is padded on + either the left or the right until the minimum width is + reached. The default is to pad on the left (right justify) but you + can specify right padding with the left justification flag. The + padding character is space. If the data item is larger than the + minimum field width, the field is expanded to accommodate the + data. The value is never truncated. + + + This behavior can be changed using the maximum field + width modifier which is designated by a period followed by a + decimal constant. If the data item is longer than the maximum + field, then the extra characters are removed from the + beginning of the data item and not from the end. For + example, it the maximum field width is eight and the data item is + ten characters long, then the first two characters of the data item + are dropped. This behavior deviates from the printf function in C + where truncation is done from the end. + + + Below are various format modifier examples for the logger + conversion specifier. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none + + Left pad with spaces if the logger name is less than 20 + characters long. + +
%-20loggertrue20none + + Right pad with spaces if the logger + name is less than 20 characters long. + +
%.30loggerNAnone30 + + Truncate from the beginning if the logger + name is longer than 30 characters. + +
%20.30loggerfalse2030 + + Left pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
%-20.30loggertrue2030 + + Right pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
+
+ + Note about caller location information.
+ The following patterns %type %file %line %method %location %class %C %F %L %l %M + all generate caller location information. + Location information uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. +
+ + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + + Additional pattern converters may be registered with a specific + instance using the method. + +
+ + This is a more detailed pattern. + %timestamp [%thread] %level %logger %ndc - %message%newline + + + A similar pattern except that the relative time is + right padded if less than 6 digits, thread name is right padded if + less than 15 characters and truncated if longer and the logger + name is left padded if shorter than 30 characters and truncated if + longer. + %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino +
+ + + Default pattern string for log output. + + + + Default pattern string for log output. + Currently set to the string "%message%newline" + which just prints the application supplied message. + + + + + + A detailed conversion pattern + + + + A conversion pattern which includes Time, Thread, Logger, and Nested Context. + Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. + + + + + + Internal map of converter identifiers to converter types. + + + + This static map is overridden by the m_converterRegistry instance map + + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternLayout only + + + + + Initialize the global registry + + + + Defines the builtin global rules. + + + + + + Constructs a PatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + As per the contract the + method must be called after the properties on this object have been + configured. + + + + + + Constructs a PatternLayout using the supplied conversion pattern + + the pattern to use + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + When using this constructor the method + need not be called. This may not be the case when using a subclass. + + + + + + Create the pattern parser instance + + the pattern to parse + The that will format the event + + + Creates the used to parse the conversion string. Sets the + global and instance rules on the . + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string as specified by the conversion pattern. + + the event being logged + The TextWriter to write the formatted event to + + + Parse the using the patter format + specified in the property. + + + + + + Add a converter to this PatternLayout + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternLayout + + the name of the conversion pattern for this converter + the type of the converter + + + Add a named pattern converter to this instance. This + converter will be used in the formatting of the event. + This method must be called before . + + + The specified must extend the + type. + + + + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Wrapper class used to map converter names to converter types + + + + Pattern converter info class used during configuration to + pass to the + method. + + + + + + default constructor + + + + + Gets or sets the name of the conversion pattern + + + + The name of the pattern in the format string + + + + + + Gets or sets the type of the converter + + + + The value specified must extend the + type. + + + + + + Type converter for the interface + + + + Used to convert objects to the interface. + Supports converting from the interface to + the interface using the . + + + Nicko Cadell + Gert Driesen + + + + Interface supported by type converters + + + + This interface supports conversion from arbitrary types + to a single target type. See . + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Test if the can be converted to the + type supported by this converter. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Converts the to the type supported + by this converter. + + + + + + Can the sourceType be converted to an + + the source to be to be converted + true if the source type can be converted to + + + Test if the can be converted to a + . Only is supported + as the . + + + + + + Convert the value to a object + + the value to convert + the object + + + Convert the object to a + object. If the object + is a then the + is used to adapt between the two interfaces, otherwise an + exception is thrown. + + + + + + Extract the value of a property from the + + + + Extract the value of a property from the + + + Nicko Cadell + + + + Constructs a RawPropertyLayout + + + + + Lookup the property for + + The event to format + returns property value + + + Looks up and returns the object value of the property + named . If there is no property defined + with than name then null will be returned. + + + + + + The name of the value to lookup in the LoggingEvent Properties collection. + + + Value to lookup in the LoggingEvent Properties collection + + + + String name of the property to lookup in the . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in local time. To format the time stamp + in universal time use . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawUtcTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in universal time. To format the time stamp + in local time use . + + + + + + A very simple layout + + + + SimpleLayout consists of the level of the log statement, + followed by " - " and then the log message itself. For example, + + DEBUG - Hello world + + + + Nicko Cadell + Gert Driesen + + + + Constructs a SimpleLayout + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a simple formatted output. + + the event being logged + The TextWriter to write the formatted event to + + + Formats the event as the level of the even, + followed by " - " and then the log message itself. The + output is terminated by a newline. + + + + + + Layout that formats the log events as XML elements. + + + + The output of the consists of a series of + log4net:event elements. It does not output a complete well-formed XML + file. The output is designed to be included as an external entity + in a separate file to form a correct XML file. + + + For example, if abc is the name of the file where + the output goes, then a well-formed XML file would + be: + + + <?xml version="1.0" ?> + + <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> + + <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> + &data; + </log4net:events> + + + This approach enforces the independence of the + and the appender where it is embedded. + + + The version attribute helps components to correctly + interpret output generated by . The value of + this attribute should be "1.2" for release 1.2 and later. + + + Alternatively the Header and Footer properties can be + configured to output the correct XML header, open tag and close tag. + When setting the Header and Footer properties it is essential + that the underlying data store not be appendable otherwise the data + will become invalid XML. + + + Nicko Cadell + Gert Driesen + + + + Layout that formats the log events as XML elements. + + + + This is an abstract class that must be subclassed by an implementation + to conform to a specific schema. + + + Deriving classes must implement the method. + + + Nicko Cadell + Gert Driesen + + + + Protected constructor to support subclasses + + + + Initializes a new instance of the class + with no location info. + + + + + + Protected constructor to support subclasses + + + + The parameter determines whether + location information will be output by the layout. If + is set to true, then the + file name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string. + + The event being logged. + The TextWriter to write the formatted event to + + + Format the and write it to the . + + + This method creates an that writes to the + . The is passed + to the method. Subclasses should override the + method rather than this method. + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Subclasses should override this method to format + the as XML. + + + + + + Flag to indicate if location information should be included in + the XML events. + + + + + Writer adapter that ignores Close + + + + + The string to replace invalid chars with + + + + + Gets a value indicating whether to include location information in + the XML events. + + + true if location information should be included in the XML + events; otherwise, false. + + + + If is set to true, then the file + name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The string to replace characters that can not be expressed in XML with. + + + Not all characters may be expressed in XML. This property contains the + string to replace those that can not with. This defaults to a ?. Set it + to the empty string to simply remove offending characters. For more + details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets + Character replacement will occur in the log message, the property names + and the property values. + + + + + + + Gets the content type output by this layout. + + + As this is the XML layout, the value is always "text/xml". + + + + As this is the XML layout, the value is always "text/xml". + + + + + + Constructs an XmlLayout + + + + + Constructs an XmlLayout. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SmtpAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Builds a cache of the element names + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Override the base class method + to write the to the . + + + + + + The prefix to use for all generated element names + + + + + The prefix to use for all element names + + + + The default prefix is log4net. Set this property + to change the prefix. If the prefix is set to an empty string + then no prefix will be written. + + + + + + Set whether or not to base64 encode the message. + + + + By default the log message will be written as text to the xml + output. This can cause problems when the message contains binary + data. By setting this to true the contents of the message will be + base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the log message. + + + + + + Set whether or not to base64 encode the property values. + + + + By default the properties will be written as text to the xml + output. This can cause problems when one or more properties contain + binary data. By setting this to true the values of the properties + will be base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the property values. + + + + + + Layout that formats the log events as XML elements compatible with the log4j schema + + + + Formats the log events according to the http://logging.apache.org/log4j schema. + + + Nicko Cadell + + + + The 1st of January 1970 in UTC + + + + + Constructs an XMLLayoutSchemaLog4j + + + + + Constructs an XMLLayoutSchemaLog4j. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Actually do the writing of the xml + + the writer to use + the event to write + + + Generate XML that is compatible with the log4j schema. + + + + + + The version of the log4j schema to use. + + + + Only version 1.2 of the log4j schema is supported. + + + + + + The default object Renderer. + + + + The default renderer supports rendering objects and collections to strings. + + + See the method for details of the output. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface in order to render objects as strings + + + + Certain types require special case conversion to + string form. This conversion is done by an object renderer. + Object renderers implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a + string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + + + + Default constructor + + + + Default constructor + + + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + The default renderer supports rendering objects to strings as follows: + + + + Value + Rendered String + + + null + + "(null)" + + + + + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + , & + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: {a, b, c}. + + + All collection classes that implement its subclasses, + or generic equivalents all implement the interface. + + + + + + + + Rendered as the key, an equals sign ('='), and the value (using the appropriate + renderer). + + + For example: key=value. + + + + + other + + Object.ToString() + + + + + + + + Render the array argument into a string + + The map used to lookup renderers + the array to render + The writer to render to + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + + Render the enumerator argument into a string + + The map used to lookup renderers + the enumerator to render + The writer to render to + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + {a, b, c}. + + + + + + Render the DictionaryEntry argument into a string + + The map used to lookup renderers + the DictionaryEntry to render + The writer to render to + + + Render the key, an equals sign ('='), and the value (using the appropriate + renderer). For example: key=value. + + + + + + Map class objects to an . + + + + Maintains a mapping between types that require special + rendering and the that + is used to render them. + + + The method is used to render an + object using the appropriate renderers defined in this map. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Default constructor. + + + + + + Render using the appropriate renderer. + + the object to render to a string + the object rendered as a string + + + This is a convenience method used to render an object to a string. + The alternative method + should be used when streaming output to a . + + + + + + Render using the appropriate renderer. + + the object to render to a string + The writer to render to + + + Find the appropriate renderer for the type of the + parameter. This is accomplished by calling the + method. Once a renderer is found, it is + applied on the object and the result is returned + as a . + + + + + + Gets the renderer for the specified object type + + the object to lookup the renderer for + the renderer for + + + Gets the renderer for the specified object type. + + + Syntactic sugar method that calls + with the type of the object parameter. + + + + + + Gets the renderer for the specified type + + the type to lookup the renderer for + the renderer for the specified type + + + Returns the renderer for the specified type. + If no specific renderer has been defined the + will be returned. + + + + + + Internal function to recursively search interfaces + + the type to lookup the renderer for + the renderer for the specified type + + + + Clear the map of renderers + + + + Clear the custom renderers defined by using + . The + cannot be removed. + + + + + + Register an for . + + the type that will be rendered by + the renderer for + + + Register an object renderer for a specific source type. + This renderer will be returned from a call to + specifying the same as an argument. + + + + + + Get the default renderer instance + + the default renderer + + + Get the default renderer + + + + + + Interface implemented by logger repository plugins. + + + + Plugins define additional behavior that can be associated + with a . + The held by the + property is used to store the plugins for a repository. + + + The log4net.Config.PluginAttribute can be used to + attach plugins to repositories created using configuration + attributes. + + + Nicko Cadell + Gert Driesen + + + + Attaches the plugin to the specified . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + Gets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a PluginCollection instance. + + list to create a readonly wrapper arround + + A PluginCollection wrapper that is read-only. + + + + + Initializes a new instance of the PluginCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the PluginCollection class + that has the specified initial capacity. + + + The number of elements that the new PluginCollection is initially capable of storing. + + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified PluginCollection. + + The PluginCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire PluginCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire PluginCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the PluginCollection. + + The to be added to the end of the PluginCollection. + The index at which the value has been added. + + + + Removes all elements from the PluginCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the PluginCollection. + + The to check for. + true if is found in the PluginCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the PluginCollection. + + The to locate in the PluginCollection. + + The zero-based index of the first occurrence of + in the entire PluginCollection, if found; otherwise, -1. + + + + + Inserts an element into the PluginCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the PluginCollection. + + The to remove from the PluginCollection. + + The specified was not found in the PluginCollection. + + + + + Removes the element at the specified index of the PluginCollection. + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the PluginCollection. + + An for the entire PluginCollection. + + + + Adds the elements of another PluginCollection to the current PluginCollection. + + The PluginCollection whose elements should be added to the end of the current PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a array to the current PluginCollection. + + The array whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a collection to the current PluginCollection. + + The collection whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the PluginCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + + The at the specified index. + + The zero-based index of the element to get or set. + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false. + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false. + + + + Gets or sets the number of elements the PluginCollection can contain. + + + The number of elements the PluginCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + + + + Map of repository plugins. + + + + This class is a name keyed map of the plugins that are + attached to a repository. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The repository that the plugins should be attached to. + + + Initialize a new instance of the class with a + repository that the plugins should be attached to. + + + + + + Adds a to the map. + + The to add to the map. + + + The will be attached to the repository when added. + + + If there already exists a plugin with the same name + attached to the repository then the old plugin will + be and replaced with + the new plugin. + + + + + + Removes a from the map. + + The to remove from the map. + + + Remove a specific plugin from this map. + + + + + + Gets a by name. + + The name of the to lookup. + + The from the map with the name specified, or + null if no plugin is found. + + + + Lookup a plugin by name. If the plugin is not found null + will be returned. + + + + + + Gets all possible plugins as a list of objects. + + All possible plugins as a list of objects. + + + Get a collection of all the plugins defined in this map. + + + + + + Base implementation of + + + + Default abstract implementation of the + interface. This base class can be used by implementors + of the interface. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + the name of the plugin + + Initializes a new Plugin with the specified name. + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + The name of this plugin. + + + + + The repository this plugin is attached to. + + + + + Gets or sets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + The name of the plugin must not change one the + plugin has been attached to a repository. + + + + + + The repository for this plugin + + + The that this plugin is attached to. + + + + Gets or sets the that this plugin is + attached to. + + + + + + Plugin that listens for events from the + + + + This plugin publishes an instance of + on a specified . This listens for logging events delivered from + a remote . + + + When an event is received it is relogged within the attached repository + as if it had been raised locally. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + The property must be set. + + + + + + Construct with sink Uri. + + The name to publish the sink under in the remoting infrastructure. + See for more details. + + + Initializes a new instance of the class + with specified name. + + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + When the plugin is shutdown the remote logging + sink is disconnected. + + + + + + Gets or sets the URI of this sink. + + + The URI of this sink. + + + + This is the name under which the object is marshaled. + + + + + + + Delivers objects to a remote sink. + + + + Internal class used to listen for logging events + and deliver them to the local repository. + + + + + + Constructor + + The repository to log to. + + + Initializes a new instance of the for the + specified . + + + + + + Logs the events to the repository. + + The events to log. + + + The events passed are logged to the + + + + + + Obtains a lifetime service object to control the lifetime + policy for this instance. + + null to indicate that this instance should live forever. + + + Obtains a lifetime service object to control the lifetime + policy for this instance. This object should live forever + therefore this implementation returns null. + + + + + + The underlying that events should + be logged to. + + + + + Default implementation of + + + + This default implementation of the + interface is used to create the default subclass + of the object. + + + Nicko Cadell + Gert Driesen + + + + Interface abstracts creation of instances + + + + This interface is used by the to + create new objects. + + + The method is called + to create a named . + + + Implement this interface to create new subclasses of . + + + Nicko Cadell + Gert Driesen + + + + Create a new instance + + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Create a new instance + + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default internal subclass of + + + + This subclass has no additional behavior over the + class but does allow instances + to be created. + + + + + + Implementation of used by + + + + Internal class used to provide implementation of + interface. Applications should use to get + logger instances. + + + This is one of the central classes in the log4net implementation. One of the + distinctive features of log4net are hierarchical loggers and their + evaluation. The organizes the + instances into a rooted tree hierarchy. + + + The class is abstract. Only concrete subclasses of + can be created. The + is used to create instances of this type for the . + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + + + + This constructor created a new instance and + sets its name. + + The name of the . + + + This constructor is protected and designed to be used by + a subclass that is not abstract. + + + Loggers are constructed by + objects. See for the default + logger creator. + + + + + + Add to the list of appenders of this + Logger instance. + + An appender to add to this logger + + + Add to the list of appenders of this + Logger instance. + + + If is already in the list of + appenders, then it won't be added again. + + + + + + Look for the appender named as name + + The name of the appender to lookup + The appender with the name specified, or null. + + + Returns the named appender, or null if the appender is not found. + + + + + + Remove all previously added appenders from this Logger instance. + + + + Remove all previously added appenders from this Logger instance. + + + This is useful when re-reading configuration information. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The appender to remove + The appender removed from the list + + + Remove the appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The name of the appender to remove + The appender removed from the list + + + Remove the named appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the and . + + + This method must not throw any exception to the caller. + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + This method must not throw any exception to the caller. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + This method must not throw any exception to the caller. + + + + + + Deliver the to the attached appenders. + + The event to log. + + + Call the appenders in the hierarchy starting at + this. If no appenders could be found, emit a + warning. + + + This method calls all the appenders inherited from the + hierarchy circumventing any evaluation of whether to log or not + to log the particular log request. + + + + + + Closes all attached appenders implementing the interface. + + + + Used to ensure that the appenders are correctly shutdown. + + + + + + This is the most generic printing method. This generic form is intended to be used by wrappers + + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the . + + + + + + Creates a new logging event and logs the event without further checks. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generates a logging event and delivers it to the attached + appenders. + + + + + + Creates a new logging event and logs the event without further checks. + + The event being logged. + + + Delivers the logging event to the attached appenders. + + + + + + The fully qualified type of the Logger class. + + + + + The name of this logger. + + + + + The assigned level of this logger. + + + + The level variable need not be + assigned a value in which case it is inherited + form the hierarchy. + + + + + + The parent of this logger. + + + + The parent of this logger. + All loggers have at least one ancestor which is the root logger. + + + + + + Loggers need to know what Hierarchy they are in. + + + + Loggers need to know what Hierarchy they are in. + The hierarchy that this logger is a member of is stored + here. + + + + + + Helper implementation of the interface + + + + + Flag indicating if child loggers inherit their parents appenders + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl + + + + + Gets or sets the parent logger in the hierarchy. + + + The parent logger in the hierarchy. + + + + Part of the Composite pattern that makes the hierarchy. + The hierarchy is parent linked rather than child linked. + + + + + + Gets or sets a value indicating if child loggers inherit their parent's appenders. + + + true if child loggers inherit their parent's appenders. + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Gets the effective level for this logger. + + The nearest level in the logger hierarchy. + + + Starting from this logger, searches the logger hierarchy for a + non-null level and returns it. Otherwise, returns the level of the + root logger. + + The Logger class is designed so that this method executes as + quickly as possible. + + + + + Gets or sets the where this + Logger instance is attached to. + + The hierarchy that this logger belongs to. + + + This logger must be attached to a single . + + + + + + Gets or sets the assigned , if any, for this Logger. + + + The of this logger. + + + + The assigned can be null. + + + + + + Get the appenders contained in this logger as an + . + + A collection of the appenders in this logger + + + Get the appenders contained in this logger as an + . If no appenders + can be found, then a is returned. + + + + + + Gets the logger name. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Construct a new Logger + + the name of the logger + + + Initializes a new instance of the class + with the specified name. + + + + + + Delegate used to handle logger creation event notifications. + + The in which the has been created. + The event args that hold the instance that has been created. + + + Delegate used to handle logger creation event notifications. + + + + + + Provides data for the event. + + + + A event is raised every time a + is created. + + + + + + The created + + + + + Constructor + + The that has been created. + + + Initializes a new instance of the event argument + class,with the specified . + + + + + + Gets the that has been created. + + + The that has been created. + + + + The that has been created. + + + + + + Hierarchical organization of loggers + + + + The casual user should not have to deal with this class + directly. + + + This class is specialized in retrieving loggers by name and + also maintaining the logger hierarchy. Implements the + interface. + + + The structure of the logger hierarchy is maintained by the + method. The hierarchy is such that children + link to their parent but parents do not have any references to their + children. Moreover, loggers can be instantiated in any order, in + particular descendant before ancestor. + + + In case a descendant is created before a particular ancestor, + then it creates a provision node for the ancestor and adds itself + to the provision node. Other descendants of the same ancestor add + themselves to the previously created provision node. + + + Nicko Cadell + Gert Driesen + + + + Base implementation of + + + + Default abstract implementation of the interface. + + + Skeleton implementation of the interface. + All types can extend this type. + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by logger repositories. + + + + This interface is implemented by logger repositories. e.g. + . + + + This interface is used by the + to obtain interfaces. + + + Nicko Cadell + Gert Driesen + + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + The name of the logger to lookup + The Logger object with the name specified + + + If the names logger exists it is returned, otherwise + null is returned. + + + + + + Returns all the currently defined loggers as an Array. + + All the defined loggers + + + Returns all the currently defined loggers as an Array. + + + + + + Returns a named logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Returns a named logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + Shutdown the repository + + + Shutting down a repository will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The name of the repository + + + The name of the repository + + + + The name of the repository. + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + + These properties can be specified on a repository specific basis. + + + + + + Default Constructor + + + + Initializes the repository with default (empty) properties. + + + + + + Construct the repository using specific properties + + the properties to set for this repository + + + Initializes the repository with specified properties. + + + + + + Test if logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the repository + + All the defined loggers + + + Returns all the currently defined loggers in the repository as an Array. + + + + + + Return a new logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Return a new logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + + Shutdown the repository + + + + Shutdown the repository. Can be overridden in a subclass. + This base class implementation notifies the + listeners and all attached plugins of the shutdown event. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + Adds an object renderer for a specific class. + + The type that will be rendered by the renderer supplied. + The object renderer used to render the object. + + + Adds an object renderer for a specific class. + + + + + + Notify the registered listeners that the repository is shutting down + + Empty EventArgs + + + Notify any listeners that this repository is shutting down. + + + + + + Notify the registered listeners that the repository has had its configuration reset + + Empty EventArgs + + + Notify any listeners that this repository's configuration has been reset. + + + + + + Notify the registered listeners that the repository has had its configuration changed + + Empty EventArgs + + + Notify any listeners that this repository's configuration has changed. + + + + + + Raise a configuration changed event on this repository + + EventArgs.Empty + + + Applications that programmatically change the configuration of the repository should + raise this event notification to notify listeners. + + + + + + The name of the repository + + + The string name of the repository + + + + The name of this repository. The name is + used to store and lookup the repositories + stored by the . + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + These properties can be specified on a repository specific basis + + + + + Basic Configurator interface for repositories + + + + Interface used by basic configurator to configure a + with a default . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified appender + + the appender to use to log all logging events + + + Configure the repository to route all logging events to the + specified appender. + + + + + + Configure repository using XML + + + + Interface used by Xml configurator to configure a . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified config + + the element containing the root of the config + + + The schema for the XML configuration data is defined by + the implementation. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Construct with properties + + The properties to pass to this repository. + + + Initializes a new instance of the class. + + + + + + Construct with a logger factory + + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Construct with properties and a logger factory + + The properties to pass to this repository. + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Test if a logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the hierarchy. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the hierarchy as an Array + + All the defined loggers + + + Returns all the currently defined loggers in the hierarchy as an Array. + The root logger is not included in the returned + enumeration. + + + + + + Return a new logger instance named as the first parameter using + the default factory. + + + + Return a new logger instance named as the first parameter using + the default factory. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + The name of the logger to retrieve + The logger object with the name specified + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The Shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset all values contained in this hierarchy instance to their default. + + + + Reset all values contained in this hierarchy instance to their + default. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this hierarchy. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are currently configured + + An array containing all the currently configured appenders + + + Returns all the instances that are currently configured. + All the loggers are searched for appenders. The appenders may also be containers + for appenders and these are also searched for additional loggers. + + + The list returned is unordered but does not contain duplicates. + + + + + + Collect the appenders from an . + The appender may also be a container. + + + + + + + Collect the appenders from an container + + + + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Test if this hierarchy is disabled for the specified . + + The level to check against. + + true if the repository is disabled for the level argument, false otherwise. + + + + If this hierarchy has not been configured then this method will + always return true. + + + This method will return true if this repository is + disabled for level object passed as parameter and + false otherwise. + + + See also the property. + + + + + + Clear all logger definitions from the internal hashtable + + + + This call will clear all logger definitions from the internal + hashtable. Invoking this method will irrevocably mess up the + logger hierarchy. + + + You should really know what you are doing before + invoking this method. + + + + + + Return a new logger instance named as the first parameter using + . + + The name of the logger to retrieve + The factory that will make the new logger instance + The logger object with the name specified + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated by the + parameter and linked with its existing + ancestors as well as children. + + + + + + Sends a logger creation event to all registered listeners + + The newly created logger + + Raises the logger creation event. + + + + + Updates all the parents of the specified logger + + The logger to update the parents for + + + This method loops through all the potential parents of + . There 3 possible cases: + + + + No entry for the potential parent of exists + + We create a ProvisionNode for this potential + parent and insert in that provision node. + + + + The entry is of type Logger for the potential parent. + + The entry is 's nearest existing parent. We + update 's parent field with this entry. We also break from + he loop because updating our parent's parent is our parent's + responsibility. + + + + The entry is of type ProvisionNode for this potential parent. + + We add to the list of children for this + potential parent. + + + + + + + + Replace a with a in the hierarchy. + + + + + + We update the links for all the children that placed themselves + in the provision node 'pn'. The second argument 'log' is a + reference for the newly created Logger, parent of all the + children in 'pn'. + + + We loop on all the children 'c' in 'pn'. + + + If the child 'c' has been already linked to a child of + 'log' then there is no need to update 'c'. + + + Otherwise, we set log's parent field to c's parent and set + c's parent field to log. + + + + + + Define or redefine a Level using the values in the argument + + the level values + + + Define or redefine a Level using the values in the argument + + + Supports setting levels via the configuration file. + + + + + + Set a Property using the values in the argument + + the property value + + + Set a Property using the values in the argument. + + + Supports setting property values via the configuration file. + + + + + + Event used to notify that a logger has been created. + + + + Event raised when a logger is created. + + + + + + Has no appender warning been emitted + + + + Flag to indicate if we have already issued a warning + about not having an appender warning. + + + + + + Get the root of this hierarchy + + + + Get the root of this hierarchy. + + + + + + Gets or sets the default instance. + + The default + + + The logger factory is used to create logger instances. + + + + + + A class to hold the value, name and display name for a level + + + + A class to hold the value, name and display name for a level + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Value of the level + + + + If the value is not set (defaults to -1) the value will be looked + up for the current level with the same name. + + + + + + Name of the level + + + The name of the level + + + + The name of the level. + + + + + + Display name for the level + + + The display name of the level + + + + The display name of the level. + + + + + + A class to hold the key and data for a property set in the config file + + + + A class to hold the key and data for a property set in the config file + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Property Key + + + Property Key + + + + Property Key. + + + + + + Property Value + + + Property Value + + + + Property Value. + + + + + + Used internally to accelerate hash table searches. + + + + Internal class used to improve performance of + string keyed hashtables. + + + The hashcode of the string is cached for reuse. + The string is stored as an interned value. + When comparing two objects for equality + the reference equality of the interned strings is compared. + + + Nicko Cadell + Gert Driesen + + + + Construct key with string name + + + + Initializes a new instance of the class + with the specified name. + + + Stores the hashcode of the string and interns + the string key to optimize comparisons. + + + The Compact Framework 1.0 the + method does not work. On the Compact Framework + the string keys are not interned nor are they + compared by reference. + + + The name of the logger. + + + + Returns a hash code for the current instance. + + A hash code for the current instance. + + + Returns the cached hashcode. + + + + + + Determines whether two instances + are equal. + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + Compares the references of the interned strings. + + + + + + Provision nodes are used where no logger instance has been specified + + + + instances are used in the + when there is no specified + for that node. + + + A provision node holds a list of child loggers on behalf of + a logger that does not exist. + + + Nicko Cadell + Gert Driesen + + + + Create a new provision node with child node + + A child logger to add to this node. + + + Initializes a new instance of the class + with the specified child logger. + + + + + + The sits at the root of the logger hierarchy tree. + + + + The is a regular except + that it provides several guarantees. + + + First, it cannot be assigned a null + level. Second, since the root logger cannot have a parent, the + property always returns the value of the + level field without walking the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Construct a + + The level to assign to the root logger. + + + Initializes a new instance of the class with + the specified logging level. + + + The root logger names itself as "root". However, the root + logger cannot be retrieved by name. + + + + + + Gets the assigned level value without walking the logger hierarchy. + + The assigned level value without walking the logger hierarchy. + + + Because the root logger cannot have a parent and its level + must not be null this property just returns the + value of . + + + + + + Gets or sets the assigned for the root logger. + + + The of the root logger. + + + + Setting the level of the root logger to a null reference + may have catastrophic results. We prevent this here. + + + + + + Initializes the log4net environment using an XML DOM. + + + + Configures a using an XML DOM. + + + Nicko Cadell + Gert Driesen + + + + Construct the configurator for a hierarchy + + The hierarchy to build. + + + Initializes a new instance of the class + with the specified . + + + + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + The root element to parse. + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + + + + + Parse appenders by IDREF. + + The appender ref element. + The instance of the appender that the ref refers to. + + + Parse an XML element that represents an appender and return + the appender. + + + + + + Parses an appender element. + + The appender element. + The appender instance or null when parsing failed. + + + Parse an XML element that represents an appender and return + the appender instance. + + + + + + Parses a logger element. + + The logger element. + + + Parse an XML element that represents a logger. + + + + + + Parses the root logger element. + + The root element. + + + Parse an XML element that represents the root logger. + + + + + + Parses the children of a logger element. + + The category element. + The logger instance. + Flag to indicate if the logger is the root logger. + + + Parse the child elements of a <logger> element. + + + + + + Parses an object renderer. + + The renderer element. + + + Parse an XML element that represents a renderer. + + + + + + Parses a level element. + + The level element. + The logger object to set the level on. + Flag to indicate if the logger is the root logger. + + + Parse an XML element that represents a level. + + + + + + Sets a parameter on an object. + + The parameter element. + The object to set the parameter on. + + The parameter name must correspond to a writable property + on the object. The value of the parameter is a string, + therefore this function will attempt to set a string + property first. If unable to set a string property it + will inspect the property and its argument type. It will + attempt to call a static method called Parse on the + type of the property. This method will take a single + string argument and return a value that can be used to + set the property. + + + + + Test if an element has no attributes or child elements + + the element to inspect + true if the element has any attributes or child elements, false otherwise + + + + Test if a is constructible with Activator.CreateInstance. + + the type to inspect + true if the type is creatable using a default constructor, false otherwise + + + + Look for a method on the that matches the supplied + + the type that has the method + the name of the method + the method info found + + + The method must be a public instance method on the . + The method must be named or "Add" followed by . + The method must take a single parameter. + + + + + + Converts a string value to a target type. + + The type of object to convert the string to. + The string value to use as the value of the object. + + + An object of type with value or + null when the conversion could not be performed. + + + + + + Creates an object as specified in XML. + + The XML element that contains the definition of the object. + The object type to use if not explicitly specified. + The type that the returned object must be or must inherit from. + The object or null + + + Parse an XML element and create an object instance based on the configuration + data. + + + The type of the instance may be specified in the XML. If not + specified then the is used + as the type. However the type is specified it must support the + type. + + + + + + key: appenderName, value: appender. + + + + + The Hierarchy being configured. + + + + + Delegate used to handle logger repository shutdown event notifications + + The that is shutting down. + Empty event args + + + Delegate used to handle logger repository shutdown event notifications. + + + + + + Delegate used to handle logger repository configuration reset event notifications + + The that has had its configuration reset. + Empty event args + + + Delegate used to handle logger repository configuration reset event notifications. + + + + + + Delegate used to handle event notifications for logger repository configuration changes. + + The that has had its configuration changed. + Empty event arguments. + + + Delegate used to handle event notifications for logger repository configuration changes. + + + + + + Write the name of the current AppDomain to the output + + + + Write the name of the current AppDomain to the output writer + + + Nicko Cadell + + + + Write the name of the current AppDomain to the output + + the writer to write to + null, state is not set + + + Writes name of the current AppDomain to the output . + + + + + + Write the current date to the output + + + + Date pattern converter, uses a to format + the current date and time to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The date and time is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current date to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date and time passed is in the local time zone. + + + + + + Write an environment variable to the output + + + + Write an environment variable to the output writer. + The value of the determines + the name of the variable to output. + + + Nicko Cadell + + + + Write an environment variable to the output + + the writer to write to + null, state is not set + + + Writes the environment variable to the output . + The name of the environment variable to output must be set + using the + property. + + + + + + Write the current thread identity to the output + + + + Write the current thread identity to the output writer + + + Nicko Cadell + + + + Write the current thread identity to the output + + the writer to write to + null, state is not set + + + Writes the current thread identity to the output . + + + + + + Pattern converter for literal string instances in the pattern + + + + Writes the literal string value specified in the + property to + the output. + + + Nicko Cadell + + + + Set the next converter in the chain + + The next pattern converter in the chain + The next pattern converter + + + Special case the building of the pattern converter chain + for instances. Two adjacent + literals in the pattern can be represented by a single combined + pattern converter. This implementation detects when a + is added to the chain + after this converter and combines its value with this converter's + literal value. + + + + + + Write the literal to the output + + the writer to write to + null, not set + + + Override the formatting behavior to ignore the FormattingInfo + because we have a literal instead. + + + Writes the value of + to the output . + + + + + + Convert this pattern into the rendered message + + that will receive the formatted result. + null, not set + + + This method is not used. + + + + + + Writes a newline to the output + + + + Writes the system dependent line terminator to the output. + This behavior can be overridden by setting the : + + + + Option Value + Output + + + DOS + DOS or Windows line terminator "\r\n" + + + UNIX + UNIX line terminator "\n" + + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current process ID to the output + + + + Write the current process ID to the output writer + + + Nicko Cadell + + + + Write the current process ID to the output + + the writer to write to + null, state is not set + + + Write the current process ID to the output . + + + + + + Property pattern converter + + + + This pattern converter reads the thread and global properties. + The thread properties take priority over global properties. + See for details of the + thread properties. See for + details of the global properties. + + + If the is specified then that will be used to + lookup a single property. If no is specified + then all properties will be dumped as a list of key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + A Pattern converter that generates a string of random characters + + + + The converter generates a string of random characters. By default + the string is length 4. This can be changed by setting the + to the string value of the length required. + + + The random characters in the string are limited to uppercase letters + and numbers only. + + + The random number generator used by this class is not cryptographically secure. + + + Nicko Cadell + + + + Shared random number generator + + + + + Length of random string to generate. Default length 4. + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write a randoim string to the output + + the writer to write to + null, state is not set + + + Write a randoim string to the output . + + + + + + Write the current threads username to the output + + + + Write the current threads username to the output writer + + + Nicko Cadell + + + + Write the current threads username to the output + + the writer to write to + null, state is not set + + + Write the current threads username to the output . + + + + + + Write the UTC date time to the output + + + + Date pattern converter, uses a to format + the current date and time in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the current date and time to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date is in Universal time when it is rendered. + + + + + + + Type converter for Boolean. + + + + Supports conversion from string to bool type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Exception base type for conversion errors. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class + with the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + An instance of the . + + + Creates a new instance of the class. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + A nested exception to include. + An instance of the . + + + Creates a new instance of the class. + + + + + + Register of type converters for specific types. + + + + Maintains a registry of type converters used to convert between + types. + + + Use the and + methods to register new converters. + The and methods + lookup appropriate converters to use. + + + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + Initializes a new instance of the class. + + + + + Static constructor. + + + + This constructor defines the intrinsic type converters. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type converter to use to convert to the destination type. + + + Adds a converter instance for a specific type. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type of the type converter to use to convert to the destination type. + + + Adds a converter for a specific type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted from. + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Lookups the type converter to use as specified by the attributes on the + destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + + Creates the instance of the type converter. + + The type of the type converter. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + The type specified for the type converter must implement + the or interfaces + and must have a public default (no argument) constructor. + + + + + + Mapping from to type converter. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an encoding + the encoding + + + Uses the method to + convert the argument to an . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Interface supported by type converters + + + + This interface supports conversion from a single type to arbitrary types. + See . + + + Nicko Cadell + + + + Returns whether this converter can convert the object to the specified type + + A Type that represents the type you want to convert to + true if the conversion is possible + + + Test if the type supported by this converter can be converted to the + . + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Converts the (which must be of the type supported + by this converter) to the specified.. + + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an IPAddress + the IPAddress + + + Uses the method to convert the + argument to an . + If that fails then the string is resolved as a DNS hostname. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternLayout + the PatternLayout + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Convert between string and + + + + Supports conversion from string to type, + and from a type to a string. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the target type be converted to the type supported by this object + + A that represents the type you want to convert to + true if the conversion is possible + + + Returns true if the is + assignable from a type. + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + . To check for this condition use the + method. + + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternString + the PatternString + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a Type + the Type + + + Uses the method to convert the + argument to a . + Additional effort is made to locate partially specified types + by searching the loaded assemblies. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Attribute used to associate a type converter + + + + Class and Interface level attribute that specifies a type converter + to use with the associated type. + + + To associate a type converter with a target type apply a + TypeConverterAttribute to the target type. Specify the + type of the type converter on the attribute. + + + Nicko Cadell + Gert Driesen + + + + The string type name of the type converter + + + + + Default constructor + + + + Default constructor + + + + + + Create a new type converter attribute for the specified type name + + The string type name of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + Create a new type converter attribute for the specified type + + The type of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + The string type name of the type converter + + + The string type name of the type converter + + + + The type specified must implement the + or the interfaces. + + + + + + A straightforward implementation of the interface. + + + + This is the default implementation of the + interface. Implementors of the interface + should aggregate an instance of this type. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Append on on all attached appenders. + + The event being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Append on on all attached appenders. + + The array of events being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Calls the DoAppende method on the with + the objects supplied. + + The appender + The events + + + If the supports the + interface then the will be passed + through using that interface. Otherwise the + objects in the array will be passed one at a time. + + + + + + Attaches an appender. + + The appender to add. + + + If the appender is already in the list it won't be added again. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Lookup an attached appender by name. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + List of appenders + + + + + Array of appenders, used to cache the m_appenderList + + + + + Gets all attached appenders. + + + A collection of attached appenders, or null if there + are no attached appenders. + + + + The read only collection of all currently attached appenders. + + + + + + This class aggregates several PropertiesDictionary collections together. + + + + Provides a dictionary style lookup over an ordered list of + collections. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Add a Properties Dictionary to this composite collection + + the properties to add + + + Properties dictionaries added first take precedence over dictionaries added + later. + + + + + + Flatten this composite collection into a single properties dictionary + + the flattened dictionary + + + Reduces the collection of ordered dictionaries to a single dictionary + containing the resultant values for the keys. + + + + + + Gets the value of a property + + + The value for the property with the specified key + + + + Looks up the value for the specified. + The collections are searched + in the order in which they were added to this collection. The value + returned is the value held by the first collection that contains + the specified key. + + + If none of the collections contain the specified key then + null is returned. + + + + + + Base class for Context Properties implementations + + + + This class defines a basic property get set accessor + + + Nicko Cadell + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Subclass of that maintains a count of + the number of bytes written. + + + + This writer counts the number of bytes written. + + + Nicko Cadell + Gert Driesen + + + + that does not leak exceptions + + + + does not throw exceptions when things go wrong. + Instead, it delegates error handling to its . + + + Nicko Cadell + Gert Driesen + + + + Adapter that extends and forwards all + messages to an instance of . + + + + Adapter that extends and forwards all + messages to an instance of . + + + Nicko Cadell + + + + The writer to forward messages to + + + + + Create an instance of that forwards all + messages to a . + + The to forward to + + + Create an instance of that forwards all + messages to a . + + + + + + Closes the writer and releases any system resources associated with the writer + + + + + + + + + Dispose this writer + + flag indicating if we are being disposed + + + Dispose this writer + + + + + + Flushes any buffered output + + + + Clears all buffers for the writer and causes any buffered data to be written + to the underlying device + + + + + + Writes a character to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a character to the wrapped TextWriter + + + + + + Writes a character buffer to the wrapped TextWriter + + the data buffer + the start index + the number of characters to write + + + Writes a character buffer to the wrapped TextWriter + + + + + + Writes a string to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a string to the wrapped TextWriter + + + + + + Gets or sets the underlying . + + + The underlying . + + + + Gets or sets the underlying . + + + + + + The Encoding in which the output is written + + + The + + + + The Encoding in which the output is written + + + + + + Gets an object that controls formatting + + + The format provider + + + + Gets an object that controls formatting + + + + + + Gets or sets the line terminator string used by the TextWriter + + + The line terminator to use + + + + Gets or sets the line terminator string used by the TextWriter + + + + + + Constructor + + the writer to actually write to + the error handler to report error to + + + Create a new QuietTextWriter using a writer and error handler + + + + + + Writes a character to the underlying writer + + the char to write + + + Writes a character to the underlying writer + + + + + + Writes a buffer to the underlying writer + + the buffer to write + the start index to write from + the number of characters to write + + + Writes a buffer to the underlying writer + + + + + + Writes a string to the output. + + The string data to write to the output. + + + Writes a string to the output. + + + + + + Closes the underlying output writer. + + + + Closes the underlying output writer. + + + + + + The error handler instance to pass all errors to + + + + + Flag to indicate if this writer is closed + + + + + Gets or sets the error handler that all errors are passed to. + + + The error handler that all errors are passed to. + + + + Gets or sets the error handler that all errors are passed to. + + + + + + Gets a value indicating whether this writer is closed. + + + true if this writer is closed, otherwise false. + + + + Gets a value indicating whether this writer is closed. + + + + + + Constructor + + The to actually write to. + The to report errors to. + + + Creates a new instance of the class + with the specified and . + + + + + + Writes a character to the underlying writer and counts the number of bytes written. + + the char to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a buffer to the underlying writer and counts the number of bytes written. + + the buffer to write + the start index to write from + the number of characters to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a string to the output and counts the number of bytes written. + + The string data to write to the output. + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Total number of bytes written. + + + + + Gets or sets the total number of bytes written. + + + The total number of bytes written. + + + + Gets or sets the total number of bytes written. + + + + + + A fixed size rolling buffer of logging events. + + + + An array backed fixed size leaky bucket. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The maximum number of logging events in the buffer. + + + Initializes a new instance of the class with + the specified maximum number of buffered logging events. + + + The argument is not a positive integer. + + + + Appends a to the buffer. + + The event to append to the buffer. + The event discarded from the buffer, if the buffer is full, otherwise null. + + + Append an event to the buffer. If the buffer still contains free space then + null is returned. If the buffer is full then an event will be dropped + to make space for the new event, the event dropped is returned. + + + + + + Get and remove the oldest event in the buffer. + + The oldest logging event in the buffer + + + Gets the oldest (first) logging event in the buffer and removes it + from the buffer. + + + + + + Pops all the logging events from the buffer into an array. + + An array of all the logging events in the buffer. + + + Get all the events in the buffer and clear the buffer. + + + + + + Clear the buffer + + + + Clear the buffer of all events. The events in the buffer are lost. + + + + + + Gets the th oldest event currently in the buffer. + + The th oldest event currently in the buffer. + + + If is outside the range 0 to the number of events + currently in the buffer, then null is returned. + + + + + + Gets the maximum size of the buffer. + + The maximum size of the buffer. + + + Gets the maximum size of the buffer + + + + + + Gets the number of logging events in the buffer. + + The number of logging events in the buffer. + + + This number is guaranteed to be in the range 0 to + (inclusive). + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + The singleton instance of the empty collection. + + + + + Gets the singleton instance of the empty collection. + + The singleton instance of the empty collection. + + + Gets the singleton instance of the empty collection. + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Adds an element with the provided key and value to the + . + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + As the collection is empty no new values can be added. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Removes all elements from the . + + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Determines whether the contains an element + with the specified key. + + The key to locate in the . + false + + + As the collection is empty the method always returns false. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Removes the element with the specified key from the . + + The key of the element to remove. + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + The singleton instance of the empty dictionary. + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + Gets a value indicating whether the has a fixed size. + + true + + + As the collection is empty always returns true. + + + + + + Gets a value indicating whether the is read-only. + + true + + + As the collection is empty always returns true. + + + + + + Gets an containing the keys of the . + + An containing the keys of the . + + + As the collection is empty a is returned. + + + + + + Gets an containing the values of the . + + An containing the values of the . + + + As the collection is empty a is returned. + + + + + + Gets or sets the element with the specified key. + + The key of the element to get or set. + null + + + As the collection is empty no values can be looked up or stored. + If the index getter is called then null is returned. + A is thrown if the setter is called. + + + This dictionary is always empty and cannot be modified. + + + + Contain the information obtained when parsing formatting modifiers + in conversion modifiers. + + + + Holds the formatting information extracted from the format string by + the . This is used by the + objects when rendering the output. + + + Nicko Cadell + Gert Driesen + + + + Defaut Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + + + Initializes a new instance of the class + with the specified parameters. + + + + + + Gets or sets the minimum value. + + + The minimum value. + + + + Gets or sets the minimum value. + + + + + + Gets or sets the maximum value. + + + The maximum value. + + + + Gets or sets the maximum value. + + + + + + Gets or sets a flag indicating whether left align is enabled + or not. + + + A flag indicating whether left align is enabled or not. + + + + Gets or sets a flag indicating whether left align is enabled or not. + + + + + + Implementation of Properties collection for the + + + + This class implements a properties collection that is thread safe and supports both + storing properties and capturing a read only copy of the current propertied. + + + This class is optimized to the scenario where the properties are read frequently + and are modified infrequently. + + + Nicko Cadell + + + + The read only copy of the properties. + + + + This variable is declared volatile to prevent the compiler and JIT from + reordering reads and writes of this thread performed on different threads. + + + + + + Lock object used to synchronize updates within this instance + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property from the global context + + the key for the entry to remove + + + Removing an entry from the global context properties is relatively expensive compared + with reading a value. + + + + + + Clear the global context properties + + + + + Get a readonly immutable copy of the properties + + the current global context properties + + + This implementation is fast because the GlobalContextProperties class + stores a readonly copy of the properties. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Reading the value for a key is faster than setting the value. + When the value is written a new read only copy of + the properties is created. + + + + + + Manages a mapping from levels to + + + + Manages an ordered mapping from instances + to subclasses. + + + Nicko Cadell + + + + Default constructor + + + + Initialise a new instance of . + + + + + + Add a to this mapping + + the entry to add + + + If a has previously been added + for the same then that entry will be + overwritten. + + + + + + Lookup the mapping for the specified level + + the level to lookup + the for the level or null if no mapping found + + + Lookup the value for the specified level. Finds the nearest + mapping value for the level that is equal to or less than the + specified. + + + If no mapping could be found then null is returned. + + + + + + Initialize options + + + + Caches the sorted list of in an array + + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove the value for the specified from the context. + + + + + + Clear all the context properties + + + + Clear all the context properties + + + + + + Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doings so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Get or set the property value for the specified. + + + + + + Outputs log statements from within the log4net assembly. + + + + Log4net components cannot make log4net logging calls. However, it is + sometimes useful for the user to learn about what log4net is + doing. + + + All log4net internal debug calls go to the standard output stream + whereas internal error messages are sent to the standard error output + stream. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Static constructor that initializes logging by reading + settings from the application configuration file. + + + + The log4net.Internal.Debug application setting + controls internal debugging. This setting should be set + to true to enable debugging. + + + The log4net.Internal.Quiet application setting + suppresses all internal logging including error messages. + This setting should be set to true to enable message + suppression. + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The message to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The message to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The message to log. + An exception to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The message to log. + + + All internal error messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes output to the standard output stream. + + The message to log. + + + Writes to both Console.Out and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Writes output to the standard error stream. + + The message to log. + + + Writes to both Console.Error and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Default debug level + + + + + In quietMode not even errors generate any output. + + + + + Gets or sets a value indicating whether log4net internal logging + is enabled or disabled. + + + true if log4net internal logging is enabled, otherwise + false. + + + + When set to true, internal debug level logging will be + displayed. + + + This value can be set by setting the application setting + log4net.Internal.Debug in the application configuration + file. + + + The default value is false, i.e. debugging is + disabled. + + + + + The following example enables internal debugging using the + application configuration file : + + + + + + + + + + + + + Gets or sets a value indicating whether log4net should generate no output + from internal logging, not even for errors. + + + true if log4net should generate no output at all from internal + logging, otherwise false. + + + + When set to true will cause internal logging at all levels to be + suppressed. This means that no warning or error reports will be logged. + This option overrides the setting and + disables all debug also. + + This value can be set by setting the application setting + log4net.Internal.Quiet in the application configuration file. + + + The default value is false, i.e. internal logging is not + disabled. + + + + The following example disables internal logging using the + application configuration file : + + + + + + + + + + + + Test if LogLog.Debug is enabled for output. + + + true if Debug is enabled + + + + Test if LogLog.Debug is enabled for output. + + + + + + Test if LogLog.Warn is enabled for output. + + + true if Warn is enabled + + + + Test if LogLog.Warn is enabled for output. + + + + + + Test if LogLog.Error is enabled for output. + + + true if Error is enabled + + + + Test if LogLog.Error is enabled for output. + + + + + + Represents a native error code and message. + + + + Represents a Win32 platform native error. + + + Nicko Cadell + Gert Driesen + + + + Create an instance of the class with the specified + error number and message. + + The number of the native error. + The message of the native error. + + + Create an instance of the class with the specified + error number and message. + + + + + + Create a new instance of the class for the last Windows error. + + + An instance of the class for the last windows error. + + + + The message for the error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Create a new instance of the class. + + the error number for the native error + + An instance of the class for the specified + error number. + + + + The message for the specified error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Retrieves the message corresponding with a Win32 message identifier. + + Message identifier for the requested message. + + The message corresponding with the specified message identifier. + + + + The message will be searched for in system message-table resource(s) + using the native FormatMessage function. + + + + + + Return error information string + + error information string + + + Return error information string + + + + + + Formats a message string. + + Formatting options, and how to interpret the parameter. + Location of the message definition. + Message identifier for the requested message. + Language identifier for the requested message. + If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . + If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. + Pointer to an array of values that are used as insert values in the formatted message. + + + The function requires a message definition as input. The message definition can come from a + buffer passed into the function. It can come from a message table resource in an + already-loaded module. Or the caller can ask the function to search the system's message + table resource(s) for the message definition. The function finds the message definition + in a message table resource based on a message identifier and a language identifier. + The function copies the formatted message text to an output buffer, processing any embedded + insert sequences if requested. + + + To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. + + + + + If the function succeeds, the return value is the number of TCHARs stored in the output + buffer, excluding the terminating null character. + + + If the function fails, the return value is zero. To get extended error information, + call . + + + + + + Gets the number of the native error. + + + The number of the native error. + + + + Gets the number of the native error. + + + + + + Gets the message of the native error. + + + The message of the native error. + + + + + Gets the message of the native error. + + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance. + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current key from the enumerator. + + + Throws an exception because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current value from the enumerator. + + The current value from the enumerator. + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current entry from the enumerator. + + + Throws an because the + never has a current entry. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Get the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + A SecurityContext used when a SecurityContext is not required + + + + The is a no-op implementation of the + base class. It is used where a + is required but one has not been provided. + + + Nicko Cadell + + + + Singleton instance of + + + + Singleton instance of + + + + + + Private constructor + + + + Private constructor for singleton pattern. + + + + + + Impersonate this SecurityContext + + State supplied by the caller + null + + + No impersonation is done and null is always returned. + + + + + + Implements log4net's default error handling policy which consists + of emitting a message for the first error in an appender and + ignoring all subsequent errors. + + + + The error message is printed on the standard error output stream. + + + This policy aims at protecting an otherwise working application + from being flooded with error messages when logging fails. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + The prefix to use for each message. + + + Initializes a new instance of the class + with the specified prefix. + + + + + + Log an Error + + The error message. + The exception. + The internal error code. + + + Prints the message and the stack trace of the exception on the standard + error output stream. + + + + + + Log an Error + + The error message. + The exception. + + + Prints the message and the stack trace of the exception on the standard + error output stream. + + + + + + Log an error + + The error message. + + + Print a the error message passed as parameter on the standard + error output stream. + + + + + + Flag to indicate if it is the first error + + + + + String to prefix each message with + + + + + Is error logging enabled + + + + Is error logging enabled. Logging is only enabled for the + first error delivered to the . + + + + + + A convenience class to convert property values to specific types. + + + + Utility functions for converting types and parsing values. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Converts a string to a value. + + String to convert. + The default value. + The value of . + + + If is "true", then true is returned. + If is "false", then false is returned. + Otherwise, is returned. + + + + + + Parses a file size into a number. + + String to parse. + The default value. + The value of . + + + Parses a file size of the form: number[KB|MB|GB] into a + long value. It is scaled with the appropriate multiplier. + + + is returned when + cannot be converted to a value. + + + + + + Converts a string to an object. + + The target type to convert to. + The string to convert to an object. + + The object converted from a string or null when the + conversion failed. + + + + Converts a string to an object. Uses the converter registry to try + to convert the string value into the specified target type. + + + + + + Checks if there is an appropriate type conversion from the source type to the target type. + + The type to convert from. + The type to convert to. + true if there is a conversion from the source type to the target type. + + Checks if there is an appropriate type conversion from the source type to the target type. + + + + + + + Converts an object to the target type. + + The object to convert to the target type. + The type to convert to. + The converted object. + + + Converts an object to the target type. + + + + + + Instantiates an object given a class name. + + The fully qualified class name of the object to instantiate. + The class to which the new object should belong. + The object to return in case of non-fulfillment. + + An instance of the or + if the object could not be instantiated. + + + + Checks that the is a subclass of + . If that test fails or the object could + not be instantiated, then is returned. + + + + + + Performs variable substitution in string from the + values of keys found in . + + The string on which variable substitution is performed. + The dictionary to use to lookup variables. + The result of the substitutions. + + + The variable substitution delimiters are ${ and }. + + + For example, if props contains key=value, then the call + + + + string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); + + + + will set the variable s to "Value of key is value.". + + + If no value could be found for the specified key, then substitution + defaults to an empty string. + + + For example, if system properties contains no value for the key + "nonExistentKey", then the call + + + + string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); + + + + will set s to "Value of nonExistentKey is []". + + + An Exception is thrown if contains a start + delimiter "${" which is not balanced by a stop delimiter "}". + + + + + + Converts the string representation of the name or numeric value of one or + more enumerated constants to an equivalent enumerated object. + + The type to convert to. + The enum string value. + If true, ignore case; otherwise, regard case. + An object of type whose value is represented by . + + + + Most of the work of the class + is delegated to the PatternParser class. + + + + The PatternParser processes a pattern string and + returns a chain of objects. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The pattern to parse. + + + Initializes a new instance of the class + with the specified pattern string. + + + + + + Parses the pattern into a chain of pattern converters. + + The head of a chain of pattern converters. + + + Parses the pattern into a chain of pattern converters. + + + + + + Build the unified cache of converters from the static and instance maps + + the list of all the converter names + + + Build the unified cache of converters from the static and instance maps + + + + + + Internal method to parse the specified pattern to find specified matches + + the pattern to parse + the converter names to match in the pattern + + + The matches param must be sorted such that longer strings come before shorter ones. + + + + + + Process a parsed literal + + the literal text + + + + Process a parsed converter pattern + + the name of the converter + the optional option for the converter + the formatting info for the converter + + + + Resets the internal state of the parser and adds the specified pattern converter + to the chain. + + The pattern converter to add. + + + + The first pattern converter in the chain + + + + + the last pattern converter in the chain + + + + + The pattern + + + + + Internal map of converter identifiers to converter types + + + + This map overrides the static s_globalRulesRegistry map. + + + + + + Get the converter registry used by this parser + + + The converter registry used by this parser + + + + Get the converter registry used by this parser + + + + + + Sort strings by length + + + + that orders strings by string length. + The longest strings are placed first + + + + + + This class implements a patterned string. + + + + This string has embedded patterns that are resolved and expanded + when the string is formatted. + + + This class functions similarly to the + in that it accepts a pattern and renders it to a string. Unlike the + however the PatternString + does not render the properties of a specific but + of the process in general. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + appdomain + + + Used to output the friendly name of the current AppDomain. + + + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + env + + + Used to output the a specific environment variable. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %env{COMPUTERNAME} would include the value + of the COMPUTERNAME environment variable. + + + The env pattern is not supported on the .NET Compact Framework. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern name offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + processid + + + Used to output the system process ID for the current process. + + + + + property + + + Used to output a specific context property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are stored in logging contexts. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + random + + + Used to output a random string of characters. The string is made up of + uppercase letters and numbers. By default the string is 4 characters long. + The length of the string can be specified within braces directly following the + pattern specifier, e.g. %random{8} would output an 8 character string. + + + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + % + + + The sequence %% outputs a single percent sign. + + + + + + Additional pattern converters may be registered with a specific + instance using or + . + + + See the for details on the + format modifiers supported by the patterns. + + + Nicko Cadell + + + + Internal map of converter identifiers to converter types. + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternString only + + + + + Initialize the global registry + + + + + Default constructor + + + + Initialize a new instance of + + + + + + Constructs a PatternString + + The pattern to use with this PatternString + + + Initialize a new instance of with the pattern specified. + + + + + + Initialize object options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create the used to parse the pattern + + the pattern to parse + The + + + Returns PatternParser used to parse the conversion string. Subclasses + may override this to return a subclass of PatternParser which recognize + custom conversion pattern name. + + + + + + Produces a formatted string as specified by the conversion pattern. + + The TextWriter to write the formatted event to + + + Format the pattern to the . + + + + + + Format the pattern as a string + + the pattern formatted as a string + + + Format the pattern to a string. + + + + + + Add a converter to this PatternString + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternString + + the name of the conversion pattern for this converter + the type of the converter + + + Add a converter to this PatternString + + + + + + Gets or sets the pattern formatting string + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Wrapper class used to map converter names to converter types + + + + Wrapper class used to map converter names to converter types + + + + + + default constructor + + + + + Gets or sets the name of the conversion pattern + + + The name of the conversion pattern + + + + Gets or sets the name of the conversion pattern + + + + + + Gets or sets the type of the converter + + + The type of the converter + + + + Gets or sets the type of the converter + + + + + + String keyed object map. + + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + String keyed object map that is read only. + + + + This collection is readonly and cannot be modified. + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + The Hashtable used to store the properties data + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Copy Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Deserialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Gets the key names. + + An array of all the keys. + + + Gets the key names. + + + + + + Test if the dictionary contains a specified key + + the key to look for + true if the dictionary contains the specified key + + + Test if the dictionary contains a specified key + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + Serializes this object into the provided. + + + + + + See + + + + + See + + + + + + See + + + + + + + Remove all properties from the properties collection + + + + + See + + + + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + The hashtable used to store the properties + + + The internal collection used to store the properties + + + + The hashtable used to store the properties + + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + The number of properties in this collection + + + + + See + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Because this class is sealed the serialization constructor is private. + + + + + + Remove the entry with the specified key from this dictionary + + the key for the entry to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + an enumerator + + + Returns a over the contest of this collection. + + + + + + See + + the key to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + the key to lookup in the collection + true if the collection contains the specified key + + + Test if this collection contains a specified key. + + + + + + Remove all properties from the properties collection + + + + Remove all properties from the properties collection + + + + + + See + + the key + the value to store for the key + + + Store a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + See + + + false + + + + This collection is modifiable. This property always + returns false. + + + + + + See + + + The value for the key specified. + + + + Get or set a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + A that ignores the message + + + + This writer is used in special cases where it is necessary + to protect a writer from being closed by a client. + + + Nicko Cadell + + + + Constructor + + the writer to actually write to + + + Create a new ProtectCloseTextWriter using a writer + + + + + + Attach this instance to a different underlying + + the writer to attach to + + + Attach this instance to a different underlying + + + + + + Does not close the underlying output writer. + + + + Does not close the underlying output writer. + This method does nothing. + + + + + + Defines a lock that supports single writers and multiple readers + + + + ReaderWriterLock is used to synchronize access to a resource. + At any given time, it allows either concurrent read access for + multiple threads, or write access for a single thread. In a + situation where a resource is changed infrequently, a + ReaderWriterLock provides better throughput than a simple + one-at-a-time lock, such as . + + + If a platform does not support a System.Threading.ReaderWriterLock + implementation then all readers and writers are serialized. Therefore + the caller must not rely on multiple simultaneous readers. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Acquires a reader lock + + + + blocks if a different thread has the writer + lock, or if at least one thread is waiting for the writer lock. + + + + + + Decrements the lock count + + + + decrements the lock count. When the count + reaches zero, the lock is released. + + + + + + Acquires the writer lock + + + + This method blocks if another thread has a reader lock or writer lock. + + + + + + Decrements the lock count on the writer lock + + + + ReleaseWriterLock decrements the writer lock count. + When the count reaches zero, the writer lock is released. + + + + + + A that can be and reused + + + + A that can be and reused. + This uses a single buffer for string operations. + + + Nicko Cadell + + + + Create an instance of + + the format provider to use + + + Create an instance of + + + + + + Override Dispose to prevent closing of writer + + flag + + + Override Dispose to prevent closing of writer + + + + + + Reset this string writer so that it can be reused. + + the maximum buffer capacity before it is trimmed + the default size to make the buffer + + + Reset this string writer so that it can be reused. + The internal buffers are cleared and reset. + + + + + + Utility class for system specific information. + + + + Utility class of static methods for system specific information. + + + Nicko Cadell + Gert Driesen + Alexey Solofnenko + + + + Private constructor to prevent instances. + + + + Only static methods are exposed from this type. + + + + + + Initialize default values for private static fields. + + + + Only static methods are exposed from this type. + + + + + + Gets the assembly location path for the specified assembly. + + The assembly to get the location for. + The location of the assembly. + + + This method does not guarantee to return the correct path + to the assembly. If only tries to give an indication as to + where the assembly was loaded from. + + + + + + Gets the fully qualified name of the , including + the name of the assembly from which the was + loaded. + + The to get the fully qualified name for. + The fully qualified name for the . + + + This is equivalent to the Type.AssemblyQualifiedName property, + but this method works on the .NET Compact Framework 1.0 as well as + the full .NET runtime. + + + + + + Gets the short name of the . + + The to get the name for. + The short name of the . + + + The short name of the assembly is the + without the version, culture, or public key. i.e. it is just the + assembly's file name without the extension. + + + Use this rather than Assembly.GetName().Name because that + is not available on the Compact Framework. + + + Because of a FileIOPermission security demand we cannot do + the obvious Assembly.GetName().Name. We are allowed to get + the of the assembly so we + start from there and strip out just the assembly name. + + + + + + Gets the file name portion of the , including the extension. + + The to get the file name for. + The file name of the assembly. + + + Gets the file name portion of the , including the extension. + + + + + + Loads the type specified in the type string. + + A sibling type to use to load the type. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified, it will be loaded from the assembly + containing the specified relative type. If the type is not found in the assembly + then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the + assembly that is directly calling this method. If the type is not found + in the assembly then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + An assembly to load the type from. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the specified + assembly. If the type is not found in the assembly then all the loaded assemblies + will be searched for the type. + + + + + + Generate a new guid + + A new Guid + + + Generate a new guid + + + + + + Create an + + The name of the parameter that caused the exception + The value of the argument that causes this exception + The message that describes the error + the ArgumentOutOfRangeException object + + + Create a new instance of the class + with a specified error message, the parameter name, and the value + of the argument. + + + The Compact Framework does not support the 3 parameter constructor for the + type. This method provides an + implementation that works for all platforms. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Lookup an application setting + + the application settings key to lookup + the value for the key, or null + + + Configuration APIs are not supported under the Compact Framework + + + + + + Convert a path into a fully qualified local file path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + The path specified must be a local file path, a URI is not supported. + + + + + + Creates a new case-insensitive instance of the class with the default initial capacity. + + A new case-insensitive instance of the class with the default initial capacity + + + The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. + + + + + + Gets an empty array of types. + + + + The Type.EmptyTypes field is not available on + the .NET Compact Framework 1.0. + + + + + + Cache the host name for the current machine + + + + + Cache the application friendly name + + + + + Text to output when a null is encountered. + + + + + Text to output when an unsupported feature is requested. + + + + + Start time for the current process. + + + + + Gets the system dependent line terminator. + + + The system dependent line terminator. + + + + Gets the system dependent line terminator. + + + + + + Gets the base directory for this . + + The base directory path for the current . + + + Gets the base directory for this . + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the configuration file for the current . + + The path to the configuration file for the current . + + + The .NET Compact Framework 1.0 does not have a concept of a configuration + file. For this runtime, we use the entry assembly location as the root for + the configuration file name. + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the file that first executed in the current . + + The path to the entry assembly. + + + Gets the path to the file that first executed in the current . + + + + + + Gets the ID of the current thread. + + The ID of the current thread. + + + On the .NET framework, the AppDomain.GetCurrentThreadId method + is used to obtain the thread ID for the current thread. This is the + operating system ID for the thread. + + + On the .NET Compact Framework 1.0 it is not possible to get the + operating system thread ID for the current thread. The native method + GetCurrentThreadId is implemented inline in a header file + and cannot be called. + + + On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this + gives a stable id unrelated to the operating system thread ID which may + change if the runtime is using fibers. + + + + + + Get the host name or machine name for the current machine + + + The hostname or machine name + + + + Get the host name or machine name for the current machine + + + The host name () or + the machine name (Environment.MachineName) for + the current machine, or if neither of these are available + then NOT AVAILABLE is returned. + + + + + + Get this application's friendly name + + + The friendly name of this application as a string + + + + If available the name of the application is retrieved from + the AppDomain using AppDomain.CurrentDomain.FriendlyName. + + + Otherwise the file name of the entry assembly is used. + + + + + + Get the start time for the current process. + + + + This is the time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Text to output when a null is encountered. + + + + Use this value to indicate a null has been encountered while + outputting a string representation of an item. + + + The default value is (null). This value can be overridden by specifying + a value for the log4net.NullText appSetting in the application's + .config file. + + + + + + Text to output when an unsupported feature is requested. + + + + Use this value when an unsupported feature is requested. + + + The default value is NOT AVAILABLE. This value can be overridden by specifying + a value for the log4net.NotAvailableText appSetting in the application's + .config file. + + + + + + Utility class that represents a format string. + + + + Utility class that represents a format string. + + + Nicko Cadell + + + + Initialise the + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + + + Format the string and arguments + + the formatted string + + + + Replaces the format item in a specified with the text equivalent + of the value of a corresponding instance in a specified array. + A specified parameter supplies culture-specific formatting information. + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + A copy of format in which the format items have been replaced by the + equivalent of the corresponding instances of in args. + + + + This method does not throw exceptions. If an exception thrown while formatting the result the + exception and arguments are returned in the result string. + + + + + + Process an error during StringFormat + + + + + Dump the contents of an array into a string builder + + + + + Dump an object to a string + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + The thread local data slot to use to store a PropertiesDictionary. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove a property + + + + + + Clear all properties + + + + Clear all properties + + + + + + Get the PropertiesDictionary for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doing so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this tread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The ThreadContextStack internal stack + + + + + The depth to trim the stack to when this instance is disposed + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + Utility class for transforming strings. + + + + Utility class for transforming strings. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Write a string to an + + the writer to write to + the string to write + The string to replace non XML compliant chars with + + + The test is escaped either using XML escape entities + or using CDATA sections. + + + + + + Replace invalid XML characters in text string + + the XML text input string + the string to use in place of invalid characters + A string that does not contain invalid XML characters. + + + Certain Unicode code points are not allowed in the XML InfoSet, for + details see: http://www.w3.org/TR/REC-xml/#charsets. + + + This method replaces any illegal characters in the input string + with the mask string specified. + + + + + + Count the number of times that the substring occurs in the text + + the text to search + the substring to find + the number of times the substring occurs in the text + + + The substring is assumed to be non repeating within itself. + + + + + + Impersonate a Windows Account + + + + This impersonates a Windows account. + + + How the impersonation is done depends on the value of . + This allows the context to either impersonate a set of user credentials specified + using username, domain name and password or to revert to the process credentials. + + + + + + Default constructor + + + + Default constructor + + + + + + Initialize the SecurityContext based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The security context will try to Logon the specified user account and + capture a primary token for impersonation. + + + The required , + or properties were not specified. + + + + Impersonate the Windows account specified by the and properties. + + caller provided state + + An instance that will revoke the impersonation of this SecurityContext + + + + Depending on the property either + impersonate a user using credentials supplied or revert + to the process credentials. + + + + + + Create a given the userName, domainName and password. + + the user name + the domain name + the password + the for the account specified + + + Uses the Windows API call LogonUser to get a principal token for the account. This + token is used to initialize the WindowsIdentity. + + + + + + Gets or sets the impersonation mode for this security context + + + The impersonation mode for this security context + + + + Impersonate either a user with user credentials or + revert this thread to the credentials of the process. + The value is one of the + enum. + + + The default value is + + + When the mode is set to + the user's credentials are established using the + , and + values. + + + When the mode is set to + no other properties need to be set. If the calling thread is + impersonating then it will be reverted back to the process credentials. + + + + + + Gets or sets the Windows username for this security context + + + The Windows username for this security context + + + + This property must be set if + is set to (the default setting). + + + + + + Gets or sets the Windows domain name for this security context + + + The Windows domain name for this security context + + + + The default value for is the local machine name + taken from the property. + + + This property must be set if + is set to (the default setting). + + + + + + Sets the password for the Windows account specified by the and properties. + + + The password for the Windows account specified by the and properties. + + + + This property must be set if + is set to (the default setting). + + + + + + The impersonation modes for the + + + + See the property for + details. + + + + + + Impersonate a user using the credentials supplied + + + + + Revert this the thread to the credentials of the process + + + + + Adds to + + + + Helper class to expose the + through the interface. + + + + + + Constructor + + the impersonation context being wrapped + + + Constructor + + + + + + Revert the impersonation + + + + Revert the impersonation + + + + + + The log4net Global Context. + + + + The GlobalContext provides a location for global debugging + information to be stored. + + + The global context has a properties map and these properties can + be included in the output of log messages. The + supports selecting and outputing these properties. + + + By default the log4net:HostName property is set to the name of + the current machine. + + + + + GlobalContext.Properties["hostname"] = Environment.MachineName; + + + + Nicko Cadell + + + + Private Constructor. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + The global context properties instance + + + + + The global properties map. + + + The global properties map. + + + + The global properties map. + + + + + + The log4net Logical Thread Context. + + + + The LogicalThreadContext provides a location for specific debugging + information to be stored. + The LogicalThreadContext properties override any or + properties with the same name. + + + The Logical Thread Context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Logical Thread Context provides a diagnostic context for the current call context. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Logical Thread Context is managed on a per basis. + + + Example of using the thread context properties to store a username. + + LogicalThreadContext.Properties["user"] = userName; + log.Info("This log message has a LogicalThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) + { + log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The LogicalThreadContext properties override any + or properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The logical thread stacks. + + + + + + This class is used by client applications to request logger instances. + + + + This class has static methods that are used by a client to request + a logger instance. The method is + used to retrieve a logger. + + + See the interface for more details. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + Returns the named logger if it exists. + + Returns the named logger if it exists. + + + + If the named logger exists (in the default repository) then it + returns a reference to the logger, otherwise it returns null. + + + The fully qualified logger name to look for. + The logger found, or null if no logger could be found. + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the logger doesn't exist in the specified + repository. + + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the repository for the specified assembly) then it + returns a reference to the logger, otherwise it returns + null. + + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger, or null if the logger doesn't exist in the specified + assembly's repository. + + + + Get the currently defined loggers. + + Returns all the currently defined loggers in the default repository. + + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + + The root logger is not included in the returned array. + + All the defined loggers. + + + Get or create a logger. + + Retrieves or creates a named logger. + + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Get the logger for the fully qualified name of the type specified. + + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The repository to lookup in. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The assembly to use to lookup the repository. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + Shutdown a logger repository. + + Shuts down the default repository. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + default repository. + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The repository to shutdown. + + + + Shuts down the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The assembly to use to lookup the repository. + + + Reset the configuration of a repository + + Resets all values contained in this repository instance to their defaults. + + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The repository to reset. + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The assembly to use to lookup the repository to reset. + + + Get the logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Get a logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Create a domain + + Creates a repository with the specified repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + Create a logger repository. + + Creates a repository with the specified repository type. + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + + + + Creates a repository with the specified name. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name. + + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Creates a repository for the specified assembly and repository type. + + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Gets the list of currently defined repositories. + + + + Get an array of all the objects that have been created. + + + An array of all the known objects. + + + + Looks up the wrapper object for the logger specified. + + The logger to get the wrapper for. + The wrapper for the logger specified. + + + + Looks up the wrapper objects for the loggers specified. + + The loggers to get the wrappers for. + The wrapper objects for the loggers specified. + + + + Create the objects used by + this manager. + + The logger to wrap. + The wrapper for the logger specified. + + + + The wrapper map to use to hold the objects. + + + + + Implementation of Mapped Diagnostic Contexts. + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + The MDC class is similar to the class except that it is + based on a map instead of a stack. It provides mapped + diagnostic contexts. A Mapped Diagnostic Context, or + MDC in short, is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The MDC is managed on a per thread basis. + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Gets the context value identified by the parameter. + + The key to lookup in the MDC. + The string value held for the key, or a null reference if no corresponding value is found. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + If the parameter does not look up to a + previously defined context then null will be returned. + + + + + + Add an entry to the MDC + + The key to store the value under. + The value to store. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Puts a context value (the parameter) as identified + with the parameter into the current thread's + context map. + + + If a value is already defined for the + specified then the value will be replaced. If the + is specified as null then the key value mapping will be removed. + + + + + + Removes the key value mapping for the key specified. + + The key to remove. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove the specified entry from this thread's MDC + + + + + + Clear all entries in the MDC + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove all the entries from this thread's MDC + + + + + + Implementation of Nested Diagnostic Contexts. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + A Nested Diagnostic Context, or NDC in short, is an instrument + to distinguish interleaved log output from different sources. Log + output is typically interleaved when a server handles multiple + clients near-simultaneously. + + + Interleaved log output can still be meaningful if each log entry + from different contexts had a distinctive stamp. This is where NDCs + come into play. + + + Note that NDCs are managed on a per thread basis. The NDC class + is made up of static methods that operate on the context of the + calling thread. + + + How to push a message into the context + + using(NDC.Push("my context message")) + { + ... all log calls will have 'my context message' included ... + + } // at the end of the using block the message is automatically removed + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Clears all the contextual information held on the current thread. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Clears the stack of NDC data held on the current thread. + + + + + + Creates a clone of the stack of context information. + + A clone of the context info for this thread. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The results of this method can be passed to the + method to allow child threads to inherit the context of their + parent thread. + + + + + + Inherits the contextual information from another thread. + + The context stack to inherit. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This thread will use the context information from the stack + supplied. This can be used to initialize child threads with + the same contextual information as their parent threads. These + contexts will NOT be shared. Any further contexts that + are pushed onto the stack will not be visible to the other. + Call to obtain a stack to pass to + this method. + + + + + + Removes the top context from the stack. + + + The message in the context that was removed from the top + of the stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Remove the top context from the stack, and return + it to the caller. If the stack is empty then an + empty string (not null) is returned. + + + + + + Pushes a new context message. + + The new context message. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.NDC.Push("NDC_Message")) + { + log.Warn("This should have an NDC message"); + } + + + + + + Removes the context information for this thread. It is + not required to call this method. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This method is not implemented. + + + + + + Forces the stack depth to be at most . + + The maximum depth of the stack + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Forces the stack depth to be at most . + This may truncate the head of the stack. This only affects the + stack in the current thread. Also it does not prevent it from + growing, it only sets the maximum depth at the time of the + call. This can be used to return to a known context depth. + + + + + + Gets the current context depth. + + The current context depth. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The number of context values pushed onto the context stack. + + + Used to record the current depth of the context. This can then + be restored using the method. + + + + + + + The log4net Thread Context. + + + + The ThreadContext provides a location for thread specific debugging + information to be stored. + The ThreadContext properties override any + properties with the same name. + + + The thread context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Thread Context provides a diagnostic context for the current thread. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Thread Context is managed on a per thread basis. + + + Example of using the thread context properties to store a username. + + ThreadContext.Properties["user"] = userName; + log.Info("This log message has a ThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(ThreadContext.Stacks["NDC"].Push("my context message")) + { + log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The ThreadContext properties override any + properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The thread local stacks. + + + + + diff --git a/lib/NHibernate20/net/4.0/Castle.Core.dll b/lib/NHibernate20/net/4.0/Castle.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..2464e661609b339ea4d1bdee520f723bed10ab89 GIT binary patch literal 73728 zcmeFa34ByV_CH!xxA*KMWCfA{fhH@2MNmfBCCW}jR1^YfAQ;ln9TbQ`P+U+@QN(dY zaTgu;QE){Na0O>T!4VW?P{&Axq7Ax_TUkSw0?zft(K9PvhB^~}0x!JJ5VMxI;|peoYeVHpNrBGB^q8SSjF6VNtbFJ2n70pvDol_* zA-)EuKy%MYkUCv}D@8~AR2?@`96w#f6v)A!^RPs@23*1bIDX|6G5F(x-P0)ryThpx zj{FReBJoJxe+3r^ffCpsAFy3OaLXG*^BZxk{R{*$E-S~0wD}aEH06sC~~Zbne|eS(i`N+_IvX88u+~iey@SwYvA`9_`L>xuYuod;P)E% zy#{`-f!}N3|3@`2fbOgDp?gy$++zOOLM(qs2tRYyZqHvvqyS{ZyUSv_|iv*%%2-tcEjRb{qLTAhwQz(wz_Mm%e~(% zA9~e4&w75<6>m-Zljko_RD9dJp!bPCEd8qb56w$MTOO;-%4qRNZqN-}DE zouI66Zhf;N3|AY;hSuEt{Z%!F!KAdCMNp4SJhSi1D2Xd z({hEoQ7Gpb7%m1XQ<;d9#o-c?o}!|qxHf0nwkba$q?oQm>d0Hn2Qq?6_b zN|ZO?2~UNcqJ*+T9xKDcM(HfdV~iFh8nZracO~pval5(B;FLDooK1nAt(xdsR@#D_ z21IOj%8CwLh9Z;D%FtIwFb*x9OBcB)V50M&MMPeAB~HN=BRkD1ONgMo=S0z^0}EAf z5{i^qlHm*Y01jB5a3!v#uB?Q8?S0{%NS7Vhm*$&?;Ubg#r5=B{7kKYw7JFe>;@nP& zwxXc7NP~IQuS+0K%($pul~EMnkaPp7Ox+0Shy}et>u{?EN;-JBWi9R7?{S4^AgZil z-2?$o+54HrREF`$he_y&GPDioQY4jR`?(Yeo~(%h%WF#FN!(Z9*CqL2UxuGclI}{w zgq7yfg=t%iHq>Rw5}i*F8F0g8ISp4#V({lvt}trQQ;beVeW|A(40I(=7tFZ9aYzJQ z9#6Oy32vMOo%V8%@p!`_2#)NH2&Skx(cWl{h1AA0mcPQ4>z?bi-$#Jjp0j#;YnJXfJ-sSJ_Zy=~E_p!3 zqCG=5o9SmX08KOXFf1x_h8`IXjRi8DnoWHl;b1=GezsVH&y>-8-)D;<>2?w!Y0*WF-Pszv#(&SVe(Nio|sa$j>tWsFK zT*}?t4i{Ra2=Wrj2{2edYj8}1^05Xd#@Y7Tlc8W8IT?p3gUW{ClX+g$enR!^E!=-ok2#it@puQU&1c!m>P|yUXiP7Om zCuOF)RJtcK-CI(W=1KG3l^K@^TH_e0f<*)u7 z7=tR<59Y&XLE4y(NsQ)MkASkkT8=i%4iARNrIOu6rxYb*O|15Yhk>D}-8_kzNhSF{ z|4lTb8GjzjvuDFAxuYIiW0L18u zdWqZ7GKtuBsWO6TZ;lnkK3)5_u!;zQ87<8r31A`kD{*W3lg#co6Qaf;-{NR8w>G5ZkfnvDduFy zeCa~MjkVUp6PT`Iy@d5qR%9}?gS=!tj{^gmoL#hM50rUbRV(O!*+?N zD?9-VEV0!+6HHuvYn+T5?L>3F<+Ye1Dw z`>76ywGG7@@MN7a)B;lG4_!=@xU!0~i*xM_o<7})QEb{{NqzmFFpwAb0lABcXvMZK z*p|48%cGg7zQw$^!8-2&V+1i+HMaL;-;lxxSlp=P(bGw-3)zUN~o~lqR(OD?4mwLSGw(>K1b=| zb7-od2?F;&#BgQNZNF|eoY|svXui-HX=}q495V;c3i0VF3T@dKzsU8eu2dY+zdB4@*m6+9Pq%zVS! zOupCYZ|VT!3MW70)Cyu`c{1JMdg!A{96Wm-b7Kli##9-eO*(lvlQ~IZETAqIVUzDF zN_PhvAYq_mP#184!r+#=_hvv_hZ1anvw+e{p6DFNn@Lmq4c0?in&-5mD`qbA_F{Sz zks6du=fh1lEg`{kkteYv&!@Rber?3%Pbf+8X`wF|p*Z$xCth96QLr>4+=yft>qo$= zljk9s?kOou^YGzMBSwbAZKn=}lyOscJ}zCLfC)HI_V&KEX&!wHgd0vA19|l^Q0oQR z=Sy=3(HUu$9oS3H9)CmG%JJt%O|`|9J~XQ&;jbHbeemZaCO&j7lZ`88o-~zT9$o-b z0Z-dm=d~BfJD=c>{AY5|I_q z&tJyy^Fy>wWA&XxAri6hdM5}6o%hyFKUJZ+>LT{FNe3mJN(LOoB#vU zj%IKIj6S->ntIb!w*`&QEVRWDr%>T#2-OPS06*bBf&^~_3G8!saRv5qJJP<9PDXON z3O80Xd7g^i1eInot+-*E$(uO zTm=8&H2|e9Pr|-DNNxux+q*BhjXIo(5t^r~HUm!-^d8nLx|Y*X4V6njE6Aa8h3`PV zgpy=$7y~$fhf+c69;U(mu`l2)MZ=(iFj2?syS>Rw^cL$IiaMO$G#t{hGSx(p6a{!^V6&4{^ln6XIK7#)_IW*eA&kjQ zJ!grW?)shsC)`Fi-Y;T)Mz!vT+3@osY7lt|w(vuYqx>9M227x>m4Vr?-Bz(}f-P(l z<0#vxuyMqvI_3oG>PUZMTKC6n`1?$kgWCwu#ZI?J3kRc+R^QVTJF(I7uw&i|OrNqyiQ_`Y7q> zPjlUrfcw$=z$;Dmgws(wnc;27P?CgQ#6;Rq`0)_p9pt+oI%O~DX%Q2inHG)jL@{)% zo)f1kwi4a~BRdd49zP}FM>3dqJh9zfn#x*%DJle)wG%re`>)-$<8&4r4&4V=m zpo^W30%FpcNaaMwB1l)pw2wRk)}>w>*qx-NU8lq(e+q#@;>g zKx{GZNgku7K%E62r^HpdO=yqdwd`}ktmf&kgL<8bi&N*MxK3tFX9nq@F=AKF1575s z=eL9Cx}Cb|pm-104Ae8~1`{cNEM0QSx_mh5$6_m-v`e8qS?tfjB)3)*QJa}nJQd}9 z0_7}4jVo&&rehU+o8o{sYG=&8rk!nCRq!`jJhiMol&Bk_^favX?;Q-B4 zF0+d~&kXJ8lc?bJ>ym*M zy2P+`PjMJCwE&i#$FTl{m$V`a?5=B35y_=1{4_ik>kI~%N}TF2>@YYH=X|q~ld6!$ zG!FPgzFns1dYB8~jSmiB1C=KH4CrzU`#jwJ29aLO*^jrU!Z~CO4a3)2s%b7Ty;4TY zS2F?4f=cjNupIMzgoLie;){)XE~T$m+DSJuLn`B#{|>Um^AFB`$S7O=Sl&&P7iFSikPY-ywz(Pn@XI8OSIha(L1oP+Rb(MZSH|#3d!iF? zEhOK;dyqG=q^-U5d%|t7%=e7l?%WS?*@s82>vX$g&g{LSV>i9Fqt&)hAi0YckViVg z&xa{oqZ-5}ka2^z5 z{RsZ)U7zl_cH;JVlk)7ty$zKha*E4w=A+h{CkI|nbS63R@qPkC%)O()7BTN!516Hngiv$8v=?HP^6{+nG|j z=|YfTZ{&!zA(g3%_P5#iWA#{>*n)QS@{x|r_(j}qLH1H$NAImxq2}#FYSq*Xue_~V z#0ftAD*n)l?10*$izp;&`^@lm(6TmhwmvIQm3Y`T63$~aMgB15(R&_z2J#`yn0Fj4 z?uE_dP~q^Nu2z`(p)1%Iw3!0X?BMahn1*-2XM*wuj{{8fm36{-0qN&g-~jh6$g;wJ z0o568trFeA{%LnGJ}y*ETt0JLnB>=;nc^URupb3L4dC(7yDs$H(h?;o2Ra7<u3` z<>5Uh>?ug!n-|;(tumK4P!h1;VR|1em)_mW?+(T5yV~ujZ#>h?a@q06Hm~qQ^+xU8 zjp{AGJimeqh}~~^7aZkRl(*BZHx<_OS!sed)3esg?S=LC|B10Sj9c3Zk3;3~*%2K^ zW&{TU7N6oO^GGY7@}Vzct~T@55>%xXd>aMi z14-)y2Tpd z7z3w6P1hpbUo=r1v9^d!2E!s3L&;fqSR716qiy)9lo+Sy4J$YS2+Y%niS_AniVoLh z=6VHP&42{^62rdKTrZ<5%`bT3M12nJe|&fk3WetrJu5BK119xMu(EV#m{i^_#;qt% zi>#zL^$h(k)lXJJOggD&(9YAdJ#P3YGF&JywFt-Cu4W1bZ@FGz;bmRZ)q0+7d9rOV zMp@cc|N6w*3cm-vbXO+M zsYj=|(%jc2c}x5H^Cy+N{rMF=%T*IqSXrJ5jz&G>6-j;A+)P|wW_T|$`!H+=tR0;F2(5l4-d0&S7nxi6;$Q8PoS%w&|BVx#HMC+%ym@O zrUyZF$DBv*V*L`snf8Hif=6SFwCv8p8Fgpb4*9Y6fe*3$KQVn6G{_E6hp{o%L;Kia ze2^ykC8^r3*oJoX){(BTJo2_F*Z>LcFk+jiFhTUbt6+%k1n8<;J35C%t@P&*+R)LT zuSO2;&y+Q`s8QUOz>Z5)BJP%b*9wn#=&V-h<)wDDI32*ax^g+#l&# z5O+ih0cq}t6on^v9z1wr-I2>s+Oj{Ib-!hQJXSC4phKp&oVofsVk5#87r%4-JGve2 zhz?TkLv<3QE8|NwUfvmZD3PrwwB|1_0uFvmnuv|Y<^WvjW6rn82xqd`9w+(Ksu}8^R=8@-FoygB8#t*ei8GQ7lvB`D=ZN%YBij5Da^4n|M32o%zOp1`XXHKLT zDQ_58>>DwzpM%Bdry$MOQvLHS4Yl-ZD50LEtnfb|#tCRf_%kHpyjZ} zksaxVzk$y3t|(%3HFb4924lguWFGSZgYO6gvSRxwV=5*+L{c;~snY4fF>J?Aa;_uA zN_D|1T!Y_hM;iQ-z$q$t1AnSRnDbm#n|3sNu*4b6AjImB}X)2~et^EtM z$I?q5c7Ec-@>8EFK%c>SfIjnQlxoEY_{OmSwMdOdn#QEs;`fWrZ28};u zkVHMwClP<=RhD-z@7?{l%HxRR7WJS@C*fRX5q=sB*K5!jI*o6P)HTeAlEz|m)%Seh zoi<)fx<&uoSErLts~Q4XJ#ax9WP|GIn_>J>=oF_9nOeZsEF4L8MvU4lb$630O=?8~De-4Ay{D8cJjdyGn109f#4^%(pd&?iE2sZjMw@yCDik4Ob;;qg=s?NOVBxxc`+4ujGe z{TaxIT$zksF(`}Cdj@4Q`pTdjMjom2tZ*1B%esm)SSGRCNW)I+ zO!l7cqF93BZ1z{csGFG1sFYEOm@5HAAD|?ByL|!Y8wAu1`)eS?GR_rtr2#dwzZI@q z;G?IwNK#$@8Hi+;alY4qFu#kd865yR1auvH_{mi!l7Mbzd8|3vpi6<0#We9cYu?V9)5M#sxt=wr8}ufl zIk8CC%oRT|8pyJU_=V9JM)T13sSI_D&c}w4 z&^(}yVu8p|cc2$s>A4j=Dqry&2`~`Y{K(FoskSac4 zS(7Mc^aD_}Y!=*?BBmEjB0%uTOUE zMVdE>7a5IVbc=Y25xr!YhEcoOp?Qbc;?TTPY;$PdBVJ|nYH!MSpLpGoZyn|t@~1sK zBz7ROeg4IwP-F!D2-+@i3+Mo(rC1ht1N082e-7*b|NexZL=UkuAs~B*zk?QvZ<(q@ zN{>pUT(>6ENWBNtl~LxoB?TXh_Q=5PP+vjPfhtR7-h#=}UzlCc5lfo(rmu{akYJz?>xHblcrM=~v8`p-1-(v(RaF9$6Yt1}0> zu%=}W!!J?jlJ3Y{EG8^|m+1kfpE3QO>90(!ti?DYvGrXO7N=z`2F+xe%d~42d7%b1f11*<`0O`wf)h)a)!(C`RNpy9>q3Sr@sbn4d@OeoNj%?pU0?0x!EKEbi5g z=!u|GjA}=*O=?HpXS5^z2>3Dm4($&?vwz?aYzC1o6y4iX@9N*4>g|d49X&D4st#j4 z6Bbv4riq#k)Z*uMn1DO7CeT8Wlut2N=7+%1wNaN(e#77wiW~ChLPy8HJ^x0e-^;(v z(@R7OZow|-qJodW*;?TC7K(2Q0$%(Ab0Ou;VcG?>P^>CE7t(u>?js&!`V!L}pi+Fu z^i!r^GX1WQO8OI1(UH;*cO*@1?HfC-`GulerxmbY(P<^<`&rL}Uef7pL~>21cagpU z%$eOT2R*MFSzFRAOL@fcy*4F#IR2Jt@)hUk^yrkhW;`9!B+hfah`XIezJkD$*s*mss5GzvsMOZn3Uq>zoes@_7;MXS0i9}OuLbr1jW_5(U@y=l zgZ>3sf~YkpCt)wpY=e3ye2Dwyiwzo;@CndzjS%N9tnsUCvBo@at z-CrhFIM8p2y(NwU__HM`HR(fo+ufi+NykeYxkoxt(qt!cFLa`$TavoO^Cdl)loveSzWF3>VLDb=Hn6Uz*m zm6`x_jmbARwTtX0t}|#6{Ph#78PQyq2iYAq%2mgU=QZ+ul-f!CL2NPT^VA^Fc7wi$ z>_qX7K`Jc>^npPsX!#GbTO zYKr)R5v`QFM2+~K5ydh>)rd4cxgm6xn(FXgt!f=;x(bQztf_6z5Ftj|=1ei0(LuI3 zQ!KPmwW<>r+2|}aOI%~4>8f7b$cTF6E}R10!Dx%1c4!cf*a+X96K^>*=ZZbHtXj<# zAJ_=LpCdkYXf}$kY+1Ex6se_DDDp5}%@czeY47KYQ*BwbI$w;p(R4LmOmb*06t%Xj zS}hdyHkz)Q#5{*4J?Es)7WY5X*6>r$7}}_C^6IFa;866bK0zFfi|kE9kOj|rH#6`*`{#J&Yvyr?rpX!Jn*p5ZiUl*8|_y& z$57G<@V6$0+#})7i8iX+9kOj|t&PUP-(3#0UESkAyVd;;v>)dz`m-hJZ1{U5hTLKJ zbE1vvQHN}sdfZ0y;O|KX+OD2*pxtVN1MOFMcFCVDNlV~wV+^@h!JiXtR4+MX+tg+o z-2{JI9B8}R=0LmEYYwzuy%|GE_rTv@V#vK7{+wu|`l~~>P3?-Iq|M0pP7Jx z5zX8O_1N4kuCdV?v0FS~qi@t6vDrpHs&~asMq36+gCq0P`0Fe445HD|S9UXq`g~tWdO~b=uSoY;edTd1 zTPjwjuMz#_C`L=fiu5$=4{|aiJHAr5=Xfv#MtRd1> zN&dD78e_xdct&J%ji{0}HY&1Ck*jP}VvUeH8EqD?r|%M@rK=}dIVg8AN@uhgXfI@y zjI@U_a*~#@_p#E4Q#K)1im%cutDY_ttOm_5}X8pX}B)<)aag>t%$cB_lzOdIW2m&jQf`Kh-qle3MCM)5L9C!y4~ z;Wiu96>_ePwyEVZY7mX-tK>WzZCBUG^KGC67G$>ZTBxyZ<9Oy49I z+i0V@SzctLZR%FJ)F2w+YviRi+OF=9m)mH!x=UVRqy6e$xm+VZjktC4Y9pf&zD};R z(MI*4yv|13)Su+_CLfK>N8}%kjK<0%@@6BW-ukFqYY_F;N9FwnQEz=zKEg&n#AA)|W0_)9t=b&~a%eAeV6*%R^wgGlzIe1nnh^H0f*4x9M0tFc1&RW@?d-C!Ke z&Dh{T^D^qKr{pf54p&&VuWc9r#v>|&$qt>DhFLOgxUPED?0)wo@+eOK7FomGOeLQ$AwQ{*2AmE{PjgmdUoSS#QfR z2Bo&$X}u%qC*vqzMccjBZn;GxK6~0D|H4Su^&a`Yjj->LpV(-Pcvt?@Mn9^*NpU>c z)N$^W+ZgFNdB4m$fn~C;?N`=^vXqf-hYw{hM%v$pvcHYih!5pZ8*Nk{$p z`(iS9_(~o$h&+5Hzt%{Shp%M+KTx20Z~BcqlaVgNH*%_tPIY}F>oxLWguA|#+cXl- zWS;8!PNtqnRw&;ZaY*LcsL1+Wc4xF2_jn=K53;Y8`6%iiK|p5MtFax-u085 zWYFf!M%OQLv5o3ozsj{5!QTPbVYyo)AJvjn9~eZnB-N(|(Fw9r-xyS#y%p$ZgQjFZ zDJ-Q<;xhQ6kXb6hpi8s&;H|85gYL}U3)Ie_7qh=`xz&7w-pT$JXsJP8X8-8&s1FSK z4L|SbQT+#K56L+$w?_>zs30c*G{&IHoHVyrJ!sI-oaMr+o-pY2oJ)Y7GpH^n%k5Jy z8?-p5JvC{HuHHB31;_&GV}ssVaH2+~V zm$cjE&QRYPw5r|TfPOLP-gX;ATV)N=C0gHZ4N#&%bef&1G7NgH-5#KJ2EE&EFHn%t z7V#;pWT|?CzHOH-v($?Q9d7q2(D0$Lvf~_D(Z4>b$I2(}Y;}f>)`%QMKO3WETk)*? z4vlVAXHXukpIQG;f+|H+-F)-zfyE@=N7&_;tUZtwB5Q?J-4+0$OV$LOFu z+^#K9-(lo$i=a3=sA_|#4Ebsuql0o&N*7PQ+F%f^umx(XL0ePWdJ5DogJz|cc?#8g z23e_XJ)P8Nj4lH?y%IKh< zR{LVr&mcO(Emp%!K00A7R-+7}6V_riR%`OfY_U2=%fuV)@yap(5|0r3<%jK0^pvO- zTE=~;MBUy3y=d~S=uj+6)aM4>&M2FYD=+mu*KK_zMAqrP;K$~A~;{v_4WAgcM3R1u?t z+`u=~YNXNpIR7EfKy{iyhw>i>nxc`&DtH;_X*=I8yq!Xk(5|_-U_%_a zhZVf(v1LFz9cV(qd!E7SMYgiVPx*H;C$`K|RSxN7kU8W27T%P}>cn$inI!8`XH{ zs1NLXYeYnSuaPgI;~o)J|1zj8BllR2(^tSK$)Jjk8=#qC&;Um53_6ujXM?I4l`>i) z&hEGd`PPghn=8faj&rUE9y4rQK79MAr^56)9_Y}D0zp4x3AoMfo})iKQ?Yk^wI zNbdxi)CP@wG*X+?OGZXD*rawaS|XnA*vET;Dmaa-ED^7Ftne;Umor)^_9L>z>QzR% zc9*EXFw(WVL>(}QYWE`brHyL57b`g-7TGSmRpz(R8lW~d+Nds7?HK91p37AiTee1A zp?WjYed0aSk{PZR5u$HSu0gvMq9X+ zu2Tav;_-K#sy2xF*($Z1k*>2|2Ck*=j1)D(lLmj0+_+Nj2R zqdmrY1?G8gw$aZWo4mKgP?EdT5}>)ZhwFhZ)5zDS)2-gy)YS$J=(HB-21dFU+@_vo zMEk6JA@iLvnJ2os=y#xMekKz8SR%7JH76`SDk2Nw5Hyx2597`HT6C<(jZz>?^9TH8(O}$UmYQ+1O`_#EcMyu!pYQ90Viawwg8$_$<1L|UvkM=JQsGAs3X+QKnpzb%C zrGYMTo%*vu^z3?_+GNmuoj&odQ@b^i^hA1{N;r$^Q$M?2r?NHTXV>dgcShvlTh}^u z5~Ka{=}w2d52}#{WptioJ*27)n$-D__hEIGLHBn4&HISDP$R!pbh`DJT4B(bqDj`{ zYL!8^7G?ULR4*FzkD{(XpKB!hb?FQAok0(D8SeYD`q`j@uH$@9DLIMCuwSm~I^4Hj z`3&*}r~5XjR7RHy+AnQT9SowDenyosI>={T&#B{$jN0}&HC!Xyqi^*-uO=8o{pAG} zGKkuJqly?r?Y>c6$Vk5xu~98IGHUmY>PC$O?VdKO`-~>F`zH0I(WG|Yq+T+J+I^GS zt~Gi0v`M|EWoVVFeVf#;Mn}CkVeMl2zw1+e;NsG z^QjiH7mQ5X%;s4?X0t#ev9~wHImVtb$>v0jjK4=($euPb?T@~?u+LAlE}v+-K#VH9 z1KKieiO!|O8Nht4@1*_Ple8b}e4BumyM;<5&M2m1n14Fcsi4Yuq;$-?Q%7rRx`=fy zX1bi|(_z0L=@DG_g3koy$0K z?eWNXT1Ms6{P*!|sk21?TbwLBx0QmZ68W6&#_8@yrAdmm1GR*f(sSgN9IZoqi#1(F z^LH=*C)U_3w4?5^Qq1Etag-w+8^8a)eg7vt$JrZy_u?FV#~N$@U#l_dIZ9B^v3Q+OBZHW%8a$JJmS&~BcUcCpnEQ2`5 z>chH+J4cZ2)&IWdYkfU-w7!!bJu1oje~KYq14_`lNK#w?s>Bjb>z$sax(;<(@0!|I zlD=~rU+On@V>BOnR_tRQ(w6rDv9@cS|H*TS&{<&;_5mTMk-gV5{*K;f-8uQ{T z*QYGafk!2DT9@uv9{>G_{-z_9&KdcCFP?uNL(e|srCTS8xdK!Q=P1zk%g#PV=~yp4 zGTpKVUc%OH;2s#a;LJ-iIqu89dkAH!o5dSR}9mP`oEynkY7K_gKE5Y}S%ka(ra$GCK)A+j&-xPik-^kg9zar6F z?7(*{i^Lzq*P=?a5vPbu{N>`WJs$Do;IBPAwa33WUxe?}kC4^4o+)Z^q*f~@<8K=N zLipy&4E#>+O#FJoOyrpf{W@5yLqxOiU87m>J`2AuGYkB4;q6@5I2W>BVp8gG&oa>0 zz170k`6tj#Dc6Hqsg(Yqv&UC0DpONHPe>*H+WZbkugkB%A>O8xL7-bxe)3MjiPZ9;W-5ehRu*e8co7(4VDL^i0SP zdJ29FnbMDn^3ol6i-6K;%xUC!8cn)7^+taq$8!O53YjkDQY__?F6DA9XZ|YYuVPLi zY_1XAm<~iKy2wI)XJDY96TB)x=W#t)+K;_&6bWVCz($crnbTO&g>_0S{0aujyHRbc=t-Q4UC{p& z_VZWy{p7@rUlU|=lWsfBK zWkdG`pbNTRl(S9H$4 zUu{ZRhrC}QZ;d+CeLJY=u@gFUZo6MqroNl_sj2P!9tE&TeWp;B^w z$BBh&m6b{TtZn6elLlHt zDo;!rh_deziR_)|sjxFC^|Yi1c}&%)!|ias&%N;p9&67sf1o@ewa7XHvEla+IPVb7 z^*T#;imMBL^1jZwYB>I#(D}quXT4LIk(|MCW^gY2asi&zEU<`D&o4-B$9$rvCKZYw zDhrZ7XU^w>YWQ;=`=7G~;-8xIIlUT z#U*K;Nt9&GC24NSz)AXW&k)YL648!MBzjunGWk?b8Vd({-k5wpICp|3^cvxP6zMf$ zrR>F=`VUErJxRbbx7H0_37O$`lF2jty#M6VHXe`6Ly#%v8JzH5OXap_844EgFVfG^qwZ$?)PeOWd z%k~iTtfPmZXB_>|njSTR+of94+&%<;ulM@!D=(|158r^i8FYlW9dwMiTP9=WyGi-P z6D)n2rO&eTMM!<eTZ&E!SxR}#-GOhCxXOow72Kzd>Z%MKO zl(v$X!}Q{$@$Q@DolG||{fMcRO#Dtv2Q!_<^kSx+@%`GHWi8XqOgpC$=Pss0+E98a z(*sP0q!VW|)7lKyWa?^5=~|`-m@ds^O{Sf*D7}=aE1PpM{UEzUH3bfETI5i=0QB0x zkQ~-w+Bui)Fdfp4`Al8yDZP~GW~Q|rSd*#9XKPG5=M#Sb($@y=;`9NgOACm9fa#Dz z&db!*keC%k%)#r4_8nv~zb#FJ>XiGec%lLPYt zZ4=89PfDyxd@ON);%AB3Nhc@GOj?$-I%#*3FF7x{OY*?vg~^vEuSs(WPMMw(PFb3=B4u^TqbYBtv`NiORoH!7*wwq}S2FOQ7r(rgh+n=) z!Y@^%B9(#v+Vb8z7dz!b?7cfpm82F&d02_5W9ejun%8~ zefTBfZ2TI*Ir#mgsra_*ba6HI-`61Lwb*mtgnjmHuyDV?v$4RnpuGamgZ2+>0*!Eb zM#5J}U%+%#!gok-OK?g2ep+G{=pd#SBvP);N%U_fzsmG)NyIsrG#H$(lPH%=9*(q+ zX?`+ku1ua{(>5s=Bb~>zbINk0%bBiBCC$~T6vG`%A4CGStObR+XSrImvp zWZEN*a@8{ZvJK_^7t@4vO6M>QGChvzE$Mld5Np$^)c+Ozei_4{e+tvHGDaZ%-^=w- z>Qv;_RF_E8hf)_YpQw(iN7^RDHY2mQONcp{Cx9M{|4`~VkZOIcquX?1F15&vT&jV^ zxx?K;T$ei%^!D8GpzCta09~Iu8T2O?^@MG?A*BDtxjtj+$~zaFw7j{X?efkC?UqM& z>ho@A&OM+%=Dh%#+K#-;aDRxjyFEp&`$Kwr;;(2=k=)4qd)l}22+^+t@pajCTRU6! z?=1b%q2rWx&8NsG=2IljI=Pbhf6iY4`_C|K*^90P|L9(16|4t8vET*JPyt1*>4J_F z;e|{uWxBE>NpE9%H`520I&If)?QSV-(I7azHy{-cy+M+Jkn%FG}Ls zFXlppnXnURDI^NBVOLnI09E)!$Znv=V~$jq1h7f$9$^rrr3DUSH)@2|0{edeEXc}PWV*f7jYKoub6F>_!oRC zaTvcNp~P?SjEPBxK-1+6&-Uzx<-VFW?@>Zl*GrdLPJ3Qi6 zP$h1YcObn6RAE1SC(?H?y;I%|&RV8-$$P=S8x(ab?+3kCt^>VKJ_P>#ph`R-9|m0~ z9|h+@rhk%;gYyt5PGseiNI%T|F3h*RH#`tWUgg_EP7Km+O*&;<1_&?NO6XfnQ2uS5#IORq#5e1{%=NqIptl^--0 z-<(J5t0d6T_})DJwMUf(I##8Fj#F(x$Ez&RYJ4AFiL+H6XhgLKZC3f97pg+g#rW1c zdIi4ij$Q$(#0q@ZU5TqyH_)q93FtNWhPx8istVBS@cnj$w?TV?-k^Ge{!twVdLvF4 zl(KF0oLvWRpKsn66oD(AUKbx!AL*M^ieew>BrQ`ppUC6&?nTXpnp~)L7!5i zL7!G*L7!9OL7!Kr$&MIb2SrDWtWQ9d{0FED_xPuXzgQObH<@lX#`7R|66lF;Kj;8= z0%(7?7j%d_1$3A@4Rp9W9rP4;ThI~iEYMNz9MCcDJkW9O_Mp}7eC(4ha2H}uY=fO# zN6cN7n4t#2-$ab|S=fJF>tEx4%>Rskvp*PEo;W#aLDG_>=aaT1ZBG)(rOCaLk53+* zT$?;Qd2#YhDR-sZoAPwZXDJD(d8vh|uEi(@RufF=e7z69GD#=T@ekSqbNrFKl}GUo zT4UQDt@qMVyn|LE&hN3ZU|ywNXm9*Yz|2;MnmZSzsYj`1tZ^x*L9IpKy-L!(2-C|=a6{a5 zb)=>tTGt|yF`-EH%t)xFHm(KM>7l9PLUZS#Yz}rfTpx0%4W1Wm49{+*2C4?ntZA4L z;_$0$A~Qmb&PpkF1S_hJ0Oy6L)ilEX`yH|91-Ii zYZ_{6BDF1SObA69L-WPSk(xO(M}=!cLNf-3>yg9Re4MMHre3fpIv!D0*Ud(WYi7?O zFru#E+)(X^x~NXFtvGLJ!@Sv{2sNCj4$pz{8FkZY>c@v8jRWgvgsEJ0jdeBkbqi~z z)+79Jp=k@I)$26Ejx_4zi13UVp~$eBX|S`PMRX)V`-!Td^BY4AwFsnz>cFYd#t5>t zE_D{u7%JCJ>OxTw%iGf8;BZ3}?Hh|_NL|g0hH$j8Zd$aZ-l%!?_29(x@T>lzn%ON? z(95QUTC&ieS~99M6eB|Ch3bdZ)uaE$%7_NxP>jY=ksMhk!i0pH6jjKJ=5IuInS+i% z#U<&{+?XO7W7@e+9nEMVZefGvQS`ldxrL*^!Y--M@pA!9dgy!_qtv}8&Zd~A*UgxR zJ_N>)P&5?b{(?d{o3DjdIkIsP;~9^wY`1d@6I8kJ-01rCA8*Of zoRElDYE?sYj?NdGo?zEZa+oSZG^iTTL+4S)9*j|1S6f3jK)d^y%v8?d{ zgkgxe34Sm;Hpax_w1#P|rDJBQ#)l&3)lCZxZJ_D5*6y+*CP1B^S63T~44vN!%U*ZJ z)YL_$R0?!8Gk6BoL_@Vh>Ubd4L>3IJt(k+i7IDtdhQ`Q(_>vJ*Kr3L5A3b#z#!_54 zCOukzc63@eQeQV!j9(CK49yntwRvPsB#PB?&;kUd?Fq^*Oj_$>+Y%e@QBlP!8|Jwf z3)8Az(|Ey(I~P?$>Y{VPQC_he4ZtBdO_rY=YQQ8m4YNkHaY_%^n>(+DClvy5M=Y{k z0gaqjkG90lYDlO)G=nCJBiln%537q{A+8=Dnig)rF=D*7oavT9$C?98b!uqAgqr$! zA=7fPl45d#`$n4E%4wz&*s4snH#8#J0>$|}DPX>)t|ZP4E#PdXYjGOxL=01UT5N6{ z7~Ac!3G!z5!Iq+9u;)cXdRNDD*mNwj=&|z`2=JXfKr?G)LHTGOV& zwkn_~A!yaF$<(Th@(pY)1j^K^pjG$Ba^0$hy7)dA1Az+@)+VOP@ zLtB?X1<-Kf|=Yccrak&Bjrw6ee9lLI2OiwY`>}hkx{#cIR&jU^#;4D zA+}vMyKK9xY)IC6GD7e z6nZ_ZYM378cr+wyn6{@yupAl=nTzQj5$I9MN0pf}j|(-wvNQj-{!P z18Zktyf;kaExaRL*MRATZWY4w8fSzlfuRxGD>a%iU{uJ?=$IM-qX*9pM4ez8v6As5* z5u6zbH(;u&6vQOrA5tAEmrz9rNiGO#59IRBG`*CZK1=Qn9?w8t?C8S7D~)%p`^{}K(v(X$5eFX44zq6 zZ;lwmktJ#oeO1&MX;rjEOz4IbRm^k@I^EUN{k~|R`i(a)t#OSQ>9IW%#j5X{sW<8r z@wi#gJVLL38nQu7ng(_p7>J?gq5n}1Xz9eTI?N-q-s@d09;g_}P}-yOa>%D-_2^u2 z&nM#_Bdn=M!^ch)C>(um)++P=YVYb}*Cks$n z1ctaiEJFHE@K^ME%H=|xpUO^3J<60Fs?0`0a$0IQ_p)H1+#F@e@g^J^gKtEAIg^I$ zl@1aBQ5*5mEhKV95%-y@bUU9+lglW0$+?_EGr{FcYD9a>;_VXHUMZ^C+T!vQ@;v$>i*!jw=?%e9s zGL@OxYMDl*__!Ra+$8dh1GU?*s~$(v@WDEk9aS+{EnZI(8_ObD*t|RaP8023Xrp=d ztuA+W;xd!YyF>$OBJo6p_(!SZWleOk^9MD~ZzC-dznPjH>TpMukl@T7G0+-tp2I^Q zF0dp+x2toe()wF5+06b8SVx*g}4*dF~P28fzT{6Nnm$q{i{4R!~)zt4INXk z2y1nD$FpFU`y#ApKc*z>qHUboTYFJLsHo=D%9FfsEP+Y;h|P2PI8!_hs&4B zjrfR`_>`xXC}+P*wPD@S>*#x__Se%kmJ;U)I&rbwXu!FcD581#hG5Ww9Mx{&35gEC zuA6kqN-Yu+9CKBRD7PI&?NIEz9f&1_8AFT^z>l;TckGm0Tif<_ zRR-?ZKgQ7}yVwy&rsP1H+LEn(kd%bZn>pm1g>Z}ROGjo>oyM5&L96s}t`j%tovDN& z<1N@ZlgycTTSy8Seh485oh87KbfZ8hN_VG)cI=(7ws;{tXzheW(Ly*ZV5t7Y5K6MD zd!%MYLL*$@x2fxcXr22cE?iJ>k^Ta1&cL8X4%=zJ)<#OzL8Xd+6QNUrK}=L53uH*A zZ)j}VYRGv}IkT!RHIu9~>BIp_CRtxj#m-~iT#yRK$lBz6^R7j#&3Kk%L}0YkoHjHX z=_P>qex%$~yVU0O{ACyu6?CXEA%qaNk%TP_Bv z>rsY!){WT>OtBqq)MuoAVKHMr;0n7s4A+QwXrLvV<8?R+gjB(T`PWkEhGCf5rWF#z z14z8cTxioYf5&jznSuMNTA7if6EJC!9Q5N{JgQLO%`|*&F#0fWl@PHcJO#cI#()&G z5vkLZ)N8U027$PG71u$8WY#Ns)kws`GO5Hy5tc^~_H0(BDiD*g65Jm12dB%JN5zD5 zG;QLMgo?J_ZO=#9tMoVpXi21{hSNZPca|w2u@T9k%TSwQ>@uzlqsVmciBBu>8l?Rk(}`u63JhGM&+ArY%eMBGZK>F0QnD8&&X-e{ zB;Zz&=mC(qq<~*j+7gZ}(=1Rk#G#2LuRO$u1Y9CmCd3Y@vnpWAl;+1O=Tf&hT@^QO z+;ZfxBK91{_8aXv1~23yz>-i)RxlvdsGOTl-2-)KVFgU$g4aTnI7ZBtYV!*#;A5R= zROF1iuyVYDo3%-?6?o??l+#un7c=E#i4b0WhCw1Mx1`CzV`D^Jt&}>i+E!>|*K4%3 zFH0&+T3HN2bhC1{Qib)E)W)fkVd-27S6r@v+%R!ennN?QO*x~7X*Z#qSBEC#nu(tI zQR|}JNFoNwqiuX=G)7=*JcQe03a+Tc7h7T2&cF=jy;eHKaWawc)p1F_E0iRtS;J`u?o`GT9hsrA z3?>8gVgqe{=4g`I5*Y?gyA|AUf~`Mq;GV7^{=wyU7=+6?fOf4UMnYPx435GW`c)X&td%bbQjuK))QT58A%${^wLvKM0f8}+ z#eHZ*@~!)dHODPWn3kZHL~nlitp=q3hu~3Gd4F1;S6z{vN1r&8*aAI;dQWD5A7`+LtW;{CG*LJe>|Z?W3zRO^`{oes!l2oPUMmK_=m7{_Y>y+6+Ef+P1R_cf zLbNg4vz=rR7L3C^WnQG0iZX zpn^MwcT4C@Ovag5E?_b)9w6At2sJkS1Yd~zkyK-$+2>*f_nbX*W(Rje38l&D7GZ|e zTN-%JT6}R-gQ}Bw4_Or7k#aNkQitX~#`{V&Q$PEtsW+#=-`K5bJ-`);nnpsP;&6#Y zug0W`;}!-2Hydvt>R{5zlYO>fXYWJsGmDQF*-kYjaRI@)*7#F;a8(hgQjVR##gcAq)Z#KkAGPi~m%bS(h9 zJypGXVLzo*^_>>6@~09)twYf^n&CqgxUDd9QB!yUrrZS05^r;3pdgD&r?WzNDz`Gk zvYJIm*MNSx6mAz1yi^98kK+);Iu!tH%cWVRE;;V43A9`p2@}cZG+{?6H?X$i0i+ya zh?zLwn6p^g8y_pz&e7Fc=iKV8Dr!Jm>{ue3#RATkQ>>jZ4VV-nW!(Cy2k8t0Cz+M@ zNXNE>6r6xop$w?qAO{3lTeHqZb{|YTh|A$>2{r+mWAjhnAweKZn&Xs{(mJ9{QhBf^ z(E@lMZPi7*r(4DQdu606c;jsnsmsRTt6cMV?+v9l9|S~*ciyVV4dd?=@^i>Rv*YbJ zY;h=Spv4f%m^W+Z&`%9eGpLzFzJ}jR_(Fr0m>a)nuHd^5kKt|M0B<~BF*}jI8R;u{ ztMD=7?YwsVT>`lakZiG=EjB70&d>6hGN6$0{kTxs*No}+ zq446&QoLBIMS%8~G3GL8ZeoTe$>%| z`3bx;xfm})ywHhHovv+{7=wQ%!_B?1+#)TM0JB$Xlv6AJp*=ye~wQ>3Q#CkGc{2QDbf z^m3gcd>KoEN-Nn&$1I>;~|1$|*AB z3pI|e78OQZ-G%^Dl(`Z)W{MdXNgzE#IJb6A>j-LfwN->ivV(o$5c;9kq|WGUL9Q=s z!_qV_xR+9xFQIpcLhdfSS$-?_M$QiB!R$J0Q`hE7yHI!1V)`4vL5(yjb2*(_ez#F`ntL^V5{ORlWRg=Dr{_#wqxRQ-F_J2W> zdz0izo6Pq0N2V|EJpA+qhRi9%2(UweKz88q{d9=&}F3;9Q z>3Bbiiaagy}V&UoQO8 zL5Qx~8QKk|V_4?S#8%+*bu5`;9L??A9x-=>5>DA5d( zfg}sxAm6u2@-6bc_1!|>Hu+)gyFfIjgPAAm3;w+S*b2}k37OP_KerN-+=?;1idC7Z?y$f6 zN!3-G*{19~tzv#iBpFYv`E~L-k3yl?R!eRmT7nvlA){A{qBFLZ- zGSm#wCcsClh0bWT5VBhOSxqKx5E+g(KtodHp+KqM01#x7$zeDBQ6Mk@XC~T0nZ^%R zTgE>C=eyOnQMY+@aAO>c$3QL%Z@WI%gB{6FU$BhQFfzY zz_Y6LY7W`ftNvrs>oG34=#(JaL}c@#j9&9w-vNCdR$1#cLNtl+O&w@cP)1D_81(f$ ziY`zzA-WlVzEA)o&=7eDQ(*w5Jx~nXtVFoMyQYwI3<+Y3n2?44EEcS%yVZeS$juGh z^!(^)8OPH-ee1FDt@ntHn<&TyL-Ft+aG7{-g{+|%505&Z>OgiRVdV(b4H-UyJxBIk zk@pc!ck6A=XzOjznIR3>s4<>QVI9Y(VKcGpGlY#Xnzgp!)OLN@s(7FBPOh?aAVoq|a=MMTD(MV_98zs^DBYZN> zWLw5O4Xx3~T@m>Q#t!T>S$-kOGnYR2=h+=U`n$LO@wW#b{n59c|JrMnzdp73nT4YE*Kgi^Ak->{+ZAITJ*v36YrkeddHgC zTY6vm+MRE0f9H3${p3#@x4ifKUuFK2r1wWFHhUxp^o(cL;1!PgC3*cGFKU=2YrMQ? zFfjbVK2OU@O$7tat&sWUE}zf!$fldm)3TBhTbG9g#*#cfyOfnn2qp($?A-aD9PF7~ zwwUp6^0#Jl*!EZCdh^9RvwgV?VS4$K&zTJE02mEellhgoUcZzt5-JDzhskwQ5BB^1 zT;6T=uq;p@fTMY)@(^qYm4PsC?==~&2B0hV;?a6(CHJ%bXm5XXH+bVeCZ#|86uuOQ z*UtlasV%^}Crvu~%vR3?NpZcQ^%_V^plqp&k5hFt85qyKCjSW}{Rc3`Xb9Rx1;5G>+r;XzlK^ zcid6hGqLCPoqKofF7LQ=Z|g~K{N$H^K1%4-Tvj4_)la$(-{8bNwBF2{o`RT0GI1w! zG&hRS$vF?EuA$L`CnghG5XqAt)DDtCc*ggMBL$!*?zak7Gzk-EU6qV@jh5F>S*dINQR9=3u?XAO#qMl9iI*yR*yG#uM3`P@1jjR29k!DLr@H<(qJatE!Z$E(>~CZFg0MEl4eY~di8 zz2X=9=0IVfr$72z5e96+t8-aA2hhi z8EBs$XJJucjx&Xx9`4i-N(g6R6&S@{DHoW|e1V|3To(BP&qzIxpbQTW24*~!aO+v- z&{vO&P0y-aUmnOG?-}UHla|X4^S52%b(eU zdD9`lM?Hf0nv&V+nZZ<#0d9Z<$14+!dRU)o21EBB8V?Th+fbM4jq?F?HxwUj1$=pNhRK`Xbe}Y$9a85 z_L8!G*N_nZz10N!6VPs|%YiNjx*Yh#a=^pCUSP~7V_NMbiatd!YhgLzj^gjBz%y6r z!nA*`_TV47GY^_Ed?oimd~y2$q(<;n?fa1*!SgWE{PSA&-#*r_-+Jcz8`y#V-Yc~@ z4dRyv!StVDWIXgruebBeGkQYLJO6BvRvItG`}~MMB#|KjFfU|Bc?<(h^gwBJXJJo+ z0<#0-*8g@R6bT+63bPGu8R?n9e;Q4}&WDo3nHj|OjPV2*?OA+ZS0h^izA?_I62prD z+Gxav0mUSq%KrAtm(~>z!21iLPW4!F0;lwHMEPxm9e$47PQioBaw*W2){CSk!hI(?!;G6FJe!S!D zgEB^3>IGy?>URnx|4ob`vj@*zw%vY6BEEGFD2;CMRz)>6`o(D;0#_M_!oOUBugH72 zr-2KJ(vn=91^+nubC^L!O45Amzw{iJwCN8JlFBKcAcDGitl&AX7cdm{LWDJ zwc6`U%h0=zE(f|C=yIUTfi4HS9O!bO%YiNjx*YgKbHKwX!YuInd=mmjhi6bUD!FK$inu4*VZD@IPn2wm1L) literal 0 HcmV?d00001 diff --git a/lib/NHibernate20/net/4.0/Castle.Core.xml b/lib/NHibernate20/net/4.0/Castle.Core.xml new file mode 100644 index 00000000..51e5d1ec --- /dev/null +++ b/lib/NHibernate20/net/4.0/Castle.Core.xml @@ -0,0 +1,3176 @@ + + + + Castle.Core + + + + + This attribute is usefull only when you want to register all components + on an assembly as a batch process. + By doing so, the batch register will look + for this attribute to distinguish components from other classes. + + + + + Base for Attributes that want to express lifestyle + chosen by the component. + + + + + Initializes a new instance of the class. + + The type. + + + + Gets or sets the lifestyle. + + The lifestyle. + + + + Initializes a new instance of the class. + + The key. + + + + Initializes a new instance of the class. + + The key. + The service. + + + + Initializes a new instance of the class. + + The key. + The service. + The lifestyle. + + + + Gets the service. + + The service. + + + + Gets the key. + + The key. + + + + Associates a custom component with a component + + + + + Initializes a new instance of the class. + + Type of the component activator. + + + + Gets the type of the component activator. + + The type of the component activator. + + + + Specifies the proxying behavior for a component. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether the generated + interface proxy should inherit from . + + + + + Determines if the component requires a single interface proxy. + + true if the component requires a single interface proxy. + + + + Gets or sets the additional interfaces used during proxy generation. + + + + + Marks as property to be skipped and not be wired + by the IoC container + + + + + Used to declare that a component wants interceptors acting on it. + + + + + Constructs the InterceptorAttribute pointing to + a key to a interceptor + + + + + + Constructs the InterceptorAttribute pointing to + a service + + + + + + Indicates that the target components wants a + singleton lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + transient lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + per thread lifestyle. + + + + + Initializes a new instance of the class. + + + + + Indicates that the target components wants a + per web request lifestyle. + + + + + Indicates that the target components wants a + pooled lifestyle. + + + + + Initializes a new instance of the class + using the default initial pool size (5) and the max pool size (15). + + + + + Initializes a new instance of the class. + + Initial size of the pool. + Max pool size. + + + + Gets the initial size of the pool. + + The initial size of the pool. + + + + Gets the maximum pool size. + + The size of the max pool. + + + + Indicates that the target components wants a + custom lifestyle. + + + + + Initializes a new instance of the class. + + The lifestyle handler. + + + + Gets the type of the lifestyle handler. + + The type of the lifestyle handler. + + + + New interface that is going to be used by DynamicProxy 2 + + + + + New interface that is going to be used by DynamicProxy 2 + + + + + Returns the concrete instantiation of , with any generic parameters bound to real types. + + The concrete instantiation of , or if not a generic method. + Can be slower than calling . + + + + Returns the concrete instantiation of , with any generic parameters bound to real types. + + The concrete instantiation of , or if not a generic method. + Can be slower than calling . + + + + + + + + + + The generic arguments of the method, or null if not a generic method. + + + + + + + + + + For interface proxies, this will point to the + on the target class + + + + + Interceptors might implement this to receive the + ComponentModel on behalf of the component where the + interceptor is acting. + + + + + Get the proxy target (note that null is a valid target!) + + + + + + Gets the interceptors for the proxy + + + + + + Abstract representation of a vertex. + + + + + The nodes that dependes on this node + + + + + The nodes that this node depends + + + + + The node has not been visited yet + + + + + This node is in the process of being visited + + + + + This now was visited + + + + + Represents a collection of objects + which are guaranted to be unique + and holds a color for them + + + + + Holds a timestamp (integer) + for a given item + + + + + Returns the node at the specified index. + + The lookup index. + The node at the specified index. + + If the specified is greater than the + number of objects within the list. + + + + + Validates the specified index. + + The lookup index. + + If the index is invalid. + + + + + Lifecycle interface. If implemented by a component, + the method Initialized will be invoked by the container + before making the component available to the external world. + + + + + Implementors should perform any initialization logic. + + + + + Only called for components that + belongs to a pool when the component + comes back to the pool. + + + + + Implementors should perform any + initialization/clean up. + + + + + Interface for components that wish to be started by the container + + + + + Starts this instance. + + + + + Stops this instance. + + + + + Provides a factory that can produce either or + classes. + + + + + Manages the instantiation of s. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new extended logger, getting the logger name from the specified type. + + + + + Creates a new extended logger. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Creates a new logger, getting the logger name from the specified type. + + + + + Creates a new logger. + + + + + Gets the configuration file. + + i.e. log4net.config + + + + + Gets the configuration file. + + i.e. log4net.config + + + + + Summary description for ConsoleFactory. + + + + + NullLogFactory used when logging is turned off. + + + + + Creates an instance of ILogger with the specified name. + + Name. + + + + + Creates an instance of ILogger with the specified name and LoggerLevel. + + Name. + Level. + + + + + Creates outputing + to files. The name of the file is derived from the log name + plus the 'log' extension. + + + + + Used to create the TraceLogger implementation of ILogger interface. See . + + + + + The Logger sending everything to the standard output streams. + This is mainly for the cases when you have a utility that + does not have a logger to supply. + + + + + The Level Filtered Logger class. This is a base clase which + provides a LogLevel attribute and reroutes all functions into + one Log method. + + + + + Manages logging. + + + This is a facade for the different logging subsystems. + It offers a simplified interface that follows IOC patterns + and a simplified priority/level/severity abstraction. + + + + + Logs a debug message. + + The message to log + + + + Logs a debug message. + + The exception to log + The message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The message to log + + + + Logs an info message. + + The exception to log + The message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The message to log + + + + Logs a warn message. + + The exception to log + The message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The message to log + + + + Logs an error message. + + The exception to log + The message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The message to log + + + + Logs a fatal message. + + The exception to log + The message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal error message. + + The Message + + + + Logs a fatal error message. + + The Message + The Exception + + + + Logs a fatal error message. + + Message format + Array of objects to write using format + + + + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + + The Subname of this logger. + The New ILogger instance. + If the name has an empty element name. + + + + Determines if messages of priority "debug" will be logged. + + True if "debug" messages will be logged. + + + + Determines if messages of priority "info" will be logged. + + True if "info" messages will be logged. + + + + Determines if messages of priority "warn" will be logged. + + True if "warn" messages will be logged. + + + + Determines if messages of priority "error" will be logged. + + True if "error" messages will be logged. + + + + Determines if messages of priority "fatal" will be logged. + + True if "fatal" messages will be logged. + + + + Determines if messages of priority "fatalError" will be logged. + + True if "fatalError" messages will be logged. + + + + Creates a new LevelFilteredLogger. + + + + + Keep the instance alive in a remoting scenario + + + + + + Logs a debug message. + + The message to log + + + + Logs a debug message. + + The exception to log + The message to log + + + + Logs a debug message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a debug message. + + Message format + Array of objects to write using format + + + + Logs an info message. + + The message to log + + + + Logs an info message. + + The exception to log + The message to log + + + + Logs an info message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an info message. + + Message format + Array of objects to write using format + + + + Logs a warn message. + + The message to log + + + + Logs a warn message. + + The exception to log + The message to log + + + + Logs a warn message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a warn message. + + Message format + Array of objects to write using format + + + + Logs an error message. + + The message to log + + + + Logs an error message. + + The exception to log + The message to log + + + + Logs an error message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs an error message. + + Message format + Array of objects to write using format + + + + Logs a fatal message. + + The message to log + + + + Logs a fatal message. + + The exception to log + The message to log + + + + Logs a fatal message. + + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + The exception to log + The format provider to use + Format string for the message to log + Format arguments for the message to log + + + + Logs a fatal message. + + Message format + Array of objects to write using format + + + + Logs a fatal error message. + + The Message + + + + Logs a fatal error message. + + The Message + The Exception + + + + Logs a fatal error message. + + Message format + Array of objects to write using format + + + + Implementors output the log content by implementing this method only. + Note that exception can be null + + + + + + + + + The LoggerLevel that this logger + will be using. Defaults to LoggerLevel.Off + + + + + The name that this logger will be using. + Defaults to String.Empty + + + + + Determines if messages of priority "debug" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "info" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "warn" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "error" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "fatal" will be logged. + + true if log level flags include the bit + + + + Determines if messages of priority "fatal" will be logged. + + true if log level flags include the bit + + + + Creates a new ConsoleLogger with the Level + set to LoggerLevel.Debug and the Name + set to String.Empty. + + + + + Creates a new ConsoleLogger with the Name + set to String.Empty. + + The logs Level. + + + + Creates a new ConsoleLogger with the Level + set to LoggerLevel.Debug. + + The logs Name. + + + + Creates a new ConsoleLogger. + + The logs Name. + The logs Level. + + + + A Common method to log. + + The level of logging + The name of the logger + The Message + The Exception + + + + Returns a new ConsoleLogger with the name + added after this loggers name, with a dot in between. + + The added hierarchical name. + A new ConsoleLogger. + + + + The Logger using standart Diagnostics namespace. + + + + + Creates a logger based on . + + + + + + Creates a logger based on . + + + + + + + Creates a logger based on . + + + + + + + + The Null Logger class. This is useful for implementations where you need + to provide a logger to a utility class, but do not want any output from it. + It also helps when you have a utility that does not have a logger to supply. + + + + + Provides an interface that supports and + allows the storage and retrieval of Contexts. These are supported in + both log4net and NLog. + + + + + Exposes the Global Context of the extended logger. + + + + + Exposes the Thread Context of the extended logger. + + + + + Exposes the Thread Stack of the extended logger. + + + + + Creates a new NullLogger. + + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + Ignored + Ignored + + + + No-op. + + Ignored + + + + No-op. + + Ignored + Ignored + + + + No-op. + + Ignored + Ignored + + + + Returns this NullLogger. + + Ignored + This ILogger instance. + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + No-op. + + false + + + + Returns empty context properties. + + + + + Returns empty context properties. + + + + + Returns empty context stacks. + + + + + Interface for Context Properties implementations + + + + This interface defines a basic property get set accessor. + + + Based on the ContextPropertiesBase of log4net, by Nicko Cadell. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + The Stream Logger class. This class can stream log information + to any stream, it is suitable for storing a log file to disk, + or to a MemoryStream for testing your components. + + + This logger is not thread safe. + + + + + Creates a new StreamLogger with default encoding + and buffer size. Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + + + Creates a new StreamLogger with default buffer size. + Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + The encoding that will be used for this stream. + + + + + + Creates a new StreamLogger. + Initial Level is set to Debug. + + + The name of the log. + + + The stream that will be used for logging, + seeking while the logger is alive + + + The encoding that will be used for this stream. + + + + The buffer size that will be used for this stream. + + + + + + Creates a new StreamLogger with + Debug as default Level. + + The name of the log. + The StreamWriter the log will write to. + + + + The TraceLogger sends all logging to the System.Diagnostics.TraceSource + built into the .net framework. + + + Logging can be configured in the system.diagnostics configuration + section. + + If logger doesn't find a source name with a full match it will + use source names which match the namespace partially. For example you can + configure from all castle components by adding a source name with the + name "Castle". + + If no portion of the namespace matches the source named "Default" will + be used. + + + + + Build a new trace logger based on the named TraceSource + + The name used to locate the best TraceSource. In most cases comes from the using type's fullname. + + + + Build a new trace logger based on the named TraceSource + + The name used to locate the best TraceSource. In most cases comes from the using type's fullname. + The default logging level at which this source should write messages. In almost all cases this + default value will be overridden in the config file. + + + + Create a new child logger. + The name of the child logger is [current-loggers-name].[passed-in-name] + + The Subname of this logger. + The New ILogger instance. + + + + The WebLogger sends everything to the HttpContext.Trace + + + Trace must be enabled on the Asp.Net configuration file (web.config or machine.config) + + + + + Creates a new WebLogger with the priority set to DEBUG. + + + + + Creates a new WebLogger. + + The Log level typecode. + + + + Creates a new WebLogger. + + The Log name. + + + + Creates a new WebLogger. + + The Log name. + The Log level typecode. + + + + A Common method to log. + + The level of logging + The Log name. + The Message + The Exception + + + + Just returns this logger (WebLogger is not hierarchical). + + Ignored + This ILogger instance. + + + + Tries to get the current http context's trace context. + + The current http context's trace context or null if none is + available + + + + Supporting Logger levels. + + + + + Logging will be off + + + + + Fatal logging level + + + + + Error logging level + + + + + Warn logging level + + + + + Info logging level + + + + + Debug logging level + + + + + Pendent + + + + + Deserializes the specified node into an abstract representation of configuration. + + The node. + + + + + If a config value is an empty string we return null, this is to keep + backward compability with old code + + + + + This is an abstract implementation + that deals with methods that can be abstracted away + from underlying implementations. + + + AbstractConfiguration makes easier to implementers + to create a new version of + + + + + Summary description for IConfiguration. + + + is a interface encapsulating a configuration node + used to retrieve configuration values. + + + + + Gets the value of the node and converts it + into specified . + + The + + The Default value returned if the convertion fails. + + The Value converted into the specified type. + + + + Gets the name of the node. + + + The Name of the node. + + + + + Gets the value of the node. + + + The Value of the node. + + + + + Gets an of + elements containing all node children. + + The Collection of child nodes. + + + + Gets an of the configuration attributes. + + + + + Gets the value of the node and converts it + into specified . + + The + + The Default value returned if the convertion fails. + + The Value converted into the specified type. + + + + Gets the name of the . + + + The Name of the . + + + + + Gets the value of . + + + The Value of the . + + + + + Gets all child nodes. + + The of child nodes. + + + + Gets node attributes. + + + All attributes of the node. + + + + + A collection of objects. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Creates a new instance of ConfigurationCollection. + + + + + Adds an array of . + + The Array of to add. + + + + Summary description for MutableConfiguration. + + + + + Initializes a new instance of the class. + + The name. + + + + Enumeration used to mark the component's lifestyle. + + + + + No lifestyle specified. + + + + + Singleton components are instantiated once, and shared + between all clients. + + + + + Thread components have a unique instance per thread. + + + + + Transient components are created on demand. + + + + + Optimization of transient components that keeps + instance in a pool instead of always creating them. + + + + + Any other logic to create/release components. + + + + + PerWebRequest components are created once per Http Request + + + + + + + + + + Represents the collection of information and + meta information collected about a component. + + + + Name (key) of the component + + + Service exposed + + + Implementation for the service + + + Extended properties + + + Lifestyle for the component + + + Custom lifestyle, if any + + + Custom activator, if any + + + Dependencies the kernel must resolve + + + All available constructors + + + All potential properties that can be setted by the kernel + + + Steps of lifecycle + + + External parameters + + + Configuration node associated + + + Interceptors associated + + + /// Custom dependencies/// + + + + Constructs a ComponentModel + + + + + Requires the selected property dependencies. + + The property selector. + + + + Requires the property dependencies of type . + + The dependency type. + + + + Sets or returns the component key + + + + + Gets or sets the service exposed. + + The service. + + + + Gets or sets the component implementation. + + The implementation. + + + + Gets or sets a value indicating whether the component requires generic arguments. + + + true if generic arguments are required; otherwise, false. + + + + + Gets or sets the extended properties. + + The extended properties. + + + + Gets the constructors candidates. + + The constructors. + + + + Gets the properties set. + + The properties. + + + + Gets or sets the configuration. + + The configuration. + + + + Gets the lifecycle steps. + + The lifecycle steps. + + + + Gets or sets the lifestyle type. + + The type of the lifestyle. + + + + Gets or sets the strategy for + inspecting public properties + on the components + + + + + Gets or sets the custom lifestyle. + + The custom lifestyle. + + + + Gets or sets the custom component activator. + + The custom component activator. + + + + Gets the interceptors. + + The interceptors. + + + + Gets the parameter collection. + + The parameters. + + + + Dependencies are kept within constructors and + properties. Others dependencies must be + registered here, so the kernel (as a matter + of fact the handler) can check them + + + + + Gets the custom dependencies. + + The custom dependencies. + + + + Represents a constructor of the component + that the container can use to initialize it properly. + + + + + Initializes a new instance of the class. + + The constructor info. + The dependencies. + + + + Gets the ConstructorInfo (from reflection). + + The constructor. + + + + Gets the dependencies this constructor candidate exposes. + + The dependencies. + + + + Collection of + + + + + Gets the fewer arguments candidate. + + The fewer arguments candidate. + + + + Represents a dependency (other component or a + fixed value available through external configuration). + + + + + Initializes a new instance of the class. + + The type. + The dependency key. + Type of the target. + if set to true [is optional]. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Serves as a hash function for a particular type, suitable + for use in hashing algorithms and data structures like a hash table. + + + A hash code for the current . + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + if the specified is equal to the + current ; otherwise, . + + + + + Gets or sets the type of the dependency. + + The type of the dependency. + + + + Gets or sets the dependency key. + + The dependency key. + + + + Gets the type of the target. + + The type of the target. + + + + Gets or sets whether this dependency is optional. + + + true if this dependency is optional; otherwise, false. + + + + + Collection of . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The dependencies. + + + + Represents an reference to a Interceptor component. + + + + + Initializes a new instance of the class. + + The component key. + + + + Initializes a new instance of the class. + + Type of the service. + + + + Gets an for the component key. + + The component key. + The + + + + Gets an for the service. + + The service. + The + + + + Gets an for the service. + + The service type. + The + + + + Gets the type of the service. + + The type of the service. + + + + Gets the interceptor component key. + + The component key. + + + + Gets the type of the reference. + + The type of the reference. + + + + Collection of + + + + + Adds the specified interceptor. + + The interceptor. + + + + Adds the the specified interceptor as the first. + + The interceptor. + + + + Adds the the specified interceptor as the last. + + The interceptor. + + + + Inserts the specified interceptor at the specified index. + + The index. + The interceptor. + + + + When implemented by a class, copies the elements of + the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + is . + + is less than zero. + + + is multidimensional. + -or- + + is equal to or greater than the length of . + -or- + The number of elements in the source is greater than the available space from to the end of the destination . + + The type of the source cannot be cast automatically to the type of the destination . + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Adds the interceptor to the end of the interceptors list if it does not exist already. + + The interceptor reference. + + + + Gets a value indicating whether this instance has interceptors. + + + true if this instance has interceptors; otherwise, false. + + + + + Gets the number of + elements contained in the . + + + + + + Gets an object that + can be used to synchronize access to the . + + + + + + Gets a value + indicating whether access to the is synchronized + (thread-safe). + + + + + + Represents a collection of ordered lifecycle steps. + + + + + Initializes a new instance of the class. + + + + + Returns all steps for the commission phase + + + + + + Returns all steps for the decommission phase + + + + + + Adds a step to the commission or decomission phases. + + + + + + + Copies the elements of + the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + is . + + is less than zero. + + + is multidimensional. + -or- + + is equal to or greater than the length of . + -or- + The number of elements in the source is greater than the available space from to the end of the destination . + + The type of the source cannot be cast automatically to the type of the destination . + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets a value indicating whether this instance has commission steps. + + + true if this instance has commission steps; otherwise, false. + + + + + Gets a value indicating whether this instance has decommission steps. + + + true if this instance has decommission steps; otherwise, false. + + + + + Gets the number of + elements contained in the . + + + + + + Gets an object that + can be used to synchronize access to the . + + + + + + Gets a value + indicating whether access to the is synchronized + (thread-safe). + + + + + + Represents meta information associated with a method + (not yet defined) + + + + + Initializes a new instance of the class. + + The config node. + + + + Gets the config node. + + The config node. + + + + Collection of + + + + + Gets the method info2 model. + + The method info2 model. + + + + Represents a parameter. Usually the parameter + comes from the external world, ie, an external configuration. + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Gets the name. + + The name. + + + + Gets the value. + + The value. + + + + Gets the config value. + + The config value. + + + + Collection of + + + + + Initializes a new instance of the class. + + + + + Adds the specified name. + + The name. + The value. + + + + Adds the specified name. + + The name. + The config node. + + + + Determines whether this collection contains the specified key. + + The key. + + true if yes; otherwise, false. + + + + + Adds the specified key. + + + Not implemented + + The key. + The value. + + + + Clears this instance. + + + Not implemented + + + + + Removes the specified key. + + The key. + + Not implemented + + + + + Copy the content to the specified array + + target array + target index + + Not implemented + + + + + Returns an enumerator that can iterate through a collection. + + + An + that can be used to iterate through the collection. + + + + + Gets the keys. + + The keys. + + Not implemented + + + + + Gets the values. + + The values. + + Not implemented + + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + Gets a value indicating whether this instance is fixed size. + + + true if this instance is fixed size; otherwise, false. + + + + + Gets the with the specified key. + + + + + + Gets the count. + + The count. + + + + Gets the sync root. + + The sync root. + + + + Gets a value indicating whether this instance is synchronized. + + + true if this instance is synchronized; otherwise, false. + + + + + Represents a property and the respective dependency. + + + + + Initializes a new instance of the class. + + The property info. + The dependency. + + + + Gets the property. + + The property. + + + + Gets the dependency. + + The dependency. + + + + Collection of + + + + + Finds a PropertySet the by PropertyInfo. + + The info. + + + + + Represents a 'streamable' resource. Can + be a file, a resource in an assembly. + + + + + Returns a reader for the stream + + + It's up to the caller to dispose the reader. + + + + + + Returns a reader for the stream + + + It's up to the caller to dispose the reader. + + + + + + + Returns an instance of + created according to the relativePath + using itself as the root. + + + + + + + + + + Only valid for resources that + can be obtained through relative paths + + + + + + + + + + This returns a new stream instance each time it is called. + It is the responsability of the caller to dispose of this stream + + + + + + + + + + Depicts the contract for resource factories. + + + + + Used to check whether the resource factory + is able to deal with the given resource + identifier. + + + Implementors should return true + only if the given identificator is supported + by the resource factory + + + + + + + Creates an instance + for the given resource identifier + + + + + + + Creates an instance + for the given resource identifier + + + + + + + + + + + + + + + + + + Adapts a static string content as an + + + + + Enable access to files on network shares + + + + + Defines that the implementation wants a + in order to + access other components. The creator must be aware + that the component might (or might not) implement + the interface. + + + Used by Castle Project components to, for example, + gather logging factories + + + + + Increments IServiceProvider with a generic service resolution operation. + + + + + This interface should be implemented by classes + that are available in a bigger context, exposing + the container to different areas in the same application. + + For example, in Web application, the (global) HttpApplication + subclasses should implement this interface to expose + the configured container + + + + + + General purpose class to represent a standard pair of values. + + Type of the first value + Type of the second value + + + + Constructs a pair with its values + + + + + + + Pendent + + + + + Initializes a new instance of the class. + + The target. + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + true if the contains an element with the key; otherwise, false. + + + is null. + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + is null. + An element with the same key already exists in the object. + The is read-only.-or- The has a fixed size. + + + + Removes all elements from the object. + + The object is read-only. + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + is null. + The object is read-only.-or- The has a fixed size. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + is null. + + is less than zero. + + is multidimensional.-or- is equal to or greater than the length of .-or- The number of elements in the source is greater than the available space from to the end of the destination . + The type of the source cannot be cast automatically to the type of the destination . + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets or sets the with the specified key. + + + + + + Gets an object containing the keys of the object. + + + An object containing the keys of the object. + + + + Gets an object containing the values in the object. + + + An object containing the values in the object. + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + diff --git a/lib/NHibernate20/net/4.0/Castle.DynamicProxy.license.txt b/lib/NHibernate20/net/4.0/Castle.DynamicProxy.license.txt new file mode 100644 index 00000000..b7530910 --- /dev/null +++ b/lib/NHibernate20/net/4.0/Castle.DynamicProxy.license.txt @@ -0,0 +1,13 @@ +Copyright 2004-2005 Castle Project - http://www.castleproject.org/ + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/lib/NHibernate20/net/4.0/Castle.DynamicProxy2.dll b/lib/NHibernate20/net/4.0/Castle.DynamicProxy2.dll new file mode 100644 index 0000000000000000000000000000000000000000..83e192e901330a04b787f65f8fce770054e68698 GIT binary patch literal 106496 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%0D#GyV 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 + + + Castle.DynamicProxy2 + + + + + Wraps a reference that is passed + ByRef and provides indirect load/store support. + + + + + Summary description for NewArrayExpression. + + + + + + + + + + Here we try to match a constructor argument to its value. + Since we can't get the values from the assembly, we use some heuristics to get it. + a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument + b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string). + + + + + We have the following rules here. + Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that + we can convert it. + + + + + Attributes can only accept simple types, so we return null for null, + if the value is passed as string we call to string (should help with converting), + otherwise, we use the value as is (enums, integer, etc). + + + + + Provides appropriate Ldc.X opcode for the type of primitive value to be loaded. + + + + + Provides appropriate Ldind.X opcode for + the type of primitive value to be loaded indirectly. + + + + + Inspect the base method for generic definitions + and set the return type and the parameters + accordingly + + + + + Emits a load opcode of the appropriate kind for a constant string or + primitive value. + + + + + + + Emits a load opcode of the appropriate kind for the constant default value of a + type, such as 0 for value types and null for reference types. + + + + + Emits a load indirect opcode of the appropriate type for a value or object reference. + Pops a pointer off the evaluation stack, dereferences it and loads + a value of the specified type. + + + + + + + Emits a store indirectopcode of the appropriate type for a value or object reference. + Pops a value of the specified type and a pointer off the evaluation stack, and + stores the value. + + + + + + + Summary description for PropertiesCollection. + + + + + Provides appropriate Stind.X opcode + for the type of primitive value to be stored indirectly. + + + + + Base class that exposes the common functionalities + to proxy generation. + + + TODO: + - Use the interceptor selector if provided + - Add tests and fixes for 'leaking this' problem + + + + + Used by dinamically implement + + + + + + Generates a parameters constructor that initializes the proxy + state with just to make it non-null. + + This constructor is important to allow proxies to be XML serializable + + + + + + If callbackMethod is null the InvokeOnTarget implementation + is just the code to throw an exception + + + + + + + + + + + + If callbackMethod is null the InvokeOnTarget implementation + is just the code to throw an exception + + + + + + + + If true the invocation will implement the IChangeProxyTarget interface + + + + + Generates the constructor for the nested class that extends + + + + + + + + + + Improvement: this cache should be static. We should generate a + type constructor instead + + + + + Performs some basic screening and invokes the + to select methods. + + + + + + + + Checks if the method is public or protected. + + + + + + + Attributes should be replicated if they are non-inheritable, + but there are some special cases where the attributes means + something to the CLR, where they should be skipped. + + + + + Checks if the method has the same signature as a method that was marked as + one that should generate a new vtable slot. + + + + + Initializes a new instance of the class. + + Type of the target. + The interfaces. + The options. + + + + + + + + + Initializes a new instance of the class. + + The emitter. + The add method. + The remove method. + The attributes. + + + + + + + + + Finds the type of the method on target. + + The method on interface. + Type of the proxy target. + /// if set to true will check implementation on mixins. + + + + + Checks whether the given types are the same. This is + more complicated than it looks. + + + + + + + + This is used by the ProxyObjectReference class durin de-serialiation, to know + which generator it should use + + + + + Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue + where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded. + + + + + Handles the deserialization of proxies. + + + + + Resets the used for deserialization to a new scope. + + This is useful for test cases. + + + + Resets the used for deserialization to a given . + + The scope to be used for deserialization. + By default, the deserialization process uses a different scope than the rest of the application, which can lead to multiple proxies + being generated for the same type. By explicitly setting the deserialization scope to the application's scope, this can be avoided. + + + + Gets the used for deserialization. + + As has no way of automatically determining the scope used by the application (and the application + might use more than one scope at the same time), uses a dedicated scope instance for deserializing proxy + types. This instance can be reset and set to a specific value via and . + + + + Used during the target type inspection process. + Implementors have a chance to interfere in the + proxy generation process + + + + + Invoked by the generation process to know if + the specified member should be proxied + + + + + + + + Invoked by the generation process to notify that a + member wasn't marked as virtual. + + + + + + + Invoked by the generation process to notify + that the whole process is completed. + + + + + Applied to the assemblies saved by in order to persist the cache data included in the persisted assembly. + + + + + Abstracts the implementation of proxy constructions + + + + + Implementors should return a proxy for the specified type. + + The proxy base class. + The proxy generation options. + The generated proxy type. + + + + Implementors should return a proxy for the specified + type and interfaces. The interfaces must be only "mark" interfaces + + + + + + + + + Implementors should return a proxy for the specified + interface that 'proceeds' executions to the + specified target. + + + + + + + + + + Implementors should return a proxy for the specified + interface that delegate all executions to the + specified interceptor(s). + + + + + + + + + Implementors should return a proxy for the specified + interface that delegate all executions to the + specified interceptor(s) and uses an instance of the interface + as their targets, rather than a class. All IInvocation's + should then implement IChangeProxyTarget. + + + + + + + + Gets the module scope used by this builder for generating code. + + The module scope used by this builder. + + + + Determines whether this assembly has internals visisble to dynamic proxy. + + The asm. + + + + Determines whether the specified method is internal. + + The method. + + true if the specified method is internal; otherwise, false. + + + + + Because we need to cache the types based on the mixed in mixins, we do the following here: + - Get all the mixin interfaces + - Sort them by full name + - Return them by position + + The idea is to have reproducable behavior for the case that mixins are registered in different orders. + This method is here because it is required + + + + + Summary description for ModuleScope. + + + + + The default file name used when the assembly is saved using . + + + + + The default assembly (simple) name used for the assemblies generated by a instance. + + + + + Initializes a new instance of the class; assemblies created by this instance will not be saved. + + + + + Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance + should be saved. + + If set to true saves the generated module. + + + + Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance + should be saved and what simple names are to be assigned to them. + + If set to true saves the generated module. + The simple name of the strong-named assembly generated by this . + The path and file name of the manifest module of the strong-named assembly generated by this . + The simple name of the weak-named assembly generated by this . + The path and file name of the manifest module of the weak-named assembly generated by this . + + + + Returns a type from this scope's type cache, or null if the key cannot be found. + + The key to be looked up in the cache. + The type from this scope's type cache matching the key, or null if the key cannot be found + + + + Registers a type in this scope's type cache. + + The key to be associated with the type. + The type to be stored in the cache. + + + + Gets the key pair used to sign the strong-named assembly generated by this . + + + + + + Gets the specified module generated by this scope, creating a new one if none has yet been generated. + + If set to true, a strong-named module is returned; otherwise, a weak-named module is returned. + A strong-named or weak-named module generated by this scope, as specified by the parameter. + + + + Gets the strong-named module generated by this scope, creating a new one if none has yet been generated. + + A strong-named module generated by this scope. + + + + Gets the weak-named module generated by this scope, creating a new one if none has yet been generated. + + A weak-named module generated by this scope. + + + + Saves the generated assembly with the name and directory information given when this instance was created (or with + the and current directory if none was given). + + + + This method stores the generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly + have been generated, it will throw an exception; in this case, use the overload. + + + If this was created without indicating that the assembly should be saved, this method does nothing. + + Both a strong-named and a weak-named assembly have been generated. + The path of the generated assembly file, or null if no file has been generated. + + + + Saves the specified generated assembly with the name and directory information given when this instance was created + (or with the and current directory if none was given). + + True if the generated assembly with a strong name should be saved (see ); + false if the generated assembly without a strong name should be saved (see . + + + This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was + constructed (if any, else the current directory is used). + + + If this was created without indicating that the assembly should be saved, this method does nothing. + + + No assembly has been generated that matches the parameter. + + The path of the generated assembly file, or null if no file has been generated. + + + + Loads the generated types from the given assembly into this 's cache. + + The assembly to load types from. This assembly must have been saved via or + , or it must have the manually applied. + + This method can be used to load previously generated and persisted proxy types from disk into this scope's type cache, eg. in order + to avoid the performance hit associated with proxy generation. + + + + + Users of this should use this lock when accessing the cache. + + + + + Gets the strong-named module generated by this scope, or if none has yet been generated. + + The strong-named module generated by this scope, or if none has yet been generated. + + + + Gets the file name of the strongly named module generated by this scope. + + The file name of the strongly named module generated by this scope. + + + + Gets the directory where the strongly named module generated by this scope will be saved, or if the current directory + is used. + + The directory where the strongly named module generated by this scope will be saved when is called + (if this scope was created to save modules). + + + + Gets the weak-named module generated by this scope, or if none has yet been generated. + + The weak-named module generated by this scope, or if none has yet been generated. + + + + Gets the file name of the weakly named module generated by this scope. + + The file name of the weakly named module generated by this scope. + + + + Gets the directory where the weakly named module generated by this scope will be saved, or if the current directory + is used. + + The directory where the weakly named module generated by this scope will be saved when is called + (if this scope was created to save modules). + + + + ProxyBuilder that persists the generated type. + + + The saved assembly contains just the last generated type. + + + + + Initializes a new instance of the class. + + + + + Saves the generated assembly to a physical file. Note that this renders the unusable. + + The path of the generated assembly file, or null if no assembly has been generated. + This method does not support saving multiple files. If both a signed and an unsigned module have been generated, use the + respective methods of the . + + + + Initializes a new instance of the class. + + The hook. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The builder. + + + + Initializes a new instance of the class. + + + + + Creates the class proxy. + + Type of the target. + The interfaces. + The interceptors. + + + + + Creates the class proxy. + + Type of the target. + The interceptors. + The constructor args. + + + + + + + + + + + + + + Creates the class proxy. + + Type of the target. + The interfaces. + The options. + The constructor args. + The interceptors. + + + + + Gets the proxy builder instance. + + The proxy builder. + + + + + + + + + + + + + + + For interface proxies, this will point to the + on the target class + + + + diff --git a/lib/NHibernate20/net/4.0/Iesi.Collections.dll b/lib/NHibernate20/net/4.0/Iesi.Collections.dll new file mode 100644 index 0000000000000000000000000000000000000000..107c362ce042656e1da7d06154aa43c73efa1865 GIT binary patch literal 32768 zcmeHw4SbZ<}i>sx*8PusOyi@3E`-`)P!cKh~MyIuSK&$)Nz zc_x_z(6zh!d*`8ZpL^~(_ug~==iHBTXH3^`yMrtu^5FBwKN20qo1Ybuj-CvFJ$A;^ zW9jQfFU~w_G`={qr7M;S^(5_G$w+soJ(5V+=}=oVl7_rHUvf2!(g&p4?eDE1<@)OS;!U;C?HTk zpnyODfdT>r1PTZg5GWu}K%juY|3?U{;J6wO$EGHE>2MuU*Ic3^DRq*jkc7xi!3en% z=T3jbNPEib4$V09vnvk&LvQ5M-+XIA&$+MG{QF=0;GTbdwd1jRd-CPemhCTlzx3kr zKO`sq?$&E+dXE3}{X2hEyZpDu54`{DmyRx^|(wi#RB!7AM`I!w>mloZ-#lLMrtx2GDp7DWEWt>^;pXZqv ztXgiW5|Cppds4Q|s##i;8K#>NG%foK$OWs&H<#NlL;KJJI$4!xas#-qm?m7+fAwfO zL*>b=a+Tj_PeDej&h0K8P4AGScQIL}JykSf-Bd1*ZqxGUHft2!0?@6Tb<=3FPM|fG zS=bmw?svLqkf-0XhV(lP?ZnUyV9K>4S@sObj;X3DvO~xelh1F@LsH_CL^4zS9&$OX*2K))N2KgcDW7#v5b8#8p389>Etb(*K=E4ze zI9+hgTp1(V8243ftj)}vVH;y2`P?=>nLH**jy(JKNbLvFJ|>G#{2P}ua8rv}B#U3T$X59IT`kJg80Yh=HnAuMsmgOk$?@~t z(`fMc=n$Gd`#jXdw91`V7dFfCAQBZ70b1$E>j02QJY4+ZS=q zYRz=~*QIk-CsWQ;*iK5Z^UI!9QZ*$YdsdKOM4qf;isoT-#mCR4fb3A9e|mg;080{b z{y=6uIuj=q995J~MRZQB-0sU9!YZfdkmz8qP_T&>yce@iLjkOxmRcTojl?-qU;OI>qR_B>ArizL*c4t!U#l(=&mW(~?A%RtWHC`|) zFf|x2!hQ$L989%Yg^#s%*dB}hOZl~`lg55+*lWgZ3HehgUWYk&Kb~t~OGa4B;bOV84UURc>OII%)+)4y#Hw z{>dZ9F~X_H@tOWqQbDdY!VvcE9*$lZ{2iN|B7=ds+bjHGw9Xz-g?v{EUi5?K! zawJ)tCr()w{&UK*u)#1{oYQq2DlQbPD)FV!|1?GUdO43n99H9BDAiq)wFMyP$+|5& zg{{3>2j-~p$P#ea}b0?yOz+agT0QG7CUXvy`;j8B%$bnL*sjm4bL9eL)b+PY3= zPu{Px=N^6V<}%)6UGqk^CNAfFN$*>{2)K_qvTxy@DN|4QICIEFotb(a3zOR6cuip4 zNAbnWQEjLT%QL@owwoM4GkBgkN8!n9=Pb0P?=l{Sva$<}c2|P6oG@PC zf68}@W^jbNMKJgtjki3FwK^xkxzWB=c_%9r#9F5h39N7RDEf|c_rmp-j;8m}yG7nC zm2N8My5q~}b|8;#C&Lnck#moPwltP%PtrHEj0tb;c`^CIkbc>(QfQ}0FtZ&SW^WmA zw>XbyEZ;4D{P#+X^~c~Nd?d+>$2~*v;Qm9v0|z-iTUBD@>W)$T2zQK!P(fe*<&Wht z8$8P4IF_G}w&0+=-eAe_SoWvTBFx3M(xJSRU(40(onU4|dE8l9gtIiC-*WDKO0`A! z%I7|)lXKuQI7m4e?ga#13dl1%FJ7N9t<5L6b$`N%cv;uSlIWL+WtM4@PD#*xapLUQ5F| za_4yubLdzLDcMCI+4L zE9Ogh>-29@4ft>yU?X8Ax-#u=Gd{jv&S%2PVZkxubINsjCwB$br&X7C;}2VxcP^){ zYa&E*{QE}`bNjbTu+tGl_^juVmD=SLBUXNGNPUi#e>|j&$IRy-wzX@TV0-gmwPmaB z14UV89E_>0>am{nXNQvKZ=A`~Z9Xp9lj!S)U#TAKmw`8=h95IWce^-^*;^x!#wV zHzUNrd3;YT?CEq9c zPLpNsG@1K5lez!y;gZ|DoId2`@+TyH!TYq=hcDLNLpoj3^CWGSv|rNCOZu3kgOa`> z=^rGW;OF)m{O9_86qEFGQu4H0nNxcE?eX^uWB;6j^W&~+B@J0q8Xge7*$J1WnS#-JZZW5lC`i1v-;d$v=Y2_jGFa>tGL#RhURf2j{ z>irF*F^GNku1iouZN1g{}VgQS>BiF zl7U9=Poe!bZ;_En??E}s>@ zQuiCn`PVe^432rsSi|#KQQoJFbuQ{zNGhM@HjjbAiAzhq1PW74Q`Z?S;`vMtdiR6E zgqDYOX^~mOBbJXiP`^qw%b%PdjU{YEQ)hb@oN4EvO#pxJiyr7!3~@3WBP*~rhJ z_g(P#EX@z=*~;Hu$}{MF2^7bV{0w^EGdl6@-pe7O3`TGgd1f+oH(h630Uzp6RN%M9 zb?~$sg&H&%-Kq49mfR0XtX*eIy?|w2hns_tP=f{|KZBYSk8X!#i2Af-DJ0LPgIbcU zQb8fCPu%-mkep2eiVB1vc@8u142o6w48jkOeYvbKisBLR+N7uxu%AP*rK>YMu{5Gg zc^I>G2Y>;<>qoj%kX$;9}xyDj-kn1#4-krq~PC(pF8e7c|f_ ziVE<2Uq`QN9(%z$8qb>*T468vB&9XQUeHLt(-hl%J&hOV8Vs=AH&U&p*zOytUQ=xM zjnt(mV!LmoTQ!gEzLAayb&S}y8|h`C)YvbfV?y0Ixi)Z_bqSpi>L$VE68deHdIjH= zm56J9I?&-QH8xR&P%JqW)Ka0|7R;KdNmGnj3w3FVG22Xinqtg0(?Lx!W?Sf}q6D)` z={3z`%r2$(G{u;0rGQMOw}~;kj6#}X%(l@YMG0m*s6|tZ*$(Q{6l1o7?$h-cvmNw| zrg;ACpw~6UYt|0($Ygz+cwM@jsx`%H&!?zGQ@pOp#v!>X7-Q=0iy1XqupP)ufvHcQsKvQf#o5suX z^S0Qphqfw;*nT~9SW|4j-Bi9%waNBN(m_qJ{Ze#7QDVPds>G!jdJnMudTF_)*nYj# zqA2nCUP=o!NNm4ex=&GJhhBP1C}oFUs$I-&4q`uQ!P%u%DBh3O8-4VgqOc!rF|MK$ zT9S9zYiRO$T<>mp!FppK?NAi1GCbLj zZqHD%hdUJS;df+tyocXO9=?VEN{r{{v%JMvL$Z|YM+Y)I*^eBGZIq?FY3w=J*Q8Cg z_8g$4ijsBr05z%pu!d}h> zd3<6yNWak(kM@hydVy+%M|%&wrzsxay%bm`Jn_LpRH-TU!9%oMQ#`&yv_nzw!N)*- zMkqDDL-LbDBDJ<2qI-m==ItSRB1X^Q9Hm#O+f=>ey_7WxWxX^Q93qx7Iq3f;%(sVud`c#OWEr8?Na$R8x%g*D16@X~tMTNnM&^te>POG{so| z4OOfZNx}LX6jv11$nEqE`nskV>!Vb;O0~&YKSlRxim`s0-cpoc{R~ytsWutwXK00{ z80%+ftD*$!XQ)powMIUJN(TLzKYx0Qlz&!Im3OBj)pE;^lvnLIEtvFRRtI-p>E79~(QPTS*JtFB>C4EZLZ%g_; zr2CB@AidrAG15+YQ_>1KL6#GrerM`DM*$UbV^JU zLUgE*b}DqOhy4f8K1XsD5=TH=#0V9{QACBr3l-AWxx_JJy^OAc_=)kxZ}sj;vg)-drb>* z%!8J}t(LSy(zx8ZO)=O;<)TSBaa3F)EuTxgYsDcs)rd=k6DN)^(^B^ur1NlQ<~BK< zXWS~S-6}V8^QF!6jTZt>SmzrrBP|gfBJ{(+Ppk+=aRMpt$r0%PZ^)k$80%SyTAkD& z=_Qh0mQD8>W1-gxcqUN94b3c?iqNl$W*}Wivym>NI;3^fjI^0{Al*)3Zx|6=J<=;_ zE7FvdTupzA{HN&{($CV1-t){gW|J8;Z#F+~-fiA%K4?B+9yR~Y{Gs`#`G3vv)^uyG z)o3+Y-PRs!zxAZ`wDot^3)ail53RSYUs>dt;4!fWS(ry2q+V=Ee&|^QKMP`h6yr{8 zES-(Hat`+O*Nmni>8qY^q2wPtT>h@-J4k;m`4wKyEBTRR_IoRglgW(U!bsfFd*AQn zFWN_{o4=e_9LA^=2=ODz)wv23~u>M*t-Vl zZRpL!NqiyFzr;P7Nsr*h%*46&e58-UmrVK^4$&sgeitDot?y$aSJzyQNJOg|-;>VKr0izyyQ%Y1~(7#D0w``lL1dfN^7k)s$ zgZf>f-(&TAyndJIH!WXpcl5@i7g9qs6${td@p!a79kUaua7R2&4b9PX>-^!oi=&BX zGS)8qVO&y`>SNMSB-yX%wUJa;v_m)8-QAmxw8f)}Y_^l>46C_6(cYD`6S1qZCDAnH zG)CE`Xl;L6GRBQkgR4nujHS|Cm~EJbGz&NFPPN;~c&rVqR65$7GxqHG96%U`)rsEj zXp;2?HN2WzK(nc#E^a5HTm{)Iy0o$F3gAqe6M&i;66t6%#q|1EqBljW``Y8Zso0+A z#w69*iF72ENUel5c16=W8&a#gd(!>1vZI4PT)ZjTZSRSy9LsVpBbKSIg{UqbjU>tL z*|{o~-WyAC4-T<1(ZN)6Z(BMU5#uqLqYV!RI`#Co*rHCI-J3{j#oQ1}5f^N-ZP-Qw zm$s7t?&4_Lp>^F&(MZR}M7-ZEng`)D{yye2MK$lEL`e}om z&@y^RPJyzFLo3TTv|}@;%#BnYbzEw|*#yF2la41`SbN3L2`N0M-~4rzp80uh{qjp> z-DPyPcvxQb7~A}HwX^1DDil>Dw2w&coE_{SprVG zIi8MnN7B)3SvCU?>F$XnqdZHx9gSTYWhF9`qdD5%n~d>-5Rcn?nrF>9wKhdN^*T>0Q>kcoTfDzM8jtih$95$g;SB4O(f&2Dcyu^} zOShnXEMmi%4T(-WiE)A%iH|5XB79jbG?O1uDg1+97bLzKi zr`J5*yV2@~-gq2t8pWvFqptdDvu^3am^$!_832OrG3!_JCW@^yrne&=7@rg5n33^& zX9rG&n|q?|0(Z1SA0r&C1QHji&JnB`pR&%~i0_`Rz_&{6l*Z{VhG>P;Zv4Y{D2SBW z5RFCo+v%P7?hd&S&X-Yev5V=`|i3MzI5KNZu-Ulx|sssxN66iDT_|r;+s_FH6{>VMd}q$ zukq?N5wEc!V^SFxtF$O&n5vQ$BGU_M0$G*#c}~bED=91SprD*f%O-(uOe6?9l~rB} zxra$*P73LAf5+3Wzi<4<`2YM+bl%S~T7)PkBk z7SlJj@>HSsqXpJZI^&FLMv5w(0i)%4V6qZrlg2>_)srd>kjVotE8$Ef|Fe8$^YH-| zR8}IDN<5XB>|!2d*`%_?K*}&V8Oupv;4p#%@(hrCm*X>GHqe`zSI)<=9p`<6zVQ05 zW=sgqoqOz!TmJT(ho-Msu=RU&mo~mq@!cuE_8)Az@=L#ee|GfYaem8fOS8zY zZEFVnKt#KYHrWI^)9+Q{8P8GX#E_}1-%Cb$S--Tv^~x{k>rrPM8;=cMZi-N`-v<$uM|0(n6X#&OC(s0AjNi+Atwjmf zom4uopZ%xA?{PR@zlC1V_GDC>%$+z+>PU&laPR0UAmitOTd-6B`rX2e)EgowRb=cjAK=|*7^B)oK#7V4!xme=6v3rHu`a|m?DLWBr?vACqLXmW+E1mAS zpr&T;-o0UN3V(>410&?SYuZy?kz`LzDwJ6IX(z|I{~8+NKX)R1ToSBD}{B)4}gpOXw4KlDtA|CYd@u`W>TL?uA6H-f*W&RB4;dwK&D^T0p=9C!YB&f>M9#XRHE zWTXdCMs^d#=4bCs8MO(Kl4JwtLk{iEt#HYy@||^dvOXSP4^ycyI2x63pSgdWt-p$M zH&Mv{mqh?B4BaMUdgiLgzC--Gw_)Whw-%qR;9TQnNku)ZQyNk+l<&&Z(ovDA#kkeKML3HA1N@dX zg1U8Rk56e))J~%p!YC6sp>dz>`pm^LeBM&0JEZ}i?^x3$-eDlI8k&ZY4@rw1kPYEi zFcCQi_Taq6=RZCb^4X71c0864s5Jid&;_{JtbsiL<6CbVGEtP{DkgiXROQ`}YnOHy zw;oU_NV4W(>8(egS%I6_%-DKlEV$Xgo5#t|23R`=ouX(XA-eF{lt+Vw4NoKPCygwY z^^i-USH`#peK|I05Katr^JBzqEyWG7)7BR0Gv#Vy0czLcGasKt+D1x;NvOvjkzrqN7?06L9){go@cn^-HAdNq(PQgnRtu(-N1u)_)QfL7p-rA;z0fJ`@+yL! z?CqobbT!r{1OI0q?ly*cHv2QLGfS~`8~6?)g?~}#%PRrfJHNb|3-V(1~zYUFQ=hlob#tAW%S{fItC(0s;jD3J4SsC?HTk PpnyODfdT^m-4XbI;%mc* literal 0 HcmV?d00001 diff --git a/lib/NHibernate20/net/4.0/Iesi.Collections.license.txt b/lib/NHibernate20/net/4.0/Iesi.Collections.license.txt new file mode 100644 index 00000000..66c4a8dc --- /dev/null +++ b/lib/NHibernate20/net/4.0/Iesi.Collections.license.txt @@ -0,0 +1,9 @@ +Copyright © 2002-2004 by Aidant Systems, Inc., and by Jason Smith. + +Copied from http://www.codeproject.com/csharp/sets.asp#xx703510xx that was posted by JasonSmith 12:13 2 Jan '04 + +Feel free to use this code any way you want to. As a favor to me, you can leave the copyright in there. You never know when someone might recognize your name! + +If you do use the code in a commercial product, I would appreciate hearing about it. This message serves as legal notice that I won't be suing you for royalties! The code is in the public domain. + +On the other hand, I don't provide support. The code is actually simple enough that it shouldn't need it. diff --git a/lib/NHibernate20/net/4.0/Iesi.Collections.xml b/lib/NHibernate20/net/4.0/Iesi.Collections.xml new file mode 100644 index 00000000..587094a3 --- /dev/null +++ b/lib/NHibernate20/net/4.0/Iesi.Collections.xml @@ -0,0 +1,1887 @@ + + + + Iesi.Collections + + + + +

DictionarySet is an abstract class that supports the creation of new Set + types where the underlying data store is an IDictionary instance.

+ +

You can use any object that implements the IDictionary interface to hold set data. + You can define your own, or you can use one of the objects provided in the Framework. + The type of IDictionary you choose will affect both the performance and the behavior + of the Set using it.

+ +

To make a Set typed based on your own IDictionary, simply derive a + new class with a constructor that takes no parameters. Some Set implmentations + cannot be defined with a default constructor. If this is the case for your class, + you will need to override Clone() as well.

+ +

It is also standard practice that at least one of your constructors takes an ICollection or + an ISet as an argument.

+
+
+ +

A collection that contains no duplicate elements. This class models the mathematical + Set abstraction, and is the base class for all other Set implementations. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + Operator + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + | + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + & + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + ^ + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + - + + +
+
+ + +

A collection that contains no duplicate elements. This interface models the mathematical + Set abstraction. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + + +
+
+ + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns if this set contains no elements. + + + + +

A collection that contains no duplicate elements. This interface models the mathematical + Set abstraction. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + + +
+
+ + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Removes all objects from the set. + + + + + Returns if this set contains no elements. + + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a Clone() of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a Clone() of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns a clone of the Set instance. This will work for derived Set + classes if the derived class implements a constructor that takes no arguments. + + A clone of this object. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Performs Union when called trhough non-generic ISet interface + + + + + + + Performs Minus when called trhough non-generic ISet interface + + + + + + + Performs Intersect when called trhough non-generic ISet interface + + + + + + + Performs ExclusiveOr when called trhough non-generic ISet interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements currently contained in this collection. + + + + + Returns if the Set is synchronized across threads. Note that + enumeration is inherently not thread-safe. Use the SyncRoot to lock the + object during enumeration. + + + + + An object that can be used to synchronize this collection to make it thread-safe. + When implementing this, if your object uses a base object, like an IDictionary, + or anything that has a SyncRoot, return that object instead of "this". + + + + + Indicates whether the given instance is read-only or not + + + if the ISet is read-only; otherwise, . + In the default implementation of Set, this property always returns false. + + + + + Provides the storage for elements in the Set, stored as the key-set + of the IDictionary object. Set this object in the constructor + if you create your own Set class. + + + + + Adds the specified element to this set if it is not already present. + + The to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array of T. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. Needed for + non-generic ISet methods implementation + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + The placeholder object used as the value for the IDictionary instance. + + + There is a single instance of this object globally, used for all Sets. + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + None of the objects based on DictionarySet are synchronized. Use the + SyncRoot property instead. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates wether the Set is read-only or not + + + + + Implements a Set based on a Dictionary (which is equivalent of + non-genric HashTable) This will give the best lookup, add, and remove + performance for very large data-sets, but iteration will occur in no particular order. + + + + + Creates a new set instance based on a Dictinary. + + + + + Creates a new set instance based on a Dictinary and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + +

Implements an immutable (read-only) Set wrapper.

+

Although this is advertised as immutable, it really isn't. Anyone with access to the + basisSet can still change the data-set. So GetHashCode() is not implemented + for this Set, as is the case for all Set implementations in this library. + This design decision was based on the efficiency of not having to Clone() the + basisSet every time you wrap a mutable Set.

+
+
+ + + Constructs an immutable (read-only) Set wrapper. + + The Set that is wrapped. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + nothing + is always thrown + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + nothing + is always thrown + + + + Removes all objects from the set. + + is always thrown + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + nothing + is always thrown + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + nothing + is always thrown + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + nothing + is always thrown + + + + Copies the elements in the Set to an array of T. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Performs Union when called trhough non-generic ISet interface + + + + + + + Performs Minus when called trhough non-generic ISet interface + + + + + + + Performs Intersect when called trhough non-generic ISet interface + + + + + + + Performs ExclusiveOr when called trhough non-generic ISet interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns an object that can be used to synchronize use of the Set across threads. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates that the given instance is read-only + + + + + Implements a Set based on a sorted tree. This gives good performance for operations on very + large data-sets, though not as good - asymptotically - as a HashedSet. However, iteration + occurs in order. Elements that you put into this type of collection must implement IComparable, + and they must actually be comparable. You can't mix string and int values, for example. + + + + + Creates a new set instance based on a sorted tree. + + + + + Creates a new set instance based on a sorted tree. + + The to use for sorting. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + The to use for sorting. + + + +

Implements a thread-safe Set wrapper. The implementation is extremely conservative, + serializing critical sections to prevent possible deadlocks, and locking on everything. + The one exception is for enumeration, which is inherently not thread-safe. For this, you + have to lock the SyncRoot object for the duration of the enumeration.

+
+
+ + + Constructs a thread-safe Set wrapper. + + The Set object that this object will wrap. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Enumeration is, by definition, not thread-safe. Use a lock on the SyncRoot + to synchronize the entire enumeration process. + + + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns , indicating that this object is thread-safe. The exception to this + is enumeration, which is inherently not thread-safe. Use the SyncRoot object to + lock this object for the entire duration of the enumeration. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates whether given instace is read-only or not + + + + +

DictionarySet is an abstract class that supports the creation of new Set + types where the underlying data store is an IDictionary instance.

+ +

You can use any object that implements the IDictionary interface to hold set data. + You can define your own, or you can use one of the objects provided in the Framework. + The type of IDictionary you choose will affect both the performance and the behavior + of the Set using it.

+ +

To make a Set typed based on your own IDictionary, simply derive a + new class with a constructor that takes no parameters. Some Set implmentations + cannot be defined with a default constructor. If this is the case for your class, + you will need to override Clone() as well.

+ +

It is also standard practice that at least one of your constructors takes an ICollection or + an ISet as an argument.

+
+
+ + A collection that contains no duplicate elements. + + + This class models the mathematical set abstraction, and is the base class for all + other set implementations. The order of elements in a set is dependant on + (a) the data-structure implementation, and (b) the implementation of the various + methods, and thus is not guaranteed. + + + None of the implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a . + + + The following table summarizes the binary operators that are supported by the + type. + + + + Operation + Description + Method + Operator + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + | + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + & + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + ^ + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + - + + + + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a clone of this set with the extra elements added in. + + A collection of elements. + A new instance containing the union of this instance with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a clone of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a clone of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns a clone of the set instance. This will work for derived set + classes if the derived class implements a constructor that takes no arguments. + + A clone of this object. + + + + Copies the elements in the set to an array. The type of array needs + to be compatible with the objects in the set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Returns an enumerator that iterates through the set. + + + An object that can be used to iterate through the set. + + + + + Returns if this set contains no elements. + + + + + The number of elements currently contained in this collection. + + + + + Returns if the set is synchronized across threads. Note that + enumeration is inherently not thread-safe. Use the to lock the + object during enumeration. + + + + + An object that can be used to synchronize this collection to make it thread-safe. + When implementing this, if your object uses a base object, like an , + or anything that has a , return that object instead + of . + + + + + Provides the storage for elements in the Set, stored as the key-set + of the IDictionary object. Set this object in the constructor + if you create your own Set class. + + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + The placeholder object used as the value for the IDictionary instance. + + + There is a single instance of this object globally, used for all Sets. + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + None of the objects based on DictionarySet are synchronized. Use the + SyncRoot property instead. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Implements a Set based on a hash table. This will give the best lookup, add, and remove + performance for very large data-sets, but iteration will occur in no particular order. + + + + + Creates a new set instance based on a hash table. + + + + + Creates a new set instance based on a hash table and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Implements a Set that automatically changes from a list to a hash table + when the size reaches a certain threshold. This is good if you are unsure about + whether you data-set will be tiny or huge. Because this uses a dual implementation, + iteration order is not guaranteed! + + + + + Creates a new set instance based on either a list or a hash table, depending on which + will be more efficient based on the data-set size. + + + + + Creates a new set instance based on either a list or a hash table, depending on which + will be more efficient based on the data-set size, and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + +

Implements an immutable (read-only) Set wrapper.

+

Although this is advertised as immutable, it really isn't. Anyone with access to the + basisSet can still change the data-set. So GetHashCode() is not implemented + for this Set, as is the case for all Set implementations in this library. + This design decision was based on the efficiency of not having to Clone() the + basisSet every time you wrap a mutable Set.

+
+
+ + + Constructs an immutable (read-only) Set wrapper. + + The Set that is wrapped. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns an object that can be used to synchronize use of the Set across threads. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Implements a Set based on a list. Performance is much better for very small lists + than either HashedSet or SortedSet. However, performance degrades rapidly as + the data-set gets bigger. Use a HybridSet instead if you are not sure your data-set + will always remain very small. Iteration produces elements in the order they were added. + However, element order is not guaranteed to be maintained by the various Set + mathematical operators. + + + + + Creates a new set instance based on a list. + + + + + Creates a new set instance based on a list and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Implements a set based on a sorted tree. This gives good performance for operations on very + large data-sets, though not as good - asymptotically - as a . + However, iteration occurs in order. Elements that you put into this type of collection must + implement , and they must actually be comparable. You can't mix + and values, for example. + + + + + Creates a new set instance based on a sorted tree. + + + + + Creates a new set instance based on a sorted tree. + + The to use for sorting. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + The to use for sorting. + + + + Implements a thread-safe wrapper. + + + The implementation is extremely conservative, serializing critical sections + to prevent possible deadlocks, and locking on everything. The one exception + is for enumeration, which is inherently not thread-safe. For this, you have + to the object for the duration + of the enumeration. + + + + + Constructs a thread-safe wrapper. + + The object that this object will wrap. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the set to an array. The type of array needs + to be compatible with the objects in the set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Returns an enumerator that iterates through the set. + + + An object that can be used to iterate through the set. + + + Enumeration is, by definition, not thread-safe. Use a on the + to synchronize the entire enumeration process. + + + + + Returns a clone of this instance. + + A clone of this object. + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns , indicating that this object is thread-safe. The exception to this + is enumeration, which is inherently not thread-safe. Use the object to + lock this object for the entire duration of the enumeration. + + + + + Returns an object that can be used to synchronize the set between threads. + + +
+
diff --git a/lib/NHibernate20/net/4.0/NHibernate.dll b/lib/NHibernate20/net/4.0/NHibernate.dll new file mode 100644 index 0000000000000000000000000000000000000000..392852e700f7bcaf708edbfdc8dea4945d6aa605 GIT binary patch literal 1638400 zcmeFad7NBTng4(L-l|*GRo$Jgbf-HZBpsH7qN_XX(uBnzvd9_`B8v#3AgdRv5*Ny9 zqT&v?j!RHM1os8^4IM??#x1CWjz9$WWn9N`bR6;b{ygX0TerG9z&PLeegF89SGw-K zXL-(Zp7U(yIp>~x!kI4*q96zg{Qd23LGUrI`nTSGANXer*+Ubb7z#er|FvB{)_45Z zb~*LJi(0ELZzfM^KJl_uPkQ20pPFo1b>8`_nwy`x>Y}Hvdh|(;U3FRVJo!wzqi5dQXWJ^7@c zbNDj)wf_0`z;pL%cdjhIxBqHs@Hl&-UIrw~rk!QMK<@D&->wP*dXW7q^PF{%)U}(= zf958xyMNvHOMNvwvnuNPxoexP=983UxVgRs_fj_ZZ#@KA+dTi$go1`EI2)|r&MWt* zT(yU9AEv;=6nK~d4^!Y_3Or1Khbizd1s zxcqH{LBFLk1>e6CJg3$dY*-ZpTYTCBU2ZI{`S{xR{P4Xmc=n1TpZwVI=-5AWZti>8 zHDCH`U-Q7<-FeHcN1t`yX~UfZUv$y=kJ~W$=M$3?Z@TiUHy(fKAO5R8eB+|8tv&0@ z*T41J=X~~@mptP5yO+G~ldrh?Cwm-z_spGtc>If>z4Db8?|;pgKL3N!YD`O-7dl@!0)+BZXRFdMpUrs;~6zqd}Y;P3bj3 zlpL`rh_l3lco-;;`Z|lKqlU@}M5XZ9U}M}Bz7GifTa(9F`~Bmm5B3X$Qm?(}{(?1l zXHXhHy;>@y3F|KU+u!~c#;s$i(;)^>2quH&^zm452eF6N$3p8ks#hG=)l$+ge1meb zoYay2ncL}jtv{LO>E<&a-C(ddsvpnOrUQ6NPEe^rsa8lW~- zRjE~`I{|qq`INB4laJ(i)JxMuypd9^B=V`wuqR)wl+tgc+<-*2xK`epoCq>&f?9d} z^pSF{Tyum|we8l2lY}de>!u*v_7%1M&CslGq*|+{;LEjYvVl^;-N78P27Sa|!r+MD zu9bZ�=sk2&ed1Er_OuqU2;M!W#T<^o56OwE1cSTB1Waguc{$mr{`EFJ z)Z6r3+lM7WAWOw`@ReBFTRfms&X6aoXs*k`0$(QMxM*Q6#0>|fzX(=(9xCTNqYp8mpY-3Q7{F3 zlmqbVXDVAtyZ)YOjjOS~0jYl)LsUOYjY`#Ak+G@9*A+}waoZ6JlZST-c0tR9LPMukSluRB=m4PTqs&x2acWxl~{?VmpTYNSl;EZR4-6F z6xuy)*M!!(XNbF=I_w_|eZV|0`ujWdGyM*6YXJs?;h5hgm{x){vUeePJUSaxMR!pe zx{JJ3*RKJG;$XRy{D@wS6#A2s&^9vF(<=isc=}Ln0_O78;MyR*BA9s>bi&7}_9u^^ zfEl%MtFsI)RNMB@Uye(O5i4jsyT6Tu|@N!&E?f{AUr&3;Ptws#4 zSP){lAK1n&L1R^5Pxok8>~4E@_kG>vN2lKgrvD*vlp*)PgR<{x=O(|I5(f2T{%;4(DK7+}mwy5q;GcBhGxJ(#y4N>x`n;`5 zS^Mj0AG*@-wxIO-9TTJqns++{zw2>S8vU-0hvobq967;K(Vlb+rP2khC!N`%(uHf5 z4kBQlr6>2|ty|{4LG$LWzA>GL@=tZMVAyP7x*R6^Ggxq`huLE<)&Iz-pastP_R`?| zfi_+DA|s3^#Dexx^C#I$R!Kn}kH$v8Xpo$Ox#azWQPxEk#Qk25y)y~X!oeLpVP2i3wp?89X+tRK#01fNw6jTB4C zUm=?mxMonbpoDrC#ges5fk%o#sb?~GXn?X7olD6*{JNrLn@5;$$b_(z{E3_zBcTSI zcL>K6f<`eI9l`3i)w5}4){M0^Iuw-RT9I~ZG^vS*jIXAH{mFMxgqq}Gol_JCg61
!A=tG-CI9 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 z zEN}9yy>if1->!UDg*$t>3>;w;+35GcPf=2~*n}x>&(iR8pUug0<&x5zV)DsAIDnz0 z)5Lq3CS++mFPi%zQ~o&uit(whVlAel{O@$qkH5)qhx+B^^O`>fZsfv;orK67h|CV0+M}^jx1WeMKw)|Fni=*jH7lF`EAxxcpm1%nCDDu4@GYe-v zN_dS|!qx3#H2le}z&yR9dp8whaVa&Y4*N8y`xuHiO+}!XAc@QEC^>9h54xRWySK-2 z8#IVwRwS4rLb8P-2^1yNH3N?^Yj*EfT_b5R=K;6}1g#q=f_pAtZaQ8{-b@nXCZH~9 z{A%2;K9?RewDZ1OT!H7xW<1TlDhp#*@i6-qek{Jt2JIY_F$d))LDy2H$|g7S!@F_? z3ze~+bQ*iGw=b_1+&gh@*9VB^LuRYn8iVoE-B8#=*cRFEFHn*<8^gA!gP-vfrRo6CPw{O$<=A5@s{h}rtJL=gQSLK&3~n&dX`ZOatM@s_~@#TO3vNn7Sg@Oa z`~3Wze&B7|`T0HL{DpkJ(+fHJBwy@iGe(Y=dw6kmw}ABI%3fX#+c|DaddfOjJ-A$+ zhczFUFQwT(2rcg3IR#FBApZkG;vn!MSll_8+q@3-eN+jfuIXq!c^y4VKd1wpSGS>e z=B?=7nZmEg6kY^MIalk&$P^BQ@M``_`OhW4lzf@rHDOyg#G7`N`%nTWl#No73in}K zZQoxYx&*v*g~f0Q18gOT@IPmReZy_3Mogap>IaZB#I_pZ@UZm&k7tf*u11v_tQM(L zvA2pYW0B!E)=^H5g0gYFe&PM87D@d=a221d;0hUPyppqs!0JC~=;G$Pxlg{r{g%f9 znC{seoN$f(!_#=Y+Di|7m{paSm!Q?B0s9v_wX$y3eEVGBzZIKQ~P#4cPfc82)`8qU8 zzQGR$(AhxdT(*90QJb8t&>h_((wmP2h4rg4o*SB_Ftk<{p;Q5N6Wb27~6K1zZ z219F+8u>rMkzp2&8l&W!DUOGcqVbQCZ;=$R!Wp(T)KT(ndzOQW>-sXyq)M8$1P=A^4q zmR_YEWT^$Mi$KkduJrbL(jln)+q-FzaUvkFDwsWo%FSJAJaVt7L&Ay+c@i=oX75L9 zf8f*)NP%tKR!_OuEv^VaHfelk*t!P*oeN0J#60ReMUREfg}M|ws5Vp8w#Nq@A|H+} zhV@5?m`wiGsl^$7s@o4_;oeZ(V)PN9xp=z#ZI zgd0BlrNQ*%xaKO!F&kvZq8r&x`mf}1zRj<=B){edtn>!qx_5!GZ}D|=TlB?$L-CRR z#(IAc&Ze6HJmBlxPMvb{TT0kOu$=s^d;5EC>;J}&?*R2Ny%jY({lV@DG`wJ`Nv2ZE zwMsh4bZw6%e^7lv@@p_X%wm;Ng2hYb5R8{J|DB41{mCEIY@wew^0yk#j;&&59*i!v zAfArE84KHzg&S+t@vtr7;BIs@`48%C+7E%yiy$L0%lvH4b92^nf|GAa=d3OksV>)KzZ}aqad8B!O7p*6{$W5S%3*x zX0h!In<=S|>og~_A(~fCmdkXuIlYsHT6O!4h!bgpB^&zWzl2uM*ps5~dPqeBon6%Y zF=agj>lg|{$2>W_?W`xF5bO3QKod9jTi&JCLEJCYebj3(#T(XjOJj(ei~71LbhuKg)E)&Ttk5Q=F%-j+?U-bh}G>k+eN;z672`LsYiEQ3j z5buR;!HdGSiYFT=W*mAZ8EPS7f267gi z5Hxe*?a88GbhltPXHN>j5ba@@v8$NMC#Jo^djuCc9AKQWZBhLh9Q{%Wwl8Cc=`Uy` zYL2b&O_jVqBXF$t~Hcz9p(NXCo@I2SjozhSmNT)H0CS{Y;yInJ#f-9yq&3w$iML9exN$_+O zHCV^O_EtKZlw7EvF90DMO)uc48pb8)bttzTp~42%`gwX#TbjmM8|YE($&}C12c+q0 zl!RPOfAGpRZ#4JwW=LV?>y(>~$k~Qb>a+R7Xf)m`kWz^gqMsFNriw+?)(7n9V%k_4 zD9ticV^=F%=+dD1CWa|$enKNV zsPe5dv;b3@9pa%sVa`>7lV*pxCLH0%Ca!J!remHgCSj8vvsbi@2J7kDliZkzzK#%V z*w8~G*Wt?2)(8;lqx@8j7#x6BG8)*HYR&8R0+!i}j2c*exM6k)m3+5@20`W7v0Q@Y z4#nWNkoL*KW9c;q$i!nm$GYUcu~r%126)H6JXOMN>(a?pTz`^=yksLW0Pf-lBmZEz zTgnnf3gy{x+IHme-K;;E>OpySDH;84q{_3*iYn2y7bQD!C2u*GE;?=mT@4he4K55b z^CJilM7*ZY>qIuZX{LimJleq3;?38fs?$U8u+&JRtKi$O5zqd$lny7}ndPcqDjb7G zGw70`xpHN2`HsnTZOW^VtG+Y%kCe-^OqJ5k=LuomP0=gQuA~&lD@<_V?VZ_GS*6TJ zgf#3J1oL$R*s!d#%#A83$+~P<+O~H(bdC-6i0{QAgv39K!99%q`5OCWI~@CLu<6Xw zZ79baCyYK21LS+@xVm?^yBM>-a)utmJGH{rkz&NJkseo}xcOys#_Rar@#-b4c!!bq ztg~xIJqEM>RE?vC_dhhe!OUC5GTjc@nC_Si`7vGE<;VO8@78TD-*-2{8B%#Z*de;T ze30!Gb-sYc{*L=K_W6O{Cmk6#(0cR(O*f_Yt6VS8Shqg9n>V$o3CXQct85gY&;lG! z^m8R%a>kMHqSQE!dc=Ko&&?#gSn5BL-=K^@o%z>oSzZq{fsd0 zXN0qdQKjVT$H^ldoSc2Ok&kR;)w~Z|CdG#L-)!7rZiVAX9Q4ena}bb$3L3iyQCBbd zRo1x{Uk;e&jnAUb7a1+WReijXq4UJtuqB5Byb`Z^!7yH;H*u)t9*>|fzU`A~`5RHU zkD^Mov@AJ7eTq$yuKEI;UnnMzCTXC&EIHD$lB2i`HiG_1VrH{UDAI0(v&ZnT?SK?& za|#1ne++5P6oNK*mrUVYEWFd&W+;7a6qf5la|5-<&7yJSn4YJGP@EN<(x4W$CZxWsCIi|e9n)zxd@@V+)fU3OdK3b9sTRh?+W%7^5{@; zD6T)7@*VUuj=DP-?HRf+PFD-be=uEkGxp9imBShZEVC*AaC*jBSW=>=C_`1$!4PR&t$P z3&|VpT1>9jm6cID80;oq79HTc>0wS#+*(Rj@yJ_QI%v9V4w~i-KPpBs=O;6|&xRB^{!Oj&R9!wt9P4_8=yPLCl+Nk6vIc3(j3z(gTZKV~H!vMr%at7Bm z;wSh1osB{Bk5DO0ut#w{oZ{y!jEzCax7ju#pGr*g(sX2g5{VD`60k_2A1}XH~lu);Zs-b^4sq65;+E`&m?pqaLwt8R zo79QkOTp`Mhu6Wviw#UvZk;G*)d{lc`WiE1(G?xrXPFel9j&ykq_h=GJu@4NI5?VX za~@oE)pgVkJ_p;?FyK~yNfGWMdryX}&Z2q|Fqvz1$JgGNT6(69QB`kPx>L)GjfUR{ zns;H)t&G4ocQxPeB(4-6c5W zY!?SjNsz`dOvkwWcJP4HiMh12_(p%OR|kej#mUDVoE&+bG%JSr3H0vj2={Iqb69jl zTlto?MtgwtWVRtP=XbL!b0w*(@Fuh4Hrai;3bJnLC`Sv>x~?8zaZfj8gQxfrAq}06 zrgntq>cR97&u8p+>ACc>C zf6VR0r&r^tMV#SKzlo>h!~8S`{Zpa!4IbHAWRx!_+j$DggWI*0&<(~9l@i=tE2RDF zr++&`QFeh}@;3KAaLDCtA9bI7SdRVP054z&v2UnW`?tkbdbM9L7#oB*De-)Gj(xxGX6}@@#~=pVcv9HUNaB-lw)=ft|axy#N6L~VHW5H|UbSrwFb!|I4fgMI?>>?YD%B;{g7X8&HtS7(0FuSb@OZ7>Xi1O;J zlWbfbT(7G`%_&T2X{b4j8I0ifrV6UPQE`l z523XA9q_W>Rsx6?U7%j~VN zIL$EKDiw8}LjtRDTXZRQp35ckS2Tx$w=_1&Hvd8R<>p+f?b8dkR}@yjr-Q+*DM`ym!7klAL7Q64=_a}b|cB}&~dwb2qB{T-2EDV zZ~J?Q99o7w5H+-id{9&VF3T{%7Ng}OxO?4sT1pGhA|U=Nd|}p`4&-fjy8f)1@oeFV|zC^9o&x9b(!h z*pidoXy4?Nx>jj*TOgPx7^J9URUI)@ehuZHV)*)kXRNMRQJEY56A9rR&&bemF}_Iq z0n>Nq1TA}4j4vrw8V85gAg2nr+C{yw#70*kX;QA6u9S05oqC$n4NeD{E(zP}LPo0+ z?OM7&tzcn&>gxM35QTjGNb`E9Lnit&C2}d;Yf3~VZ6}5_$%`x%O(JBaMBZQt%U$1m zv7MWru+$Z<3tr)@oTqSD*N^R-G!!b|`g$zl)_FB>bL06c9^oeTF>o}%LFME$ZYn{M z(*ibfmpqOiwh*h5PbzUeomBkhGdP$vIfHwa^=#V`*6ma703q&JmD(VsaW~q{&4+dk zj=sp*EX53_pb2`n7EBCQCRWF1hHc@Je2F@z`vf(M>I)it1}lp-oJ_svsa~}CSY(LL zCgDv=d=8B^DWMV@AP-J4HJ`sCwtl$Y)Rz%4@)-p_!$lwixZ=wL)3I{zFEV*(Zcm3w z7&1x@#Eqq86K9*S=aoD(F9t}c7LSm{B+8O0W! zc4N>8j(VCqkErQiRwM3}XNcGE=xue+{(2RQEU0B%{V3FoB^6vu##~@mWv<+WtAgOIL)~=gwnawIw(#?E6`Iem$#|jlQ^?}e z9h^DvUF&H?1$e0pTm4oUJgy+kee2`-f>}QY3hNUd=W<=O{!xp9i_fwadO=~;{{Vl~ zZ( z4KwBz9M|?@OPv(klW44GQi5_mxTkBm!b`i8HHWirjCjAO?6q)r3z)SO&Qa?+C#d#fllI2V-^2&|>{}UfP zXkX?v%s#pHG!?ePY8{{`K@ zk^5ruC2mbl;Jlsnp3AS5XF%iRx4IY9fOyTq?P=BJHWj-;pm7xu9X0o3rQN9eus%V* zJ8uyfXJ10wgNGxAZHPKIsgN5A>)#OlOY?5-$%}%m7{V8;UbN{nnYpm7-o^H7=QLt- zEx6XAVAxhSV*A~1IBcsUvHjXCE-iYD6&0#+Tfg-uqUzF2b{_yoWOH6B>3j|$O-M@> zDHY6M7D2yL4;WTu8n3ZNsFkgnTP75Md#E5{^*~TU9>SnO=-)8}4NeN-al%0f z?$!AUUy-TUtK1_61H+n}$RS`Aw})PM+{JQD#l5J_7NZna?kldIv|@gpK&5M!HjeBP zGY>mG$IkguNB8Y{dHSu_Lhwb#mx-6(x8A%14OxFK7&$pjp2QGyFU8b)WJ5qL-VD@V5Ta4E6b>{dJo@< z(-Fy&K@8u+l*8Pzhj+`0Ewi%Xg%pb?0Q0Q0+!|zSFA`p#CX}sC^Ns1VGcJt)4! zt38&2XUr#3d?wDFS(xJ^<*BhZr?4JEV`90vjVWyhjm5Up+}vfejX6K=t<-uTKTi2w zKTc05eA(|K&`mEeecx7U>Yhz4nthun)Y|dZ9O6U2J&cxJN82E)&^e(93 z{i^dB$)I^qorL7;xFQy0@$ZB>yBRPP6rXCdEj!I)NBf&PQUTem- z@(&k+s2fv+3utIBZEYioUP0KqL#Tz0BqbOcSSP(>dr!II; z!Vn^9FW2qRojEi-E=Z}2V2D?^l;%Ca4%@2X;JaBu(U$wiPj6iyWg8PMWYQK}cqECz zKySI6B;n_PC+DN^8VfHx@hLl~L`Y*a`JN`)R#rz<$3Dk4rxZphV4IJ80cUkxqvmkj z|q4%;H&fS5?iBU? zCdA`&5Oiq#45LIf9<%=4jQiL(;HrFl5I#X#}QRD)t04{rncY6q3`#jyty0Gl|CIw zWio7wbJ!eo1SmTvTC%@C`EAiU<#R9lyRhzN)Or`V=XfW-1m|MLw*I!uT8Oo=%lmGj zLjX*Uix$WtvdKIdhK^eMr%0qB2A$EZIMB;%+}}&Z)#);nMHU9xZDNsy;XOE{^sL$U zQR0k=f%7V}@8>Rdr|in+5oOz=q_Hix@XMyiSzTBC4eE9aEeb4k{PYW5DFb3jtp0B= z=a!J1?=qy<>&l=PzO1cpx;INst+tz&QOj=z&5RWvz@6d%?md;I2$O>4I<;j-lu6qwad^UHv5 z-oa0DDH%a?WQt>rl~cb=1wW}WNA#xMs8~RKdZDmded%GT5WAlxzCYid*t?}pRY3h<6FzSmzs~GoLfO#RBApYdx#rl0x@Nr zhQd-)YO>?<4_@u-9vSkWzY2eiVS~fV?*@X3%>+wGQH`B>7Cw1ufh#;TK{I(hb8{u4n3q)`MDlavh?l4LrRxrdPoWLNIj&KIbRQsH205e5!F5M zOMGPv`d1DbVi3wl?#%e&b6X5%gsWI?7yjz}P4Oog+@HUL_&bb0&CQPC?*#r%;SWz& z@8bqf?Xp8qZo;X>6Y8uQV8~O5>7=YNc_(#6YF-M3%uCkDp-C<8c#F;_u!3VUB}a`MaIJuk!b8{_f`QNBsROe}CZbzxXTA{7i`-6P3!0o=s9JGk+$# zDM6{s{93n?lgi8wbt^Hc%zRh3l9I~I*K{i(sm$D_Tggae=A*imh*V~TQ&SRBnR&Br zB_D2dnv#yn%uAIj*{IBH(XAw-(s*W5Lc!=XB@dOxg-wYS-r3q``e&Lx;UQK!0W zFrZAl)Y#lK=t|l~$`$J;yMj#3T&lAtqWpE@pC}>H>{?!j73N=*Y$ByvI_Ql&l$ynT zQwxWssbvo*m6|KEhto>UM)t6=@sudp42b0E`eBE>Upl34)#kyJbJm85q)J)e8vFaF z`eQ)X`q|heEg-xbBWZ!-R6w1^*NL=Uo;l*WquJ~1eMA?#U1YM+7Tq%YJ3xPYxdsnGeB;I#!c(#sWiU>ZZW*OXYRWP&#;U>TfJ(&0I5E4Q_oavp9enI)ac#&>X&X~Xg6^^T`hxTpU&xO5?A z>1-Mst6yZjHQtsVe=Km&gf+J3e2;Qm?$X6`UBE`KOQ=x4l4e_5_^CgK9}a;S)CWM= zkI;Iu?ZgV>Lj6*M3}V^`u2*Q6?-LY$Y2F_92L%0V$r4?ZeWT%)JQrva{iCht32Hpv z5_W!12j3;4+*?$xwFfWy)OY2_@Ay#Pqu@C5F*L{%`s*^auA4+R(d?(_Msk&bW!wlz zv3EFXy@1Tl-DCxg5&L8kuT_m`ER9ob+(LWd*WgC8Xs})=``P)Nwlv5$xB$O~6+)?< z`q2U{8nQMNH2)Q#^`{CIaf8EmPp;yvVD?`G_W9Iu8hXqUn!^XArrGU*bM-=-qk4R9 zor}-f6dwgsQhZ(jWE)3AR;eZc_fiSUuBdF!|iMIR#fRE8uCA>AhY+z3OkiJ-dfSgUMrQ@9EYaQYk#N z?;vrW@iU9M%+!v1I3)i-PPf>uVOy}WI$6#X$LMaMldLdU=V?QF z<855$jpHS`aeQpa5Y7zOufX0ttSA{7+{4PoWNLEMWMk*_N!WDFk-Cr{xYrWzo&_rm zz-~eFZ@_k)alP=p{5NcZV+q-SK7H%Y$$YM_d=I-z1+6b;#OiJ`PUY0wHkIh%51%gl z7fM%8e0mrZ`~3Qjw_s?m5?gkD3u?Kxrw5}vB04C5z07LZrQ6oi%FHLMmfCgWHXU{Q zGQBF-%jw~$JG|&Q`sP-QMqTe+JqNY%lpIB-_sB!pDGwhMGmdeh`C0Yfi||bejrZ&a*fVbi8N52SdH2!{gxa1aQ#5@P7jbCI#wL zF!>AYWc|fznCnaY^`-uLwZC5Duh;tP%XCfc)jr_p?bW9M*<*#5dou+?z+ilL-udjV zY3fNYJ&!B0j=rA#wCZ0C=_-w&W*fd8(F-c@4x+*wzrTF_lfY6)lp;$Fi(zB*S5FIQYEX;q#AOeAsDi;9G6_&MPre zSa@a}M9>x=l#*)=oQFrwHynN3Hxb|A;C-eGPw&==YdqAG0GGThhY{qu$IT7)10P@i zv%U4jYQFv%s{ir_tN*#)`eI67f0ODvZ`M&{!S-+KtuOxe_0Ls(q6!&B)A~JjPvhRB zzuqajxDn||f0s)aWqZ<@(5t)%*OUGpmo9?zq`%jt3(=nR8(g{w;M3jrFPA92t2e97 zmuK=BHQ&j7@=E$>RnjG%2fKFPLm%(_iS~kQbvCV;FF{ZwS0bM?(31mCh*!~R-rj6J zna~aUpba zG(1{u6!;5D8Ri)B zm)4A3b2}hBAw*A=`JgK^nw5d;T^WYMw>sWgX@F(7Yt-@fd4k0H+d!;`L+(!%KTh#} zl;FZUo4OpJ3m>I(PlxEz{H{9jNSCpmOOOBfA&1*;q+1hd`yY1ct4ZJd{1jdAO7lOG z%b#5!pO~5CY7fqv5%jFaJbL3cve@`-u)0_vpX83vfG4Jf9pU6FVZAQQ5-69UN zNKuVRq-e;z3L14KWvqi@C#Bh~^$XQ{wJZJ_%iP$_H2%5KQXdT6x%u4>V~lmSIq-M% z0NR>0GuHV}SKu$YjCWWR5%L8tU4@W`x5yP3?kO-Afo>niI)|x(~J{b_=8V zb11wihwrERONPIO6{sb zW1Zcsz-$hGd<$jl<1YKo%Rka(9OW)Y&&z+D%Q)R#&anKPOnIKYi1Z$rH=a%DGQa%u zAFw=(nJTvO!BG1;*Q#{W@~)nFeF{TLjJ<_CIwh9su#Y==eH|H2&tds{h1Tf?*$7;G z$^M%Jvt&xWeM1Vr`%aA0bDzwWEvu~UAa^$81Yq5&{1z5N+Z?Y43Z5G~cJ>3lp4^eq z%iNLCajAV1Y02AB^VunYHQSX(mAhiUoz`@O@Wi>y@a%VZzGXh1`ENMXe}nq)&bAO` zQ05Gd{Lc%4jpNBXNR`$*zy-|T>@c^DEXP1OOBk`^T_$z9%T_{RZT!ZMlFxY{&Z!#?^AEMLkF$(f5q$||RXtzyKXDu`WN{|i6h<$TD{zQKy=<^8R9 z(Lm>|;FmIbK2BMIW!!AS@7=QK<FC0vn&*b3Z5msG<;SNPo*|YN=qjp^Xt14|D z)=*K1x9vAjfQ6&<42_APvS<3vm>Vw~;SAq7aJ#$Ks?DRaUJwj=FRkfhqun{!h%pug z;^eh7?ItJv97RySUzl`HI|B4KCwa?>Gk{gR{x{b|G z{i5NR{F<^HK=(T?RgQPPlnr%!r9JsA&$g|Fx84@>0^3H0e2_DzlJ_xZq-O58o%_;P z+I03#?o(sgsXuP7i8y(;W88af!huDa;7bl)=>c8|ypb*;xnc4wqS#^5=C}S+4#l+% zzXN4E@p!P`ow(f4@tiQozf%=GPynI#8)i`sb#_9q(OjsHa0F+8lT|(Te)qY~Vcib) zc5u5MatF89I0$O{)JQ34p2ygfY#&9f)Ow-<>?7r%`PFV}*`?}mQ~K0bXP{W2Uh`bn zS9zb;zA+fPmn^&gpgT7r)hm+mDe6ha7g8GQ4@s3q7`5LCi8}gmvD7^tpx%kOdcF$! zB(k=MHNu}x^&&+2nDI`8-9&d*M|$XPY@_j7Nn2l5J=joZPgl1O^Wh1%cpZBRp7Kak2&)MGh!x zu)WK4{w}m-I=^`p)CetXHa%$GqkHIy#fG+j!j-=^Uw&)$ke1)L4YAAbM}7yqdN*lWz+tXbx7R*d_b(dGW8+I$ljv_44% zb|2}(Cl$sO$i>dPXcs&8Ze!(ZyE#!?IW9YDE8CYrr96nM>M)xPnk%zr*uk)G_CVJN=Nd`* zFdh^VW%}y?h(}6=)(CsIJr;)ovzC%@yw0pZy~YRy&5e0*25T~Cg(4Im)8KSHfB?Hz zt}j=m0_Rj;K_<1C>ITho=hYq#TVJGPp;Z5}Dm2b-HWw=M3RmV;R_5^LD;FyB6<6kK zR%V4cEWMQLr_*)jF0wDE62pGHz!w?%9W6?ACO&a;oFSZkIRp+|cj{mHROgCXf6t3g zV$Ix(Pm_o5?8MOG9x&{e`I9K>pUxK9g=o>&B@a>ZS@HQT^dY&8yQy90rX-&u*)glB z;6~qQr4TniK@C&Ji8N_a6rR57pE6+M3jzZ|wz+jtZPE0Amx~k7j=dQ{bNDdyfE^P; zD0V#8$ObYD;{o5sL{`w7dw{*Z8SrWJ8RS4Tifw)z&i-46ydf~tVY&qA{ z<^@1=#>Bc;QenQgW0iu&E`?+jDUwfBUYtsHx2#9%4JlG1MLdnEe!LBlv%$G{QVGeh z;QF$+XJup5!qkZM0sWu~>H0@9l&kQAtU{?!E2R}my%h#j!FAq~SxCn9_sKt+mFn@7 zc?I`rhd6se)at2lOIE?-%Lk|32uRveIudYqbgbVlwAbX&9m~q|I$>IVX~A_fH&#hK zS807#sZ!u@`jwK2&C2Kd4)wKqn$DFzH!JO42u%B<*yzeat(qU5I{0(PM ze}R@Is4I5n+ZLux%Ij0vEKijkJ2X-Od>(8z=*x|z<+MzLa1^YUS<&Z9Ryn{)tcc`< zaa3Q$2#t;BdDL-a;#EUnCCBLJiyEq^c>|fAfg!j#494@$S!s0Minuuu}}ue%5Q%=ItcTE0F8=J(}o*wF=*Ra+o+v&5Egfr{q^^ zppg8lF3_~=AdSwPfhn(z=D9zp4J2O{s)OA0+K>?#n9+0$in1SBG&(X|8ys0uTXN8M zFhI2>=Hs|k{6l$?_u`&T;7MMFdpe6J`48^t5}xEhxTmvct`;co7!8NDf!eTnMzuxW zHEKMSTyueZZq5g4oI;*CEvuREi)n~FTwCPJ445S!SzKFONSF-8$$NRz9uZrd{Lm;Z!kX5AiPpWA?mf}*K@M@eqTl`Dq-~T<8xA@A#hxah|Lu+}~S6;ht<;A!lk0#40 z-$PYcx=MW}M*2VM^Pe35|9yS_v#FJ?KG;_z{ z=IKx%PNxd^)4s@Kn-}IYl*%bchuYf}S#hN<7u+noR6l(_ki)lzf#Q4E|W@*GVoc_fpg%phT5%6%=E1jwN5SbH+2I~M=pE;5nalS~U`Ni~I*i+DBcI{jtM!%< z*c@K|@e7e9He5<>UIHFD)odM=y;`TJ3?gE>PrIS5ecuHwj8>a(rK)#c=azF?`Cp`v zZU0H$JWAvRVAs;@x-yQAX=mRVna_k1q+%bDj+^&(@#{J(#l~K^n$!3q=B((W_q{sW z+Alkax7cN- z@nSXx6*Ci&nWt1Z>~QvRc3CFNgetE5auc?h=W7tvMV;P$xI)L>`A&0JA!s3`6;>;s zY0R9gwsa3QXsj!yphk5FjjNUA?ktyjB{f_ez~zoRjCw6@Wrnu{WbCscTsR~lq>D3k z%JzmN`lt9xK);zV8Q{Vwev}JQFreKKg{tq55iOU7Aiu+{knAiBEl9yx6%rwwCl{nB zjTD2K*TVO?AO+L zLJ|%@J|wY7m3spps=PXF*G#{wCd*H&KKyYfL!OIe(19%v*a7ns93Z&~Lovr?`w$0f z>OCQj6}b=xaJMc5_b?C?iKm7Y_t2e-duX7_g%)4qlh-S9S?Hszp#gap_-O3hR9rWs zwvoDwch2$)D!rBPB7D zxEEt?VE_ZbHbAjpocw^~QnCsCCsDawP+HgFNez^v#Ly*p*3Xrv#L`oEnQn-J=09C55=u}5km=gzLNqP7)6!#O0BXUD(Fu`kyo95 zO>3M7d&;BbCwzq=_LeSrJGG|(z0`vqcW@LUNP!BD5e7IM;J*+YH)~2yhcFP&3Yy=g za3Q&Y7R)n1UXr)yVU0Qm=la)*bV#UG8LpL^|D^`{?IV>c|3=D7O4OfaWXDGeq*9Y3 z*$n8**_@5}-$gQb-C)B$v zt*csZcoubu;rsK1D&tjs!vK~}zN#rzp|KBh;jeK!5a@V&^N8g8@x>CDI{l(*Ir$f1 z{ajF7Lln_XBIG>X#?q7p74=Xi$D8f^2{?o>h7}_m4<2=fTW^x@taXs@S)Z6=)Fn$y zHimdzY){>%^KANNY;3*|%RqzPY9`;3RLXzVy3Z5Q&vyydXvMiWzPh&MJDEvYLWeok zeC}Z>@Bxb{DGTRCHn|ctPb4$viw(xpvDlME3a!eo(~OYU;TQ09DkOL3v*pHt3~gpw zM+!vM7pg^SHYIZY7S(L3CbVwFODa1r3C5xLJc# zj?k8#N&YG-d#GPXp*p)qxpjvFL4#pYt3IinsQEpL<>Hb9<*A`^!Ui?CL>fc4x$3NbBdHQj8n|{|v_Pr_anh z?VPV%Uqm-YO8weKlYEo5`R)N{kTwfPp?wQZwVs8ha#lhM;ioIdFM*Hr^Ia@G_oqwZ zRVQfb&ndh>h^$qetPRu#QuSRX^yF0=9?-W$h`poHMqhstiD0NV-gF%s^$g6*e*Ak! zu<>ufvLB)T?0#wA@M>EsA-&!=d@t!CryP9vxIT+@YW)};ACR8O(O1FKtG}tmZbo21 zT5prba2ygo(IiotF3tXIkk?O&vp?sO?5flqF?cU$neU^IQrY+$Z+TwH1fe^<8ce5G zI}!zibpfTA>?wRErK{gbAMaBiTi=F?ib(#5UgmhsaZa)ESa={~8!0J+`^S_dhAsyf zFOHIb29Q)59|I}3{*0j6KB_y7Gx|$TPv?Aa4?LwD+llG8v7MD7zz@UeZ8EVW;& zf+t^<>bywb1rC0Y8>@^{fka54?&**v=NPzIIT~%D$zHXwtKV#-7zrDcdCAxu#Y&+V z*EeemLxWI(d;mz{?WH5cVZg|E!??l+7?|nkG{^3~yU^a-`k`HE{sC(7utuH;Z0kLu5iXq@*SF5VhREERBJvSu=zkvWTfYqlHroY z`s%mRA=4gXl%IAK0s$UYW%?;a4V9Ay^jX9UN@-;ZFHRlx*GkXdC`A1UHipLc=AdB? z*79qvVjRWmW6k<89GPA#jK};eZ65EQmX&zg$&Rw(rv6>J=3FwqD4mogDiLgvwk_miC_1)cRTfB9zFO3 zvL``LU%mNyX#L$`w|vF|*bfz^I0x=$Pzwh37ElOZ`A`w$Yln}_2E*~rym9zD@bYIZ z9U0tzL~2J0idP0d$;tZ-=`cCxK)(87PM4FycZ;X@h(o+`cyC&`8kMFaUT<`yt$)M` zZ}Q_@+0Ue92cq)Spfe#>5CxR{JXbK&ID-*K`rGSh4bE>flk>-1xv!@HM+yvdccHFt zH2JNHxo=EqpA(XUKAVcQc@=jA4R#Ve5I~!_w7w0xd~!9plj~q(i97d-E+uEf`i0~h z5&(Ce6;M~zW+Kg;plnl!pm86S}D0Uc9`AELdK)qbCjb{3GANNqI#IP49onsPvuF0BTQ z{Vb5TK!K%%b`-ZuCU7?x%xI}F4H_ZV@DN5@+%ZyUmLFq|qB`ZVvgM9teg)ih*Ji@e zc%zRNnWC(4dw_EE%@=?eMG+$^XGBSD_RmEVFW8G|*xPKq@@$Iw#VCaaOR&N%wYTCk zUgZgXp}M2#TKD|fEQ)hSvsq;gIDs6T`K)L@Z%!*C;|E5i`P5IzHanq~dR;j6)bJa$ zZ*^A{0q9O~`M;x@Y)dO#guluMd zv&;TceIt_#Q(+o5<&QO2K~k@Gx;{U%13b5q*Nry@$NVDo+rnU9NMY+aUfpF5S_&Ax zktfEQs)i)8*@hn&jp={8{xG7J)pzGk{?d2?Q?1Q|w(%p~L+X6B9DYtK?UG7NwtEVR zFFOpi$0>cejlO9faV6LHs||B~(#RGayVS+C!fsrPO`=&?i+56=VKSj99;F9ki)fWB zP(?u>&mw0$wqTY^>ISna)?VyGSx#585p@AweJrotDZcc7L{0nn((b`-M|bt~-`nng zLq*SPS33F`^tUM5hwZa?y@T=NZHUFh4D^(gjlmS))!WClOdys@xu<8!tU{0ctMQwYbzJ1)%n*s8+xysg z4?GAf>XJNGW+G~z0KBa9?nKX<8xgapev|;GWtU>bk_&BG)!+pOw}Z>ojq1lxl9xHs zN2}=CXuSbNSq)23{b++$N=`Ny9s~K*{?=Cd+lxz50-<3Hlb}ltrwkx)e11tA77MP*}S^t{(4~AMN>2Jl` z*^K0e)p+ysxD42wR`I(h`9^HQVvA&hrS{2y!liXL-Q~NGxJqHH{uqr-*za;Za&Cd= zcyhE=N(8|yxTT)PQ?n52lY1Jo1+BQ;zQncWZgQ=$(mTdv<3wwY)j=zmYp+~Cd7<_e z_*THWKe3->(&@kJQW=a2#>;LICNfQz+zN*|=0-5bnq$W*7MI2OUC@YnCmN{-csDLH z(}`QX@hQ0#nsn_YT~!%R++xX?TL6hH)R9<3KdQ5+B|lbrS~|*N2pPYjTbK2)SuRwt zkAF{#GBQxR!ler!S&8@vXBIgSJz_i0#=TFW5IgbDV}%1NBmbt^AIEjD=eod>T6-f` z)@ih9^hZdga~q@fV@Wpih&Rc~w%<^0meB=3_0?6D&@C7$xEA+}+NV(uQd`{KJ$2*u z(v>fTi+?S7OXt${F3P=ox*9uFXrE$Z*DFeY6z4^@ z0&ARw=JxBad|npTi{1Kbl>ANwZTYoY>Mp;Q>L-YbrSyH2Nay@Gy9+x@xA}$F9m;%e zZO<KTl6gCWWLaq`PjbaYyLshz6>-G57f{g zNbAWhvnZB4&LZ|n>LMx)S{DKii3xt&BP&mJ)g>!<^6NfAK_@F0laZ5^;@C($gXtvt zS&O$mBw5LGr<0qx+)0c7T{(%76Q*&sV*1sLb(ff&oR+d~UQQy!cEfx@QJ)_YDhmpV zkUlzX%?rwc4LuY|v2h85Be{BiFL49n{XIS9{k?*B?z~w2f7E>km}EuOc5UC=al%ed z&(3V#Wr5|gJ+n)8S%L&XCFh(o2wdo%1>AO4qKJ~g1d>)zK}jkiB4S1{trGkMT@Z85 zS^56=J*Vp4y4^jy`|25RYe;f6XPP=T>10p9})I-}|3l`=s|4Qavw{H9g=Utmj9LU|fzvo=CJ1RD) zTzz?7!gLw4aVRBH9_Brmy)DGQz#60?10ZXru=3;ZImTDewkmiFHuGxb$&x^83SSOBWCgjdQVhsNv__TO4MY?73O`8Z>xG>7*SZ^wv zpOP4>H?`orsW^rlMu((pM_?e#nm=aNj*GN1h!O|reCR=dkZe%+GB->pSX#YpGH4OL zZQh}538rz~D2uvL8o3TPXkD08zp}l0$tw=)o}6ujrDT&{kCwCz-It5HFWV&9oQsie z&c4YO2*17^n=YM|`(`_Awe201af6QG<~}Ztv}-waJ-+#KKi9ehDXD_Dwl%=#)@`^I zL?avzr_UXRr-XOGN&CRfmyeDFNQE4G6k$=S5FO1Y2y$`|@HFW4(J`7=h!D?6wx+IC zumP2Y=y)coO>jfB@h9OIoe~iEa0Qv;#Dc1c)~G@L-QLk5XyH0sONSn^;R&o13N9W` zkykCV zsEN8H728Dt@Pmr~#dh%@<+?Pd;=g0rR1_#$Q2@Up3gA~nfua=!pz5BCE~@+wkFDst zMU@GZ-sv8a)lRC7GpL=&!EO~&asm+V&ZXzOVymI}(9`%h;1t5i3kRfQvOF1+T|r2` zwI(zP94W=U@L>-imY`uAe+r}H*Z~d16&)*-i@N{9v66_JN*F%|Zi-KZE{^33(%g)K zgcN(}8rOo0mR0^{e6fNqP|&qTA6vBE1iV$WxtwZ1h_95_=OvectVAx3)AC+`dq5lr zJPX2XKvqU?ws22_8Li5D>nKX0lQkj_H0Wsr$tbae5YkWQh#{rrpHs zTWoPbpQK@Ct#8A}NyFlMS+9l>8kG@P(b;8psEq+ZGKgpUpjrH^#MBN0%554bNaY&34i`be8dOzE6~IxC%lfh0N_HW zHIDACK)v8%tgM6R8{fQL5TB0{-ywd*HCXT@;DVKaUA#lU?;SDbz}1a&6*`SVRqGS$ zs%@*yx{B7-x;o4c|IoT>+n&U<3ZO2gRivh-RYeU~fsv@$+1rZ04bw8F$S*Rx{7(n)wFJJgaMFQ!~%* znmM7F=XTA!LNgoLOx;)fyOE@CLHs@RMco(RiGtYx9sd`{O}iKH3q!bmBFy)P{dqVP z--2qLpNsIAO6K2$$Cu#$42hUh41n`d6Mz=f!M$wZPJ?@IZE*i>;jR*{oV-56t8mcn zx7GnS#ln3N^KotM<}BRxetqMe{Rk}F62BiF9M7D*1f?=094RLj(|7|^>s*ODCGJ&j zqO}>-88{oR4k2;C$6NZq?#vP+&Gp2(jhBFCfMB7K_-qgQZj8TpDK##ZRVU$L+jww~ zIyemvQ#k9>U+Tf7r?;WLI%KKJii1rTi0wW2^k_A-?z%C{+sWZT{XDRZd8P~>cA4g7fobAhB-vJ0atu?$fpr8{=n3`YyaA=L zn!Dg&IDze}_5rp}nn_^gv~<6nWZRX%iEgcNki+KJ4vg4hIQW(D)KaQuj#3^9Z?p~`Mm80sHP_{NLtWJw} z5kgS~SV0C2mm@CBou(mj1IQX@TC|+`^*CI9P!|ZMMdt~`-r;g6sU3ANEjnKy>f!R; zx;sWV5h(U zC>6hpjV*;J#P#JDp$m;EOGZEu(@=Je$N=l5t*!Fom;b_YZ zz(Eh8Y>l_~xwmCEXf^}hC41S$n((ND7#m;uZY0_0-Xz3@+XIQl<|=ll=&ScMUO+k3 zbIU^#4np+~faGSvRwW>$?9FC6DMelW7`rS)sBa1_@w0eUQx9jSOvVms)rBxg)Z%ya z#Jr7Kv}-b3^-f|W_u(9jUTp@-!XOC2RsVDMseJ>&(MvEPMlG^%uJt0Gaf`hCWqJ@z zXodj2iO*sm*#^}h&Z^pc%AS2-kwQ2@utIKv)u1*idWDw@Pq&|h@LT^eKwaxU#51lS zm%mI8qKmb40n*kf?}vu%7uo(ZwtW^t`vgS$tSD{&*|oL*Gl07Ge}d;+>!I$4`z(a^35fPt zQQH3Z+S}(C<_&B%|EoI-j+PDK72eZuj4k|%?kqUY7T$QD%z`Yd9<;y>A%sEqp5%Io zW2Lazu7dO%8=3ehSaxQq=&~nU5Ya^z5{+lFWuFB7)R!K=mUU*T=qWC{7x|`fnbgn+ z068!y)gXeZiUcfGFx$>9G#(<%_*U4};>!}ivmu56a4Z3wTWEYmDw~QVwf-fC2P^fh zakl;ENw&5nRk#4HZlx6GG)znQf(J5tz+1A%CGK}=?QQS#Wo^A`>(sEAZtQh7 z*hXlgL0_W{*g@fuJQN=17tkY(a)et=-y?Ed0<1QmtadkAi%&+s@txZHF@HU;5@SR{ z**ny~NISo*3`$be0iVt8q!#-_o$+DpHGSFsWcK>PQuqO2*GlCgMo52}J7MPfLE825 zOScDXK_r2m22TL!nKtgU%sZG4skXWYoNGUk>#B^_;ixC$Ab6HUqwH}d;A1;N{{ z&C)NRGmV3hmu+u}Yme6x_T>s?pS$FcKaM5|cbTOZv5Hnl6`RB8HH7iPb$_r#4uvwq zrE8W+7YLI=+|YXJ+c$3RsDxUaaJfD74}Z2TJ*uViwlwK1q5}X=c(jHcwujRJHeOy;=_zmVk5S52KUP;xow~mpE{O{DlsY++9lw)tx=yo8sg#P8Ri^Zx*?AH>%k; z3q((MPT$ZA>X4+?mVCe|iIum#xZ!$3=&J}?jbf-V)`*CX}z zG>%61Y|sjz`hgoMAy_1*H()b>SUTEoZ3NK}xRaKi+eml^om?t_)0~L42DD1TQO!c% zA;Yxvt)QI9_?Ee|Rg!JQTmp$9K7p})ckO%8Um(5dS z0QpT*g&Tm$Lg5A!ZgaxP6p?j>EdBL=$$`~DU01A$fy`Hefx$-3r|ZhID2;0<%mCJr zbX^GzEZSzOt}DVsiDfSvWsXx0XAlL;YM!0YJF15RKJl3X&=ZFn z)dP9tusl-D3U+1lDE>Jfpq#Nc(g(-`EAOYv;#8oNYu$v$_$L@U z$f&>M4d}V(ZJ2>Q3iF14%OH#>a#jz^)v8~ zMMqOQM2lz$qp2q&@l)H&K8~NeKgs^VtIW_#kSVVa} znnw(IX{B5gOu4Z@Ba)fM{GjoxN{srn*! z8kICo1|9U)NC@rRebf6Z!;bqaQP#h|vdBvT-he_BzdHA2_BW~)bzg1==-ii4S?2yq zI0Qe0KE!9TfkM0;e&kxD*W2U8n0>>Idx8F{YGp*bfT!t=A8XPKuRlni+4!fX%PiML zt`L8jbz7n)VwAi1miSM_LZC;UVv(XavNJfcIMVrg7Pcm!xPjp@a;JF@vvEda;sLU3 ze&Rv=Kx-gB9}hly9McBz3Si1QzrgWMLgV*c@*70&w!b&qU#tqq4Msd|0$M1Ynaa2ONpvW8DYv>{gmlUd7Gayn<+Q?DKKM( z@%4VnOr&@rL;Q3=yut^Vl?C8e1>!dm0LYRyOMxiRt5Q(C7b_OO{V|u{{(xGK$&X_! z!qUa~oh;;i^+N(RpGC|DjyRzXbO`e_*AnWtNc`p_D2^bG#;yl*on=OP0dQ}9rni~l zlNZIP7ef<&l62IS9~$`g*37hPzS>HWH6;1{H9$K^?j%b{Iy z8Oq`ke=UQ>OKZmh#_R#EdZT8+K3P04T9mw$!JesSt?H0BV8|Z|6dP?6g?xI+TlR5ls(DF}#qUxJv%W*CJg%7ylXw`|4c{y?_XQ}p*aurBcz1$qy-tmBK}5HBZ%)u#4%@D z^O2`hM(^h=v^KEN#fX=F_v-rpIOvY8Mz(%C!%BLAc$Y4|&(75yfx}$IA^xzPtMZ*5 zw;V!}C-iIm9yXfRZ}BJB`UA~1*wV1KYVz-x$33nP zzeiRP%2l9(LBFfb@53I8IIIamnNqHKH%d;hCJ+rmhb7usj%eEo(VA;es;5|*V7sPR zm|&xpCNCFWXfyG4GQcOzBFYZB{_Ar^#!}Yf+GahxV-?X$7`vc#22jU+7C!>@dUPay zjFCW$uZ%>{ItTe<@Gc_m7||+WZ_q*jNr+GE!u1#8RR09_EoP4673cR`h~NPHG$tXK zB&_8TRw+qR1-yY_t$;(vL39;Rsv$la!7AZc?_lrC(+ zk`nsd!lo#lckl1OJ1&)#GB@HG=egziI>K36I9M!fAczHkj3!iZnOMg_8k-4OGtE19_-Wn@U~w*BFIrpB)_B{LQ0Thz=+<@8$6H<6itC zMywmaeFC5?H|-Fx98~T*kmi;Ewy6^f8CS{RVt)?J67cSZoLetqBJeIS_8g87!nGRKS3=ET7Sgf=))kXC>-rD6rmzbA|g zt&dTC#OWWLR_n=?iqXAjL<4t3SA<>eS15{2q$BEa?2GOuB;v#MY@xKZ9IAP)5-e}v zrzcoGP67qXm*Yq4<>pi=NB5CI!uoD<9F=Lk{2mE(FQzV$m`|nxsptVsoGCFonplV+ zE)g=1yJhWlOhUVzfX61pBiDjSG*oY}_=3Q#657qH0W{Oo%yTUm$iqT&vp!7iy5ZeQ zd2 z56Wz+xWZi%;ufY~VpXgZrl}L0RGZcK4w?>Ha21A)C5N_Q!BS9aeuYw4UipR*kAIEV zUVOcaWrl(lyqq8@F~RcAG%UJ73%(NVKywlC^2Vbe@tTViFN8l&g4cV1OwfW0GHm=i zix-+^F^gFA2@+M4eC${f*!`J54m+j^b}$NB>^AYRquh&tB~vGEa(_idA`9kM=a0e4 z8-0u|6(ka%81;-|(OG~Y#;ta@w{TJ9UVh!#}LexABNV-k*V>TVEXE_SLxNq_^pQh9MbCoH?VoI zylTF~wSJ*?Z7MGY`3;G%VST^qhVgItIKVHS+z#UxOti&$i?4hTld)QjFqtd(-a$Wi zD571#cM=AbyjbrBT@;z*1tZvmP@h=N2>d?8oNwqlTtbdDn3m%~3={&krs~7caBUhq zt*ClhJQX?Pm!k37aJf1heVlU@5kb=y7pf!G+7@B8R?k&OYBhX%0>U`HLxJzHgwp)u z57w%H8SuFWeZ;UV0OW$|g6ak$w{y7ez;(&Z*AR*6Q25~ftJF4H`W+78M(Q3B zPV`t$_!qU)|KVuS)A&n5T$s*3N>mZ^6n_xa0mgw1H$HnfBOw2Zzut0HosQ~$=T$eo zaq1B?b2c8vPvG6dE0Dhj%&Qgg;$i(hQo5~8U&6lTpNlAAtM)!hSk})lyN2` zlG;41l50vwHcOiEnHp#yuTUW7jxQdBPFjr*) z$TI(Og=2wl69QP*(>Cy*ZEuRU$JlnRRpOSwRw0F>r5-LIv_#;hSEBkA-)7}|<#+MQTjY1)O4yZ=K6mA9@;lu4IyfOovN%>my->dzs*mX> zENhqoBJO2vz9`H6{%zn6#F1f~Pl2yi&iIKLH*9SS(tGAD8e^eTNIQ(sg-vJu zd!%3%Sr#ZAjF`snK{xwZo)eIxbaR?^c?d!JSi)n$~TZg9^Ubcw9g*t>hO%3 z`jMeR*xC-b#rvQZME|yS6hw;)3-MXp8qQ{N*xDJXoZ7?*E*MQvizdn-_<%Q2#K#J7 z{1Iqkh3Jdu4Qv>P;U|ng$|S67M`+?}B=KVc2U9!Y4rEdb!YXl(4wA$${;iIV0?rx!q!sl33v(o;D7SN`xXe;){YHtX4EorDW(K( zt9t?C9h$eH-px7Q_G~iPF;{N|tt-$-MUN=sWM#1sJw|+s@k?-^0j649`6y%(;ti5;Jv05DO{j^}`by?xPGjCieP`2|7v42Js0K2V6<(+pccAVE;--|8S zS1hH;T@s}GD>>7SdF#(kUh}30NUh!wrw2$8I^O**iJ)~AYKcArTH0GBWDKV-MsR;R zn2<3M3$zSq-h%-K7vhcQ%k^Fgy(HfjNG{5^Akr-K`KPg}+4HICT@^XGYkLc~UQ<@( zKWx{gUV_(ZDlVGuXrsBj4Fjzk zNoF}r4~88sMxRrbC3i~=CERu<*(G6X+!$VtK2MmkM+t%S8520qMKK~iL%Ea=jV}JGm*RtX}<%*s?4J7hE7w^bh4}*6y%uI@YvzQ z{R%-S!{}XdTghB%o-3PwHyyvnq>QdsgF(pK;(4VFak8G;6MA=d30 z*_zdl50XqqFfT9Bk1_ zU|gv3-nZszj9sk^Gi`hf8ePbn`}c)_2RrOC#G4Onv zR|&0J1hRI~Ogf<@J%Dbq2JrGC##H;vS@% z+zQV5z`OxvUd{Fdr12akZ6J1O4V)c9FhH}HcruO$-^VB{G;8KBG%wHWF^#_^z(ujN zMK8)Afz{Uxxl1(4Sl0U3AV0;DQ~h;Hgf}z842_xa7b3mkd2=&+F{Wq^>95+)eUB#) z72Ni@vBxo38Ge}dnKsmmGWfeYWubXYw>>%vg=~-XQ%3C4yz)@<67W5G6}I>40u%^^ z1pl*M0eR`ys2SPS^$X9hb^RJO%T96q%8v6(X_q>9z#HNY9_R;MqaUY*$papbG@d2B zewOBQysrYic1p(Eqt_gtUh%~sjO@J*1tdRva z7Q6K3de>}VdF2mXsR{s`*dy zBm-m@8S(%|N9VlE?m-T0G7m5!TiYS~B>LSs5dhGAa+ek<{|9E;bT@8zo~`4SGlAJ= zTjhV^@HXH8Q5E)timp7fkAt}2tvpyC@5RU@E-V`Rrklnt37D9N>`<5-EDvPEKE=M* zG|o%_^$R-+nd<}gi6OFBjB8|KEKOxFq2j;0={>;VkLN=i{=1v8rklTkp-IrK#e0J@ z8uu*2WFwCtQUQOXUjrMD=72G;N#9kh*pPb>=Y{-_z75B|r>=w|wUY$F~50hH|ff!rurh&KW> zylC_V9D+xDnhn7a><=U_{m2?>d1=j{oQ1`s7vE)9c+e7f<;;#|!Ev%A$=Y=QYTuoB zIp21CADWa{oI1lw5JV(ojG^!)c0o+sV*Glbfx?}EBwu!f;NE!_KwiuGF^Q+4TT=5h z30Ps=;2&%c+M|)yAl~hE&>|j28D8NU!qN`Y9Pr5%qZcxzs)Zzo>3d0EDLc=D4dQid zI~V;GB~0UEs8JW6q3BGAlaY0iK5}?peJP|8CY0mpLhi2u9YGEs+9sJU$tt-dUR5(fk~d29Ohw?wjr3vXS3QGfS83H1vm5a ztoa=FvA@14!a3&hu>{{_5I=|Y&RuoE(q*2jwtekSdNKASy3kMkLtE%~n_wwEkn;&^ z0hN#`TX9}IZFZ>Yy-d8X>H1~v`Isp?-0Yq|KV{j!^_gew!@!u=zasu>8~2?p1$iBo z8+9m7xCR8S^jwR=IH-7NLPezF{c^s8$7L2;va-}i+_>?@`x;rcQ90h|&j$eY5QBeewQDG|w zvXup_dTM<>ys8`Wu|SSa=RNUq&-B^Zr1&MX$uT?m zTA96y`zWf)>}2a8{w|nZ2O8-~ho47<@EE%eSCgjg;ZQ?AE9aZKWu>A%On zUGQ&9u$G^GDBd?m`di!5VJ0@aBK_sIbjB<+k;bn}`}ORH_f3)a#Q2frhrd~c}i@&ki^T^4+AT2g2!G2WXg<;&!ZVnR%nKKy~>oL zzhEubfF`DFBti{WaK81JauY~n=f(x-_;k?gumDjx;bQX3?MZnR_{WSY}UI@8bFBJFJO$d`7jtVJ7 zF9qEZdEj*0nI~Y6ePKKgF2N&3j@I5GG#1(%B$}Fo%8KD2 z?LU#nkR+RuraDMV#nwJ35XYcPUs;cYE`hyrB>pod88A%`WsSWDn0C9)P(|?lP`wgJ zgFFzd=!pzvNJV8QGT<|rP>KEq9MOP&uS$^oJ{suuC0Nl7a%MXdo#@7Um3c#-+v{FC zWs|erUZ?j0@6B-w;^VOta(hUZ(fm>bfsv89lHz!JL83v(#LIq57DvMGAwI&Z`vA)J z6cZ;iS#UN!vWZUOhzyrlp5O5>jaX)dvmtDHk~^VnzagWnkep*?)ti{csQ~k; zE=HGOkowBLqEg=*4o{xXaZ`1g$(2&$uOlh%qLd>>ce4M5_=Eg0Yx-rjrRryPMlbuR zuKe95^`f02ckn-igh_noAc#mE@fTP!v0RBwYd+Fo|J4CP8f|H`$?YTaP&8N3XgEJ- zAsw+S)NyGgj6Vx|VWp6ZAIC4q&Jf0=JQNGU!SJW{P{e%%6MS2gwy}R&mu(|&;KeWp zFg-d5b8h)4P(?rq_4&qcK;{ce9GEZw#O~hO+#!$dPGAoVeqCb;WtuX)- z2+z@U{PgCAqDAtmYgj24{R5EAU8Z9)={MAs1_vsBG^7fC(g(hIeYgjFY1>F)h_1lo ze4Tt^HIj1zrFK70U!R~lKUp4|oGgz`xjgPW(E7|l#2XW6b5N?czF{feLZ*#UV$eie z;uSwz;V0f2e_)Q0EdpxYQ)>peR^SQWpSGJrPDj@1cV)BrGPT#x<}eNIsZK0|6ofJS z#8_=@H^nYN-^^6f396Ti1<4GA@)7>!;2RC%uIzZeq&u; zZFd^CYy#%cK1t+QGHKahTb~6(#4B)HL`}D>8Q^|}C)fsDpVfpUTw~8K)y%0YT)%T> zC*XVtac*pMGK>J*0NLdykXZ|(J-B-q9YB>}PSlF^y$}t6;qWCduwaCzs8?PwVcP6A z!%-h{Eb;iw^w**t$S{a?!0Lg@Y9`tb5U3}y>|>8i4Ytu#)@;o+fX~=sF+WvDpKAs; z(}V;kvLU8Xe-Lbt@x)BF~<9mF>mR?ru%XxRK~VF2;+iAX3W954DApR2nO zb%l+gQxe<5SHUAqgozhc33bQ;Em#|k+by=$iR*e!Y`0E=oPe|e_0O~RIesBSa3t(is}ANBnZ zhV~<*JsIHmTGS?sP_4h(KgO>sk=Yublzs{$6GA5hZTl4t9Ok8DUC*pnq3gA&OE>54 zHZ@*~H>_jvg~;Mw!CHG7KVmOVW(NxKC7Bk_R`l(G&w=W|u&tZTuBr}$lx=RXIg zYe_uKXdI_WGYj#>3gw;a&MBN`iD}B3fR>#MUN}KoEl=dvx*#Of?h+5fH z^jj>l3r&6ZLVQuC8(U9SkAP+BkrbN87Ye~Rfr-kp$8{GJ{ftyAftq$EJ9^)MHsftc z?`r)#=sC;qh*PG;_+TP)J_Pe#vt|auh|d6lY^s`nm3fNsAr5PV6v|5-TMkRtaGB6y z_|u^YotC3!=1a1lp=a5AP4AIn@t zHyT!Ct%gSAE{23B8k%C7XlRbM?;xf-5WU*c2f!(~@L@;3l_@8l#LQRYRqr6E4A*+< z^Pwx^RE}oCv%3?rW2jbzRnYZdtAjbkFNv^aw)~{*0W-0D!{$Cz9U5*dKaKo7Gy>og zQTj@BBZv3tvK`=IMzs=s0z-?(=)EaJT5x36wXZc*k zEL181Bg^~V)J)f@1&V0nQDEl-kX!7{IjS1`5dc@_GEu!263BGs1rc?{C8|crB4Rncl#ki}CxXw)EMsfjxnAxBxTo zJ)x2FCpdSVq;oGl7_dijjmCQWJSKeN9z{uF181kkDy zJdW2g^nPXPIziLv@sjjIfGl5v7?IU**X@eAWftv-R2s;G_%-sL_U}Y3&sYX2kIz50 z_yRd(Hw!A~%`xWYB!P`K#Sp|BvbP1?guV&hn!5uuel6h^Lw2(gV0=Pz5`N!IK53i=uGbZ;r#PHzkpQcTBeVtK5HZFUp+GGW>?a)u)3B z_#YvwnD-FOgJ_IoG)u1l7)VAHH;6wC-4?LX0cd}G8R91xy$=srp%@l#N^fyqW!7xh zYwY3=eRR0-Jz%{G&a1#~O5yaz=o=(y21+7FHYD{^A}&Ki{^@7}Hn%g}d$C}{F;aiu zu4d>^v)y9ueOTvqLi(8;Gb@v0JbTkV)Hlg=V8lbeFdVM(s^|Dm$J%-u>k2A`k;8X` zm5w1LhQC|l-yZmPJpNsPf7jsO`|{6ieKc_03L z692x1e?P-N1Rj}TEb)u*4#fykwYPbMbAG{ADj0=004jDaj9d$*?fy;yWbyCNCN5b1uGFk}vU+(Fc6uSdtNu zmtX>+D;HlQ$nEeu-I5XX6#w5(n{fPQtWF)%CLD*{JF8>bgySIltd418liR0FIDRXk+ow%9 zj#Xn;$FvE@Z)bA*vDk3CCA4xqaG%@eeY&ecIUM_GuH2-%aTDX=9<=r%gD1524$qO*sA`Cbv(Ua2(#Q zSsl|R9LEket7F=PQ$jjb{>ZEV@~pEi)Y3g)|5 zP2V8<^!mq0%-f;~5eA+xFIH1S82Xo9g=GQG;h7W%;A(Z=Y<#p~Y@7iUwC|VY+g}@x zk8Mo-T%uN}AQKK2o_4P{xChR%`W)jjs!-_f9(Ie_Z-Mkd9Rj)=LOSG_WHm+YygG-FCONQV-)|9oNL{ zd?khWu9XxS-?c}yf2i%IJJB>!!}+aGNc`3`EIiK`jY^0E=Z~->^7JsCh%uYQ*CniT zyVf&|=$9d&-c#+pNl$~qe-1+fqRFd065hiS2uyS~8opi!vxgXHv;&EOrX(kHts)Hi z?+gJNY%aE1EKed7IbE3PkU1p=lOlwlUc)<7Oapl*lMWrnG*RwhFP-*B_%#hSf5cK9 z1ct11gd6pAgd1@RCE?QQX)f0H!8mVX=g)Mwr8vA}OEH-az)OJp3&yDw$KQY_arqUl9~WLvoU z#&;tQp8=Z!qoMUj#`-1M{%y`LsmS2_(wOBiCl_eEqn{TJU8|?&=tPxjI=uj)&u@LrG__5^F(a)ATg6LJql);fZ*HuwuI}u=F4+cSh`(g-DIsE25 zb$sDU?mysF1)?`nZ#Wrc&dHPs~*K|j_DRT2=dm8iWh#{|5VhFO8;_yu|gxrdFnJ;ARral5%CIB(S=89%$>oN|opl}=>vg5G& zr&+cRSy?G=NGBdB0+! zeF2Y8L?SB^7n(jEMl$6Rc*#B;1idg|Mf`)V^XP(YdLPtkEs~sC65sJJ{KBQ<``z56 z0>$Rrl9!^SI_6FQzFLRe=3ZEi1mEE2O8lu?2?iNy2fuh0odPF=Gb7l83fj%I@5LBO zEaZ&AFoH5=sQ}-CczUj5fz6SOD4z`>O+b%@Y$JsSbLx!EsWVoH=K^-noo^%FmY#h) zdciu@ANg^!#m`cE(ltQ!LC%RG#22MF)3DF5TC52JUg~j3t)%F8LUBN2LTO#`@pu%W z02Ni!iYy_l`_yKzY*8t+$e+5hHVy#Kdx)o0()@;71UP>=Pi37LN#`kCG>pdrJQ+vQ z7nq!Ik<5AKOBvyxB%jPAJWpHGxbVxVi_JNe1_u&$F-GV12+KEq&Y|^~yBHk~K26uJ zkaiXtG+;-?B;C2#I21MM7lvjR8?07eMvC$+R(%<)Pj7Ak2WO?eWfSqw_^mfl2Yxry zX6Kv@L>kB9ullP+*|Z>7&sMrM4`CB|bOz?g0)O%oMf~WQsARp$wFn}e&#Z&F7RzMP z&y#+%Sc#;&HI^qr>5xTN<(j^Q_IV3_Z;Q@fX2?rqUv|tjt|Ru`x|q3(z6a6qHi1>T zOeyIybe%3;y(n6I;n|eqw9+Ell7@9$9Wnc`Z&XmEY0?1QLLkCw7+K$^`a5 zy!TA(CcnKCyU1_f#P0IjKe4O)PMvt2{0>aKR(`7!JIL?g#P;}=y*|h{Qn!7`Jvd=UYOJ(yR zu(--n$RLI!!pg{(q~Qe|+vYuFNL=uTjg22XVjNy!WCA-LLLy0!Li~mVhn%7BXVP+Q z1swlp&LQ$%wl@CPd`lk@EA=p;oBP&3!%@l1eVtb=Qd`o+I?gwtmnT={S{#`ahHnC+ z^HY6KmZl|iHo-3xJ?D+O#*kZZKQ;14M{+HFI}2|?^f*?1m2zOVJ`l=5npv46?%m$f zaAO~g&8pH!xT-Y0F)q(Df>ouNjd#lPtir0&?8Yj27E^lTM|cjK^OPr~#z12)ICkU* znAyz=;?@s$L3v>qHN+1Wr3o9!;9xhpby@bSaAi3d|en7RB0@oDlK z#x41UqT z9D!fn%qw&D7n;|hF`xyRU7Bx43;1?H$8Vc!Kugvr9C40rCv)Kox6QlpfE#-_K@0d& z%elZ{p?xjJ4fd%t+FxqziG01;3u_ec+t=7H3y90(4;&1*Jo>2-Om8edN8KG-3`sK^ z7irQge0m_9-MCKQyer2!*8+(%d=qhOAECGjOhlCdT!vqvQF#2yw@#j3mVx10C(L#k z7`}DF?3jV!o4^F(ED>2G*WyAN#N$90w=%W3oCYym9Ln{)BLyS-4s<`zkzI5GeK&8% zAb^vkY#5(Ms%J8!nlL_JGK8mfK2GR-(>5G_i~4jdg$-vOV;0;?)59RZwk`# z`^HVh_Xh{&Rp=Y!J?y{nFM0Q9uEqTe_o$;7<`dQ$Q2h~5Jz4A}KZqxkKwN+4Ir`*U z+`WQ$CELV!x%W5YeIfZYZ?*y~oW;6D$(K&i1V@+vci>ct%Z%RbCes;<8P=R zCpw)Pl*pzWiwjvkkmwAc2YTTB-zO}LBZ0fOKvE?UE; z`9V(STuU+}l&bJ29=*D6Edu)bdQ}I17rq75kL%Djd zeHEo$r~V0MURfhlWbXeN9pv24iv?EZ{{`pj{10U6+tpxJQKr6K2&h2PEhyip zzA)Ac$2fy?k;S__8G!yaYfq9F1X>mwWHwxbi*MaY-4bX?A$&#V?$*%2Wnkc6-i7IzPaKMpP?9Vk;z^sv9y$9{I>?dyX)=jZ{z z9p^kCi(Q1dRN+lHm^dXwqF;>ng@pz=PoEjlDtQ={_B=!luF*%tL*CbYrM z%+bM|(w%XN^bL~@*1PWmUH?NnMcEyFy^%2rR+owQ!gynimA`x7Z*&Lib#j}ouJ>D9uK5&Z+U~bdS@^A*FLJfLzXDx>6e#jnU{?nW5K?hr z1>uSoZlTqP4_W=|tnG+v+@clsRuir?_K`E!>KThp@DvV85KuVC(`zz@H~Wyy+EID17XIJAB*x=vb?QaZgcIeZ(zTwA#`HUki`pJkO!64 zjHbr}o>}WBHn4Lckj2HA_nRd<=yx_qE9%b~T0I6FRxWG-dF9;`jUtUjS z94_1Mskk_q_FAP6NhtJbOD9n!-Cw^BK_b?#L-8Xv0awQA*38b-W$kT*&!pSAaF|OM zU7T;2tFBH919PO76&SvGFqq6-JdVh~@Xdp{M`4c4!0^q3xlUorz#YaqUu5?{*$V&Y7kSD#m%C(gt^QyL7^kr-qgiSu-?oR1F-JdI$8dE8X_QbIu& zm!!u;aUuMFqPEh&6tjkhAy!_3o;9w37zbJES!~$qU{fd89uP2kcsnAt_OC*efh-q9 zFAUN%f}4;Q+QQ#OVGY5IUbJ~A0YNSg!r-&q<4|>{MQ6ZAL^%!L9FeZgwWaY5m~*Oy z^g}7uj~qm|6;S}~%||V@QsZG(Gb|S~)XIwWk6E;QQx@9cQtQs?^~k6NH=_+E)LY^;XBHaiki!y56hYGY(^$9qyP(Bk>DFz%-6t(mnfm%{~-$wUq`-j>M9U-|s6}%qI1gk6Nv9H{X;FL)F?? z5eL@Pa>LO=@Np2$X0QJ)W$QTY(kwDkK;IkBc87#i1wdx?Vbl(x0#xF?IVXjWhjomO1^~VylJYV5WjHrhNWDb$99cImWDpnO381sxzZ& zpd;PIgxV}^`x3T2>q>!1C%aj*H9qN~5FaJPOd$+Dq|t*4OyjST*4Si)_1;%!Cj@v2 zX^scxXbqJXYMA5oPl9L))j2U1JkCpee4Di4_hSF857qc9`cR7hTOX#!-_?gg{DeLX z#Xr=CTKrRem=^zBAIkAB^#O`539MYP*o>`PPj!Z^Y!x!Hj(-tAno*&QzYuxK9o zl!-Pbi21eY`-hpW&liWYZw*Hlqd0D)$}hbrzx54x=6wVAL#Mli`_<|hj<+g}W#}+2 zSs;6PmvQjx3fq~$jt<`zL2JDh>+y0}2k;rm(VkNL1lD*kHeKL^z%2w!slX&sHbr4a z7}jOUISGvv;*XI5e5Q?F24{~CqrzIaW(WrVw*pS%JIZ#Ds@S0QOwHwH;9X{j{i2Nm z>xi}2jTIZuqF6oO_!)jgaYG*admw&qWq%ugLr!kxrP$}Bqjo!3@FrlDMTlpM6)Q|S zUZse;{$7)S6)jS@5mRxB%+U6VlNTBx_OT<-_H80_AP!~wV&hs=qR}RZLwO*1nOST+ zoxD`*wZ>2Irl;+3RsKu_*9#a#yHT8;}WR!I?-^L5#oC{h<%#3jep7P_3_`z`}{I#y7^B_;X8S7U3PNWI<26}Q2 znrUIhs$AniHZl zkMC;KGd7Tmjz#_`E`m7$zplL4cwdjU@6@sKnt2Y*;HHnULVPfu;xEAYH#*_8*f zZLct&^G17&I%!AWy<6RzcdL7-OWktV!K-u&)3^u&*X&yiR@jBdUWrOBdXJFQTciAN zXwoXNj}?IrR(SMP#sy}qk%{X8fT<)j?!&K+ZxEk}THSifzHF2Bm zUht%US@9HpLCJoTYixNDI37l7fLT^N3uSEP@-%bN9;R^@UTws;v<7kx3n@SmqQ-XA zc5C_lI^s)a7TX`+Wc|sRjT~KYrw&nd9D|7ep$R59W7%RCV&nu=U2`kUqD23Yl0oqqua(be~DvS zrI6w+!@W1NWXsErSWn~bwj6wB%W;76D*YJB%l@*1ue@5WZ5uzqjpN5Y!LQ_SPG`Ag zcIGoy?ESLVL{}*J!Q?Q}3y)VI05xxiY~yI4eDVQZo37393EvhW$Ux!@Liu+52Zfg6 zOF;-K)~qp9m8>&4e1%t&;PJdcco}C2009J^lC#r@`ZRZI9qJzA3MEmBaB$TMazR_p zdcNASeuHi)=1sakdcaQ@ZQg*lBkrjq9=P*xbY!SBSbllh!4N^J% z!6#dX<6}2TOXN+tf-_L%k;D4RI#Re+g;jlCj3;~ouNC5c3r79ab z4y^0k^41Vt_zzkAZzsB`ICmwhWkm96!rgXn%E|pD#3RXpbLTx2k6QejtQqr6u6Yv@ zyu9&GgH^-$W~8zy-JM3_hSV?fo#%73kHM9X12{Snd02pk0e&38w2>gj#77-chA~B2 z#>p;%Nc>(jllY`@fuIsVD~Lf;R~}lJEgv1@Hv!MAt{lgpte+Fcx3CAOLim!jRzHsq zCCzuzI$5s+Ge2q9;q5vHX|@vG%$~b-kT`a>5yZCw5dm76N^a77T;_2bk#uq#ZYOoE zXnuUVpG}@&8y}Lj(eDTD2>0pW4?-9ZlZrkaKHO10hSyk8W5}RknERxTAZ~HM!sM2T(S$!9gA`dP-js`O1Vlc59$V^NWGKrx>D>|7 zm7lb%h>o<)QwpY-Ktf>|Yn~stU)mNb+VRQDx6B`4ddLss#2eutpf(*piz@8Y@G(f@ z)AV~TGWQ!#aVxzQ^jhKecuChOE4a-?`wuGpE=R}U4Z-yqh|1v@$%GLZ;S_{M#-BvP z)8aEC3nkMK`%>QAj50TD^ua5#ai3 z3>r_Y4Gl|!A+y8&4v&Iq0gs1d{1pKXQKca9-#x<^hZHT0&!%>K`b-hge#ERSN;xla1*o>4u8<}Ot=-6=1B>ITG4^d|fm=oi64RHRr z;H-=WWg9Al2tMKFLwRs7cE(DO44Q@{g5!GYFuoRCFv~m}%!08lroa+$Gu*poF;Eln z3klDzndRb7utj4-LYfzFF@j;{jfL8e9nIo1C45@uce`B8^Y|l>;~ti=za4nG>B3%+ ziw& z6;RX?vg%FSz)=i{wfufW%5Bh9Yt6k_yX|@!DqhsB7N03 zH7efIWVS$ni{8f-g7uPaTbdbV!$_Ey<>|n2N69P0JA-w=dB!#Z? z!0ktZPa?zQrP7m_Mf_+%EUo*7t)3G zrO%CSkrf9ewkzK$19>}S%g(tLGmBQ9(K(M=o?kQ5 zMw?-8(~7X9sjM>*FbHy;Ia*j_6#mV`?Q- zwrKeuW+s2G?4Qi5gl7q?a^_|*j1+<7dzhqzvAq_h)QSH%*%D~k4*_tY=uMsL zOWJ6>&h^EEP1YCHhdTS;F*jt5>C~H8r!E~_*}RFIHWtP@kuipxi%>wEZ7G3?ha5c> zrc>vTb||~qxv#p9xmOZ2*MOeXSthA$gShwX&-W`1B)0hQ&>Rkou0YIi*xi>MIl>IQ8fnqm!>B zt4_QDTFMBt4pQXZOpc+f3r$7P73D^)IoIMWiHf$e&VYUFzMDciC9rM%XH5wYO(p}= zPW2e-{FKN!8J!F40PBpbH9lI-N{ACHOD{!9&;$l%!N#Xa2OX%Ysr^Mvas`N?h5GKW zYYCNVd4vL$l_K$e*3892(+W4Y8+n+0*@!jJ0TbGh&&BU!GJY!0vlEc#v7A(z`_StK zbeDCa3&cc~oM|A|af$T?(1zi6!+y`={a0kXUwPD`=n@k@I8pWBEPAgNL+BerFnea<$}?{;%Kie4MIT0!LFj!fTnt% z=x2mK?D(XWx&v)}R%n#Yr{>;Z6wG$F25>Qk#=5`NSVh#M zIx7MOXMQ?p>DPP~KzmW4qBLy#N&ksx+=>KNIZv})HHl`MPJb)UFEA%u>U7%xH`+VD ziiAzY^SRnDv5M%1bxf*4*(N+&u76HzQaij>s2cNRc6h?5T?3V>vSc?KcNT`a;GURMUy$`dJ$pU% zS!z1sYC&*+?S+kLUyw<(yAid?$dp1tYP@vztg_j33vPGHYo074NT^T5+0u32`J&A2 z4qN*6);`>((P61#O(opCA__&lJQ%z@?Qxj;${n_KnYN#BYFwM_#9HjQ&0D^7PrArF@oSDP7swVio%29zk5~ziwIy*Lf0!^ z8JP*`ca5mei058L=Wv&->n8>dWj5b*l4@UnDXsFd2q>!XPk zyn{H3k~N4c5el~JPpat2b$fF8UhQCCk+xH33U)^l(sRy?&cW3RoPtZLzRxBR2vy0V zJa`)V(ovr)yq8~ibjQwS>iLc|zlb;fF2ss${tj(E$v%h?b{#CoqrNhg_IHEMe)ZKi z!rkv5k**-R@Ecg&w zm_!!z_Gd!HAIG26))1OYz%yTyb){o}J`#Jwr#daJvYhr#Vrzx+z-CJ2(Ng)Y&x4tD z-{TYZ%7>AKgGGrAR%X?E-1ZIGH6sJFqGbPW0MD-z&-LEFdvH6)VE*N4(ssUHC^`6vfh&Eacg2rie}K8!|`l`U3KL2B$=y0DdXEv~RfB)Mrhw z3yZ`@c|Y*~rj*avX9$J;mZPGSlShBQg}qKl8e@m22D=NiyG`(j^Ypl>@)6=dWbqA5 zK`8#DOYs(Ae-m!=lRxNmIVwQD53|ire&7wNyV2iz3;MEJct$ZJ_RUA}hx@Z|ncx~i z+YSX+hL_P=2BIYhcPP}o%qC4m@?)RCJIVOPpF$3nH}%1a@=9%+)+l-Ld=M&F0Y~+} z&NnAq>~JrbJCXjaHr!L&U>p7iS^Pn3YaQf#u$1;B9lNnRAnB?%Hrd_Zb%DWM)TE^g zeCgkJ6%2Pa%*8K&2-d=$P`S%Rc5?#zmA-6a{bdIsJ~4GCv)ByL^nuvosDX->H?9T#tZ zXX}~$eGky@SsAl&8G=ImI6&gh;7{|j_`^+JQa*3>VFPI)$MF{a(qc{j;!mvAO|^%v3h!ocy2jWOq54b=})RR|#lH_}h!ABtnu-Ifk*_-`BE?{E1hcjLImof3Sl0sGp<+a7izUxB-McQb<~VI zpW!M>0!W@rR2S4Aq-%W;{{V6#)hy^Brm-6wBF+0y9Q#EkY!)0cYl6*Yf{K_hjyX65 zOQcR3jAi$=oS>=(GoFDk-PRta>73TZkGO7(wCuiQc}g0V(;Vp{FYO10b_y^MZH7>r zZRk5(8XKk>f2I;%y=E(c`OmeTlXIHcww2$$0eDc1yP7db7hNxM~M zD9?K#0|pnOT-K$P4!AU2n3l?g7!GwxN&2H{tZ=z|ys=#}ganoPZa8C>Y+3M0rx7aE z{OGiR-~Vpkxa5mkh>`RUnc+LA4zv3}9y!7`NszMoxM!Q!pX|<-U1tvYsoTf&Yk0RK25xQi`W_%tdU4O44|-(xJ>}XU{(c**>ZINJvnJDiw^%); zPdA^oAtEv9e6ug7wHQr<4_VrUv(+m>(%m`0_m=;}?J>qWwM%IjtyP;^mP|MjSJ@9KVQc ztQ+=JOEvW6`*QpPH5kUwHd#qv$= zJcAw`ZUg&%$(r4c@dzo@n79=kO5@mN-B3jAzMPTCNi8RnWBfvXv)cSb`rzvw%Q-~Q zJ4kf~NG3y&(L7!Y+_%DbDEa-N@Rmj_A*qVt&dxfQ+vh}=;29#$x1E8@Pi6em1}g<2 zBSQ#h(9}juN;2Hm5GWBr&N=&iFD|g#I-EE3OMISfthZmn#TDF!mg5g%LiN^b;5)t! z*`qQxDoI?Rw9CJ!*)S8nM9y;t?(BSt?!`GY86!_1xgGUSuxd;Rv9G=rzdsY2*g*YU zivz9=2s$zwWI9P?nV|VYG@G0cphirx0UenLa`??V`?jw8Xd(NsQr+Ry#=WJfAEWoc z(sGrV@5$bjH%9>X`-IkZe(3xK^Lse=)FX?Zb5Ugu0~GD#&FFF8@b$QY!KUy0{0XCa ze*R57KYz+T%A!uP%5c#)Ef=}*>NckyL7P8k-+WmrGi|(C(^o2Ms0r7UF;j+FVi78kp*J|4E`lXZBr%s_jkFlcD4 z)zDV^NODSx>vs+-nlZmn{-WVtdH|aW=@d%!qtg*(z;$3rFG2>=23?>4%5xn#s9Qa* z4G@)(He_MErNcFm83!+B#_^quk0(D-2Ki;$C)sa!CYH!Mn+yBiHGTu9 zDg-Gg^FIQ->anbh3J3nzT%kxR&uG5xnNm9bG0OV+o%?oo`&g<^r0c^Ws{?#pR_>hB zgZSLT+79BgKL-Ox?z!F;v7FBQiQ566Yw@pjITglu82@%IHfi2C3_Mdp`%PXu!`!(b zl0o>z)8AOq8WvpqSZ1$bzPHz8bS385{V6YXKR^<8Uy~K{g0Aab1BX!c;UuBURYnPQjN0*}S-uZh2$YbGvz^$qlXZ=P$$_mJG36s)t$ zY38Ta?^17VyT@$4y}MsLFW+DL4coT!(AroNa_MfIp;K7j2#TrFsi-6``SO?DBz@)e zo1l)p5Z+R!&B&PS`+4^{Qel#?jfj(fnzcS}~ zpF-yF+e3-nj}ouzIP%v2ljF$tJo5Qw>km6!f3ErV@AUcq_w(p(59GS<+ibZ9s@&r2 zXdJOX238hc&qpdbE>g<(k!q2CEI?Qe^!hj7&1}m-wMz535ABGyPnEqg@u3n__6o=r zS}QhR3H?fPI$UAG_w0xCEwKk`@e+!s`)gOfZBlc$J6|Ldn=+6W+aKG>`na^6BuozZ z>>Kw%?OSq|dj!NePV9-cYZU0xW85s)O&95&*6C|Yx{(Z10 z515_yb7zZv8`-+=J>hua3M=kY5^%!JoiZNQ$#u(kGM1CcBOT-7`>wD*=fqC&2eh5Y zS)qtonRDBBfLNw}kdw0H)t%cOc6)iQ#q^?G|C1xzFTRo^+pE~1i}`<*+2}||*MhkK z{hefAg6i2~$@Mz3O=R5$)^=vwZDC2MAdVv3>9#P=n`HmeK6`SZ+QjVKv-3z>(s?9T z8pzz+AN|m^AX!%ks4^(eX|pGus|)&rp3`<0Jqff-dJ79K;sRj#0XbT~=ldd`W!F)~ zjeM3&NFQsrj^3IYO@n9%7xaSCQnW3y_9h>$=E3PDVs70f4e49fwI|d6AeKdn=X7DL z#Zp{|{sy7Y^{boBQTx!ohIX!j3YT32JLbov>s#kq#`<&{pzy*i$gX9UGT;JeTwJ&C zWa%zc^N(;#d!6f=)Sawr$(dvFgjID2p<`W;Z>-ug#|cttTp_GYv@J46CBU}h#;nvk zt(uV!egBO;T$`~nXthEG8+iT>7kG|7bDTXLE5Xh8k)=AKU?^}l z^44|UIB5*p3e5?64EW6;2B_&1LuZdi04g`CT6zWl$LEaG_SFRPwzhM|+^5!c&Uot# zrcUpYBgSom)^^0$Z=7n?!|6E>>@Ch8!~3`x8DMFybD`b-fOp5cY|}e0EX8DuVejvD zzPJs3z0Vi7m;2A1FK(~-6`n6X68(KZWQP zhmee}oHM3cWUJ?b0UQ4whNZ%;sJU{=8B(N; zq2Ua=8;VXr?@WRMMQ&s&9$hd^5tcpJ4cxxH*c^F<({lrZ3hn)^8n-qdm?+x1;CM%j z#a4V5;Qu5`r&xle&(gnqeP0+0**}PK_INSJ)y`ms*{$t(aSEE8!$o!bx>9$hrVjLu zoz#e_qU+?k&KV!q&^|+iGuPkH^_($L$euG!Ml?NVEO@TzpwG({sl1maw4aV%WuE!~Iaty!@Gbt+NhM7>UTA*z=N3TT7c>m4K~l zOP()cu5RRrhNI|aty}KW3oiKC6OU>mVmv*jXz^Lo1nuh^S>rd_QH#7r}U8CRF^r<&AI%7=3{|@ z?3OrSsaJTiGboSKnG~Q4;M3;SeXY_CmU{I$rig2+Ob+ zD{tfEz373*|0lktd1kkh-1lQcvm0>yyX@;OR(?L(R#X`~!*f=W;-mz@n<-sI1@WDI z6m|aN|FHKaaCQ{c{&=VRZnGwnncO>*g$W@UI&+gCt091F0?G~w24oXa1eAupL?G80 zBC;s5EBJ_r7)4NUK@?OT;`(qW%0r$CK?KDO6>((=|L^yls_yFBcV+_m-sipl=Qp3E zZ+D%lQ>RXysycP*RF&X#{aFNmqAMf}adicZ2`OKomG5FSX5$CRU4&!?_id6x5vK)? z4A9NRY7s3r z!Ev(tjIwwf-HU+4?cY@^3;-l$*G4$jsvclXUlP;Z>I9zXn4BH&H6F!I3PU1{c4P9A z$%Wdt+OEMcnlvu-n~F?MGlF`YKsH%-Nm97Fi#4+f5C!dobh0dtJ^ruALB!-cVl6L~~m_P@3ndu$c?y$FtL90z% zXM5@PdDz60vu|jtfHRr*Y)XgJO=^S8^hX8E;B}4N_D9(b&g_!3H!>Q7YlSpjR|cNh zKg${Xq|5Q@!KQ0A3%%pcvume;cRkAR9Lu2khh2_gx1t{9x~rVF2Q$W)A%>fJ*`Y2O z(0bBcN*J?saY=jz;Ura98dU0K6W6FD8QRyq5ZY&Z$GV8L_I88qchvRa=3K7eiaE9gjG~yS8FB9t&Ng<&JBs=QrXVX<8Ep4g3y|FXCkZpO} zB_>58{u0V=Op2!L>N=BJ+j9H!_I{@=dq$riT~?o%P>E2UoF>cL$;B+-2X$#Q6t5`t zo%46u*4S!VcII`{28wlK+{q?vsn~0XQr{Oqzh)N>TWus55T}iiB6sOXieb$ki9V6l zVHih;KCU~leNAK!$?7J)+~a|M!JW5DhC(>HDy+D{maHQmTwgQ$=3Wl|NLsu9j(4RY zfkax88Uhp{ci&BnknOXL4IwF*I}WSF{gU2`hO*ShA**|6&VRHWhtz93dymF*w%{c? zN_HQd#&fpcO&V{#T}Y99)qaqtFM8ZYvwBgxJe_TKlIK>I_pNN^j=PE3Jb7B~ynC@} zxdU&Cv{0G6c4c$6;(@+)J{=+k>`;^Ofx2*3f0Q^A?Zp!y=fEH_g9FoHjv+=bmuMNi zj53LUiS#nF7mw}zqiBQHxR=|AcRjKmV+6JUrjtng%`>(g z5^BaJy(6V0{gk#0mebjbCxs&Ou*G6w;>qYLP?K!Ko6?ifIRC5ew7}c`HCA^jc<}1Q zmIm-HW4oai(v|MV+jgS;cqF?+uUn&Y9;{p)iGJj4#rrbG3v+G9gj?}a4s_Oc!&W?M zYyXm6c()<*PF??MpLybqZujH8{5a*0?_KO2@{k?3{;%xEYcGTC#v7iUvoqRGlWk}G zM$~2eDr`!MP6F$pMMb}Yq(e*D3>Rgejqo7CW{S@E{df&~&|R18alMo)qUf6IZKnH@ z0&gWkr0po)+lcpS;tk>_@$SFvCS(_3K;iD~9v|MS?}gvV7(;Q`EuKc>lg;q;3$Wz9 zXd18e45F*(pMvo-@Lq{LDxwp`^Dp#Ho9PKY4Bmx-?)ui@uYtT2{RU55xhpz7Kz;EE zh*}Dd2Q7-S9Q_titUgVi0OoZl-Y=$jF>}Jc{NEtJ+<-|Zm-J5PwQ!Fg`_l)k@SVsdAF3lu*obW zybCO>B3%A(%jNsY9d84Ai;KwZ2W=icB6Q<^M#dY(0)R&3I**jxvUa#eTR8niKkf5M;jM`6N4MZDd`Ly8j3{Nh%=)|?3cSx=VOQ3cqvCrNn0B>}K7e5Q4gYXX&9j(7lDBI~HZNhAGdaGZ(1Wni<`z)AZhZ8id z&*3wXVUCZ3l24P-q*yG|B7~dql=1!Oeu&J{a{LwWtzL}p$B*1>o${gJEr4D;L|g@2 zw9Qmefuut@k&iMyx)M+cU)_c1S@5#Q$6n;{C&++fN%To9YxWmAa1jZ*mNVi2;{I)% zE7)IZyd6?XPptS!*50}JLiA4~y1d7ISD4Voqqya{5^lh=58E}Phk5Dq&-r*gdg&1) z`jhU(>4$c^bP0CX#GBi+IJ3gw{A+@ED+?T9)DuoN*^CTcavqvHuhpw24B8%X!Jz%{ zv#zhRhFQP`pcAi+Q*fj*E`G+<&1g^@%V|fRO@85iV=3ziC@Y=eKaQNS>b38dEHzHC z+R2-vIic*;_y|E=t_AD*%7daI;bo|R$L#oQg@rf*u(NS&0oq^rjHLx|a3@?J+U*r9 z(R?!XL}b)o+%VeX#dje^MXIu+aW<}{Sd9rp99(GwalwRy(%Fr=zK7e#`&N4ckD=i5 zeyLZr`s@FpHX?l@>7668AB5-HMusrkrsfis+`F!}r+JyMqS$LUV^~dUs0;P86PTy& zVDYYa6}^95*)$a5W}6e-n#Qy_ZS%v#74M03s(n~mq;F6B+ZBhjTW#Zl!#4cm{qQen zOfrt%!Nyw{yB$BK%?EN0&pFhIXUl9FH2Y1)TUV~dXCmiy697z;fu^@e$lT}6p|myX8L{QPxPB42I;|g zZu@`2r4x(ag-X$^WKL$Q;Xjd5s^N=>iE6kLKNL1A>kC--ev?p1(h|<-CcNnFk9@aC z<718XTcpcxGM4$`AsyvQPg*IXTX(5isq$!oKSNHua+rO$(}NraB&!2Z!gI@F7LIt~@&lnxh1nsB_yiLh_J0kc`psdr&dL z!fkN1U|0l+0FCb9$L|Lq2>&V-l(c`gjcnT;zoj=3pK(7-D)dWW5-RjA{uIal9Y5Zv z3%|P!ob_Jxo>1-Kc17-UD6;4Qk0 zpI1lj=ZLo)Ln<#*!@}E+UWJoiuBG%M<{dWSh*!fkT{yi(@O{k&3%(KcS3>s2GwMzt zTI{Ay5`J&;gx>*$tbTLI3yA7}N!i;LzauO=yF_7OlcgWD65%(=Q1rHblPpEwx&zoD z^(SqU{)-|*bJ7$k^Wgx3<+-_Iti+zn|4QmFC#VT@hkW-{o`km$CjkAC@L5l z1ml#V1Gh{nMpO^XMIJzwjkBm4l%fG>53Hq+VIJKLt?--Zfse!?W5gVE*glpGC;Z`3 z@n}D-xkw*}}nA*b?su21z+f%AbSmcUixWw%--~KE-}-BIiv1 zRPcU{GA-6JX&H1(vjoeR>0fb~t@fqbMyZI_=_@z{i}hNx5Hvf6VXW=0_i2+td^9PB z{uBqG@b@flxWmz1SAlLQsrffVTL6f3X?Fc zNf8|r7X1y;lX7~CV3?oW<6}Lid~)VU^mmYX#>RBZ+vnnKTYH4NZ-PVI<|1sEZ|0Ok`*1~MVWROrp{tCnc?3$#_pm}rJw&0Nun z$e6KIv~uZk4>Y?BC3_wEjP8<-uN;7E|E%{`s-Av2M6z)*x-9`h|K0*69fj#9(ZBx# zg(6X;4YjN~scA0+ols2GVtot zUzBmC2TQ^-BqhjpHpn_IJqcxzp#TdTHWp7MD@#vM*2Zn}X_wLM=!!Xh8I|?YbQV3( zDA%x@_(PP}_nZ6~yAKa<^vX0&VW3fIAIY7L3ksV$2M7#W^oe?w@eU#vl4B5!;5yT2 z1bJYXBp%ZVTG@K3#BJ4wB_wHX_U6`UrhmjbPD)=Q^0@d!gar|&cmN(_aapyQ}>*%!Sbl>Zh0#6 z!j3(-=p{9(&4YRjLxfS@9 zZQyDq!pzZPxX2ELO+-!@agw`~J=%fDS4xQl;>HgLCm+qb||-FLy&?RDQJ z2v2nfNB2#vvj2&SQ{A^D>q)9JQ?ZkDev=VIpAmH>e6v-gMfNlHSrceuS?6d5X zjeXXp{{^S-T)Jbwf%%8p;SD9NHd)$8jZN0zf7~XQc1#Zq||q<(;|uO(w8`T{6p|38AJN7-M;1TjlUZ+Kb9ntdMO5 z&8V`rzu(X?GH-0~Yy6T4;h0mA5BMPP}=u!0(+H7hzK(A%6*eLwW zMo~4)bl1|?Q;#=olC&&ZS{}h&26$5zDU;KQ>o&UdvxdZtisAQ6FcLWQW0m`HhWqhW z^O3b7Z54ON4^O|n_QGmjCAg^@X@MTTKz<+MxcC;sM zwmAcTq#d04g2HQK4>9jx>}ULO^KfW*hBz*4p&_NeHukWS*y<9Bzxh*ug6Kd@5)wTx zkU83}!WR`0I+DaYgLUz~><>3WvtI3wlk~>LHrq@6#-6}3Mubj#{Ruw{W8|Rv=22f$ zJ>mr5@|%p%MumW^6vUQb#xJ5RM28}WrGv%j6_`N5ORGt=G{n3QRKQCsmcBwe z17SbJqmNgXOFwiFe)pKD>{{Ar5cST@R?kD=#fiv-b7~$PfJeg%&=e438h)*Pt_be| z%$=#%(Jq33~}ik5qlu(^OMMTPbm}f<=lJ42N8nRk3T^2I*ZZo@zYf-_`Sv6l1lcU z5W*Fvw|JEf3`Q_`_ZI_LzQemYP?da0JA6x|;#gxqi5i2mi4|oAP?WLe(N~oE>MaO% zr^W#3O>4}#JAjEVw7S!KLFmg#d#@F0o>-5OWjaFKp^?KDf)DfxmZw;WAitIbpd~28 z?BkWM2tlvVxEGA;>8KB4Xu1IW@|)7v3+Ef#2vh4FUeGvPUVBR=klU+^q&fmakE(cI z1busDczd(UTQC)gQl@q(x5?YLdMQVh!+u|}uK)>b2kHX!N9(f!`$Ao z?J01(6`{&=1l!&s%j6YJvssy2QjdHdqNG{uEg3MH2au>Tk(vltzUT*n>*1S8ik_!Er%5vG>`sC4XnO*VW?qJ12u6r$2_IjxE$EJ zE74;7VDV8Ba{{^)ds5|tv(@pjl2=dj~*EhX_x#EC=aP( z_Cu*<`PgX?%R&rt@$XOo8ATMPrspJZ1VtuiY?9eXq9M76#;HKUJ9J?$8I)W_6?JLr z#>^>M2B{nB0t*0Fz2T42zDcm=s3i=af|yEd;wgErLHvEPb@VurL|+H%(FMr+f8d?# zfa+s`raB94P}lv;`hmORM+@e|_No))QT9$n9vq)Y|JLTL}=9=TzbsIMA;16J|yq*FH{TRNaI!V?2 zb+lR6gddGwc64@r=!EyA;RTsDzEa``(xW!MZ=vLG8~FDohIhXYjUki1$hx$?rp2mu z!{Tk)id)jQ;O71@r433Phs8J>i#R5TlTg7p)RC1Z0TxuV^k-lTTv*l@c3}zvU$U?* zGO#SqX6Ja)2HsL`&gE^LESMs_z$Zyhr;lu%Wb+sJB`$E0!_Jm5UF7;U4ZSE4$EHrmNi#PH&IPi^{?!+^r{HQBmalU8xA-JCNCYfSPP8p#kB7R^Gm(V z*@p$v$5}Y@oD9x{Di{cRH1-zS0nWfIs^lfeEw3G7dk zz;>|}jWW0PgF8;WJ3e?cAxn(T)iRBpOs^~35 ztb>KeHS0JSpi{kMHjF560w}Djgui29v@hDE_-xfSbd@5$C}de&)I=$OJ?ZlOf!(W-MW2p{2pY^28 zL-sF39Vum`Yc=RPlyTHfid{OaQC?|ya7#Uv#3xa!g!+uBrxhSt0t*$~5jV3adl@7^ zb~BjxdS-D_Zy#|y%2l?hOBh=(i)q?#LH0$;JjZV`d}$Y@A^c+*2H$GDH}Wv?a+8)~&IP<3Y)@cmzeYpZHD&E(!cmx}f z>#$O!*ggQn~0^=xU7E7H3^%eNv%KYiZ_c%`TaBrIDVyp-0kpc z@&wMlQXKJVf{B=$w`>!N4+oWM@=zOV(K{5p#7?Q|~ zmP-qHY#Qqk_U9$DU@|f9)rdyXzQWr2w1NH-4E=?*eI;XVy#d9*f}F9%JFI1CK8<=& zo`Y(zn_*Xb_2rToHoL*pW3v$F#As4%_j;waM(i@GAKQK*tLkG>(Ef~=rOm*c5QwNt zoPwNbEPnRRJ}9zH7v3nF^th*liN`(hgr7%8*M3{nYG*+B6QcUXf=s~2p2UYY>NYL` z7uo>+$aEI4FFeN-MaY>n>PzS@dUxRU@U&m@o06-(5Tm#QI6_bjU;Lfe_3BNM3-tGta#-EuvWtfXAA z>mg;v0aQC0>J(k^1BoonRh7nXl3MoljIbjTaZ9fVOE(T}ZzC^uOGhd%BVN6;Y=cM2 zsrYDz?Z1tT3Cj=zo6qLuc-L#F5fE}QOC4Wvn%Qfqg6AkWv`6lUvgP#=VZRgr&dW{m zm0AaXWw}Y*HWO7vbd{}v$H*P)gvp46$@s0x3QcZ`Cfz6Zq9mwQx25GuWC(uCfp;rt z;h*fBU-LAwZ|sR$Uc*K2#$J4TmT&v;?K!@^l5ZRF=8ZG~?!|1_A2WNjfPdh}>TJ|^438Ns1>VE2#;-z+hr6K+ zfTJsvexB`A;_5xJd-%2ZST`Eyr1UA!IKzu%&t3Q?j=7u$?coo`r%V{%L=W8fLvbS; zKalem1;34Nv+2Pqi)7 ze=cQT%M9f1lzr^er)HlqgtqXGbUC~$;!}9X@X2^bxblwW6FT#}BR1+(Nk39X0Q!*< zezYG6Jnr8+%8qA*N6*uoA;(B`X=}qG^zwHh8Wd3!m7@#i4RbL2aMT?hG%*}TZ-f?& zi8B_#D;O~&~>hFt^2`B^-& zUnlUOV#S*<<xWR|u}#AO=VT8|cat~FkZ?o%bU6;@4QGFI7L z#M;l&ekS?G51~AQ;c&lE!H_&wA?K3?HOW)w-N%Tm9-rjMHbS3F3HO^!hdc0q0;gW6 zO-lPCg=4+$TqF%oaMB0f8l*o~$`YOmK%*1MJFyQ9v!inO7KGU85%(W*8^!?LV%Bm; zMHh2w*?Pf=$Of}1O%R&N$*rZR8_~sd)?dJsryBK0@v+;fk-%`dHAIO*o zq+cD+(XnGfM@76&DRE3Z7ssM-l;AN3+6zpc+2_^aWYCzDaQ2k(Ksh2>D+FeUp{!j1 zT3+YW&vX=!oY~t_6bKV=s#*4)jd2n$D@mz+lj39Y3W znOagA-ybv`Pnw|XZ^skpjGWM$*Pen@z)@6-3kK#?6kNzw!a>2*0A@;e&J!vwhdhKmGpk2*P_nieX315 zU6)XPU|HZ7Nl`$P`ZHKqvGL0UXvZcDtSD!#@y-OovM4PIYrM;XtbP7OrfCe=U@1Gt zIg?N0>6UW4uvxZX!ZXcB(>1oVAiLIL>27RDvO-=h<$ZV(*pS5tWhL1a+`%EUFxH75 z@z$<}EIY_SzoND)(}oz)jE$3ri><XAIP znAU6RlSH6==JMytpJ{Au;de{{|H2gTJEwr( zm4)++43~cqxfFgYi9{OP$NAnS#Cd2F;@rOpaellBaek1AljD0@r1tfm7NWiW-f9cJ~jpX(Kc`$TQvQd5Q}t-(EN1_ zQ25zXz*kQJZ?=JJzpnVtX#>~!io%bX0)A`;uKoF&WK3yXZb2MtxF)ILf_HeC7=r>a z6NjI%F?H<8$=F|~fd6d@_&=tAKQjgV?^D2^o&x@tDd2ye0{+w#@MouhKQ{&Z`6=KV zr+`C+vqIdq@0~UUJeUHGBa;>X;W*q4PW$Rh3Ik>rhB)27L%&K{kLCEr;D|$KI=(@N zR1HAvVd^h2pK_Y4L65hbvEj@4wI_+L!#QUB43sZ9FQfgj7g%@X5~Wd=t*)f=_S#x& zJ7!zpxl)XZ65-6#-rmR|l8$7V>W$DO5&o;L8qW!R@c4RDaEygxU>UE&30UX7nG7SG3EK3KL%TreQ7hWNGhBA)-lAVG)C`Fyn>Wu>bR$ z%-l|d8=iPa=oFyl#f!llUs8+pL|4mng~Kt+%4&ul*p#e(aoOSuR!w45^rIi4z+$kJ z^$X)^ahxZvAi8P-AA+4)%yfBQ529^FhAoU)H;*qk3mxDo*E;sb?aWQiOFa>j_!NtrJWH@Ro7RvEx%*q`q2P zPagnkuPezOiZ=`0Q1xzLrLmIqm_OX8UW*>%L=LA_h93m5y4G(pwQ)z+qogHY+N#w5 z`-9g18{s86Tku54k0Z1*fxw5mf*zFHPjsDi?6PX|wNxyvEtJ+;e|K~JGa+2WhFbdo z+kHU}Q!;)S#25bugb9|dBBdZk9lB#Hd1B5aBcepMId3!kB@U@00iuZ|(}n>+&;)Dz zDUQv;j~vIBz^iTGz{@!pPFMHdBD^hzkASew2Bf63D;&UFxxaH}XZ#}&9nQiR_vOGc zS&3fBX|Wn5{U$S$rF(8ed!$s>W8@U^DcDcNx&^-iiYNlSh%jEX43GeymcLe@v{;-q{-KH$T_O!h_a-86~!k% zA|33vjNPzP{i-AuXJG(WZj{1FHP&FlgKE@fV%<6VwC-sezfa91V)9?%2Ltdp;*1`ojsD(RfiWr$ z0y}&B+59bz&C#E^{4t9HWAo%=YzRNvj_6}<+7XjWJA%^{+fn#2_+6wUDP>ysy_on! z;|OPhDj>g71cwM)sj<&0s; zGYM0hjm#J1RB69)6T3z=$w}R^?@%}opKgU0ojG3ofi1C9`Nzv};8)`t>;(i1`vYOCr`TgE$1Czk_m;%l`CQE7Ewgm5Dx6T*#* zOb9nJG9lc^a2D>=ha*E1#&Kk5!Z?l$O&G_Kp$X$SGBjZvp-1a}!Z?l$O&G_Kp(G9_ z6kMt0YBzty^J6pgkyQPp4;#U6tm81lK-E1Kz9nN!h((pxW0_=acX{w=Xkd13giY&$w|p66 zR%SKo$n5QW_v*_q{fM5xN?kYy_`4HYaN_GalrCv={qYLu%W88xm1ZWt z$+9iM{Di;tY3joRdC;-ijHN7DW-K+~>7yqVLQqewpsiYNElztINNj_9uFwU682Aop@mkwZv(WVwhDS9l$(zKY$+OM5$3 z@r-cwpyV}3gvyzGmqX=;M;p|?4xMV5wOp?bHy-4>82K7^7U;upi-lTcbXee6acJsk zjN=FUu=(8b!^{s@ol@>S;xjNRH0Gfa*082WwlbEN!^X#4s(G5tS%#IoqPR~Jd&`$yAA2( z{7+@_;5NPbG9+Hx;3IVE&AoWXYcbqO;}h33nOuvVPQ9qLl1uTI5lvVbRHdFG@;?4i z5?V_`M@)v24>EzrYy4OeanOnA&gG5Ys;J<$4-@|Vb9^Y!kH%cd%ZWlBpcEW;nvwG%Upz8Wnsu3D!iM8Tr!hsm+jm68ZbTA&golv350@w z(#+%A5v{@gV-1UV!m1~wI{>wdh3-K)e9-R0JM}CWB&jd+99Mn3@S^V~b zHHlY%hJ(h3eK!{(y1BPe4&0D_Gkyx8V#TyQiu9VvNz`TOQB!-S+DwwMh=nubMEpE3 z>9r?jh)DP+V}Z(ChQZ`-+IQ02{ldqPuOa`{E|2|AQvMtV0E?2*$NkI!GEgren;F=h%4I(o(2M+>s>4R*bRO#!zUykNxgY%m>+TVn~?@ zuR-Of?jjn8y0;BP+fnzngu7h5@6Jjd%a(I41 zbjj4bb6!iSr3}&>5_5iL>x#&?W7j4}M1XC-;mAGWLSs(a3JDLQ^Pu?aJwZyi69U2o zmASU1YUtkK2W)wbCJrZC?Jjd5 z_WKxHukxs_#Q{3shPpJ|xopV1buF82-nvDxpju0{9VZ}u4lT6@oqu3_ef193*58PSDm7l|Dpi`N*fu6F#v?nyZw0WEZ1;Sne3SNq?+;jMdF_GIgxc zbl0MFZI2pqTGtNzENEzP?4|hP+)?Knradu5Qm0N`GifHgUHlfh5_u81@SDug;PBpNM!r~{oAo08AT}vgs zCa+L`O;D<7pVB=?${oKBm}S^9J#Nx>n--n4*d8YBkkUspm?1mSlaa4+^LM#1fs7_R znz|2#pAZU=8IKYVZ#216TKIvEb<;+xWVn$5DeW3LoIGr6*%bY_6K$<$Qzi4GcEi{( zF(phi!&bt?mSHQwE2-W#Wb!kqp0e~Xl{>y&hL&X}$TWio32m;r5ulLVg-pyZBsi5Y1lp&Hl!~>m%$k9D@deiJARXaFLLY+yjy_h9HL8xLT1}K z6v9gLMlaCoRk|z2_)uvvKCqXD@xf>+VtlB`AgR3suXu$=OUBi_JL73C&eh3Oi|F3% zENM%XO3!cmN@I&4!P1|-5%+5Bj1QM%{PspqP9TNw3}t3fqO$6x?)Sj2_zPtN(m{Jo+ z5~EkqhHLtDBBCn8-;8Z4>Ejc-M*F$In}JL2){*-4n z`gu}qYmnaWwt@iuGQcd2fTez9xzD+)VQhDRQS?3d*?v}1eX-SEBO{T%eI(Kg4Z z(Sy(!;6cKL%TnXDP!0Sh(?-Y3t3-Jg7qLc1rQgrt8&i;@vmt&{BL5lqq7wkZ=12+n z1p?5fLH$x#294W3_Es41Mj*pI9_H(pO#KF=#$78>4KzhK zqc>qJN;#+^{^6LE*-%p+(UC$MNV>}w7t@uZgOJ81wRx5!Y(m79td;0fXqbXxH{?5) z1+6ZUf=VE6+lqEUpi{_bSHPijrNs^!cP*o~x1kgG(5-ZO@Mrfn%uF(?L{Qt2hM_x* zcpGQ;SSCc<0(nP#NW#aU6yA>G6GiV(zJ%YwogAyZ(P`TuQ}1H$;0Kuj-|ODpzfu2q zti^kO^QILRF_`a#Y1=H5b1MrTwr7Z4(P@=?k==!{z422R{{VE$=oAzHve8+h`qKb4 zxNs3qHTucs^&ld@5doL7yqtCa1;B%d)h>5{$zEG?5BtE_K8WGLkpYtbPD;Lf>pJs8 zpyynbd(x4W`*n~R9z7`#5%&*MnrsLK-T+0sZx*1+GFIIUNF*6v1cF2a`IbrI;nd1B z;>Q^=EAS!*BJ$*y5qU|Giu^~I3`acNieJ0#PnkaoGXD;ztYo36YA~{rehfU*g^8TCyF_C2w%;JJkA2eFZ(DY zPd0T%*whLIU5XGwsi=<~%-HcUh@nQl7;j>G3_pz$cz%2xL9`sjx3q$O$bgq2nvHw? zD^N&2Bte7vhXp-|xG^7j(4Pq6qe1P@CMev9P(CuDGa1T9CUiDK`N$(*KoB2t>1u|g zB?R%2!L^*Bd}Kmj&Vbz=@(yIcGAG~|1SktRd5GVPPq9Na#+^tpL-`p07&uyMaO!Le zd^KTw2&|fceU!mc37^GVrhXnvK!0ilEx5_1T7tJss+9@oxK_|b3Fzup(AN{t_gg_v z6C`G0|6|#_hP%h<>l(ca!*cj36d0S2#y{K=GBkceOGtJ6#+Hyd;~#Gc*-R?c#XLM+ zY$utZF5z4zsB`?2EvSZj$8T*7>Kp%jOVHf$J6l4AXGp1C?D^6S&l#$p4+7lj%t}$K+enxO6#BuB!db_-MJA9WLTTT;uQ+OE|sw0rvh^Bc1v%Fr_ z1p@C-;5uK%Bei3}Y|#~8#|jc7mM_RLslzm@Q(zw_>?(8;t5c`D4lld}xpdV#N|K%N zqa&?Lfd2xa)eq0avRAkfNzY)X+O=Vz(~CPl&YtJB2rLO!$R5&a%5R;lA80h&|7k*G3P6WN0|>8}0Sh-)3*=?5r>LqsLv)zo#HX zygU8k8R49NasDCmuf#{JU6}5Jka+Q{QR>EZWTLfqX!w-~7g7apx5ev6?*lOOG3_>j8?N9g)SO;qN3*$2s<7!!`c=n_J^+ID5-9eg*VH zc>BCzUCHJgJ}GOw18}tC%|-2TXUgi(zDeOlZxv{H7t0hx--oKEv!QLE>u?ke#2_0) z-vK0uzAMk~;TcWGI4e%4m^u~Ey0DAcNf7k{Y*&B~0}DT&1o45I>P2@p-qDuaYX|A$cJ;?`jq4mLtzLALZd>EZ{3p%y75EssvH-5{({O9pL+&>uIWQAvMOD49Q z_kl)SNuGp6GbMm^u|rA^6^KB}Vn}8g*!E#>7xilt`?SL=QRX1p2Tg25?8%#EBWPzg*wnDVdmH$69{Zx< z%^KJbja!Z5Lq377`CL#D$TM!(Z!z@2s~%mVLawloqI{3^7E$4tYR8|j07(M3>m*Hb z#)U4rCw|HF8_{;h?1T6=JY_PbO)%-Rq)$lJp`CI%VeR{riQ8GiX9vfmVUyZy9GWJL zr)O$hB<;A+IM2#E_&|An4SuoD9c^5uwqhPfug^ndzadd~3dXO)=<5Q$C4dFN`1Nf8 zSb^a>aoVRPe2VV{x6|-VEql`cS(-4oWNmwfRtfjz3=yeg+@AW)OnHmm5Xvil*a7Tn zjo)m6QTO+FL~lXYWkev60l|^<<-T_u(uxenkE0xoiz&u_bQf~aE{JOy&jX@D$~H#n z_M?v?hKBjkmol+ueKL(LCQu`%PTeN5!V0vqTSvM;Gy|7r(CfXM(PmEDIO{O@@Ri%} zI*}D$4(*k(#t(5!fnJ3ZZwu7Aj$_7PjfcWQFPJP|JDR6?9M7;h1N+8K7GkVUAnhxm z#c4C~H6Xy!?UtEiT)xbyY*ltj)4BNmneeIdp97h!QtzXls4c#ocDWod{XDHf=lTQCj3(lq>X(_r)?QrUBj zZH)x$VSGKH%k7*v>+B_<=L)Ga zcy{v~B(5#NTwnHs^4chX;clHeVF%nKhnjj!C+BPnX+Iw=v#n&JHj>D^GrlBYNgviu z=BEg2hwuMl*rxIzDH|)z^R5wFLUbKOrSU7&n>6k=&NQ~ZWNlK+S2iZ?zNs$_eT5DL z-YZ2W)W(8Z-(*iAjhp%ji9O3KD5#xe(Cc29`21uYd5|yj{}z7Vv7n@9hjotBS z^nWeBN?f@ZJYp|yR->hTcANjc3F8Wt{m*!Ow=jM)z5QPwlw$VO2ZXad_3rV{LJjY! z7p%LJoCn1Wt-q6PC(;M09me_~i9LTQJ7@g);l-$0{0>*+!%(8|W`5#pJ`7V{d=i5` zEu7jLgvJONI&Mr|42XP z#XYwsG|n6Dj~DY(>Dw%RWeOYabg>V2#jkN--SLUe*YtRm^Hs}mp_b#q@C=s?!!vSx zKu{|qhWp}k(k#RnpSQ@r3o&9oGFJ5WF_e$Io&G}v@sUYzD?|Cngx<+eJ~E;AFqDr> z=zR?3BX9qIh#)@lpvMW~BM*9#AU^V-e-Ok+9yIMU0P&Fr^%2BJ9yCM{A9>Isg7^^g zb7oy*DM5VXQ*BESA9>JD1o4pv?L!bBdC+SJ;zL2lpl#XpjMovwM?Td_1o4q4evO$b+~R6DJEYnM&cRN}MdMWI#_6 zAs=~e6mJ8Fk9=NS+=-JFo(w{+7RAYuQ3f=N2>Fn;lnjVVLUFP#lmQJh6(4yDw<3s- zJcWA_#77=g=O-(kE!^`3)>?E@sa1@lLYZ0YgZYB&k)2%o{Wyq0>pG762r>UpA9#5V#cdY*(&s&6NHrK{K9l}VrK`7+V zRXWZ`c&nYrg@2+AT+bNN^!E}TKY{0jc43G9q@3--+UeOzyuiB*JbbU{p5fM*{B(-z zT~|4tc01V&gQOnJ6U>WNabe{OJmRe^Y=n-x(14fWVCGY7;CO^XWTHzMaV#H(jh=&u zeMvirp3I}lGksj)KBaS3Ie|L93TZ;IX2xG&^0$*9tSxrN-{B`AV!ur0`)NHrjtCNb zt{*NyF{x*!A~oxdRHUq)+G=}Gab;y>(|GTDTca#$M{8V6*1QUNif`lez`5lp5=vMu zx}vKjtBh|-J^}ofqBeT;h0H6_qeW59=+W;_;S=i7pJNy=x zCY(&E?)!W~@Vw!f@lt+TrTTyrHrx?M&esc3v2S+L)nb=HwfWbh4Z0HzsMrpNpifH# zXR4tp_O7wRqZSpL>$HtmK=7<;C4J)^AVMZkwMNrXyXeZ(*xm^!P#fT5u(8?+PI_JG z?Xx(NKD`Yr?PhPmq-`*hcj^RkFNn)HoQQYJv@d{UI&n1ic1pw0xIL(cAU^V`HYbRW zJZM{j_z+K;OkO(?#K%yE8RTU=0Yg*ICAzU>8MP-7e297Rp?SFzg-PZRH!>9;c?xeOh>twz zPJ;Nz=m*KHQ4(b9vHjffd&I*>ULm@lAU^V-hY8|CrO$POdx9W7@}TDk;v)~5^F@I8 z$b+^bh>tvIcY^rHgAOBzk38rN1o4pvts;mI1-UhN4MBWl82%}S@{w0HzeW%rnFQ_i zy6-VAADOs6Whft+&|ff=k4)&34CNzF$nym8kx9^VCqntiC)k`IJ~9dZ7K*@u@_VEkxw;=ZDNv%`awj}ijQ0>M{RmN;E5)l)x&Q9$m-!4y%*u? zW|QhRF8ui^;EVq~pWd;TCwlFshLt=VRpVWy`tM%Uf4Rt{YZRdul;VSsq0!LdWBKlj zwibQ|YG-sVbhNJe+?IHNW;gJ%0ereJSoG$0)(f+Q zN!+4Y4eb_9>cxjxT~d_w_${DIR7q!_W86fb=iOMs&`h^G^-y_xJa^o48<&tpK)N5n_z>x5^|vo)|@Zbk~-;pG{72g6MG9L zRoWo_7xo&#NUYi6kWZ#8Gkt-8u--o#yt#on#l$(XoXIJ#e2s{bCV_W5ZB(2n2l zeAQIjRvM{HgGnwM5Y);CRk<_f{j8eq^i$tKR-4dIweK_1d0+8MX`klW49>}fC-XGZ z&ROr+#gMD_4|qD2Qt-Dlq!v%RJ3(lqKtk-CtS1Ez#`DsT z+3}X?#~d*%8nWh!HO_p@i}y^UaiQZ_e%d+NIVlXS%)yR@4jd?!6tp{jpYt_6{*d!k zi(QtOS(w8TRIkGm)W6Ka9Huxm{wd&1YMlE;%H9~}{QPtKCwJOsnEZn0#ZRyZ%7gB@0RMk6S^>l2H77D=1md zinsVm3+t2hk$AsWP|Hp!o^FueDfPc_G2(O-ByW0YKWUY%aXUNaww*AwABfLx;e|8m z+zF75I>xyCJObiNcebHz^h0-^QgrAiOPkr-_mRS#JNW)&6 zgeAOaM^`epa&);QOz)qQa}&%Y4?gDbvbh>`sNZ0Ki)%6R#6L%fne?TTIWu8x&zq9B zJL=ENXTDkThNpMd=lJdCp@xOYJW%~5$FGGkH98sF&{Mj7Zz1>~ zzWg}Y;v_Ir=d;tX`Ly@zP#w6D3^QAGXrF^}?g!oY8kV!#32bu!?yuCh!in`byuI@V z%+9BEc|I6;5GLGbe7^ww&0v+Y0&!M%XT2AP_eBRWB~Lv3`i6OZl~p)Qaaw<8Und;8 zB(&1knOs{Z0Uch@Uta!wP#fSJr$vHV5mJ4%`Y@gN3kwG zA3NkWmSVg%wuGB!KTdjzF2J-p0&_b1yXw34bx9HWOE_~;mc;bbAClO`LtidKaV$(%TBOgSNL`Z^$(|uo#`&kPI82)hJr_H+cH3XBTEP3g z-oeAu=Ap2%E=oUL@rR#({RPuJ>l3f{GE1N0V^7hkC|YN{5=_to@w96Z*<6D360hJ# z2hM~4rFxud<;G_*2_X9cB3q!0uWDQTi@%Y>pKH6=KNO6;8b%BpfN&Uoub!yXeikVjg6MgF%>TFij;jElZDZCOiaG zIVW>j+g6J&A?6hYY4;!na``GS48J-v-8Fs#aM;jbd_iN@Pu8>T!Q!uNExk0FuniOWYyo(*RynA7^C_Mr6VLs)MSKW z0P&E;Te1CMYiB3V?HulqbBSx0+{&iX+t*tiUh;vy-e?K<0->!h0wztSSj_Pw)BC1Z z<9m_&y1wa%rWUBDSPsfh zfGepT^gCCeD&q1zrc{}$l3r;;M=~`fHp70jm%eWLRR`XDv;py5@FPlCd@Rz%@5Unp zuv5a!818#FAui4uXP>|PO1yKFFh*AlDQ?vTC9Rt-zZ{{(n**-kU!Z4h!kJ(p5?o~Agv zx75)9E#z!`bd_-|Hju#+Vu-^42$gdSOL}_Y*2okG3|ha2f_E*(yz2y)Tq<)&p}`X% z4)G;r;~dChcrG6BOkaLHqQW^n+6FkfdFGUi(3PR+d?O}2ffFb7tUx?D>M;)*CTQ>X zd8bvvL$%OyXEzcR3E_#y`9#kmTbvxGVq)^wE|NreWxX7Ct1ab3Qv+9`mi9|#HqG70 zlE)&F&QDi*D)AMkf&1H{I7{&%r?l|{M~ks1lV}UQ%J8!20VJgRGEW?5;vTOe2M|Aj za9mCbG7Js1JPoJ|B4jcgA&#iRzn=0SNDmI~(3^S+2cttc8f*kIMTMRLNmg9EQR>_o zhuZ0yNto{K`5^1ljEAxnSKP9>8}F>s(FjEE@#6a-XUTARKIEiJgWTb=JAM?g$`u(q zlQYB;y;qen_dx%{G0vIs1AAPde_Rh*{N`UF*j?qls6;QqfBJG02?zf^{O2ZAs9WBA z{I4%s{%8CwKM;|Y|ACLI13Vt(qYJ9k@;Sg-FD}O|EuKGXjF_>P=3DUu*4==Kr{AyBwTIX^c&X5$R{$`UX zT!!=WB)`{6atJTlH82cLkR|Z3*j{~9(}mkZo{?mZ=MPPg#9MwcSnD^*C+#;-r0STk ztxb`Bofhe+Wv?*QZMp4E%E{VFhqp>oJld4NNuOP(PaWFBs)nNTt$nMP76wA8FLlF`1PZ-k6% zDiIl_b@w*3&bG9Eh$*!FX@LwYEv?J{no3F{{I6?+agN1^X;piSPJ5YaBQJ0wYm@hu zpO@x1A%9HE(RPv-A+NrN;c(KzMJ}aJ$?LqB*i`p=8p5aTq$M%U(XzFHPxV3-yP4+nw zJi7q{K_@)8?3ys+;QU1N)k&NcdhQb@JnUoe~g`}JySyW z<9eq2x@*Df6;f`%6{u5Xx(XkhY^OsSX(_qY&KXR*euBUo1w%tAuzTFI{Q3tuZ~Ssrol5cQPOl_ zINLt{*}Vfl1MYV6KI1!Xcxux=&h*o+ojVOn+CVbTXxH9+@6}+CoQW=$7_0-Ry`dEE zhHTYHq2@>N$QOrw%z1g44;oOL2*&k1vDvKweqCo^{6hE_SE<1uV;6bAey{hUg4%kq-Dqv5Zt2-zgV zeYDv=aXqlP?(Nlhx9=uhRdv3Ak79@!+SPdJ?xT(0nkJ}ef{W4w#>w}v%KAWD?L?oU{P`?{l%du@yxs}wb9Wd|upxJnt+)Sj=hYYIp*qPv z*h#$6U!3#mBwI-**?{_@TwZ1G=>!{4+q<1Vh^meG$oQ<>%FV@mWI_|C_DtxW*oZd4 zcD-K_IUkt>$!3sDX#1t@_CD6hmfj48WFtu?^zWpBkNj$Sy6cadEiz6jh3_L3A9(+#aCJK-<3mWy!geN%4-X(fMdXgiZ%b zcU)UWy3aZ;_iKB@-nxTwlJ@tpYo`R&FIQ>;GZa0T->9ui>GIN6hs z?gq>{%cUC@cSqf4d%>l=Z`%8}b=d;#G>{1Bdw*rH!? z`;2ybz+HIzK4sJTh<5GjpP4H@D*QsD8F71x*100@g2}Z>hXL%9^YlCIJ^l;wfj7yG ztTb6NqdB#uFL(P)m*>F`$#dxe(yl_%=JRyuNalKa&$7@T40kUp$6Ekly%=weA6v(c zEiB$^g7DWn;V;_X4)edyasGF_AAVQ5Fdv(p&j)606M6?*zFe;ST!z@$IWq4lUEJEI zwQLY^?LD2DQ;J&8EOKM^W@66FeD!C(2HdaN@mG=}`SaY5&D@XS>6x!tnXegY%ri5- zYUZoveq~I)6j%Sxa|-2xwoE{Bq=E}#0!_vHDl(~dXDU8)uI#3oFhD2-YNrt4(6SdU2+xNlscgiS@xpMrPCV z7jhH$NjA_-vS+BhSt~iCB9nQ01J;=&l#fi@#I7QqUvc}5BVs|4ULt2$;HC_b#Q1!o z<_+uiL>1BYUy%kl+Ww7*JH=9Ii;n5q3*0eqs(l$w+)Ws((|JU)4&OpYcC9px?~b`T zzN_Av9iMfs8}Kd+>e0|CAEr)uIQ*%jKj1Bh{)lJvdpwMu<9oYeOvSm-@MR0{!rccj zEnwThC|o3;BoiOU930=h@IbygN=yy7*g<@9p*9qa3k1rM!S$s)F79@3i;Lc5y$ft*^Ucy0jJ}vU-;jZ$E!{~epYB_J>+LzgXe>7-J_w484Brk=>;22Yw zg+V12m%)+c`0zQx6oUReoIdJy`|_$yo?C1ai=fn(E8CF zg77bZT6t^-|Eq=LIuMt_(bc}JWsZ?*^U5Om;Xj!1=uZ-r&uQYj+)w6%k5CBZV6T?N zu{L`A|GhRY{7vQx0r%P1dud+J8pbtHE8w&QTi{$=bPkS~8(`i9IgY=E??wy`t+v;| z;Oyao2f6n?%xRRZ`hvuT@C^ffPZVl%)SD4<>0k~(1Q_5hfnMl;-x%k zqPpi*DEmA^*~h8fJDnn@52Gyv-fjq&{?3o@N2#Vy(=$0fjy`4vJUxHPFg;Z*v|*1h z%$(i9FcD1dBiR{uXHjRg2Y$c+obJCT-{fu{;X5uxl>i9tUU(TJ zBmKtSd?h^Tl$hUT$WPlz{5WU|W`!q%oUu1BUX#yRTTdT90l(2NP*>w7%ADA*N-gKGFDB7CDDuZ_`12V*2quc_%uSs+XMS#4^!5Ty z>^tKAy3K%-jt={f>3&K0C>O0MFO@M{A`*awa8zH4VVy6I?EBvSz`3=KDdZ?_#zeL6 zg7X5D!_h04fwy5XZj6)~!JaSH2qN`sh;9SWD^w8?=*-<{*n%?OTfB@rYcLMd)mr!w zU&ZQE0@*0Fdz7(~M{6t3f-nT7;Q~AyIJT#GH;9}z{z6Ep5dD<}!WM+T;Wv6EX+?wK z8TUIN?nfCHeFbhP5`0}a-=1R)Z@umgqBY395@8PAi3qioKxdA-UoSWUZv}9OEEM%j zbjTpC$+`yg7eWf1xw0PjlW)Q7_ht4$QSRf4_Dg8dJ2!45EkU$Df;&+q#b^mBxBiR1 zw}s711r-9@r2HiUi@kc$0mO*{vJGvH_=3|9;zvNy_}8!_L`v3K8jKEP%%q+(Hb?C{ z4_}WB81A*AtXyhGkg-k_U-EdBp~(-oCb1s2#8tzy*|JVVY`OcR;t)_#YH_1Zo7<4;TKT;qf)pG2&2u(wa+ywQ)Z{4td5Z}Ktt z6HM#36-rxdgUNW|v^6Iz(J51X6^M@qy7;|({MylIaoX|q$}9{nlMzM79~@kogN z=W(OnaE`&O4W&(;x08cxn8}Cw&xav* zH=!M30&z0h7(BU8;ZJq!&H9D?ymkQh1{-kM@5DZ3^h{8)I=E+pu`vb~8f(}M-oOsE zj+NM;>I9(s`Xm5I@=L$8{zlvRM1O}n_!$^A=8T<0EOIyK$>2}9@m0A%d;_}F^mcOH z*NgoK-jV0){h+*0{FJNNFM8fFogHtaDil`RP4z%KIQZ#^MxOvM{DK$&hZsI=j$DBW|w8$rujpn(4j7lOkdm9w^TMer1IWp!(5gRjZb%sSuKEz`<8 z9CL-V%tyHJz(Y64efu0kP6s7^inw;@W8-((&g6`4>(3y8>XGOrFDi2NpVL+sB1 zWP_M1f>>_JxW=`vonq;@IB7k;#V~3fkpE+0{P2$$F41ct6w42){-9NHRQ-GbNzr zqidT5j;CQaT#7uq>gZE7RL(Q$slOBl7l33r&7>1OObB7pG6vzdF{My-Vg?~R=0ve< z*wO0{qX}}kd&BGwJ^urHq%~v5coJWamS(0HuLbv3dprX~>?SYu_IjJg+nc0sLXa8f zo2-Cftx*Cvr{W$nGY(-+$4()1#*(7U(X`(%X{&{*-=w&Qf94))eYfMvG_M!v-x8h3H2^as@M*zjn@Lp*ja#j zbtqzizEY-e&ZfZ$q8K5%75J78nU5p!vHqhrFKb^p5OJAfbRxi-%@!soEG8P8<+H1>; zfsd6^8)Gy-d^bOlpB>kXJd)-hx;rJ>!d3o-nL%`v+sEs;nt?BxBK^_%^rj4&|9`mY zOH!w*H)#GG&R}c*qK#!~RQ<@%_yr41%V_#R&4c~EsTiC7AQ{I@`rGsH43F5!x1`r` z)THMql)&?Hb59CR>cA~y^yM^yrB8Juga4~}c!r0c&%;$WGU>4Zl+x$wMh5=%JUmnW zEA#M7`8kLt1^|5+Xgpzj=mRAD04FDr?4Ni>rnO!z;MxAe2^(lakD|M8i;QW{>L z2~Tjm@Opzql)N8>V7wA_8NY>(uegE%S~7L}!t+4-f*emG?ON@}L!$6vpvNWdUxj6N zMu73XPz=RtjP6|Wq%N}$>w7(nrfSR;VY9NJJUSu6iCQ!NP-%Va7u zSWR(c#u4=Ck3z<`=VJ^H#|Zl3@>0`T-zBRRFXX7UArhT0^ndb|y^GnSUMQ^7v zSRFf;KV~L@`NBK!>5byR3qLv!f@jAUjQ?gGuE}(=0a-d0dMPkOw>FQA9-4e#02!1` z%hnfSs}u)w@te##nl19XNIqb(6mkTkZjK&dKRfgbRKs3;T!M!qep!CK@VW;taO6*1Gb@ByxkqUfiRsWKG+pGiqM z8UpI>iY~7a!-@vX5e6#xmZK+-RZj<^NDjMm1`Ts0L`S}dOpf(m+G)l>e`z_6tMd$C zECJx;sUIWQ#g3YP9O!wj*OFnSNpgh^4wX_TaD&=41cyAY zBZyuO&VWJ7`QtY!80F{`$jFG{w`LF&IvVp>r!_phj{Z{pm0l&<3?B+t;}q+2j$z`N zAW&n zaS&RGm;M@pD9%|2!z=@lzBRyjA!{LtB7e`rHiW*2Y0kr}=_96HfF6k{qXCR-Xf-$Ubr-ie91w!VT;{F1~)teQqZW zIDfqTN$&GJwVXP2>eQ)Ir%qM5;9Gy2vE&V&&c>djV9~Ge9sX;ApHJ)qwF_v7sL1QF%Jh=z0R3gsS5;Re)ku965Z+4ia8TX^*0-NT z&226>C@`4KO-EAy0WuXLy=%Vg*Mp+gNf48*6idbT=SY@Wd%OQ5w)U}PrHz)2>SWry z7zwwvI@Nv)0Jm0`r_DuV-dbJJ-gt!qY>YJJW#hJw>NT~;o%E_;vl zniVEHuh+*1>m@|i7S9X4gn(EF*Y`f^W3R${`kwS)^mgW6&7MkUkydxl_c71+ntr}C z*-ZS$J^WI_HNL3tuBH9-4M$QFlfLWz@H49QMd8SjO6B zRdu8u8kTYGF3_%o%>Beb`G|0k@)E-y6v+BEi)XEtugX~Ac=)}FLfU)%M#qsqO^IyC zuSA@BD>2vK<4Q~{WQA%)iLo9z0{Yw;0;)tKBJea2s1^{Y#=6~S1gsE8V6C46zh`pr zslEo3CR>w(f81XW+KaY|eN}BJl}pd?+~SBF8(rh}rKG<`w4I0z=-LeR!@RJ2vpda- zjM~+YXzVw4Bym)JNRE;#at{vi)&TFO{yP~Dv(7(k_T+3+@wLvLlb^=gcY)g{t=%)a z?GhNGuTC{JbFf2sDf@^W%4TG;vL|k%>^$=VBa?XYUqD>UrR`BO%-Y3#G@@9 zUG)**_bK7WfTlj#XsxK)O6lg`(k0+A6-hg)z-qo0ddv2ys;!0EJdXyg)^p8Oa@p5C z>&ZU*nfnWJI!jI`{L?w##!iWx9^hLAJKyTfrHzRfsxCwoib!t#$j5BDPxlw!$d#S^^kFUZ+R7`+7Y_OWil{^fArl>X9aQXO*}ok2U|U zd$@8BgvWI$fg1>~d3u45;icpmz_GDqxBi%^CDFjb#o)lHS&jynH_(Jzt1Hu{<~gQy zrA?_HHd)_V-KG5wOR#Git^>rXCCz`Ky^15PwZX}hD_IkrBQ67{oGw{2kkJRuCGGbD zt^IL+I(N&*3`@-$mA2fyoQHTAcE_$bD+r}#37G@r{(7s~nbKM18KA{yydMb2K=@}p zT+l51IccVax8~l|5E)+TzKIx0e>0C_8^v-II{+_+EBVghZE<*4>>QqAcLq<%Eqnty z_C&e4&d^KNZcH=nv*=;_mIxM_J1<3i6dvKaeqn794MF$T0BqXN}q$)d85;=Z+Ea)^5}by(X<_W2Zy>>5uCK968jpeltWiyAgy>rX3W+| zR_#_jHJw%3Cf427CfwHq4>qB9do+$i9Q&T6)$Ue-L`ck|jqn)2|61n>0U8MZyoal_ zUcJyalP_4fn*b=bG}UNr&d%o)-P8sh7d0j3nNLb*g+s-D4}6p(UUBr1g01O;i$Uh8 zH;p+)2v+PjJW6vA#%bYJvEL@k2Q5q^(fFO$4RBiHQ*nmt!_sWRcGql(oCDsw>{m^W zWupGY!FG8EdEof>>B0Pb4!U<9sU~?ZA>JGrJ>8|s7!ME~T`xFXSk{%|4P)G=t^e-QSvqh_$ zi_Gkk^JJ7o;;)_cD-mNL{7c^7M2Ug$FMGI98wmfYToBS(vFSkguAW{r?}anlN-X_^ z1@&Zt?gSOJ8}+LosG_SF5IRESh5B0DI$~^bc#&Rf$L5u_=dEhY!+47pse^&>Atv)7`K*f_v3E7I$-Txt8tI;s)+TCv|cj z&5~cyX4k3B2Ac!oGk>+P_M4zj+B}4^3l=N1bF)j`h%H6B>~%b+NBkN7$cJqPnnpu+ z_MtOMV9T>p7cXf#r1o!L4RD`#cK$@J5sdT#6@IUuKky^7y@lMNkUJHU)x&@D#B^6m z*y&wfJyTiJxl%%`)VU1hXuP~^yfVpEXMclLwqD?Wn14Ty8x zm|I$x*Fqt(zvl?tzC#Lyw91x?maCaDWV|uS9YJRyL&t_~0i0GTkBx*U(G&8@Gj%yE z=a;d%xr`f82wx3Xjrb-tZg)DM!Cg&kG9{zTQ6d~^4&??Sm~D7$c&ve(Rp@Jy)(|;s z&CHa;F>JXKd^z#F#H7WiC@n$t}cRulVxa%T8j*9W70qFu-0Y3^{Wh z_Pcv!uDlWufq#)W=v1*cVP2f(kDE1j=Enir}{68X@vlx*X9!w&t2oxXVm zPrmOJWWPNbPaKefjHQ$9=K^CZL#y{f-j=to@*tMPynmUQjTnxX@)(zgzKAo4XLW0N zK7?7VKToYU4b876#s9Ekmo{zOcJ1K2PQ8_*x#EWSrmIwF$nPf{YRnt&6lx4noC*FL zf#mpr9_8)_^7gx_dRZaSO(?q? zG0Z15f_OKXejEXtxQA_O(@33hK03&My~YlB6g;h8Vwz^$_@=?vz@saqZl^>%e<%>| zBu2gU|Hk*28#m&mmTZ&9e(Y}G!}$f5i_us|(pvK*s6Sp}6}fdrGWYKy$JwN%=7O&7 zq_Fmb?nut7hf~>ZhBx?F`3>bw#`(=VNgM4g_3(J@M)OoLQC>~PL?k2Yi5lvum_Wal zk(~JwiI<7-a^=H|s#U-w&?d}+JiJt_Okp;Z1`qED7K zA4ko?4{6&D8W^UlKzqq)=xkbq`r)cHkz|`ULWi&xZN3uTP6o6}(RmU&f7^Je)ZC=t zEZpMRgp}@by$FhQaGx5wz(+DR&=uIJ6n;i>a^1>fSc_Gs0%e5l`+QH;>fsD<8P~$d z;!4mEYonPDH!5HWE$$I zh=Kwso>b|Cgfm46yZ&nX+BM1DE4f}VGU0(rQEC5-+NHDVcBXtZZ?Ij0)$w@kCw$Kc zpPZJQaczQqTz{?Pnx7}7)e6@8FOxOv=pOmKtKShVO<6!DLKgLk@u5jHq}5|XV~s7t zT0DLy)Lc`o6}v+N1q#k-j5WrFjB^-$XKwUbPmlXEE{5czH7PdSAdD)udt-#sL?iDW zBkM0DhM^vZFW)6WBP=cT`^R{hFS`L&9fbMHSlPQswTk{J4lkfL#+>xjO=upq7B`Th zL)P9<-xQNIhg>CK%Ztdbq%gkF|E|hEj`H=j;XLQ~5#MxyQla)zvKlvJ9#1N*VW*WU z4M7WYwobFxyc`xK*E$CyDrLsdQYQ}oQTyHlIj}pKr^)Wrl-H-E7AJ50PXk$>KfpH*?Ps%kA9@7g<3@__^p5%Mb zCoeRk1}+D%1kHVdq}^-yNm{EC?qsy-h^|DPzpB#Yg%` zbqAaGi{Jl$^jaV%NLRbaZoF)62i*FKkH@Ng#>#F((RV4CM7+>No(;x0?VL!y!4ylAsgXj0 z{RMceylO)q#-nk1{2l1agwy=|3|*YAHhBP(+!nK6AvInFm8ngL7k*C(zgAE!L!^{K zP`S)HPC<&T|F*+^NDuY~HeFC$sWx@W{U;2DRjBzY5z5CJ)#B{`8wO0ZnoQZTTWw!5 zUQgQl{GLkGJI|L21yO|Fc?I-Z`!d*NRn4bV=;CCmA$O!_8s%Dy34A=uJ{UjrnNw9Y zK!!%^7I`G#iqB9FDjsR(%E0~cRz28aSz1eyC zKVYmVA6(zO#lt_9hqFvBZ%lo2TorUn)*i*m%w+Qdz?MQ+z%68IAf)Fvz?Ru$d%rC8 zpG$#K=s#0fGXKSJofS5$^SoNcM3gz_=QVtG6_s{gt5@L?yTaOb4Esz!4D7m}=F<^Z zM2@&*sbo&n-4$gvNr1Q0%B30%{v~DKT9A|`g3}eyVvT$T;lWgEO)=abB8&F zvJB8T+S&wTAUxX61au&LH>aNp83>OyausUfALazF872{5CLrD8LTcK%Lf>D}ca$Ae z;Y)nRIfmvPb+Gynhz)9xZiVvjgUzAH@9Z9SV+h+2s;#q*X7SY(D}Vw$f>F z8D+}+9siQqkZJN+=U80x2S|=Maj>~hxCb2?-0D0aB4yrW z(pL&=Dy-!fn+(GQ4xH9xhyD?Y+f;VPc8j$-QDjY82Q3KWnuTFRw2=$ebOpQb_rM$V z4xTeZFB2TIyS@$~VZ$b~&erY>w+gL=*AqNat<@&#(Q;~gu?u<7PBDSb+~n3%rX~gJ z=@5o99M1v4g2hr6Wb{_y#jK|cOxVjR6HMgHY+5atP2WIDB>0ePkt*Qhm`#VIJnExH zOjL4#;#SidI;0L{lYCE;vy#Vr*j+j|Zo8f~DXe*m{G^kv^e@l?{jR6m(a*n1ETZZ< z9_4A)c;r(@_p^ad+EZ`&?`xz;TAbQZE-XMac)U$dWC@Om$x;>BS1 zYr$_8vwJ$LdR6S#mgw>rEd?g*#_o@CQSTITQEp}l+YIN^>3ZU!(+zr*yEpO}Eln?G z=Dr}oZX%62Fp#LfWM`p8iW%{oVC6yTDQTa2-w-%!$JEZq`OiW6)u7+{OTasuUXnKD zK){ZAex<-n=CwaB+kB(wo6f2N75nYe^Tc#kMON&$S)?bFR{bmXJ3vn;Es|91cOWLG z^t`!=s$q2IAbnR@J-* z(z&|d_4mv4{yl%cT<_oa_c!VN2mbzMz5mePx9I&xdSA8J0sWW{A(^2k9P33==&ay` zD@e_|$_j7sca;_1>hFRd-sbOu8Q$*iDl1&6cT=O3JquU$z6Bx+TYKLsDhvPG`xe+N zyrcIm&{=qA?_1!raCPr{K77?EFHdXGY4QZ>^qFKet%zJ^)|?bNDPUr>KO(Qz;}FyAp%~I;%HU^Ga2Rtw+=yIqQD| zaeRpEo{$gGxc4Cf_de7by$>~=e_$_56Z|OV(RI8?*GhoA1+xBpVY247je4@@TBqOD zs*Iua4poK^Lo5F?jFVrQ4B08IBVoh4U>oce&%oaEZeH=*NUFvZ&~ZCP zU7Er+9_&c+s+0U-Msk^Fw%>0!nfo>rX%GF0-5jA|i}Kq?N0Rn21k^kGXqhvSq3Jy; zRU0c_wtex^(%qAP1?PMO^cMI2MO_v>K;z&3$?#$3z6XB$C5N7yOd?#MChsrG&*oa4 z{L57`;rpEa@jRmrZyl=n9>_Lxlru!;U&uY{eEzl8NgCsJO=qp+c^pR#TDP+=MnDrw zW?NX@FURD2qos`ADpDqUUO~g-v=pyiDy-ST~&-*?w$qt$3_#wm5;f zipiy`CVXvZyDhHdHZH7oQd5+S*SwK1rWz-uA^L&;ophCLE1k)%tun&%(ObiLHho*-gpURF5I8+@x^0{XZBAzAJIE(Uk@Ku zYDMFciNmAbK1LAJ{f{dqS^vM3V+lT?JnU6MZdJys7+Kd#Q%_hKUjH(^R9LOQMrq8B zd^$?zSR;H=0hmw2{z`yFcFTbcmi8;X#atmYb1w*~alL{v2@E^pWC=1A|F~nk* zK#Q%0b-myXPl1QfUk9wdB;RlZ;V8+DF&+bv5;;wS^&U6fDEVu#aZHYnwoarLqcM~0 z#-CFCmb8{FUDEtCuPpSd5$Zmu68IU#3%%{gmnC;kVi@VkmjsWFOJGjBFm=k1v~3eBmGC*B z(o_VpvrSuXQO$2PUHXZXUyx%#yga$zFYta@WOte(ai$2E7c0JMM)$1#%l&_=}g^^`891i z!w|nZ-Mw=y&C&gdpzq%KyxxDR_de=B<1<-%4lJQW;R__;U5UaM^$vq-jyFkpzjl69 zoNQ@dB6^Kai60iT;9Bry%Otyj=@> zEmu)e=9{_5yirvSr?Cj6QBK3EOtZ2NapDmxUzQ+ieg*x(Vp#pEu4cPpjKN)_U<}99 z-KZ^#FiP0HDN40E4#bsv!%81r1lLTfi>iIGy;Gl!>djI-?}e_npF^60X-*NhAHsM6IwL6Sc8;u1LHf8Kjqne9^0X%d3Hq zh2N6_%T{=4k6w9Br`4WXEXbN)7M+y0M<>s+mGLYR%3~v;^pP5!)S@C2AsZekGR6I} zN>SJ^3r3<&IoFX_C!hYA+eT!|+XSx6ZMDujvCQ;WCNM{UzR)gNB{*qSRfsHTd*?M1 zvAulwD*Rc5c^kTFCEUWV+bbI_$p=geD&w*JGPG3_GEl}tuzD6Y2rdZTHu5b9eqBeh z>_T<9!opyw`x^ozWT3US0azZ^akPq^SE0TBuTnyGa3( z2rhFkIE7@%+^>o8eSF6D?RO)Dx3Y@jd3ami-sV9ooLLBRzn;s$kRpBsotU%T$pbHN zVP-pkhBJKK_NRDTM0yKFNsrmW0@C#IEZjlrvC?bgn`fvcw1iee=+5#kJ7)|VuSI;% zakhxvR8dxN!dk$Real$6JlVWn^-fw39IT{e*bDh0D2`S?ubrg$56jnEPhsiTeK9sX z4xZbAEZhG%vPeuLrz^=BJa4zQfPomzPli0lAY*6;zV=N@o7b`kt-1CMUQe)GQMV++EKp2EvZ?Ouf_!~a5tbXFV_zNz&l{Iq(lv;08z8{@Yi zqQeia$q3&kfbZ{wZ;3@#Oa42+&>e2$AtUNR+QR<_K1T4q9%v$(29LM2Qrl9kZK?NK z#?QI*6@Ml9obf0U+{cd{!{4xy@H58g2he}=var;0GB?RxknGpsyR(-qdms*V)X zb|E#x9?3|3XhpJdZB{8&%ScmTHNUCi)0*YX+x;l&caX~;s~=9gjnd}B!8Ux5#u&=^ z`}^c|URXKEtYD3u_HSM@%@-@lO?22h3w6^;AIlHiEwZ;eF`Pz4y_jn#Mib6rNz+T@ zAUk*6NK)z>e<@zGkqtiwXPj&=`HSR1r6&(6%iDW-&K@=kE1supy?;gZ>a$d=l0b* z%Pc|RHnLCP_3CqHt>=G$w%~wIjbF#HEdoT~yM1%6*7+5spmPQq)#;%sBhD!jpyjz; z@JMBGrIy6EocN{I28L|uRQS6fi2%kqFp~Z4--DKW0Q#jQQCQX{C&B?ZI)Mi{H6WAc zQ`>hLiv|Ij#o^RYfTF_EtIILTBVLPxDt{ZdeS1(>SDAzE3)thb?XKe_OB z5_N8dbQk_kZ`<{Dhu(gww>$NAtKNREw_oV(4|@AAz5P*d|E;$_>Frl~`?KDDt+&7E z?KZvrRd09b?QeSfz25HPEtym4?H{h=f(w-yZUmzkIP+)%g;Fu_;Qa^`PQ}1O|4N_= zD+Zo$e*%R|F|eWRsz@<#nF3X(V&G~8s#3+k4+^I0Tnv1<0#(6c;G=}n{J>KcC;}8y zetH9eqJ;5((Ud95O^^~DX{`MmicPH# zbxyU??VdKj0|xH%J1>19E=|~y9p^N2nH=kfvbi!(bNDd) zd#P1+iXPHS5ATz1UZQzv7Tt$5>3v93yANqf3#BR4u|gWvv1(~^d*i}&{0EJ^(>fMl zDve-@eto(@r+Ks}z}jg$_OQ@eQLoLMU-CH4OHjMoB>wM|8}+C(IhgV==i9k{s}O^V ztZZ>UL^#4!n$F{2u1j@1S_&QE-^!=yhVMdf;y8St;XJT_4>n>)$3~VuHd8wy^W7Yo z-2Y^;>g4&GDNd5cZUyhIozN=U017nh^^?r__k%LMvZFpco53h{QrQfcE+w46%$U;5 zH1jbP6hm?^;)dE6TgKiUZnb5}5YhlWPootB?2P=2ou<>eRdky?lb>EGtlfTixu zEXyql`$YuAGm?jqpUTaDqWlBzt^WJ%Sbq5BnAQBBESG*=Xp5cDf~BK-=7&>vz=flH z?lffXGcLV8cu%;Ll0)tdm)GqCm%L$^6^S$MGfq3u;y#rB>3b-D|Njr=-*pe=uUnw} zh5Dt}|6cgxKG0f>?7#11rGE4UoT~({ZuMmt5MR^ENoCD8!i=T7LjnY=D%ZX6|$fsi8uD(Iz3kubQ|Ck9AU~*TWP$H^MU4J zz)9xn)XT^2Y{>nL{U<7Nyd8fMA;q2VL@?dO8o8Rvg{j8pQ)&B8_+!N6EvHi5+Z*wW@>X(R8? zY4Zf$y$i=i+$C-5a7T>w%}46V%^k<_bV-@_L1sSApVPE?pYg>W;w*aTgD9QjX|`#p ztl%B0KF0;m@w{JO^x~MpZ_0f6M2Z2+wYT-fP&M+QGG{8UBXmcBPE=DPU2th0lsFP?`$RFWTM8S;I1^exiW# zp|#HNIDN42aJHUwAMh(DE$ncA?U%(|I+_^`z_1nS622lkqSObBvorfRHtzx(PP!C$ z*G1+dQk$;T!cR@2VMs?REBA)0D4f%cbxvn$WZ^V5h#96?=aF{eQ6AWN3Bbq8Iwgb4kk6-zGPyZRHlt+jca-mgR>NpsddBgjeFzsngHS8e+)vfb2*ag zL@@I4bjnq8%4sZI2HpPVbUPW)s+kr$8tq!LC=M;zRMgg@Ego zVZ%0&qEbC@x2i27B2Gw@1&Iz{oCY$e4(s$9%W#opn8pswqAS?<2lTG)hb1K;c_yZ3KN_VHj&W=}%~d;1GZh}8 zQhiTn11HAb($6rC|K0&uT?ad|qYGYIiStmb-h~v(nwooxD=BM2v>Z%-&WQb>7C3PEaL8nqJVty|h zcVLbA%CocZJ@atGNnZt=;@B>V4CIZnT@)G!U+!gzG8S$y^;Liwbv#jMAa5*7R2~SA zWvP`0!ee^1Mhs7rJ!oeR;8T57>ShkdX4L-E9taGlKxK5q zSm@6prF^K%$)hOK{@_G|W=-UX2LVfG6}&Z_yRwgqRjXJcic`Nt8}E(=sMn<_F}-r# zgR+@@*~YIS;aURHX0Tr&?U`**2=t$!Ry}QY2&bZmNh7O`yMh^g&c$@Qti$s_1P-@? zr*!5D%88R9rRp=wvgQ)1&T46MjAyu;Q?LQpQ%)rFpWMUKcwTcIgY89YOm9D%4)4M% z-kHY2^)Ah4fuN2F+XDoW7G4UIF~~8=rh+$-(E)%B-PjzwQ8t>MB$#=0KD-eKaB}6q_H-T+1_7%|G%dbI;2(kwgw_YkOe(U!btghaMk!S-sU z4B@aBt4N>JBwho&aI-YV62*AwA+Zew&Z6e52A#{H?uA0w>foQkd+mGE&M&E5_b@*4 zJ_B1HqR&$IP(8{PS*rbcAvGUhPOb%u_TxT&rQ|)7QC1n*+@W=? z6_dv%6g7^9uw9Gg@MMHi7Fz3I>v+sto=D$1?QNv>R4fxGk`C>?99A(1E}Zm`#i^YY z*8{@01KHD&7l__mvKnrpCU!N49V7?78pq$qvtoF=gkla*OD2Zbzmaf=7B+%QK0pxH zWm=>?m*JaWOTh${vfOPouhQS`92LtLu^~}15^Dus^B&(^$ z+2VP6!m=c*q+Er^;(7Bu;IP$K%lw9(e*1gZSj)!+toxjUv)9Iu|9Ah zBl0DCi>V`&=kVeD*6$;XVvs$YPt=l>8m6;q#(qcAwbyEAtb?;^b~MtF*6|UbJB8`m zl7Y)-c42|PzwqN}jYCJc9|}0eH(s#|$!i^>FWM)%52qZC_2@BN7DL1*S@K8_uB*Ot z4NqXx?m|-!j}A3>_3!fbpar3@P06Xwk#PhsOb21m~5SFFLg^ z>%m#N$Pd1(_G!8RoPxKB+EnLnCW-IKX59<7h~|Y7fVrMfmM=&iKgme&!aP>|e+F?4 z(Kii$rH3F2m=!Q0Fje?Eli239GjxI0Ly7(y(YaJ5%`PlJBI$lgqB8S=paTG#f1%Ju zOUGz#K1&nfN_ZbO!rbRX<(;sz@`f<~sI*4wK|2<-f-x#=Csxw3SWF|qq4!qHmc+9I z(gZ=DyxivFd3})II$-caATqo|MTl%@$oL6hhMCzhU--Eo_K!OuuSc`1(?q#wp4!<` z!%nxmL>OfM-+4CrRxvgTh7VYwOOonlZVBUZQ(@~s)E6~(8xaiKw>4C0Zx=TpQ*^i7 zqv->%76@Ya^3R|RR;wN#p2`m0boNmsu*9pLXd!EKCIf<~{ns2yI{OIHRKux^dzN=i zes-tA?SQ$vOB8T@WmVTego`QL@cUlcxsvy;5@JI*R*%jr?uRD-NDnz)kNz&GWB82v zWR^USdW{-wW)=) z7_hQ@>7z2$6-Lf#qU{_0|KRY_A`a=SaBxIsjZXF(u7GagwfscQPk!%vgWqDOko=j5@Ttmk>Lyj%oM8yj&>G%MS{`pQG{r$#U>$}(q4&k6LwhL%>vzLFB{cFisxqVqstesxe zO2?}FFOOGrotQl}Pd4Cdj83NamoooCV}IjloT8(8^hxXtg)ND8z%CTacoPj_nW*DlPX$$2PrOQ z3cpvG3KZ)))80YQ8fWXgj@XVSU>b<&N))XqdD!APCLYW1$qyfd*krJU4~-_)6lj}Y z5YOaWvMgV3ZQMKhG&}ay*R$|8Q0h;2ZJd){Z1d@~)Vze~A-Mq}u|EP-fBP_R;WpL7 z_2Sg-R$OX$g;{mO^Y{TX6rTGhnYC5u5XASGSKPxcA&iQP5}9{hwB;5Gg=CAy%yGd) zKYtWFtW^DMoLENY_Vb?2K3Kh>x!bdBziUS04ZYkf?Sy`{ih}NPgf+FE!S%gqf6VlA z;apa@fMm9y4(kX-`pfUn(_|(P^GLN#F;2u?D9)sOPo}sn-|20FI@W(+PTm_xEb@E3 z5uwyQK?OlPjf&k9^-=CVP7kI$kF{sHdlJtb=h#ZsD@*g>371`hI1s+f!v%aGeA2^J z%0PHLw??JL@GN;S@L!<0R{w6iSpf_e(|5QaZ`I>p_3v0mbVc5*5aXtwRZomTwvEOh zsSh-gy?`}E*_d!`C)8+VX>#|n$FUixGFlz2jngDFTxFktBrv#0$X@S+slTgKlH%oFd}F(*l29^(V@}C z=x}U%+VOPq(T->6F*?#clV`%Z;XeiA$vcCQ&%>@YJz-Ym4B)-h!&UG=cx-baG7ui= zrLru%IHx>|K=HA3`ma*&<)TR`+|CNc5c|JM;n%#iSj8B}9>iurIYMgKf3=8It-nUY z2?L#sGxaUwrAqxZGh9Z%*yO{8#jQ-*No5fmxa8;PUXJxGop-Lo?aNPw7Jx(8$ydi< z(EJ#EOZ(z9zA0kQo#p00!fq;pfSI!x^aVzPWY$f$`L~bT>h3dqTIua~LS2y5h zX2)oL+{#=35fWzkPDd5I;VpzPd&>`Xge#9} z6z##=8)Ze?z-$Y6UbPX_np#9)`$5Gs$Y-|gupdvfDD1~WoaP&`eIMHkk_UVwKLaL9 zJ_PP7V_RxoV@?Lz*{#V6gJGBoyx3o|{f4y9-TufhF)^us&CkX%%NpJmTVce6bk-3xdkAcX%xd0D-2(T76><7f}PVIz?QqLZv) zB$S9TJyAA}D5r#p3kqvH#k<^J>hevPTMTRNnbpJOl&6Vj)TyrhH2Nx}iT(>BL_dwb z3Tbv#A4zA0OFxai3TYxfqF_IbzATN~w$9dA6&Gz$LOCaqC27 z^AL7SF<%ohmpt&ux5#g|T z=|Qtc+emx0e!njID%3ZQ7vhY58hu%sEIAW+yBpoo=9l2!<_-J|v1t62{G(B+ngQy; ziC^f1%USyaV7RqD<#&^BtuJriWdSRyuewx~^!Ta2*Z)7#SZ|Dx!nez#qX6#^&JF98|L z+VB`zEjS=6{01d&yk6pnm?u%t_>kUC(;Ig^Oz+2;Fmklud{|p}`UenZcG-rmyvVHK z#c-qllq#}8sssmtZC1MR;mPq4?rd@jjdQ}rxRYm;gS0pZYh;X(*P20wR~?$gxllPp z4$a9`=lHEi5m55C5r861F%0C%hih#(#%HT*z+l|Za}jM{jyf^!C(2EXO-TPxXl-mF z-$I_W4&jKgg;CkHkIK+|RH$vMkw`bO>9*1SI50C}Y~~CxPLf&LFLPEP;Y~}e? z7+{ts=O?<-#Jj?^{`PwQe~ym{zV)Z@ck*9pIn%M1J|C}E`FN$CWqmjgk1|4?a3DO6 zUFwhn;Ts%|M%;n$C`X=?hue6lFOwsSlMBIZ4>8!>nv^^WnXKm1*wIP4j z2K-qY?q_LH*1RMt(^(s~XN5%PS~`MMU)9V=$h)vM((ifN zJp7evuYcjApry?6iB^!)D#~t!THSSUmU3jyY-X>4r;|Oso{BQ=zvPoFO)-)x08d@I z9AYaPU2@n2YK))DVH^GQRgl9m%?k$7=xfI`7Y?M+*N$mkIFLqPmL^S9huEHiZa3~6 zxYUu0*YCI_F)Hl7?82_{ek--Ou8@we${k;YLVQ(8k;u~7vgGZQr$3DUuUFh;_YMAd zqdzX|XONb4u|9Y2e48<)`%-`Zj^1D9@88w?D+*~|Y46QBc2IX;UU&tjBOQzw6nC5kaI&E+d8>Z#0 z#T1&(>KB{xk7xtgo3i8~?BRGdipH zg~-@_1dD89sBjAj!ghW}T2o82=1+K|C)?8fMA*!F7$?_e&7Tr%%l0>OvSfDm;mZ;~^ri)luPnpd&4@nTi zdOtl`|EAoQ;5;7rMKUDvn)^&!c*c&7Y`UJUjAkFadO5ldM`)+1&TG)NF7r z9i@r~PNb}64A9?;X;jT0r}$<4o$c(3>deRHbror=Bvo{n#hXZwsNYYxuOzb=`b zc3+jp$qTcR7UrR3KFo|DYN5)~Md81ot28P#`Ld)scM;+1YSqmfP{>)P)D?OfP%Zy5 zjAEQ+Wm#*wiqukvU#e+p=Fy>k^H}P+*87c8%709S&^<~Mjn;;WWirwc#NB|;s%jI4 zd`bP-Jo7RxY$B-`E0x~tY+FLkH^8Ap?ElV45 z%DX6O{7$6U?v^I}H&|QiYi^PzcLAg2_44@tQG6^s{E832b^cdX1tselzvcr=PitwV z`5RtG)TeLbh3TSbE?dxOjj-Pm7H;Q(NW^P;{-ef{S$T z)GNB6mBw1y@A+P%t9Jj8gZL33YIjd^w_ZVTShG0B>8yHJ7XGN51EkA8J|{YIGBmzN z<+a{-_D>FdX5M!$PS$?N-{;X;1W?=mNswJfd051hrus9XrVpjYu+vUgbql{faX!Jx{8`0R|xZyU^ z98+hOIg15Ud1e=l<;`7*jIv_b#ty?5(^uc9Ug(CS_0gfuIlzE{47*C$%fxFG8BwX5 z$CnbHS(sOkf{jT-OBVhDZF}|f@o$}Imo=Zajt*R#S&5xjoAo&l&_b;d*5|3QH}Kxp4es98|_rfXcPz=m8pd|GW&4tLQKEGIWw$LdQM#%A0d42)lv zEQ)C}Z?>$#ojN(7B~(j|NEduA50)(YYtH55NDw~Ic?q9)?m&;~9=0NoD3!Sq*0Flw2qtu&GP(zC3Bt>?V*a&wS`M;d)?7of z*#2ennQ=QDa?duO&P(sD8D(9`Z1=tomt9iQV>>z%VhE1`JIEm|v6*I?0yMa(|Hy~I z(lfs>4NtwLbExv*$>w=7cH=&bkUXRK33-#e!^Xr?ldhtzqT1LAMc^Ks5s)N@lf{%K zmGdIfA7pee&6CQQ#46c7Q&8;_;Rz}`ot5Gz6+`;*n)sQyf?aj*==#ioxUt$`NQZ!n zSJrbb#%0t1n!4%|x)w~vd%ZK;*YH4V>&|*F(8OaDqh*|wrJ&i&baCtAH7W@rjT!Zl7H}t3*?qx_Zd;mCg#F z|Av16b?THrjI@~@BNh>Xr1LGfg*;g9V3dy}+d1SSmT-!dkTwq#d+L@B^&wxcJ1}|d z#R*GcNuoo+HQ^1Z0K5FvSX}e^XsQv%Vl*xvi`hhEQxFa-VfKfVxZHXYx$&v_27bM|ApB ztkl{Ig-mOpcGekFv@ARZYyxO?v=Nn15zDNQB)HQ2V4?f-IkLnMNYUN zp83fJ(Zvmc8muNq=VP5$-!n7F5VNYJURgq@HJ(|sY5JS}PJrQi}qK8s5PRcp? z;$(C+Qa9x)^q0TeZ8vH1qh!+oewRv;ym8Uq*DPA{D@*f|MJN5x?=#5I1Loi%{oOYk zar;B?*tR;9^97eTf%|5Cy1_VW->mqd!FYYT5jks5G>CtFZ^6d$>(dR$S^J@iZw%(w zryHKL_Bo2*S^1j9r&;?Q3&A(zbJo6Tp?GOaO=+ypLP!cuZ*Y>U{Rf1$M2pEIMo8&?XoM=lN}PIEVU6eu6# zL~m!-0@Y)jXze^-pm>ZEo!z#zV|k*n>k>P{6n$Oz>=-B7x~wZuIF={6y7i?%-54jD zxQUGPfAzQ+4 z-*ywbg3YxVb~~@qeCG^^={ubjX67Yri>4S4gi^Q;%!iqMs3y(Vj%%}D^EEtBcV#4< zUQ*Xq4#kGwqZi8yq0H9IG3}Bwt6jN@$?t(_wRt?s8c>zAYHr*dG0%;r6^G{$wdNav z9sUBO=n}@bn%bO^`}<_?GNeS#_9s8iYWE94UGutgdHO6>{Kylplds5Fkh8q^(onx_hV#JU5iHguDErl2!VRE|O@A+1(i^{Ke!q~h`8>=qq?wFqYN=PS6n1se z78~?Lj8kcNp&D)!4f@6YQVSOqnsTd}a#T$T-;C0f*spdQY|GJJTi&v8gPeFz4KhfW zoJ(`6*cD7IBM5fDG&vf=`25EEr(KQutCGz$ja7CzaCK(gD-6q)wv3a}AQ)%Wc;KIC zUZfxNcj+Qua7@$whp4a(=_@AEiSiVVou%+&GHY_Bbi4G@xs1t3H(DM@xN+O);8-T1 z<8mUiGl6tgVsCuPy6+~M0q8wEO6RlCx(IugZgSy(T<5hB0(zCx^|CWblY{NQ=+TUreRK(ma*g zVGq(oe-M?a(M8X2G4hqeyd+BvV$qNNeI#%jRLS;^E<+~dOWV{_hfy4p%?efX=qmMJ z1M`ZZm}GV8X)-I&h*s*qHlGY_3U$#K<8|F3SM$t%QuE_`25BE+ava*b$)m)rKBwR( z3QACf=}l|*XduCTa(Z!w8CA6kXV7M_)h48h%?z-)eE*(}BXMu4+e3CuW*(8-LrMuQ zbIC&u55EiyV5OJ+ryK1n|ULqvjS}guf(P^ zKGb=T)^?t1dPT7bW1dKO%U0a1Ex*it$bY!#n51+6rUE9!McXHalJ?7xNDR}<2e@jnJ47C-%&pVg97e*WAUY_f zkn;$Od^k%)oA+jNmWJ=rlwS6BjN$EV)Up(gB+%5BYUd0D= zS>=^V6X9c^SP38Jcc$i%+}HCdquW(V6W`y+Yx~5-!hIekEN$y~J16je7?~d5e(KJ0 ze%d10nuZ*_M&vWpjC{`{{Z7gEHUp&DNRfQzqmd-vO_uy;PCwr7cKRJKY5N#16d(F{ zP%*nD@{;vC4t@M6We?4LnCQY9<^G9m zqVNvjSprpo?LC&z8;VCzI25fvoC%C0tj#k{R-azB7`GpoaC(@Ri+w2yVT8TaE@tCA zglE#S++fKmHuEc!m-c}9rS%55`1J^-F}BlkL;~ldsUhl zl&>09RFW-4`SBpqp_-Ep=F>_VXf+vRCTZ)+8?-Gd1~Qqkt5KxO5cE?=Xydkt!LeMl zTFVI&N7C>G!8pDa!z5BvNNBd%s9 zv-7o0VP-Tt|K&V=%^L2cOxBf~91k@#dCuLXSR2IPW5$?~`5jB%C*@%kd287@ZUk?B zS!}3vPFg<4rC^hHe;(S|&*eJG>YhPXuam}*>yevBTli-PZ~vB3BW*(mZJNE>(mJ^T z;K@9y;q#0gVUm%_oYTX;3{R}|HeUvf^?a$G)v54Rk}NHz#u{ zF&8K!^$iaPm1Nafwo40F^s%L&@*-Nk64s*khYxB!;Vk-hd-c4S5AZf>LAZ|hjxA*v&ImrnVRS{SQwf2_W-{%&mPfyUoU1pGVkrhyeH37^&52i$b31E z*%29^^xMv#LOX;h8lz&4Xw3(+Z$~SHuD3llnK;{yV?%$evVf2z$MoCzCo0G7g4V!> zNAp5mWCU?coh-MGDY`y3lBJ9KrhR6c$3RBS0*~dX(Np^imnl)tKQe2cWqi={jZ~8N z^?f6;1<-*lV~x!hxQq<3#A&V2-e-J41T*6Y5!3Np|5x~C2UL4ljF;vi{z#Cbw_CaU zBd5jLny>1t=CEcRG_31Wr#yRL*4cyQ!f*ve>bPqi_nzlJxR75bK8JmJ`A@R^3ap`c zAI&rC>?JsFiEwmG{DN?r>vBAH24}V4yw%_oiM!#C+AOi#SlLbfJEw0wd`KA)Du?5U z0b7{A!znza+iOmuKZSpr|2W7dzuIsORp?6RY7K0KO6L>t=V-b#g!y; zsI>(nEqQRCybg|)^0{Iix6a1ny>*P&W0FdAy{&h?qNzV;{+LPUZTiq&q4A+f7JH_~ zhQ=CZW`ZNWA*nOgz<$I<&0|Am4iK;(Q?J6x(lZ8DmWIcM#g$4|V?8EvW$fMm9!VGb z*a68~ZgSFSjr&6Aa%`V2e=E>MLUhMIHr$#ntf~$6uwq9F4~8mYy*U5*`u3G^84OB+ zEK?%!SVVQL_y4uYhO^v!kl#!B$UbiSPt5CH5{lMXz5ZWnJvL4!ZOyNbomz_iua+9& z%ISK~YgfCj(HqjNX7-F&gEYK|W@x_LMu2>Q-jZGktHxU?kqjcb-x*rz)r66fd5=yN zIqTI<=LY;I|1bN?Tz35#Ojy?pFQ$metivs-6?qi;&C1F4#q?35|6eTK&1O4yxFak= z$yDHLq2m8X^=OojOpMS=TqcDc(SZ0=wdmFKL*8wCdZ$<;zW=MoRvOz+y^bk#qfvpaurO-lDJh+V<9V zk*Zl=($jDy`rAWAV3Ju+0!YK{H|jCEy|97;guVhtoLoETM?4 zw;WaoO~XJ;Z`Tbx%lm1(dp)iItAN4^aPGL@XsuwUn~-OP)a%9&qO}kAwb6~+Ru1aB;)R})F8#Zae3Lpp z#@g|-1#QU2rnSkO!rJv^i_YWTU7R@)bvDhKZ)k_@Oz^_=t_qk}0!=Emud)XKqGCyn zkwNEE4|A2T-%902Gt??>p(WUC&?BC?G+C?G&3k@|&E!*Na%5|NxzsreWH@yvd{F(` zVDBbF?pP^0HgDXv%V6bImwx4SFY@V(E61ts+}bAph;R->71JQqHXJ2w5dT)fV~`H1 zJ`P%x%t;V$MWQ;dBg+LPlQ%n3p$&t$9z^l+ z!g;fOa5SbR=Qt#EY-}g|l2ums2*J$m!<=|U4Ch?P%_Fe$kG&(U3a5}xG&DwQ4mdqh zwu98IL*#Y_Ofh*qloOa!kZ+`v)x!(;W>8)+m_pZPhf$GOUY@ps-2H1>%c3fz8a7D(Ne>xr zy`VZr5xpo~fId-~qA@Y(3k%GoUh#aqA^(O*ijyeH8L%3e&TJ}U>w!$@s)5nbaP5` zPv~%Kf&(UvpgL(Myv2x$dD!GD7Kh|S)!TEviAYui=&vuOm*My~G}(ywWGg2s6L$Lo z!gg}f7iKxQyqwWeS1I3UX*#Q_18ay_73uax=;mAv98(0g+TdT#bQ?@!-lVp=M zmW}gPNyBB3WYQPDMoWh0u3|UQy;94@giD99y%OGJjgU9rRwrLh4I$3#Gl}4tDY0Ro^-74G z0!HzOcmSL<%8`Q=|0LvIFyGG>$hTr>{R@?k?Rw!2z(h5Q zr>9fsK?{N#S-x{L7|s^Xbl3u!mb;gDdJ^7FAsD~VjP!?D5#NIKLyymvNvFIH!hhkvu!y?Y0V z_hNNkR(QX~vV*usC*Qwe<>@>flH+cz9ha(~9X9SqRW;v3Rt{*$cxWXk?LbNcNm`h|ZdkJFDW5`6*=Qt-Q;-|ufWT?Z-|>3j8aJFvxN zr7isv`}2B~l3OTyliD;+3oy)n+zV$5(ie#Yc^j!@k!-L!@e)x&ZTzu3+01Fl+;yTC zb%0|@{0DNhgVk?5CjVtGdFwp)r60#fNK-r925lOKIS^8S-RG%wUcD@7 z9Zo1`YULFAoM;l6(_D3KX9YS>E@!lwe99Bu9Ey@n&yt-A^gZ7?N_jdT9bJ@e9JlzWDf}KH#Hzax{&1s`$vt$h%^0 z8!$fkCU9}{vFgX08+*3}d3gu{vGfp-b@pPTY$QS%m1AFIKH25Rg?YTcQEf&8)fsn{ z3Wxg9ay@Ha3ub7n5VlPyfMq#HgB9(^G@p_BQVpxu5m{l9W!_*Ot?5^9-Y{OKu4S7` zSj|gQSnZ^(mcz68t-8vZna1itOxav-^^3$%9F2f(ZOaj;fdVtQ&S8>oZE&fLzPRPZj0Xyy|9MQvg=fngL~MzR;g9Xu25HPE56B_-aI!}C=ASV ztxf*3*VZMQ=Yr+Dd9EdE?2@xYah@yt`U&9p1j7-fQ!a*$%JT3Gp0O>18$9R!!R)86 zXO(k%=Tx4|?42}-WtCA8xNi5{Jz2Tlwgs7Q(LYn(PV~ips=STc_8yd`qD9{tkV3?2diSt$25w~eH}PeJY|oDtT=f+qetDW8eW97!W_#TDsDrw=|UV> zWNS4W^U~xYC&+{$`^f4+90j{4@zwv!$pQ4uCl+LU7QRFw(d0H&D;?T!jVa9rN933GKJP{w%aj_srIsL&%65I*TahiCb~?tgN53B-C4yMzIj&>tus2UjFBOCjg;6=`#W#1CuP`JpMT$0Yco zdh#({9c$p$YXQajy=UG5E0w<{?L)7G2-xIj;SRpJ>mhC~+mM*}9Vn#zQW~(_{Ez(V zvnb4Z(`8c1Ueh@Ns&iG4jYG*?N=_!fwggblnqQL;;8Nv%2Afmx3oK{y{2SEyN#34c z1thMH*Qq_7D0oAQLU==K8Zyq}pxQvgjbsP|UM0Lx5!JMUrJIqm`AvyRCZx6Sb-*MX zO)EM#zoX!KnsK)LcX`!dgBg2fDSX}h9szj0*EQp>Gx{*wu}IEUvkP~XaJUW>q@PXv z>pjzfqQ(=vlQvSA{F+@C^|@-r)}>BU-Eh_b%^|m{;wG$04OiVbV{0$mfng#T;eYIC zspsfvamaLn4+K@LCu({w@&#pV2S|QXDs0$DV{Bbh(Qhk3QpYus3NfaY>|ELB%kQ&1 zJz74W9jftoKWdGpj>hsj8iK7`j6hJQQQe?r2xeeRbEUHkMJGek>f2YqBd!&-Kf-JC zS#%QjV)y$J%kl1AQXiJ=YI2?nc-#B#%1M&7DbKmJw!Hlm3s_O!T3gwErM>S`*;@01 zB>fU$8~Eifvme;tQ!iRZ!wotvSM|gRKc=I>34j0mhmz?GXE=|Exr~{HaI@3Imdd)X zk|qn`C!!lXaWhY1D59*xBzD!+9^9#rId@w7RhqYu$Se!voU!^mva46qYV zEi{}3F*mk-=i`b&7-uN^8o}e0xf=?7QER3%PjyBVqv~@yu_Wy`LL`YIu>l+T0KLPK zgv>qy*Z$hQr-c^J1CkYivXO-!P$kxFWd7yBRZs{;6y`{kA1M}9_eLR&LibIc(?erX zl~(@|u1yR)Go<JC9-Jay~tujUlg29~u;8-#B zX^j3{u69^7uY@fUGGogpJTsytl4zy|38dBzmTK20uOQEpz1?gn zC(56=8zZ(`Y$rU#>a32}!Vg6VwD{>IkqA`x+p)T`Q67QN|1RHZK7DgiASo?%u2f}Kb6I>cx$B1ThUG(kRwkOt}y z2aw{Wr88A<$F?(77MY`f@oZ@ZX0l}~cts*Ep9hOitI6-c;cTyG94A#yK2CbWqTHxq zi_rDl8mi@L*yj9tSqq&}J+0a9Krs zAPNsL+lYUZJD-6d7tjqjsU@G6`KqoLRSn;uBx}Bn+x8vQZzOgH^&3Cu`{~|pCSTkp z5oG9~4h)b-Nbb5J=-%x*q~EDsr>`VSM}8n<(K%k`K^W-!W07c82|rQ=q*1D&#rTbO zYd3_mjkx&wGig%rhC3j6GIwKfXi{pNcoo(@g*-L$D5#l3K^%`hGf#8$#IGc=tCFdw z_MG&z|5i^kMN7aZBJeNv(kHERV_0?f9L8X=-{!2BnB>4-631qs`K_+I_GhLvCV*)kFvn!vA!WuMV2n|+k)Q}UO> zcSt%t3JA?6m!D>SRmd;PSEmD%*Z)XFCV_BjVBP%`IZB2RfzlnSzTRC5*AOG;0qrph zuVs}PwYX^WGoTM=0^toS)OMk=&gjbQ8_6DI^<aqYLX>dQ z1J7TIa1Vx6~POt@>e*R7M3@fcJ=fsW_Y z-2wiHvRJx=Cro)9`KH<3Xj(jF?w{M%c)wqco%Q#FdaM!KLQEmw}|muQ`9F; zj4kq$e*H?}u@2li*fg0cacj0IjMyR9)oXndxS&X1EpgQt@~?GNgt*I|ImHGUT!+7n zpoq)QuN*$FNeXDy-30YV0(;YPY;F~HQzgl>h5H2Nf!q;FWv-80=rd~0*+mq^2|o|9 zv<(bc6XXb0oiHD$A#>Nj1FFbRa#tFJy@YSeg-b{7u2ksBr7}C1!E_`yAb_LW>K>CU zd6FHsX7h?mk=yXXyneu>IqwH2L!&|J40iw659A_3HPyc>bKgKFnM?x?yMwGhy|hQ` ziN<=)enIqY+exyc_R5=tWOstJ1QB44b})HIEg*RC-uDT?N@M*y00&XQ^AConLq1|b z$S=6BkXw%)kRk=-zH#3`#HPLzw0eFH<>blW+x~y7y$P6|MV0^m=6&zpOLEhl+gX5w zCCw$>352x?AjqPCin2^dkWE}z^@ZC3l=en++!YkXEx5+PeI0ilopE#=l>wuUJ4SIA zHxw0h6#k#@IrYBxz1RXyI#ngU@_udP-Qbc|(?=y8f>&8W z97kYsN!XDosuVu_aER-vOksANG*uxy$g26_bJRCos1GIP5_r_4mL|syZvr696z-tJ zR!BAwrK{|Z2du0kLv_Yqy*K`p)`*NP&?p|y)`(<2BFXffV=_@G#wyJG()HN)v&qS( zl7ncf<)AF_4rO7`sWPWKDQ<#%Sc-$v;3MR!!uWrKap zuWJ$HRbqpF$$oN-fpbt#N3rXjHd2Kq^g ziH=G0Y;|-nAeR$%Y{~L?imIl(K4L7=#J;Ro)0#lr?Fr3F-Ay3Xx!9up8@5jdTdd1$ zp=5roRo9rY|FHSmtdzKS!?t4UEl0>5-B|PfMw3Ey`Wb2g8wu!Q&*T&9bIEUDXyRw~ z9K}@qovi-|$iUMyN0tC-rLk|HMBoIn+#+Vv67{ z%Tja#IGRsSXkS?C|A{)rqpd)dT9t50!keD$9D=7YOWHdr;q&ciwAaCY_8{wt{xgLo z%5+1Yd@^(&PDA}O>s|FG@#Zs^Y{AU7pnbEBo5?)*Fs8JXjkaERNE5fVm@KECuPw+u zoHS^ui*hVH8{STO)VI~9jgYfv?XziPOp;J(2S!`J0;-)yug+%Zg!}lk_vZU?>Cd%_ zcnY-y*9k0HB+?+AdBG{7X!zkGhj45^!aHZ<$$&ZJQUMd=9A!84+5!z8NbpvM-bf>tQ#+eiY#k6 zTFP2WP9RHsIH>AT%w}G<%=vGIg@9qGVmafaEd0g)L;SC6HzxLGicd@GpNRwYS+>vp z^jWdbWu3P|3EXi*YvhRM9{T36BfkmRFrTVEb;|v`N4fNJD3IHT5c9NZumof812>7$ znY9L0OJhtnc4LMs@I_E`Goa4hjAl|oL@tKa$T{aSMkm@ly zs68OmhSssruQF4uqLRA3+HI(Fw&cM5Wt0(V9FytW1dBIQv)-=Ju^9?S(=zD{{c4eq zrh-wg9t^snStYmV_VaPGo-r~Hd)M1lV;>q|T^(%BadZH!oa3LooCEny^Gl`^wb%tA zcTf)b%65mtjCjPIh*9ZnH}W|57}kj*V{SQZap7Dq5I)bRTWB*kD>U%NZ`VN%oh#Sv zOSZ54bd~QWX}?)4Gk)7_b|SYKgwiymTy$$*ToYB90&^7!wbZ4fWLR**a|zb))stwi ze6j0MZRyv^KJKX*=3hbiI)6HLzL5)^wMNhlj)EKW*u@rLHpr z*a4yU6)J1EvQ$3zqEneuIZ)crCjEs{;I2Po(je$*m;wbk-k`@4<574uxI z_)g?LNd57=w4!P{EgE@QsG(A+2nbGs+u$D)&)>6ENhrleMOVIs~v+*i)K7u)67w==Srm-IYT73 zGA{CVx3YR}5LN1Wm1Sy7-Hf4Lthd9AC?n_^ElNgUVDMm64+ z9k*cSU>y$~Hf5aTHrwrF4<>v1sA|!G)*If#bF?z;v{N=Qz?|qXJ}=z-~J0VUMH( z_yz|4(ftEo9h?swaM9VyyU^Neid6lPkF3jOe#k_FHnPt zTI!uL4kQ{7l;K0skk2_@Mei3Hbi#yg{M;p<%hf`Q4^{)rM)GRNv6W&LF7A9U9WQHF z)?i6uTnbsCRN6Q~sv{SN`lhKb7__5_OFVL3#9sH{i2Vq}%xh?2J*-A;!O59PJQ&fS z&7f2nv-6hYVZIr#J48&D_Ynm7jpf1m_g-qn?H#Xd>CkgT&@dPIk4-;`CduW`#$Py4 zn6ySw?Fi(fxa@{34!edUfpVeO_Dp-7jSA^aSQGsprAe4&zSA{{i{L5BQzMxLWKp)m zTrh!zJ%{0Fc{{Ql$?U9DQA~dS(ytvw{Ze2TE*y(*1$|tZ^Z)`<6Aha9j|r zgRKa(R2=~|jeFychx89N5i_409X_ zNS;XZeSJyg+CnHe){^|zJUJ*h;{ReNh@8@CwYt&thPUl;d}^+=>4s6L=$73@X^?wG zo!cqZVepU3P1HUU*M=PPeDtey#FBN^forpj7!&i1L2&do+{8cEK!@k`=rBizOj41< z7kA=^NfyY3_A6>ovN#;|h8EAH@<1wxel$eK-A|0+omor2Pea2Ch;Hv#1rFgXf1$re zos?syiyC*xHu5xJpWnmx-Bec8c?%V#VG?0J>%+>?2uh=yq6QM2yM4$M71W1-d-@5Q z4`$G`(J?Mg=SDa}4HxTIxj2EaKWxHybO#6q< zJ8WInBqW6+RW{r3cr-OauKs=}BkGs+`m4yux?cmoz=d=A-_vNn08s;Tk(*h%!<`~H zB39DlXfwP^Eh`{GHXJRd<1}?W7*U_1N_KP%7abGr-sz>*Xcgm{Yy6t@T&|bHeIw(B zdd9?5bHLoj>|!=yN4L~|sQM(6EBW~yP*AJ-&+izG-kB3OvBgF?J%AMkE#yC}0Nhhy zU|-I`W}n~T0Mdil-zA%K`@0`e&;>wFisG~r=AF@K>7?7OMCZLIr`gHEFt! z!2)qf97d+uHiOuvyx7jjn~$x(ok&Rxy!wHN19QQV>dLZ^<>B#^ZELOKyjG^c8NfmV z(3yhs!SO-c4AwOCKxo_(OGJ!BoinK!R5f=5Lv>CJb41T(2}Y#kP&wj8A*V<0AVTKZ z(v~b}VAw^UK-+*(a7xRtwdOpD7gD}S6CmANnb?_)O5JY|hB-BVYv07?ym&@XmQ^&{ zMEr}aPiY9t@Kd z+{cA`jw^(3g$4wKe+RqwMj_2Eh1&WpTAj%l+OpmvI=8?d6>~1Fm~&~!ZK~@m4^s!z z@Y1zbP=w({L5CLGYS&xMQ=Z9JU4fPE!OkVx^u`@0^$&HSx8~Hm2Vk6U6Qg#Qq9@Ys z7aMy~4M1e=j!BzMFAF9xm47ZE{RoALK z?_|p}Ob$CJ?Sv_Mu!-$8Sv`q46O+n11aFH1ayX$|+c>RKGGu@l==`_jk?j!o!~Wc0 z*F1@C*d(sg`2CK^RPNqsz2SPe#7kG$IBH5~L@G+tVcSBv~{0$|u z1FDs9U%`YVZ>jw*1|~!exnfOYzVpAR(lrzqGjk@ z-Go={UkEvIXgO_I| z{(OBS&G#C%vr;`$25k*;Bim7D5XO9l9Jz=(+vo5nOKy`K1gC*BQN0Kv2FBoKopTLK z%mSV7=JB!;%nqKgKFekPd)SZGY%DZWPXO(t?P@OLsT93~-H*ULt*Kv&00hd8)@>7{{TUPv zK%fAzbP2ZWLYFY9(X%W8-FkPcFKIYmFa@TXypCy0g`q(s+Ifji7^1@|4`Tc?*ES< zPT$X&gzLcI$Bu!@PwXxs&s%O^XE=6lN;s~Y(sj_vrd&l#f0+p7{*mRDjO5Ct8E;j& z`;%UoP7k{aDV`B@7>j*#tZ?Xy4{cOAIsKewJsJm?pJp&dD}|s#LR+{K(f+O6V|q_i zwd;RIQnXcn$9AmBdNbWihZrn&>5hZviCwni(0O8)&l|g9$3FAG?y+OPd1Ck6F+NZ1 zUOU#z6T7m$gNH<&{R#-LZ0uM!U-ZC^$@!uOcc7HbEo5lNQS(I)?>J_@=!H9uoiBRP z{Lzc&j~>}^Y$IchMY{%yLqQ`ceGhg)b z`3u=&{z6vFF2vSi&iAjdIcVnReY~qsVVu9xVeZagq*IT;(Z=^0(~QQtB|8DaMqLA+$p6`L(<`YCA zU%)e}=5zfnC3u#35LKsBlp6zYm)!67d1Y1y8+xVNPvI>0J z)*@I~qSNi|MpL709rhUX;&)MQJa&WB$3~?!eIF*O?Uk+=fmmsH97&p%A$)t))C*#z z9CIblw2b-NYhAGdu~LpXi$5(FvF-J)SfUWShsTOFh?PRAg;{I*5XCo3U2zEs(wb$r zX-$7th&0PxF$@V()3rWpO@G7^DqZmo3DT&|$zuBRmQd}AjYyFCELVuu^p7o}))hyQ zAZ=StQLX9QEur2ObCDpWSk57>>AzY+qboimL29wQ>s!+Y7`g*pu^b7~#YcF1q&0n) z7QG|P*;pdf>hFx;pT8_dZiUL+!arfAU#-bmA0n$v4n+Pv1i=6 zK`L)o%*nU3;;vYeZ|S^UF(%(qUAtmSzNOuE#gu$YckPNLGZ-;s1|xRNV8o0dk@fe( zg+jF}rYyuh(qqM(#AaM@iehVBiHGnGsjX{$!HG^Io4`f6LP9ABn_(fYz5rfg)MeQ@qtE3 z^i0x)H#ct2V<5N?+d!w28wiF=y;E6cK=`QAzo_)RnQ^Wg&T!FMWa~QWS%gDc(mjwb zOzya7t3%i82ixhv_FL{A!f&+Zc<$FPjke0|qfLP6>AR#fTE^F>KW3CYx;&=Wwm^H8 z)z|-lUxY!3k0ZTHm#>>LLx!~y`?DD`1m4@*3-$`3Z)F${DOBjQP>eAEUqNM*fbaXW91|_PvR}*B?ga9`M+M10OEn;r^1x=9GN>5dvG9ffdVa z83JRe5V(FyV25U4MLZp>e0|jnJ>p z0`@*$QOzx2N0X^<%mv<2eCTsu^9O!?NH0E)cqlVeF&39;pv!{f*7DvuI&k>}W5 ze@*KCTJWAL_o`>!#j}m6*nN6Fg#N}LiwJ)IK*{5qiPQTHbb8uN<;Gbh5?5F2> zbZ!R?WgVZ@Z@jNiVf=;haY7%ALIs#GMo;X6QOIEYt})|cH*KDSbx0K+bU=nuYDVS*EL-Qib?aM;$9$$oZoz#c3LWOn( z`aG-;Mxg>sDCgmQFbd6uIk^u;p}8=p^uZ`(Fb_(@X5>ccOL{F%x~GygT63Ccm%l0r<}F;5oU>l{kwh_FJxV{!Q>W>-+0!*lDV;_t{Yd+UgMVR5vCJG8{(oea& zSwB$V9Q!SIAItBYK2eswb_F`9jK26l2NgPByejF74>+q*i+_Dkb~O{9OC)%nr=N27 zeEopu1^mvzPoRC}2K!usL^9xB}8KUKivLL$NAar!BDFVYWqJl=lG-6!xn z2OnkWD?i|)GWy~JJ}R^?KH#HD`r^4qM*5~IwfG0&rzd7G#!m_rcqP>Pq&^sh3NQiZ zi~C>{D!>FhFX@9(XwA+71urE63SOq4a`$rmK*1~Qx7>ZQ{Z_h9;dh=fsLXvd2zaTq zzWC546+d6Rs_TmnxU2fU_&{T!6XM-3#pbB3x>ux|l9sOv=1fspp6Re!6-Br=Gs0Og$giX?f%q07=;Qjp{}R(!6>xm zVEIk#ZwI!lZ%fe;&`IMfUT#-MW7A5uSH?Oofg;;0OUv6U%gh+M-S5)NGQ%I&QC_s> zUsYh+Pk<$z*O6<-ZArFQ`f65)TNDhy*C6~$?QatsIcz+mQqq02lU%@mrLX;zX0$S_ zKO4B--Eck=LYDNOA+RQsOxCuttzBs!e!Zpg=xF;(fVF>(>#fizr{5uH#lt7u8vz{* zmbA{T;)l!j1N^oONW8QUFz*%rhJ!0Au)&KmRwl==r-hZ9iYYTTTl4#j-y8AOIPfkQ zz;U*c?n`qU6_1GUC=CwBc=h4#^1X1+liu2W1?$fDEB`c>2eRFaDO^Q#q@p76*fb%P3 z$m8IZJ{hane~9n<>V1&$@%O^5U|x9%?fX~p-e@D~tcQk+7o@OcW4vk$dUFrrk?+Wl$Um`{QWJQWg*ly{yo zPMg)BW|fh{*~ccXu=o3;f6uD4@298?bT0;iljd1R+9je!8|5}vE6!?$_mrO=t-K{F zuY*1H-+z5BTB`4jJFcV3_IZ@peldTp7nM!sf({6n?8B*l`kRpOI?g7X1dz`c|Dfd6 zyz6g!WwN(@cit_emCSbIX>rNw^DZN;Y=;j&s6InPb9C_zu3)y*EbT+{q-EHu-Y2j} z^I?NYpAEahyw|=ADJ6$%I)!~c{6$yKJd4JUZR+YLn%F1lJmIoF7<>)`%w~s)XPyb@ z~$CCJ+^@0$tE&RFS5`a8>M z?`%lM-b7yZ8OfW3ZZfpM0>92D(&-!Fr$VPC-su!4>{A41V{l?IcYO1KhdO?z_gV#b zITJ$}KiauS*8}i{i}PcMLUl95u zg|S`fJnU7yaf|Y_p4PoU?U;EHe=j6vpmQ(<1tw{AEwR;AYBcpUitB8|BJBej-XO!H zDdNQ>^Lf}jrJYkO?M7AAUnu8Gh*1G}=r2_TIcH_&;0uf!P@xavuN zd*A^(8)4|*Ju7+ny5ZR1@>@F%Z28f7E62JwsQRgGpwPLI_+s;TLcp3gIp(E|tsBUT zL!!A3I?&mc7Z**PK{?iI_xEy4m?6nTjJO4!PElt826xGs?^&+0<{jgsoFP zxW6Bc1<~iy4r|>#IXaGPppm7mI;PO_=UdD1%fd8@a$0OT-sLkd%nH1*m`T-ulM&Yj*aUT~MoQc#jpwLp<75Dbdv9m_eQPhRB8` zn!e(h=Xezvau1nZW|4V~P8}dJ>8yV7oJUCP{sPR*6T{<}M1L@=IEJt)tfu#RBd!92 ze^w#s{WhOjU@XP0lS$A56niJ3&Qq_7t}M0B?apWfl=+X-`N$8IxRffNi{Jv59Lbfuu$0z`2u0nRT;*y4Ll#q z{oNsv3pWTFYBtdVw9+4fdXqP6xf@ZTJ=hY@Df&tCRp|D^}@G^aU*3#S)&%6;p(@D|G zlCDAkWotM@zF^+e2cu8{=A&ND_6+7>GDyVjVX$Z?A{VeL(1lk+m}M%D0^baTM7o;Y7~9f$PzxXsbXBRila z_2+d~x=aP*%B-NRrPCJ3`wjAPz1kvmaG_yY=?bGb)Rg{|$WXKDvVxE6FKUdU(7KFL zToI->D#p?m>d^T;tUJ?}1d_3w3nbGSI;qW)7)iE5u#y>Vt7l$DJ**M*6HQ&=LQnzN zi2n@kQB)^lT3~|+_!IE75HfA;akHdNvWqr>h;CAiy~hx&%}5< z^XmSTmUXKg&AXP0ow=haol#@mHw0d}{Y0eZYK9vCi)U0`Vf9ka?n$y%=%7`*t`6bG zD{hkHY){s9Zs$qrTl9K$sa+b4g9hW~} zy0wNdYv~~zE#+nM(fRgv&G4K0ph(8OJe1%s!D^gvTelu)^AW;5Mx}Nv=u-MduiQ#u z-RM2meTDTB%HXJfvPtqvqR8kx;Qh$B(@|}y2gF_JaO?-7#fDS zMH$k=6LjfV2x+L=$jE56B5F=%<3Em$rY$CuM08}|!J&wBiW1x+M=Uy}%BAur$;RU$ zuAZ|2y9U)M5Xbi%9!Ht~W-_JJ-9|QErTGt7epWjlQcz zD)hIhGX3&Zp+$&6lunLfa7d0BTNB&Xwz4 z{C<`;4rTtmjS0wTX}Jv|R$bYeu2&yaLM(7SA}vhc&Z*z-Ybi0B7*?c)mxmqaIFhf@ zCyhpyBW@2U-#f^cU8%z|6aN2(_}>x>gD@D8)%J%_&ZoQ_mC$emoXaZdJ1MVUky`Ok z6#ha{!JHh)kLg^>vVTmSl4LNa3E5E-Duk?`My*f#J7v@w*MoSKa<{tw;y*T@j2aW# ze%P^866QfALAgW3K`z*x;{yXHHdv>h1AqIR*}j?2u9)6z_(_yf)>*b6(6U*^Y3)~h zoa*Ap`}jZ>z&&B(ZD76>e;QYMBJ_4y%RFPfVJ5;%yuF!ZAKi9cy+h95YA7K3r#BffdgK0Oga-@r zjJVJsi-Qa%Ru139F^^z}!6kSsa6O+(tF3MPEbAP~VMadueI#vk`1Clv1|kgAGfe(K zd%AC@SdJurQr~a!?@#Odt@`##x^MGuVbFaCf8v>26_eg7`4OjMA}usD_VOP2O(Ck5 zKA@1x7V-Ok7{6N?UQ+rt3L4v-@=$nV3ue8z;qm>cld>=P(0LE^5DNVOdG?uil9r@5 z(eQBw>@3|)T;0>}6k20Sj(ugY3mr!_IoK!N_btdNF_kd_(g$_(hdGzTGfHZ03*siP zdk^39Qer62bwa5%1T=ctH#8h>U@(l zKArte-R&^}kCNR(_Gy=M5~i7uv}qMFdBpMgIAS(vWFsz9NSMMmyaFuxMk>!<{2ET( z!m}c5H~6*S)l|$Y9Y(W0Lco}krwVip`p<<|G_iJGUagzDJi-)Ss%*ie5&P`M1Bx03 zqHlVSwX52j!0aG5Z!#5GKfwOhX`msIZz$!w<#V0V0)6`Sha}SGi`UFLU%V(kU%ckF z5MQ=Cm0V_LeTdlJ3)I{Df@$2|$Nuie-%`3*nutUwtCksQI`NE@oAkSClZ|6BZO)^) zwr`c~jBPiwD}5t;3IM^Yr44HdEtcZxH`2>p8^XcFcv?LDLdI)XL$_~jmPAjcE}tU| zcZS^Npz?B!Mqm*lmvgYkbp3Wkh~iA)AKVYhb8kMExU$d(*0}@T%Rt4{P32y5e$@HC zn9?Xym~h#QH~@f5cR3W?MAvx5G@5Xu`>r1PQO~~w5pm%OOe9~X)jAyhZlK(^WFqA6 z2fnfgJfjkm>7%GKT_*`BIqLNPPnS^wNDm~*=udgFJwJip&nO*A9YkIR%aQz4)1&zt z&j^8ZFT^R5*7CEIWbL+d7)+l}<+bUj!35Vaek^r8sjf_7^+1=lBDu$cvT|L1L3H3j z(eR7Vza)1?vv&2Dkn^edhyS&f&TGi<&)WA{mlr}mo#M~z^#3ZPt8uf_KUYZKP)HYj zv~K?IUOJR8`c!7qhc!l3chqPjE0-mZA&J?exN%4~%6h|q{kR(Km{-V3OuWbxj%nfLYL(cv48+stK^aR5e8*i8QJAw-aKI^+9V62T6`vPT zh1(V35PoJ8MTu8KL=$EnRpp?bvy&=g|QP%RrDyOP@oiTmwr7% z8}%=Me?Z`^?#KM++Uq|^x_^Br|N5}Lo=4lS|41J9QNE(Bg6_OrTc)RxdECR_eNBJZ zwo5%-WftKrT!6Q*ZNWOcYVMpP$B{z#b^G^+&9S7A{+e0ouR9T^fY#T3N_iuCTp=QUR+Gg_5OyO)V`fUs7k-1>JipIW@4}q(V@pwEU7M#?j!xrG z)98K@h)~qzqJD1~&vK2h)SL#E`iU*zZ*b9wjm)mH%EmJ)$t?eFpr8H{vG`k+(j9!@ z3nl&X{g5QrFIkp7k)-rYr9;KS{F$}R8+^$#C0a8!E!*GpP-blG6^HQ? z62{WQ6<~vM;9(3J@rdJn3II0E+ux9Lo~ZN)@{=WTxTDFEA)AFy`dmFjZ?-fX~Fr4(Wr5GsNnAJs=x z=>oIxa-yDMM5Pl>*GI7ZAGcuekqd_JrgI*`!cE8~?UO8BV_xf*FPeUy4FZ;KC-=sg zhH^Rrc%x$DxnPVLp#yw4bDgy%;<|T+N(O^R>zDe}-d=r4gr8r8E3?)kbNg9c!$N6p zf-yk8WpZuEY@O`OB@ zBVjLl_#^0dw^LXh?1Wg8jedDRjWTONdbCoFdAw+r5mvDAepayf=|hzJKk8p!`;WEX zWnQ5-UbNegH zG#10*bD&C@%QoLHceb4lFdCAx0?gI`sf?YMk`dQtWe+iBD@yaA-o)Gw9=+Xol%aR3 zk`imp*!0)bn5;}g3ikLqk%M}^R{moQM5_c*?D)A88KUib?nK5{(TU94=jb_h!Sn|l z-gc#}+??2G+rZW)u7hh&Hr*4%!f*>vCR0lRDwVy-_LI^tV5&9{`one?yeZg|w^!1>DXr!t9QFTTU?oGgH5|k5;Z@mlb;gI@gY`hI@y@)ca z?K9{;rjp0!0cUV4k~#V%JsHXj?L?i@UH)8_%KPn^|B7}ZmYCbWWn9H^@OQ&?LrMGn z{ET2rlv>cNv@e0iI5-2nexzBNT!>M%{d7Q94`L}`zESoK&!l)9s?&4e*YtzpuYbZe zJyMN!4vf?|d=U2a?IqEy`Rv2jA1?b{&;9~In$;~_!VuTI{&bWrmh?+l07FZ5wno@n zJl*m=mdcv-VD5@0o`AbGBPmS2)~XR(-|(&%s?y>{dJH0GyxEvs7Mn6LIczJTX2T?h z%LvQH#$kzAr`?1m!XyM}WboxaX+i6;3kJkTyiT!TzjrQZt;0_AT*ks&xh?VB+tZK@ z3m@yue}_tUu@Q~G@F zLqQ{vv!-%LoeFw-9JRB&fijD1IatUh=Nz)R&BX1Wc(P{l-c@IvAptCts3kk6laAWR znb;rAhHL4sHSH>#HZhT(1h_vM92m(4nYSelYI!JIle`P8P%P(_N~vd+tkrz+&-{ML zWNoI|D~D?wE_E|o6T+R>17aliiB#^+fMKX-`o`FR-jeC*DP&=c74($S{CY}ws8aLd z>WohF5@0B6|9xsd8~U`zKQUJyPaJzeyS2Uj7Yz)e%BGdzWrwg-ire1)r1CwY^pDuy z{;YfvoAFd&Wz4p{sfwP>OQD|4tIwX?`2fQ+lh~zQ*WAR*=+thOXF^$Upq&%#Mg~%eMQ<-8_jQn@Hv!g%7$S)}JJF_BxrN{?n zMK(_+a)165vmc|#GiOC^JsInR{y5~CPCR`dzNXzTfp5-vN%wyUn*1n5x6`jL@O|6c ziA6BM6R4LncM!_FXF4}snfWR?z=;6#z$I%0Zj0hY$Xd4d!?HVRKa07it5oSVAx~Go zeMRt&w`Sg?eJ+E@>mce7qT(50n{de;(k`qwlgc6-V7^Q|Gb{L>;p%ZNg^42fAK+GB z0~MC4T&XkKRnDoei<_C`gFB7l%$3=^Us8*{WMpy~zKW^FvP!_n|m23yiq zOf>N{ZrPU*A3F%oBt^N{oWQ|Hp_Qww;>7A4w6RpP={H-k(+JMj%&6;_;n7gG zR$JDmR#cW6YUc73%|D{CLnY}SlzX;cOF*2th5jlOmmR^#GXJqqbs%2f<=0=OqA)-D z8)|lU)~JcCgQL!+@aXjG;ezY5ucJHZc4*G=bmpNsdGa_rLz`GRd7RDL`TK11z1ik* z=8KTmQPMjPk)O$B+V~;O{Boda^Js?GY8jwU(bjlmiA-+3%>R#Jr1c#`m$&gmg2_qYo$btB&`#D5=4t z(fka=>DTxfqzyGYLn*aZR>-AMHR08U(@88m7d@n>YwY0x`mY?llrsO<%0#lf9MsVD z^g@K`uJ}NHUPbdf+D#-4)!HxR2MdGBpB&)eVm19e)JHKJDcc&HqlRcD`034{{PAu? z(weAvF0Sx@1)0-71CQ~lf_gu#>MC)mj>pjZ`JO(COd}NzWJ+(SM?V6$ul4$=K~HhD z{KV>LxLV`s_}aEwb!_uG-hYH~L&!d>_oQ>QB&YX7?I$w^5dDHaSB+#*yVdh;C zkEafK53$sK0r5j|ovcq2#IRjJuWXwlsyaEU*S3wY;8t%@Ar)`KH}c1@7)ub|a%V9l zV06IU#Br@6Xn^;foTkB(OuHdWo|d zO^iTZbE9mQ%jub52r?7jx^EO`4*D+8^Y09qrtnX zfUm8tdf8+okclJ+%<=0xy}es%g)tu#lDk-GoDPo?xb6w)jw?dJj()oj3y3~c=hf-t=p zNyl8EdmUNbTU_U>nx^ffF3+M5PF&;BeV}^<&<6l*4!-zChM{@eg=`QlDd{M0y*W@e z$-q^Ujpk4a^;oGHC#lBKs0oC}W_aO&Fv!VV?yRgH2>Yk+C5t){_zfLMIT!B?nY~Zx zA#)MA0y5Fg5k%yPq5*7~k^&ZY>iJxdEC`++T8OV^9rA7!y`pAgWSD_BtaZpkkwXZd zhz3Vx`upYluY1n*FPj_sWqxe_q~8=@Fb353V$i+(g48tODG!lf99oXX26is-cOQCp zqkdg0j;KoIT5~*&dcI}jpq1ih*4V;xLMv{(^akdO1q~n{i9gBoi6m@ih)%HF?m<+^dohDDc!_7!g4WdmcqFF5XjLNy58WzaJ_+%i$SfLc)Xc$y=@Yo zZ+?Q!L-p;+wFou^{X4SEU<@Mt)R4HLSC8Mgpd259jZ>D*4I6_mpL4^3V2U>!_?h}R zdP{WGnBQZd`TXe={vD^OrbpKmFOH_)K*21BQ$?mYt2De-rHQ?erYxxO&!qRUFz_f( z`Z_4=@40h!-*7@P`^L@{&C=B+&6V`77mNVT&ZlCM%-(F1ElpN~wf|&Kx7j=hi$!-D z&!s)tD=s-gcGlHmrSw07i=U!pWhoQcekQokrdh1?CCGa*O%dA*e2=KSWh4DR{VLRf z!SMYIzImvWC*KA~hs+VnU@r>%Hd5-B0xBny0#B9{D7i=~NC8k?8eyi_s2MJmd1vV? z_$FXyJflLsYjn4|4pr;+$y;Y}yJ^~2qBUDH{pC|IPqKvy7Np#;z%-nQecYDeIv;oT zGJg8?MaFRvjtx!V537z&{* zfkBEVc6~)AE0@zR<@BeZ)fX+%TuDXx;j)vxn#R!GC7)_p7}bZ%pjJzd23y5S}x?UYx9!<~0a@#0RF04!r@>J`UbQ3+}c}vPmaf>RvG~IjRRm%rG z^ymB{zpcBBUqpRsyppxQz_VgAsbY$PFZCmw_1Y|{zi_$&07v!V)Txt!EW(wghTQlM+?7eZvR zuv`ua7B6+YO6rS99YSE$>OqaKFwv=?XH^US%vEa>YeU}mWeisRIogBtWLT9alsjkB z6#B&s`j4XD%t{Z{Ir0Q{WuwvbZ6c9f$~#=)xO#deReJ|h$Q1~1Jug4GlF~I%QrtJl zn_kWzy5({*=fG?v>sApfd=~f?z?0!>`}t~he;TD+K`NbN{8Bf)=ZD6tc1ejBS8v}y z)`8*5!N6TE3~gx+8>)G+7L+9 z;Yy1x-l!?5I$T}1$j3lwTQxn5LBNS(8-b;5>7fJ%t4W2ft&PE2|H}^2P_^ga6TlzCb9+3p_Xs>9cG|SJFF3EgW!K9(C>oZTF^S;w&%- zmV^eyX;j&xaMUNeuDUB-@Dnh2QI;CBEs-@#Nyz z7E4>Zm;-D$F-6%#nU&A71v4HlKj|N#JE`zx36Ldm`fDOu2WfTf-yz=uv#D75Sd3U{ zli3z%S;TSFGv|mL=v=(Ht#ja*6vw-^ic%#W+#Bu^OE2F+(ynngvceZ~;AI(jp>8vtX z1<-xb0<%@UEc(e)7mTcyIvw%-q6K@blm5;45X^x(E|B>6;N3&1KDgIs6+Dd)SCe-8)sW2yIQLsfk|@+seE18Y8ud%qw z(9Y!?XZBvts;Xoh!3(ACdyqt1u8o$fe=#6GDyO#L?|xH17yhB!#=tkNpnbYrJTWN4 zo%fQ_oe|B*?s{*+>6cr;W%?VmZ(!#hfdrlJ09;9z%hx6u*jeU}SqU7UWzpnG(U|jF z5}g7bcbhDk`Cq8#`U&!KZBT9&J~A`+@JRW)McIc?Yw#KhD)dyODt;suWKo~C%&{cfG}z@9ta#_H)gvI8{hOFMr(QAaK7%WC{t z-g%J&umWzDZ!T{#ZX{t3zhtvnw-cFRkx@?{OCgDu6*6R^9xDU}21I%jT@lSo4c?4B z3WLLqmu_mPon``1e2sXl05xB8BOL>UidF!bH}O>BFVe&0hONDqM-MD>n}B4+AY`!p ziOx+l!w0eEhp!U4?T|fP4JKn(}sxCr(qa zZo29KGuh6<+sTIXY+S=XI?o3WS9 zuG;53yW#V?faPz1cjD(3CYPTZqGPVjZ2f%CM8}GsR~%G{otZspqtO+vaA&sk8$!FP5?v|~d7fgrC zlhR)oWIg2VVF%{$d3IpFI)A0}G;_&m896h>#rxyjXzy;;AACPEIymc(_tNIy%xN=g zv8=@>P^7PWTifO?p`G#QGI|Wrn*_d8hpDeBmFa(@TgHs{I1Xp6qsMytOV!Sk=dWO% z)_o{%9X2?dr%#Oby*O(Z-Z2tjuL5-@EO1p2yibu~& zr+J!@0_oKtIJ_MXjh5i^?fM4a=Va}un(qbcZP}j_6!_tCY5J2ziXJI`0m&XkE1j1- z7%CJI_U?ku)PiU!XS=*^zW0m{^SP%S9Rm%2D;kCoHc7>k><{0;uN3bv2g*TI%f$9u z5HJJbvFTgwJCex&J)vZ}v)RmIfZOjNmF*_VNuMRD4M>>k?)~L$frQ1FiiY8&dTQVKBBl^AdnR8)| zO`~<$fSAP0uM683pe~G57FXJwk8Id>vg>6_x@_eEAb|oD>t*l2Htr7MR*c%++)?e0-w}R+6 zd)UqfwxkA;0W>e%QJW3Zyx1CCd%G_VCr84*NdIluKy1)d%n*4S1Zax6v|2DTzj8qRVmx-oan|$(Xq}J)Vu&k5V}QhWL8~}8B(7B3 z?_+f3i(l{i=R~jC!*$q=J8nd`FWiBw_1hY~wDAO!n_A>aCTNWO!DaT>vt>pW|3{Di zMlZe`y#x6BEZ%fb{5?KQc>^&VeZwdNpsP|a%*rK6pK^&{H)Hw;j9tNc>IueB6764i z4W+k7dLsJmN7c4cj6QqAVwEZ!D3xmsX7pLZ1)_-scls5*Vu1~Nrr(ZqHR-5j@^;42 z5O|xf4`cn`C_GzFX?}wpqCcrk3H{1{*a3K^?rYRDI5Cynz>be?@$QXQSdBN0lwi_( z8LKNVFqvT6??G8i?$^DU-w0MY*_~RU-Z3wRp4VZ4?Un0QJbjR`*4R_4H~z)bcazrr z4k_XDPWyZq!=?M(-sevHn;u14w`woMN)_e+uVCGK%boGZku?iXM zF3?Y6rxz?^-2SR^F#pBTzRc!YGMk!uE$#Xii&Fe|D-yC?v+vWQb*?kIEclC$`QMP&hR6mev}F=shpwXhz75HYJvFDqGk?h7 zGMN$L|2RAT|GeD$dhtp0P|C6XFnVQcHo9e9X!6@>W?a~dbh>_sSoe_(3jdnp!9+Zd zSBbgUnrus=BPsv=*595Qd_z&Pq&A6R5ch-@dLT)^1LYbMaY8?YEi+_fV*Y;S`|8&; zVC-rO(ron%_ZB{F6?5UVD;5l2nGlnnZ9a)MWNk$P;}(N?ow{i%#}H>UMnRqRasz_& z;x%BCa(Xgj2%{VuIx`wyiJ#85HhQ0hH$?tMqV*ZJuunsy=~uuj*HN!z+!6eutEkV^ z@X4kAyLv{Way8Su4bSRClY@@^Q7$PpemE}_y;A+2v_H#^9IV&Ai>9J_v&xW={5#6{@vJi9=v44< zdEoq!UV&6!dssYUSb1pwc*e^25a(QsdU)#U*YCh&IR(CX`(nH6{IACEN&9E2RW2o_ zM^`kfO> z97&dHAxk}15sjZUC;iRGqb35;?i6@z+&fW&$)Zc?sp338Kcc&R?hkFU-e3@@>Z}cn z11i3Sis#Yx}N5;MA;_cGx*ti{N zLA0b5jkrxDj*g`srVFjPy`pp#`qq|Ull;iKICoj%rhhKvx<7>V6MDpEk99#L+wk|h~?d_tK7uf0l zq!>t_OTl6I*`5L>6Anrl9mGQE>7=X6#XspFRk>=cRS(M~-7@NY>w2lNo#kQQp9{%~ zVV||^1&5J^6JyPV`59bQR1NP^5N)e66@KT=(dI&lOa*GBJO*TN94(eR7}su)a4@xm zZz<{B-%%jnH|qNy|3*uWyTA2sgDD}mfnjc3(7l)V){wmm63VWp2h&zo9y3yR>Rf== zzMHYNJ)Tj%dTngolEuj!?H^wT)9T|HVNh?DfLGaEmZupT2b6HT!fQkPOQEK<&Tb+2 zJuonqen3NrlTk`Rv$VKu$5|#(QA91)!>7Yc6APBSKAw?!00aj)iOLEDP_4yj({B6N z9=uvv89~eqE!Mm7jOp9nMJJdVYjw7Ni!{!PvGtQML5x;_!PmLR3L`Z-KWB`Jt(m%! z=-RBA4ZSP15NBI0*Yrtq1YS?i1k-?0v*tLh{Z3(VJ>8PGeZ5Hrtq;-_1SvyGy^)Ip zzU&*73~4^f`XF5m!V&bL-WXvbT|&8NkMq>4$$_-Z#SPdp>J*sdy| z$`#te9I_zgzA`Xy@zqP0-1782L%QT>FI^!|Um4OR5_{0pC@ zn@z6mtJ%Nb9?l+kiWwTjQXl5*GKx`*wYmK~yXKGYcPEG5#ez<0bH~djlE6gN#?@xWn;{-mplU&Qm<9`ZTzNh`q%7p+^16;t{^q1ZM zu~x1dS-g00do{$iu=bv}+1GeQXmE_C+IfNQh!eD2a$?xu0puRfUenm-L$F7UZFW(k zJj3Ln&7NnRS-F1$TdlhSN!*joirG&wQ%u`(;L)3GST;GEKZT3F=pbc>k+hK!D({&T z5m50x4WriKvLO-uT&7A{Z0(5P$Y7AIhoUYv2h*!qLvbEtNW)Kf!uL(MT}3ahx9c=) zWVnju^Crq3kEWP$IT@+zLntrYhhzD)=gvT>MH5@?;N*PCo0WV)bI=J<%zY|eN1>DP zx1piY#Nq6jH0&4%3DPly-Krwxn-vXB_KpkWr&Fm}{W4BH2fR7l2C=qD$gZ&qwQ2@X zf$ElDavOB$J)RN=a zyw(CUI4?w$Zu*Y!dIcu_5jR1PHb=A0sWnG4#m7%r(7$zPV6&sTEIk`uV0=@=hVSr@ zQe`c7J^cN|^NVvv7U2c4C_5MNHZHJEZ0|s_;*AieqA}ZQOg%@G!ptH5^U_#FhTqg+6EU=#N;X`|pt19+m&5;6;hL0AH6$C;GH-J2j4v2Ut4|%fy2u#*?qRtCpp()bS$62B+R*v}%i29MT&#Rs zP-Vj?t7lPEEv#U8zzADXhLkOI!inW9PQyDZ!w{|6$pE$x`~>qZ;cy=u+l=9E79A>_ z2+L0DZJ2_XO5c2zVl_kqDgHK_6uq;WZ-?$RqkFni(nTk3*0bxgihxQ`xGpt;w5K*R4}&5R0`yJGjQ4p`1Xn=po!j+CZ;DWdCGqe;Ya71h{? zv$jz25m7yT1w9d3BV3k5OqI82oL9hP+{@$WQ`y7O)D0Ay7dBZaY~t@NEaEU&QSJuB zG+tZ+!?+scLZ=n6#;8=-QP3a>f_GvdVxn=812*{1u<3w9hA}?#jJ=t;;eq=fcwkQR zhWc8UWZQX8YDT*4>1#gzI0e_$Z%i#(7pLbiT85^crRemrd^a%Jw9nNL;`cm$2W#>4 zNka1F4EAxifK<&amT?Nle7Fiw=KAm$&F=@KYfl{Ln(N;Otl2J{>7vaWQh0Lb;=1T1 zW~|mTnTTHDdtSrQtKVYgCG;D&hkn{^)7qD?C2kgPb`4(_Sp2xG|5|5IR%W9LFu@K< z%fcdAWk4)^GWqcpM|!L{)=gMex6;Gi_F9po$7SgUN1a2?>=|Tbk3AgN0V^vpwHG#dCld>jA&x86?InkCPqbo> zkY`5Qj9oBr)vC3tZ#jFXh%*^Ad$M6HeX01&m$7UGCv5HNnHrWk zZte2^kGP3=)h&_T8zlQri}sq0I-b!ERAv_rwoUc3!wkFqQ(IGlIUfcOFl?cC*07ln z&lphI?M9H5GRg&?7(Hh-K$rOvqWv#WCFhx1^lRXUME~G}I@iB~UH!GezoNFd=Kd9N z(kj`JWXv2GnIQy6ly&UAWCxPb*|bPX%nPUe6e`DgxW-|juTy!Pev`irj>p|=@N?tj zwZ^DwIyXZ^E*Bl!V6pupTUoW-?;=AZ^ScPB_nb6#0Y^9HPL<+u?Jy0i?VZoSVR7%C zIgk-PI*2@mJEZI~Ba51gTJiSgqLE>{-OI#%5c(_Ib~Wb^Q#0@Xq8xK(yk6lVL!?z> zd<=Kj}^ zTba=5c}~Vkev5>?3X+IR-m=rLe(*pUcR+{9Ra>hJLZtXTXcd!-o7KscTWgA`dQ8(^ zfh4`4qblH#VK!Y{6fgGnlJ+9ZW4JDHoVW~7R{$sb7ra8-}c8?o@@P}*VgkM zTpBj(eyTn;HcB63J6X-4aC|$#K1o^juVuY`{WoFX9WRTSC(ol2f2CQQrgnt-dXdh* zM6$?8>G!zW!D$cMd#D~3lwZ4B2KGxQQYdE?)YvIhMAsu>}?OcuKK{*U%&~;z-Nz)e$CAByi)8aUc zAJ{|B-W=6Uk6t8oR&SD^Jv2)|@h1b@o+}phpniWdA?sc|2u`Ue(yVOPCCNmRw79xq zg0nLGg|*eDQlx#wrnSjLQOTqb^U9S%Crs97`$67t_IC?gpeqKGD!xWn0hHo&-9XjS z)sTLc9V|4(f60a0+KQ;6Mk;bZ((VBKWOP+X;_9d2aS?bdc06S3(Fs}OOl302hat|* z3WSJ|8wXw_`w}GsP|XZLg4D5m#?kJmvx8`wJ2)pC>GHlz!;{xfGF?NV z>`lMwRG%l3=wrb13OaWAH_+aOJqIT_d>lHmoT3IM4v4Dh1=6o7@#47Wqiw}_9xLeag^pDMbgRX-sIS#ByBFbpfmZ8W6LeLBr)e=rf!yd zOpujFFQ|eK)N@g8_8UFgw?yr*JJ;OlE0dn$mpTWkBe&03OX)B_i%^|75Sf>Id<|lV z*<~~Lv1S5pOJf!LS(e6CUmBw>OROoD&rA*E_-FdLprtG6Bqy{HWE|x>BZ!-YM46vr z7s?OnyJlTzyUO@H&qAW4+(xn5#gV^8#TFOsZ!s1%o%%R%{qx}HxQ_eVNk^>G-=;%` z4dG00w6g?3Z+r;sA5;W**!8%ecm9>SEGdg$$S?~y^u>qrWTLlt(`6Mh+2&=od|XH& zH<;tKE15nQjxFvn7VB?6od)*R6ZA{5RbTuL*Ppc4kjJa-=)my$tC%aVv$jbm4sDSA z*T`rYh?ma2ir+EeIX2BUCp&fVOb+K;Lp}dhmakb^>XW?Q0pbnMt(sQ6^o)LU{Z9OB z$5Nxs^l4dF2tMz--P{{hz(bx&0guG?o-bDWbsmyV(*h(xb2tsQMs%6+LQ@3V{9XBW zBLO74dlQ(!-uK(3$2#5Y+)U^CWzm&pj0nUN?e+u4`NrX)za`>4BJmFG-z0rfCcRmt8CUU}zua zXKk(2J{p2jXIJ6aVb(LLDQLP@c$4;ovsey==j>Hcl5$u|gH0He(#L@e0aaVhQdDm! zadZ19%^;S=_}$;ZUFQ705I}DmwB>${#suyfinJ}$0{zCJ2d=pqUp;yh@+dOB2vla} zS>btv(42Y{nR1x5m!}*(iF%ALX4QlKcsi`YRNx7f^zl??z6$Y-s8UJS(i8EF3ia>w zUi!9ZU-y%x60`zoWb z+t!?eFQIW=%ekz5l31tjs<}lJ;68to;A`gq;u%HS9sqaGl7r{pEGm1Uo^?ROWzEA1 zS0Fa6B+05>%LkKrvt-76arRbFe%IUrTdVHn^innEP>?>MpWm2i{Ty06Bbdbep>uw8 zoC@W>C7yl~L!&zeEM!`yAEytrR^*sJge?<-&FkZI=t|+>R~W)<*zMJIkopu|52&Eo z){76!qd|L>z{XHZ$ybnU>cx(=M2%FaZJtF*D zudo>rPp4mcxX#A0OdG1)!21DD<-AP{d)xnSFaLE>Bjd#jK)CFL1q>*AherZ(@jWVuXM= z!WjtyygOFoESKVqup9P9(dL4h&}e$6z)yz&6-c8?lP{w2K8a?<911`nWbxYKXlH92 zr_D_?&wDSvfB6_EcQk5>PleGzbDs*kpE5DxK0|lM0Z=5}<;8l_y|Ol}Js_us5K8Sm zMQ^8t?bdrY4Q5oc_+JLN`PH1*uN<%i?Q6s_70L=7yVrpn~{2E zbKW!D0Tnp2wDrR}JL02d;;BjdoE%7<^WjMp5zercG?zzvTl&g01GqQ?AWgOj&29VimvIRobREhH3t%0!8Q_S> z*7w;*q)idc?^;LLT)OpLB={t&HfhaoZSu#AZMTyv^|U-R>wgAg?-TaHXv5uLzMaW? zM7UimUb zT?%DuE?>8_R|8><&z=dD{e;UBqJ6DzlC;fA)O@48XHeA#CKkn&R=Sb|d&<_m%0=JR zNqW`?8D=sPH5-Jn@0pQi^mO*QiawWEWhvlL*Udr z0n)Fed6Avl8xP4Ys|q#;a zbiO&DIb@$WiuTu7+r{1$+f}{2D?D(tchwwOIQ0v(lfQrO%3i9&eBb_}c2;U*xO<%` z^`?TSPqvk%nvjPUlWk=gJ&5v*jQx?CLUIh7XLpMd^4+aEyIU%e-7Ps2?P7OJ5XkD; zyIYD5yIZ1q|L&IP_+YzR%BZ9-L2p><-1#8vEg+Ovb%*_XTG~7jM?21Yj)=DZVltj9yJ%* zSc@Z#HIs|BuNT|0Z0#yzUanMQU`;OCDhhGu6ajjSNn4Yw6o^bB6zvZC0xLx(lYecK z`!kBRJo4dS>nu7z@n+Y(K@&&BrI4@Gc;hnj^hQ1gcOGTmFSbE=r_AzpJ(J(K@&U$m zY=yQzp52F%q{lGVg}Y*EpkO**jCM4-(vAx&CR#HQ9e6$;$5Wu)0~N08>NCUa=Zz4q zt6=LjhHHRNkERx{D@h-s+4XVoeXjuyR?!hZd=YnQ16}oG*MjLdz|I5bZH{W)MRVfx zWui$aYpk~QHhrsNZk{f23HmEYPHz^iyt=wwZzcC?c2z?1%Sj$7?>s$#;DYpc3ee5g zAx|JhG@IJrGHO2vdTg#OIF84 z_oexpVw1|py2lDWjRli#$oE^SnRNy_M{Gu0v@6l#86lWxAOFdq%l(ahPlfwdg!;?0 z;5F)#FHuzc^?c>HB(@fCI4`Oc3hK3`6w$X4kI{1%V-Y9zd5^{Rfi*%~fDA=elI+8o zh~RUe^Ss$;R=2VJ>*Z&gmNMl7{E>KYBC>Ik>00ZIc8>SWS^>!2ORZ;|dLx*rU9~kE zTp2?Mw)-X<(3Pc|n5IRT^eGS}IId|!j;0q9#x^fMhpVsR8TF67uwc7(C9{?;-8B6o z1{Btq{?xs2T)mBkd3@)qe72t=scSB@Bz~6|3&b<(TaPc)3avEP2%UD(m$tx1=^JQp zC~#`o0;pf@y!+iuu2x5jyQ{o)DXmM{z~Hj7i8XBJZRB$(vis>({9w_6dTfy0ILEPY z*Vo!FaG1fi1eKw%C0Om;m$hTOSK*bakew#oN`5A;4_E24w96W~wp;gkgxynX@^E!) zDsgcmv>l(oQM$B6`c8&fa9R^GZv-=QS#!*CpS7wxA$U`^t`>>e7qGKCKyLUw)RG^q zTo%n_XVr4`njrUZ$5>|gR%hrOUA@*AtAsn%8cREm^QdK>JBwf5x!vPec#o2)cUQG%-(*pYz%R9Uv$*L z3r0nfIJ#uP6aL4)HO6!fnJESNmA*+5fpf@j=GUI;2*b+c*ec-G8=Ujp|3}=Jz}Zn$ z`@hqDm)VoaBr{{=dI-s{8hxxtRpt`}~ClDXz}Bbje5xltiI_iS7X!as`!`z2ZXKfwKEX=?;$v>ul%?sYXXZY`tW(9}1ubGT6Tvh#XNLLD<7-KbLN(@#?OCYBzxbzS}7^RdxMoZb%pHmuCC z2YlHYeu(EGhHpHqz%a2A#3W*1VE&xlUc{dD#6>}V+4J3J|EB$(_Y53y`dMj95!_mmUdRjPZQ%)Cu6*I5)w&0E z=hchcSrOK9eC}w0JFec*18dE;Ak-0#>z#&5?!e;5$3v=ibefqH$s^;&v1c$R<*VYY zu8?iH?2A*EkrVUbVq+;bH^)AT-UhU$psmw#^|Ro1U<&dsxGt%X?-kORczSN_ADl|~ z;9-8Qn*QWS**maN8;@sn#{i~QCnJ#zZW+NF$4ScD{1o8VMbaha=h7D}j7HFh%t@dX ze4^Oj<_~tW8WrB00%7Y{=uK*?^`bq06W@rY6w`PUg>3#zo;iD&I>%#fRtz@JZcA5= zxl=Kp?iDldsOY@S@9h=yb>(?qub3Yx=0m+={!=j@?G;l!lbBETikVQ%9lc`qQB2Po zELY4ez49EcnD_UJd7NTy?T+DA$XqZM{fIX`k={8}V=RiR>0P3fTKWK;vF0YS4%XMQ zR}=f$7Gn^7x;pDaB#Y`}l`Zq#@nhq3%Ia@oyZ|9!{O7vzIng19MwJhcA5w@8S>-e# zz2wQz#KVjqZf5V!6(=TPL6=;3@y!hi9bCDBWXa}Rd!%^&289l;9I_N2?2+OH8x%UY z@>eu3*$m~*DCHX)6gp_PswbPT?2+PyCQS^ke5b*HiO+y>&IW}Ju0$N76fu8O0_AN% zPPG|faPoP{<`4IZRp8*{G0A4!4|M0{D1N#gTHl};U3wB=CF#ov9o&Lz;>O!RJG;pA zR%aCY7+gMQ-r;i=XbcM9r&7ItNRMdaCdTahB48|O{E7U&V)ywMd&JjjA}@L3tHVA~ z(cpqrz9_2CAVX;a3OX|{GmXX{>3$+KM_}|AtyCY&s~3}NJs3y%sw=ynLOjAWzITi8 zChhfW_UhV!_wl~;d8h?16UDKLXdeJeKs$J#_=D;3_o1AJtDLx{z~(!ZofU%;W{2vs zBd#1FEH{Lgj%!!);2tPnT2IVejobEy>Cm-LuuAZKjT_uPYfWM$`~lFF^fUYpZkZR- zpf3;WVwj?Eqm||OUVc}oJcOhK}&3Jp_aZ^8oo-UaT>R7;xvNhn>G3Jk;>HJO6@^Q z*xq<76HEKygjJ?iDJFK2qB8YJeI@>78yIE`&lNOw3e`_+X~nS^D_z^$Fb!DUemgrF z7=Tx~1&&+7Hl`QgInUK(y1q$ASv%{FVSs#_rg?l}=dNVIM)cBY`B*yK`&FSV zsu@r)mn8kRQ_SA2hY`N_(8O7%w)KWNgYcN%DFVo8nQKz$yGIJn)S<*S_M_0aC5TqR zF#m@u2c>#t6X;?w8!V!fDmxbG1;gd+aeA_PX~20*#N^3fHiKnW_#BPCi;!iNiL)l> z@^J>q(}bVAdb$HRo;b^@Dt~nX?p1oGRY^@S#%a7Q)Qg)X`?B`|R|=iy_w{hdBev8;^lxHnoV zUEe94Io>Vyg}y?>`&y&#i0HiaBH6~i&tj|`rnjT?rs2?dw%$bQjd7(DF;lqs&{dTA z0oyZbNM5KkUPjXNMGTnsqe)e1+{kx);nBS3L%{}yU-h~q42*mLwUlS^itM|lXO-m( z(dq*qBNCF?^a&H`#ALO0)t7rGK1=TZ-!_4hOiL z)1zt`QxJE5*8QRls71gNlRJl|j#L5pYF{!0lBdENpP+Gl6W8`l6P`|UeBK8 z?3CWMjDIC#uioA7*+uW_1VY}wOQXl0m-p|^(bJJoh*E5H`K!Hu)fbY3j!=8qqcfcR zMl<08bV))#Lk^AC!YEuy>w#AH!TcN#dQ!ZZ+DO8Qw5i6#>*oX4_RMm)zY<&@lev!D z;=NdlIi({xI=!jc1-<>8?&DnPN+tldshc#qvbaAzOH^|V=`c9d1B0w%^%dCa69hr+ zyr23U>Ab{}S%ULQs9H2H-*;YQw#2A`AGA$-<37RpNp_SJFFK$^;R<3blGM(HF zZ;<_eO9XXz_0Br2{dmAkJ&vE8KFGI|1vFkxv+6T=K-^LmOwI(#y%Ondv~t#|9|c~P!a=A#qzeu z<}zM(s7}2ZLk)+VeFcIdaK~zPr@y7&g9EgmLZ&!bi#1Yi^H0E)NvYC`Np@=#ynd}`q>Yh21}M^Wo|Fs-8HQ z*sruc$IpN%+nhK?F+sUb`wg0`Q5JE+FqC=Nb1AdWXH=O+?TT0gDOn+0jOi?!DjXl? z=g@3?NYt{c>Na}_i*ZXmoh{*G0xw@b|ro zy$m6L{t#qr>SGLw@oYi_{j&w&=+U@M-;U-nWK-Wx%v&0;*}KGC`gU&2d7d&FkHKYl zqt0g-uDkPU!*x^LC%EbJpNh)9y4Cql(P94kRIayh-YvQ>=D)xA{C8Ao{@d*zxHUg3 zJzI0&(@D!5sE6duGxQlI!7~NMa8rry<$1KvgPyc|B7DqNC&E%p+!Dkv5nc|!xMjsz z;rT>}PXs2`BG+JCA3tk_U2b%iSB@DmRQ9y?(||X1IzNrWL1wQBP$`%IRgNaW(8AFQ z6JVz@J^>aAFh`=m3W>+q1gLcdO1J2-hJ);Q0@;9jriwmO{rG97fMrZx&mx48&UT1N zleNaPt-}?Zz8icGPF8}(&}G`AfN8qnxbb{a252@<3i$LQ7-%Soac|aGtJFS$wgnvp zmFP$G%#j{+?$Vv2b9V^oLcWYxo)lY!+XmfD{=JXAea9&8;(1ssUB>7gFev89TAE}X zisbs8df(ONDR4=+9^4js5>@}zkH6Wm%UoGYeN?XnJdbtyIh)!h*?+?8(CtgI>lyza z-SHzu{-pgPA;yP{!7j(0GfUjL)8b~->G$O_lV~|*THho#`8n?AHQw_d(Rqzmf&S(L zI=&XS&QgOa*{j6v9G5j#Lq&U^ujp!Jytx|OWtS^e-tLQP=IQ$8)_N zS9I6I?`QLNxOfJ}1{*i4L%zWzMu$948QoD!jwH$QvI%w^C6%d7NQCL@8OBTUB;cr5 znm5dz=Iz@7$I{G%vty|~8?I%No4RoZFx6=*>AC>UNGF}}6uVf{8aYe4+2MUa@ZPm; zc%5{!!$aXYXX@SChSy0qJ3NSU&eVIi4X=}Kc6c8ZJlS`56Uhwxb<)j%$GPo--ndo? z{}AaKoCJ0O6uhmaD+8R7&USLs^R@}Elx{k_F1q@l+I!2k+uKQ324`cZ3*ME2Cky(n z=FXOGc6iz?Fhl%p!0V)&9o|O-@59@!UnkuRcwPKNhcLRUHj|%Nnl3Oi@nQ6S`wU<+ z=&qBl3t;bbpV&@#mTq=<+H{_}dE4+h>88PRyRpEB+Zn7nXTXvJ%5(X7v&6l)D=vw~ zI%BQ*ac0MMqmw}Ub}zIpW_#w`gTcBN-_FT6c`>sH$A`}QsQBKv{8N@U1>*h!_k zNwY2Xt(s@U>?%UW1}1lzKagI{>i`ak(rb9(@meMRk%}YobxJ2#-`O&E{=fs{ zN8z$0_k)nEy~{Q#i~1l=3zyk*LrI!D-M1l!EHJl42pSkl`m$dNINwj!I#IxXipzyT zq(Xf1a9d3dPX@NOszvD>wjoy# zB73va%mvuo^aj0Fllj&3Exhq~E064F25fHnHpQxD0yg)7@ngDyNx;iCDb2je{pQb0 z->%nM!X;Sm;El(PJnZ(%{9Tt=X7?NPdFeZqT+qJ&^mz}AKfW8fB){xkN;3-d(ex(0 z)|2`5^xeGicn=SU9^MW5j}7{0`d%f^p^rW={={zRlGSqP2j|f7#@Of3`#R9g4>93Z zoE7n}(~I~t4VYGh8 zz}F(B0AC1{0{&<#gK=MaENI&*!-nYt3s1%{fMZ&=xLD}?Y(d*t*LYhaOXnHpn0~_R z=7Zv9uapt>E&gsad8@zMD6BKosJM~W`#s!<;RF6|U1#qgS^L(g=%Xjj;Bij@6=fcG zihUc8d#b$}k6YbIWjyXQ`!*hTDX(Q7hqzsExKk~zi;EH6&BHGD{DBLG+{ObhQ%v4X z;%-B5iMTg&JDs$$P7-qi#`hq#xSO@Hzju!k*;%SM`b4zs7fx^D|0kmBIZn8txDJb} z!{XfO%m6-1pQY;LUS-&IG!_@U$}ob&;uPAK>%OM3IOoh_af7(~cNRCtS=`eF8P04h zPA~#z-YSb51QCPA;)Z0WWgISc4tJ)(8gveq!y250!wIQF#^H?h8iPxm!9CMp4LO6$ zVGYf~;D%vA!_MH0^%{fYKpc&B78Kr%KRnH#4?BYsbTK#>`&Jp;2+&8I!5J?$23PH{ zAoy~J`t2j|d@IUDp^2f8!35MT{>#`Ge@;HDM9*qd{zc-q`( z_x;_!PaHihT5);K>u!oxd?$bZL$qR#oWC70=ZN+B`werB*pk2hZO+kw?>!bq_C>0| z9$WTmJ(nuPSQ{Z5EJQLB#x7x94~Zg2FgykuAMUJ&lk7^R&BZMEQ4(EX%!qpL*!&=! z*VarOH$S9T@g$tP+@^Q&B;K)N7-(zQko?067f*_toIx6BizSidBMKHv;{Bs~m&g(~ z{{-V~i}l8VHwKlH>JZeus)H49zLM?O96(jozQErN>Pt)S>m1Z8{Bf}!4iS5-_8NUA z?WP`H@=NquXyb)(Enn{YLpn3p!L<~aJ$snh`2?6RX7#3KTFS}hYykq2 z($hA0$&*S_v<)!M%xFwABWuE{D9uS1ezU(wGIW@)WisAmL zm+>_6;249|=in$=hF|s&=Kj+-%=NISvGDn9HJde8Dr>27iS>TFr7~^_*S=XJ7kFGX zh^KE{zgo%JP2_SnZL6MzW7g2_XMxwcBV*Ows&ujpHwlIkMNOimTDZ{;r^~v%>)nD z&!t@@Gi+>1Q0I4S&;6Y9?0FCYD(Q}Nd683Ne$Q!TWiQxzNlL%(Hqy^5#r3w^m2anV z?OfNmKjl5yWD(~{Xu~-p`6D{2@oRoub(*9fM=7Fv(geZKB01)bZL@IE}bnDvfickaMMIALD1`G%gpSXG5ei&d&qH!zb`bHF~GL5Z&!!u+h+BXV8^QH(c! zM1Cw6CX&FRuyB}sp#|;WV2L!Q*EGl_UW{~`@7L`HRf$1NqY$s@awda?k}1Y@&Ec84W(mz;9SPxHR!87k$()sQeh_@+ICOCXPvOE}V8 z>wdP7S{_famr@Ey<4by>r@4iPc3_WEQ~M?oZN9Fy_q^3?zD_KS@?BPMJdiYxvhOm3 zX1X>{RHt>+=_x(y1lJnt)QPVO=kbou%|iI*YCY>Z>|AL`iPOWbZl;or5A);9E}8@s zPM|^jBF1~Vm>(8DVKPuX4y7Kas2;)W1RUgGEF#!@;weq zQ^UH9LWFxNE}={kEDv#0CqP0XIIqidc$T}RhEd%BKp zc=mK1o$u`FI=cTE>AG-i`#)Vt3cYWEyUxBuSHc-MHodRyn`}oq(<5(3I@9~kNT+>? zynf~Vi*iEMuPa??zhQd1E}Yo@n~i~O(B{lETcORagfsBgq0QOTb!c<;bRF89Jza-3 zXHVCm&Dqm+Xmj>-9on3cuB#u6HoKC{Mw?v;XW+O)o7<7jXmdN#8EwvIJ@7* z&RAtLS}H%?g3o||kWvz=63xe0yx+vT^jPEklZTSxUL>UM6!gPR=@UE!wjzD~F?Rgf z4g`c*$K7e$F?Io7^;|8|a(Bh(5^Ls*e6{MISfyA4su@~tZd5b4s-5|+-_A3p&E<%I zNGREsJtPZ`viJT&z12z$sTK{9s)m_RHxF7nLrYd-4wtv2l%(7gjI+tb|7urTwp5p3 z;7+A%1zI<26dxfpJS!$@XT! z)0KZ`U&BjxROFYfkhia;@SgTdUGZJEL~j4o74JI=TZi9e|KvVkgU_pi0Ma289R@*b zZpR6Bj#_`HjoWOK_F6-qwOeG!Ct~Rf#1Bmtl_z=x(IJciUqZLHFYF{#x-yJ*5rtfv zwAb^A+cDl=Uc6nTx9RyzJ6E)$8|Etun68f~mv>25obLgL_V^yK6n>#m)63K{quk!Z zY46jVU!Th$k&)eIRDe7Ay%T8q#bVv6Z#ZIYzEF|}?Rh>RARedOL;>6xyk2HCl! zZM&9O-<~J~pB#aTO(C3bzSHCT71_=rfs@dyRIb4a$!%NyYy%)YkoxnPojRx}uftBL z>b*#Xd6DSA^+Cx3TPm3fhcYapQ--H>rFF0^^l=V(sLcg0eXJh@m$G-kdZ~JGur%I& zH7~h-Ji=pNcL*c%auRgGJ;>oIJkUVJ{B@t{ef$xSNU@4evNIQHptyby6#y<)uVtPJ zZkWkXTUW!fSZTAXNm|R^2HLVq5geK?#uyya-dg%`0j#@jOY`45z~wV~l=bwyEOWeo zR|W&7JG9>k&{&7)?ofvxF6f`(jpGEmV!Tt+Lfn$2Ds}zpw7T|}>)JoPuKj3Ait2_- zTXLQo=ugNl#*O%ADV*W$&K>@)nfzlKzG96N)Ev=Aog;pZD+uPY6Crkj8o-ev{A|;+tO8WvXE0@q7;4F z+5RJVd!DyxOySP)5PjEJsxU-r+0J~%&Iz+82<4o$jMKH2=)R~P_MgY2T@I2)jmZIg z2{zhk#%#9Tuvw=~ZZGT?JV@9_Z)d%aq~0!nZFjvnJpgb-@-kLLH+g@Z^&snY;dbEklsFL?YB(_iRoYij zsP7+DBY1Cb`tx~2Ng=y3^*vc7${m`GVdd{hV_VJ7D4Xog-;<8En*X>N<@fB%t>$M0 z7v=jHIooia9uIz4oeb#=1A1n=nwyKAxm~LdH;uKf8{+FoKz90o1F<-h@pGF;fQuJ7 ztS37xt%nSj#GNi!619S7*B-Ev=qO-0FTe0j^g)Ten#8a-9uc#S#Bja3DOF(X$vd+- z9WCC5sxOD9#3gu=13afibaKWQDxgaaa5?!FH^KrylPBMwAVl|l-u4?oOR~34Nt9T24ES_cG^*RobrhODj!(b+| zAGniO{l(3<(u3_QNgrNcW3ReNt9@1H^=iGE37DhHUkwBPY7L&cr^2btH*|o#xdY)X zo!7VOH8(v-+Slo`+J3zr+AJ4mwQRHwHoyd? zt+h#8qXTMlv1dF;yO*fZ`is-QIUi|Rxm=FZVZ490nEQk)=evE;{2iU|iUw8AxmM0+ zv^tnkj?$FYL_1T7|J9m^qnpvK?n_er)Yac1T%Fb{T==)}ov4%c*fQ07!hLh&CZZ*P zZn9dPJOJg8^cZWn_$t=9N$Jh-5@<(OZEKL-&Pzz(`-I~hr>y!;p%Q+MZNlnW)<)*M z5XsiE_pz&Zyn5+A3R5j}-HOF>TX_0*R>ooDae@iP6TvdDDectgYt#t&rALi?hw-1Q zQQcY-I3E??8L~indi3ht7U|v5qko;>JLYFed<pbJ1EsdbW zG?oMSeXrek7Yi7+C-ZqDvGXYbrlqZHP!cEX4o?!Wf+tnR(}k2u@kYERIU&fvQtdC62hv1 zk8m5QEurToHgAq}CeBBTSu8-N7QdiW;k|2&Sh-175?Dwzb6g)*3^M5B_ir*?T)>siA2{=~TOw7bO=8;gkLXymc1csK4 zEv0|4^KMIzedDB4o8se0Yr2NTr$-6YEV@qi9`<|@8jA=)oC~il{Ve)Ut4(IYLZRB(91&nd@G=k<>ldaNa) z3CT>Qx)qaD2e&>R@Kz`ubQ7(#sOfx75jnH&L96g{G5qq}=y1n0l7`DokaK0^6S>LA?2dPJE+?S77_|7Jp(V zeti+I!1fm`p7R7b{I?eI3T)p=yqXJM-Ddjx8um%bLIV@k8$XYd6_b0FQp>)mFnoS| zi6?Ho^l({BHq%bW*?MZ8ui^^b{QD`>tp}Cf_gry#r~Xs>vb*`&U`6@lmiKWO+bYO# zEF0$2DC=a)o1#w`*zjp;=sP9s#?Nbfhe@?@<|yTv4+&=0FO!Oz@Q(zQ@xd)S$1Pzc zL%_s;sr(1;JU_yJu&)0p`ww0c?Rl*GidB8~qTHs>{Y9PG5_n)-_0G=Lx*_{2KX#4k*L12xlgfvj7;}6C8dhjg4$IPLjp~K1 zt0J;-Y3Wfr+$A8c-ViU=z6lF(;atg@S8J@1?Cwr7u0JVCzRgSSjJHs>!h4pjh-|^u z%YKQMtz^w>XO?Yxr>9a!{jr_*Y0?$LBx!#{pOyBf^r*H!st1zp?e?s;@33dB{aJg~ z+n>=hZYf%KU(9KLj5m{C>zs z+o@(pj>&maMPX0~#i4@OmR?2sUdl|W4EVk;^vlmmpP*gu# zeEyp2vlH;1yC<86rzp z>l^{X9H-`#%iKzaOLZXojaH`hPsjcrEl)IWG+H5Fo8pRtj2reu{14NCw<%M!r7un| z*T^mD0HbIK2c$}PR_N+WI{h`_8GZfqT+)O&|8wdZTYSNKPtx53tQZcbDWaO?^n~aW zVj>iR+a7|^#;2gh>8p*koU-}5EQsCIVgn)TMTJXkCH)1xaZ`<*OuN(a9IZTJJBrh! zkn^1>>!+52!`OG(Fz^J0XKxuP%Z4sLztqRPpoe@FJ0G{s!<8?|-lmLUvl|Y*hzrfW z1nv^Q675{-Pqw62k3*A>JaR~ z8KKyN%NDG01aQ1OW{DZ~BO%8PrdMxoO&n#d2+58FC3G_zBW?-iRre#YX831jdk$}U z-3=aO&{cV-QuT@3gk5MjV@pzmXQ5I^-ocs#;#f3b!fvMtvK@rUf)9`K#CW(%vjZ@-1Mjwk$PoIZ*Tx><)pH?4g%hRjV!WvH5I< za2Sj%NVMJLyCu#Suh=f!mD~5E2i?A%l;bX8#7MGCkQkx&U=-9za}JYhk2YJ&&dm`X z2q@XU_9oF6fXO5?8a8LY2(JvU_t@({l)Bn@aXIi)(N8 z$2TnETZ;G>y%zhi*%WF)yRfePbs`e~F8r%z+-fepC#OAMN2}tN68U_m4cZj#^+59m zez*{({Ut%JwD0Dj^WQErgu4Y)vmi56qmR?hm)U&RQXVgJ89aR%LXv7MA&JF{$#m&g z^q9I!37=0%aCg|lGd!g67ps*pWvf&>@R$7@s`Ar$maXxm^W^jLN+zYarKEMU6U~09 zWNzW_;ReFxUptUUIn0^qm#DyyT+63-+nZfZCq3tTS$nLX){eOKO;twR1Zm!yC$p{a z`Z8YA`;adNn@7=>A=|v>7`l2Z`xmLr{P z=x_cIT#Rvz$M^K4UPVvF>0Jbk_SKs^#yqPjDlINU$gs+mcV7G`Dd}jRZdlEJtlS(i z^=Vt+mme3p_FQ@`EUwZoE7_p#Y`x-#NWf#3S^G3B*|f7q=MORZc5M(aXJGzeQE48pjIoZBU8X0d;mE9YNkqjBX6(vE~6VIM$xA0YJ(6L*PPDJD5 zB9)K8W_0jf`faRYM~3m=^gX_iX0o@?$#_x~Z>alLP(Ax7VME@hec8Pv%t@~=JD=;r zhgr^PDE8Z(q}hwitF?{k?+W5MeES}~-khDZ#AW*ZM$waW5H_L;-&cjOCGsP~bLUqc z7{{wr;XDfg(B;3m(Z+Y%wlFekfAq6Bie6C~FY6f%cnUVIWyNgP6@j+AaSLlspzf4C z6Kv9twe;&kREZp~z}8?62V;I{84Jer$ zWX}grSH5tJW7O5r`Z5UCoNi!ky=k<5#edSdF4&SGoqjnM?_lRwZW%jS;KM17`L zlNQcsSM`oCJ{i7)*_8xFG-r77ObZI5i}OE>u6s1p&n3kI8ncn>L9z?@7#mSN;G+g< zBBEl%1$L1)5m(crBTiLZ0nE+D49(G@{rVZmTBYapcs2JAhn$t{7BL*`L`V&7l==b2 zp?iW~gV*b5%Mr{j&X+&J2#4s%)ma<{pYgq-M&|~d-j)f-pwp*RiFpVt+^24xJT1^j zsZXu-FjeIl&(;fNWfbfV=7fZ<4h$ts8Gg6ksO48jTjrb3a@}rRujK|X41ws#C-TGJ zMf`6=Y;dLM2;Nsfl?(+7{|sS|=0p3a`ct^<6K~+<8~hiq(x1+n{h8;*8b4U$gc%EQ zfeY+bevlZta5-OVz6^tu0!8z1J=kwZ>>2OMYuYi@+Ia2*d*28=guNsJh!xjzt(fyj0JO=&(VrjLI5US8GS=;T0O z-Dg~Bg4^yo23|T%U~Wh6#v9fL^}aH-wh$h zIE>H1i7v%4TD%TQIdvXgX1u?P`pNb>2twt*n4Y>Ml+Rrj#xg?r-EixHUbAZ)?zGtK zbJR6Ya(yVeXUQA=(h$m3`BOYE4dtKNU4F0j&nvYbj*)wv`Dc(|r*E#P*y$V9#rHce zQ(c^xyF3v~#%3=zD#r&zAI{01E<-HA8Y$8yF7y`jd3T&i!dr=xUUEjo*&~ zZv*hcg7>?SRe1eg=k;E_x(V_R^g7D5-MSCBS zm;X<<-(0SCD)9fi{pJw2Q~W>O{>08qZma)i;{R7Vu=Ws^|L+fR`M-UL%m3X&T>gJO z#O43tAuj*FAL8===OHftFAs6~e|w0_f8Zf5pDo*ml>f#Laru>pxcu5fT>j8QTz=m} zT>ilSN%>kA?2i0ta&xjq7cxxv{R=MsCcd7_#cb9ki7irG&W>9W&DT7IT!~q-r8~$a=k(>x7%W4D>D7}OESIIi(dwI*yB<)eBF@maS4#^amDFD z)T#YbzNfyUWL-O43TZs!#oBi>Xhp;6eA!pl2d z2S`uI7I>WQZ*SW3+DmCrt@h=2j&F?i`jpmCuEUYuCC85~v`Y9nm^haGTDvH!<8#D% z#(j?1s?5GUQSdopzHd;O<@uGY@D~!2E3EJrq7S!m>e|22GHh%6H;Q{u`#0LdnBdSO z$Bk)Ix(}F<$>pRlZ;=e3BOV8xij%L z-*MUa)-n0^BfARoR$`mLhJSgC8kTnrssBOh(RnsF(-+Y3;c{`c#LFG+WB+7CN_Dm> zeH&(Uw10HeS(sH@nlK??g3Spf3sHGh8A$WkSz(*O_F<~UJ`8zQJrkwP)@!%>v7OpU zn-OYPXN$?ILl9f_(2BjoK}MW6uZ8v(%SytDrPAYpU1{f7hPR zqsMZz)*3VSd`9Q{4X};gk>y>V4&_reO$oa`waFJU)KoSkD{t;=0vWfYGRni8j7RI% z3!z`ac2HLbj6;Fe1%cGEd=qGEtz3RleQb>V<*}vFkz#uMUCIBqF}n6k*x%uO1w)rl z3;#JUYY5Nxd}ISCUk6vYo=1wTUOS;|Fc!_nP%mYG*0N`SgO1IN`#a}+r+BV3VZN`9 zUW*aEulSS)JCl}9Ef0phst#D z3Hp(xCi?pQspKiV4q>{T?Z}Imf}D1MY0KJ2I5H9b2l){yD_&it`TUjzrrom)CH)>Q z+07Zd*KEZ1_&smfA2KSg?6*saa=*Ej8N~T1f9EmC(=G^qsVl4VgO)vcQzJsOmF~N?m4dtJ`UFG+}2U~0fKEf88 zI&=F`qSPTdBgFdCA38myiM-0F#Yz@0l= zldyU+N&b2CSZ?*CJ{cP#L$G=>E2n;}oPyO8qQLm*(56u+$guBLPeWtu{v$rAGcgOn zdV}G@c=5U6Pi{xPmAOGPXlHKt8TnqX{x9}FwR5qp{ZB)9?q=i>`II5d!|a`j_1l0; z521#$?ThBDSo@+M?eJlkHi)y`(vruK|Mf0u&c|0p$6cD+7HkjB#Pd2h+X&9yAe@0H z&S+uJdX}FOxN$WFa0ZV{2r&y8$eBC)Vh2TW9*C4VkRA$JUpsKOnLD+%cl?d7wYK;N>oYh&DKb7roKPy6-dfQ59;z z=1~RjnyaRMK{J!=e)g&DbO+&kFgo@{)|$wc@|#Wa!xW(0^-Q^kCMz65V&Qn*=KJaW z(y1OfY=}S6c-P!DTo-;1a0Y6PFY%tSq#juROHXR_43h2q zWi+MGiS#QD~qGI1KxJ| znYFLMLReF=(xnl0FRvs3AC3CuK+5$znR4JOHM<)qm@TpoShcgR*Bfl(h|S|P zlYlVMIE?m4R0L&=~b5XB_=DOc|joNjMi$4 zYwWx>XSvu_)%M0RY4HNPTZB|&p1*NKk!EsF%Y{x!?X9GTF3S5s8NA0viS0Q`wcC0c zXJ+5+etnO(2lQz6tsw89y~;SHJ)+mtcf8~DNO9Y#KEfKOs5P#iNU}KDP zy#Gb-)%IWQk#Q=QgEPDF+dL2Sv=ag4ux8BDpyfKNv9ZxHc!HO3870ImK~0-Eu?8$v zv;P5@M`nM(P&W!~`va+=sP9pSYzZ6NV+$sqJh~v;hgU5&7VXN|Q5g^C<3v8HRyQ-k zAulBzU!~kCgS`JS+m73HJi?4y5G;qAh*&5fd1sA$lm(>9<0H zqy9g5wYTB!O0Lv2S*qs?DKLA44Rp!i64uuoiIzn)OmX5OD)D$yokr48>Uf-56VUZV zFcOklx_z+Egh4omk6R)DzTQkK9yjpFR{~OTRMNZQ%1A>kRoolTsId_ix731KHm*Xa zg$YS^OH>}wU*!FZ#IrC&JJ?$_sHIVF1jhZg)@lDPM;PiPN8x`G0`l%v5AUlUUbyli zWX#cp*;0M=$)IP&&Qz~2+ut9Hc+85P9ebiAG+5;UYd3&!OA+`<@6n`n51o_aq?E+E zYVGr6AjwiM`=q)ML&RnCk=Tymm=w0aScLE*D>!xGN$8Q*EM=h_XAclOHppsn(4nxj z&#(KsOb&aX-a+jQ~LHnLUx9_=q33ig?Sup z%BgBzlr+E3{4qX}ZsCE#Tn4s9wC*#o`1aqe`EhzB$ZZeNH`NT(7735$UPwoO^9WWi z?SGJ*4*d&BI5w}Z5S_(}en8PSsMDVd+YtaG{FPvUWjPmkiUl4~&E|9SS*Y@=55q5+ z36G*8I=GSj0s!ImGe*@al-#&oI+6A^H;60Di%9cJ(u^&de8T9W?BDb{iZXO@%g&Z@ z8S}3Q$}XZ$7q|VCpyTWkV1!tcmU#cQQVs%^PFU3G-kTu!MV($8_(kk=vgH7)>1Na0uDok`Qz5hBm%b6ym`+9q@_z&WF{O>(3}fX{ zgkK-Re+6kO;!*sUUHTpT&uNfXE~w_*J5T(sbiv8Pe-*-WI0JlF_&);B9FBDB^3VDf z(Q@39be#L>q$#Y7cPG@O=)GH#q9;z>d)UP3{@vD-?Tp%{vVOf1?MI;LO9QOjr{pvk z0|uk!Fe;m*Kdsw2*|(}5xG@>1U2zp?k(-X)(DlYGiQ8EWMRTHHquloW8s{s)H%ESV z#dqRrJv|!UVi#=M{hG4HT|%AS=Itv%5sZH~2QJl`XUaDUl;@@7*`z%3AbK4jwUhZ6 zo@>s+jC)WT7SW??B9l0M1ydq-oAlMH>0?PX$coYQ`IEbwGJiNi%VmXs2}-SGpVBTH z1lgry7qD;CgQAl1RgcH>e7oT!sW#tSuE*6vPpAjl2F+wi4flnQv*L9;qA0JLeO2X! z>k)uki}nZZJFI=N{Mk2eHqb4tZK~EZZqhLAMqjm-9fT-C^Q5cD^`hhECn~lK>64T> z*NeK3Nsq@#k07SU6$#X)Jt#ZG@6N0K*5}oQXVlWi7s(9=lO(vY)PGtZWxq$XABY!l zM~Jtx$e7zqS0i>2@^aEgFe`gyDrNA%AF%U8R-Yv1xSe6GD8loE&>_gruyspOLD^J{ zP!8J-jGts8J+X)aw)^OQr`KJ}3m;o+B}#E@xF&xn?$m>eB)$Su>$>!!yl-_FWdt~q z(7NC_EizVd*708gV&0)kj4=?l>T@V?-sSa?JQmq_wt^oVD^7q7DX z6}qI8zY@I$`0rM^K8;;N;rYBNK{|c6x~JoQ<;lR2Xr12F9ll4@_&!-ZvXQ=2ua^JI zOytd-n9$aR5>6#9%g%0~QVw?$?Z1seQH5k~+3)+LL^0J>(3+w2RnLV05%ZO0NW!CIkGm}~N!BT0e zM_J%p^*b$`i|dnF!1s`q>YIh+(owF5G2804WEO`@k38653a=3ptnnDxsO7T#BYB@7 zQfr4?wihqb-Q$M1TA~_K6LFW)OFj+}DbmaaSg1<-UYAh=E+YrLF z$PeLuA66K@!_Yk?z~j-Qj^L(B0de{ws7>d_lIU*g$QmW*Q{NNAFpc93N*bP=?C&hV zrRiHh52}OM`;#A-?0@L6?0V)y+S%_SsiN-QvU9&L$z8K%>9rmRiabi{UXpi8(tJQ) zX8*!+yi-y=yPfZUqNF&zkcQ`g&ZS_jk24HDsB+xW;<%$27@k}h+Dkn(XhOPD%YL+t zmidA_drW}enbH4fND5QO-(VY#i)ahCY?T!)u4j3ddJEIOkUrNN2)FYHl*V9uBKy(a zO0^W+&w)O*BX-!+?V3Q|uZRx&QvNMuSH{6MhVgSSu2 z#M>tz@0w{FJ9rbx_rTkSdX~E#?UF9D8*etKI(YN>Ev%u8bnlurzm3sv<@uSzqi_W0 zT*ABLGvh;zQ;vgm_D6{hO)v;<2kUUub!T%(EHeMWNge6-7kpd?isQ7slA&x5p=H4XcJk$AA?KE5J?R=d_>ZF_s9T6v zotY|`OAeq|85AAPLUPN)>Qe6Mx*|9b>K z?mE_?Q4X@kI4QNme>6Pq>vl5A7B*?Shg_s(EgA;yeW z`dZ}^P7~Vi3f*~=)?X&@2|tpFKj~?tdXh{`zjn*bhmz(FPb1BFlC>l-bQTgUz2>*N zeKML~!@SdTT%oTNt^_0dD}{9W+{YYVjuo%n!$7AV{`3xxyTXGUqOHsj9!G4vM#Emt z5aGT&r0;OT|9I-?+S<6Kxa>V(vr~t}bfxTAj7AIM=8d{{&&6VBwiL&0FWqro$4@(c zW{kbhc(}?laMGXNMIAq@@W!90l8>4N>5C+7+a1u$R*hB~zxX}Qq4DcHupGO;#z7aN zeYCGhzMfosE#d2_#n<9XD^MWy6!tikqLam(_9ePJ1~%ZhpdE9tR^np8~ne z%QlOp%;8uz9+_Z<18YWbWiz~GkD)N@Wt33s_+jaDE%}1sEy!F2?Ohn{{kCWi$)h>n z`JA_1yTYM=99PGCe@gq^75;fouXT`xPc=_~x3AY`(PmCFmp8~I1T5vc#-w?zwu&(7 zI2u+!U8K{y3jB(H6#LsrdoJnmKQ@m?b=gQYI}OA-?o_9!W$N$%FJ zW>e^wn{eL{s9mQo>1)1VE#4(=>E*P_@?;z}#;MbS_iT;|U#O1M%Njoq7!mq&HeTgeY!fUjyNR{4Vt zj?>qZD#`R~v*fbfs{-|KMF8?0ga^_K4$ zr*E+!{d&;6IDM-H=~wEiQrn%^JU{Sf10(WqAVw*tdT!k&`gcavsaEOV+RoVe2^!&V zi+GDR|FWCD#|fO$Pvgssy`W<$J4Y3re~PvsAF+;7%3Ml@**!T*mh~su`6BZD>y3Te zbIzNblMGn0&IRlbCwNoeM7*hQQRDn;BHr=n+P7olIcMqJJi3O0r&QaxlD&iW0eU2W zHbWR_pAz@+Iy6oKrt9&1MK`6^VccXnO-E#n%19QLd^Tp2=$O1;W`bvU?iIja+Y@|- zqHKU|0;{Ee*xY{tFuz#fr*Q|F6S-LejY55yT^Tl;id3O-&j<93-9@ zq!hnKpY2^7{%VzfHX4#r`9~sKJ0_CG`HDBu=?vQH4c2FSck+t|RicI9*LcCy4umz{ zL=GqTxTQqdhv;vJ57FUXqMB?z53F-cI=)Kye3LpnX$Wa?OBgDlF2o68aZA`Kp)JIz zyW*C*Dw{*60ZHhKTk7r&!dkY6NZhd&w?qvagsePR$ckISObKNHwh$G!L?4@lA4gY+ z6Oz2KB~)1)!_s_wyo4tefX5h)_Ip_eM@9(QcNW2~0Rg>-hY80@=wW2eY;Hmq4U_jVTTYn}b0gP-HRqNOwVJatmPZTGmSq%XCB zVHaTeVqu;USffdM!Wtk>Mzk3OA=ivXWXNW;R`oGd9v*S?I@GdG>T&bW?5NtXsAMt% z$i~r%myPDXmk4@~&`~D_W{sA)jzg$9YVgeh@-fHW;TLh87`@jxZs8z|To{cW0da zzMzpJJ!1q;G`1dswY$$lJIl={36iU$#oC`5*=cw#p;9b{Nb#8bQ#;B7!;|CvS;ETz zM?O+^lm@c*y)(iK?(M zEGP(kIyD!?J2U?BL5D1&Gs+fzIN?e52*W|B7k1lH9*A{i!{S`dk(2D5jOWl8wkBzh z%Qe*0`D!IQP#eL~7VLn%8s}4uTCf)a5sVk{DsEnhMlXrRwGPs4FIG~&O7ija0aCE< zSI}5T{laqa=I5c7_^Eo>ZnR0(-coFtfZKheWQ_u{EB1t+W-sA)-keVU{%Gn=BT;2= z@}y8K*Y#0uX`K%F9P)C2-=!rJCy~*gLx(`ds^m39)Uu4AT6R9a&1*c-*}RwcVv)^r zdJc4Kq|W&9`})wo(Y6Jwl5az~k)EC}qr2l1#Fp;($14+|AI@_vS^8)MnYg(QYD|v< z4A6aR^6@fFioa%~Z|RBuIu;CLM>?29y90@lTYrPDmu(tHLfU}hTW6f{qN zr9@X1KY1A^at; z>}%W&RivLL|GH?)4!RG@GOe~uaXmd;=wv{L@vNPuc}GW;y*0G;erz;X;~?gJ$?0a2 z0M07rL;0&#S7TN5sY?&XP`3eFhRgJ2AxA0tHfEpGp|2`@37=IHrw;Y`kxcDF{D>M@ zbMiBcIj(Ls{X#O8(zL04`ANSb$U)~-i>P1pH7h@H?FaTAl}%_uc4T%K>Km`J`sw5l z9XM?Vxb(C2m)+X;^yN@(V+%92&bfCcU0pLk381UoOT(VPX0gSE;6VswsY? zPt?aG65Lg$pCpEzY7w8VwioIBq;BU+0z*1YJnIBwEie**acrX#q;~e1Uh-R|{tC^h zBnV!W1>@N(z$?83l#eE%Kl$S%bwpRV&dVi?QVUZ+}JPTF($M#o^X^Xtpradu) zmW$Q#T6PK;+Eg{~t9%JxnKr_(tqZ1Tnge7@<@1`iEXhs~2GZ~G8>RyKc#hqz{Oxid z+iEZ8JC*1#;9TOeqZSs4?IXr5E#^5PwL;xq2vXQ?!xj~l?WYZ{&U{d{J8@jrbUC$a zOt4^G5y<^fuV6%EYiU$sGrNmL=|`q*{skeW0@=8!H6V}(-eS2W5uonj*Cm2LJWC<; zswU%Si_lNXY2Si4l2}Vmo*8tC1uK!nXVWL zlHZ2<0?CW-U~7|P?`OOXbBRQsb*&MRpLSCnwEuyO37@v5Rg$gfrmGR`(y_sH_oW3@ zc^fhFcG+$sr`aTePe$MEqG?IATy{_rEwRAVrl8aGWkxWU@|*2P(Z+j7fP%el@@e`_ z;av8Z)nHaxjGfy|&z-NmR8FTJr&5pamFtn+4jK%*D7--)G_@9LVdGKD$m|;4#mDDG z^}da@>_b#H=izo{QrP_0T6O`+40)R4wEnwSWr#ozhd_~3rII;Gc8&AAApR2&nahlBH=A#5G$UOl z{c~5sSz-RME2(g|3+a2n{7Y9tgBeG!c{|8{WWUtRE}sf71-7MbUuv?tkEP(%r>}7G1p6 zuJe8yj&@j*_ggi3F7WOXye>u#WgQS!vPrfp)75|rF!C} z;cbYBp-Ci*AjxX_&Sh`lkouY;H8Vd`q@SYKyp7&5`ibgLVus|AzCe;gfW6B!*t#$V z3#|?)n+Glj7AGNdSZ;F*uxf<2hDNz|#&h$SQ}ZdDCe*ZP`6KlAbT08DI<W@!u2=QC;i{+z}&)`on~+{PL^aCvuwA0LZ827I4qV^@4^{LAx~#gvUp$_UiotFBE?Q%0 zdt6%7a>6r8@91YSLYtQ{Ht0vBeC%`gNw`?eSOE%8g1Emoy^ZmNY&+3b%KUy=Dx*Hy zohN5#M=`>dw#4-(rVnww)T`*Fj=r#BHgi8$`b9yzGBHwN!`X~ZhWjU~oBDfamd@pP z%HjZMK@U|fg*er64*08TFjyV0P4Joi0iz^lv++75; z3AUE)z6yubrt4>_?6CAwkNx<`+p8WkeRqU??C8O{evJ2(xqfWVXrIUD`mw6Xq1`$` zPH8O^5jbjv8_BBOI>DJ~b|VcZVhjAKjT5G67{H}KW-1`=fo5N$8Y%6sww~71Q=T@l z^K*xmWOc@5oi%0Px9qC|t1F&$VqczsILWG_?{idMuJ^=k3jI?MPoAc$jnmTXgkI&( zz~SI-r;V;s?A&cMz!W%Gx4VsoOt&~J=TDE2=Y$vs3ma3v*T@)>zFik-R~l{VCsFs! zMZy1*^g!~u^0BzzRgm2jgA*5=rmUu%9k>BSK(jaDU?oj(cLD#aC~A~3s9|Vu?wugV zmW9&0a(px%tu;<%9Os(X9j9wvG1DrkUIT4i6&-SCPFuX+9gVu~^{VK&ANrjM;scV0 zIJFDD0-~hK7^tmn`c4C)0tcWjq42KLSZfp=WHn#sa>lp7`Ly}+z-jYkSn@KBAS~pw z=g{P#d<5Bj+N`#0qHdcL6DvmiWsxa;*f6vC(nY_|Gb^M|HqlS*!WK9BZK+OJ{(cgA z3N%?WyC2RPck1kiNOH|DM)qIg^>0t$u5;fZcRsAfOc!qK9u#;GAuNHVGY+a zm-r^@iEeslb#q;b;PW(H^gbg^)#itl{)ai$4@?4xGSqE1Lt=8m2!dD&FWNy$efP94%=PZSjFb6AJ0UD#qhqatnyAmLRlr+z6IDl5WOga=te7y<6^D14Dm~jT z?_)Atc_k?e>j&md9g9+vl5AfX#NgzM!_Zs6cna1Ro?EuYgAA*-LZit&$fvg?AFG+Sp*ks-m1jx^w<_lIyC~9|aE7&%wrC3#+bh)=Z)& z?eBJlbBI>qvN#LjiLF(gE=ud8d`}Jn$+z2nN5>^*r&jiR%_3dU=5{0y1e%m2&F^54*1{yj6Zm&)gy#Ps@K9P;Po|9U2XPWgYE znSWz<`G207-O6`cX$+UAmw#Dz{=ZMlFP@oX=P(9byW#Vrbf%c;ZVi^Tg(2|3G+>at z+TwkIq3iVgmxsFK`RDV3K62vJ!FsOx>fmCQ{1hu%7@e8D)E7PSZ}?x9pXc93`A$nP zTGzXUR`Kygw${UNZr7@P}#Y^zyIlE`M@n_7W{&Z#F&u?cMngnU>#a z=`&rlR=XHJ^Y}=3y#+e=@E3y#L?x*d)58%N$1cwcI-xCSD z<_Brle9QO}(k!TCR|pwf`uM_B?*WjZIl@mQKPehIEvoKKI@$2;@x%!8-6+0g^S>eT znz3}cfr)>;v}^7Lf4%IA#!a2IUe-m%>$U%NqUNi{@LUdV-9r|9)4q>)_f5M(2}z@Q zLHbEsPfRJa+c)i8W^+$hjnEt7QVcui#C$tpq=<}*smdsg(LI&&9c5NCVCY!nS^1py z(Ch$Sb87-(IiV-FQ6UR^x&zHKvHDsEdHjZy&3TmC-jB-I(Wk_GM3n-y=}fXVcbv%8 z-Usx4fKo5L0kh%CNNuDZD#cMBf#Il+rNt20)6wo~l+hm6HMD1>j;(cHkq4Kwqj?QD zVRI0Rf{j(~jMgUVNM#u&0JV+mP075mDJ239JXK0vuHy#45pG#)==>h2FvdS0V+C!6 zkLP74d`dr{Kk2|0Uu3{eFb>I3KfVi<%A6 zIZeK~_GOKAc$}{0$tq+u_#fUf0C}#pi2FE&=VKNhkq;9_e9eC}PZoR+7CxIK6u?L+ zmmr$V%NTojUWT`UHR6LUL%xA0x77yeM0TZIgk|6-c4I`Go)2!~mO94Vn|T-5xZ0Pr zyICJ3sW7KonMHot7PW_u1NHF>`{?MXef?v$eU05NXH9kkRENJF55GslwJY3p;I3<$ zXbYtGa8haRFIHUKO(o^7Kh%>Uzi~eWjM!!5-1~n?rntUzLF*y?AT!>CMX- zZeAnFUz$*EI zwNflt0}kqaHZH2or5#j+b!*jp5_&srNH7v@GR%>=Kw z8(I4)ctx>Ow`WveqW~_+I1oe@rXq|;C%MUC<{H1=gEDU4GQY>wy|xbWG5eV4iC38^ zvyBt215JO~_*Fsg(h)MBMrWCf9T-s;46;4el_FIPB&=2z+fXf-o|rSznRTLFoviu z$2tbpoVK4qH(213W(1pE2^yN*D{iSA*lzP;6h&sPG+5tzdH)h7fb^HNBP>qxac=W* z@BSWcfHPtsPfru%tB%9x^0_o;d(V~o6TMuo1yJ7$~NikW}4%^ zTGZyCFI8X25Chf!yrucR0PidEJ*OR`B}cgIB^>NV%BruotwAMSkG>0C&(`$R-8SpK zzjLl=srebVS?{rT^J&UN-qG9<&fEC5@b0Lmvgb?5QQEsn0~_h1D{jkA5M@s?7>vogQ<4y!C($Q zT1k6j+VOlwwEq=3o_W7I-+wtHI_5@GvDw($uKkzs4X`cewB0cB$DrG zB3L?otLu5pO+hDGwtY#zPinLK@>aV(R`7$Jn!)e3Q}cG4PS|l@YPZLkF1OS#>Q`%% z4`c?tD*9uqsOFs&1)hsOuoKtk!UDrN$L#H59qcXDmV~2(2pSsuoqf45_Oa;xDUdtu zsYV|JK5NU)98)pVCCs?~4X0q}6Xb(_5ND*>z7ia2+0W!TjBR;M36G38MDYs(HV%gu z43GG%^=Ai@I!@0;*W+9Hot}{AV9ICfOL(%%nAs*;u}r{wG)J=R{?u+fTS1Cp?r=~; z@XBW`z(xU008zLxX2Ta6c#ZJU2ZnzC(kFWX%SdrlFODfb7?`)$9W$9%B>tC(Rb z#hSe%NjXDP9rx%_2V0*YQmVF{ny@3rly@t1n|Nb>M|5N-8bj+mfIiOCRZ2T9Uz|S z@|WlEJ*RojV>HNfUSIH>7iTvElZ(0<3-?E@bqgPmFt!hdGYL=3R{b8%Ch2Ge=v)|F zb0cBKtgl6`iFUpvpRfE*=CZ9&r*}(6Mc_jCmoA`pTDI*=21eqg;yaeMkQI7|$&SkT zU7!aSNZyyr^V4nd{zo0TZCgC+ig&`p!e-}0Y8idc{{YGibIYN089nH>c#Gv5HQ3zH6TM)eh0z)cZ=@16H>Zb+>6ssl4pDSx&vb7a{EE zHcutY&f!DGTV}!jf-8!o6KxeAz?l{&wg%W~hc&;a-#CclAjW0XWE#nF&x8@i0_!u_ zbCs&gHqq(nlIZ_2_a<<57FFK=ljpfx-|kM*>86_mLI{xXknRRV#SoAkRCWXr6ci9a z5O~792`ZNxalsW36w!%_7)24>aT}L$8}|(ybrv<_zRtMJ=#1Ow`~96$&vLsvfX@5= zKmUB7?^9K$wo|80ojP^u)a>1^d&v2K;h-Xuu+D_}M-$y5dXb*Kd~9zd3rjg_DhcgnA`{^gmv6-e{iwG?b|(uQMl$1 z&{d($;5Yh6Vy)pun+jE6P&%`Q^d2<;qfiAVlyk%Yj6(Ba9ytJ`PzC0TPMePyfKjLd z)3*Ij@7Mttg(@)jxE}qO0T_iUFrlua2VfMc!2I6JIcfk#p$g0@Z}V{jFbY**9_(}F z;W>=xN@E{7hoFo-M_n7Y9{#9-Xb!{tAZVoy$~wYZsNzaU&^%f`=;jCU6;#*TL)+d!ko>oKA{6-}LmY3}~s z)qQxqxl+Rl^uU|;p$aeA#w%TKpgykc=qa=gYM?)hYjtQq!;o$fVKFcv_)LNtr}Wu; zj4ZBW=K0Ot0XqoTQBgtmPXvcrjN@Wtv+SP^>u8CmjAG zpt@)A6kdhQzCi%(bHEYW)!pz1VJJ!{7JzR70A?TRo!zgMcNWk+1gfq!CutC{MGMLB zFz>RPXxNLAH!{^2&vvx)BD9s>mY<7C!8t$N7Fz!w8aR1_$j1y%^c!S=rATYlD9(#C z0s&3efSvK$P$lMBim4CPXo65T-dM~gWUJwAoYDOyHI298As&4GFFy75_gH@0d$;gLDBxRo6WRZ0lj{lfqG z^Ph*O&xo-+KZLm1$s{`tJmR-0+m|rY9%67|CI{Y!+aZhL3`df#lQWa1LP4XPMsqlR zFiE+dCpJUTNv%!EY*L#^RGc+TGQ%3ikZm39a&|oht!Cx~yD@pdP{M0J)&!<$Wall~ z7rlZ!E7cbsPoS-{t(vu&hB6ts9X&FARg{P;ACmyt=6_@lnL9+&hjSzB901Pptdva_ z{Hks`0;*seEJA|C??WSW1(oZz;mBoVdaVjx-Pwvfmt02+FWP7eodCGXK#hmCh4b&VY773y*xdctR|7>d&%7l4@vh# z4MyD4V%o?+j^yhSXGwHC<*X8HJ^LLv+wzmqpsAt%tte^N(9o=oconi(G>z)pAtrr} zumMYNW=BwyA0}xmbgr|z%4IL7p`tk5fqR6ub|DDL*Do}>?Zu69c$>3JV`CFWR^$}T z758^t&*3tEl0J$S)Y4ao013p!OqbsPjPb&oyR_g z_U)ne;g^fUKN>PRy?V%6#Hp&)oV^!9qDf|btrP2Z^`(e^*uG3oMJ%y&aF!nrhB}9% z2OZ+)r>gV31?rqF>%5JgO+9#Ns9fSvz=uxL=hgq|2Uh>XADP#mMEJvw_Eev{&(dHq z8s2l>rPe~p%O*Y`t<0L@3P`RiZMc_IEZa34CbkJFy2f;5h_o@{F_!NHgeh&$XsDIF zPC5RY*zp>7q_SsIt&xj;t%Z*~gVA50$132QFbsL&AE%hPlp?r?Fe=|&u;SnDxMKAO z8fs)G(@Z`GHfv-Ng`HO~9J1ZQW8+WD;PKz`^W+hQJ{G5u>49f8tO zTv9w~2%PW2|FTWcKh5=@@w=DC0o$Xg0?V_9N8Mj@WjCo!ZcTs1hh(ayjV;*-{P`Dz z*P8584_C;3$a7vqcCSNxW&mHQ!gYT!Aw1Iko(f90^B1Z6+x(1nUnD>-@|6`XV-kTo zQnQ;#EA2(EQ2*}NG)vWJ9!RFpyf3-AN%`6(@b zOUWYpLQE$~AIT3M2WDE$>ygUfRTF*f`#eSuswhUgyqM|NOh1HAuf8^_ zapU?9seNtA_(DALssILuRjGFq_@VLHqu#=c?zv6(SH8L%BMiW(52-MN(9$WjP4Kf+0&#VapzP-*wUNpSQ@!Ui-=CGxlq3>}~T% z;VNI!9FKNt&oO9k2 zx3MEf2x;^caymfn*O&*snY~k-XGpJV+B|~3^0h=gu4y6@_dcLzmXz7Rh|p;u8n&Wu z`%O^Nl^`jszhXo=;1d#f?}e{5vR8pjXHu-uysP=ril*Rr`iiFD1p9GU z^(XQzU&nED6hpGNjoaqmpjgXoLy>uFu!VJvo@KMY?)rQ@?y10r{Y_DK$n$$H!}{4Q zk;nx-Rbmpu0kW;x4^}{3E}Oe-nyTLLzBv{0P6skKPZ5e~O!p$=Xl>)6LWtCajSBN} zyil@sC+Y3{@xhprq2yML&bb!_S}TjG8*8lav_c*qiY}$S`_M*{0}{6OAbs>TsefrHSiEa;HbfTQ(W*o@T}K4pzh7 zB3&okczMoD!?!pp)P>R22Vs`!uAbjnXS%b6(2c5z+1scdg}|vqj@T4L@2UheKC{GS z?-mhbq-eleeKliwR(8Yd={I#-ymTVAk>&u;o8SUod;0ObY%Y0%i^?9&uKC#Z= zlZSGDF>F7-zIcv0>wKGJm*q>1Bt?AJt>4&{7z$b8VC=!RCLIYQ5e33Y2CmG-GEY10P2 zZd2Epie|Qi;)2c-;{ngqoLyl~6uA2wr`XuJFEIRHu1c?aC$(>D;*rXTLLUCMHJ7j2 zC&Z_(2HK|jacrpXhA^R@TK_DF&2?DL7lJ7^B-Z~1vefH`vjMxhE!(9NDP z0HaU^Cg^xi9)MA(0uyw_rw_m=RDrq2b;Xa#Ve)nc{rPEgtPwS$`U zQsC3qi6{bISs%h%T|E_Ho)s+v@!GFzO?sg8Xa($;9yjp(EKSCZsx3Z8GD{}dKBpT) z1obuSe#wmZyzVU2(~B+56tVE^M-$?@OnQ-GdJ@?L$i7Hx^Am+Csr^x1A-m0JEwwl;yt!n=DU2N8q|yc<(wU$n{rc6E zv#)5*NUo4Al)rLFLDo{vV9{@;2T)E}h)vEIK^5zAMl;A6-LJ4^t%@2gH#G^O23q>` z=_*9>Un{y4X?s6gKWrTfvIZhXRle|~LiEVDYC+zpcAEnV7dRXhsND-uW3)9nw4>!Z zsOQ6SEhJ1#5GSV9Km+az_mqj<3$NT9&wPi2hom+&mEA4$b7sQ&#p+pI!r5nQ39n^Z z!VUIag1s6rU(nGnD|p=1A>#gd+|z)Z$K%dr6iOcVIAduKn8)Fdp?XP9W$E63BYFc(gq6W-r~H1H zb7I_#qfKcWYwDi|G!jZZV?k;2)_u#Ldi@VBKA_U-DY>x*bzL))J5eUE35#e{zrKA% zYjX`zMO+4sC!H;$9Rx->Yx+2Rvwr~vDDZs+&JTg_Dexo<)ca57HwtzG>!N+nbU!)U zU^`xY+%w3YW$sydzRbNoEOX%8-`NZ6xC#vK>|M>{;fXm3QCxP=Rytaf^ft-zKu|JypfR{$weZ zX`9u*)EaTQ)ZaN+&B2n825pJAK9S!C8BdFQR!n*W`RB1tT?12c_BA-i#6;Xv1v_G* zje6<~6uBUMfo9gakIU2Gyz(babCsq7F_~N<#S1M1R(-r>;1YR=vbnh$9(=(4@!+uk z)9z+CSu?x;+EBN(I%k#H*XhbU4%xi~2FGb`N?IHNIseeic3e3>G~V_l58<#HYN{s9IG4k?9CM5njAex z<8gNqH@u#c1G;Nbc?a334n^U(^uj#ty+E^6$WKipeQ8nLR58_j18n=>;pzRNhPw!( zEbJ`GOK~jQ$o{f*Li>PPZ%FW=X^_K+j?CseuXcHS-7V^CZ=bjg4qGZ9)Sc8@H?oZrNqb*MJ7_<8vq2 z8;T^0x{9`SUWv5eIV77)kM=Opx>#Y@J<8U>y3oCy>iZqafr|8#8LfBu0uhREvxx4E zz?DJ@Uec6rv+^~vm+O0zzI}rx`m0BKQEzx-B^3QW;NqUjj(Y-6-@tlZw0{KnfI}sQ z_-4e#-)Ozlu{AKvKr<>jm*KNW&BKuv`x%(|A~etz`5_|Bui#3Foya0v>!|#Zcn&&^1x_0#1kcGhX**Gi8E&^AWJ9PLN;h_W;2jC27 z|Hz)KY;zZn+j(55)1}$Zu@r?@p8e*m?c{WV`^|{=02?7hmE^i; z!*e4-=RbY4U;O(L=RUflyEaN>JF=QqZ&KVim-)tOGvG6L1=u!t@9&=0JY3DyS!n+6 zs&@EX8bmm15%6uedxEd+si>DZi$jB_f$nIX^fX(^uYcI+_K1wT97MPKSKBA&v+aK0 zJ~<+6_qW(5r)KT`GwqW@ly?6b`$R9_?mtVPll|xDC%68q^`EX_z5fjTB>iXWhsWNo zGN8ArNpbo%|9OZ1ywiW)qaWA9xO^JcI?LHpYb(|h+Na3g73R!-cTG=iSToGqK>BDJ z8sGHvQozp zk$jR4)MsVQtxxs|ywMmvTx~Mno-9#4;Xk8_b_QRNg~A?e4bI?`ya+ zB+fpYXuKx)Rca&hdv{=jK+zh{3=I;x@aZY^-6%Y;dtmGNS)`7c0|Y25;Rm1S$I5ZEF-l*V+cqSo2RgLGcia;-*m4{`Q7o{Ag}@Rm)1aQ6 z)Jb6{#br;uy=V)OZ<8=(je8nAkK~O8D`NZd;i&Uon7K!ra=O`l1_+Wave%t_+J!9`$uPA=X)xR)t#gsrvA)p^62!%L%#X@f;AaE+}jx_u|kbJ z7fC`pConeu7uwmhCbse>#zstlog^f%B!HIfJAfVXBL~T#FW$cEknbZIpj>m-;)pPe z6Y_xH?OhiwJ0zM=pYWg-O<{lH{Tq*-ahE|13qlca2J`-hAb0N4pGSEg* zCx%k3yw1FucZn{Vx%mo$880>2#B6Sop+Sb=#)K|u_U{((->7k2s=2o~I`;Iu4Ygc z7PZ1qn_>)W1-y4mykybFmNmm)aZ>xthJYL!PH`Ioxws4mZ-tjjPS-eNMpkxQ9UQ&y zKXTqwi~fgx9__SatCCZV;Yz|~yNaHGG3Ex^g_Fs+r@GMH*>6@N#j5mi5mIUeQdGbLM2Zuw&iXc->qyb;QyAq^GiM3D;mfUI zayoiQ^rmk(ZX}!O+=Kr$pSA2~$i(>)Xu2`k_#7kL$!5*hE5uGMRga|UNN+4v_}fQZ zYh!|~UBtkXT)fn|C`Ep1a~01jXbqWK$X4_)1FH+#T{~FNJhL;9xF^ZLGY5UxSajAU zWuGK7uXkBV498aVU9d;~1O`&asxRH!Ao;fa727thG%Eh4C24%|^x0#Jox`Iki$|EB zmy+1ZF5_>UeYQy-<(E4(N6O$pN33Pz6W5NrGCq; z7!F#Y`Cd2Zy^1nJheWWGXi~px8PR4)hE{{aUUv?BoP9qB1SaoO&>w(8iJ@)TfVR@tPI&IY(&P{trce=awut6^kZ^ z2N*??eTJ$=xqp8Xx(ej>x)Y@~)bE5e>Q0o*Cy|t52UxePr@~Iu*RMwf8&zjvnBv%u zPWRdq^U1r5&bG_U+xJ{c>$R<>|I7>ZMIp}mBCyupo&=AL8Z#JGG%_0PxrPE%p3VS{ zv$i<9(_BJ1hd;o{>_^Z_u9#!WAuH}*Ry(pCok~$HX_adK+(JIz-cq$_?hq#Px1G~y z77Q>z`}-xrjl(# zJ9j>1-^**+zawpI8!}6V@aCrmS%p~V6u5@~jk%Yf>@I{_t6B3$I;Ionj|J{1cq!-y z3l0V+=3k(kk?qIsa4`O4gQ2G}B3!mXW{eeNcF!C#Yff$rLuK;>i@s>&q4`+V;Oe<8 zicaY({qcTC@(gpN7Ciyjlhlv;X0A{yD!j5C6xBB=0!5wXn!nqaUc?yWy5C7;+|Qy9 zYi2*;uMf<~G)i#l{5<`v=TY_$Th4Re@3u!O)18~yKEtU%FtU?5S?$UF^Z9lXJnV%Y zN1I9MOSOFG?SS7ljj~3j`E(*P)w1#Vzp^~Z1fe|tR3}8wN9XNJ2DZDjZyE!Th1$0a zg`U~K=Kk){*Cf`!Cv@I)bF^{Q6K%h0o0w~)0B0?8o)*@=Yl#cvfedUQwn(C|A*ks$ja^woSEzc#;S#~1~uXHl#20)k? zb^i#$n52K!z|@-E|Kzv(Eg_KyaKFuOU%l`)x3cX-q&2hyFeTN&%JHv6Wy9E1`okO2 zP=Hh1$M@82kh@aeEOEP}I zqcR2j`hB$^>!^^)Oa7Gm)%W$p#{{oF>caQ=57dBEU z47PD5gXJ*YtEArYZ=hTJ?*&QQ5(rtV@lK_QJI~VggfMnjKcJg%R5SACu?k{raYuV9 z6ir=nrr|r{0iedJUUnhUL;zXUw-9`N{Q>A3*v?EM#pwA5nYdf&jqJyiE{paMRAp>L zn|XyDa`7mHzZHRfx~^Md(-ok926PelVKwlRYT&2Uz>f%|-{sE^x^doEE3f>Fzp`?x z;(I%+f^BwfteIQG-v`=sHI~C;BN-#7U?BfqZf*|P#zTLtXfrr|wCJz%kK4H3mK(@2 zj~>JEo}Yur>YNBvi?4(_eA(kdC&#NYA#TqZQg;?I+@Mm8 zUTmU5zH?{q zm#X0Ua)7VXT^znwbROZ6CLUBvoP#1?i^E%^$Vt?3+Wav<8aZTO42T#QgE^%xt|g1> z*&kR~hu8nhTmw3Sn8Y?e%o>bm6W09}roa+Xt79+WH{w zoM8chhPKhWK>=;>N2gO)qTBXfTQ0$&E7BI9AKT3DY`H2r@Gsnt4!qI3UKMETaOK@#;<#z zvz4szH{j$kww|o%y@Wc~jB-w;k0D50sBmked_I}xTqp9D)UfdgdWGrJo0~=0F5Vg7 zzR`;Ag-n)_R@0SFt&qbsQK67lo*zTjO<-bCfN6l)wb8m;V!O}M7ec}cthzbcQ!B#) zyzbb_N_->nT7v0cY`&s>txeM3fDISieL+>a?joLH{qHGXk}XC)DAwD7{hg;T9ZVl5 ze_sA?cToOgtK}~l%&+>xzS7Gdo1Y$J2u~lcrn{^b_N%X={nm1wrE2e>e*tAL6RuqL zy1D#(dHH!u`T2_S^Ofc2-;|$Q^*Pypwg0?EKcyV>QUz;$H6}kVJ&1Ok={Qh3g8iB~ zb8l?^K;fquR)X?qlOnRUOiVc(2pu zmg>Y6z}3*Jn$_4^sm%!VoFc`l#Sgw3*v$5#`li!mbMuFa7Fr$|o_J}Slrj?cgwdAe zX=QRl7zi3>B1ifTottBC*oZEiHsK~aFD6YG(glHM|0V8@lIZFR!vXrQ=y8rqp*T2i zZfw31iItfL4iU;8&$2S;?^ekLZdOsokLm}2r6@C6Xn~SNH&*VxUsuJBam!TOj@%ZPoJ7>{&0cZ96&K?-2wJb zHh*v)fMU`i2S9jFY#7qEMaT;-c&gc(N@qKsMCH81qJdfAw1QHERdhAFz5R$yalndH z;vk8UUL$R&IOCDE=&AJQoJv`BAK*A$q>Ni`qI?%2FbV6tNlQAH8g!rG)Aqd_P`OuxhL7~njgCN4{z2iWy|cD)0mbF zS6ZUA*jf_S;$NvHL(7|U*5bS+n&*&xXo==G+aU`zikr2p%s8!S_>Ef8(+F0*^|VFJ zEk~E|rFHgIwEKx_cVd&Xdm>9fyR+xZ7H!m-tLe_`9L>14(iYbd_DQAYd~~Rp{m4hk zbdKx?hMVo0GOW3~MrUo#b$_*JKiX})ILT7zBAonTav>to zNiS-FDwU*7Clb*cetDyFz0aaF21sP*6gP|SHw{-oe=-u%@nR!dzZ>}y;~E9?5s_N* z!MS9L$C}B`L&4v+vGx@2*R^-QTchq?p_HcXV_KhaTV*_vuub%6{a&@Qn-#WeICvFgTH-()SO>XQ07Gun zo%iD@^h{J@ZozEe$J-O*BMTyG!;2la;y8JJ$Cc(w9-|WDo_JIqW4O9m9U5k8K$SxJ zUyU}op2bo z%i?lmse4x+`|4#k+y1v z4T4ytNtN2C2`=oT3{J!t;KUvV;KF{&;7rDHCM>40Lpaf5DDOVuBWi~ zvkgja10S1gA(^)%GI$+Eu33w=_a&4JP?JBI^f1`dV`%U&+@87|%Xk(z?f*mM3v{ji0;zL_h z*g$+}iwd{+1extJ#!UYzWAawg&$Uxg2}HN>m*h2mBGKzzW3$}i%FsmJ2Y zip!#HUvxF`wwGDeHm#>QEqETn6nmD=-4ZJCRuK2prgUFg%~hPv_bhq^(P~nN-la2j zv!Hh+S}h9ED?2A!^loua?b+5`HPm^b#h7p!+UM`%aQ4R@!DoQnrs3>&u^sv+=9Z*@ z70#aQw50I~(@$#Nik7mDr9TRT^4vC#X2|E~>b?8P$60DPRX;Yi2e&w1lvF?gRIa=3 zpXO8N>;N_Zy;9GFlak`I-jj*EMO<}EfNxAx!8 zw-rC(pYfJ2(uBI11@`Y&qTkmUrB6m9Y&*Xq<*u_U`Wr_|Gdd*g%L8fdE6>y7o{&(> z?kOOY7pnjtuVe$Z4FKSW8FIg`$-t`x(f% z;o^4VdOHx{rhFQ4Q{Ln84~qZMgN0KK**3W@HS`BZp`3wezx$C|1ATh@ zAN6seJ^cA7P-su6kHp+vB^fzlcrD*lunIH7b!7?_i^wSMe3}(yPW+&7MHqCdDBQ4N8MvA*pO6TcUL>u{D#kZZ!jW4T>Ei2Vg<7@@Siw=!F z;0}$|=JaTMut#H+9R->EUS zlQ*wft*}LjtBVo?l6I;hDO%6F5E|i?gIM}l7-2<^PmWDyJ5$W~6u!=;vLO-T&dsr% ztAo`5rX1#YY$`oYIhKztCt?`)<_t9MUU?~w(I|DA=)wNRQt1Q zr9TY)uGua{hjujdC*9A`545~Rk-HW}E;#nw`RKd^(S_;vIL6dorm;2DWpuHblQq_m z-G&$b;m?0Y_qdyz9_~K2J5r4ju$SDuu#@()itA-u-+w=xaB_U*G;Y9q`W{=^7+aaa zk=sVH+oG|R@PU;?n+}!rNTq!RGo=59h4=rKELgqh?Bn_gmG^;4dHNn(*~-gPdRd-l zD#{!3GNe@Qf3Q-9zQCrM|~7Db0%% zKv`tS7RtN_3k)wt*Ax4HS1Cr{6jNYJ0F`0}&_yvrX-k)@KT0myVGk?tF$;{0HSbwY z8+@O-n1oF?B2spr09Euq0*J}#xzAGRw70Of;M?65#)NgwbU9PzDUvrP+DUaCkh}8n zD6uub*nc}(zXaH1bA{mw=tO`N#T}f2)iz5`i~9kwf|fB`T*;bWIa8h@pH$cc#lM3l zC7YK}R#@uf=v?il2F03g)~2*GAGEJvyd{N7od%4J&`*HrX0+5z5?0_OZ53=MfrKG6~w{Sx0r5;9Vdl-uoYQdI)~6O44F*s za#!$IrYU6d(g9It&zG}}zLlAAm5q_Z1;1mWo&k9)_z@Gi55x!mBbsLm#f#Jj;)7kB z1fLLJw~Kn=9(9n3;+_bxyge-%s+(?u`=TO?x48(1FGM^oihnTW zWF!4W1UB8$<$%QRE@PHd!Sioiz7=a3==Xnlye4H#sxNs6I4}>|7Eeu2AbZMT3={L&VV51{MzIE6FcT zSJLu>-`Ov5+EVhOX32_79@iZwlgBIgu!a(!%j-{7+v46Q@;OL+?#rBDjZb#Gj!>~g0OZX5F5;f*>%G}&4=c3tpbZ%Sj z(@gQ|7bW~-gsr~Jc=k;i(+Rui=|zQIi_XPPr_RMr+sY+3xt^PrT4VK$(L)j9pGpOs zuU#*eY^|mhx{7FRXm&3w>&K}(dA=VFXcYgR!o8omg&5xB#1Vqx{WzPG;q&92`ky4C z#G3^p+{n#K_>|yk{ZAL=`g{)aRME_70oC0nK^QEp2`>_!z0U$DRD6@{lH#5kkX=f5 z`bv!Sw6dbytdc`;It`T4vdaXeMDU;*i;^71O1fMy)=Ju=Ul(*al(8aguP}hAhD z=EA)?MP}$Y@?(5xZou|M=}C5X36Q5(@+a9#2h*jqWqlOQdj9v2ZZEQ@CnLld#-1Rz zMA)I_O2%6Mvqk$j8Hs}4PLT$GxttA_I>gTrj}Gzk19`$cQkvz-=T9h0z!ragg$}-; zf@=LQT0zvC=Lzjs@<3Uk4#8Xet>#`Schb?nN5#2&nEt)?-TyK_j`wCxAH`c{b-Og{ zw1tm{B1AnQ_{e&@A(TuK2<$0E#icN1tL|`2dJIA1(dBp@7W{I{nV0ij? zPx2{8lG)W9h?&i0DNjJ*%0$ z6~+ITXdH&qxph#j{|`hkUSH8q(*LUc*sY8H*Z5`vOV6Nn?lSckw!l2X5RcaYX8Dkr zgy3rRMs@~kz-0DB1QAr2h$2$gp#B@#zCVZ4Cj)FTpS~Y!ya{aZ?CyZu;0;9&KQ_OA z-ikg+J1$o{>Q%pyYBUp6J;86}-*e*QkNkL4)o-NkOC7(U-$?bpiBFTzow%n$4bzlt z-?uR`I7Y1izA)-rq<;^E^IomuJZ>q>N54=K2v6x%(0enQuvdyJI7D z#Yx?+;HA%HSwU4)>wldd1cy1UmtsFm8oq|*am?@Q$<4BvDzYk=xujh--12I@W$GT4 zyifi@ZiDoRqyq>22 z3F&4R^T$-rw6huM^l(PyqudJ|CNW>5{eKo7lk7vFs{b$kZ4U4CY*_!F6cP9IW2Dvp zh9WG?^YdikF(Uq^e}orLnWrk6dfh@z{YNsEE)8#^&72m*J(YKVZd=7i=kvQ}w240D zJdH83j`XYx*1+_&_s!8ZEX2{c0J<(Xd1%-ax-Vi*5~1VnO2I=nhWO|CSmql3svL zMBVpKC)G6&Z^IMSH89pZ%yFcu;P^iO6829|Cr$r~b*A3m4h##-_w*Bv^Xl0TMD4Gk z%l&`#cstLlXFn|BzwPmMpjXd+RK$PBdjm$se8+nDF@%5BNr+d3wgiiO= z$n@28VOw*TaOkJgJ+(1JuMCHNyAiD>hG@?C{M2t1c5iAT$9}`}j{S`1uBL5s&i(8i z(0K=cz=_tytWbaw^f8rr?*qUMB-{}9$ay9$^#;^4)r-w=3N2|1j z##gn4ct2n3Xbq2hYFn>b01K?M@Au-=Pl|&*vj{xR^}h+ zjU^JVHYz>vC`;D@TTPd&zLS?L91OJeBHIh4+n_8sT6#Ob%wISfhgM5zu`rvYcM#pC ztvgv>`LMZyGI0TBem(qstkLO1%6Fmkj7jcL(1g8JQL|^ml3y3H*cvk7v<}MHo0o#& z`xksBYNuQr4ECYJ(Fu?BccK#bqwYrAKZG=O(wtbwUS-edqGu!CGn(jWth0YZ437f5 zgHF1qWiO(LlAq1&=K}V#+2g1v;9F(Rtc$INnLYgXhKpmX>xPRT%#K=h+uq;NDog6l zNlfdi4Y={7I68)MQ8#M*tqb8fEof&ZM7e=6ZWw71<&lCeR%*w@9;@KUxgaRY(z@|x ze(jDs(uLu_C-TnpWJTMAHh0Q2n+A6gh8VeNn&o&{0rODcCrhXgrZJgU?C=9YbMvpk z@EOJI?s9jx-T!xL8&oHF%%Pw}UrF`|z}AWv<@5FVu18U7LF?iH%i9lL zL~(|Y9Zo#5sO3W|@$9&Z*Qj>?=j4eyOOJ{+_WwhlVb>I`yY;>SSm%BXyxUW0o_3u# zsJ!lxlx!7M+8)-D-;i!eToq6H3K@+!kHD^0G@^n_7=QGsZ zLII|b4GX!v79B@hH(UMb&%`svJ0IGB5k&eG0?V^&x%&zB;2pY&p(c4soZU-$lAVvw zNZq>lFH*8M5*S#I!}ut%Y>z_L9=wv2W2jd0ULuOqd+wIwuX7}s+rulS;P+q1ujvyCe?W?f#iYPWeh z0&M9RKzDk!Y-s6z^*M|jkFgCV9ZC{fR7=9YCp&p%;xKf}LrIalTwOZw^f>*h4e{}e z>TqMr!2mQpDb9XEO7;cn#>LagnytZSAIIG6kiNqmg3-p7hm&K-a};%LxDFKf(|_X} z$n)|yqq?T4^1D4Df0?_;zOtoL$vmd@}3)#dvH&prx|O!=$ffve&d%@3SVs0 zn-AkL${s~jphXJ13G-XHw#z$`M1VN2H(<-9_9pUXlHj z?(?$U-$Sjro3XHl-5Wh(=ltE90bg3;4;lX1=F#)hO8yb(B#Ax@j-KxEA}Xg>94CWqJb&AAfx2dQRM$frn?$kM z_eHRJ>vW*{&n{5C-o~)%i~0|Kl-HlHRae=#Wj}{RY&@l7dlES4dHj!wzy9Sij-BL^ zYl#s~f>uDA!pR870obMBJSbr1)tnAFee3M#pLgI9EnHl4-P+1%`jMsovx4szJTbBJ zGUthz+7ug6*CyUW*L<-c0(_x!s>-B&P2uPWB(z+3;Dp)dKoLKL9>KbHI_ zxEv(fb$Vt^Ii_Ne$bn=EX$9vyM$4vFORt2=vUh`*zVb%f7q_F%bAfDh&lACG!BL+h ztbV7CjTWzg(8Oy?ooSqXN2`>xd)k~-`LGB%$&S{@$;l2$yg!MdJyEv>LMxbtJplC+RQsuSi~O*A#;@_5U8(XVAM)L!QIw1W%A z_b?O`0^V|Z3TyiBNH1}#kiodW@6%mA`XjLgZqJsX;va~aK`7F1+*2LtW2m}&@j8?o zd%3xzMVk<>{ueOQ_3oG0M8!ST<+);Qs#FPm*N?Tw?*O_S6WXdW%C;(0=}+J0fwicF zQTu>N7&nAJ`xj63TWwmsQ-4f9Q+@mma;sJgUVrcM6V6Pm36`_^%(dT1f0Urf_pTFz z0onajE&9T3F((RH$osIx+sF7<`k+vy56^U%MFTJj1(+R`9ppTY0V`!I6!J-)beME! zs4P2y)!2|kd`=Hxt}zQLWhi82#AYuMV1|jEMX;FW*Xbe`ge&Du_?eNgRgQ;3mHsj& zl26A6U=*srgtNLO1276zU_!g<1276zU;+)*a+nQp0W-ktE6T@inD*Pcx#iC}sTE^- zjm8G!=6T~>@VK3K`yG^NSZ? zSdnXMW}9o{boac~wqsFzVapooYYvpBP#8ziaVSreWKyM%NJ+;bT{K#@Nul|)Ffst6 zPz5HmW$6HnLKPUB`*BZ4Q!PKg2 zk794QIAOVM%&v<%zqd6*XivTkKAL zMA^u(MQg8o70ocXYHJ5G%GNhmpcNUvuyDqyP@{fV9iIIoE8$M|TwRfIw^uJvV;DQ} zOp{HwOdxdlY!pA*QG8_##q`Q~qfjVQFu~Smc@C5Fz7W6b4&qnsAbyXz@qxZq>>z&S z4&ry;LHwR`<71agciBPwZaauyy@U9@^7xL{t!r^7(-&$`X{!gQv{li%GEw*;QQaU> zwN(;@3=-955><31Q5Ymq9VJoiS$8CKDcOi?B(}fJ=eNe`PUlNXwy_kfgs1y}RkFe6 zV;bi4&Ut(}rxoREv+4?CwoeXcD~LiBx(Q{$%qp~{(0mxlFD3mcRDlU~%?!XORDlU~ zY08%6C{%$7Sgt2kI4HIpwkrkjtqW|G!AWlC z@z`_AJ@TA2q*%*#ykA>LUUOMJjG6Wc<(Mf{8M83(HEHQEdTqgKwR=ek^q zN5V=w6bgMPa9UY|i?})an}Cl84V0x2WrtOw`?12Mkq$Hf?vd zUOQx|GD;dYGDDxSywGP9nhZ!K#xHSDXAt`4_GJq^f+!m!5}7p>qOR0uo(U^8R+Hj% z8R%=}dnd%(b$E3`2EsD0O~V&P9TaSdP3a~gawxqNTL0A0Wu z@{nr8gTQ1VI<@0C+lOLiTaD~kgsuU9E8?|mR(95ozB zuF{?~*h?xhldx(H2Or{J+Jl90xAYGzkREi;macW9n!kdRhf;pY{}eL18Q6QOjLi>+ zjm_PA23?8L%Q6(QGHTJe>;Ycjv}NtEel+Y2j2Q^$L=n!SDLV&1rPV87Htho`agXEY z0Nik~9@^SF!s7ln1h@PV8-@JrAlmXDgvOiee+xp~V7!GbpAHAUY=9(vi88E2FR3XpkVS%zRtzaTs2u&!&YXV6L7 zn17VA#8;Wj28X^WhdTtgS+{Dk?@6>XurIQ{XLnN; zN8%#(>`QxusiCz)FfX1D^W_r8=iYS&lfGRX=)ye*=a%NC_tEOf?#VM(+Iqc@!Jz|f zRVa)T=EukV$^Hq_I%C*O9(neewOVuqS-DU5nWUIes_q=X2NB9^C~H);B3O z`&VNP@)!_sFWwOJhKCKbPa!LRKt2=4EAg$+e3-)rU=*sryu|w{mRXjgQ0U8%wC6^L zQL8sUy66jsR;%;AC>ArF@1s-|XZd%2jRY|aK9XD|Eh=O*R;(3sWT-%&M*&y1N1;la z1Fb!L07jwtFh>u-C^R4Dm;o4t0!-1y%6eAB747yn@|-4nsv+*FjPAWTx4H22WI5rurxAXR?2a|D2|uVr~4u0|7&1 z`B&O+M<+(#leF8{zpEcbal8MSaLU6TK1Z~3?Y@j%PG5-?QwWs;il4bsLHw}19*6Y-CkS9j8f)FoLQUmZ=K?*?@9JLK20ZO zfIMfxv%QLQkAjXGT`W*`H&mKg8TSkkEV_#Ad>ENI{T$8mWrnM0q1uLw^rv+?YQi+% zx-}=BESp}(X_9^yB-OHuk^W6@n)lf}3Rd}7n8PBxatar!fwS>ktO<|4z<)%@w^T5$BT;HZ7c&poI2XdBc7B zk#QM>s~i+NbpD_TV(0rK34!|g6F!zO@#B9W@j`?Tmq9M~q<@l7X!HekQ%dFk$ zpEXr%KOy<&Bz6XI`a|NjVi(K9SU6Yr-=-<;&3+Y)*Jo|du3ma-MdQ^R-M$~zHV56R zUA<~Y%>eb9vw~K}>r26Jfv%Obf_cIaeRTVT(dhUyqy6%I>wX1IIQz@_`tnuh+Vde^ zK?t}*RFRpDpX6-kJGQo^H&Wm1iuh`gga=0Bt2N*j$VFnGi`oX=Ec|r;MU)tqCBOg> zmqr7>$-YH$R4KDe79-03=*dMbWwLRoKPj2zOcdp26a>UN-F|{f+KfPEYc?rjyx9*z z9?jA0*CC*(p8YZeG%6YIm|4+U*ZTTHeoe>hzXFt~FRKM8ky+NTfJu0B_Qq!_86QYF zyDH|#%boU>Zsa9{4+XgH1a!2HJI!}N2gTiY**ZN6+}@&mldN&+Vs-H6aKh2)r9;^- z_!wp#yp=|t*{&Eze}6&a=;B_l>#vqZyYKJ%E7fx*^}NEy@OZU+u&&8amloaEQdxF_ z+FLcp-o9{+-4g*U^ep0bYd3hEFN(W7Db(((|Je7*EFoB`pprP7NHd$Qf=CBffMhae zSQzey;HZTADWQeoWQthA?N-7u5+zRyYw_dqF|$peLi1tH8Gum;80oss2Dh*Du|JDg z*L5*34l_;F`9!&yb+$JO?y+-7@_(0w;at z^Gp=Jm8b6h7W*}OuUOY9EAJIcxRXFfTb$-sM#uA3F+s-VuWqB%7qsz?|L1L-Bd=(X zY&^97SL}WjAM}X&lpayP^Yw@mP6bI{$q;#7exUIu5L=G7Li5M_i32bS&4)R607fBT z#A7Z2?^}%~j0g}g125Y%=P%9dHn8d~*ZBLT;O5Bo2UnTRy$dp%&YIT_-k7M|3tk#M z_^47>FWE8l`8->Q5;v*yTN`XgBqbaDVXt@h`>3J^d}p z94F7Kt^V%$cn5)j+>6PbEnAeC*js83@Vv>^DzngC_|U1Kr@$L7$lGB&Q=tm2ggXvT z&S8YBRkSsXi{g1TT&Oe~N)MmrVpI!}VEJz6)yA5kQm5Xl{zYL0J` zV#LjyX@ACDj^!0F9K6b|Qe0_NyTG1k8K0Qad4>VEwNvua_(7xLS+sDbw;pjKK zVcbj24x=6I&Rw*vdmU^!G*BsOVft*XRc1+#KK*$FMpTJO0(15#g^tPfLPm?7Pg3p< z4nV!8?2*(WSEuO)J~lC0i*m}0dm^=M&GbatW%J;qxcgX!udjg$I-qs(AIpMj|KcvM zo3#6vD7kx~Gdj&??1SI)qTNU!&jtM*c+W zj*HWyXdr8Kl0M2lj0S4jyXE^guF48$)>P)uV4CAIPxJRZU+cEHPooCgFB+R%9(8_j zt~L>h?ku_xjmPD*baeUvs@A;*H11C!iG6#Lo=A9lQJpRF#YC-{jo0FmrP)ZIPP|h> zzBYupd=X%Qr`)gZ>Iz`FzC5VAQUO7CWuKtI`YK)=>QFxEqLer^rQ)zUOPdY3WkS!X{Q97rd^mzeZ*eL2zV17Nd=wU_s2J@{>vOh4{!oEtmlkAUq z#K7LFZgdvb4FNh|&)1Ekd|0gR+}?|{J>dm5Ufk1Hrm7+^i>+@gA4*Q zBwEhShG>mB%E1N4HpT?k2H#QU{pV*5AIH6O|oy> zBFzc3vf2dwia?iEdYVg{R3=&9UIXxLN1lZVA_gl586TZOje6 zcPaq(NS5wiJeq)Ee7wGXmJ$(CwI+>3bsn??Y1wbrn8OwmZ0qaWfcO)A#zd_Os|*hq zQtDV8WyLMTk)P(#NT7AKEn|{faVJJYonJ6#ER!eB$5-vM za$Cs07J2-~fX)mj*?RyXi%v`>UN5Ga$sbiRUL8;4c9r+T2$JQZpD9gS~&YiKu&^r?`LC@h3Hm!EbR?H8qw-I zKB!jW7>?4a6o@z(N=b%lnbgYJ=P*vpen1|pV{J6uottN}V6R5_+Sa%WJQf=5wP||)4Q;4{w*Dk z8};-;;EW-K#G#_KR{BtOiF!U%&)x}OG}Lg@NxvDba!G4ucPWi+a#qI+uWaj+%L9Gl-1H)`|IRbQwOGur>#xm+tds%6z-ZT(zbx z$(N1f5QnKcp+ooK{^4lDIQE;f#39%=^Tg7m^Sj%38LPQ#X1e92RMdPy;#ZmDjb)9_ zCq?v61vSf}^nCWdgOP^NicWgBXph6qB@=xaII}B+YmM_!^uu%$$;{HhBYT~Ngj4%x zFy`}iJ}M^ceC)H-yCL)H4xDz1B`=UjVZ30#-bH((5=J4rE-IdzWXL)LI_uqd=OQrV zK&Ol3>(ARCryChauEO*-kr}bY2P^M;(7$M7o7XpG+uZqWQvMt!=__O~RXd@uU$~U9 z@M?@+v`_hi`X1g6fxpyvD0Hvt_5yx!nPv{}E9#JWHkrV)h_fowsq1a&ci5b?nVVe> zaPWwS$=rtTQbm~5mekGEggj;=f${eGTYy>CPI3JP-SHqWK6&JQKpKTnCEn;zwb1hWw?64v_gMvN;Y|k?*>w*K#@zRZfh+Gl{X(TwcvxPTbmr&e)0X;8=JLR&57ebl zr9FXHi0fG$+F$8y^LL5Hy2olflI#OPPGs-6p-v*2u%O07`&0^a+FBm%gV_13__qe6 z>GI;g6Sl7)?J22q)5ahd$~*S+Gpp;1*Q{Azv_+TmLND&`3$f_PzR_j`OxkU?@-9M?VWYT~e3a$U6o zsLm+MZCPAah|?QsicPjq&uV_(ZFI8vaI?$uP7lXOY%c+Jcp4WZGOITDI6}yBIiS{4 z8xs4QvT#h#jMsXqHL<@IRk8(Zht6lf95m^+`&}FVMJU&UN1Xz6#8)pdpx1 zYW%1v*YhdO=4zaZZo9ZyaVbH4eh_f)F+L*IyKV_x2~4`1oaSJhVR_`~ z?GLlkUV4-BK&KET6?qusAgd~Bjo6V zK0l2*L_|(X66`m;f#QN_+~_=mZrC#B$GDwiz8mzNAyP-rcCc#U&WlgTPXj1XM3&yE zY8#!G=jC)>m477*=SxbGotJrSIQcjpN6A-JsF)*%g3gT=N2ZsQZcK$saZ8)a%7xqBy65b+I{>63)12z(x|5Y0a51*zr$?a8MPybC;@`;DHH%U)9 zIaFjP8}A@HRnFG~S!j3bC+x%A)XJWOMy0dIwm=(2uD34$b!ZM13>plpx$Gn}wEP{}IkdtXa0+ zRPIA6z2r*@SsB$mX8K+#UZ79a_{zC>=Qxlb_tc(&TMO5+I(rjn!=Rn?2l5JNxA0cj zkymUq))sv#U6BRD1GU->4?YixSRDw(!ph(kprY?#Kl?%;%DyWU`aZw@BwA1XA2xoU zJ1UqdFOnC|3@W#`=Um>62wuy}vF7fiSFOG66&ILcQ z!#!Ymv@@{n3$~gYqa)s#uk&^DcWCP~>Vsey^*ef*=-C!)Ka-0trY3v}=9_dpH--8O zS77->-UD3Q+-0TL8B3gg-u_DdpQO(8(|i>3$ln&q;T=-Bcv0XpRk#6pPuA48SN9VCM6o3U4g*=L7d4RYTlU8Qq!urfz;85>Gw78%YUf z|M-NIk$Uz)rjPa+1Nd>cK5KeGYfeKicluDerR3{ekcDr`;|=!;Rr(wF?n?(?6so`k z8}OG6z$j!eakK{7aUPoek0`u>o+ZwH%xByan7jS0`UI<)U7_vOa?c+#v_chn2{11ofKkX`lITjtAxZ( zpqx7cA@BzpO&&~ z(5B2UJe*JTm4Mfd�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%0A}R|W383;w2--1Bq&Ni${SC7p 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

~XCh>p1iaR*(N` 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

DlO|3k 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 literal 0 HcmV?d00001 diff --git a/lib/NHibernate20/net/4.0/NHibernate.license.txt b/lib/NHibernate20/net/4.0/NHibernate.license.txt new file mode 100644 index 00000000..8a88d148 --- /dev/null +++ b/lib/NHibernate20/net/4.0/NHibernate.license.txt @@ -0,0 +1,460 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/lib/NHibernate20/net/4.0/NHibernate.xml b/lib/NHibernate20/net/4.0/NHibernate.xml new file mode 100644 index 00000000..47fab8a5 --- /dev/null +++ b/lib/NHibernate20/net/4.0/NHibernate.xml @@ -0,0 +1,36622 @@ + + + + NHibernate + + + +

+ Implementation of BulkOperationCleanupAction. + + + + + An operation which may be scheduled for later execution. + Usually, the operation is a database insert/update/delete, + together with required second-level cache management. + + + + Called before executing any actions + + + Execute this action + + + + Do we need to retain this instance until after the transaction completes? + + + False if this class defines a no-op has after transaction completion. + + + + Called after the transaction completes + + + + What spaces (tables) are affected by this action? + + + + + Create an action that will evict collection and entity regions based on queryspaces (table names). + + + + + Any action relating to insert/update/delete of a collection + + + + + Initializes a new instance of . + + The that is responsible for the persisting the Collection. + The Persistent collection. + The identifier of the Collection. + The that the Action is occurring in. + + + Called before executing any actions + + + Execute this action + + + + Do we need to retain this instance until after the transaction completes? + + + False if this class defines a no-op has after transaction completion. + + + + Called after the transaction completes + + + + Compares the current object with another object of the same type. + + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has the following meanings: Value Meaning Less than zero This object is less than the other parameter.Zero This object is equal to other. Greater than zero This object is greater than other. + + An object to compare with this object. + + + + What spaces (tables) are affected by this action? + + + + Execute this action + + + + Acts as a stand-in for an entity identifier which is supposed to be + generated on insert (like an IDENTITY column) where the insert needed to + be delayed because we were outside a transaction when the persist + occurred (save currently still performs the insert). + + The stand-in is only used within the see cref="NHibernate.Engine.PersistenceContext" + in order to distinguish one instance from another; it is never injected into + the entity instance or returned to the client... + + + + + Base class for actions relating to insert/update/delete of an entity + instance. + + + + + Instantiate an action. + + The session from which this action is coming. + The id of the entity + The entity instance + The entity persister + + + + Entity name accessor + + + + + Entity Id accessor + + + + + Entity Instance + + + + + Session from which this action originated + + + + + The entity persister. + + + + + Manages prepared statements and batching. Class exists to enforce separation of concerns + + + + + Manages s and s + for an . + + +

+ Abstracts ADO.NET batching to maintain the illusion that a single logical batch + exists for the whole session, even when batching is disabled. + Provides transparent IDbCommand caching. +

+

+ This will be useful once ADO.NET gets support for batching. Until that point + no code exists that will do batching, but this will provide a good point to do + error checking and making sure the correct number of rows were affected. +

+
+
+ + + Get an for using in loading / querying. + + The to convert to an . + The of the command. + The SqlTypes of parameters + in . + + An that is ready to be executed. + + + + If not explicitly released by , it will be + released when the session is closed or disconnected. + + + This does NOT add anything to the batch - it only creates the IDbCommand and + does NOT cause the batch to execute... + + + + + + Get a non-batchable an to use for inserting / deleting / updating. + Must be explicitly released by CloseCommand() + + The to convert to an . + The of the command. + The SqlTypes of parameters + in . + + An that is ready to have the parameter values set + and then executed. + + + + + Close a opened using PrepareCommand() + + The to ensure is closed. + The to ensure is closed. + + + + Close a opened using + + The to ensure is closed. + + + + Get a batchable to use for inserting / deleting / updating + (might be called many times before a single call to ExecuteBatch() + + + After setting parameters, call AddToBatch() - do not execute the statement + explicitly. + + The to convert to an . + The of the command. + The SqlTypes of parameters + in . + + + + + Add an insert / delete / update to the current batch (might be called multiple times + for a single PrepareBatchStatement()) + + Determines whether the number of rows affected by query is correct. + + + + Execute the batch + + + + + Close any query statements that were left lying around + + + Use this method instead of Dispose if the + can be used again. + + + + + Gets an by calling ExecuteReader on the . + + The to execute to get the . + The from the . + + The Batcher is responsible for ensuring that all of the Drivers rules for how many open + s it can have are followed. + + + + + Executes the . + + The to execute. + The number of rows affected. + + The Batcher is responsible for ensuring that all of the Drivers rules for how many open + s it can have are followed. + + + + + Must be called when an exception occurs. + + + + + + Cancel the current query statement + + + + + Gets the value indicating whether there are any open resources + managed by this batcher (IDbCommands or IDataReaders). + + + + + Gets or sets the size of the batch, this can change dynamically by + calling the session's SetBatchSize. + + The size of the batch. + + + + Initializes a new instance of the class. + + The owning this batcher. + + + + + Prepares the for execution in the database. + + + This takes care of hooking the up to an + and if one exists. It will call Prepare if the Driver + supports preparing commands. + + + + + Ensures that the Driver's rules for Multiple Open DataReaders are being followed. + + + + + + + + + + + + + + Adds the expected row count into the batch. + + The number of rows expected to be affected by the query. + + If Batching is not supported, then this is when the Command should be executed. If Batching + is supported then it should hold of on executing the batch until explicitly told to. + + + + + A flag to indicate if Dispose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this BatcherImpl is being Disposed of or Finalized. + + If this BatcherImpl is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this BatcherImpl back to life. + + + + + Gets the current that is contained for this Batch + + The current . + + + + Gets or sets the size of the batch, this can change dynamically by + calling the session's SetBatchSize. + + The size of the batch. + + + + Gets the the Batcher was + created in. + + + The the Batcher was + created in. + + + + + Gets the for this batcher. + + + + Implementation of ColumnNameCache. + + + + Manages the database connection and transaction for an . + + + This class corresponds to ConnectionManager and JDBCContext in Hibernate, + combined. + + + + The batcher managed by this ConnectionManager. + + + + Expected row count. Valid only for batchable expectations. + + + + Factory for instances. + + + + Provide the class of according to the configuration + and the capabilities of the driver. + + + By default, .Net doesn't have any batching capabilities, drivers that does have + batching support. + The BatcherFactory trough session-factory configuration section. + This interface was added in NHibernate for backdraw compatibility to have the ability + to specify a default for a specific . + + + + + An implementation of the + interface that does no batching. + + + + + Initializes a new instance of the class. + + The for this batcher. + + + + + Executes the current and compares the row Count + to the expectedRowCount. + + + The expected number of rows affected by the query. A value of less than 0 + indicates that the number of rows to expect is unknown or should not be a factor. + + + Thrown when there is an expected number of rows to be affected and the + actual number of rows is different. + + + + + This Batcher implementation does not support batching so this is a no-op call. The + actual execution of the is run in the AddToBatch + method. + + + + + + A BatcherFactory implementation which constructs Batcher instances + that do not perform batch operations. + + + + + Summary description for OracleDataClientBatchingBatcher. + By Tomer Avissar + + + + + A ResultSet delegate, responsible for locally caching the columnName-to-columnIndex + resolution that has been found to be inefficient in a few vendor's drivers (i.e., Oracle + and Postgres). + + + + + + Summary description for SqlClientBatchingBatcher. + + + + + Expose the batch functionality in ADO.Net 2.0 + Microsoft in its wisdom decided to make my life hard and mark it internal. + Through the use of Reflection and some delegates magic, I opened up the functionality. + + Observable performance benefits are 50%+ when used, so it is really worth it. + + + + + Append a command to the batch + + + + + + This is required because SqlClient.SqlCommandSet will throw if + the command has no parameters. + + + + + + Executes the batch + + + This seems to be returning the total number of affected rows in all queries + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Return the batch command to be executed + + + + + The number of commands batched in this instance + + + + + Any exception that occurs in the O-R persistence layer. + + + Exceptions that occur in the database layer are left as native exceptions. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + CodeDOM-based bytecode provider. + + + + + Retrieve the delegate for this provider + capable of generating reflection optimization components. + + The class to be reflected upon. + All property getters to be accessed via reflection. + All property setters to be accessed via reflection. + The reflection optimization delegate. + + + + The specific factory for this provider capable of + generating run-time proxies for lazy-loading purposes. + + + + + ctor + + The target class + Array of setters + Array of getters + + + + Set up the compiler options + + + + + Add an assembly to the list of ReferencedAssemblies + required to build the class + + + + + + Build the generated code + + Generated code + An instance of the generated class + + + + Check if the property is public + + + If IsPublic==true I can directly set the property + If IsPublic==false I need to use the setter/getter + + + + + + + Generate the required code + + C# code + + + + Represents optimized entity property access. + + + + + Factory that generate object based on IReflectionOptimizer needed to replace the use + of reflection. + + + Used in and + + + + + + Generate the IReflectionOptimizer object + + The target class + Array of setters + Array of getters + if the generation fails + + + + Represents reflection optimization for a particular class. + + + + + Represents optimized entity instantiation. + + + + + Perform instantiation of an instance of the underlying class. + + The new instance. + + + + Class constructor. + + + + + Generates a dynamic method which creates a new instance of + when invoked. + + + + + Generates a dynamic method on the given type. + + + + + Generates a dynamic method on the given type. + + + + + + An interface for factories of proxy factory instances. + + + Currently used to abstract from the tupizer even if... + + + + + Build a proxy factory specifically for handling runtime + lazy loading. + + The lazy-load proxy factory. + + + + Emits an ldc.i4 opcode using the fastest available opcode choice. + + + + + Emits IL to unbox a value type and if null, create a new instance of the value type. + + + This does not work if the value type doesn't have a default constructor - we delegate + that to the ISetter. + + + + + Defines a new delegate type. + + + + + A implementation that returns + , disabling reflection optimization. + + + + + A cached instance of a persistent class + + + + + An item of cached data, timestamped with the time it was cached, when it was locked, + when it was unlocked + + + + + Caches data that is sometimes updated while maintaining the semantics of + "read committed" isolation level. If the database is set to "repeatable + read", this concurrency strategy almost maintains the semantics. + Repeatable read isolation is compromised in the case of concurrent writes. + This is an "asynchronous" concurrency strategy. + + + If this strategy is used in a cluster, the underlying cache implementation + must support distributed hard locks (which are held only momentarily). This + strategy also assumes that the underlying cache implementation does not do + asynchronous replication and that state has been fully replicated as soon + as the lock is released. + for a faster algorithm + + + + + + Implementors manage transactional access to cached data. + + + + Transactions pass in a timestamp indicating transaction start time. + + + When used to cache entities and collections the key is the identifier of the + entity/collection and the value should be set to the + for an entity and the results of + for a collection. + + + + + + Attempt to retrieve an object from the Cache + + The key (id) of the object to get out of the Cache. + A timestamp prior to the transaction start time + The cached object or + + + + + Attempt to cache an object, after loading from the database + + The key (id) of the object to put in the Cache. + The value + A timestamp prior to the transaction start time + the version number of the object we are putting + a Comparer to be used to compare version numbers + indicates that the cache should avoid a put if the item is already cached + if the object was successfully cached + + + + + We are going to attempt to update/delete the keyed object + + The key + + + This method is used by "asynchronous" concurrency strategies. + + + + Called after an item has become stale (before the transaction completes). + + + + This method is used by "synchronous" concurrency strategies. + + + + Called after an item has been updated (before the transaction completes), + instead of calling Evict(). + + + + + + This method is used by "synchronous" concurrency strategies. + + + + Called after an item has been inserted (before the transaction completes), instead of calling Evict(). + + + + + This method is used by "synchronous" concurrency strategies. + + + + Called when we have finished the attempted update/delete (which may or + may not have been successful), after transaction completion. + + The key + The soft lock + + This method is used by "asynchronous" concurrency strategies. + + + + Called after an item has been updated (after the transaction completes), + instead of calling Release(). + + + + + + This method is used by "asynchronous" concurrency strategies. + + + + Called after an item has been inserted (after the transaction completes), instead of calling release(). + + + + + This method is used by "asynchronous" concurrency strategies. + + + + Evict an item from the cache immediately (without regard for transaction isolation). + + + + + + + Evict all items from the cache immediately. + + + + + + Clean up all resources. + + + + + + Gets the cache region name. + + + + + Gets or sets the for this strategy to use. + + The for this strategy to use. + + + + Generate an id for a new lock. Uniqueness per cache instance is very + desirable but not absolutely critical. Must be called from one of the + synchronized methods of this class. + + + + + + Do not return an item whose timestamp is later than the current + transaction timestamp. (Otherwise we might compromise repeatable + read unnecessarily.) Do not return an item which is soft-locked. + Always go straight to the database instead. + + + Note that since reading an item from that cache does not actually + go to the database, it is possible to see a kind of phantom read + due to the underlying row being updated after we have read it + from the cache. This would not be possible in a lock-based + implementation of repeatable read isolation. It is also possible + to overwrite changes made and committed by another transaction + after the current transaction read the item from the cache. This + problem would be caught by the update-time version-checking, if + the data is versioned or timestamped. + + + + + Stop any other transactions reading or writing this item to/from + the cache. Send them straight to the database instead. (The lock + does time out eventually.) This implementation tracks concurrent + locks by transactions which simultaneously attempt to write to an + item. + + + + + Do not add an item to the cache unless the current transaction + timestamp is later than the timestamp at which the item was + invalidated. (Otherwise, a stale item might be re-added if the + database is operating in repeatable read isolation mode.) + + Whether the item was actually put into the cache + + + + decrement a lock and put it back in the cache + + + + + Re-cache the updated state, if and only if there there are + no other concurrent soft locks. Release our lock. + + + + + Is the client's lock commensurate with the item in the cache? + If it is not, we know that the cache expired the original + lock. + + + + + Gets the cache region name. + + + + + Lock the item + + + + + Is this item visible to the timestamped transaction? + + + + + + + Don't overwrite already cached items + + + + + + + + + The timestamp on the cached data + + + + + The actual cached data + + + + + Not a lock! + + + + + Represents any exception from an . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Factory class for creating an . + + + + + No providers implement transactional caching currently, + it was ported from Hibernate just for the sake of completeness. + + + + + Creates an from the parameters. + + The name of the strategy that should use for the class. + The name of the class the strategy is being created for. + if the object being stored in the cache is mutable. + Used to retrieve the global cache region prefix. + Properties the cache provider can use to configure the cache. + An to use for this object in the . + + + + Allows multiple entity classes / collection roles to be + stored in the same cache region. Also allows for composite + keys which do not properly implement equals()/hashCode(). + + + + + Construct a new key for a collection or entity instance. + Note that an entity name should always be the root entity + name, not a subclass entity name. + + The identifier associated with the cached data + The Hibernate type mapping + The entity or collection-role name. + The entiyt mode of the originating session + The session factory for which we are caching + + + + A soft lock which supports concurrent locking, + timestamped with the time it was released + + + This class was named Lock in H2.1 + + + + + Marker interface, denoting a client-visible "soft lock" on a cached item. + + + + + Increment the lock, setting the + new lock timeout + + + + + Decrement the lock, setting the unlock + timestamp if now unlocked + + + + + + Can the timestamped transaction re-cache this + locked item now? + + + + + locks are not returned to the client! + + + + + Was this lock held concurrently by multiple + transactions? + + + + + Yes, this is a lock + + + + + A simple -based cache + + + + + Implementors define a caching algorithm. + + + + + All implementations must be threadsafe. + + + The key is the identifier of the object that is being cached and the + value is a . + + + + + + Get the object from the Cache + + + + + + + + + + + + + + Remove an item from the Cache. + + The Key of the Item in the Cache to remove. + + + + + Clear the Cache + + + + + + Clean up. + + + + + + If this is a clustered cache, lock the item + + The Key of the Item in the Cache to lock. + + + + + If this is a clustered cache, unlock the item + + The Key of the Item in the Cache to unlock. + + + + + Generate a timestamp + + + + + + Get a reasonable "lock timeout" + + + + + Gets the name of the cache region + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cache Provider plugin for NHibernate that is configured by using + cache.provider_class="NHibernate.Cache.HashtableCacheProvider" + + + + + Support for pluggable caches + + + + + Configure the cache + + the name of the cache region + configuration settings + + + + + generate a timestamp + + + + + + Callback to perform any necessary initialization of the underlying cache implementation + during ISessionFactory construction. + + current configuration settings + + + + Callback to perform any necessary cleanup of the underlying cache implementation + during . + + + + + Contract for sources of optimistically lockable data sent to the second level cache. + + + Note currently EntityPersisters are + the only viable source. + + + + + Does this source represent versioned (i.e., and thus optimistically lockable) data? + + True if this source represents versioned data; false otherwise. + + + Get the comparator used to compare two different version values together. + An appropriate comparator. + + + + Defines the contract for caches capable of storing query results. These + caches should only concern themselves with storing the matching result ids. + The transactional semantics are necessarily less strict than the semantics + of an item cache. + + + + + Defines a factory for query cache instances. These factories are responsible for + creating individual QueryCache instances. + + + + + A cache provider placeholder used when caching is disabled. + + + + + Configure the cache + + the name of the cache region + configuration settings + + + + + Generate a timestamp + + + + + Callback to perform any necessary initialization of the underlying cache implementation during SessionFactory + construction. + + current configuration settings. + + + + Callback to perform any necessary cleanup of the underlying cache implementation during SessionFactory.close(). + + + + + Caches data that is sometimes updated without ever locking the cache. + If concurrent access to an item is possible, this concurrency strategy + makes no guarantee that the item returned from the cache is the latest + version available in the database. Configure your cache timeout accordingly! + This is an "asynchronous" concurrency strategy. + for a much stricter algorithm + + + + + Get the most recent version, if available. + + + + + Add an item to the cache + + + + + Do nothing + + + + + Invalidate the item + + + + + Invalidate the item + + + + + Do nothing + + + + + Invalidate the item (again, for safety). + + + + + Invalidate the item (again, for safety). + + + + + Do nothing + + + + + Gets the cache region name. + + + + + Initializes a new instance of the class. + + the session factory for this query key, required to get the identifiers of entities that are used as values. + The query string. + The query parameters. + The filters. + + + + Caches data that is never updated + + + + + Unsupported! + + + + + Unsupported! + + + + + Unsupported! + + + + + Do nothing. + + + + + Do nothing. + + + + + Do nothing. + + + + + Unsupported! + + + + + Gets the cache region name. + + + + + The standard implementation of the Hibernate + interface. This implementation is very good at recognizing stale query + results and re-running queries when it detects this condition, recaching + the new results. + + + + + Standard Hibernate implementation of the IQueryCacheFactory interface. Returns + instances of . + + + + + Generates increasing identifiers (in a single application domain only). + + + Not valid across multiple application domains. Identifiers are not necessarily + strictly increasing, but usually are. + + + + + + + + + + + + + + Tracks the timestamps of the most recent updates to particular tables. It is + important that the cache timeout of the underlying cache implementation be set + to a higher value than the timeouts of any of the query caches. In fact, we + recommend that the the underlying cache not be configured for expiry at all. + Note, in particular, that an LRU cache expiry policy is never appropriate. + + + + + + + + Helper to parse hibernate-configuration XmlNode. + + + + + The XML node name for hibernate configuration section in the App.config/Web.config and + for the hibernate.cfg.xml . + + + + The XML Namespace for the nhibernate-configuration + + + XPath expression for bytecode-provider property. + + + XPath expression for reflection-optimizer property. + + + XPath expression for session-factory whole node. + + + XPath expression for session-factory.property nodes + + + XPath expression for session-factory.mapping nodes + + + XPath expression for session-factory.class-cache nodes + + + XPath expression for session-factory.collection-cache nodes + + + XPath expression for session-factory.event nodes + + + XPath expression for session-factory.listener nodes + + + + Convert a string to . + + The string that represent . + + The converted to . + for invalid values. + + + See for allowed values. + + + + + Convert a string to . + + The string that represent . + + The converted to . + + If the values is invalid. + + See for allowed values. + + + + + Convert a string to . + + The string that represent . + + The converted to . + + If the values is invalid. + + See for allowed values. + + + + + Convert a string to . + + The string that represent . + + The converted to . + + If the values is invalid. + + See for allowed values. + + + + + Values for class-cache and collection-cache strategy. + + + + Xml value: read-only + + + Xml value: read-write + + + Xml value: nonstrict-read-write + + + Xml value: transactional + + + + Values for class-cache include. + + Not implemented in Cache. + + + Xml value: all + + + Xml value: non-lazy + + + + Configuration parsed values for a class-cache XML node. + + + + + Initializes a new instance of the class. + + The class full name. + Cache strategy. + When is null or empty. + + + + Initializes a new instance of the class. + + The class full name. + Cache strategy. + Values for class-cache include. + When is null or empty. + + + + Initializes a new instance of the class. + + The class full name. + Cache strategy. + The cache region. + When is null or empty. + + + + Initializes a new instance of the class. + + The class full name. + Cache strategy. + Values for class-cache include. + The cache region. + When is null or empty. + + + + The class full name. + + + + + The cache region. + + If null or empty the is used during configuration. + + + + Cache strategy. + + + + + class-cache include. + + + Not implemented in Cache. + Default value . + + + + + Configuration parsed values for a collection-cache XML node. + + + + + Initializes a new instance of the class. + + The cache role. + Cache strategy. + When is null or empty. + + + + Initializes a new instance of the class. + + The cache role. + Cache strategy. + The cache region. + When is null or empty. + + + + The role. + + + + + The cache region. + + If null or empty the is used during configuration. + + + + Cache strategy. + + + + + Configuration parsed values for a event XML node. + + + + + Initializes a new instance of the class. + + The listener. + The type. + + + + The default type of listeners. + + + + + Listeners for this event. + + + + + Values for bytecode-provider system property. + + + + Xml value: codedom + + + Xml value: lcg + + + Xml value: null + + + + Configuration parsed values for hibernate-configuration section. + + + + + Initializes a new instance of the class. + + The XML reader to parse. + + The nhibernate-configuration.xsd is applied to the XML. + + When nhibernate-configuration.xsd can't be applied. + + + + Value for bytecode-provider system property. + + Default value . + + + + Value for reflection-optimizer system property. + + Default value true. + + + + The if the session-factory exists in hibernate-configuration; + Otherwise null. + + + + + Configuration parsed values for a listener XML node + + + + + Initializes a new instance of the class. + + The class full name. + When is null or empty. + + + + Initializes a new instance of the class. + + The class full name. + The listener type. + When is null or empty. + + + + The class full name. + + + + + The listener type. + + Default value mean that the value is ignored. + + + + Configuration parsed values for a mapping XML node + + + There are 3 possible combinations of mapping attributes + 1 - resource and assembly: NHibernate will read the mapping resource from the specified assembly + 2 - file only: NHibernate will read the mapping from the file. + 3 - assembly only: NHibernate will find all the resources ending in hbm.xml from the assembly. + + + + + Initializes a new instance of the class. + + Mapped file. + When is null or empty. + + + + Initializes a new instance of the class. + + The assembly name. + The mapped embedded resource. + When is null or empty. + + + + Configuration parsed values for a session-factory XML node. + + + + + Initializes a new instance of the class. + + The session factory name. Null or empty string are allowed. + + + + The session factory name. + + + + + Session factory propeties bag. + + + + + Session factory mapping configuration. + + + + + Session factory class-cache configurations. + + + + + Session factory collection-cache configurations. + + + + + Session factory event configurations. + + + + + Session factory listener configurations. + + + + + Responsible for checking that a resource name matches the default pattern of "*.hbm.xml". This is the + default filter for . + + + + + Responsible for determining whether an embedded resource should be parsed for HBM XML data while + iterating through an . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A base class for HBM schema classes that provides helper methods. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Responsible for converting a of HBM XML into an instance of + . + + + + + Responsible for building a list of objects from a range of acceptable + sources. + + + + + Calls the greedy constructor, passing it new instances of and + . + + + + Adds any embedded resource streams which pass the . + An assembly containing embedded mapping documents. + A custom filter. + + + Adds any embedded resource streams which pass the default filter. + An assembly containing embedded mapping documents. + + + + Responsible for converting a of HBM XML into an instance of + . + + Uses an to deserialize HBM. + + + + Converts a partial class name into a fully qualified one + + + + + + + + Attempts to find a type by its full name. Throws a + using the provided in case of failure. + + name of the class to find + Error message to use for + the in case of failure. Should contain + the {0} formatting placeholder. + A instance. + + Thrown when there is an error loading the class. + + + + + Similar to , but handles short class names + by calling . + + + + + + + + + Called for all collections. parameter + was added in NH to allow for reflection related to generic types. + + + + + Called for arrays and primitive arrays + + + + + Called for Maps + + + + + + + + Called for all collections + + + + + Extracts the names of classes mapped in a given file, + and the names of the classes they extend. + + + + + Returns a collection of containing + information about all classes in this stream. + + A validated representing + a mapping file. + + + + Holds information about mapped classes found in the hbm.xml files. + + + + + Allows the application to specify properties and mapping documents to be used when creating + a . + + + + Usually an application will create a single , build a single instance + of , and then instantiate objects in threads + servicing client requests. + + + The is meant only as an initialization-time object. + is immutable and does not retain any association back to the + + + + + The XML Namespace for the nhibernate-mapping + + + Default name for hibernate configuration file. + + + + Clear the internal state of the object. + + + + + Create a new Configuration object. + + + + + Get the mapping for a particular class + + + + Get the mapping for a particular entity + An entity name. + the entity mapping information + + + + Get the mapping for a particular collection role + + a collection role + + + + + Read mappings from a particular XML file. This method is equivalent + to . + + + + + + + Read mappings from a particular XML file. + + a path to a file + This configuration object. + + + + Read mappings from a . This method is equivalent to + . + + an XML string + The name to use in error reporting. May be . + This configuration object. + + + + Read mappings from a . + + an XML string + This configuration object. + + + + Read mappings from a URL. + + a URL + This configuration object. + + + + Read mappings from a URL. + + a to read the mappings from. + This configuration object. + + + + Read mappings from an . + + A loaded that contains the mappings. + The name of the document, for error reporting purposes. + This configuration object. + + + + Takes the validated XmlDocument and has the Binder do its work of + creating Mapping objects from the Mapping Xml. + + The NamedXmlDocument that contains the validated mapping XML file. + + + + Create a new to add classes and collection + mappings to. + + + + + Read mappings from a . + + The stream containing XML + This Configuration object. + + The passed in through the parameter + is not guaranteed to be cleaned up by this method. It is the caller's responsiblity to + ensure that is properly handled when this method + completes. + + + + + Read mappings from a . + + The stream containing XML + The name of the stream to use in error reporting. May be . + This Configuration object. + + The passed in through the parameter + is not guaranteed to be cleaned up by this method. It is the caller's responsiblity to + ensure that is properly handled when this method + completes. + + + + + Adds the mappings in the resource of the assembly. + + The path to the resource file in the assembly. + The assembly that contains the resource file. + This configuration object. + + + + Read a mapping from an embedded resource, using a convention. + + The type to map. + This configuration object. + + The convention is for class Foo.Bar.Foo to be mapped by + the resource named Foo.Bar.Foo.hbm.xml, embedded in + the class' assembly. If the mappings and classes are defined + in different assemblies or don't follow the naming convention, + this method cannot be used. + + + + + Adds all of the assembly's embedded resources whose names end with .hbm.xml. + + The name of the assembly to load. + This configuration object. + + The assembly must be loadable using . If this + condition is not satisfied, load the assembly manually and call + instead. + + + + + Adds all of the assembly's embedded resources whose names end with .hbm.xml. + + The assembly. + This configuration object. + + + + Read all mapping documents from a directory tree. Assume that any + file named *.hbm.xml is a mapping document. + + a directory + + + + Generate DDL for dropping tables + + + + + + Generate DDL for creating tables + + + + + + This method may be called many times!! + + + + + Instantiate a new , using the properties and mappings in this + configuration. The will be immutable, so changes made to the + configuration after building the will not affect it. + + An instance. + + + + Set the default assembly to use for the mappings added to the configuration + afterwards. + + The default assembly name. + This configuration instance. + + This setting can be overridden for a mapping file by setting default-assembly + attribute of <hibernate-mapping> element. + + + + + Set the default namespace to use for the mappings added to the configuration + afterwards. + + The default namespace. + This configuration instance. + + This setting can be overridden for a mapping file by setting default-namespace + attribute of <hibernate-mapping> element. + + + + + Sets the default interceptor for use by all sessions. + + The default interceptor. + This configuration instance. + + + + Specify a completely new set of properties + + + + + Adds an of configuration properties. The + Key is the name of the Property and the Value is the + value of the Property. + + An of configuration properties. + + This object. + + + + + Sets the value of the configuration property. + + The name of the property. + The value of the property. + + This configuration object. + + + + + Gets the value of the configuration property. + + The name of the property. + The configured value of the property, or if the property was not specified. + + + + Configure NHibernate using the <hibernate-configuration> section + from the application config file, if found, or the file hibernate.cfg.xml if the + <hibernate-configuration> section not include the session-factory configuration. + + A configuration object initialized with the file. + + To configure NHibernate explicitly using hibernate.cfg.xml, appling merge/override + of the application configuration file, use this code: + + configuration.Configure("path/to/hibernate.cfg.xml"); + + + + + + Configure NHibernate using the file specified. + + The location of the XML file to use to configure NHibernate. + A Configuration object initialized with the file. + + Calling Configure(string) will override/merge the values set in app.config or web.config + + + + + Configure NHibernate using a resource contained in an Assembly. + + The that contains the resource. + The name of the manifest resource being requested. + A Configuration object initialized from the manifest resource. + + Calling Configure(Assembly, string) will overwrite the values set in app.config or web.config + + + + + Configure NHibernate using the specified XmlReader. + + The that contains the Xml to configure NHibernate. + A Configuration object initialized with the file. + + Calling Configure(XmlReader) will overwrite the values set in app.config or web.config + + + + + Set up a cache for an entity class + + + + + Set up a cache for a collection role + + + + + Create an object-oriented view of the configuration properties + + A object initialized from the settings properties. + + + + Set a custom naming strategy + + the NamingStrategy to set + + + + + Load and validate the mappings in the against + the nhibernate-mapping-2.2 schema, without adding them to the configuration. + + + This method is made public to be usable from the unit tests. It is not intended + to be called by end users. + + The XmlReader that contains the mapping. + The name of the document, for error reporting purposes. + NamedXmlDocument containing the validated XmlDocument built from the XmlReader. + + + + Adds the Mappings in the after validating it + against the nhibernate-mapping-2.2 schema. + + The XmlReader that contains the mapping. + This Configuration object. + + + + Adds the Mappings in the after validating it + against the nhibernate-mapping-2.2 schema. + + The XmlReader that contains the mapping. + The name of the document to use for error reporting. May be . + This Configuration object. + + + + Set or clear listener for a given . + + The . + The array of AssemblyQualifiedName of each listener for . + + must implements the interface related with . + All listeners of the given will be cleared if the + is null or empty. + + + when an element of have an invalid value or cant be instantiated. + + + + + Set or clear listener for a given . + + The . + The listener for or null to clear. + must implements the interface related with . + + + + + Set or clear listeners for a given . + + The . + The listener for or null to clear. + Listeners of must implements one of the interface of event listenesr. + + + + + Generate DDL for altering tables + + + + + + The class mappings + + + + + The collection mappings + + + + + The table mappings + + + + + The named queries + + + + + Retrieve the user-supplied delegate to handle non-existent entity scenarios. + + + Specify a user-supplied delegate to be used to handle scenarios where an entity could not be + located by specified id. This is mainly intended for EJB3 implementations to be able to + control how proxy initialization errors should be handled... + + + + + Gets or sets the to use. + + The to use. + + + + Gets or sets the that contains the configuration + properties and their values. + + + The that contains the configuration + properties and their values. + + + + + Get the query language imports + + + + + + The named SQL queries + + + + + Naming strategy for tables and columns + + + + + Defines operations common to "compiled" mappings (ie. SessionFactory) and + "uncompiled" mappings (ie Configuration that are used by implementors of IType + + + + + Summary description for ConfigurationSectionHandler. + + + + + The default + + See for a better alternative + + + + A set of rules for determining the physical column and table names given the information in the mapping + document. May be used to implement project-scoped naming standards for database objects. + + + + + Return a table name for an entity class + + the fully-qualified class name + a table name + + + + Return a column name for a property path expression + + a property path + a column name + + + + Alter the table name given in the mapping document + + a table name + a table name + + + + Alter the column name given in the mapping document + + a column name + a column name + + + + Return a table name for a collection + + the fully-qualified name of the owning entity class + a property path + a table name + + + + Return the logical column name used to refer to a column in the metadata + (like index, unique constraints etc) + A full bijection is required between logicalNames and physical ones + logicalName have to be case insersitively unique for a given table + + given column name if any + property name of this column + + + + The singleton instance + + + + + Return the unqualified class name + + + + + + + Return the unqualified property name + + + + + + + Return the argument + + + + + + + Return the argument + + + + + + + Return the unqualified property name + + + + + + + + Provides access to configuration information. + + + NHibernate has two property scopes: + + + Factory-level properties may be passed to the when it is + instantiated. Each instance might have different property values. If no properties are + specified, the factory gets them from Environment + + + System-level properties are shared by all factory instances and are always determined + by the properties + + + In NHibernate, <hibernate-configuration> section in the application configuration file + corresponds to Java system-level properties; <session-factory> + section is the session-factory-level configuration. + + It is possible to use the application configuration file (App.config) together with the NHibernate + configuration file (hibernate.cfg.xml) at the same time. + Properties in hibernate.cfg.xml override/merge properties in application configuration file where same + property is found. For others configuration a merge is applied. + + + + + Used to find the .Net 2.0 named connection string + + + + A default database schema (owner) name to use for unqualified tablenames + + + A default database catalog name to use for unqualified tablenames + + + Should named queries be checked during startup (the default is enabled). + Mainly intended for test environments. + + + Enable statistics collection + + + + Issue warnings to user when any obsolete property names are used. + + + + + + + NHibernate version (informational). + + + + + Gets a copy of the configuration found in <hibernate-configuration> section + of app.config/web.config. + + + This is the replacement for hibernate.properties + + + + + The bytecode provider to use. + + + This property is read from the <nhibernate> section + of the application configuration file by default. Since it is not + always convenient to configure NHibernate through the application + configuration file, it is also possible to set the property value + manually. This should only be done before a configuration object + is created, otherwise the change may not take effect. + + + + + Whether to enable the use of reflection optimizer + + + This property is read from the <nhibernate> section + of the application configuration file by default. Since it is not + always convenient to configure NHibernate through the application + configuration file, it is also possible to set the property value + manually. This should only be done before a configuration object + is created, otherwise the change may not take effect. + + + + + Represents a mapping queued for delayed processing to await + processing of an extends entity upon which it depends. + + + + + An exception that occurs at configuration time, rather than runtime, as a result of + something screwy in the hibernate.cfg.xml. + + + + + An exception that usually occurs at configuration time, rather than runtime, as a result of + something screwy in the O-R mappings + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Initializes a new instance of the class. + + Default message is used. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Summary description for ImprovedNamingStrategy. + + + + + The singleton instance + + + + + Return the unqualified class name, mixed case converted to underscores + + + + + + + Return the full property path with underscore separators, mixed case converted to underscores + + + + + + + Convert mixed case to underscores + + + + + + + Convert mixed case to underscores + + + + + + + Return the full property path prefixed by the unqualified class name, with underscore separators, mixed case converted to underscores + + + + + + + + A collection of mappings from classes and collections to relational database tables. + + Represents a single <hibernate-mapping> element. + + + + Binding table between the logical column name and the name out of the naming strategy + for each table. + According that when the column name is not set, the property name is considered as such + This means that while theoretically possible through the naming strategy contract, it is + forbidden to have 2 real columns having the same logical name + + + + + Binding between logical table name and physical one (ie after the naming strategy has been applied) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds an import to allow for the full class name Namespace.Entity + to be referenced as Entity or some other name in HQL. + + The name of the type that is being renamed. + The new name to use in HQL for the type. + Thrown when the rename already identifies another type. + + + + + + + + + The default namespace for persistent classes + + + + + The default assembly for persistent classes + + + + + + + + + + + Gets or sets a boolean indicating if the Fully Qualified Type name should + automatically have an import added as the class name. + + if the class name should be used as an import. + + Auto-import is used to shorten the string used to refer to types to just their + unqualified name. So if the type MyAssembly.MyNamespace.MyClass, MyAssembly has + auto-import="false" then all use of it in HQL would need to be the fully qualified + version MyAssembly.MyNamespace.MyClass. If auto-import="true", the type could + be referred to in HQL as just MyClass. + + + + + Queues mapping files according to their dependency order. + + + + + Adds the specified document to the queue. + + + + + Gets a that can now be processed (i.e. + that doesn't depend on classes not yet processed). + + + + + + Checks that no unprocessed documents remain in the queue. + + + + + Holds information about mapped classes found in an embedded resource + + + + + Gets the names of all classes outside this resource + needed by the classes in this resource. + + An of + + + + Settings that affect the behavior of NHibernate at runtime. + + + + + Reads configuration properties and configures a instance. + + + + + Provides callbacks from the to the persistent object. Persistent classes may + implement this interface but they are not required to. + + + + , , and are intended to be used + to cascade saves and deletions of dependent objects. This is an alternative to declaring cascaded + operations in the mapping file. + + + may be used to initialize transient properties of the object from its persistent + state. It may not be used to load dependent objects since the interface + may not be invoked from inside this method. + + + A further intended usage of , , and + is to store a reference to the for later use. + + + If , , or return + , the operation is silently vetoed. If a + is thrown, the operation is vetoed and the exception is passed back to the application. + + + Note that is called after an identifier is assigned to the object, except when + identity key generation is used. + + + + + + Called when an entity is saved + + The session + If we should veto the save + + + + Called when an entity is passed to . + + The session + A value indicating whether the operation + should be vetoed or allowed to proceed. + + This method is not called every time the object's state is + persisted during a flush. + + + + + Called when an entity is deleted + + The session + A value indicating whether the operation + should be vetoed or allowed to proceed. + + + + Called after an entity is loaded. + + + It is illegal to access the from inside this method.. + However, the object may keep a reference to the session for later use + + The session + The identifier + + + + Veto the action + + + + + Accept the action + + + + + Implemented by persistent classes with invariants that must be checked before inserting + into or updating the database + + + + + Validate the state of the object before persisting it. If a violation occurs, + throw a . This method must not change the state of the object + by side-effect. + + + + + Thrown from when an invariant was violated. Some applications + might subclass this exception in order to provide more information about the violation + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + An unordered, unkeyed collection that can contain the same element + multiple times. The .NET collections API, has no Bag. + The interface closely resembles bag semantics, + however NHibernate for .NET 1.1 used so + is used to ensure the easiest transition + to generics. + + The type of the element the bag should hold. + The underlying collection used is an + + + + Base class for implementing . + + + + + + Persistent collections are treated as value objects by NHibernate. + ie. they have no independent existence beyond the object holding + a reference to them. Unlike instances of entity classes, they are + automatically deleted when unreferenced and automatically become + persistent when held by a persistent object. Collections can be + passed between different objects (change "roles") and this might + cause their elements to move from one database table to another. + + + NHibernate "wraps" a collection in an instance of + . This mechanism is designed + to support tracking of changes to the collection's persistent + state and lazy instantiation of collection elements. The downside + is that only certain abstract collection types are supported and + any extra semantics are lost. + + + Applications should never use classes in this namespace + directly, unless extending the "framework" here. + + + Changes to structure of the collection are recorded by the + collection calling back to the session. Changes to mutable + elements (ie. composite elements) are discovered by cloning their + state when the collection is initialized and comparing at flush + time. + + + + + + Return the user-visible collection (or array) instance + + + By default, the NHibernate wrapper is an acceptable collection for + the end user code to work with because it is interface compatible. + An NHibernate PersistentList is an IList, an NHibernate PersistentMap is an IDictionary + and those are the types user code is expecting. + + + + + Clears out any Queued Additions. + + + After a Flush() the database is in synch with the in-memory + contents of the Collection. Since everything is in synch remove + any Queued Additions. + + + + + Called just before reading any rows from the + + + + + Called after reading all rows from the + + + This should be overridden by sub collections that use temporary collections + to store values read from the db. + + + + + Disassociate this collection from the given session. + + + true if this was currently associated with the given session + + + + Associate the collection with the given session. + + + false if the collection was already associated with the session + + + + Read the state of the collection from a disassembled cached value. + + + + + + + + Iterate all collection entries, during update of the database + + + An that gives access to all entries + in the collection. + + + + + Reads the row from the . + + + This method should be prepared to handle duplicate elements caused by fetching multiple collections, + or should be updated + to return for the collection type. + + The IDataReader that contains the value of the Identifier + The persister for this Collection. + The descriptor providing result set column names + The owner of this Collection. + The object that was contained in the row. + + + + Get the identifier of the given collection entry + + + + + Get the index of the given collection entry + + + + + Get the value of the given collection entry + + + + + Called before any elements are read into the collection, + allowing appropriate initializations to occur. + + The for this persistent collection. + + + + Does the current state exactly match the snapshot? + + The to compare the elements of the Collection. + + if the wrapped collection is different than the snapshot + of the collection or if one of the elements in the collection is + dirty. + + + + + Disassemble the collection, ready for the cache + + The for this Collection. + The contents of the persistent collection in a cacheable form. + + + + Gets a indicating if the rows for this collection + need to be recreated in the table. + + The for this Collection. + + by default since most collections can determine which rows need to be + individually updated/inserted/deleted. Currently only 's for many-to-many + need to be recreated. + + + + + Return a new snapshot of the current state of the collection + + + + + To be called internally by the session, forcing + immediate initalization. + + + This method is similar to , except that different exceptions are thrown. + + + + + Does an element exist at this entry in the collection? + + + + + Do we need to insert this element? + + + + + Do we need to update this element? + + + + + Get all the elements that need deleting + + + + + Is this the wrapper for the given underlying collection instance? + + The collection to see if this IPersistentCollection is wrapping. + + if the IPersistentCollection is wrappping the collection instance, + otherwise. + + + + + Called before inserting rows, to ensure that any surrogate keys are fully generated + + + + + + Called after inserting a row, to fetch the natively generated id + + + + + + + + Get all "orphaned" elements + + The snapshot of the collection. + The persistent class whose objects + the collection is expected to contain. + + An that contains all of the elements + that have been orphaned. + + + + + Get the snapshot value of the given collection entry + + + + + Called after initializing from cache + + + + + Clear the dirty flag, after flushing changes + to the database. + + + + + Mark the collection as dirty + + + + + The owning entity. + + + Note that the owner is only set during the flush + cycle, and when a new collection wrapper is created + while loading an entity. + + + + + Is the initialized collection empty? + + + + + Gets a indicating if the underlying collection is directly + accessable through code. + + + if we are not guaranteed that the NHibernate collection wrapper + is being used. + + + This is typically whenever a transient object that contains a collection is being + associated with an through or . + NHibernate can't guarantee that it will know about all operations that would cause NHibernate's collections + to call or . + + + + + + + + + + + + + + + + + Is the collection dirty? Note that this is only + reliable during the flush cycle, after the + collection elements are dirty checked against + the snapshot. + + + + + Called by any read-only method of the collection interface + + + + + Called by any writer method of the collection interface + + + + + Queue an addition if the persistent collection supports it + + + if the addition was queued up, if the persistent collection + doesn't support Queued Addition. + + + + + Queue additions + + + + + After reading all existing elements from the database, + add the queued elements to the underlying collection. + + The to add. + The that + is currently loading the collection. + + The default implementation is to throw an + because most collections do not support delayed addition. If the collection + does then override this method. + + + + + Clears out any Queued Additions. + + + After a Flush() the database is in synch with the in-memory + contents of the Collection. Since everything is in synch remove + any Queued Additions. + + + + + Not called by Hibernate, but used by non-NET serialization, eg. SOAP libraries. + + + + + Not called by Hibernate, but used by non-NET serialization, eg. SOAP libraries. + + + + + + Return the user-visible collection (or array) instance + + + By default, the NHibernate wrapper is an acceptable collection for + the end user code to work with because it is interface compatible. + An NHibernate PersistentList is an IList, an NHibernate PersistentMap is an IDictionary + and those are the types user code is expecting. + + + + + Called just before reading any rows from the + + + + + Called after reading all rows from the + + + This should be overridden by sub collections that use temporary collections + to store values read from the db. + + + + + Initialize the collection, if possible, wrapping any exceptions + in a runtime exception + + currently obsolete + if we cannot initialize + + + + Mark the collection as initialized. + + + + + Disassociate this collection from the given session. + + + true if this was currently associated with the given session + + + + Associate the collection with the given session. + + + false if the collection was already associated with the session + + + + Read the state of the collection from a disassembled cached value. + + + + + + + + Iterate all collection entries, during update of the database + + + + + + Reads the row from the . + + The IDataReader that contains the value of the Identifier + The persister for this Collection. + The descriptor providing result set column names + The owner of this Collection. + The object that was contained in the row. + + + + Get the index of the given collection entry + + + + + + + + Called before any elements are read into the collection, + allowing appropriate initializations to occur. + + + + + + Return a new snapshot of the current state + + The for this Collection. + + + + + Disassemble the collection, ready for the cache + + + + + + + Gets a indicating if the rows for this collection + need to be recreated in the table. + + The for this Collection. + + by default since most collections can determine which rows need to be + individually updated/inserted/deleted. Currently only 's for many-to-many + need to be recreated. + + + + + + + + + + + + To be called internally by the session, forcing + immediate initalization. + + + This method is similar to , except that different exceptions are thrown. + + + + + Does an element exist at this entry in the collection? + + + + + + + + Do we need to insert this element? + + + + + + + + + Do we need to update this element? + + + + + + + + + Get all the elements that need deleting + + + + + Is this the wrapper for the given underlying collection instance? + + + + + + + Gets the Snapshot from the current session the collection + is in. + + + + + Called before inserting rows, to ensure that any surrogate keys are fully generated + + + + + + Called after inserting a row, to fetch the natively generated id + + + + + + + + Get all "orphaned" elements + + + + + Is the initialized collection empty? + + + + + Is the collection currently connected to an open session? + + + + + Is this collection in a state that would allow us to "queue" additions? + + + + + Gets a indicating if the underlying collection is directly + accessible through code. + + + if we are not guaranteed that the NHibernate collection wrapper + is being used. + + + This is typically whenever a transient object that contains a collection is being + associated with an through or . + NHibernate can't guarantee that it will know about all operations that would cause NHibernate's collections + to call or . + + + + + + + + + + + + + + + + + + + + Initializes an instance of the + in the . + + The the bag is in. + + + + Initializes an instance of the + that wraps an existing in the . + + The the bag is in. + The to wrap. + + + + Gets a indicating if this Bag needs to be recreated + in the database. + + The for this Collection. + + if this is a one-to-many bag, if this is not + a one-to-many bag. Since a bag is an unordered, unindexed collection + that permits duplicates it is not possible to determine what has changed in a + many-to-many so it is just recreated. + + + + + Counts the number of times that the occurs + in the . + + The element to find in the list. + The to search. + The that can determine equality. + + The number of occurrences of the element in the list. + + + + + Is this the wrapper for the given underlying bag instance? + + The bag that might be wrapped. + + if the is equal to the + wrapped collection by object reference. + + + + + Is the initialized GenericBag empty? + + if the bag has a Count==0, otherwise. + + + + Implements "bag" semantics more efficiently than by adding + a synthetic identifier column to the table. + + + + The identifier is unique for all rows in the table, allowing very efficient + updates and deletes. The value of the identifier is never exposed to the + application. + + + Identifier bags may not be used for a many-to-one association. Furthermore, + there is no reason to use inverse="true". + + + + + + Initializes this Bag from the cached values. + + The CollectionPersister to use to reassemble the PersistentIdentifierBag. + The disassembled PersistentIdentifierBag. + The owner object. + + + + A persistent wrapper for an + + The type of the element the list should hold. + The underlying collection used is a + + + + Initializes an instance of the + in the . + + The the list is in. + + + + Initializes an instance of the + that wraps an existing in the . + + The the bag is in. + The to wrap. + + + + Return a new snapshot of the current state. + + The for this Collection. + + A new that contains Deep Copies of the + Elements stored in this wrapped collection. + + + + + Get all "orphaned" elements. + + The snapshot of the collection. + The type of the entities the collection + is supposed to contain. + + An that contains all of the elements + that have been orphaned. + + + + + A persistent wrapper for a . Underlying + collection is a + + The type of the keys in the IDictionary. + The type of the elements in the IDictionary. + + + + Initializes an instance of the + in the . + + The the map is in. + + + + Initializes an instance of the + that wraps an existing in the + . + + The the bag is in. + The to wrap. + + + + .NET has no design equivalent for Java's Set so we are going to use the + Iesi.Collections library. This class is internal to NHibernate and shouldn't + be used by user code. + + + The code for the Iesi.Collections library was taken from the article +
Add Support for "Set" Collections + to .NET that was written by JasonSmith. + + + + + The that NHibernate is wrapping. + + + + + A temporary list that holds the objects while the set is being + populated from the database. + + + This is necessary to ensure that the object being added to the set doesn't + have its and + methods called during the load process. + + + + + Returns a Hashtable where the Key & the Value are both a Copy of the + same object. + + + + + + + This constructor is NOT meant to be called from user code. + + + + + Creates a new PersistentGenericSet initialized to the values in the Map. + This constructor is NOT meant to be called from user code. + + + Only call this constructor if you consider the map initialized. + + + + + Initializes this PersistentGenericSet from the cached values. + + The CollectionPersister to use to reassemble the set. + The disassembled set. + The owner object. + + + + + + + + + + + + + + + + Set up the temporary List that will be used in the EndRead() + to fully create the set. + + + + + Takes the contents stored in the temporary list created during + that was populated during and writes it to the underlying + set. + + + + + + + + + + + + + + + + + + + + A persistent wrapper for an array. lazy initialization is NOT supported + + + + + The that NHibernate is wrapping. + + + + + A temporary list that holds the objects while the PersistentArrayHolder is being + populated from the database. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Before is called the PersistentArrayHolder needs to setup + a temporary list to hold the objects. + + + + + Takes the contents stored in the temporary list created during + that was populated during and write it to the underlying + array. + + + + + Initializes this array holder from the cached values. + + The CollectionPersister to use to reassemble the Array. + The disassembled Array. + The owner object. + + + + Returns the user-visible portion of the NHibernate PersistentArrayHolder. + + + The array that contains the data, not the NHibernate wrapper. + + + + + + + + + + + + + + + An unordered, unkeyed collection that can contain the same element + multiple times. The .NET collections API has no Bag class. + Most developers seem to use s to represent bag semantics, + so NHibernate follows this practice. + + + + + Counts the number of times that the occurs + in the . + + The element to find in the list. + The to search. + The that can determine equality. + + The number of occurrences of the element in the list. + + + + + Initializes this PersistentBag from the cached values. + + The CollectionPersister to use to reassemble the PersistentBag. + The disassembled PersistentBag. + The owner object. + + + + Gets a indicating if this PersistentBag needs to be recreated + in the database. + + + + if this is a one-to-many Bag, if this is not + a one-to-many Bag. Since a Bag is an unordered, unindexed collection + that permits duplicates it is not possible to determine what has changed in a + many-to-many so it is just recreated. + + + + + Implements "bag" semantics more efficiently than a regular + by adding a synthetic identifier column to the table. + + + + The identifier is unique for all rows in the table, allowing very efficient + updates and deletes. The value of the identifier is never exposed to the + application. + + + PersistentIdentifierBags may not be used for a many-to-one association. Furthermore, + there is no reason to use inverse="true". + + + + + + Initializes this Bag from the cached values. + + The CollectionPersister to use to reassemble the PersistentIdentifierBag. + The disassembled PersistentIdentifierBag. + The owner object. + + + + A persistent wrapper for an + + + The underlying collection used in an . + + + + + Return a new snapshot of the current state. + + The for this Collection. + + A new that contains Deep Copies of the + Elements stored in this wrapped collection. + + + + + Initializes an instance of the + in the . + + The the list is in. + + + + Initializes an instance of the + that wraps an existing in the . + + The the list is in. + The to wrap. + + + + + + + Initializes this PersistentList from the cached values. + + The CollectionPersister to use to reassemble the PersistentList. + The disassembled PersistentList. + The owner object. + + + + + + + + + + + + + + + + A persistent wrapper for a . Underlying collection + is a . + + + + + Construct an uninitialized PersistentMap. + + The ISession the PersistentMap should be a part of. + + + + Construct an initialized PersistentMap based off the values from the existing IDictionary. + + The ISession the PersistentMap should be a part of. + The IDictionary that contains the initial values. + + + + Initializes this PersistentMap from the cached values. + + The CollectionPersister to use to reassemble the PersistentMap. + The disassembled PersistentMap. + The owner object. + + + + .NET has no design equivalent for Java's Set so we are going to use the + Iesi.Collections library. This class is internal to NHibernate and shouldn't + be used by user code. + + + The code for the Iesi.Collections library was taken from the article + Add Support for "Set" Collections + to .NET that was written by JasonSmith. + + + + + The that NHibernate is wrapping. + + + + + A temporary list that holds the objects while the PersistentSet is being + populated from the database. + + + This is necessary to ensure that the object being added to the PersistentSet doesn't + have its' GetHashCode() and Equals() methods called during the load + process. + + + + + Returns a Hashtable where the Key & the Value are both a Copy of the + same object. + + + + + + + This constructor is NOT meant to be called from user code. + + + + + Creates a new PersistentSet initialized to the values in the Map. + This constructor is NOT meant to be called from user code. + + + Only call this constructor if you consider the map initialized. + + + + + Initializes this PersistentSet from the cached values. + + The CollectionPersister to use to reassemble the PersistentSet. + The disassembled PersistentSet. + The owner object. + + + + + + + + + + + + + + + + Set up the temporary List that will be used in the EndRead() + to fully create the set. + + + + + Takes the contents stored in the temporary list created during BeginRead() + that was populated during ReadFrom() and write it to the underlying + PersistentSet. + + + + + + + + + + + + + + + + + + + + The base class for the ConnectionProvider. + + + + + A strategy for obtaining ADO.NET . + + + The IConnectionProvider interface is not intended to be exposed to the application. + Instead it is used internally by NHibernate to obtain . + Implementors should provide a public default constructor. + + + + + Initialize the connection provider from the given properties. + + The connection provider settings + + + + Dispose of a used + + The to clean up. + + + + Get an open . + + An open . + + + + Gets the this ConnectionProvider should use to + communicate with the .NET Data Provider + + + The to communicate with the .NET Data Provider. + + + + + Closes the . + + The to clean up. + + + + Configures the ConnectionProvider with the Driver and the ConnectionString. + + An that contains the settings for this ConnectionProvider. + + Thrown when a could not be found + in the settings parameter or the Driver Class could not be loaded. + + + + + Get the .NET 2.0 named connection string + + + Thrown when a was found + in the settings parameter but could not be found in the app.config + + + + + Configures the driver for the ConnectionProvider. + + An that contains the settings for the Driver. + + Thrown when the could not be + found in the settings parameter or there is a problem with creating + the . + + + + + Get an open . + + An open . + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this ConnectionProvider is being Disposed of or Finalized. + +

+ If this ConnectionProvider is being Finalized (isDisposing==false) then make + sure not to call any methods that could potentially bring this + ConnectionProvider back to life. +

+

+ If any subclasses manage resources that also need to be disposed of this method + should be overridden, but don't forget to call it in the override. +

+
+
+ + + Gets the for the + to connect to the database. + + + The for the + to connect to the database. + + + + + Gets the that can create the object. + + + The that can create the . + + + + + Instanciates a connection provider given configuration properties. + + + + + A ConnectionProvider that uses an IDriver to create connections. + + + + + Initializes a new instance of the class. + + + + + Closes and Disposes of the . + + The to clean up. + + + + Gets a new open through + the . + + + An Open . + + + If there is any problem creating or opening the . + + + + + An implementation of the IConnectionProvider that simply throws an exception when + a connection is requested. + + + This implementation indicates that the user is expected to supply an ADO.NET connection + + + + + Throws an if this method is called + because the user is responsible for closing s. + + The to clean up. + + Thrown when this method is called. User is responsible for closing + s. + + + + + Throws an if this method is called + because the user is responsible for creating s. + + + No value is returned because an is thrown. + + + Thrown when this method is called. User is responsible for creating + s. + + + + + Configures the ConnectionProvider with only the Driver class. + + + + All other settings of the Connection are the responsibility of the User since they configured + NHibernate to use a Connection supplied by the User. + + + + + Provides a current session + for each . + Not recommended for .NET 2.0 web applications. + + + + + Extends the contract defined by + by providing methods to bind and unbind sessions to the current context. + + + The notion of a contextual session is managed by some external entity + (generally some form of interceptor like the HttpModule). + This external manager is responsible for scoping these contextual sessions + appropriately binding/unbinding them here for exposure to the application + through calls. + + + + + Defines the contract for implementations which know how to + scope the notion of a current session. + + + + Implementations should adhere to the following: + + contain a constructor accepting a single argument of type + + should be thread safe + should be fully serializable + + + + Implementors should be aware that they are also fully responsible for + cleanup of any generated current-sessions. + + + Note that there will be exactly one instance of the configured + ICurrentSessionContext implementation per . + + + It is recommended to inherit from the class + whenever possible as it simplifies the implementation and provides + single entry point with session binding support. + + + + + + Retrieve the current session according to the scoping defined + by this implementation. + + The current session. + Typically indicates an issue + locating or creating the current session. + + + + Retrieve the current session according to the scoping defined + by this implementation. + + The current session. + Indicates an issue + locating the current session. + + + + Binds the specified session to the current context. + + + + + Returns whether there is a session bound to the current context. + + + + + Unbinds and returns the current session. + + + + Gets or sets the currently bound session. + + + + Get the dicitonary mapping session factory to its current session. + + + + + Set the map mapping session factory to its current session. + + + + + Gets or sets the currently bound session. + + + + + The key is the session factory and the value is the bound session. + + + + + The key is the session factory and the value is the bound session. + + + + + Provides a current session + for each . + Works only with Web Applications. + + + + + Provides a current session + for each thread using the []. + To avoid if there are two session factories in the same thread. + + + + Gets or sets the currently bound session. + + + + Provides a current session + for each . Works only with web applications. + + + + + Base class for implementations. + + + + + An object-oriented representation of a query criterion that may be used as a constraint + in a query. + + + Built-in criterion types are provided by the Expression factory class. + This interface might be implemented by application classes but, more commonly, application + criterion types would extend AbstractCriterion. + + + + + Render a SqlString fragment for the expression. + + A SqlString that contains a valid Sql fragment. + + + + Return typed values for all parameters in the rendered SQL fragment + + An array of TypedValues for the Expression. + + + + Gets a string representation of the . + + + A String that shows the contents of the . + + + This is not a well formed Sql fragment. It is useful for logging what the + looks like. + + + + + Render a SqlString for the expression. + + A SqlString that contains a valid Sql fragment. + + + + Return typed values for all parameters in the rendered SQL fragment + + An array of TypedValues for the Expression. + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + See here for details: + http://steve.emxsoftware.com/NET/Overloading+the++and++operators + + + + + An Aggregation + + + + + A single-column projection that may be aliased + + + + + Render the SQL Fragment. + + The criteria. + The position. + The criteria query. + The enabled filters. + + + + + Render the SQL Fragment to be used in the Group By Clause. + + The criteria. + The criteria query. + The enabled filters. + + + + + Return types for a particular user-visible alias + + + + + + + + + + + + + + + + + Get the SQL select clause column aliases for a particular user-visible alias + + + + + + + Get the SQL select clause column aliases for a particular user-visible alias + + + + + + + + Gets the typed values for parameters in this projection + + The criteria. + The criteria query. + + + + + Get the user-visible aliases for this projection (ie. the ones that will be passed to the ResultTransformer) + + + + + Does this projection specify grouping attributes? + + + + + Gets the typed values for parameters in this projection + + The criteria. + The criteria query. + + + + + Gets the typed values for parameters in this projection + + The criteria. + The criteria query. + + + + + An that combines two s + with an and between them. + + + + + An that combines two s + with a operator (either "and" or "or") between them. + + + + + Initialize a new instance of the class that + combines two other s. + + The to use in the Left Hand Side. + The to use in the Right Hand Side. + + + + Combines the for the Left Hand Side and the + Right Hand Side of the Expression into one array. + + An array of s. + + + + Converts the LogicalExpression to a . + + A well formed SqlString for the Where clause. + The SqlString will be enclosed by ( and ). + + + + Gets a string representation of the LogicalExpression. + + + The String contains the LeftHandSide.ToString() and the RightHandSide.ToString() + joined by the Op. + + + This is not a well formed Sql fragment. It is useful for logging what Expressions + are being combined. + + + + + Gets the that will be on the Left Hand Side of the Op. + + + + + Gets the that will be on the Right Hand Side of the Op. + + + + + Get the Sql operator to put between the two s. + + + + + Initializes a new instance of the class + that combines two . + + The to use as the left hand side. + The to use as the right hand side. + + + + Get the Sql operator to put between the two s. + + The string "and" + + + + An that represents a "between" constraint. + + + + + Initializes a new instance of the class. + + The _projection. + The _lo. + The _hi. + + + + Initialize a new instance of the class for + the named Property. + + The name of the Property of the Class. + The low value for the BetweenExpression. + The high value for the BetweenExpression. + + + + + + + Casting a value from one type to another, at the database + level + + + + + An that Junctions together multiple + s with an and + + + + + A sequence of logical s combined by some associative + logical operator. + + + + + Adds an to the list of s + to junction together. + + The to add. + + This instance. + + + + + Get the Sql operator to put between multiple s. + + + + + The corresponding to an instance with no added + subcriteria. + + + + + Get the Sql operator to put between multiple s. + + The string " and " + + + + This is useful if we want to send a value to the database + + + + + A Count + + + + The alias that refers to the "root" entity of the criteria query. + + + Each row of results is a from alias to entity instance + + + Each row of results is an instance of the root entity + + + Each row of results is a distinct instance of the root entity + + + This result transformer is selected implicitly by calling + + + Specifies joining to an entity based on an inner join. + + + Specifies joining to an entity based on a full join. + + + Specifies joining to an entity based on a left outer join. + + + + Some applications need to create criteria queries in "detached + mode", where the Hibernate session is not available. This class + may be instantiated anywhere, and then a ICriteria + may be obtained by passing a session to + GetExecutableCriteria(). All methods have the + same semantics and behavior as the corresponding methods of the + ICriteria interface. + + + + + Get an executable instance of Criteria, + to actually run the query. + + + + An that Junctions together multiple + s with an or + + + + + Get the Sql operator to put between multiple s. + + The string " or " + + + + Gets the typed values for parameters in this projection + + The criteria. + The criteria query. + + + + + An that represents an "equal" constraint + between two properties. + + + + + Superclass for an that represents a + constraint between two properties (with SQL binary operators). + + + + + Initializes a new instance of the class. + + The projection. + Name of the RHS property. + + + + Initializes a new instance of the class. + + The LHS projection. + The RHS projection. + + + + Initializes a new instance of the class. + + Name of the LHS property. + Name of the RHS property. + + + + Initializes a new instance of the class. + + Name of the LHS property. + The RHS projection. + + + + + + + Get the Sql operator to use for the property expression. + + + + + Initializes a new instance of the class. + + Name of the LHS property. + The RHS projection. + + + + Initializes a new instance of the class. + + The LHS projection. + The RHS projection. + + + + Initializes a new instance of the class. + + The projection. + Name of the RHS property. + + + + Initializes a new instance of the class + that compares two mapped properties using an "equal" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " = " + + + + Support for Query By Example. + + + + List results = session.CreateCriteria(typeof(Parent)) + .Add( Example.Create(parent).IgnoreCase() ) + .CreateCriteria("child") + .Add( Example.Create( parent.Child ) ) + .List(); + + + + "Examples" may be mixed and matched with "Expressions" in the same + + + + + Set escape character for "like" clause + + + + Set the for this . + + The to determine which properties to include. + This instance. + + This should be used when a custom has + been implemented. Otherwise use the methods + or to set the + to the s built into NHibernate. + + + + + Set the for this + to exclude zero-valued properties. + + + + + Set the for this + to exclude no properties. + + + + + Use the "like" operator for all string-valued properties with + the specified . + + + The to convert the string to the pattern + for the like comparison. + + + + + Use the "like" operator for all string-valued properties. + + + The default is MatchMode.Exact. + + + + + Exclude a particular named property + + The name of the property to exclude. + + + + Create a new instance, which includes all non-null properties + by default + + + A new instance of . + + + + Initialize a new instance of the class for a particular + entity. + + The that the Example is being built from. + The the Example should use. + + + + Determines if the property should be included in the Query. + + The value of the property. + The name of the property. + The of the property. + + if the Property should be included, if + the Property should not be a part of the Query. + + + + + Adds a based on the value + and type parameters to the in the + list parameter. + + The value of the Property. + The of the Property. + The to add the to. + + This method will add objects to the list parameter. + + + + + A strategy for choosing property values for inclusion in the query criteria + + + + + Determine if the Property should be included. + + The value of the property that is being checked for inclusion. + The name of the property that is being checked for inclusion. + The of the property. + + if the Property should be included in the Query, + otherwise. + + + + + Implementation of that includes all + properties regardless of value. + + + + + Implementation of that includes the + properties that are not and do not have an + returned by propertyValue.ToString(). + + + This selector is not present in H2.1. It may be useful if nullable types + are used for some properties. + + + + + This class is semi-deprecated. Use . + + + + + + The namespace may be used by applications as a framework for building + new kinds of . + However, it is intended that most applications will + simply use the built-in criterion types via the static factory methods of this class. + + + + + + + Apply an "equal" constraint to the identifier property + + + ICriterion + + + + Apply an "equal" constraint from the projection to the identifier property + + The projection. + ICriterion + + + + Apply an "equal" constraint to the named property + + The name of the Property in the class. + The value for the Property. + + + + Apply an "equal" constraint to the projection + + The projection. + The value for the Property. + + + + Apply a "like" constraint to the named property + + The name of the Property in the class. + The value for the Property. + A . + + + + Apply a "like" constraint to the project + + The projection. + The value for the Property. + A . + + + + Apply a "like" constraint to the project + + The projection. + The value for the Property. + The match mode. + A . + + + + A case-insensitive "like", similar to Postgres "ilike" operator + + The name of the Property in the class. + The value for the Property. + An . + + + + A case-insensitive "like", similar to Postgres "ilike" operator + + The projection. + The value for the Property. + + An . + + + + + Apply a "greater than" constraint to the named property + + The name of the Property in the class. + The value for the Property. + + + + Apply a "greater than" constraint to the projection + + The projection. + The value for the Property. + + + + Apply a "less than" constraint to the named property + + The name of the Property in the class. + The value for the Property. + + + + Apply a "less than" constraint to the projection + + The projection. + The value for the Property. + + + + Apply a "less than or equal" constraint to the named property + + The name of the Property in the class. + The value for the Property. + + + + Apply a "less than or equal" constraint to the projection + + The projection. + The value for the Property. + + + + Apply a "greater than or equal" constraint to the named property + + The name of the Property in the class. + The value for the Property. + + + + Apply a "greater than or equal" constraint to the projection + + The projection. + The value for the Property. + + + + Apply a "between" constraint to the named property + + The name of the Property in the class. + The low value for the Property. + The high value for the Property. + A . + + + + Apply a "between" constraint to the projection + + The projection. + The low value for the Property. + The high value for the Property. + A . + + + + Apply an "in" constraint to the named property + + The name of the Property in the class. + An array of values. + An . + + + + Apply an "in" constraint to the projection + + The projection. + An array of values. + An . + + + + Apply an "in" constraint to the projection + + The projection. + An ICollection of values. + An . + + + + Apply an "in" constraint to the named property + + The name of the Property in the class. + An ICollection of values. + An . + + + + Apply an "in" constraint to the named property. This is the generic equivalent + of , renamed to avoid ambiguity. + + The name of the Property in the class. + An + of values. + An . + + + + Apply an "in" constraint to the projection. This is the generic equivalent + of , renamed to avoid ambiguity. + + + The projection. + An + of values. + An . + + + + Apply an "is null" constraint to the named property + + The name of the Property in the class. + A . + + + + Apply an "is null" constraint to the projection + + The projection. + A . + + + + Apply an "equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply an "equal" constraint to projection and property + + The projection. + The rhs Property Name + A . + + + + Apply an "equal" constraint to lshProjection and rshProjection + + The LHS projection. + The RSH projection. + A . + + + + Apply an "equal" constraint to the property and rshProjection + + Name of the property. + The RSH projection. + A . + + + + Apply an "not equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply an "not equal" constraint to projection and property + + The projection. + The rhs Property Name + A . + + + + Apply an "not equal" constraint to the projections + + The LHS projection. + The RHS projection. + A . + + + + Apply an "not equal" constraint to the projections + + Name of the property. + The RHS projection. + A . + + + + Apply a "greater than" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "greater than" constraint to two properties + + The projection. + The rhs Property Name + A . + + + + Apply a "greater than" constraint to two properties + + Name of the property. + The projection. + A . + + + + Apply a "greater than" constraint to two properties + + The LHS projection. + The RHS projection. + A . + + + + Apply a "greater than or equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "greater than or equal" constraint to two properties + + The LHS projection. + The RHS projection. + A . + + + + Apply a "greater than or equal" constraint to two properties + + The projection. + The rhs Property Name + A . + + + + Apply a "greater than or equal" constraint to two properties + + The lhs Property Name + The projection. + A . + + + + Apply a "less than" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "less than" constraint to two properties + + The projection. + The rhs Property Name + A . + + + + Apply a "less than" constraint to two properties + + The lhs Property Name + The projection. + A . + + + + Apply a "less than" constraint to two properties + + The LHS projection. + The RHS projection. + A . + + + + Apply a "less than or equal" constraint to two properties + + The lhs Property Name + The rhs Property Name + A . + + + + Apply a "less than or equal" constraint to two properties + + The projection. + The rhs Property Name + A . + + + + Apply a "less than or equal" constraint to two properties + + The lhs Property Name + The projection. + A . + + + + Apply a "less than or equal" constraint to two properties + + The LHS projection. + The RHS projection. + A . + + + + Apply an "is not null" constraint to the named property + + The name of the Property in the class. + A . + + + + Apply an "is not null" constraint to the named property + + The projection. + A . + + + + Apply an "is not empty" constraint to the named property + + The name of the Property in the class. + A . + + + + Apply an "is not empty" constraint to the named property + + The name of the Property in the class. + A . + + + + Return the conjunction of two expressions + + The Expression to use as the Left Hand Side. + The Expression to use as the Right Hand Side. + An . + + + + Return the disjuction of two expressions + + The Expression to use as the Left Hand Side. + The Expression to use as the Right Hand Side. + An . + + + + Return the negation of an expression + + The Expression to negate. + A . + + + + Group expressions together in a single conjunction (A and B and C...) + + + + + Group expressions together in a single disjunction (A or B or C...) + + + + + Apply an "equals" constraint to each property in the key set of a IDictionary + + a dictionary from property names to values + + + + + Apply a constraint expressed in SQL, with the given SQL parameters + + + + + + + + + Apply a constraint expressed in SQL, with the given SQL parameter + + + + + + + + + Apply a constraint expressed in SQL, with the given SQL parameter + + + + + Apply a constraint expressed in SQL + + + + + + + Apply a constraint expressed in SQL + + + + + + + An that represents an "greater than or equal" constraint + between two properties. + + + + + Initializes a new instance of the class. + + Name of the LHS property. + The RHS projection. + + + + Initializes a new instance of the class. + + The LHS projection. + The RHS projection. + + + + Initializes a new instance of the class. + + The projection. + Name of the RHS property. + + + + Initializes a new instance of the class + that compares two mapped properties using an "greater than or equal" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " < " + + + + An that represents an "greater than" constraint + between two properties. + + + + + Initializes a new instance of the class. + + Name of the LHS property. + The RHS projection. + + + + Initializes a new instance of the class. + + The LHS projection. + The RHS projection. + + + + Initializes a new instance of the class. + + The projection. + Name of the RHS property. + + + + Initializes a new instance of the class + that compares two mapped properties using an "greater than" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " < " + + + + An identifier constraint + + + + + An that constrains the property + to a specified list of values. + + + InExpression - should only be used with a Single Value column - no multicolumn properties... + + + + + Initializes a new instance of the class. + + The projection. + The _values. + + + + + + + + + + + + + + An that represents an "like" constraint + that is not case sensitive. + + + + + Initializes a new instance of the class. + + The projection. + The value. + The match mode. + + + + Initializes a new instance of the class. + + The projection. + The _value. + + + + Initialize a new instance of the + class for a named Property and its value. + + The name of the Property in the class. + The value for the Property. + + + + + + + An that represents empty association constraint. + + + + + An that represents non-empty association constraint. + + + + + An that represents an "less than or equal" constraint + between two properties. + + + + + Initializes a new instance of the class. + + Name of the LHS property. + The RHS projection. + + + + Initializes a new instance of the class. + + The LHS projection. + The RHS projection. + + + + Initializes a new instance of the class. + + The projection. + Name of the RHS property. + + + + Initializes a new instance of the class + that compares two mapped properties using an "less than or equal" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " <= " + + + + An that represents an "like" constraint. + + + The case sensitivity depends on the database settings for string + comparisons. Use if the + string comparison should not be case sensitive. + + + + + An that represents an "less than" constraint + between two properties. + + + + + Initializes a new instance of the class. + + Name of the LHS property. + The RHS projection. + + + + Initializes a new instance of the class. + + The LHS projection. + The RHS projection. + + + + Initializes a new instance of the class. + + The projection. + Name of the RHS property. + + + + Initializes a new instance of the class + that compares two mapped properties using an "less than" constraint. + + The name of the Property to use as the left hand side. + The name of the Property to use as the right hand side. + + + + Get the Sql operator to use for the . + + The string " < " + + + + Represents an strategy for matching strings using "like". + + + + + Initialize a new instance of the class. + + The code that identifies the match mode. + The friendly name of the match mode. + + The parameter intCode is used as the key of + to store instances and to ensure only instance of a particular + is created. + + + + + The string representation of the . + + The friendly name used to describe the . + + + + Convert the pattern, by appending/prepending "%" + + The string to convert to the appropriate match pattern. + + A that contains a "%" in the appropriate place + for the Match Strategy. + + + + + Match the entire string to the pattern + + + + + Match the start of the string to the pattern + + + + + Match the end of the string to the pattern + + + + + Match the pattern anywhere in the string + + + + + The that matches the entire string to the pattern. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the Exact MatchMode. + + The string to convert to the appropriate match pattern. + The pattern exactly the same as it was passed in. + + + + The that matches the start of the string to the pattern. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the Start MatchMode. + + The string to convert to the appropriate match pattern. + The pattern with a "%" appended at the end. + + + + The that matches the end of the string to the pattern. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the End MatchMode. + + The string to convert to the appropriate match pattern. + The pattern with a "%" appended at the beginning. + + + + The that exactly matches the string + by appending "%" to the beginning and end. + + + + + Initialize a new instance of the class. + + + + + Converts the string to the Exact MatchMode. + + The string to convert to the appropriate match pattern. + The pattern with a "%" appended at the beginning and the end. + + + + An that negates another . + + + + + Initialize a new instance of the class for an + + + The to negate. + + + + An that represents "not null" constraint. + + + + + Initializes a new instance of the class. + + The projection. + + + + Initialize a new instance of the class for a named + Property that should not be null. + + The name of the Property in the class. + + + + An that represents "null" constraint. + + + + + Initializes a new instance of the class. + + The projection. + + + + Initialize a new instance of the class for a named + Property that should be null. + + The name of the Property in the class. + + + + + + + Represents an order imposed upon a + result set. + + + + + Constructor for Order. + + + + + + + Render the SQL fragment + + + + + Ascending order + + + + + + + Descending order + + + + + + + An that combines two s with an + "or" between them. + + + + + Initialize a new instance of the class for + two s. + + The to use as the left hand side. + The to use as the right hand side. + + + + Get the Sql operator to put between the two s. + + Returns "or" + + + + Gets the typed values for parameters in this projection + + The criteria. + The criteria query. + + + + + The criterion package may be used by applications as a framework for building + new kinds of Projection. However, it is intended that most applications will + simply use the built-in projection types via the static factory methods of this class.
+
+ The factory methods that take an alias allow the projected value to be referred to by + criterion and order instances. +
+
+ + + Create a distinct projection from a projection + + + + + + + Create a new projection list + + + + + + The query row count, ie. count(*) + + The RowCount projection mapped to an . + + + + The query row count, ie. count(*) + + The RowCount projection mapped to an . + + + + A property value count + + + + + + + A distinct property value count + + + + + + + A property maximum value + + + + + + + A property minimum value + + + + + + + A property average value + + + + + + + A property value sum + + + + + + + A SQL projection, a typed select clause fragment + + + + + + + + + A grouping SQL projection, specifying both select clause and group by clause fragments + + + + + + + + + + A grouping property value + + + + + + + A projected property value + + + + + + + A projected identifier value + + + + + + Assign an alias to a projection, by wrapping it + + + + + + + + Casts the projection result to the specified type. + + The type. + The projection. + + + + + Return a constant value + + The obj. + + + + + Calls the named + + Name of the function. + The type. + The projections. + + + + + Calls the specified + + the function. + The type. + The projections. + + + + + Conditionally return the true or false part, dependention on the criterion + + The criterion. + The when true. + The when false. + + + + + A factory for property-specific AbstractCriterion and projection instances + + + + + A property value, or grouped property value + + + + + Get a component attribute of this property + + + + + A comparison between a property value in the outer query and the + result of a subquery + + + + + The base class for an that compares a single Property + to a value. + + + + + Initialize a new instance of the class for a named + Property and its value. + + The name of the Property in the class. + The value for the Property. + The SQL operation. + + + + Converts the SimpleExpression to a . + + A SqlString that contains a valid Sql fragment. + + + + + + + Gets the named Property for the Expression. + + A string that is the name of the Property. + + + + Gets the Value for the Expression. + + An object that is the value for the Expression. + + + + Get the Sql operator to use for the specific + subclass of . + + + + + A comparison between a constant value and the the result of a subquery + + + + + An that creates a SQLExpression. + The string {alias} will be replaced by the alias of the root entity. + + + This allows for database specific Expressions at the cost of needing to + write a correct . + + + + + + + + A SQL fragment. The string {alias} will be replaced by the alias of the root entity. + + + + + Gets the typed values for parameters in this projection + + The criteria. + The criteria query. + + + + + Factory class for AbstractCriterion instances that represent + involving subqueries. + Expression + Projection + AbstractCriterion + + + + + Used to show a better debug display for dictionaries + + + + + + + + ::= + EXTRACT FROM + + ::= + | + + + + Represents HQL functions that can have different representations in different SQL dialects. + E.g. in HQL we can define function concat(?1, ?2) to concatenate two strings + p1 and p2. Target SQL function will be dialect-specific, e.g. (?1 || ?2) for + Oracle, concat(?1, ?2) for MySql, (?1 + ?2) for MS SQL. + Each dialect will define a template as a string (exactly like above) marking function + parameters with '?' followed by parameter's index (first index is 1). + + + + + Provides support routines for the HQL functions as used + in the various SQL Dialects + + Provides an interface for supporting various HQL functions that are + translated to SQL. The Dialect and its sub-classes use this interface to + provide details required for processing of the function. + + + + + The function return type + + The type of the first argument + + + + + + Render the function call as SQL. + + List of arguments + + SQL fragment for the fuction. + + + + Does this function have any arguments? + + + + + If there are no arguments, are parens required? + + + + + Applies the template to passed in arguments. + + args function arguments + generated SQL function call + + + + + ANSI-SQL substring + Documented in: + ANSI X3.135-1992 + American National Standard for Information Systems - Database Language - SQL + + + Syntax: + ::= + SUBSTRING FROM < start position> + [ FOR ] + ]]> + + + + + A SQLFunction implementation that emulates the ANSI SQL trim function + on dialects which do not support the full definition. However, this function + definition does assume the availability of ltrim, rtrim, and replace functions + which it uses in various combinations to emulate the desired ANSI trim() + functionality. + + + + + + + + + + + according to both the ANSI-SQL and EJB3 specs, trim can either take + exactly one parameter or a variable number of parameters between 1 and 4. + from the SQL spec: + ::= + TRIM + + ::= + [ [ ] [ ] FROM ] + + ::= + LEADING + | TRAILING + | BOTH + ]]> + If only trim specification is omitted, BOTH is assumed; + if trim character is omitted, space is assumed + + + + + ANSI-SQL style cast(foo as type) where the type is a NHibernate type + + + + + Emulation of locate() on Sybase + + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + Whether the function accepts an asterisk (*) in place of arguments + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + True if accept asterisk like argument + Return type for the fuction. + + + + Classic AVG sqlfunction that return types as it was done in Hibernate 3.1 + + + + + Classic COUNT sqlfunction that return types as it was done in Hibernate 3.1 + + + + + Classic SUM sqlfunction that return types as it was done in Hibernate 3.1 + + + + + Summary description for NoArgSQLFunction. + + + + + Emulation of coalesce() on Oracle, using multiple nvl() calls + + + + + Emulation of locate() on PostgreSQL + + + + + Provides a standard implementation that supports the majority of the HQL + functions that are translated to SQL. + + + The Dialect and its sub-classes use this class to provide details required + for processing of the associated function. + + + + + Provides a standard implementation that supports the majority of the HQL + functions that are translated to SQL. + + + The Dialect and its sub-classes use this class to provide details required + for processing of the associated function. + + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + + + + Initializes a new instance of the StandardSQLFunction class. + + SQL function name. + Return type for the fuction. + + + + Initializes a new instance of the StandardSafeSQLFunction class. + + SQL function name. + Exact number of arguments expected. + + + + Initializes a new instance of the StandardSafeSQLFunction class. + + SQL function name. + Return type for the fuction. + Exact number of arguments expected. + + + + Support for slightly more general templating than StandardSQLFunction, + with an unlimited number of arguments. + + + + + A strategy abstraction for how locks are obtained in the underlying database. + + + All locking provided implemenations assume the underlying database supports + (and that the connection is in) at least read-committed transaction isolation. + The most glaring exclusion to this is HSQLDB which only offers support for + READ_UNCOMMITTED isolation. + + + + + + Acquire an appropriate type of lock on the underlying data that will + endure until the end of the current transaction. + + The id of the row to be locked + The current version (or null if not versioned) + The object logically being locked (currently not used) + The session from which the lock request originated + + + + A locking strategy where the locks are obtained through select statements. + + + + + For non-read locks, this is achieved through the Dialect's specific + SELECT ... FOR UPDATE syntax. + + + + + A locking strategy where the locks are obtained through update statements. + + This strategy is not valid for read style locks. + + + + Construct a locking strategy based on SQL UPDATE statements. + + The metadata for the entity to be locked. + Indictates the type of lock to be acquired. + + read-locks are not valid for this strategy. + + + + + An SQL dialect for DB2 on iSeries OS/400. + + + The DB2400Dialect defaults the following configuration properties: + + + Property + Default Value + + + connection.driver_class + + + + + + + + An SQL dialect for DB2. + + + The DB2Dialect defaults the following configuration properties: + + + Property + Default Value + + + connection.driver_class + + + + + + + + Represents a dialect of SQL implemented by a particular RDBMS. Subclasses + implement NHibernate compatibility with different systems. + + + Subclasses should provide a public default constructor that Register() + a set of type mappings and default Hibernate properties. + + + + + + + + + + + Characters used for quoting sql identifiers + + + + + + + + + + + The base constructor for Dialect. + + + Every subclass should override this and call Register() with every except + , , , , + , . + + + The Default properties for this Dialect should also be set - such as whether or not to use outer-joins + and what the batch size should be. + + + + + Get an instance of the dialect specified by the current properties. + The specified Dialect + + + + Get de from a property bag (prop name ) + + The property bag. + An instance of . + When is null. + When the property bag don't contains de property . + + + + Get the name of the database type associated with the given + , + + The SqlType + The database type name used by ddl. + + + + Get the name of the database type associated with the given + . + + The SqlType + The datatype length + The datatype precision + The datatype scale + The database type name used by ddl. + + + + Get the name of the database type appropriate for casting operations + (via the CAST() SQL function) for the given typecode. + + The typecode + The database type name + + + + Subclasses register a typename for the given type code and maximum + column length. $l in the type name will be replaced by the column + length (if appropriate) + + The typecode + Maximum length of database type + The database type name + + + + Suclasses register a typename for the given type code. $l in the + typename will be replaced by the column length (if appropriate). + + The typecode + The database type name + + + + Get the name of the Hibernate associated with th given + typecode. + + The typecode + The Hibernate name. + + + + Get the name of the Hibernate associated + with the given typecode with the given storage + specification parameters. + + The typecode + The datatype length + The datatype precision + The datatype scale + The Hibernate name. + + + + Registers a Hibernate name for the given + type code and maximum column length. + + The typecode + The maximum length of database type + The Hibernate name + + + + Registers a Hibernate name for the given + type code. + + The typecode + The Hibernate name + + + + + + + + + + + The syntax used to add a foreign key constraint to a table. + + The FK constraint name. + The names of the columns comprising the FK + The table referenced by the FK + The explicit columns in the referencedTable referenced by this FK. + + if false, constraint should be explicit about which column names the constraint refers to + + the "add FK" fragment + + + + The syntax used to add a primary key constraint to a table + + + + + + Get a strategy instance which knows how to acquire a database-level lock + of the specified mode for this dialect. + + The persister for the entity to be locked. + The type of lock to be acquired. + The appropriate locking strategy. + + + + Given a lock mode, determine the appropriate for update fragment to use. + + The lock mode to apply. + The appropriate for update fragment. + + + + Get the FOR UPDATE OF column_list fragment appropriate for this + dialect given the aliases of the columns to be write locked. + + The columns to be write locked. + The appropriate FOR UPDATE OF column_list clause string. + + + + Get the FOR UPDATE OF column_list NOWAIT fragment appropriate + for this dialect given the aliases of the columns to be write locked. + + The columns to be write locked. + The appropriate FOR UPDATE colunm_list NOWAIT clause string. + + + + Modifies the given SQL by applying the appropriate updates for the specified + lock modes and key columns. + + the SQL string to modify + a map of lock modes indexed by aliased table names. + a map of key columns indexed by aliased table names. + the modified SQL string. + + The behavior here is that of an ANSI SQL SELECT FOR UPDATE. This + method is really intended to allow dialects which do not support + SELECT FOR UPDATE to achieve this in their own fashion. + + + + + Some dialects support an alternative means to SELECT FOR UPDATE, + whereby a "lock hint" is appends to the table name in the from clause. + + The lock mode to apply + The name of the table to which to apply the lock hint. + The table with any required lock hints. + + + + Return SQL needed to drop the named table. May (and should) use + some form of "if exists" clause, and cascade constraints. + + + + + + Generate a temporary table name given the bas table. + The table name from which to base the temp table name. + The generated temp table name. + + + + Does the dialect require that temporary table DDL statements occur in + isolation from other statements? This would be the case if the creation + would cause any current transaction to get committed implicitly. + + see the result matrix above. + + JDBC defines a standard way to query for this information via the + {@link java.sql.DatabaseMetaData#dataDefinitionCausesTransactionCommit()} + method. However, that does not distinguish between temporary table + DDL and other forms of DDL; MySQL, for example, reports DDL causing a + transaction commit via its driver, even though that is not the case for + temporary table DDL. +

+ Possible return values and their meanings:

    +
  • {@link Boolean#TRUE} - Unequivocally, perform the temporary table DDL in isolation.
  • +
  • {@link Boolean#FALSE} - Unequivocally, do not perform the temporary table DDL in isolation.
  • +
  • null - defer to the JDBC driver response in regards to {@link java.sql.DatabaseMetaData#dataDefinitionCausesTransactionCommit()}
  • +
+
+
+ + Do we need to drop the temporary table after use? + + + + Registers an OUT parameter which will be returing a + . How this is accomplished varies greatly + from DB to DB, hence its inclusion (along with {@link #getResultSet}) here. + + The callable statement. + The bind position at which to register the OUT param. + The number of (contiguous) bind positions used. + + + + Given a callable statement previously processed by , + extract the from the OUT parameter. + + The callable statement. + The extracted result set. + SQLException Indicates problems extracting the result set. + + + + The syntax used to drop a foreign key constraint from a table. + + The name of the foreign key constraint to drop. + + The SQL string to drop the foreign key constraint. + + + + + The syntax that is used to check if a constraint does not exists before creating it + + The table. + The name. + + + + + The syntax that is used to close the if for a constraint exists check, used + for dialects that requires begin/end for ifs + + The table. + The name. + + + + + The syntax that is used to check if a constraint exists before dropping it + + The table. + The name. + + + + + The syntax that is used to close the if for a constraint exists check, used + for dialects that requires begin/end for ifs + + The table. + The name. + + + + + The syntax used to drop a primary key constraint from a table. + + The name of the primary key constraint to drop. + + The SQL string to drop the primary key constraint. + + + + + The syntax used to drop an index constraint from a table. + + The name of the index constraint to drop. + + The SQL string to drop the primary key constraint. + + + + + Provided we , then attch the + "select identity" clause to the insert statement. + + The insert command + + The insert command with any necessary identity select clause attached. + Note, if == false then + the insert-string should be returned without modification. + + + + + Get the select command to use to retrieve the last generated IDENTITY + value for a particuar table + + The table into which the insert was done + The PK column. + The type code. + The appropriate select command + + + + The syntax used during DDL to define a column as being an IDENTITY of + a particular type. + + The type code. + The appropriate DDL fragment. + + + + Generate the appropriate select statement to to retreive the next value + of a sequence. + + the name of the sequence + String The "nextval" select string. + This should be a "stand alone" select statement. + + + + Typically dialects which support sequences can drop a sequence + with a single command. + + The name of the sequence + The sequence drop commands + + This is convenience form of + to help facilitate that. + + Dialects which support sequences and can drop a sequence in a + single command need *only* override this method. Dialects + which support sequences but require multiple commands to drop + a sequence should instead override . + + + + + The multiline script used to drop a sequence. + + The name of the sequence + The sequence drop commands + + + + Generate the select expression fragment that will retreive the next + value of a sequence as part of another (typically DML) statement. + + the name of the sequence + The "nextval" fragment. + + This differs from in that this + should return an expression usable within another statement. + + + + + Typically dialects which support sequences can create a sequence + with a single command. + + The name of the sequence + The sequence creation command + + This is convenience form of to help facilitate that. + Dialects which support sequences and can create a sequence in a + single command need *only* override this method. Dialects + which support sequences but require multiple commands to create + a sequence should instead override . + + + + + An optional multi-line form for databases which . + + The name of the sequence + The initial value to apply to 'create sequence' statement + The increment value to apply to 'create sequence' statement + The sequence creation commands + + + + Overloaded form of , additionally + taking the initial value and increment size to be applied to the sequence + definition. + + The name of the sequence + The initial value to apply to 'create sequence' statement + The increment value to apply to 'create sequence' statement + The sequence creation command + + The default definition is to suffix + with the string: " start with {initialValue} increment by {incrementSize}" where + {initialValue} and {incrementSize} are replacement placeholders. Generally + dialects should only need to override this method if different key phrases + are used to apply the allocation information. + + + + + Create a strategy responsible + for handling this dialect's variations in how joins are handled. + + This dialect's strategy. + + + + Create a strategy responsible + for handling this dialect's variations in how CASE statements are + handled. + + This dialect's strategy. + + + The SQL literal value to which this database maps boolean values. + The boolean value + The appropriate SQL literal. + + + + Add a LIMIT clause to the given SQL SELECT + + A Query in the form of a SqlString. + Offset of the first row to be returned by the query (zero-based) + Maximum number of rows to be returned by the query + A new SqlString that contains the LIMIT clause. + + + Apply s limit clause to the query. + The query to which to apply the limit. + Is the query requesting an offset? + the modified SQL + + Typically dialects utilize + limit caluses when they support limits. Thus, when building the + select command we do not actually need to know the limit or the offest + since we will just be using placeholders. +

+ Here we do still pass along whether or not an offset was specified + so that dialects not supporting offsets can generate proper exceptions. + In general, dialects will override one or the other of this method and + . + + + +

+ Checks to see if the name has been quoted. + + The name to check if it is quoted + true if name is already quoted. + + The default implementation is to compare the first character + to Dialect.OpenQuote and the last char to Dialect.CloseQuote + +
+ + + Quotes a name. + + The string that needs to be Quoted. + A QuotedName + +

+ This method assumes that the name is not already Quoted. So if the name passed + in is "name then it will return """name". It escapes the first char + - the " with "" and encloses the escaped string with OpenQuote and CloseQuote. +

+
+
+ + + Quotes a name for being used as a aliasname + + Original implementation calls + Name of the alias + A Quoted name in the format of OpenQuote + aliasName + CloseQuote + +

+ If the aliasName is already enclosed in the OpenQuote and CloseQuote then this + method will return the aliasName that was passed in without going through any + Quoting process. So if aliasName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Quotes a name for being used as a columnname + + Original implementation calls + Name of the column + A Quoted name in the format of OpenQuote + columnName + CloseQuote + +

+ If the columnName is already enclosed in the OpenQuote and CloseQuote then this + method will return the columnName that was passed in without going through any + Quoting process. So if columnName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Quotes a name for being used as a tablename + + Name of the table + A Quoted name in the format of OpenQuote + tableName + CloseQuote + +

+ If the tableName is already enclosed in the OpenQuote and CloseQuote then this + method will return the tableName that was passed in without going through any + Quoting process. So if tableName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Quotes a name for being used as a schemaname + + Name of the schema + A Quoted name in the format of OpenQuote + schemaName + CloseQuote + +

+ If the schemaName is already enclosed in the OpenQuote and CloseQuote then this + method will return the schemaName that was passed in without going through any + Quoting process. So if schemaName is passed in already Quoted make sure that + you have escaped all of the chars according to your DataBase's specifications. +

+
+
+ + + Unquotes and unescapes an already quoted name + + Quoted string + Unquoted string + +

+ This method checks the string quoted to see if it is + quoted. If the string quoted is already enclosed in the OpenQuote + and CloseQuote then those chars are removed. +

+

+ After the OpenQuote and CloseQuote have been cleaned from the string quoted + then any chars in the string quoted that have been escaped by doubling them + up are changed back to a single version. +

+

+ The following quoted values return these results + "quoted" = quoted + "quote""d" = quote"d + quote""d = quote"d +

+

+ If this implementation is not sufficient for your Dialect then it needs to be overridden. + MsSql2000Dialect is an example of where UnQuoting rules are different. +

+
+
+ + + Unquotes an array of Quoted Names. + + strings to Unquote + an array of unquoted strings. + + This use UnQuote(string) for each string in the quoted array so + it should not need to be overridden - only UnQuote(string) needs + to be overridden unless this implementation is not sufficient. + + + + + Given a type code, determine an appropriate + null value to use in a select clause. + + The type code. + The appropriate select clause value fragment. + + One thing to consider here is that certain databases might + require proper casting for the nulls here since the select here + will be part of a UNION/UNION ALL. + + + + + Build an instance of the preferred by this dialect for + converting into NHibernate's ADOException hierarchy. + + The Dialect's preferred . + + The default Dialect implementation simply returns a converter based on X/Open SQLState codes. + + It is strongly recommended that specific Dialect implementations override this + method, since interpretation of a SQL error is much more accurate when based on + the ErrorCode rather than the SQLState. Unfortunately, the ErrorCode is a vendor-specific approach. + + + + + Retrieve a set of default Hibernate properties for this database. + + + + + Aggregate SQL functions as defined in general. This is + a case-insensitive hashtable! + + + The results of this method should be integrated with the + specialization's data. + + + + + The class (which implements ) + which acts as this dialects native generation strategy. + + The native generator class. + + Comes into play whenever the user specifies the native generator. + + + + + The keyword used to insert a generated value into an identity column (or null). + Need if the dialect does not support inserts that specify no column values. + + + + Get the select command used retrieve the names of all sequences. + The select command; or null if sequences are not supported. + + + + Get the command used to select a GUID from the underlying database. + (Optional operation.) + + The appropriate command. + + + Command used to create a table. + + + + Slight variation on . + The command used to create a multiset table. + + + Here, we have the command used to create a table when there is no primary key and + duplicate rows are expected. +

+ Most databases do not care about the distinction; originally added for + Teradata support which does care. + + + +

Command used to create a temporary table. +
+ + + Get any fragments needing to be postfixed to the command for + temporary table creation. + + + + + Should the value returned by + be treated as callable. Typically this indicates that JDBC escape + sytnax is being used... + + + + + Retrieve the command used to retrieve the current timestammp from the database. + + + + + The name of the database-specific SQL function for retrieving the + current timestamp. + + + + + The keyword used to insert a row without specifying any column values + + + + + The name of the SQL function that transforms a string to lowercase + + + + + The syntax used to add a column to a table. Note this is deprecated + + + + + The keyword used to specify a nullable column + + + + + Completely optional cascading drop clause + + + + + Does this dialect support the ALTER TABLE syntax? + + + + + Do we need to drop constraints before dropping tables in the dialect? + + + + + Do we need to qualify index names with the schema name? + + + + + Does this dialect support the UNIQUE column syntax? + + + + Does this dialect support adding Unique constraints via create and alter table ? + + + + Does the dialect support the syntax 'drop table if exists NAME' + + + + + Does the dialect support the syntax 'drop table NAME if exists' + + + + Does this dialect support column-level check constraints? + True if column-level CHECK constraints are supported; false otherwise. + + + Does this dialect support table-level check constraints? + True if table-level CHECK constraints are supported; false otherwise. + + + + Get the string to append to SELECT statements to acquire locks + for this dialect. + + The appropriate FOR UPDATE clause string. + + + Is FOR UPDATE OF syntax supported? + True if the database supports FOR UPDATE OF syntax; false otherwise. + + + + Does this dialect support FOR UPDATE in conjunction with outer joined rows? + + True if outer joined rows can be locked via FOR UPDATE. + + + + Retrieves the FOR UPDATE NOWAIT syntax specific to this dialect + + The appropriate FOR UPDATE NOWAIT clause string. + + + Does this dialect support temporary tables? + + + Does this dialect support a way to retrieve the database's current timestamp value? + + + + Gives the best resolution that the database can use for storing + date/time values, in ticks. + + + + For example, if the database can store values with 100-nanosecond + precision, this property is equal to 1L. If the database can only + store values with 1-millisecond precision, this property is equal + to 10000L (number of ticks in a millisecond). + + + Used in TimestampType. + + + + + + Does this dialect support subselects? + + + + + How we seperate the queries when we use multiply queries. + + + + + Does this dialect support identity column key generation? + + + + + Does the dialect support some form of inserting and selecting + the generated IDENTITY value all in the same statement. + + + + + Whether this dialect has an identity clause added to the data type or a + completely seperate identity data type. + + + + + Get the select command to use to retrieve the last generated IDENTITY value. + + The appropriate select command + + + + The keyword used to specify an identity column, if native key generation is supported + + + + + Does this dialect support sequences? + + + + + Does this dialect support "pooled" sequences. Not aware of a better + name for this. Essentially can we specify the initial and increment values? + + True if such "pooled" sequences are supported; false otherwise. + + + + + + Does this Dialect have some kind of LIMIT syntax? + + False, unless overridden. + + + + Does this Dialect support an offset? + + + + + Can parameters be used for a statement containing a LIMIT? + + + + + Does the LIMIT clause specify arguments in the "reverse" order + limit, offset instead of offset, limit? + + False, unless overridden. + Inheritors should return true if the correct order is limit, offset + + + + Does the LIMIT clause come at the start of the + SELECT statement rather than at the end? + + false, unless overridden + + + + Does the LIMIT clause take a "maximum" row number instead + of a total number of returned rows? + + True if limit is relative from offset; false otherwise. + + This is easiest understood via an example. Consider you have a table + with 20 rows, but you only want to retrieve rows number 11 through 20. + Generally, a limit with offset would say that the offset = 11 and the + limit = 10 (we only want 10 rows at a time); this is specifying the + total number of returned rows. Some dialects require that we instead + specify offset = 11 and limit = 20, where 20 is the "last" row we want + relative to offset (i.e. total number of rows = 20 - 11 = 9) + So essentially, is limit relative from offset? Or is limit absolute? + + + + + The opening quote for a quoted identifier. + + + + + The closing quote for a quoted identifier. + + + + + Does this dialect support UNION ALL, which is generally a faster variant of UNION? + True if UNION ALL is supported; false otherwise. + + + + + Does this dialect support empty IN lists? + For example, is [where XYZ in ()] a supported construct? + + True if empty in lists are supported; false otherwise. + + + + Are string comparisons implicitly case insensitive. + In other words, does [where 'XYZ' = 'xyz'] resolve to true? + + True if comparisons are case insensitive. + + + + Is this dialect known to support what ANSI-SQL terms "row value + constructor" syntax; sometimes called tuple syntax. +

+ Basically, does it support syntax like + "... where (FIRST_NAME, LAST_NAME) = ('Steve', 'Ebersole') ...". +

+ + True if this SQL dialect is known to support "row value + constructor" syntax; false otherwise. + +
+ + + If the dialect supports {@link #supportsRowValueConstructorSyntax() row values}, + does it offer such support in IN lists as well? +

+ For example, "... where (FIRST_NAME, LAST_NAME) IN ( (?, ?), (?, ?) ) ..." +

+ + True if this SQL dialect is known to support "row value + constructor" syntax in the IN list; false otherwise. + +
+ + + Should LOBs (both BLOB and CLOB) be bound using stream operations (i.e. + {@link java.sql.PreparedStatement#setBinaryStream}). + + True if BLOBs and CLOBs should be bound using stream operations. + + + + Does this dialect support parameters within the select clause of + INSERT ... SELECT ... statements? + + True if this is supported; false otherwise. + + + + Does this dialect support asking the result set its positioning + information on forward only cursors. Specifically, in the case of + scrolling fetches, Hibernate needs to use + {@link java.sql.ResultSet#isAfterLast} and + {@link java.sql.ResultSet#isBeforeFirst}. Certain drivers do not + allow access to these methods for forward only cursors. +

+ NOTE : this is highly driver dependent! +

+ + True if methods like {@link java.sql.ResultSet#isAfterLast} and + {@link java.sql.ResultSet#isBeforeFirst} are supported for forward + only cursors; false otherwise. + +
+ + + Does this dialect support definition of cascade delete constraints + which can cause circular chains? + + True if circular cascade delete constraints are supported; false otherwise. + + + + Are subselects supported as the left-hand-side (LHS) of + IN-predicates. + + In other words, is syntax like "... {subquery} IN (1, 2, 3) ..." supported? + + True if subselects can appear as the LHS of an in-predicate;false otherwise. + + + + Expected LOB usage pattern is such that I can perform an insert + via prepared statement with a parameter binding for a LOB value + without crazy casting to JDBC driver implementation-specific classes... +

+ Part of the trickiness here is the fact that this is largely + driver dependent. For example, Oracle (which is notoriously bad with + LOB support in their drivers historically) actually does a pretty good + job with LOB support as of the 10.2.x versions of their drivers... +

+ + True if normal LOB usage patterns can be used with this driver; + false if driver-specific hookiness needs to be applied. + +
+ + Does the dialect support propogating changes to LOB + values back to the database? Talking about mutating the + internal value of the locator as opposed to supplying a new + locator instance... +

+ For BLOBs, the internal value might be changed by: + {@link java.sql.Blob#setBinaryStream}, + {@link java.sql.Blob#setBytes(long, byte[])}, + {@link java.sql.Blob#setBytes(long, byte[], int, int)}, + or {@link java.sql.Blob#truncate(long)}. +

+ For CLOBs, the internal value might be changed by: + {@link java.sql.Clob#setAsciiStream(long)}, + {@link java.sql.Clob#setCharacterStream(long)}, + {@link java.sql.Clob#setString(long, String)}, + {@link java.sql.Clob#setString(long, String, int, int)}, + or {@link java.sql.Clob#truncate(long)}. +

+ NOTE : I do not know the correct answer currently for + databases which (1) are not part of the cruise control process + or (2) do not {@link #supportsExpectedLobUsagePattern}. +

+ True if the changes are propogated back to the database; false otherwise. +
+ + + Is it supported to materialize a LOB locator outside the transaction in + which it was created? +

+ Again, part of the trickiness here is the fact that this is largely + driver dependent. +

+ NOTE: all database I have tested which {@link #supportsExpectedLobUsagePattern()} + also support the ability to materialize a LOB outside the owning transaction... +

+ True if unbounded materialization is supported; false otherwise. +
+ + + Does this dialect support referencing the table being mutated in + a subquery. The "table being mutated" is the table referenced in + an UPDATE or a DELETE query. And so can that table then be + referenced in a subquery of said UPDATE/DELETE query. +

+ For example, would the following two syntaxes be supported:

    +
  • delete from TABLE_A where ID not in ( select ID from TABLE_A )
  • +
  • update TABLE_A set NON_ID = 'something' where ID in ( select ID from TABLE_A)
  • +
+
+ True if this dialect allows references the mutating table from a subquery. +
+ + Does the dialect support an exists statement in the select clause? + True if exists checks are allowed in the select clause; false otherwise. + + + + For the underlying database, is READ_COMMITTED isolation implemented by + forcing readers to wait for write locks to be released? + + True if writers block readers to achieve READ_COMMITTED; false otherwise. + + + + For the underlying database, is REPEATABLE_READ isolation implemented by + forcing writers to wait for read locks to be released? + + True if readers block writers to achieve REPEATABLE_READ; false otherwise. + + + + Does this dialect support using a JDBC bind parameter as an argument + to a function or procedure call? + + True if the database supports accepting bind params as args; false otherwise. + + + + Defines a contract for implementations that can extract the name of a violated + constraint from a SQLException that is the result of that constraint violation. + + + + + Extract the name of the violated constraint from the given SQLException. + + The exception that was the result of the constraint violation. + The extracted constraint name. + + + + + + + + + + + + + + + + Add a LIMIT clause to the given SQL SELECT + + A Query in the form of a SqlString. + Offset of the first row is not zero + A new SqlString that contains the LIMIT clause. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for FirebirdDialect. + + + The FirebirdDialect defaults the following configuration properties: + + + Property + Default Value + + + connection.driver_class + + + + + + + + Add a FIRST x [SKIP] y clause to the given SQL SELECT + + A Query in the form of a SqlString. + Maximum number of rows to be returned by the query + Offset of the first row to process in the result set + A new SqlString that contains the FIRST clause. + + + + + + + A generic SQL dialect which may or may not work on any actual databases + + + + + + + + + + + Summary description for InformixDialect. + + + The InformixDialect defaults the following configuration properties: + + + Property + Default Value + + + connection.driver_class + + + + + + + + + + + + + + The syntax that returns the identity value of the last insert, if native + key generation is supported + + + + + The keyword used to specify an identity column, if native key generation is supported + + + + + Whether this dialect have an Identity clause added to the data type or a + completely seperate identity data type + + + + + An SQL dialect for IngresSQL. + + + The IngresDialect defaults the following configuration properties: + + + Property + Default Value + + + use_outer_join + + + + connection.driver_class + + + + + + + + An SQL dialect compatible with Microsoft SQL Server 2000. + + + The MsSql2000Dialect defaults the following configuration properties: + + + Property + Default Value + + + use_outer_join + + + + connection.driver_class + + + + prepare_sql + + + + + + + + + + + Generates the string to drop the table using SQL Server syntax. + + The name of the table to drop. + The SQL with the inserted. + + + + Add a LIMIT (TOP) clause to the given SQL SELECT + + A Query in the form of a SqlString. + Maximum number of rows to be returned by the query + Offset of the first row to process in the result set + A new SqlString that contains the LIMIT clause. + + + + + + + + + MsSql does not require the OpenQuote to be escaped as long as the first char + is an OpenQuote. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Does this Dialect have some kind of LIMIT syntax? + + True, we'll use the SELECT TOP nn syntax. + + + + Does this Dialect support an offset? + + + + + Can parameters be used for a statement containing a LIMIT? + + + + + Does the LIMIT clause take a "maximum" row number + instead of a total number of returned rows? + + false, unless overridden + + + + Add a LIMIT clause to the given SQL SELECT + + The to base the limit query off of. + Offset of the first row to be returned by the query (zero-based) + Maximum number of rows to be returned by the query + A new with the LIMIT clause applied. + + The LIMIT SQL will look like + + + SELECT TOP last (columns) FROM ( + SELECT ROW_NUMBER() OVER(ORDER BY __hibernate_sort_expr_1__ {sort direction 1} [, __hibernate_sort_expr_2__ {sort direction 2}, ...]) as row, (query.columns) FROM ( + {original select query part}, {sort field 1} as __hibernate_sort_expr_1__ [, {sort field 2} as __hibernate_sort_expr_2__, ...] + {remainder of original query minus the order by clause} + ) query + ) page WHERE page.row > offset + + + + Note that we need to add explicitly specify the columns, because we need to be able to use them + in a paged subselect. NH-1155 + + + + + Sql Server 2005 supports a query statement that provides LIMIT + functionality. + + true + + + + Sql Server 2005 supports a query statement that provides LIMIT + functionality with an offset. + + true + + + + Sql Server 2005 supports a query statement that provides LIMIT + functionality with an offset. + + false + + + + This specialized string tokenizier will break a string to tokens, taking + into account single quotes, parenthesis and commas and [ ] + Notice that we aren't differenciating between [ ) and ( ] on purpose, it would complicate + the code and it is not legal at any rate. + + + + + An SQL dialect compatible with Microsoft SQL Server 7. + + + There have been no test run with this because the NHibernate team does not + have a machine with Sql 7 installed on it. But there have been users using + Ms Sql 7 with NHibernate. As issues with Ms Sql 7 and NHibernate become known + this Dialect will be updated. + + + + + Uses @@identity to get the Id value. + + + There is a well known problem with @@identity and triggers that insert into + rows into other tables that also use an identity column. The only way I know + of to get around this problem is to upgrade your database server to Ms Sql 2000. + + + + + A dialect for SQL Server Everywhere (SQL Server CE). + + + + + A SQL dialect for MySQL + + + The MySQLDialect defaults the following configuration properties: + + + Property + Default Value + + + use_outer_join + + + + connection.driver_class + + + + + + + + + + + + + + + + + + + Create the SQL string to drop a foreign key constraint. + + The name of the foreign key to drop. + The SQL string to drop the foreign key constraint. + + + + Create the SQL string to drop a primary key constraint. + + The name of the primary key to drop. + The SQL string to drop the primary key constraint. + + + + Create the SQL string to drop an index. + + The name of the index to drop. + The SQL string to drop the index constraint. + + + + + + + + + + + + + + + + + + + + + + + + + + + + It's a immature version, it just work. + An SQL dialect for Oracle 9 + + + The Oracle9Dialect defaults the following configuration properties: + + + Property + Default Value + + + use_outer_join + + + + connection.driver_class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SQL dialect for Oracle, compatible with Oracle 8. + + + + + + + + + + + + + + An SQL dialect for PostgreSQL 8.1 and above. + + + + PostgreSQL 8.1 supports FOR UPDATE ... NOWAIT syntax. + + + PostgreSQL supports Identity column using the "SERIAL" type. + Serial type is a "virtual" type that will automatically: + + + Create a sequence named tablename_colname_seq. + Set the default value of this column to the next value of the + sequence. (using function nextval('tablename_colname_seq')) + Add a "NOT NULL" constraint to this column. + Set the sequence as "owned by" the table. + + + To insert the next value of the sequence into the serial column, + exclude the column from the list of columns + in the INSERT statement or use the DEFAULT key word. + + + If the table or the column is dropped, the sequence is dropped too. + + + + + + + An SQL dialect for PostgreSQL. + + + The PostgreSQLDialect defaults the following configuration properties: + + + Property + Default Value + + + use_outer_join + + + + connection.driver_class + + + + + + + + + + + + + + Offset of the first row to process in the result set is non-zero + + + + PostgreSQL requires to cast NULL values to correctly handle UNION/UNION ALL + + See + PostgreSQL BUG #1847: Error in some kind of UNION query. + + The type code. + null casted as : "null::sqltypename" + + + + + + + + + PostgreSQL supports UNION ALL clause + + Reference: + PostgreSQL 8.0 UNION Clause documentation + + + + + + PostgreSQL supports serial and serial4 type for 4 bytes integer auto increment column. + bigserial or serial8 can be used for 8 bytes integer auto increment column. + + bigserial if equal Int64, + serial otherwise + + + + PostgreSQL supports Identity column using the "SERIAL" type. + + + + + PostgreSQL doesn't have type in identity column. + + + To create an identity column it uses the SQL syntax + CREATE TABLE tablename (colname SERIAL); or + CREATE TABLE tablename (colname BIGSERIAL); + + + + + The sql syntax to insert a row without specifying any column in PostgreSQL is + INSERT INTO table DEFAULT VALUES; + + + + + PostgreSQL 8.1 and above defined the fuction lastval() that returns the + value of the last sequence that nextval() was used on in the current session. + Call lastval() if nextval() has not yet been called in the current + session throw an exception. + + + + + An SQL dialect for PostgreSQL 8.2 and above. + + + PostgreSQL 8.2 supports DROP TABLE IF EXISTS tablename + and DROP SEQUENCE IF EXISTS sequencename syntax. + See for more information. + + + + + A SQL dialect for SQLite. + + +

+ Author: Ioan Bizau +

+
+
+ + + + + + + + Add a LIMIT N clause to the given SQL SELECT + + A Query in the form of a SqlString. + Maximum number of rows to be returned by the query + Offset of the first row to process in the result set + A new SqlString that contains the LIMIT clause. + + + + This is a subclass of SybaseDialect for sybase 11 databases (specifically tested against 11.9.2). 11.9.2 does not support ANSI JOINs + therefore we have to provide a special join fragment for left/right joins (*= and =* respectively). + + + + + An SQL dialect compatible with Sybase. + + +

+ This dialect probably will not work with schema-export. If anyone out there + can fill in the ctor with DbTypes to Strings that would be helpful. +

+ The SybaseDialect defaults the following configuration properties: + + + Property + Default Value + + + use_outer_join + + + + connection.driver_class + + + + prepare_sql + + + +
+
+ + + + + + Sybase does not support quoted aliases, this function thus returns + aliasName as is. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This class is basically a port of the hibernate 3.2 Sybase 11 join fragment. It uses concepts from that join fragment and the Oracle join fragment in NHibernate + + + + + Represents a SQL JOIN + + + + + An SQL dialect for Sybase Adaptive Server Anywhere 9.0/10.0 + + +

+ This dialect probably will not work with schema-export. If anyone out there + can fill in the ctor with DbTypes to Strings that would be helpful. +

+ The SybaseAnywhereDialect defaults the following configuration properties: + + + Property + Default Value + + + use_outer_join + + + + connection.driver_class + + + + prepare_sql + + + +
+
+ + + + + + + + + + + + ASA does not require to drop constraint before dropping tables, and DROP statement + syntax used by Hibernate to drop constraint is not compatible with ASA, so disable it. + Comments matchs SybaseAnywhereDialect from Hibernate-3.1 src + + + + + This class maps a DbType to names. + + + Associations may be marked with a capacity. Calling the Get() + method with a type and actual size n will return the associated + name with smallest capacity >= n, if available and an unmarked + default type otherwise. + Eg, setting + + Names.Put(DbType, "TEXT" ); + Names.Put(DbType, 255, "VARCHAR($l)" ); + Names.Put(DbType, 65534, "LONGVARCHAR($l)" ); + + will give you back the following: + + Names.Get(DbType) // --> "TEXT" (default) + Names.Get(DbType,100) // --> "VARCHAR(100)" (100 is in [0:255]) + Names.Get(DbType,1000) // --> "LONGVARCHAR(1000)" (100 is in [256:65534]) + Names.Get(DbType,100000) // --> "TEXT" (default) + + On the other hand, simply putting + + Names.Put(DbType, "VARCHAR($l)" ); + + would result in + + Names.Get(DbType) // --> "VARCHAR($l)" (will cause trouble) + Names.Get(DbType,100) // --> "VARCHAR(100)" + Names.Get(DbType,1000) // --> "VARCHAR(1000)" + Names.Get(DbType,10000) // --> "VARCHAR(10000)" + + + + + + Get default type name for specified type + + the type key + the default type name associated with the specified key + + + + Get the type name specified type and size + + the type key + the SQL length + the SQL scale + the SQL precision + + The associated name with smallest capacity >= size if available and the + default type name otherwise + + + + + Set a type name for specified type key and capacity + + the type key + the (maximum) type size/length + The associated name + + + + + + + + + + + The ASAClientDriver Driver provides a database driver for Adaptive Server Anywhere 10.0. + + + + + Base class for the implementation of IDriver + + + + + A strategy for describing how NHibernate should interact with the different .NET Data + Providers. + + + + The IDriver interface is not intended to be exposed to the application. + Instead it is used internally by NHibernate to obtain connection objects, command objects, and + to generate and prepare IDbCommands. Implementors should provide a + public default constructor. + + + This is the interface to implement, or you can inherit from + if you have an ADO.NET data provider that NHibernate does not have built in support for. + To use the driver, NHibernate property connection.driver_class should be + set to the assembly-qualified name of the driver class. + + + key="connection.driver_class" + value="FullyQualifiedClassName, AssemblyName" + + + + + + Configure the driver using . + + + + + Creates an uninitialized IDbConnection object for the specific Driver + + + + + Generates an IDbCommand from the SqlString according to the requirements of the DataProvider. + + The of the command to generate. + The SqlString that contains the SQL. + The types of the parameters to generate for the command. + An IDbCommand with the CommandText and Parameters fully set. + + + + Prepare the by calling . + May be a no-op if the driver does not support preparing commands, or for any other reason. + + + + + + Does this Driver support having more than 1 open IDataReader with + the same IDbConnection. + + + + A value of indicates that an exception would be thrown if NHibernate + attempted to have 2 IDataReaders open using the same IDbConnection. NHibernate + (since this version is a close to straight port of Hibernate) relies on the + ability to recursively open 2 IDataReaders. If the Driver does not support it + then NHibernate will read the values from the IDataReader into an . + + + A value of will result in greater performance because an IDataReader can be used + instead of the . So if the Driver supports it then make sure + it is set to . + + + + + + Can we issue several select queries in a single query, and get + several result sets back? + + + + + Change the parameterName into the correct format IDbCommand.CommandText + for the ConnectionProvider + + The unformatted name of the parameter + A parameter formatted for an IDbCommand.CommandText + + + + Changes the parameterName into the correct format for an IDbParameter + for the Driver. + + + For SqlServerConnectionProvider it will change id to @id + + The unformatted name of the parameter + A parameter formatted for an IDbParameter. + + + + Generates an IDbDataParameter for the IDbCommand. It does not add the IDbDataParameter to the IDbCommand's + Parameter collection. + + The IDbCommand to use to create the IDbDataParameter. + The name to set for IDbDataParameter.Name + The SqlType to set for IDbDataParameter. + An IDbDataParameter ready to be added to an IDbCommand. + + + + Does this Driver require the use of a Named Prefix in the SQL statement. + + + For example, SqlClient requires select * from simple where simple_id = @simple_id + If this is false, like with the OleDb provider, then it is assumed that + the ? can be a placeholder for the parameter in the SQL statement. + + + + + Does this Driver require the use of the Named Prefix when trying + to reference the Parameter in the Command's Parameter collection. + + + This is really only useful when the UseNamedPrefixInSql == true. When this is true the + code will look like: + IDbParameter param = cmd.Parameters["@paramName"] + if this is false the code will be + IDbParameter param = cmd.Parameters["paramName"]. + + + + + The Named Prefix for parameters. + + + Sql Server uses "@" and Oracle uses ":". + + + + + Does this Driver support IDbCommand.Prepare(). + + + + A value of indicates that an exception would be thrown or the + company that produces the Driver we are wrapping does not recommend using + IDbCommand.Prepare(). + + + A value of indicates that calling IDbCommand.Prepare() will function + fine on this Driver. + + + + + + Initializes a new instance of with + type names that are loaded from the specified assembly. + + Assembly to load the types from. + Connection type name. + Command type name. + + + + Initializes a new instance of the class. + + + Thrown when the iAnywhere.Data.SQLAnywhere assembly is not and can not be loaded. + + + + + iAnywhere.Data.SQLAnywhere uses named parameters in the sql. + + - Sybase uses String.Empty in the sql. + + + + iAnywhere.Data.SQLAnywhere use the string.Empty to locate parameters in sql. + + + + + The ASAClientDriver Driver provides a database driver for Adaptive Server Anywhere 9.0. + + + + + Initializes a new instance of the class. + + + Thrown when the ASA.Data.AsaClient assembly is not and can not be loaded. + + + + + iAnywhere.Data.AsaClient uses named parameters in the sql. + + - Sybase uses String.Empty in the sql. + + + + iAnywhere.Data.AsaClient use the string.Empty to locate parameters in sql. + + + + + A NHibernate Driver for using the IBM.Data.DB2.iSeries DataProvider. + + + + + Initializes a new instance of the class. + + + Thrown when the IBM.Data.DB2.iSeries assembly can not be loaded. + + + + + A NHibernate Driver for using the IBM.Data.DB2 DataProvider. + + + + + Initializes a new instance of the class. + + + Thrown when the IBM.Data.DB2 assembly can not be loaded. + + + + + A NHibernate Driver for using the Firebird data provider located in + FirebirdSql.Data.FirebirdClient assembly. + + + + + Initializes a new instance of the class. + + + Thrown when the FirebirdSql.Data.Firebird assembly can not be loaded. + + + + + A NHibernate Driver for using the FirebirdSql.Data.Firebird DataProvider. + + + + + Initializes a new instance of the class. + + + Thrown when the FirebirdSql.Data.Firebird assembly can not be loaded. + + + + + A NHibernate Driver for using the Ingres DataProvider + + + + + + + + + + + + + + + + + + + Provides a database driver for MySQL. + + + + In order to use this driver you must have the assembly MySql.Data.dll available for + NHibernate to load, including its dependencies (ICSharpCode.SharpZipLib.dll is required by + the assembly MySql.Data.dll as of the time of this writing). + + + Please check the product's website + for any updates and/or documentation regarding MySQL. + + + + + + Initializes a new instance of the class. + + + Thrown when the MySql.Data assembly can not be loaded. + + + + + MySql.Data uses named parameters in the sql. + + - MySql uses ? in the sql. + + + + + + + MySql.Data use the ? to locate parameters in sql. + + ? is used to locate parameters in sql. + + + + The MySql.Data driver does NOT support more than 1 open IDataReader + with only 1 IDbConnection. + + - it is not supported. + + + + MySql.Data does not support preparing of commands. + + - it is not supported. + + With the Gamma MySql.Data provider it is throwing an exception with the + message "Expected End of data packet" when a select command is prepared. + + + + + Some Data Providers (ie - SqlClient) do not support Multiple Active Result Sets (MARS). + NHibernate relies on being able to create MARS to read Components and entities inside + of Collections. + + + This is a completely off-line DataReader - the underlying IDataReader that was used to create + this has been closed and no connections to the Db exists. + + + + + Creates a NDataReader from a + + The to get the records from the Database. + if we are loading the in the middle of reading it. + + NHibernate attempts to not have to read the contents of an into memory until it absolutely + has to. What that means is that it might have processed some records from the and will + pick up the midstream so that the underlying can be closed + so a new one can be opened. + + + + + Sets the values that can be cached back to null and sets the + index of the cached column to -1 + + + + + + + + + + + + + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + There are not any unmanaged resources or any disposable managed + resources that this class is holding onto. It is in here + to comply with the interface. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stores a Result from a DataReader in memory. + + + + + Initializes a new instance of the NResult class. + + The IDataReader to populate the Result with. + + if the is already positioned on the record + to start reading from. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An implementation of that will work with either an + returned by Execute or with an + whose contents have been read into a . + + + + This allows NHibernate to use the underlying for as long as + possible without the need to read everything into the . + + + The consumer of the returned from does + not need to know the underlying reader and can use it the same even if it switches from an + to in the middle of its use. + + + + + + Initializes a new instance of the class. + + The underlying IDataReader to use. + + + + Initializes a new instance of the NHybridDataReader class. + + The underlying IDataReader to use. + if the contents of the IDataReader should be read into memory right away. + + + + Reads all of the contents into memory because another + needs to be opened. + + + This will result in a no op if the reader is closed or is already in memory. + + + + + + + + + + + + + + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this NHybridDataReader is being Disposed of or Finalized. + + If this NHybridDataReader is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this NHybridDataReader back to life. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets if the object is in the middle of reading a Result. + + if NextResult and Read have been called on the . + + + + + + + + + + + + + + + + + + + + + + The PostgreSQL data provider provides a database driver for PostgreSQL. +

+ Author: Oliver Weichhold +

+
+ +

+ In order to use this Driver you must have the Npgsql.dll Assembly available for + NHibernate to load it. +

+

+ Please check the products website + http://www.postgresql.org/ + for any updates and or documentation. +

+

+ The homepage for the .NET DataProvider is: + http://pgfoundry.org/projects/npgsql. +

+
+
+ + + Initializes a new instance of the class. + + + Thrown when the Npgsql assembly can not be loaded. + + + + + A NHibernate Driver for using the Odbc DataProvider + + + Always look for a native .NET DataProvider before using the Odbc DataProvider. + + + + + A NHibernate Driver for using the OleDb DataProvider + + + Always look for a native .NET DataProvider before using the OleDb DataProvider. + + + + + OLE DB provider does not support multiple open data readers + + + + + A NHibernate Driver for using the Oracle DataProvider. + + + + + A NHibernate Driver for using the Oracle.DataAccess DataProvider + + + Code was contributed by James Mills + on the NHibernate forums in this + post. + + + + + Initializes a new instance of . + + + Thrown when the Oracle.DataAccess assembly can not be loaded. + + + + + This adds logic to ensure that a DbType.Boolean parameter is not created since + ODP.NET doesn't support it. + + + + + + + + + + + + + + A NHibernate Driver for using the SqlClient DataProvider + + + + + Creates an uninitialized object for + the SqlClientDriver. + + An unitialized object. + + + + Creates an uninitialized object for + the SqlClientDriver. + + An unitialized object. + + + + MsSql requires the use of a Named Prefix in the SQL statement. + + + because MsSql uses "@". + + + + + MsSql requires the use of a Named Prefix in the Parameter. + + + because MsSql uses "@". + + + + + The Named Prefix for parameters. + + + Sql Server uses "@". + + + + + The SqlClient driver does NOT support more than 1 open IDataReader + with only 1 IDbConnection. + + - it is not supported. + + MS SQL Server 2000 (and 7) throws an exception when multiple IDataReaders are + attempted to be opened. When SQL Server 2005 comes out a new driver will be + created for it because SQL Server 2005 is supposed to support it. + + + + + NHibernate driver for the System.Data.SQLite data provider for .NET 2.0. + + +

+ In order to use this driver you must have the System.Data.SQLite.dll assembly available + for NHibernate to load. This assembly includes the SQLite.dll or SQLite3.dll libraries. +

+

+ You can get the System.Data.SQLite.dll assembly from http://sourceforge.net/projects/sqlite-dotnet2. +

+

+ Please check http://www.sqlite.org/ for more information regarding SQLite. +

+
+
+ + + Initializes a new instance of . + + + Thrown when the SQLite.NET assembly can not be loaded. + + + + + NHibernate driver for the SQLite.NET data provider. +

+ Author: Ioan Bizau +

+
+ +

+ In order to use this Driver you must have the SQLite.NET.dll Assembly available for NHibernate to load it. + You must also have the SQLite.dll and SQLite3.dll libraries. +

+

+ Please check http://www.sqlite.org/ for more information regarding SQLite. +

+
+
+ + + Initializes a new instance of . + + + Thrown when the SQLite.NET assembly can not be loaded. + + + + + A NHibernate driver for Microsoft SQL Server CE data provider + + + + + Initializes a new instance of the class. + + + + + MsSql requires the use of a Named Prefix in the SQL statement. + + + because MsSql uses "@". + + + + + MsSql requires the use of a Named Prefix in the Parameter. + + + because MsSql uses "@". + + + + + The Named Prefix for parameters. + + + Sql Server uses "@". + + + + + The SqlClient driver does NOT support more than 1 open IDataReader + with only 1 IDbConnection. + + - it is not supported. + + Ms Sql 2000 (and 7) throws an Exception when multiple DataReaders are + attempted to be Opened. When Yukon comes out a new Driver will be + created for Yukon because it is supposed to support it. + + + + + The SybaseClientDriver Driver provides a database driver for Sybase. + + + It has been reported to work with the . + + + + + Initializes a new instance of the class. + + + Thrown when the Sybase.Data.AseClient assembly can not be loaded. + + + + + Sybase.Data.AseClient uses named parameters in the sql. + + - Sybase uses @ in the sql. + + + + + + + Sybase.Data.AseClient use the @ to locate parameters in sql. + + @ is used to locate parameters in sql. + + + + Represents state associated with the processing of a given + in regards to loading collections. + + + Another implementation option to consider is to not expose ResultSets + directly (in the JDBC redesign) but to always "wrap" them and apply a [series of] context[s] to that wrapper. + + + + + Creates a collection load context for the given result set. + + Callback to other collection load contexts. + The result set this is "wrapping". + + + + Retrieve the collection that is being loaded as part of processing this result set. + + The persister for the collection being requested. + The key of the collection being requested. + The loading collection (see discussion above). + + Basically, there are two valid return values from this method:
    +
  • an instance of {@link PersistentCollection} which indicates to + continue loading the result set row data into that returned collection + instance; this may be either an instance already associated and in the + midst of being loaded, or a newly instantiated instance as a matching + associated collection was not found.
  • +
  • null indicates to ignore the corresponding result set row + data relating to the requested collection; this indicates that either + the collection was found to already be associated with the persistence + context in a fully loaded state, or it was found in a loading state + associated with another result set processing context.
  • +
+
+
+ + + Finish the process of collection-loading for this bound result set. Mainly this + involves cleaning up resources and notifying the collections that loading is + complete. + + The persister for which to complete loading. + + + Add the collection to the second-level cache + The entry representing the collection to add + The persister + + + + Maps to specific contextual data + related to processing that . + + + Implementation note: internally an is used to maintain + the mappings; was chosen because I'd rather not be + dependent upon potentially bad and + implementations. + Considering the JDBC-redesign work, would further like this contextual info + not mapped separately, but available based on the result set being processed. + This would also allow maintaining a single mapping as we could reliably get + notification of the result-set closing... + + + + Creates and binds this to the given persistence context. + The persistence context to which this will be bound. + + + + Release internal state associated with the given result set. + + The result set for which it is ok to release associated resources. + + This should be called when we are done with processing said result set, + ideally as the result set is being closed. + + + + Release internal state associated with *all* result sets. + + This is intended as a "failsafe" process to make sure we get everything + cleaned up and released. + + + + + Get the {@link CollectionLoadContext} associated with the given + {@link ResultSet}, creating one if needed. + + The result set for which to retrieve the context. + The processing context. + + + + Attempt to locate the loading collection given the owner's key. The lookup here + occurs against all result-set contexts... + + The collection persister + The owner key + The loading collection, or null if not found. + + + + Register a loading collection xref. + + The xref collection key + The corresponding loading collection entry + + This xref map is used because sometimes a collection is in process of + being loaded from one result set, but needs to be accessed from the + context of another "nested" result set processing. + Implementation note: package protected, as this is meant solely for use + by {@link CollectionLoadContext} to be able to locate collections + being loaded by other {@link CollectionLoadContext}s/{@link ResultSet}s. + + + + + The inverse of {@link #registerLoadingCollectionXRef}. Here, we are done + processing the said collection entry, so we remove it from the + load context. + + The key of the collection we are done processing. + + The idea here is that other loading collections can now reference said + collection directly from the {@link PersistenceContext} because it + has completed its load cycle. + Implementation note: package protected, as this is meant solely for use + by {@link CollectionLoadContext} to be able to locate collections + being loaded by other {@link CollectionLoadContext}s/{@link ResultSet}s. + + + + + Locate the LoadingCollectionEntry within *any* of the tracked + s. + + The collection key. + The located entry; or null. + + Implementation note: package protected, as this is meant solely for use + by to be able to locate collections + being loaded by other s/ResultSets. + + + + + Retrieves the persistence context to which this is bound. + + + + + Do we currently have any internal entries corresponding to loading + collections? + + True if we currently hold state pertaining to loading collections; false otherwise. + + + + Represents a collection currently being loaded. + + + + Describes a return in a native SQL query. + + + + Represents a return defined as part of a native sql query which + names a collection role in the form {classname}.{collectionrole}; it + is used in defining a custom sql query for loading an entity's + collection in non-fetching scenarios (i.e., loading the collection + itself as the "root" of the result). + + + + + Represents the base information for a non-scalar return defined as part of + a native sql query. + + + + Constructs some form of non-scalar return descriptor + The result alias + Any user-supplied column->property mappings + The lock mode to apply to the return. + + + Retrieve the defined result alias + + + Retrieve the lock-mode to apply to this return + + + Retrieve the user-supplied column->property mappings. + + + Construct a native-sql return representing a collection initializer + The result alias + + The entity-name of the entity owning the collection to be initialized. + + + The property name (on the owner) which represents + the collection to be initialized. + + Any user-supplied column->property mappings + The lock mode to apply to the collection. + + + + The class owning the collection. + + + + + The name of the property representing the collection from the . + + + + + Represents a return defined as part of a native sql query which + names a fetched role. + + + + Construct a return descriptor representing some form of fetch. + The result alias + The owner's result alias + The owner's property representing the thing to be fetched + Any user-supplied column->property mappings + The lock mode to apply + + + The alias of the owner of this fetched association. + + + + Retrieve the property name (relative to the owner) which maps to + the association to be fetched. + + + + + Represents a return defined as part of a native sql query which + names a "root" entity. A root entity means it is explicitly a + "column" in the result, as opposed to a fetched relationship or role. + + + + + Construct a return representing an entity returned at the root + of the result. + + The result alias + The entity name. + The lock mode to apply + + + + Construct a return representing an entity returned at the root + of the result. + + The result alias + The entity name. + Any user-supplied column->property mappings + The lock mode to apply + + + The name of the entity to be returned. + + + Describes a scalar return in a native SQL query. + + + + Extends an HQLQueryPlan to maintain a reference to the collection-role name + being filtered. + + + + Defines a query execution plan for an HQL query (or filter). + + + Descriptor regarding a named parameter. + + + + Not supported yet (AST parse needed) + + + + Defines a query execution plan for a native-SQL query. + + + + Bind positional parameter values to the PreparedStatement + (these are parameters specified by a JDBC-style ?). + + + + + Bind named parameters to the PreparedStatement. This has an + empty implementation on this superclass and should be implemented by + subclasses (queries) which allow named parameters. + + + + Encapsulates metadata about parameters encountered within a query. + + + + The single available method + is responsible for parsing a query string and recognizing tokens in + relation to parameters (either named, ejb3-style, or ordinal) and + providing callbacks about such recognitions. + + + + + Performs the actual parsing and tokenizing of the query string making appropriate + callbacks to the given recognizer upon recognition of the various tokens. + + + Note that currently, this only knows how to deal with a single output + parameter (for callable statements). If we later add support for + multiple output params, this, obviously, needs to change. + + The string to be parsed/tokenized. + The thing which handles recognition events. + + + + + Implements a parameter parser recognizer specifically for the purpose + of journaling parameter locations. + + + + + Convenience method for creating a param location recognizer and + initiating the parse. + + The query to be parsed for parameter locations. + The generated recognizer, with journaled location info. + + + + The dictionary of named parameter locations. + The dictionary is keyed by parameter name. + + + + + The list of ordinal parameter locations. + + + The list elements are integers, representing the location for that given ordinal. + Thus OrdinalParameterLocationList[n] represents the location for the nth parameter. + + + + Defines metadata regarding a translated HQL or native-SQL query. + + + Get the source HQL or native-SQL query. + + + Return source query select clause aliases (if any) + + + An array of types describing the returns of the source query. + + + The set of query spaces affected by this source query. + + + Acts as a cache for compiled query plans, as well as query-parameter metadata. + + + + Responsible for maintaining the queue of actions related to events. + + The ActionQueue holds the DML operations queued as part of a session's + transactional-write-behind semantics. DML operations are queued here + until a flush forces them to be executed against the database. + + + + + + Perform all currently queued entity-insertion actions. + + + + + Perform all currently queued actions. + + + + + Prepares the internal action queues for execution. + + + + + Performs cleanup of any held cache softlocks. + + Was the transaction successful. + + + + Check whether the given tables/query-spaces are to be executed against + given the currently queued actions. + + The table/query-spaces to check. + True if we contain pending actions against any of the given tables; false otherwise. + + + + Check whether any insertion or deletion actions are currently queued. + + True if insertions or deletions are currently queued; false otherwise. + + + + Identifies a named association belonging to a particular + entity instance. Used to record the fact that an association + is null during loading. + + + + + Defines a sequence of elements that are currently + eligible for batch fetching. + + + Even though this is a map, we only use the keys. A map was chosen in + order to utilize a to maintain sequencing + as well as uniqueness. + + + + + A map of subselect-fetch descriptors + keyed by the against which the descriptor is + registered. + + + + + The owning persistence context. + + + + + Constructs a queue for the given context. + + The owning persistence context. + + + + Clears all entries from this fetch queue. + + + + + Retrieve the fetch descriptor associated with the given entity key. + + The entity key for which to locate any defined subselect fetch. + The fetch descriptor; may return null if no subselect fetch queued for + this entity key. + + + + Adds a subselect fetch decriptor for the given entity key. + + The entity for which to register the subselect fetch. + The fetch descriptor. + + + + After evicting or deleting an entity, we don't need to + know the query that was used to load it anymore (don't + call this after loading the entity, since we might still + need to load its collections) + + + + + Clears all pending subselect fetches from the queue. + + + Called after flushing. + + + + + If an EntityKey represents a batch loadable entity, add + it to the queue. + + + Note that the contract here is such that any key passed in should + previously have been been checked for existence within the + ; failure to do so may cause the + referenced entity to be included in a batch even though it is + already associated with the . + + + + + After evicting or deleting or loading an entity, we don't + need to batch fetch it anymore, remove it from the queue + if necessary + + + + + Get a batch of uninitialized collection keys for a given role + + The persister for the collection role. + A key that must be included in the batch fetch + the maximum number of keys to return + an array of collection keys, of length batchSize (padded with nulls) + + + + Get a batch of unloaded identifiers for this class, using a slightly + complex algorithm that tries to grab keys registered immediately after + the given key. + + The persister for the entities being loaded. + The identifier of the entity currently demanding load. + The maximum number of keys to return + an array of identifiers, of length batchSize (possibly padded with nulls) + + + + The types of children to cascade to + + + + + A cascade point that occurs just after the insertion of the parent + entity and just before deletion + + + + + A cascade point that occurs just before the insertion of the parent entity + and just after deletion + + + + + A cascade point that occurs just after the insertion of the parent entity + and just before deletion, inside a collection + + + + + A cascade point that occurs just after the update of the parent entity + + + + A cascade point that occurs just before the session is flushed + + + + A cascade point that occurs just after eviction of the parent entity from the + session cache + + + + + A cascade point that occurs just after locking a transient parent entity into the + session cache + + + + + A cascade point that occurs just after locking a transient parent entity into the session cache + + + + + A cascade point that occurs just before merging from a transient parent entity into + the object in the session cache + + + + + Delegate responsible, in conjunction with the various + , for implementing cascade processing. + + + + Cascade an action from the parent entity instance to all its children. + The parent's entity persister + The parent reference. + + + + Cascade an action from the parent entity instance to all its children. This + form is typicaly called from within cascade actions. + + The parent's entity persister + The parent reference. + + Typically some form of cascade-local cache + which is specific to each CascadingAction type + + + + Cascade an action to the child or children + + + Cascade an action to a collection + + + Cascade an action to a to-one association or any type + + + Cascade to the collection elements + + + Delete any entities that were removed from the collection + + + A contract for defining the aspects of cascading various persistence actions. + + + + package-protected constructor + + + For this style, should the given action be cascaded? + The action to be checked for cascade-ability. + True if the action should be cascaded under this style; false otherwise. + + + + Probably more aptly named something like doCascadeToCollectionElements(); + it is however used from both the collection and to-one logic branches... + + The action to be checked for cascade-ability. + True if the action should be really cascaded under this style; false otherwise. + + For this style, should the given action really be cascaded? The default + implementation is simply to return {@link #doCascade}; for certain + styles (currently only delete-orphan), however, we need to be able to + control this separately. + + + + Factory method for obtaining named cascade styles + The named cascade style name. + The appropriate CascadeStyle + + + save / delete / update / evict / lock / replicate / merge / persist + delete orphans + + + save / delete / update / evict / lock / replicate / merge / persist + + + save / update + + + lock + + + refresh + + + evict + + + replicate + + + merge + + + create + + + delete + + + delete + delete orphans + + + no cascades + + + Do we need to delete orphaned collection elements? + True if this style need to account for orphan delete operations; false otherwise. + + + + A session action that may be cascaded from parent entity to its children + + + + Cascade the action to the child object. + The session within which the cascade is occurring. + The child to which cascading should be performed. + The child's entity name + Typically some form of cascade-local cache which is specific to each CascadingAction type + Are cascading deletes enabled. + + + + Given a collection, get an iterator of the children upon which the + current cascading action should be visited. + + The session within which the cascade is occurring. + The mapping type of the collection. + The collection instance. + The children iterator. + + + + Called (in the case of returning true) to validate + that no cascade on the given property is considered a valid semantic. + + The session within which the cascade is occurring. + The property value + The property value owner + The entity persister for the owner + The index of the property within the owner. + + + + Given a collection, get an iterator of all its children, loading them + from the database if necessary. + + The session within which the cascade is occurring. + The mapping type of the collection. + The collection instance. + The children iterator. + + + + Iterate just the elements of the collection that are already there. Don't load + any new elements from the database. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Execute persist during flush time + + + + + + + Does this action potentially extrapolate to orphan deletes? + True if this action can lead to deletions of orphans. + + + Does the specified cascading action require verification of no cascade validity? + True if this action requires no-cascade verification; false otherwise. + + + Should this action be performed (or noCascade consulted) in the case of lazy properties. + + + + We need an entry to tell us all about the current state + of a collection with respect to its persistent state + + + + + Defines a complete "snapshot" of a particular collection. + + + + + Gets the identifier of the Entity that owns this Collection. + + + + + Gets the role that identifies this Collection. + + + + + Gets the snapshot copy of the Collection's elements. + + + In most cases this is the same collection type as the one being snapshotted. + ie - the snapshot of an IList will return an IList. + + + + + Gets a indicating if the collection was at one time + associated with an Entity and then later dereferenced during a Flush(). + + + + + Indicates that the Collection can still be reached by an Entity + that exist in the . + + + It is also used to ensure that the Collection is not shared between + two Entities. + + + + + Indicates that the Collection has been processed and is ready + to have its state synchronized with the database. + + + + + Indicates that a Collection needs to be updated. + + + A Collection needs to be updated whenever the contents of the Collection + have been changed. + + + + + Indicates that a Collection has old elements that need to be removed. + + + A Collection needs to have removals performed whenever its role changes or + the key changes and it has a loadedPersister - ie - it was loaded by NHibernate. + + + + + Indicates that a Collection needs to be recreated. + + + A Collection needs to be recreated whenever its role changes + or the owner changes. + + + + + If we instantiate a collection during the + process, we must ignore it for the rest of the flush. + + + + + The that is currently responsible + for the Collection. + + + This is set when NHibernate is updating a reachable or an + unreachable collection. + + + + + The when the Collection was loaded. + + + This can be if the Collection was not loaded by NHibernate and + was passed in along with a transient object. + + + + + The identifier of the Entity that is the owner of this Collection + during the load or post flush. + + + + session-start/post-flush persistent state + + + allow the snapshot to be serialized + + + + Initializes a new instance of . + + + The CollectionEntry is for a Collection that is not dirty and + has already been initialized. + + + + + Initializes a new instance of for collections just loaded from the database. + + The that persists this Collection type. + The identifier of the Entity that is the owner of this Collection. + A boolean indicating whether to ignore the collection during current (or next) flush. + + + For collections just loaded from the database + + + + Initializes a new instance of for initialized detached collections. + + The from another . + The that created this . + + This takes an from another and + creates an entry for it in this by copying the values from the + cs parameter. + + + + + Determine if the collection is "really" dirty, by checking dirtiness + of the collection elements, if necessary + + + + + Prepares this CollectionEntry for the Flush process. + + The that this CollectionEntry will be responsible for flushing. + + + + Updates the CollectionEntry to reflect that the + has been initialized. + + The initialized that this Entry is for. + + + + Updates the CollectionEntry to reflect that it is has been successfully flushed to the database. + + The that was flushed. + + Called after a successful flush. + + + + + Sets the information in this CollectionEntry that is specific to the + . + + + The that is + responsible for the Collection. + + + + + + + + + + + + + + Uniquely identifies a collection instance in a particular session. + + + + + Record the fact that this collection was dereferenced + + The collection to be updated by unreachability. + The session. + + + + Initialize the role of the collection. + + The collection to be updated by reachibility. + The type of the collection. + The owner of the collection. + The session. + + + + We need an entry to tell us all about the current state + of an object with respect to its persistent state + + + + + Initializes a new instance of EntityEntry. + + The current of the Entity. + The snapshot of the Entity's state when it was loaded. + + The identifier of the Entity in the database. + The version of the Entity. + The for the Entity. + A boolean indicating if the Entity exists in the database. + The that is responsible for this Entity. + + + + + + + After actually inserting a row, record the fact that the instance exists on the + database (needed for identity-column key generation) + + + + + After actually updating the database, update the snapshot information, + and escalate the lock mode. + + + + + After actually deleting a row, record the fact that the instance no longer + exists in the database + + + + + Gets or sets the current of the Entity. + + The of the Entity. + + + + Gets or sets the of this Entity with respect to its + persistence in the database. + + The of this Entity. + + + + Gets or sets the identifier of the Entity in the database. + + The identifier of the Entity in the database if one has been assigned. + This might be when the is + and the database generates the id. + + + + Gets or sets the snapshot of the Entity when it was loaded from the database. + + The snapshot of the Entity. + + There will only be a value when the Entity was loaded in the current Session. + + + + + Gets or sets the snapshot of the Entity when it was marked as being ready for deletion. + + The snapshot of the Entity. + This will be if the Entity is not being deleted. + + + + Gets or sets a indicating if this Entity exists in the database. + + if it is already in the database. + + It can also be if it does not exists in the database yet and the + is . + + + + + Gets or sets the version of the Entity. + + The version of the Entity. + + + + Gets or sets the that is responsible for this Entity. + + The that is responsible for this Entity. + + + + Gets the Fully Qualified Name of the class this Entity is an instance of. + + The Fully Qualified Name of the class this Entity is an instance of. + + + + A globally unique identifier of an instance, consisting of the user-visible identifier + and the identifier space (eg. tablename) + + + + Construct a unique identifier for an entity class instance + + + Used to reconstruct an EntityKey during deserialization. + The identifier value + The root entity name + The specific entity name + The type of the identifier value + Whether represented entity is eligible for batch loading + The session factory + The entity's entity mode + + + + To use in deserialization callback + + + + + + Used to uniquely key an entity instance in relation to a particular session + by some unique property reference, as opposed to identifier. + Uniqueing information consists of the entity-name, the referenced + property name, and the referenced property value. + + + + + + A FilterDefinition defines the global attributes of a dynamic filter. This + information includes its name as well as its defined parameters (name and type). + + + + + Set the named parameter's value list for this filter. + + The name of the filter for which this configuration is in effect. + The default filter condition. + A dictionary storing the NHibernate type + of each parameter under its name. + + + + Retreive the type of the named parameter defined for this filter. + + The name of the filter parameter for which to return the type. + The type of the named parameter. + + + + Get the name of the filter this configuration defines. + + The filter name for this configuration. + + + + Get a set of the parameters defined by this configuration. + + The parameters named by this configuration. + + + Algorithms related to foreign key constraint transparency + + + + Is this instance persistent or detached? + + + If is non-null, don't hit the database to make the + determination, instead assume that value; the client code must be + prepared to "recover" in the case that this assumed result is incorrect. + + + + + Is this instance, which we know is not persistent, actually transient? + If assumed is non-null, don't hit the database to make the + determination, instead assume that value; the client code must be + prepared to "recover" in the case that this assumed result is incorrect. + + + If is non-null, don't hit the database to make the + determination, instead assume that value; the client code must be + prepared to "recover" in the case that this assumed result is incorrect. + + + + + Return the identifier of the persistent or transient object, or throw + an exception if the instance is "unsaved" + + + Used by OneToOneType and ManyToOneType to determine what id value should + be used for an object that may or may not be associated with the session. + This does a "best guess" using any/all info available to use (not just the + EntityEntry). + + + + + Nullify all references to entities that have not yet + been inserted in the database, where the foreign key + points toward that entity + + + + + Return null if the argument is an "unsaved" entity (ie. + one with no existing database row), or the input argument + otherwise. This is how Hibernate avoids foreign key constraint + violations. + + + + + Determine if the object already exists in the database, using a "best guess" + + + + + A strategy for determining if an identifier value is an identifier of a new + transient instance or a previously persistent transient instance. The strategy + is determined by the Unsaved-Value attribute in the mapping file. + + + + + + + + Assume the transient instance is newly instantiated if its identifier is null or + equal to Value + + + + + + Does the given identifier belong to a new instance + + + + + Always assume the transient instance is newly instantiated + + + + + Never assume that transient instance is newly instantiated + + + + + Assume the transient instance is newly instantiated if the identifier + is null. + + + + Assume nothing. + + + + Holds the state of the persistence context, including the + first-level cache, entries, snapshots, proxies, etc. + + + + Add a collection which has no owner loaded + + + + Get and remove a collection whose owner is not yet loaded, + when its owner is being loaded + + + + Clear the state of the persistence context + + + Set the status of an entry + + + Called after transactions end + + + + Get the current state of the entity as known to the underlying + database, or null if there is no corresponding row + + + + + Retrieve the cached database snapshot for the requested entity key. + + The entity key for which to retrieve the cached snapshot + The cached snapshot + + + This differs from is two important respects: + no snapshot is obtained from the database if not already cached + an entry of NO_ROW here is interpretet as an exception + + + + + + Get the values of the natural id fields as known to the underlying + database, or null if the entity has no natural id or there is no + corresponding row. + + + + Add a canonical mapping from entity key to entity instance + + + + Get the entity instance associated with the given EntityKey + + + + Is there an entity with the given key in the persistence context + + + + Remove an entity from the session cache, also clear + up other state associated with the entity, all except + for the EntityEntry + + + + Get an entity cached by unique key + + + Add an entity to the cache by unique key + + + + Retreive the EntityEntry representation of the given entity. + + The entity for which to locate the EntityEntry. + The EntityEntry for the given entity. + + + Remove an entity entry from the session cache + + + Is there an EntityEntry for this instance? + + + Get the collection entry for a persistent collection + + + Adds an entity to the internal caches. + + + + Generates an appropriate EntityEntry instance and adds it + to the event source's internal caches. + + + + Is the given collection associated with this persistence context? + + + Is the given proxy associated with this persistence context? + + + + Takes the given object and, if it represents a proxy, reassociates it with this event source. + + The possible proxy to be reassociated. + Whether the passed value represented an actual proxy which got initialized. + + + + If a deleted entity instance is re-saved, and it has a proxy, we need to + reset the identifier of the proxy + + + + + Get the entity instance underlying the given proxy, throwing + an exception if the proxy is uninitialized. If the given object + is not a proxy, simply return the argument. + + + + + Possibly unproxy the given reference and reassociate it with the current session. + + The reference to be unproxied if it currently represents a proxy. + The unproxied instance. + + + + Attempts to check whether the given key represents an entity already loaded within the + current session. + + The entity reference against which to perform the uniqueness check. + The entity key. + + + + If the existing proxy is insufficiently "narrow" (derived), instantiate a new proxy + and overwrite the registration of the old one. This breaks == and occurs only for + "class" proxies rather than "interface" proxies. Also init the proxy to point to + the given target implementation if necessary. + + The proxy instance to be narrowed. + The persister for the proxied entity. + The internal cache key for the proxied entity. + (optional) the actual proxied entity instance. + An appropriately narrowed instance. + + + + Return the existing proxy associated with the given EntityKey, or the + third argument (the entity associated with the key) if no proxy exists. Init + the proxy to the target implementation, if necessary. + + + + + Return the existing proxy associated with the given EntityKey, or the + argument (the entity associated with the key) if no proxy exists. + (slower than the form above) + + + + Get the entity that owns this persistent collection + + + add a collection we just loaded up (still needs initializing) + + + add a detached uninitialized collection + + + + Add a new collection (ie. a newly created one, just instantiated by the + application, with no database state or snapshot) + + The collection to be associated with the persistence context + + + + + add an (initialized) collection that was created by another session and passed + into update() (ie. one with a snapshot and existing state on the database) + + + + add a collection we just pulled out of the cache (does not need initializing) + + + Get the collection instance associated with the CollectionKey + + + + Register a collection for non-lazy loading at the end of the two-phase load + + + + + Force initialization of all non-lazy collections encountered during + the current two-phase load (actually, this is a no-op, unless this + is the "outermost" load) + + + + Get the PersistentCollection object for an array + + + Register a PersistentCollection object for an array. + Associates a holder with an array - MUST be called after loading + array, since the array instance is not created until endLoad(). + + + + + Remove the mapping of collection to holder during eviction of the owning entity + + + + Get the snapshot of the pre-flush collection state + + + + Get the collection entry for a collection passed to filter, + which might be a collection wrapper, an array, or an unwrapped + collection. Return null if there is no entry. + + + + Get an existing proxy by key + + + Add a proxy to the session cache + + + Remove a proxy from the session cache + + + Called before cascading + + + Called after cascading + + + Call this before begining a two-phase load + + + Call this after finishing a two-phase load + + + + Search the persistence context for an owner for the child object, + given a collection role + + + + + Search the persistence context for an index of the child object, given a collection role + + + + + Record the fact that the association belonging to the keyed entity is null. + + + + Is the association property belonging to the keyed entity null? + + + Set the object to read only and discard it's snapshot + + + + Get the session to which this persistence context is bound. + + + + + Retrieve this persistence context's managed load context. + + + + + Get the BatchFetchQueue, instantiating one if necessary. + + + + Retrieve the set of EntityKeys representing nullifiable references + + + Get the mapping from key value to entity instance + + + Get the mapping from entity instance to entity entry + + + Get the mapping from collection instance to collection entry + + + Get the mapping from collection key to collection instance + + + How deep are we cascaded? + + + Is a flush cycle currently in process? + Called before and after the flushcycle + + + False if we know for certain that all the entities are read-only + + + + Defines the internal contract between the ISessionFactory and other parts of NHibernate + such as implementors of IType. + + + + + Creates ISessions. + + + + Usually an application has a single SessionFactory. Threads servicing client requests + obtain ISessions from the factory. Implementors must be threadsafe. + + + ISessionFactorys are immutable. The behaviour of a SessionFactory + is controlled by properties supplied at configuration time. + These properties are defined on Environment + + + + + + Open a ISession on the given connection + + A connection provided by the application + A session + + Note that the second-level cache will be disabled if you + supply a ADO.NET connection. NHibernate will not be able to track + any statements you might have executed in the same transaction. + Consider implementing your own . + + + + + Create database connection and open a ISession on it, specifying an interceptor + + A session-scoped interceptor + A session + + + + Open a ISession on the given connection, specifying an interceptor + + A connection provided by the application + A session-scoped interceptor + A session + + Note that the second-level cache will be disabled if you + supply a ADO.NET connection. NHibernate will not be able to track + any statements you might have executed in the same transaction. + Consider implementing your own . + + + + + Create a database connection and open a ISession on it + + + + + + Create a new databinder. + + + + + + Get the ClassMetadata associated with the given entity class + + + + + + + Get the CollectionMetadata associated with the named collection role + + + + + + + Get all ClassMetadata as a IDictionary from Type + to metadata object + + + + + + Get all CollectionMetadata as a IDictionary from role name + to metadata object + + + + + + Destroy this SessionFactory and release all resources + connection pools, etc). It is the responsibility of the application + to ensure that there are no open Sessions before calling + close(). + + + + + Evict all entries from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + Evict an entry from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + + Evict all entries from the second-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + Evict all entries from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + Evict an entry from the process-level cache. This method occurs outside + of any transaction; it performs an immediate "hard" remove, so does not respect + any transaction isolation semantics of the usage strategy. Use with care. + + + + + + + Evict any query result sets cached in the default query cache region. + + + + + Evict any query result sets cached in the named query cache region. + + + + + + Obtain the definition of a filter by name. + + The name of the filter for which to obtain the definition. + The filter definition. + + + + Obtains the current session. + + + + The definition of what exactly "current" means is controlled by the + implementation configured for use. + + + The current session. + Indicates an issue locating a suitable current session. + + + Get a new stateless session. + + + Get a new stateless session for the given ADO.NET connection. + + + + Get the used. + + + + + Get the SQL Dialect + + + + + Obtain a set of the names of all filters defined on this SessionFactory. + + The set of filter names. + + + + This collections allows external libraries + to add their own configuration to the NHibernate session factory. + This is needed in such cases where the library is tightly coupled to NHibernate, such + as the case of NHibernate Search + + + + Get the statistics for this session factory + + + + Get the persister for a class + + + + + Get the persister for the named class + + The name of the class that is persisted. + The for the class. + If no can be found. + + + + Get the persister for the named class + + The name of the class that is persisted. + Whether to throw an exception if the class is not found, + or just return + The for the class. + If no can be found + and throwIfNotFound is true. + + + + Get the persister object for a collection role + + + + + + + Get the return types of a query + + + + + + Get the return aliases of a query + + + + Get the names of all persistent classes that implement/extend the given interface/class + + + + + + + Get a class name, using query language imports + + + + + + + Get a particular named query cache, or the default cache + + the name of the cache region, or null for the default + query cache + the existing cache, or a newly created cache if none by that + region name + + + + Obtain an ADO.NET connection + + + + + + Release an ADO.NET connection + + + + + + Get the identifier generator for the hierarchy + + + + + Open a session conforming to the given parameters. For use mainly by + implementations. + + The external ADO.NET connection to use, if any (i.e., optional). + The release mode for managed database connections. + An appropriate session. + + + + + Open a session conforming to the given parameters. Used mainly + for current session processing. + + The external ado.net connection to use, if one (i.e., optional). + + Should the session be auto-flushed + prior to transaction completion? + + + Should the session be auto-closed after + transaction completion? + + The release mode for managed jdbc connections. + An appropriate session. + + + + Retrieves a set of all the collection roles in which the given entity + is a participant, as either an index or an element. + + The entity name for which to get the collection roles. + + Set of all the collection roles in which the given entityName participates. + + + + Get a named second-level cache region + + + + Is outerjoin fetching enabled? + + + + + Are scrollable ResultSets supported? + + + + + Is PreparedStatement.getGeneratedKeys supported (Java-specific?) + + + + + Get the database schema specified in default_schema + + + + + Maximum depth of outer join fetching + + + + + Get the default query cache + + + + + Is query caching enabled? + + + + + Gets the IsolationLevel an IDbTransaction should be set to. + + + This is only applicable to manually controlled NHibernate Transactions. + + + + Retrieves the SQLExceptionConverter in effect for this SessionFactory. + The SQLExceptionConverter for this SessionFactory. + + + + Gets the ICurrentSessionContext instance attached to this session factory. + + + + The cache of table update timestamps + + + Statistics SPI + + + + Defines the internal contract between the Session and other parts of Hibernate + such as implementors of Type or ClassPersister + + + + + Initialize the collection (if not already initialized) + + + + + + + Load an instance without checking if it was deleted. If it does not exist and isn't nullable, throw an exception. + This method may create a new proxy or return an existing proxy. + + The entityName (or class full name) to load. + The identifier of the object in the database. + Allow null instance + When enabled, the object is eagerly fetched. + + A proxy of the object or an instance of the object if the persistentClass does not have a proxy. + + No object could be found with that id. + + + + Load an instance immediately. Do not return a proxy. + + + + + + + + Execute a List() query + + + + + + + + Strongly-typed version of + + + + + Strongly-typed version of + + + + + Execute an Iterate() query + + + + + + + + Strongly-typed version of + + + + + Execute a filter + + + + + Execute a filter (strongly-typed version). + + + + + Collection from a filter + + + + + Strongly-typed version of + + + + Get the for any instance + optional entity name + the entity instance + + + + Get the IEntityPersister for an object + + + + + + + Notify the session that an NHibernate transaction has begun. + + + + + Notify the session that the transaction is about to complete + + + + + Notify the session that the transaction completed, so we no longer own the old locks. + (Also we shold release cache softlocks). May be called multiple times during the transaction + completion process. + + + + + Return the identifier of the persistent object, or null if transient + + + + + Instantiate the entity class, initializing with the given identifier + + + + + Execute an SQL Query + + + + + Strongly-typed version of + + + + Execute an SQL Query + + + + Retreive the currently set value for a filter parameter. + + The filter parameter name in the format + {FILTER_NAME.PARAMETER_NAME}. + The filter parameter value. + + + + Retreive the type for a given filter parrameter. + + The filter parameter name in the format + {FILTER_NAME.PARAMETER_NAME}. + The filter parameter type. + + + + Get the entity instance associated with the given Key, + calling the Interceptor if necessary + + + + The best guess entity name for an entity not in an association + + + The guessed entity name for an entity not in an association + + + + Allow to get the ISession instance without having to + down cast + + + + + Execute a native SQL update or delete query + + + Execute a HQL update or delete query + + + + System time before the start of the transaction + + + + + + Get the creating SessionFactoryImplementor + + + + + + Get the prepared statement Batcher for this session + + + + + Return the currently enabled filters. The filter map is keyed by filter + name, with values corresponding to the + instance. + + The currently enabled filters. + + + Retrieves the configured event listeners from this event source. + + + Get the persistence context for this session + + + + Is the ISession still open? + + + + + Is the ISession currently connected? + + + + Determine whether the session is closed. Provided seperately from + {@link #isOpen()} as this method does not attempt any JTA synch + registration, where as {@link #isOpen()} does; which makes this one + nicer to use for most internal purposes. + + True if the session is closed; false otherwise. + + + + + Does this Session have an active Hibernate transaction + or is there a JTA transaction in progress? + + + + Retrieve the entity mode in effect for this session. + + + + Get the aliased columns of the owning entity which are to + be used in the join + + + + + Get the columns of the owning entity which are to + be used in the join + + + + + Get the aliased columns of the owning entity which are to + be used in the join + + + + + Get the columns of the owning entity which are to + be used in the join + + + + + Get the columns of the associated table which are to + be used in the join + + + + + Implements the algorithm for validating property values + for illegal null values + + + + + Check nullability of the class persister properties + + entity properties + class persister + wether it is intended to be updated or saved + + + + Check sub elements-nullability. Returns property path that break + nullability or null if none + + type to check + value to check + property path + + + + Check component nullability. Returns property path that break + nullability or null if none + + component properties + component not-nullable type + property path + + + + Return a well formed property path. + Basicaly, it will return parent.child + + parent in path + child in path + parent-child path + + + + Container for data that is used during the NHibernate query/load process. + + + + + + + + Ensure the Types and Values are the same length. + + + If the Lengths of and + are not equal. + + + + + + + + Gets or sets an that contains the named + parameter as the key and the as the value. + + An of named parameters. + + + + Gets or sets an array of objects that is stored at the index + of the Parameter. + + + + + Gets or sets an array of objects that is stored at the index + of the Parameter. + + + + + Gets or sets the for the Query. + + + + + Gets or sets an that contains the alias name of the + object from hql as the key and the as the value. + + An of lock modes. + + + + Information to determine how to run an IDbCommand and what + records to return from the IDataReader. + + + + + Indicates that the no value has been set on the Property. + + + + + Gets or Sets the Index of the First Row to Select + + The Index of the First Rows to Select + Defaults to 0 unless specifically set. + + + + Gets or Sets the Maximum Number of Rows to Select + + The Maximum Number of Rows to Select + Defaults to NoValue unless specifically set. + + + + Gets or Sets the Timeout of the Query + + The Query Timeout + Defaults to NoValue unless specifically set. + + + + A represents the state of persistent "stuff" which + NHibernate is tracking. This includes persistent entities, collections, + as well as proxies generated. + + + There is meant to be a one-to-one correspondence between a SessionImpl and + a PersistentContext. The SessionImpl uses the PersistentContext to track + the current state of its context. Event-listeners then use the + PersistentContext to drive their processing. + + + + Constructs a PersistentContext, bound to the given session. + The session "owning" this context. + + + Add a collection which has no owner loaded + + + + Get and remove a collection whose owner is not yet loaded, + when its owner is being loaded + + + + Clear the state of the persistence context + + + Set the status of an entry + + + Called after transactions end + + + + Get the current state of the entity as known to the underlying + database, or null if there is no corresponding row + + + + + Retrieve the cached database snapshot for the requested entity key. + + The entity key for which to retrieve the cached snapshot + The cached snapshot + + + This differs from is two important respects: + no snapshot is obtained from the database if not already cached + an entry of NO_ROW here is interpretet as an exception + + + + + + Get the values of the natural id fields as known to the underlying + database, or null if the entity has no natural id or there is no + corresponding row. + + + + Add a canonical mapping from entity key to entity instance + + + + Get the entity instance associated with the given EntityKey + + + + Is there an entity with the given key in the persistence context + + + + Remove an entity from the session cache, also clear + up other state associated with the entity, all except + for the EntityEntry + + + + Get an entity cached by unique key + + + Add an entity to the cache by unique key + + + + Retreive the EntityEntry representation of the given entity. + + The entity for which to locate the EntityEntry. + The EntityEntry for the given entity. + + + Remove an entity entry from the session cache + + + Is there an EntityEntry for this instance? + + + Get the collection entry for a persistent collection + + + Adds an entity to the internal caches. + + + + Generates an appropriate EntityEntry instance and adds it + to the event source's internal caches. + + + + Is the given collection associated with this persistence context? + + + Is the given proxy associated with this persistence context? + + + + Takes the given object and, if it represents a proxy, reassociates it with this event source. + + The possible proxy to be reassociated. + Whether the passed value represented an actual proxy which got initialized. + + + + If a deleted entity instance is re-saved, and it has a proxy, we need to + reset the identifier of the proxy + + + + + Associate a proxy that was instantiated by another session with this session + + The proxy initializer. + The proxy to reassociate. + + + + Get the entity instance underlying the given proxy, throwing + an exception if the proxy is uninitialized. If the given object + is not a proxy, simply return the argument. + + + + + Possibly unproxy the given reference and reassociate it with the current session. + + The reference to be unproxied if it currently represents a proxy. + The unproxied instance. + + + + Attempts to check whether the given key represents an entity already loaded within the + current session. + + The entity reference against which to perform the uniqueness check. + The entity key. + + + + If the existing proxy is insufficiently "narrow" (derived), instantiate a new proxy + and overwrite the registration of the old one. This breaks == and occurs only for + "class" proxies rather than "interface" proxies. Also init the proxy to point to + the given target implementation if necessary. + + The proxy instance to be narrowed. + The persister for the proxied entity. + The internal cache key for the proxied entity. + (optional) the actual proxied entity instance. + An appropriately narrowed instance. + + + + Return the existing proxy associated with the given EntityKey, or the + third argument (the entity associated with the key) if no proxy exists. Init + the proxy to the target implementation, if necessary. + + + + + Return the existing proxy associated with the given EntityKey, or the + argument (the entity associated with the key) if no proxy exists. + (slower than the form above) + + + + Get the entity that owns this persistent collection + + + add a collection we just loaded up (still needs initializing) + + + add a detached uninitialized collection + + + + Add a new collection (ie. a newly created one, just instantiated by the + application, with no database state or snapshot) + + The collection to be associated with the persistence context + + + + Add an collection to the cache, with a given collection entry. + The collection for which we are adding an entry. + The entry representing the collection. + The key of the collection's entry. + + + Add a collection to the cache, creating a new collection entry for it + The collection for which we are adding an entry. + + + + add an (initialized) collection that was created by another session and passed + into update() (ie. one with a snapshot and existing state on the database) + + + + add a collection we just pulled out of the cache (does not need initializing) + + + Get the collection instance associated with the CollectionKey + + + + Register a collection for non-lazy loading at the end of the two-phase load + + + + + Force initialization of all non-lazy collections encountered during + the current two-phase load (actually, this is a no-op, unless this + is the "outermost" load) + + + + Get the PersistentCollection object for an array + + + Register a PersistentCollection object for an array. + Associates a holder with an array - MUST be called after loading + array, since the array instance is not created until endLoad(). + + + + + Remove the mapping of collection to holder during eviction of the owning entity + + + + Get the snapshot of the pre-flush collection state + + + + Get the collection entry for a collection passed to filter, + which might be a collection wrapper, an array, or an unwrapped + collection. Return null if there is no entry. + + + + Get an existing proxy by key + + + Add a proxy to the session cache + + + Remove a proxy from the session cache + + + Called before cascading + + + Called after cascading + + + Call this before begining a two-phase load + + + Call this after finishing a two-phase load + + + + Search the persistence context for an owner for the child object, + given a collection role + + + + + Search the persistence context for an index of the child object, given a collection role + + + + + Record the fact that the association belonging to the keyed entity is null. + + + + Is the association property belonging to the keyed entity null? + + + Set the object to read only and discard it's snapshot + + + + Get the session to which this persistence context is bound. + + + + + Retrieve this persistence context's managed load context. + + + + + Get the BatchFetchQueue, instantiating one if necessary. + + + + Retrieve the set of EntityKeys representing nullifiable references + + + Get the mapping from key value to entity instance + + + Get the mapping from entity instance to entity entry + + + Get the mapping from collection instance to collection entry + + + Get the mapping from collection key to collection instance + + + How deep are we cascaded? + + + Is a flush cycle currently in process? + Called before and after the flushcycle + + + False if we know for certain that all the entities are read-only + + + + Represents the status of an entity with respect to + this session. These statuses are for internal + book-keeping only and are not intended to represent + any notion that is visible to the application. + + + + + The Entity is snapshotted in the Session with the same state as the database + (called Managed in H3). + + + + + The Entity is in the Session and has been marked for deletion but not + deleted from the database yet. + + + + + The Entity has been deleted from database. + + + + + The Entity is in the process of being loaded. + + + + + The Entity is in the process of being saved. + + + + + The entity is read-only. + + + + + Functionality relating to Hibernate's two-phase loading process, + that may be reused by persisters that do not use the Loader + framework + + + + + Register the "hydrated" state of an entity instance, after the first step of 2-phase loading. + + Add the "hydrated state" (an array) of an uninitialized entity to the session. We don't try + to resolve any associations yet, because there might be other entities waiting to be + read from the JDBC result set we are currently processing + + + + + Perform the second step of 2-phase load. Fully initialize the entity instance. + After processing a JDBC result set, we "resolve" all the associations + between the entities which were instantiated and had their state + "hydrated" into an array + + + + + Add an uninitialized instance of an entity class, as a placeholder to ensure object + identity. Must be called before postHydrate(). + Create a "temporary" entry for a newly instantiated entity. The entity is uninitialized, + but we need the mapping from id to instance in order to guarantee uniqueness. + + + + An ordered pair of a value and its Hibernate type. + + + + Return an IdentifierValue for the specified unsaved-value. If none is specified, + guess the unsaved value by instantiating a test instance of the class and + reading it's id property, or if that is not possible, using the java default + value for the type + + + + + An enum of the different ways a value might be "included". + + + This is really an expanded true/false notion with Partial being the + expansion. Partial deals with components in the cases where + parts of the referenced component might define inclusion, but the + component overall does not. + + + + + Utility methods for managing versions and timestamps + + + + + Increment the given version number + + The value of the current version. + The of the versioned property. + The current . + Returns the next value for the version. + + + + Create an initial version number + + The of the versioned property. + The current . + A seed value to initialize the versioned property with. + + + + Seed the given instance state snapshot with an initial version number + + An array of objects that contains a snapshot of a persistent object. + The index of the version property in the fields parameter. + The of the versioned property. + Force the version to initialize + The current session, if any. + if the version property needs to be seeded with an initial value. + + + + Set the version number of the given instance state snapshot + + An array of objects that contains a snapshot of a persistent object. + The value the version should be set to in the fields parameter. + The that is responsible for persisting the values of the fields parameter. + + + + Get the version number of the given instance state snapshot + + An array of objects that contains a snapshot of a persistent object. + The that is responsible for persisting the values of the fields parameter. + + The value of the version contained in the fields parameter or null if the + Entity is not versioned. + + + + Do we need to increment the version number, given the dirty properties? + The array of property indexes which were deemed dirty + Were any collections found to be dirty (structurally changed) + An array indicating versionability of each property. + True if a version increment is required; false otherwise. + + + + A strategy for determining if a version value is an version of + a new transient instance or a previously persistent transient instance. + The strategy is determined by the Unsaved-Value attribute in the mapping file. + + + + + + + + Assume the transient instance is newly instantiated if its version is null or + equal to Value + + + + + + Does the given identifier belong to a new instance + + + + + Assume the transient instance is newly instantiated if the version + is null, otherwise assume it is a detached instance. + + + + + Assume the transient instance is newly instantiated if the version + is null, otherwise defer to the identifier unsaved-value. + + + + + Assume the transient instance is newly instantiated if the identifier + is null. + + + + + A convenience base class for listeners whose functionality results in flushing. + + + + + Coordinates the processing necessary to get things ready for executions + as db calls by preping the session caches and moving the appropriate + entities and collections to their respective execution queues. + + The flush event. + + + + Execute all SQL and second-level cache updates, in a + special order so that foreign-key constraints cannot + be violated: + + Inserts, in the order they were performed + Updates + Deletion of collection elements + Insertion of collection elements + Deletes, in the order they were performed + + + + + + 1. Recreate the collection key -> collection map + 2. rebuild the collection entries + 3. call Interceptor.postFlush() + + + + + A convenience base class for listeners that respond to requests to perform a + pessimistic lock upgrade on an entity. + + + + + A convenience base class for listeners that respond to requests to reassociate an entity + to a session ( such as through lock() or update() ). + + + + + Associates a given entity (either transient or associated with another session) to the given session. + + The event triggering the re-association + The entity to be associated + The id of the entity. + The entity's persister instance. + An EntityEntry representing the entity within this session. + + + + Performs a pessimistic lock upgrade on a given entity, if needed. + + The entity for which to upgrade the lock. + The entity's EntityEntry instance. + The lock mode being requested for locking. + The session which is the source of the event being processed. + + + + A convenience bas class for listeners responding to save events. + + + + + Prepares the save call using the given requested id. + + The entity to be saved. + The id to which to associate the entity. + The name of the entity being saved. + Generally cascade-specific information. + The session which is the source of this save event. + The id used to save the entity. + + + + Prepares the save call using a newly generated id. + + The entity to be saved + The entity-name for the entity to be saved + Generally cascade-specific information. + The session which is the source of this save event. + + does the event context require + access to the identifier immediately after execution of this method (if + not, post-insert style id generators may be postponed if we are outside + a transaction). + + + The id used to save the entity; may be null depending on the + type of id generator used and the requiresImmediateIdAccess value + + + + + Prepares the save call by checking the session caches for a pre-existing + entity and performing any lifecycle callbacks. + + The entity to be saved. + The id by which to save the entity. + The entity's persister instance. + Is an identity column being used? + Generally cascade-specific information. + The session from which the event originated. + + does the event context require + access to the identifier immediately after execution of this method (if + not, post-insert style id generators may be postponed if we are outside + a transaction). + + + The id used to save the entity; may be null depending on the + type of id generator used and the requiresImmediateIdAccess value + + + + + Performs all the actual work needed to save an entity (well to get the save moved to + the execution queue). + + The entity to be saved + The id to be used for saving the entity (or null, in the case of identity columns) + The entity's persister instance. + Should an identity column be used for id generation? + Generally cascade-specific information. + The session which is the source of the current event. + + Is access to the identifier required immediately + after the completion of the save? persist(), for example, does not require this... + + + The id used to save the entity; may be null depending on the + type of id generator used and the requiresImmediateIdAccess value + + + + + Perform any property value substitution that is necessary + (interceptor callback, version initialization...) + + The entity + The entity identifier + The snapshot entity state + The entity persister + The originating session + + True if the snapshot state changed such that + reinjection of the values into the entity is required. + + + + Handles the calls needed to perform pre-save cascades for the given entity. + The session from which the save event originated. + The entity's persister instance. + The entity to be saved. + Generally cascade-specific data + + + Handles to calls needed to perform post-save cascades. + The session from which the event originated. + The entity's persister instance. + The entity being saved. + Generally cascade-specific data + + + + Determine whether the entity is persistent, detached, or transient + + The entity to check + The name of the entity + The entity's entry in the persistence context + The originating session. + The state. + + + + After the save, will te version number be incremented + if the instance is modified? + + True if the version will be incremented on an entity change after save; false otherwise. + + + + Abstract superclass of algorithms that walk a tree of property values of an entity, and + perform specific functionality for collections, components and associated entities. + + + + Dispatch each property value to ProcessValue(). + + + + + + Visit a property value. Dispatch to the correct handler for the property type. + + + + + + + Visit a component. Dispatch each property to + + + + + + + + Visit a many-to-one or one-to-one associated entity. Default superclass implementation is a no-op. + + + + + + + + Visit a collection. Default superclass implementation is a no-op. + + + + + + + + Walk the tree starting from the given entity. + + + + + + + Defines the default flush event listeners used by hibernate for + flushing session state in response to generated auto-flush events. + + + + Defines the contract for handling of session auto-flush events. + + + + Handle the given auto-flush event. + + The auto-flush event to be handled. + + + + Handle the given auto-flush event. + + The auto-flush event to be handled. + + + + Defines the default delete event listener used by hibernate for deleting entities + from the datastore in response to generated delete events. + + + + Defines the contract for handling of deletion events generated from a session. + + + Handle the given delete event. + The delete event to be handled. + + + Handle the given delete event. + The delete event to be handled. + + + Called when we have recognized an attempt to delete a detached entity. + The event. + + This is perfectly valid in Hibernate usage; JPA, however, forbids this. + Thus, this is a hook for HEM to affect this behavior. + + + + + We encountered a delete request on a transient instance. +

+ This is a deviation from historical Hibernate (pre-3.2) behavior to + align with the JPA spec, which states that transient entities can be + passed to remove operation in which case cascades still need to be + performed. +

+ The session which is the source of the event + The entity being delete processed + Is cascading of deletes enabled + The entity persister + + A cache of already visited transient entities (to avoid infinite recursion). + +
+ + + Perform the entity deletion. Well, as with most operations, does not + really perform it; just schedules an action/execution with the + for execution during flush. + + The originating session + The entity to delete + The entity's entry in the + Is delete cascading enabled? + The entity persister. + A cache of already deleted entities. + + + + Defines the default dirty-check event listener used by hibernate for + checking the session for dirtiness in response to generated dirty-check events. + + + + Defines the contract for handling of session dirty-check events. + + + Handle the given dirty-check event. + The dirty-check event to be handled. + + + + Defines the default evict event listener used by hibernate for evicting entities + in response to generated flush events. In particular, this implementation will + remove any hard references to the entity that are held by the infrastructure + (references held by application or other persistent instances are okay) + + + + Defines the contract for handling of evict events generated from a session. + + + Handle the given evict event. + The evict event to be handled. + + + + An event that occurs for each entity instance at flush time + + + + + Flushes a single entity's state to the database, by scheduling an update action, if necessary + + + + + make sure user didn't mangle the id + + + + + + + + + Performs all necessary checking to determine if an entity needs an SQL update + to synchronize its state to the database. Modifies the event by side-effect! + Note: this method is quite slow, avoid calling if possible! + + + + Perform a dirty check, and attach the results to the event + + + + Defines the default flush event listeners used by hibernate for + flushing session state in response to generated flush events. + + + + Defines the contract for handling of session flush events. + + + Handle the given flush event. + The flush event to be handled. + + + + Defines the contract for handling of collection initialization events + generated by a session. + + + + called by a collection that wants to initialize itself + + + Try to initialize a collection from the cache + + + + Defines the default load event listeners used by hibernate for loading entities + in response to generated load events. + + + + + Defines the contract for handling of load events generated from a session. + + + + + Handle the given load event. + + The load event to be handled. + + The result (i.e., the loaded entity). + + + Perfoms the load of an entity. + The loaded entity. + + + + Based on configured options, will either return a pre-existing proxy, + generate a new proxy, or perform an actual load. + + The result of the proxy/load operation. + + + + Given that there is a pre-existing proxy. + Initialize it if necessary; narrow if necessary. + + + + + Given that there is no pre-existing proxy. + Check if the entity is already loaded. If it is, return the entity, + otherwise create and return a proxy. + + + + + If the class to be loaded has been configured with a cache, then lock + given id in that cache and then perform the load. + + The loaded entity + + + + Coordinates the efforts to load a given entity. First, an attempt is + made to load the entity from the session-level cache. If not found there, + an attempt is made to locate it in second-level cache. Lastly, an + attempt is made to load it directly from the datasource. + + The load event + The persister for the entity being requested for load + The EntityKey representing the entity to be loaded. + The load options. + The loaded entity, or null. + + + + Performs the process of loading an entity from the configured underlying datasource. + + The load event + The persister for the entity being requested for load + The EntityKey representing the entity to be loaded. + The load options. + The object loaded from the datasource, or null if not found. + + + + Attempts to locate the entity in the session-level cache. + + The load event + The EntityKey representing the entity to be loaded. + The load options. + The entity from the session-level cache, or null. + + If allowed to return nulls, then if the entity happens to be found in + the session cache, we check the entity type for proper handling + of entity hierarchies. + If checkDeleted was set to true, then if the entity is found in the + session-level cache, it's current status within the session cache + is checked to see if it has previously been scheduled for deletion. + + + + Attempts to load the entity from the second-level cache. + The load event + The persister for the entity being requested for load + The load options. + The entity from the second-level cache, or null. + + + + Defines the default lock event listeners used by hibernate to lock entities + in response to generated lock events. + + + + + Defines the contract for handling of lock events generated from a session. + + + + Handle the given lock event. + The lock event to be handled. + + + Handle the given lock event. + The lock event to be handled. + + + + Defines the default copy event listener used by hibernate for copying entities + in response to generated copy events. + + + + + Defines the contract for handling of merge events generated from a session. + + + + Handle the given merge event. + The merge event to be handled. + + + Handle the given merge event. + The merge event to be handled. + + + + + Perform any cascades needed as part of this copy event. + + The merge event being processed. + The persister of the entity being copied. + The entity being copied. + A cache of already copied instance. + + + Cascade behavior is redefined by this subclass, disable superclass behavior + + + Cascade behavior is redefined by this subclass, disable superclass behavior + + + + Defines the default create event listener used by hibernate for creating + transient entities in response to generated create events. + + + + + Defines the contract for handling of create events generated from a session. + + + + Handle the given create event. + The create event to be handled. + + + Handle the given create event. + The create event to be handled. + + + + Handle the given create event. + The save event to be handled. + + + + When persist is used as the cascade action, persistOnFlush should be used + + + Call interface if necessary + + + + Occurs after an an entity instance is fully loaded. + + + + + + + + + + + Called before injecting property values into a newly + loaded entity instance. + + + + + Called before injecting property values into a newly loaded entity instance. + + + + + + + + + + + Defines the default refresh event listener used by hibernate for refreshing entities + in response to generated refresh events. + + + + + Defines the contract for handling of refresh events generated from a session. + + + + Handle the given refresh event. + The refresh event to be handled. + + + + + + + + + + + Defines the default replicate event listener used by Hibernate to replicate + entities in response to generated replicate events. + + + + + Defines the contract for handling of replicate events generated from a session. + + + + Handle the given replicate event. + The replicate event to be handled. + + + An event handler for save() events + + + + Defines the default listener used by Hibernate for handling save-update events. + + + + + Defines the contract for handling of update events generated from a session. + + + + Handle the given update event. + The update event to be handled. + + + + The given save-update event named a transient entity. + Here, we will perform the save processing. + + The save event to be handled. + The entity's identifier after saving. + + + + Save the transient instance, assigning the right identifier + + The initiating event. + The entity's identifier value after saving. + + + + The given save-update event named a detached entity. + Here, we will perform the update processing. + + The update event to be handled. + + + Determine the id to use for updating. + The entity. + The entity persister + The requested identifier + The entity mode. + The id. + + + + Handles the calls needed to perform cascades as part of an update request + for the given entity. + + The event currently being processed. + The defined persister for the entity being updated. + The entity being updated. + + + An event handler for update() events + + + + If the user specified an id, assign it to the instance and use that, + otherwise use the id already assigned to the instance + + + + + A Visitor that determines if a dirty collection was found. + + + + + Reason for dirty collection + + + + If it is a new application-instantiated collection, return true (does not occur anymore!) + + + + + If it is a component, recurse. + + + + + If it is a wrapped collection, ask the collection entry. + + + + + + + + Gets a indicating if a dirty collection was found. + + if a dirty collection was found. + + + + Evict any collections referenced by the object from the session cache. + This will NOT pick up any collections that were dereferenced, so they + will be deleted (suboptimal but not exactly incorrect). + + + + + Process collections reachable from an entity. + This visitor assumes that wrap was already performed for the entity. + + + + + When a transient entity is passed to lock(), we must inspect all its collections and + 1. associate any uninitialized PersistentCollections with this session + 2. associate any initialized PersistentCollections with this session, using the existing snapshot + 3. throw an exception for each "new" collection + + + + + Abstract superclass of visitors that reattach collections + + + + + Reassociates uninitialized proxies with the session + + + + + Visit a many-to-one or one-to-one associated entity. Default superclass implementation is a no-op. + + + + + + + + Has the owner of the collection changed since the collection was snapshotted and detached? + + + + + Reattach a detached (disassociated) initialized or uninitialized + collection wrapper, using a snapshot carried with the collection wrapper + + + + + Schedules a collection for deletion. + + The persister representing the collection to be removed. + The collection key (differs from owner-id in the case of property-refs). + The session from which the request originated. + + + + This version is slightly different in that here we need to assume that + the owner is not yet associated with the session, and thus we cannot + rely on the owner's EntityEntry snapshot... + + The persister for the collection role being processed. + + + + + When an entity is passed to replicate(), and there is an existing row, we must + inspect all its collections and + 1. associate any uninitialized PersistentCollections with this session + 2. associate any initialized PersistentCollections with this session, using the existing snapshot + 3. execute a collection removal (SQL DELETE) for each null collection property or "new" collection + + + + + When an entity is passed to update(), we must inspect all its collections and + 1. associate any uninitialized PersistentCollections with this session + 2. associate any initialized PersistentCollections with this session, using the existing snapshot + 3. execute a collection removal (SQL DELETE) for each null collection property or "new" collection + + + + + Wrap collections in a Hibernate collection wrapper. + + + + + Defines a base class for Session generated events. + + + + + Constructs an event from the given event session. + + The session event source. + + + + Returns the session event source for this event. + This is the underlying session from which this event was generated. + + + + Defines an event class for the auto-flushing of a session. + + + Defines an event class for the flushing of a session. + + + Defines an event class for the deletion of an entity. + + + Constructs a new DeleteEvent instance. + The entity to be deleted. + The session from which the delete event was generated. + + + + + Returns the encapsulated entity to be deleed. + + + + Defines an event class for the dirty-checking of a session. + + + + A convience holder for all defined session event listeners. + + + + + Call on any listeners that implement + . + + + + + Defines an event class for the evicting of an entity. + + + + The main runtime interface between a Java application and Hibernate. This is the central + API class abstracting the notion of a persistence service. + + + + The lifecycle of a ISession is bounded by the beginning and end of a logical + transaction. (Long transactions might span several database transactions.) + + + The main function of the ISession is to offer create, find and delete operations + for instances of mapped entity classes. Instances may exist in one of two states: + + transient: not associated with any ISession + persistent: associated with a ISession + + + + Transient instances may be made persistent by calling Save(), Insert(), + or Update(). Persistent instances may be made transient by calling Delete(). + Any instance returned by a List(), Iterate(), Load(), or Create + method is persistent. + + + Save() results in an SQL INSERT, Delete() + in an SQL DELETE and Update() in an SQL UPDATE. Changes to + persistent instances are detected at flush time and also result in an SQL + UPDATE. + + + It is not intended that implementors be threadsafe. Instead each thread/transaction should obtain + its own instance from an ISessionFactory. + + + A ISession instance is serializable if its persistent classes are serializable + + + A typical transaction should use the following idiom: + + ISession sess = factory.OpenSession(); + ITransaction tx; + try { + tx = sess.BeginTransaction(); + //do some work + ... + tx.Commit(); + } catch (Exception e) { + if (tx != null) tx.Rollback(); + throw; + } finally { + sess.Close(); + } + + + + If the ISession throws an exception, the transaction must be rolled back and the session + discarded. The internal state of the ISession might not be consistent with the database + after the exception occurs. + + + + + + + Force the ISession to flush. + + + Must be called at the end of a unit of work, before commiting the transaction and closing + the session (Transaction.Commit() calls this method). Flushing if the process + of synchronising the underlying persistent store with persistable state held in memory. + + + + + Disconnect the ISession from the current ADO.NET connection. + + + If the connection was obtained by Hibernate, close it or return it to the connection + pool. Otherwise return it to the application. This is used by applications which require + long transactions. + + The connection provided by the application or + + + + Obtain a new ADO.NET connection. + + + This is used by applications which require long transactions + + + + + Reconnect to the given ADO.NET connection. + + This is used by applications which require long transactions + An ADO.NET connection + + + + End the ISession by disconnecting from the ADO.NET connection and cleaning up. + + + It is not strictly necessary to Close() the ISession but you must + at least Disconnect() it. + + The connection provided by the application or + + + + Cancel execution of the current query. + + + May be called from one thread to stop execution of a query in another thread. + Use with care! + + + + + Does this ISession contain any changes which must be + synchronized with the database? Would any SQL be executed if + we flushed this session? + + + + + Return the identifier of an entity instance cached by the ISession + + + Throws an exception if the instance is transient or associated with a different + ISession + + a persistent instance + the identifier + + + + Is this instance associated with this Session? + + an instance of a persistent class + true if the given instance is associated with this Session + + + + Remove this instance from the session cache. + + + Changes to the instance will not be synchronized with the database. + This operation cascades to associated instances if the association is mapped + with cascade="all" or cascade="all-delete-orphan". + + a persistent instance + + + + Return the persistent instance of the given entity class with the given identifier, + obtaining the specified lock mode. + + A persistent class + A valid identifier of an existing persistent instance of the class + The lock level + the persistent instance + + + + Return the persistent instance of the given entity class with the given identifier, + assuming that the instance exists. + + + You should not use this method to determine if an instance exists (use a query or + instead). Use this only to retrieve an instance + that you assume exists, where non-existence would be an actual error. + + A persistent class + A valid identifier of an existing persistent instance of the class + The persistent instance or proxy + + + + Return the persistent instance of the given entity class with the given identifier, + obtaining the specified lock mode. + + A persistent class + A valid identifier of an existing persistent instance of the class + The lock level + the persistent instance + + + + Return the persistent instance of the given entity class with the given identifier, + assuming that the instance exists. + + + You should not use this method to determine if an instance exists (use a query or + instead). Use this only to retrieve an instance that you + assume exists, where non-existence would be an actual error. + + A persistent class + A valid identifier of an existing persistent instance of the class + The persistent instance or proxy + + + + Read the persistent state associated with the given identifier into the given transient + instance. + + An "empty" instance of the persistent class + A valid identifier of an existing persistent instance of the class + + + + Persist all reachable transient objects, reusing the current identifier + values. Note that this will not trigger the Interceptor of the Session. + + a detached instance of a persistent class + + + + + Persist the state of the given detached instance, reusing the current + identifier value. This operation cascades to associated instances if + the association is mapped with cascade="replicate". + + + a detached instance of a persistent class + + + + + Persist the given transient instance, first assigning a generated identifier. + + + Save will use the current value of the identifier property if the Assigned + generator is used. + + A transient instance of a persistent class + The generated identifier + + + + Persist the given transient instance, using the given identifier. + + A transient instance of a persistent class + An unused valid identifier + + + + Persist the given transient instance, first assigning a generated identifier. (Or + using the current value of the identifier property if the assigned + generator is used.) + + The Entity name. + a transient instance of a persistent class + the generated identifier + + This operation cascades to associated instances if the + association is mapped with cascade="save-update". + + + + + Either Save() or Update() the given instance, depending upon the value of + its identifier property. + + + By default the instance is always saved. This behaviour may be adjusted by specifying + an unsaved-value attribute of the identifier property mapping + + A transient instance containing new or updated state + + + + Either or + the given instance, depending upon resolution of the unsaved-value checks + (see the manual for discussion of unsaved-value checking). + + The name of the entity + a transient or detached instance containing new or updated state + + + + This operation cascades to associated instances if the association is mapped + with cascade="save-update". + + + + + Update the persistent instance with the identifier of the given transient instance. + + + If there is a persistent instance with the same identifier, an exception is thrown. If + the given transient instance has a identifier, an exception will be thrown. + + A transient instance containing updated state + + + + Update the persistent state associated with the given identifier. + + + An exception is thrown if there is a persistent instance with the same identifier + in the current session. + + A transient instance containing updated state + Identifier of persistent instance + + + + Update the persistent instance with the identifier of the given detached + instance. + + The Entity name. + a detached instance containing updated state + + If there is a persistent instance with the same identifier, + an exception is thrown. This operation cascades to associated instances + if the association is mapped with cascade="save-update". + + + + + + + + + Copy the state of the given object onto the persistent object with the same + identifier. If there is no persistent instance currently associated with + the session, it will be loaded. Return the persistent instance. If the + given instance is unsaved or does not exist in the database, save it and + return it as a newly persistent instance. Otherwise, the given instance + does not become associated with the session. + + a transient instance with state to be copied + an updated persistent instance + + + + Copy the state of the given object onto the persistent object with the + given identifier. If there is no persistent instance currently associated + with the session, it will be loaded. Return the persistent instance. If + there is no database row with the given identifier, save the given instance + and return it as a newly persistent instance. Otherwise, the given instance + does not become associated with the session. + + a persistent or transient instance with state to be copied + the identifier of the instance to copy to + an updated persistent instance + + + + Remove a persistent instance from the datastore. + + + The argument may be an instance associated with the receiving ISession or a + transient instance with an identifier associated with existing persistent state. + + The instance to be removed + + + + Execute a query + + A query expressed in Hibernate's query language + A distinct list of instances + See for implications of cache usage. + + + + Execute a query, binding a value to a "?" parameter in the query string. + + The query string + A value to be bound to a "?" placeholder + The Hibernate type of the value + A distinct list of instances + See for implications of cache usage. + + + + Execute a query, binding an array of values to a "?" parameters in the query string. + + The query string + An array of values to be bound to the "?" placeholders + An array of Hibernate types of the values + A distinct list of instances + See for implications of cache usage. + + + + Execute a query and return the results in an interator. + + + + If the query has multiple return values, values will be returned in an array of + type object[]. + + + Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. So Enumerator() is usually a less efficient way to retrieve + object than List(). + + + The query string + An enumerator + + + + Execute a query and return the results in an interator, + binding a value to a "?" parameter in the query string. + + + + If the query has multiple return values, values will be returned in an array of + type object[]. + + + Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. So Enumerator() is usually a less efficient way to retrieve + object than List(). + + + The query string + A value to be written to a "?" placeholder in the query string + The hibernate type of the value + An enumerator + + + + Execute a query and return the results in an interator, + binding the values to "?"s parameters in the query string. + + + + If the query has multiple return values, values will be returned in an array of + type object[]. + + + Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. So Enumerator() is usually a less efficient way to retrieve + object than List(). + + + The query string + A list of values to be written to "?" placeholders in the query + A list of hibernate types of the values + An enumerator + + + + Apply a filter to a persistent collection. + + + A filter is a Hibernate query that may refer to this, the collection element. + Filters allow efficient access to very large lazy collections. (Executing the filter + does not initialize the collection.) + + A persistent collection to filter + A filter query string + The resulting collection + + + + Apply a filter to a persistent collection, binding the given parameter to a "?" placeholder + + + A filter is a Hibernate query that may refer to this, the collection element. + Filters allow efficient access to very large lazy collections. (Executing the filter + does not initialize the collection.) + + A persistent collection to filter + A filter query string + A value to be written to a "?" placeholder in the query + The hibernate type of value + A collection + + + + Apply a filter to a persistent collection, binding the given parameters to "?" placeholders. + + + A filter is a Hibernate query that may refer to this, the collection element. + Filters allow efficient access to very large lazy collections. (Executing the filter + does not initialize the collection.) + + A persistent collection to filter + A filter query string + The values to be written to "?" placeholders in the query + The hibernate types of the values + A collection + + + + Delete all objects returned by the query. + + The query string + Returns the number of objects deleted. + + + + Delete all objects returned by the query. + + The query string + A value to be written to a "?" placeholer in the query + The hibernate type of value. + The number of instances deleted + + + + Delete all objects returned by the query. + + The query string + A list of values to be written to "?" placeholders in the query + A list of Hibernate types of the values + The number of instances deleted + + + + Obtain the specified lock level upon the given object. + + A persistent instance + The lock level + + + + Obtain the specified lock level upon the given object. + + The Entity name. + a persistent or transient instance + the lock level + + This may be used to perform a version check (), to upgrade to a pessimistic + lock (), or to simply reassociate a transient instance + with a session (). This operation cascades to associated + instances if the association is mapped with cascade="lock". + + + + + Re-read the state of the given instance from the underlying database. + + + + It is inadvisable to use this to implement long-running sessions that span many + business tasks. This method is, however, useful in certain special circumstances. + + + For example, + + Where a database trigger alters the object state upon insert or update + After executing direct SQL (eg. a mass update) in the same session + After inserting a Blob or Clob + + + + A persistent instance + + + + Re-read the state of the given instance from the underlying database, with + the given LockMode. + + + It is inadvisable to use this to implement long-running sessions that span many + business tasks. This method is, however, useful in certain special circumstances. + + a persistent or transient instance + the lock mode to use + + + + Determine the current lock mode of the given object + + A persistent instance + The current lock mode + + + + Begin a unit of work and return the associated ITransaction object. + + + If a new underlying transaction is required, begin the transaction. Otherwise + continue the new work in the context of the existing underlying transaction. + The class of the returned object is determined by + the property transaction_factory + + A transaction instance + + + + Begin a transaction with the specified isolationLevel + + Isolation level for the new transaction + A transaction instance having the specified isolation level + + + + Creates a new Criteria for the entity class. + + The class to Query + An ICriteria object + + + + Creates a new Criteria for the entity class with a specific alias + + The class to Query + The alias of the entity + An ICriteria object + + + + Create a new instance of Query for the given query string + + A hibernate query string + The query + + + + Create a new instance of Query for the given collection and filter string + + A persistent collection + A hibernate query + A query + + + + Obtain an instance of for a named query string defined in the + mapping file. + + The name of a query defined externally. + An from a named query string. + + The query can be either in HQL or SQL format. + + + + + Create a new instance of IQuery for the given SQL string. + + a query expressed in SQL + a table alias that appears inside {} in the SQL string + the returned persistent class + An from the SQL string + + + + Create a new instance of for the given SQL string. + + a query expressed in SQL + an array of table aliases that appear inside {} in the SQL string + the returned persistent classes + An from the SQL string + + + + Create a new instance of for the given SQL query string. + + a query expressed in SQL + An from the SQL string + + + + Completely clear the session. Evict all loaded instances and cancel all pending + saves, updates and deletions. Do not close open enumerables or instances of + ScrollableResults. + + + + + Return the persistent instance of the given entity class with the given identifier, or null + if there is no such persistent instance. (If the instance, or a proxy for the instance, is + already associated with the session, return that instance or proxy.) + + a persistent class + an identifier + a persistent instance or null + + + + Return the persistent instance of the given entity class with the given identifier, or null + if there is no such persistent instance. Obtain the specified lock mode if the instance + exists. + + a persistent class + an identifier + the lock mode + a persistent instance or null + + + + Return the persistent instance of the given named entity with the given identifier, + or null if there is no such persistent instance. (If the instance, or a proxy for the + instance, is already associated with the session, return that instance or proxy.) + + the entity name + an identifier + a persistent instance or null + + + + Strongly-typed version of + + + + + Strongly-typed version of + + + + + Return the entity name for a persistent entity + + a persistent entity + the entity name + + + + Enable the named filter for this current session. + + The name of the filter to be enabled. + The Filter instance representing the enabled filter. + + + + Retrieve a currently enabled filter by name. + + The name of the filter to be retrieved. + The Filter instance representing the enabled filter. + + + + Disable the named filter for the current session. + + The name of the filter to be disabled. + + + + Create a multi query, a query that can send several + queries to the server, and return all their results in a single + call. + + + An that can return + a list of all the results of all the queries. + Note that each query result is itself usually a list. + + + + + Sets the batch size of the session + + + + + + + Gets the session implementation. + + + This method is provided in order to get the NHibernate implementation of the session from wrapper implementions. + Implementors of the interface should return the NHibernate implementation of this method. + + + An NHibernate implementation of the interface + + + + + An that can return a list of all the results + of all the criterias. + + + + + + Starts a new Session with the given entity mode in effect. This secondary + Session inherits the connection, transaction, and other context + information from the primary Session. It doesn't need to be flushed + or closed by the developer. + + The entity mode to use for the new session. + The new session + + + + Determines at which points Hibernate automatically flushes the session. + + + For a readonly session, it is reasonable to set the flush mode to FlushMode.Never + at the start of the session (in order to achieve some extra performance). + + + + The current cache mode. + + Cache mode determines the manner in which this session can interact with + the second level cache. + + + + + Get the that created this instance. + + + + + Gets the ADO.NET connection. + + + Applications are responsible for calling commit/rollback upon the connection before + closing the ISession. + + + + + Is the ISession still open? + + + + + Is the ISession currently connected? + + + + + Get the current Unit of Work and return the associated ITransaction object. + + + + Get the statistics for this session. + + + + Instantiate an entity instance, using either an interceptor, + or the given persister + + + + Force an immediate flush + + + Cascade merge an entity instance + + + Cascade persist an entity instance + + + Cascade persist an entity instance during the flush process + + + Cascade refresh an entity instance + + + Cascade copy an entity instance + + + Cascade delete an entity instance + + + Get the ActionQueue for this session + + + + An event listener that requires access to mappings to + initialize state at initialization time. + + + + + An event that occurs when a collection wants to be initialized + + + + Called after deleting an item from the datastore + + + + + + + + + Called after inserting an item in the datastore + + + + + + + + + + Called after updating the datastore + + + + + + + + + + + Called before deleting an item from the datastore + + + + Return true if the operation should be vetoed + + + + + Called before inserting an item in the datastore + + + + Return true if the operation should be vetoed + + + + + Called before updating the datastore + + + + Return true if the operation should be vetoed + + + + + Values for listener type property. + + Unused + + + Not allowed in Xml. It represente de default value when an explicit type is assigned. + + + Xml value: auto-flush + + + Xml value: merge + + + Xml value: create + + + Xml value: create-onflush + + + Xml value: delete + + + Xml value: dirty-check + + + Xml value: evict + + + Xml value: flush + + + Xml value: flush-entity + + + Xml value: load + + + Xml value: load-collection + + + Xml value: lock + + + Xml value: refresh + + + Xml value: replicate + + + Xml value: save-update + + + Xml value: save + + + Xml value: pre-update + + + Xml value: update + + + Xml value: pre-load + + + Xml value: pre-delete + + + Xml value: pre-insert + + + Xml value: post-load + + + Xml value: post-insert + + + Xml value: post-update + + + Xml value: post-delete + + + Xml value: post-commit-update + + + Xml value: post-commit-insert + + + Xml value: post-commit-delete + + + Defines an event class for the loading of an entity. + + + + Defines an event class for the locking of an entity. + + + + + An event class for merge() and saveOrUpdateCopy() + + + + An event class for persist() + + + + Occurs after deleting an item from the datastore + + + + + Occurs after inserting an item in the datastore + + + + + Occurs after an an entity instance is fully loaded. + + + + + Occurs after the datastore is updated + + + + + Occurs before deleting an item from the datastore + + + + + Occurs before inserting an item in the datastore + + + + + Called before injecting property values into a newly loaded entity instance. + + + + + Occurs before updating the datastore + + + + + Defines an event class for the refreshing of an object. + + + + + Defines an event class for the replication of an entity. + + + + + An event class for saveOrUpdate() + + + + + Implementation of ADOException indicating problems with communicating with the + database (can also include incorrect ADO setup). + + + + + Wraps exceptions that occur during ADO.NET calls. + + + Exceptions thrown by various ADO.NET providers are not derived from + a common base class (SQLException in Java), so + is used instead in NHibernate. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Converts the given SQLException into NHibernate's ADOException hierarchy, as well as performing + appropriate logging. + + The converter to use. + The exception to convert. + An optional error message. + The SQL executed. + The converted . + + + + Converts the given SQLException into NHibernate's ADOException hierarchy, as well as performing + appropriate logging. + + The converter to use. + The exception to convert. + An optional error message. + The converted . + + + For the given , locates the . + The exception from which to extract the + The , or null. + + + + Implementation of ADOException indicating that the requested DML operation + resulted in a violation of a defined integrity constraint. + + + + + Returns the name of the violated constraint, if known. + + The name of the violated constraint, or null if not known. + + + + Implementation of ADOException indicating that evaluation of the + valid SQL statement against the given data resulted in some + illegal operation, mismatched types or incorrect cardinality. + + + + + The Configurable interface defines the contract for impls that + want to be configured prior to usage given the currently defined Hibernate properties. + + + + Configure the component, using the given settings and properties. + All defined startup properties. + + + + Defines a contract for implementations that know how to convert a + into NHibernate's hierarchy. + + + Inspired by Spring's SQLExceptionTranslator. + + Implementations must have a constructor which takes a + parameter. + + Implementations may implement if they need to perform + configuration steps prior to first use. + + + + + + Convert the given into NHibernate's ADOException hierarchy. + + The to be converted. + An optional error message. + The SQL that generate the exception + The resulting ADOException. + + + + Implementation of ADOException indicating a problem acquiring lock + on the database. + + + + A factory for building SQLExceptionConverter instances. + + + Build a SQLExceptionConverter instance. + The defined dialect. + The configuration properties. + An appropriate instance. + + First, looks for a property to see + if the configuration specified the class of a specific converter to use. If this + property is set, attempt to construct an instance of that class. If not set, or + if construction fails, the converter specific to the dialect will be used. + + + + + Builds a minimal converter. The instance returned here just always converts to . + + The minimal converter. + + + + Implementation of ADOException indicating that the SQL sent to the database + server was invalid (syntax error, invalid object references, etc). + + + + + A SQLExceptionConverter implementation which performs no conversion of + the underlying . + Interpretation of a SQL error based on + is not possible as using the ErrorCode (which is, however, vendor- + specific). Use of a ErrorCode-based converter should be preferred approach + for converting/interpreting SQLExceptions. + + + + Handle an exception not converted to a specific type based on the SQLState. + The exception to be handled. + An optional message + Optionally, the sql being performed when the exception occurred. + The converted exception; should never be null. + + + + Generates translators which uses the older hand-written parser to perform the translation. + + + + + Facade for generation of + and instances. + + + + + Construct a instance + capable of translating an HQL query string. + + + The query-identifier (used in collection). + This is typically the same as the queryString parameter except for the case of + split polymorphic queries which result in multiple physical sql queries. + + The query string to be translated + Currently enabled filters + The session factory + An appropriate translator. + + + + Construct a instance capable of + translating an HQL filter string. + + + The query-identifier (used in collection). + This is typically the same as the queryString parameter except for the case of + split polymorphic queries which result in multiple physical sql queries. + + The query string to be translated + Currently enabled filters + The session factory + An appropriate translator. + + + + Parses the hibernate query into its constituent clauses. + + + + + A parser is a state machine that accepts a string of tokens, + bounded by start() and end() and modifies a QueryTranslator. Parsers + are NOT intended to be threadsafe. They SHOULD be reuseable + for more than one token stream. + + + + + + + + + + + + + + + + + + + + + + + + Parses the from clause of a hibernate query, looking for tables and + aliases for the SQL query. + + + + + + + + FromPathExpressionParser + + + + + Parses an expression of the form foo.bar.baz and builds up an expression + involving two less table joins than there are path components. + + + + + + + + + + NOTE: we avoid joining to the next table if the named property is just the foreign key value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Used to hold column type in nested functions. + + + + + Parses the GROUP BY clause of an aggregate query + + + + + Parses the having clause of a hibernate query and translates it to an + SQL having clause. + + + + Parses the where clause of a hibernate query and translates it to an + SQL where clause. + + + + + + + + + + + + + + + + + + + + + + + + Parses the ORDER BY clause of a query + + + + + + + HQL lexical analyzer (not really a parser) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An instance of QueryTranslator translates a Hibernate query string to SQL. + + + + + Abstract superclass of object loading (and querying) strategies. + + +

+ This class implements useful common functionality that concrete loaders would delegate to. + It is not intended that this functionality would be directly accessed by client code (Hence, + all methods of this class are declared protected or private.) This class relies heavily upon the + interface, which is the contract between this class and + s that may be loaded by it. +

+

+ The present implementation is able to load any number of columns of entities and at most + one collection role per query. +

+
+
+ + + What lock mode does this load entities with? + + A Collection of lock modes specified dynamically via the Query Interface + + + + + Append FOR UPDATE OF clause, if necessary. This + empty superclass implementation merely returns its first + argument. + + + + + Does this query return objects that might be already cached by + the session, whose lock mode may need upgrading. + + + + + + Modify the SQL, adding lock hints and comments, if necessary + + + + + Execute an SQL query and attempt to instantiate instances of the class mapped by the given + persister from each row of the DataReader. If an object is supplied, will attempt to + initialize that object. If a collection is supplied, attempt to initialize that collection. + + + + + Loads a single row from the result set. This is the processing used from the + ScrollableResults where no collection fetches were encountered. + + The result set from which to do the load. + The session from which the request originated. + The query parameters specified by the user. + Should proxies be generated + The loaded "row". + + + + + Read any collection elements contained in a single row of the result set + + + + + Get the actual object that is returned in the user-visible result list. + + + This empty implementation merely returns its first argument. This is + overridden by some subclasses. + + + + + For missing objects associated by one-to-one with another object in the + result set, register the fact that the the object is missing with the + session. + + + + + Read one collection element from the current row of the ADO.NET result set + + + + + If this is a collection initializer, we need to tell the session that a collection + is being initilized, to account for the possibility of the collection having + no elements (hence no rows in the result set). + + + + + Read a row of EntityKeys from the IDataReader into the given array. + + + Warning: this method is side-effecty. If an id is given, don't bother going + to the IDataReader + + + + + + + + + + + Check the version of the object in the IDataReader against + the object version in the session cache, throwing an exception + if the vesrion numbers are different. + + + + + + + + + + + + Resolve any ids for currently loaded objects, duplications within the IDataReader, + etc. Instanciate empty objects to be initialized from the IDataReader. Return an + array of objects (a row of results) and an array of booleans (by side-effect) that determine + wheter the corresponding object should be initialized + + + + + The entity instance is already in the session cache + + + + + The entity instance is not in the session cache + + + + + Hydrate the state of an object from the SQL IDataReader, into + an array of "hydrated" values (do not resolve associations yet), + and pass the hydrated state to the session. + + + + + Determine the concrete class of an instance for the IDataReader + + + + + Advance the cursor to the first required row of the IDataReader + + + + + + + Should we pre-process the SQL string, adding a dialect-specific + LIMIT clause. + + + + + + + + Bind positional parameter values to the IDbCommand + (these are parameters specified by ?). + + + + + + + + + + Obtain an IDbCommand with all parameters pre-bound. Bind positional parameters, + named parameters, and limit parameters. + + + Creates an IDbCommand object and populates it with the values necessary to execute it against the + database to Load an Entity. + + The to use for the IDbCommand. + TODO: find out where this is used... + The SessionImpl this Command is being prepared in. + A CommandWrapper wrapping an IDbCommand that is ready to be executed. + + + + Some dialect-specific LIMIT clauses require the maximum last row number, + others require the maximum returned row count. + + + + + Bind parameters needed by the dialect-specific LIMIT clause + + The number of parameters bound + + + + Limits the number of rows returned by the Sql query if necessary. + + The IDbCommand to limit. + The RowSelection that contains the MaxResults info. + TODO: This does not apply to ADO.NET at all + + + + Fetch a IDbCommand, call SetMaxRows and then execute it, + advance to the first result and return an SQL IDataReader + + The to execute. + The to apply to the and . + true if result types need to be auto-discovered by the loader; false otherwise. + The to load in. + + An IDataReader advanced to the first record in RowSelection. + + + + Bind named parameters to the IDbCommand + + The that contains the parameters. + The named parameters (key) and the values to set. + The this Loader is using. + + + + + Called by subclasses that load entities + + + + + Called by subclasses that batch load entities + + + + + Called by subclasses that load collections + + + + + Called by wrappers that batch initialize collections + + + + + Called by subclasses that batch initialize collections + + + + + Return the query results, using the query cache, called + by subclasses that implement cacheable queries + + + + + + + + + + Actually execute a query, ignoring the query cache + + + + + + + + Calculate and cache select-clause suffixes. Must be + called by subclasses after instantiation. + + + + of + + + + The SqlString to be called; implemented by all subclasses + + + + The setter was added so that class inheriting from Loader could write a + value using the Property instead of directly to the field. + + + The scope is protected internal because the needs to + be able to get the SqlString of the when + it is parsing a subquery. + + + + + + An array of persisters of entity classes contained in each row of results; + implemented by all subclasses + + + The setter was added so that classes inheriting from Loader could write a + value using the Property instead of directly to the field. + + + + + An array of indexes of the entity that owns a one-to-one association + to the entity at the given index (-1 if there is no "owner") + + + + + An (optional) persister for a collection to be initialized; only collection loaders + return a non-null value + + + + + Get the index of the entity that owns the collection, or -1 + if there is no owner in the query results (i.e. in the case of a + collection initializer) or no collection. + + + + + Return false is this loader is a batch entity loader + + + + + Get the SQL table aliases of entities whose + associations are subselect-loadable, returning + null if this loader does not support subselect + loading + + + + + Identifies the query for statistics reporting, if null, + no statistics will be reported + + + + + Get the result set descriptor + + + + + Utility method that generates 0_, 1_ suffixes. Subclasses don't + necessarily need to use this algorithm, but it is intended that + they will in most cases. + + + + + Specialized interface for filters. + + + + + Defines the constract of an HQL->SQL translator. + + + + + Compile a "normal" query. This method may be called multiple times. Subsequent invocations are no-ops. + + Defined query substitutions. + Does this represent a shallow (scalar or entity-id) select? + There was a problem parsing the query string. + There was a problem querying defined mappings. + + + + Perform a list operation given the underlying query definition. + + The session owning this query. + The query bind parameters. + The query list results. + + + + + Perform a bulk update/delete operation given the underlying query defintion. + + The query bind parameters. + The session owning this query. + The number of entities updated or deleted. + + + + + Returns the column names in the generated SQL. + + the column names in the generated SQL. + + + + Information about any parameters encountered during translation. + + + + + The set of query spaces (table names) that the query referrs to. + + + + + The SQL string generated by the translator. + + + + + The HQL string processed by the translator. + + + + + Returns the filters enabled for this query translator. + + Filters enabled for this query execution. + + + + Returns an array of Types represented in the query result. + + Query return types. + + + + Returns an array of HQL aliases + + Returns an array of HQL aliases + + + + Does the translated query contain collection fetches? + + True if the query does contain collection fetched; false otherwise. + + + + Compile a filter. This method may be called multiple + times. Subsequent invocations are no-ops. + + the role name of the collection used as the basis for the filter. + Defined query substitutions. + Does this represent a shallow (scalar or entity-id) select? + + + Construct a query translator + + A unique identifier for the query of which this + translation is part; typically this is the original, user-supplied query string. + + + The "preprocessed" query string; at the very least + already processed by {@link org.hibernate.hql.QuerySplitter}. + + Any enabled filters. + The session factory. + + + + Construct a query translator + + + + + Compile a subquery + + + + + + Compile a "normal" query. This method may be called multiple + times. Subsequent invocations are no-ops. + + + + + Compile a filter. This method may be called multiple + times. Subsequent invocations are no-ops. + + + + + Compile the query (generate the SQL). + + + + + WARNING: side-effecty + + + + + Extract the complete clause of function. + + The list of tokens + The index of the list that represent the founded function. + String trepresentation of each token. + Each token can be string or SqlString + + + Used for collection filters + + + + + + + Persisters for the return values of a List style query + + + The Persisters stored by QueryTranslator have to be . The + setter will attempt to cast the ILoadable array passed in into an + IQueryable array. + + + + + Types of the return values of an Enumerate() style query. + Return an array of s. + + + + + + + + Is this query called by Scroll() or Iterate()? + + true if it is, false if it is called by find() or list() + + + + + + + + + + Parsers the select clause of a hibernate query, looking + for a table (well, really class) alias. + + + + + + + + + + + + + + + + + + + + + + + Wraps SessionFactoryImpl, adding more lookup behaviors and encapsulating some of the error handling. + + + + + Provides utility methods for generating HQL / SQL names. + Shared by both the 'classic' and 'new' query translators. + + + + + A problem occurred translating a Hibernate query to SQL due to invalid query syntax, etc. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + The query that contains the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets or sets the of HQL that caused the Exception. + + + + + Gets a message that describes the current . + + The error message that explains the reason for this exception including the HQL. + + + + Handle Hibernate "implicit" polymorphism, by translating the query string into + several "concrete" queries against mapped classes. + + + + + + + + + Abstract InsertGeneratedIdentifierDelegate implementation where the + underlying strategy causes the generated identitifer to be returned as an + effect of performing the insert statement. Thus, there is no need for an + additional sql statement to determine the generated identitifer. + + + + + Responsible for handling delegation relating to variants in how + insert-generated-identifier generator strategies dictate processing: +
    +
  • building the sql insert statement
  • +
  • determination of the generated identifier value
  • +
+
+
+ + + Build a specific to the delegate's mode + of handling generated key values. + + The insert object. + + + + Perform the indicated insert SQL statement and determine the identifier value generated. + + + + + The generated identifier value. + + + + Abstract InsertGeneratedIdentifierDelegate implementation where the + underlying strategy requires an subsequent select after the insert + to determine the generated identifier. + + + + Extract the generated key value from the given result set. + The session + The result set containing the generated primay key values. + The entity being saved. + The generated identifier + + + Bind any required parameter values into the SQL command {@link #getSelectSQL}. + The session + The prepared {@link #getSelectSQL SQL} command + The entity being saved. + + + Get the SQL statement to be used to retrieve generated key values. + The SQL command string + + + + Nothing more than a distinguishing subclass of Insert used to indicate + intent. + Some subclasses of this also provided some additional + functionality or semantic to the genernated SQL statement string. + + + + + A class that builds an INSERT sql statement. + + + + + + + + Builds a SqlString from the internal data. + + A valid SqlString that can be converted into an IDbCommand + + + + Adds the Property's columns to the INSERT sql + + The column name for the Property + The IType of the property. + The SqlInsertBuilder. + The column will be associated with a parameter. + + + + Add a column with a specific value to the INSERT sql + + The name of the Column to add. + The value to set for the column. + The NHibernateType to use to convert the value to a sql string. + The SqlInsertBuilder. + + + + Add a column with a specific value to the INSERT sql + + The name of the Column to add. + A valid sql string to set as the value of the column. + The SqlInsertBuilder. + + + + Specialized IdentifierGeneratingInsert which appends the database + specific clause which signifies to return generated IDENTITY values + to the end of the insert statement. + + + + + The general contract between a class that generates unique + identifiers and the . + + + + It is not intended that this interface ever be exposed to the + application. It is intended that users implement this interface + to provide custom identifier generation strategies. + + + Implementors should provide a public default constructor. + + + Implementations that accept configuration parameters should also + implement . + + + Implementors must be threadsafe. + + + + + + Generate a new identifier + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier + + + + The IdentityGenerator for autoincrement/identity key generation. + + The this id is being generated in. + The entity the id is being generated for. + + IdentityColumnIndicator Indicates to the Session that identity (i.e. identity/autoincrement column) + key generation should be used. + + + + + An that returns the current identifier + assigned to an instance. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="assigned" /> +

+
+
+ + + + + + Generates a new identifier by getting the value of the identifier + for the obj parameter. + + The this id is being generated in. + The entity for which the id is being generated. + The value that was assigned to the mapped id's property. + + Thrown when a is passed in as the obj or + if the identifier of obj is null. + + + + + An that returns a Int64 constructed from the system + time and a counter value. Not safe for use in a clustser! + + + + + An that uses the value of + the id property of an associated object + + + + This id generation strategy is specified in the mapping file as + + <generator class="foreign"> + <param name="property">AssociatedObject</param> + </generator> + + + The mapping parameter property is required. + + + + + An IdentiferGenerator that supports "configuration". + + + + + Configure this instance, given the values of parameters + specified by the user as <param> elements. + This method is called just once, followed by instantiation. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generates an identifer from the value of a Property. + + The this id is being generated in. + The entity for which the id is being generated. + + The identifier value from the associated object or + if the session + already contains obj. + + + + + Configures the ForeignGenerator by reading the value of property + from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + Thrown if the key property is not found in the parms parameter. + + + + + An that generates values + using a strategy suggested Jimmy Nilsson's + article + on informit.com. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="guid.comb" /> +

+

+ The comb algorithm is designed to make the use of GUIDs as Primary Keys, Foreign Keys, + and Indexes nearly as efficient as ints. +

+

+ This code was contributed by Donald Mull. +

+
+
+ + + Generate a new using the comb algorithm. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Generate a new using the comb algorithm. + + + + + An that generates values + using Guid.NewGuid(). + + +

+ This id generation strategy is specified in the mapping file as + <generator class="guid" /> +

+
+
+ + + Generate a new for the identifier. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Thrown by implementation class when ID generation fails + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Factory methods for IdentifierGenerator framework. + + +

The built in strategies for identifier generation in NHibernate are:

+ + + strategy + Implementation of strategy + + + assigned + + + + counter + + + + foreign + + + + guid + + + + guid.comb + + + + hilo + + + + identity + + + + native + + Chooses between , + , and based on the + 's capabilities. + + + + seqhilo + + + + sequence + + + + uuid.hex + + + + uuid.string + + + +
+
+ + Get the generated identifier when using identity columns + The to read the identifier value from. + The the value should be converted to. + The the value is retrieved in. + The value for the identifier. + + + + Gets the value of the identifier from the and + ensures it is the correct . + + The to read the identifier value from. + The the value should be converted to. + The the value is retrieved in. + + The value for the identifier. + + + Thrown if there is any problem getting the value from the + or with converting it to the . + + + + + An where the key is the strategy and + the value is the for the strategy. + + + + + When this is returned by Generate() it indicates that the object + has already been saved. + + + String.Empty + + + + + When this is return + + + + + Initializes the static fields in . + + + + + Creates an from the named strategy. + + + The name of the generator to create. This can be one of the NHibernate abbreviations (ie - native, + sequence, guid.comb, etc...), a full class name if the Type is in the NHibernate assembly, or + a full type name if the strategy is in an external assembly. + + The that the retured identifier should be. + An of <param> values from the mapping. + The to help with Configuration. + + An instantiated and configured . + + + Thrown if there are any exceptions while creating the . + + + + + Create the correct boxed for the identifier. + + The value of the new identifier. + The the identifier should be. + + The identifier value converted to the . + + + The type parameter must be an , , + or . + + + + + An that indicates to the that identity + (ie. identity/autoincrement column) key generation should be used. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="identity" /> + or if the database natively supports identity columns + <generator class="native" /> +

+

+ This indicates to NHibernate that the database generates the id when + the entity is inserted. +

+
+
+ + + Delegate for dealing with IDENTITY columns where the dialect supports returning + the generated IDENTITY value directly from the insert statement. + + + + + Delegate for dealing with IDENTITY columns where the dialect requires an + additional command execution to retrieve the generated IDENTITY value + + + + The configuration parameter holding the entity name + + + + An IIdentifierGenerator that returns a Int64, constructed by + counting from the maximum primary key value at startup. Not safe for use in a + cluster! + + + + java author Gavin King, .NET port Mark Holden + + + Mapping parameters supported, but not usually needed: table, column. + + + + + + + + + + + + + + + + + + + + + The configuration parameter holding the schema name + + + + The configuration parameter holding the table name for the + generated id + + + + + The configuration parameter holding the table names for all + tables for which the id must be unique + + + + + The configuration parameter holding the primary key column + name of the generated id + + + + The configuration parameter holding the catalog name + + + + An that requires creation of database objects + All s that also implement + An have access to a special mapping parameter: schema + + + + + The SQL required to create the underlying database objects + + The to help with creating the sql. + + An array of objects that contain the sql to create the + necessary database objects. + + + + + The SQL required to remove the underlying database objects + + The to help with creating the sql. + + A that will drop the database objects. + + + + + Return a key unique to the underlying database objects. + + + A key unique to the underlying database objects. + + + Prevents us from trying to create/remove them multiple times + + + + + A persister that may have an identity assigned by execution of a SQL INSERT. + + + + + Concrete IEntityPersisters implement mapping and persistence logic for a particular class. + + + Implementors must be threadsafe (preferably immutable) and must provide a constructor of type + matching the signature of: (PersistentClass, SessionFactoryImplementor) + + + + + Finish the initialization of this object, once all ClassPersisters have been + instantiated. Called only once, before any other method. + + + + + Determine whether the given name represents a subclass entity + (or this entity itself) of the entity mapped by this persister. + + The entity name to be checked. + + True if the given entity name represents either the entity mapped by this persister or one of its subclass entities; + false otherwise. + + + + + Get the type of a particular property + + + + + + Locate the property-indices of all properties considered to be dirty. + The current state of the entity (the state to be checked). + The previous state of the entity (the state to be checked against). + The entity for which we are checking state dirtiness. + The session in which the check is ccurring. + or the indices of the dirty properties + + + Locate the property-indices of all properties considered to be dirty. + The old state of the entity. + The current state of the entity. + The entity for which we are checking state modification. + The session in which the check is ccurring. + return or the indicies of the modified properties + + + + Retrieve the current state of the natural-id properties from the database. + + + The identifier of the entity for which to retrieve the naturak-id values. + + + The session from which the request originated. + + The natural-id snapshot. + + + + Load an instance of the persistent class. + + + + + Do a version check (optional operation) + + + + + Persist an instance + + + + + Persist an instance, using a natively generated identifier (optional operation) + + + + + Delete a persistent instance + + + + + Update a persistent instance + + The id. + The fields. + The dirty fields. + if set to [has dirty collection]. + The old fields. + The old version. + The obj. + The rowId + The session. + + + + Get the current database state of the object, in a "hydrated" form, without resolving identifiers + + + + if select-before-update is not enabled or not supported + + + + Get the current version of the object, or return null if there is no row for + the given identifier. In the case of unversioned data, return any object + if the row exists. + + + + + + + Try to discover the entity mode from the entity instance + + + Has the class actually been bytecode instrumented? + + + Called just after the entities properties have been initialized + + + Called just after the entity has been reassociated with the session + + + + Create a new proxy instance + + + + + + + Is this a new transient instance? + + + Return the values of the insertable properties of the object (including backrefs) + + + + Perform a select to retrieve the values of any generated properties + back from the database, injecting these generated values into the + given entity as well as writing this state to the persistence context. + + + Note, that because we update the persistence context here, callers + need to take care that they have already written the initial snapshot + to the persistence context before calling this method. + + The entity's id value. + The entity for which to get the state. + The entity state (at the time of Save). + The session. + + + + Perform a select to retrieve the values of any generated properties + back from the database, injecting these generated values into the + given entity as well as writing this state to the persistence context. + + + Note, that because we update the persistence context here, callers + need to take care that they have already written the initial snapshot + to the persistence context before calling this method. + + The entity's id value. + The entity for which to get the state. + The entity state (at the time of Save). + The session. + + + + The persistent class, or null + + + + + Does the class implement the ILifecycle inteface? + + + + + Does the class implement the IValidatable interface? + + + + + Get the proxy interface that instances of this concrete class will be cast to + + + + + Set the given values to the mapped properties of the given object + + + + + Set the value of a particular property + + + + + Return the values of the mapped properties of the object + + + + + Get the value of a particular property + + + + + Get the value of a particular property + + + + + Get the identifier of an instance ( throw an exception if no identifier property) + + + + + Set the identifier of an instance (or do nothing if no identifier property) + + The object to set the Id property on. + The value to set the Id property to. + The EntityMode + + + + Get the version number (or timestamp) from the object's version property (or return null if not versioned) + + + + + Create a class instance initialized with the given identifier + + + + + Determines whether the specified entity is an instance of the class + managed by this persister. + + The entity. + The EntityMode + + if the specified entity is an instance; otherwise, . + + + + Does the given instance have any uninitialized lazy properties? + + + + Set the identifier and version of the given instance back + to its "unsaved" value, returning the id + + + + Get the persister for an instance of this class or a subclass + + + + Check the version value trough . + + The snapshot entity state + The result of . + NHibernate-specific feature, not present in H3.2 + + + + The ISessionFactory to which this persister "belongs". + + + + + Returns an object that identifies the space in which identifiers of + this entity hierarchy are unique. + + + + + The entity name which this persister maps. + + + + + Retrieve the underlying entity metamodel instance... + + The metamodel + + + + Returns an array of objects that identify spaces in which properties of + this entity are persisted, for instances of this class only. + + The property spaces. + + For most implementations, this returns the complete set of table names + to which instances of the mapped entity are persisted (not accounting + for superclass entity mappings). + + + + + Returns an array of objects that identify spaces in which properties of + this entity are persisted, for instances of this class and its subclasses. + + + Much like , except that here we include subclass + entity spaces. + + The query spaces. + + + + Are instances of this class mutable? + + + + + Determine whether the entity is inherited one or more other entities. + In other words, is this entity a subclass of other entities. + + True if other entities extend this entity; false otherwise. + + + + Is the identifier assigned before the insert by an IDGenerator or is it returned + by the Insert() method? + + + This determines which form of Insert() will be called. + + + + + Are instances of this class versioned by a timestamp or version number column? + + + + + Get the type of versioning (optional operation) + + + + + Which property holds the version number? (optional operation) + + + + + If the entity defines a natural id (), which + properties make up the natural id. + + + The indices of the properties making of the natural id; or + null, if no natural id is defined. + + + + + Return the IIdentifierGenerator for the class + + + + + Get the Hibernate types of the class properties + + + + + Get the names of the class properties - doesn't have to be the names of the actual + .NET properties (used for XML generation only) + + + + + Gets if the Property is insertable. + + if the Property's value can be inserted. + + This is for formula columns and if the user sets the insert attribute on the <property> element. + + + + Which of the properties of this class are database generated values on insert? + + + Which of the properties of this class are database generated values on update? + + + + Properties that may be dirty (and thus should be dirty-checked). These + include all updatable properties and some associations. + + + + + Get the nullability of the properties of this class + + + + + Get the "versionability" of the properties of this class (is the property optimistic-locked) + + if the property is optimistic-locked; otherwise, . + + + + Get the cascade styles of the properties (optional operation) + + + + + Get the identifier type + + + + + Get the name of the indentifier property (or return null) - need not return the + name of an actual .NET property + + + + + Should we always invalidate the cache instead of recaching updated state + + + + + Should lazy properties of this entity be cached? + + + + + Get the cache (optional operation) + + + + Get the cache structure + + + + Get the user-visible metadata for the class (optional operation) + + + + + Is batch loading enabled? + + + + Is select snapshot before update enabled? + + + + Does this entity contain a version property that is defined + to be database generated? + + + + + Does this class support dynamic proxies? + + + + + Do instances of this class contain collections? + + + + + Determine whether any properties of this entity are considered mutable. + + + True if any properties of the entity are mutable; false otherwise (meaning none are). + + + + + Determine whether this entity contains references to persistent collections + which are fetchable by subselect? + + + True if the entity contains collections fetchable by subselect; false otherwise. + + + + + Does this class declare any cascading save/update/deletes? + + + + + Does the class have a property holding the identifier value? + + + + + Determine whether detahced instances of this entity carry their own + identifier value. + + + True if either (1) or + (2) the identifier is an embedded composite identifier; false otherwise. + + + The other option is the deprecated feature where users could supply + the id during session calls. + + + + + Determine whether this entity defines a natural identifier. + + True if the entity defines a natural id; false otherwise. + + + + Determine whether this entity defines any lazy properties (ala + bytecode instrumentation). + + + True if the entity has properties mapped as lazy; false otherwise. + + + + + Gets if the Property is updatable + + if the Property's value can be updated. + + This is for formula columns and if the user sets the update attribute on the <property> element. + + + + + Does this class have a cache? + + + + + Does this entity define any properties as being database-generated on insert? + + + + + Does this entity define any properties as being database-generated on update? + + + + + Get a SQL select string that performs a select based on a unique + key determined by the given property name). + + + The name of the property which maps to the + column(s) to use in the select statement restriction. + + The SQL select string + + + + Get the database-specific SQL command to retrieve the last + generated IDENTITY value. + + + + The names of the primary key columns in the root table. + The primary key column names. + + + + An that generates Int64 values using an + oracle-style sequence. A higher performance algorithm is + . + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="sequence"> + <param name="sequence">uid_sequence</param> + <param name="schema">db_schema</param> + </generator> + +

+

+ The sequence parameter is required while the schema is optional. +

+
+
+ + + The name of the sequence parameter. + + + + + The parameters parameter, appended to the create sequence DDL. + For example (Oracle): INCREMENT BY 1 START WITH 1 MAXVALUE 100 NOCACHE. + + + + + Configures the SequenceGenerator by reading the value of sequence and + schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate an , , or + for the identifier by using a database sequence. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a , , or . + + + + The SQL required to create the database objects for a SequenceGenerator. + + The to help with creating the sql. + + An array of objects that contain the Dialect specific sql to + create the necessary database objects for the SequenceGenerator. + + + + + The SQL required to remove the underlying database objects for a SequenceGenerator. + + The to help with creating the sql. + + A that will drop the database objects for the SequenceGenerator. + + + + + Return a key unique to the underlying database objects for a SequenceGenerator. + + + The configured sequence name. + + + + + An that combines a hi/lo algorithm with an underlying + oracle-style sequence that generates hi values. + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="seqhilo"> + <param name="sequence">uid_sequence</param> + <param name="max_lo">max_lo_value</param> + <param name="schema">db_schema</param> + </generator> + +

+

+ The sequence parameter is required, the max_lo and schema are optional. +

+

+ The user may specify a max_lo value to determine how often new hi values are + fetched. If sequences are not avaliable, TableHiLoGenerator might be an + alternative. +

+
+
+ + + The name of the maximum low value parameter. + + + + + Configures the SequenceHiLoGenerator by reading the value of sequence, max_lo, + and schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate an , , or + for the identifier by using a database sequence. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a , , or . + + + + An that uses a database table to store the last + generated value. + + +

+ It is not intended that applications use this strategy directly. However, + it may be used to build other (efficient) strategies. The return type is + System.Int32 +

+

+ The hi value MUST be fetched in a seperate transaction to the ISession + transaction so the generator must be able to obtain a new connection and commit it. + Hence this implementation may not be used when the user is supplying connections. +

+

+ The mapping parameters table and column are required. +

+
+
+ + + An additional where clause that is added to + the queries against the table. + + + + + The name of the column parameter. + + + + + The name of the table parameter. + + + + Default column name + + + Default table name + + + + Configures the TableGenerator by reading the value of table, + column, and schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate a , , or + for the identifier by selecting and updating a value in a table. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a , , or . + + + + The SQL required to create the database objects for a TableGenerator. + + The to help with creating the sql. + + An array of objects that contain the Dialect specific sql to + create the necessary database objects and to create the first value as 1 + for the TableGenerator. + + + + + The SQL required to remove the underlying database objects for a TableGenerator. + + The to help with creating the sql. + + A that will drop the database objects for the TableGenerator. + + + + + Return a key unique to the underlying database objects for a TableGenerator. + + + The configured table name. + + + + + An that returns an Int64, constructed using + a hi/lo algorithm. + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="hilo"> + <param name="table">table</param> + <param name="column">id_column</param> + <param name="max_lo">max_lo_value</param> + <param name="schema">db_schema</param> + </generator> + +

+

+ The table and column parameters are required, the max_lo and + schema are optional. +

+

+ The hi value MUST be fecthed in a seperate transaction to the ISession + transaction so the generator must be able to obtain a new connection and + commit it. Hence this implementation may not be used when the user is supplying + connections. In that case a would be a + better choice (where supported). +

+
+
+ + + The name of the max lo parameter. + + + + + Configures the TableHiLoGenerator by reading the value of table, + column, max_lo, and schema from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate a for the identifier by selecting and updating a value in a table. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + An that returns a string of length + 32, 36, or 38 depending on the configuration. + + +

+ This id generation strategy is specified in the mapping file as + + <generator class="uuid.hex"> + <param name="format">format_string</param> + <param name="seperator">seperator_string</param> + </generator> + +

+

+ The format and seperator parameters are optional. +

+

+ The identifier string will consist of only hex digits. Optionally, the identifier string + may be generated with enclosing characters and seperators between each component + of the UUID. If there are seperators then the string length will be 36. If a format + that has enclosing brackets is used, then the string length will be 38. +

+

+ format is either + "N" (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx), + "D" (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), + "B" ({xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}), + or "P" ((xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)). These formats are described in + the Guid.ToString(String) method. + If no format is specified the default is "N". +

+

+ seperator is the char that will replace the "-" if specified. If no value is + configured then the default seperator for the format will be used. If the format "D", "B", or + "P" is specified, then the seperator will replace the "-". If the format is "N" then this + parameter will be ignored. +

+

+ This class is based on +

+
+
+ + + Generate a new for the identifier using the "uuid.hex" algorithm. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Configures the UUIDHexGenerator by reading the value of format and + seperator from the parms parameter. + + The the identifier should be. + An of Param values that are keyed by parameter name. + The to help with Configuration. + + + + Generate a Guid into a string using the format. + + A new Guid string + + + + An that returns a string of length + 16. + + +

+ This id generation strategy is specified in the mapping file as + <generator class="uuid.string" /> +

+ + The identifier string will NOT consist of only alphanumeric characters. Use + this only if you don't mind unreadable identifiers. + + + This impelementation was known to be incompatible with Postgres. + +
+
+ + + Generate a new for the identifier using the "uuid.string" algorithm. + + The this id is being generated in. + The entity for which the id is being generated. + The new identifier as a . + + + + Base class to create queries in "detached mode" where the NHibernate session is not available. + + + + + The behaviour of each method is basically the same of methods. + The main difference is on : + If you mix with named parameters setter, if same param name are found, + the value of the parameter setter override the value read from the POCO. + + + + + Interface to create queries in "detached mode" where the NHibernate session is not available. + All methods have the same semantics as the corresponding methods of the interface. + + + + + Get an executable instance of , + to actually run the query. + + + + Set the maximum number of rows to retrieve. + + The maximum number of rows to retreive. + + + + Sets the first row to retrieve. + + The first row to retreive. + + + + Enable caching of this query result set. + + Should the query results be cacheable? + + + Set the name of the cache region. + The name of a query cache region, or + for the default query cache + + + + Entities retrieved by this query will be loaded in + a read-only mode where Hibernate will never dirty-check + them or make changes persistent. + + Enable/Disable read -only mode + + + + The timeout for the underlying ADO query + + + + + + Set the lockmode for the objects idententified by the + given alias that appears in the FROM clause. + + alias a query alias, or this for a collection filter + + + + + Bind a value to an indexed parameter. + + Position of the parameter in the query, numbered from 0 + The possibly null parameter value + The Hibernate type + + + + Bind a value to a named query parameter + + The name of the parameter + The possibly null parameter value + The NHibernate . + + + + Bind a value to an indexed parameter, guessing the Hibernate type from + the class of the given object. + + The position of the parameter in the query, numbered from 0 + The non-null parameter value + + + + Bind a value to a named query parameter, guessing the NHibernate + from the class of the given object. + + The name of the parameter + The non-null parameter value + + + + Bind multiple values to a named query parameter. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + The Hibernate type of the values + + + + Bind multiple values to a named query parameter, guessing the Hibernate + type from the class of the first object in the collection. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + + + + Bind the property values of the given object to named parameters of the query, + matching property names with parameter names and mapping property types to + Hibernate types using heuristics. + + Any POCO + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a array to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a array. + + + + Bind an instance of a array to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a array. + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + A non-null instance of a . + The name of the parameter + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a mapped persistent class to an indexed parameter. + + Position of the parameter in the query string, numbered from 0 + A non-null instance of a persistent class + + + + Bind an instance of a mapped persistent class to a named parameter. + + The name of the parameter + A non-null instance of a persistent class + + + + Bind an instance of a persistent enumeration class to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a persistent enumeration + + + + Bind an instance of a persistent enumeration class to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a persistent enumeration + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + An instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + An instance of a . + + + + Override the current session flush mode, just for this query. + + + + + Set a strategy for handling the query results. This can be used to change + "shape" of the query result. + + + + + Set the value to ignore unknown parameters names. + + True to ignore unknown parameters names. + + + Override the current session cache mode, just for this query. + The cache mode to use. + this (for method chaining) + + + + Interface for DetachedQuery implementors. + + + When you are working with queries in "detached mode" you may need some additional services like clone, + copy of parameters from another query and so on. + + + + + Copy all properties to a given . + + The given . + + Usually the implementation use to set properties to the . + This mean that existing properties are merged/overriden. + + + + + Set only parameters to a given . + + The given . + + Existing parameters are merged/overriden. + + + + + Override all properties reading new values from a given . + + The given origin. + + + + Override all parameters reading new values from a given . + + The given origin. + + + Override the current session cache mode, just for this query. + The cache mode to use. + this (for method chaining) + + + + Fill all properties. + + The . + + Query properties are overriden/merged. + + + + + Copy all properties to a given . + + The given . + + The method use to set properties of . + + + + + Set only parameters to a given . + + The given . + + The method use to set properties of . + Existing parameters in are merged/overriden. + + + + + Clear all existing parameters and copy new parameters from a given origin. + + The origin of parameters. + The current instance + If is null. + + + + Abstract implementation of the IQuery interface. + + + + + An object-oriented representation of a NHibernate query. + + + An IQuery instance is obtained by calling ISession.CreateQuery(). This interface + exposes some extra functionality beyond that provided by ISession.Iterate() and + ISession.List(); + + + A particulare page of the result set may be selected by calling + SetMaxResults(), SetFirstResult(). The generated sql + depends on the capabilities of the . Some + Dialects are for databases that have built in paging (LIMIT) and those capabilities + will be used to limit the number of records returned by the sql statement. + If the database does not support LIMITs then all of the records will be returned, + but the objects created will be limited to the specific results requested. + + Named query parameters may be used + + + Named query parameters are tokens of the form :name in the query string. A value is bound + to the Int32 parameter :foo by calling + + SetParameter("foo", foo, NHibernateUtil.Int32); + + for example. A name may appear multiple times in the query string. + + + Unnamed parameters ? are also supported. To bind a value to an unnamed + parameter use a Set method that accepts an Int32 positional argument - numbered from + zero. + + + You may not mix and match unnamed parameters and named parameters in the same query. + + + Queries are executed by calling List() or Iterate(). A query + may be re-executed by subsequent invocations. Its lifespan is, however, bounded by the lifespan + of the ISession that created it. + + + Implementors are not intended to be threadsafe. + + + + + + Return the query results as an . If the query contains multiple results + per row, the results are returned in an instance of object[]. + + +

+ Entities returned as results are initialized on demand. The first SQL query returns + identifiers only. +

+

+ This is a good strategy to use if you expect a high number of the objects + returned to be already loaded in the or in the 2nd level cache. +

+
+
+ + + Strongly-typed version of . + + + + + + + Return the query results as an . If the query contains multiple results per row, + the results are returned in an instance of object[]. + + The filled with the results. + + This is a good strategy to use if you expect few of the objects being returned are already loaded + or if you want to fill the 2nd level cache. + + + + + Return the query results an place them into the . + + The to place the results in. + + + + Strongly-typed version of . + + + + + Convenience method to return a single instance that matches + the query, or null if the query returns no results. + + the single result or + + Thrown when there is more than one matching result. + + + + + Strongly-typed version of . + + + + + Set the maximum number of rows to retrieve. + + The maximum number of rows to retreive. + + + + Sets the first row to retrieve. + + The first row to retreive. + + + + Enable caching of this query result set. + + Should the query results be cacheable? + + + Set the name of the cache region. + The name of a query cache region, or + for the default query cache + + + + Entities retrieved by this query will be loaded in + a read-only mode where Hibernate will never dirty-check + them or make changes persistent. + + + + + The timeout for the underlying ADO query + + + + + + Set the lockmode for the objects idententified by the + given alias that appears in the FROM clause. + + alias a query alias, or this for a collection filter + + + + + Bind a value to an indexed parameter. + + Position of the parameter in the query, numbered from 0 + The possibly null parameter value + The Hibernate type + + + + Bind a value to a named query parameter + + The name of the parameter + The possibly null parameter value + The NHibernate . + + + + Bind a value to an indexed parameter, guessing the Hibernate type from + the class of the given object. + + The position of the parameter in the query, numbered from 0 + The non-null parameter value + + + + Bind a value to a named query parameter, guessing the NHibernate + from the class of the given object. + + The name of the parameter + The non-null parameter value + + + + Bind multiple values to a named query parameter. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + The Hibernate type of the values + + + + Bind multiple values to a named query parameter, guessing the Hibernate + type from the class of the first object in the collection. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + + + + Bind multiple values to a named query parameter. This is useful for binding + a list of values to an expression such as foo.bar in (:value_list). + + the name of the parameter + a collection of values to list + the Hibernate type of the values + + + + Bind multiple values to a named query parameter. The Hibernate type of the parameter is + first detected via the usage/position in the query and if not sufficient secondly + guessed from the class of the first object in the array. This is useful for binding a list of values + to an expression such as foo.bar in (:value_list). + + the name of the parameter + a collection of values to list + + + + Bind the property values of the given object to named parameters of the query, + matching property names with parameter names and mapping property types to + Hibernate types using heuristics. + + Any PONO + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a array to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a array. + + + + Bind an instance of a array to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a array. + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + A non-null instance of a . + The name of the parameter + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a mapped persistent class to an indexed parameter. + + Position of the parameter in the query string, numbered from 0 + A non-null instance of a persistent class + + + + Bind an instance of a mapped persistent class to a named parameter. + + The name of the parameter + A non-null instance of a persistent class + + + + Bind an instance of a persistent enumeration class to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a persistent enumeration + + + + Bind an instance of a persistent enumeration class to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a persistent enumeration + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to an indexed parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The position of the parameter in the query string, numbered from 0 + An instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + An instance of a . + + + + Override the current session flush mode, just for this query. + + + + + Set a strategy for handling the query results. This can be used to change + "shape" of the query result. + + + + Override the current session cache mode, just for this query. + The cache mode to use. + this (for method chaining) + + + + Execute the update or delete statement. + + The number of entities updated or deleted. + + + + The query string + + + + + The Hibernate types of the query result set. + + + + + The names of all named parameters of the query + + The parameter names, in no particular order + + + + Perform parameter validation. Used prior to executing the encapsulated query. + + + if true, the first ? will not be verified since + its needed for e.g. callable statements returning a out parameter + + + + + Guesses the from the param's value. + + The object to guess the of. + An for the object. + + Thrown when the param is null because the + can't be guess from a null value. + + + + + Guesses the from the . + + The to guess the of. + An for the . + + Thrown when the clazz is null because the + can't be guess from a null type. + + + + + Warning: adds new parameters to the argument by side-effect, as well as mutating the query string! + + + + + Warning: adds new parameters to the argument by side-effect, as well as mutating the query string! + + + + Override the current session cache mode, just for this query. + + The cache mode to use. + this (for method chaining) + + + Functionality common to stateless and stateful sessions + + + + Implementation of the interface for collection filters. + + + + + Default implementation of the , + for "ordinary" HQL queries (not collection filters) + + + + + + Implementation of the interface + + + + + Criteria is a simplified API for retrieving entities by composing + objects. + + + + Using criteria is a very convenient approach for functionality like "search" screens + where there is a variable number of conditions to be placed upon the result set. + + + The Session is a factory for ICriteria. Expression instances are usually obtained via + the factory methods on . eg: + + + IList cats = session.CreateCriteria(typeof(Cat)) + .Add( Expression.Like("name", "Iz%") ) + .Add( Expression.Gt( "weight", minWeight ) ) + .AddOrder( Order.Asc("age") ) + .List(); + + You may navigate associations using or . + + IList cats = session.CreateCriteria(typeof(Cat)) + .CreateCriteria("kittens") + .Add( Expression.like("name", "Iz%") ) + .List(); + + + Hibernate's query language is much more general and should be used for non-simple cases. + + + This is an experimental API. + + + + + + Set a limit upon the number of objects to be retrieved + + + + + + Set the first result to be retrieved + + + + + + Set a timeout for the underlying ADO.NET query + + + + + + + Add an Expression to constrain the results to be retrieved. + + + + + + + An an Order to the result set + + + + + + Get the results + + + + + + Get the results and fill the + + The list to fill with the results. + + + + Strongly-typed version of . + + + + + Strongly-typed version of . + + + + + Convenience method to return a single instance that matches + the query, or null if the query returns no results. + + the single result or + + If there is more than one matching result + + + + + Specify an association fetching strategy. Currently, only + one-to-many and one-to-one associations are supported. + + A dot seperated property path. + The Fetch mode. + + + + + Join an association, assigning an alias to the joined entity + + + + + + + + Join an association using the specified join-type, assigning an alias to the joined + association + + + + The type of join to use. + this (for method chaining) + + + + Create a new , "rooted" at the associated entity + + + + + + + Create a new , "rooted" at the associated entity, + assigning the given alias + + + + + + + + Create a new , "rooted" at the associated entity, + assigning the given alias and using the specified join type. + + A dot-separated property path + The alias to assign to the joined association (for later reference). + The type of join to use. + The created "sub criteria" + + + + Create a new , "rooted" at the associated entity, + using the specified join type. + + A dot-seperated property path + The type of join to use + The created "sub criteria" + + + + Set a strategy for handling the query results. This determines the + "shape" of the query result set. + + + + + + + + + + Set the lock mode of the current entity + + the lock mode + + + + + Set the lock mode of the aliased entity + + an alias + the lock mode + + + + + Enable caching of this query result set + + + + + + + Set the name of the cache region. + + the name of a query cache region, or + for the default query cache + + + + + Used to specify that the query results will be a projection (scalar in + nature). Implicitly specifies the projection result transformer. + + The projection representing the overall "shape" of the + query results. + This instance (for method chaining) + + + The individual components contained within the given + determines the overall "shape" of the query result. + + + + + + Allows to get a sub criteria by path. + Will return null if the criteria does not exists. + + The path. + + + + Alows to get a sub criteria by alias. + Will return null if the criteria does not exists + + The alias. + + + + Override the cache mode for this particular query. + The cache mode to use. + this (for method chaining) + + + + Get the alias of the entity encapsulated by this criteria instance. + + The alias for the encapsulated entity. + + + Override the cache mode for this particular query. + The cache mode to use. + this (for method chaining) + + + Override the cache mode for this particular query. + The cache mode to use. + this (for method chaining) + + + + Expose the batch functionality in ADO.Net 2.0 + Microsoft in its wisdom decided to make my life hard and mark it internal. + Through the use of Reflection and some delegates magic, I opened up the functionality. + + Observable performance benefits are 50%+ when used, so it is really worth it. + + + + + Append a command to the batch + + + + + + Executes the batch + + + This seems to be returning the total number of affected rows in all queries + + + + + Return the batch command to be executed + + + + + The number of commands batched in this instance + + + + + Append a command to the batch + + + + + + This is required because SqlClient.SqlCommandSet will throw if + the command has no parameters. + + + + + + Executes the batch + + + This seems to be returning the total number of affected rows in all queries + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Return the batch command to be executed + + + + + The number of commands batched in this instance + + + + + Named query in "detached mode" where the NHibernate session is not available. + + + + + + + + + Create a new instance of for a named query string defined in the mapping file. + + The name of a query defined externally. + + The query can be either in HQL or SQL format. + + + + + Get an executable instance of , to actually run the query. + + + + + Creates a new DetachedNamedQuery that is a deep copy of the current instance. + + The clone. + + + + Get the query name. + + + + + Query in "detached mode" where the NHibernate session is not available. + + + + + + + + Create a new instance of for the given query string. + + A hibernate query string + + + + Get an executable instance of , to actually run the query. + + + + + Creates a new DetachedQuery that is a deep copy of the current instance. + + The clone. + + + + Get the HQL string. + + + + + Provides an wrapper over the results of an . + + + This is the IteratorImpl in H2.0.3 + + + + + Create an wrapper over an . + + The to enumerate over. + The used to create the . + The to use to load objects. + The s contained in the . + The names of the columns in the . + The that should be applied to the . + Instantiator of the result holder (used for "select new SomeClass(...)" queries). + + The should already be positioned on the first record in . + + + + + Returns an enumerator that can iterate through the query results. + + + An that can be used to iterate through the query results. + + + + + Advances the enumerator to the next element of the query results. + + + if the enumerator was successfully advanced to the next query results + ; if the enumerator has passed the end of the query results. + + + + + + + + A flag to indicate if Dispose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this EnumerableImpl is being Disposed of or Finalized. + + The command is closed and the reader is disposed. This allows other ADO.NET + related actions to occur without needing to move all the way through the + EnumerableImpl. + + + + + Gets the current element in the query results. + + + The current element in the query results which is either an object or + an object array. + + + If the only returns one type of Entity then an object will + be returned. If this is a multi-column resultset then an object array will be + returned. + + + + + + + + + Type definition of Filter. Filter defines the user's view into enabled dynamic filters, + allowing them to set filter parameter values. + + + + + Set the named parameter's value list for this filter. + + The parameter's name. + The values to be applied. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Perform validation of the filter state. This is used to verify the + state of the filter after its enablement and before its use. + + + + + + Get the name of this filter. + + This filter's name. + + + + Get the filter definition containing additional information about the + filter (such as default-condition and expected parameter names/types). + + The filter definition + + + + Set the named parameter's value for this filter. + + The parameter's name. + The value to be applied. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Set the named parameter's value list for this filter. Used + in conjunction with IN-style filter criteria. + + The parameter's name. + The values to be expanded into an SQL IN list. + This FilterImpl instance (for method chaining). + + + + Perform validation of the filter state. This is used to verify the + state of the filter after its enablement and before its use. + + + + + Get the name of this filter. + + + + + Helper methods for rendering log messages and exception messages + + + + + Generate small message that can be used in traces and exception messages. + + The to create the string from. + The identifier of the object. + A descriptive in the format of [classname#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question. + The identifier of the object. + The . + A descriptive in the format of [classname#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question. + The identifier of the object. + The . + The NHibernate type of the identifier. + A descriptive in the format of [classname#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question + The id + A descriptive in the form [FooBar#id] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question + A descriptive in the form [FooBar] + + + + Generate small message that can be used in traces and exception messages. + + The for the class in question + The id + A descriptive in the form [collectionrole#id] + + + + Generate an info message string relating to a given property value + for an entity. + + The entity name + The name of the property + The property value. + An info string, in the form [Foo.bars#1] + + + + Generate an info message string relating to a particular managed + collection. + + The persister for the collection + The id value of the owner + The session factory + An info string, in the form [Foo.bars#1] + + + + Generate an info message string relating to a particular entity, + based on the given entityName and id. + + The defined entity name. + The entity id value. + An info string, in the form [FooBar#1]. + + + + Combines several queries into a single DB call + + + + + Get all the + + + + + Adds the specified criteria to the query + + The criteria. + + + + + Adds the specified detached criteria. + + The detached criteria. + + + + + Sets whatevert this criteria is cacheable. + + if set to true [cachable]. + + + + Set the cache region for thie criteria + + The region + + + + + Force a cache refresh + + + + + + + Initializes a new instance of the class. + + The session. + The factory. + + + Return a cacheable "disassembled" representation of the object. + the value to cache + the session + optional parent entity object (needed for collections) + the disassembled, deep cloned state + + + Reconstruct the object from its cached "disassembled" state. + the disassembled state from the cache + the session + the parent entity object + the the object + + + + Called before assembling a query result set from the query cache, to allow batch fetching + of entities missing from the second-level cache. + + + + + Combines sevaral queries into a single database call + + + + + Get all the + + + + + Add the specified HQL query to the multi query + + + + + Add the specified HQL query to the multi query + + + + + Add a named query to the multi query + + + + + Enable caching of this query result set. + + Should the query results be cacheable? + + + Set the name of the cache region. + The name of a query cache region, or + for the default query cache + + + Should the query force a refresh of the specified query cache region? + This is particularly useful in cases where underlying data may have been + updated via a seperate process (i.e., not modified through Hibernate) and + allows the application to selectively refresh the query cache regions + based on its knowledge of those events. + Should the query result in a forceable refresh of + the query cache? + + + + The timeout for the underlying ADO query + + + + + + Bind a value to a named query parameter + + The name of the parameter + The possibly null parameter value + The NHibernate . + + + + Bind a value to a named query parameter, guessing the NHibernate + from the class of the given object. + + The name of the parameter + The non-null parameter value + + + + Bind multiple values to a named query parameter. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + The Hibernate type of the values + + + + Bind multiple values to a named query parameter, guessing the Hibernate + type from the class of the first object in the collection. This is useful for binding a list + of values to an expression such as foo.bar in (:value_list) + + The name of the parameter + A collection of values to list + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a array to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a array. + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + A non-null instance of a . + The name of the parameter + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a mapped persistent class to a named parameter. + + The name of the parameter + A non-null instance of a persistent class + + + + Bind an instance of a persistent enumeration class to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a persistent enumeration + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + An instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Bind an instance of a to a named parameter + using an NHibernate . + + The name of the parameter + A non-null instance of a . + + + + Override the current session flush mode, just for this query. + + + + + Set a strategy for handling the query results. This can be used to change + "shape" of the query result. + + + + + Return the query results of all the queries + + + + + + + an actual entity object, not a proxy! + + + + + + Concrete implementation of a SessionFactory. + + + Has the following responsibilities: + + + Caches configuration settings (immutably) + + Caches "compiled" mappings - ie. + and + + + Caches "compiled" queries (memory sensitive cache) + + + Manages PreparedStatements/IDbCommands - how true in NH? + + + Delegates IDbConnection management to the + + + Factory for instances of + + + + This class must appear immutable to clients, even if it does all kinds of caching + and pooling under the covers. It is crucial that the class is not only thread safe + , but also highly concurrent. Synchronization must be used extremely sparingly. + + + + + + + + + + + + + + + + + + + Gets the hql query identified by the name. + + The name of that identifies the query. + + A hql query or if the named + query does not exist. + + + + + + + + + + + Get the return aliases of a query + + + + Return the names of all persistent (mapped) classes that extend or implement the + given class or interface, accounting for implicit/explicit polymorphism settings + and excluding mapped subclasses/joined-subclasses of other classes in the result. + + + + + + + + + + + Closes the session factory, releasing all held resources. + + cleans up used cache regions and "stops" the cache provider. + close the ADO.NET connection + + + + + + + + Get a new stateless session. + + + Get a new stateless session for the given ADO.NET connection. + + + + + + + + + + + + + + + + + + + + + + + + + + + Statistics SPI + + + + + + Get the statistics for this session factory + + + + Gets the ICurrentSessionContext instance attached to this session factory. + + + + + Delegate to handle the scenario of an entity not found by a specified id. + + + + + Delegate method to handle the scenario of an entity not found. + + The entityName (may be the class fullname) + The requested id not founded. + + + + A class that can be used as a Key in a Hashtable for + a Query Cache. + + + + + A class that can be used as a Key in a Hashtable for + a Query Cache. + + + + + Resolves lookups and deserialization. + + + + This is used heavily be Deserialization. Currently a SessionFactory is not really serialized. + All that is serialized is it's name and uid. During Deserializaiton the serialized SessionFactory + is converted to the one contained in this object. So if you are serializing across AppDomains + you should make sure that "name" is specified for the SessionFactory in the hbm.xml file and that the + other AppDomain has a configured SessionFactory with the same name. If + you are serializing in the same AppDomain then there will be no problem because the uid will + be in this object. + + + TODO: verify that the AppDomain statements are correct. + + + + + + + + + Adds an Instance of the SessionFactory to the local "cache". + + The identifier of the ISessionFactory. + The name of the ISessionFactory. + The ISessionFactory. + The configured properties for the ISessionFactory. + + + + Removes the Instance of the SessionFactory from the local "cache". + + The identifier of the ISessionFactory. + The name of the ISessionFactory. + The configured properties for the ISessionFactory. + + + + Returns a Named Instance of the SessionFactory from the local "cache" identified by name. + + The name of the ISessionFactory. + An instantiated ISessionFactory. + + + + Returns an Instance of the SessionFactory from the local "cache" identified by UUID. + + The identifier of the ISessionFactory. + An instantiated ISessionFactory. + + + + Concrete implementation of a Session, also the central, organizing component + of Hibernate's internal implementation. + + + Exposes two interfaces: ISession itself, to the application and ISessionImplementor + to other components of hibernate. This is where the hard stuff is... + NOT THREADSAFE + + + + + Constructor used to recreate the Session during the deserialization. + + + + + This is needed because we have to do some checking before the serialization process + begins. I don't know how to add logic in ISerializable.GetObjectData and have .net + write all of the serializable fields out. + + + + + Verify the ISession can be serialized and write the fields to the Serializer. + + + + + The fields are marked with [NonSerializable] as just a point of reference. This method + has complete control and what is serialized and those attributes are ignored. However, + this method should be in synch with the attributes for easy readability. + + + + + Once the entire object graph has been deserialized then we can hook the + collections, proxies, and entities back up to the ISession. + + + + + + Constructor used for OpenSession(...) processing, as well as construction + of sessions for GetCurrentSession(). + + The user-supplied connection to use for this session. + The factory from which this session was obtained + NOT USED + The timestamp for this session + The interceptor to be applied to this session + The entity-mode for this session + Should we auto flush before completion of transaction + Should we auto close after completion of transaction + The mode by which we should release JDBC connections. + + + + Constructor used in building "child sessions". + + The parent Session + The entity mode + + + + + + + Ensure that the locks are downgraded to + and that all of the softlocks in the have + been released. + + + + + Save a transient object. An id is generated, assigned to the object and returned + + + + + + + Save a transient object with a manually assigned ID + + + + + + + Delete a persistent object + + + + + Delete a persistent object (by explicit entity name) + + + + Retrieve a list of persistent objects using a Hibernate query + + + + + + + + + + + + + + + Give the interceptor an opportunity to override the default instantiation + + + + + + + Force an immediate flush + + + Cascade merge an entity instance + + + Cascade persist an entity instance + + + Cascade persist an entity instance during the flush process + + + Cascade refesh an entity instance + + + Cascade copy an entity instance + + + Cascade delete an entity instance + + + + detect in-memory changes, determine if the changes are to tables + named in the query and, if so, complete execution the flush + + + + + + + Load the data for the object with the specified id into a newly created object. + This is only called when lazily initializing a proxy. + Do NOT return a proxy. + + + + + Return the object with the specified id or throw exception if no row with that id exists. Defer the load, + return a new proxy or return an existing proxy if possible. Do not check if the object was deleted. + + + + + Load the data for the object with the specified id into a newly created object + using "for update", if supported. A new key will be assigned to the object. + This should return an existing proxy where appropriate. + + If the object does not exist in the database, an exception is thrown. + + + + + + + Thrown when the object with the specified id does not exist in the database. + + + + + Load the data for the object with the specified id into a newly created object + using "for update", if supported. A new key will be assigned to the object. + This should return an existing proxy where appropriate. + + If the object does not exist in the database, null is returned. + + + + + + + + + + + + This can be called from commit() or at the start of a List() method. + + Perform all the necessary SQL statements in a sensible order, to allow + users to repect foreign key constraints: + + Inserts, in the order they were performed + Updates + Deletion of collection elements + Insertion of collection elements + Deletes, in the order they were performed + + + + Go through all the persistent objects and look for collections they might be + holding. If they had a nonpersistable collection, substitute a persistable one + + + + + + Not for internal use + + + + + + + Get the id value for an object that is actually associated with the session. + This is a bit stricter than GetEntityIdentifierIfNotUnsaved(). + + + + + + + + + + + + + + called by a collection that wants to initialize itself + + + + + + + + + + A flag to indicate if Dispose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Just in case the user forgot to Commit() or Close() + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this Session is being Disposed of or Finalized. + + If this Session is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this Session back to life. + + + + + remove any hard references to the entity that are held by the infrastructure + (references held by application or other persistant instances are okay) + + + + + + + + + + + + + + + + + + + + + Get the ActionQueue for this session + + + + + + + Gets if the ISession is connected. + + + if the ISession is connected. + + + An ISession is considered connected if there is an (regardless + of its state) or if it the field connect is true. Meaning that it will connect + at the next operation that requires a connection. + + + + Get the statistics for this session. + + + Retrieves the configured event listeners from this event source. + + + + Implements SQL query passthrough + + + An example mapping is: + + <sql-query-name name="mySqlQuery"> + <return alias="person" class="eg.Person" /> + SELECT {person}.NAME AS {person.name}, {person}.AGE AS {person.age}, {person}.SEX AS {person.sex} + FROM PERSON {person} WHERE {person}.NAME LIKE 'Hiber%' + </sql-query-name> + + + + + + Declare a "root" entity, without specifying an alias + + + + + Declare a "root" entity + + + + + Declare a "root" entity, specifying a lock mode + + + + + Declare a "root" entity, without specifying an alias + + + + + Declare a "root" entity + + + + + Declare a "root" entity, specifying a lock mode + + + + + Declare a "joined" entity + + + + + Declare a "joined" entity, specifying a lock mode + + + + + Declare a scalar query result + + + + + Use a predefined named ResultSetMapping + + + + Constructs a SQLQueryImpl given a sql query defined in the mappings. + The representation of the defined sql-query. + The session to which this SQLQueryImpl belongs. + Metadata about parameters found in the query. + + + + A command-oriented API for performing bulk operations against a database. + + + A stateless session does not implement a first-level cache nor + interact with any second-level cache, nor does it implement + transactional write-behind or automatic dirty checking, nor do + operations cascade to associated instances. Collections are + ignored by a stateless session. Operations performed via a + stateless session bypass Hibernate's event model and + interceptors. Stateless sessions are vulnerable to data + aliasing effects, due to the lack of a first-level cache. + + For certain kinds of transactions, a stateless session may + perform slightly faster than a stateful session. + + + + Close the stateless session and release the ADO.NET connection. + + + Insert a entity. + A new transient instance + the identifier of the instance + + + Insert a row. + The entityName for the entity to be inserted + a new transient instance + the identifier of the instance + + + Update a entity. + a detached entity instance + + + Update a entity. + The entityName for the entity to be updated + a detached entity instance + + + Delete a entity. + a detached entity instance + + + Delete a entity. + The entityName for the entity to be deleted + a detached entity instance + + + Retrieve a entity. + a detached entity instance + + + Retrieve a entity. + + + a detached entity instance + + + + + Retrieve a entity, obtaining the specified lock mode. + + a detached entity instance + + + + Retrieve a entity, obtaining the specified lock mode. + + a detached entity instance + + + + Refresh the entity instance state from the database. + + The entity to be refreshed. + + + + Refresh the entity instance state from the database. + + The entityName for the entity to be refreshed. + The entity to be refreshed. + + + + Refresh the entity instance state from the database. + + The entity to be refreshed. + The LockMode to be applied. + + + + Refresh the entity instance state from the database. + + The entityName for the entity to be refreshed. + The entity to be refreshed. + The LockMode to be applied. + + + + Create a new instance of Query for the given HQL query string. + + Entities returned by the query are detached. + + + + Obtain an instance of for a named query string defined in + the mapping file. + + + The query can be either in HQL or SQL format. + Entities returned by the query are detached. + + + + + Create a new instance, for the given entity class, + or a superclass of an entity class. + + A class, which is persistent, or has persistent subclasses + The . + Entities returned by the query are detached. + + + + Create a new instance, for the given entity class, + or a superclass of an entity class, with the given alias. + + A class, which is persistent, or has persistent subclasses + The alias of the entity + The . + Entities returned by the query are detached. + + + + Create a new instance, for the given entity name. + + The entity name. + The . + Entities returned by the query are detached. + + + + Create a new instance, for the given entity name, + with the given alias. + + The entity name. + The alias of the entity + The . + Entities returned by the query are detached. + + + + Create a new instance of for the given SQL query string. + Entities returned by the query are detached. + + a SQL query + The + + + Begin a NHibernate transaction. + + + Get the current Hibernate transaction. + + + + Returns the current ADO.NET connection associated with this instance. + + + If the session is using aggressive connection release (as in a + CMT environment), it is the application's responsibility to + close the connection returned by this call. Otherwise, the + application should not close the connection. + + + + Close the stateless session and release the ADO.NET connection. + + + Insert a entity. + A new transient instance + the identifier of the instance + + + Insert a row. + The entityName for the entity to be inserted + a new transient instance + the identifier of the instance + + + Update a entity. + a detached entity instance + + + Update a entity. + The entityName for the entity to be updated + a detached entity instance + + + Delete a entity. + a detached entity instance + + + Delete a entity. + The entityName for the entity to be deleted + a detached entity instance + + + Retrieve a entity. + a detached entity instance + + + Retrieve a entity. + + + a detached entity instance + + + + + Retrieve a entity, obtaining the specified lock mode. + + a detached entity instance + + + + Retrieve a entity, obtaining the specified lock mode. + + a detached entity instance + + + + Refresh the entity instance state from the database. + + The entity to be refreshed. + + + + Refresh the entity instance state from the database. + + The entityName for the entity to be refreshed. + The entity to be refreshed. + + + + Refresh the entity instance state from the database. + + The entity to be refreshed. + The LockMode to be applied. + + + + Refresh the entity instance state from the database. + + The entityName for the entity to be refreshed. + The entity to be refreshed. + The LockMode to be applied. + + + + Create a new instance, for the given entity class, + or a superclass of an entity class. + + A class, which is persistent, or has persistent subclasses + The . + Entities returned by the query are detached. + + + + Create a new instance, for the given entity class, + or a superclass of an entity class, with the given alias. + + A class, which is persistent, or has persistent subclasses + The alias of the entity + The . + Entities returned by the query are detached. + + + + Create a new instance, for the given entity name. + + The entity name. + The . + Entities returned by the query are detached. + + + + Create a new instance, for the given entity name, + with the given alias. + + The entity name. + The alias of the entity + The . + Entities returned by the query are detached. + + + Begin a NHibernate transaction. + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + Get the current Hibernate transaction. + + + Contract for field interception handlers. + + + Use to associate the entity to which we are bound to the given session. + The session to which we are now associated. + + + The the given field initialized for the entity to which we are bound? + The name of the field to check + True if the given field is initialized; otherwise false. + + + Forcefully mark the entity as being dirty. + + + Clear the internal dirty flag. + + + Is the entity considered dirty? + True if the entity is dirty; otherwise false. + + + Is the entity to which we are bound completely initialized? + + + Helper class for dealing with enhanced entity classes. + + + Marker value for uninitialized properties + + + Contract for controlling how lazy properties get initialized. + + + Initialize the property, and return its new value + + + + Walker for collections of values and many-to-many associations + + + + + Superclass of walkers for collection initializers + + + + + + + + Add on association (one-to-one, many-to-one, or a collection) to a list + of associations to be fetched by outerjoin (if necessary) + + + + + Add on association (one-to-one, many-to-one, or a collection) to a list + of associations to be fetched by outerjoin + + + + + For an entity class, return a list of associations to be fetched by outerjoin + + + + + For a collection role, return a list of associations to be fetched by outerjoin + + + + + For a collection role, return a list of associations to be fetched by outerjoin + + + + + For an entity class, add to a list of associations to be fetched + by outerjoin + + + + + For a component, add to a list of associations to be fetched by outerjoin + + + + + For a composite element, add to a list of associations to be fetched by outerjoin + + + + + Extend the path by the given property name + + + + + Get the join type (inner, outer, etc) or -1 if the + association should not be joined. Override on + subclasses. + + + + + Use an inner join if it is a non-null association and this + is the "first" join in a series + + + + + Does the mapping, and Hibernate default semantics, specify that + this association should be fetched by outer joining + + + + + Override on subclasses to enable or suppress joining + of certain association types + + + + + Used to detect circularities in the joined graph, note that + this method is side-effecty + + + + + Used to detect circularities in the joined graph, note that + this method is side-effecty + + + + + Should we join this association? + + + + + Generate a sequence of LEFT OUTER JOIN clauses for the given associations. + + + + + Count the number of instances of IJoinable which are actually + also instances of ILoadable, or are one-to-many associations + + + + + Count the number of instances of which + are actually also instances of + which are being fetched by outer join + + + + + Get the order by string required for collection fetching + + + + + Render the where condition for a (batch) load by identifier / collection key + + + + + Generate a select list of columns containing all properties of the entity classes + + + + + Uniquely identifier a foreign key, so that we don't + join it more than once, and create circularities + + + + + We can use an inner join for first many-to-many association + + + + + Superclass for loaders that initialize collections + + + + + + + Implements logic for walking a tree of associated classes. + + + Generates an SQL select string containing all properties of those classes. + Tablse are joined using an ANSI-style left outer join. + + + + + An interface for collection loaders + + + + + Initialize the given collection + + + + + + + "Batch" loads collections, using multiple foreign key values in the SQL Where clause + + + + + Walker for one-to-many associations + + + + + + Loads one-to-many associations + + + The collection persister must implement . + For other collections, create a customized subclass of . + + + + + Implements subselect fetching for a one to many association + + + + + A for queries. + + + + + The superclass deliberately excludes collections + + + + + Don't bother with the discriminator, unless overridden by subclass + + + + + Use the discriminator, to narrow the select to instances + of the queried subclass, also applying any filters. + + + + + A Loader for queries. + + + Note that criteria + queries are more like multi-object Load()s than like HQL queries. + + + + + Get the names of the columns constrained + by this criterion. + + + + + Get the aliases of the columns constrained + by this criterion (for use in ORDER BY clause). + + + + + Get the a typed value for the given property value. + + + + + Optional, may return + + + + Substitues JDBC parameter placeholders (?) for all encountered + parameter specifications. It also tracks the positions of these + parameter specifications within the query string. This accounts for + ordinal-params, named-params, and ejb3-positional-params. + + @param sqlString The query string. + @return The SQL query with parameter substitution complete. + + + + that uses columnnames instead of generated aliases. + Aliases can still be overwritten via <return-property> + + + + + Type definition of CollectionAliases. + + + + + Returns the suffixed result-set column-aliases for columns making + up the key for this collection (i.e., its FK to its owner). + + The key result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the columns + making up the collection's index (map or list). + + The index result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the columns + making up the collection's elements. + + The element result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the column + defining the collection's identifier (if any). + + The identifier result-set column aliases. + + + + Returns the suffix used to unique the column aliases for this + particular alias set. + + The uniqued column alias suffix. + + + + Returns the suffixed result-set column-aliases for columns making up the key for this collection (i.e., its FK to + its owner). + + The key result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the collumns making up the collection's index (map or list). + + The index result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the columns making up the collection's elements. + + The element result-set column aliases. + + + + Returns the suffixed result-set column-aliases for the column defining the collection's identifier (if any). + + The identifier result-set column aliases. + + + + Returns the suffix used to unique the column aliases for this particular alias set. + + The uniqued column alias suffix. + + + + that chooses the column names over the alias names. + + + + + EntityAliases which handles the logic of selecting user provided aliases (via return-property), + before using the default aliases. + + + + + Metadata describing the SQL result set column aliases + for a particular entity + + + + + The result set column aliases for the property columns of a subclass + + + + + The result set column aliases for the primary key columns + + + + + The result set column aliases for the discriminator columns + + + + + The result set column aliases for the version columns + + + + + The result set column aliases for the property columns + + + + + The result set column alias for the Oracle row id + + + + + Calculate and cache select-clause suffixes. + + + + + Encapsulates the metadata available from the database result set. + + + + + Initializes a new instance of the class. + + The result set. + + + + Gets the column count in the result set. + + The column count. + + + + Gets the name of the column at the specified position. + + The (zero-based) position. + The column name. + + + + Gets the (zero-based) position of the column with the specified name. + + Name of the column. + The column position. + + + + Gets the Hibernate type of the specified column. + + The column position. + The Hibernate type. + + + + Abstract superclass for entity loaders that use outer joins + + + + + + + + Load an entity instance. If OptionalObject is supplied, load the entity + state into the given (uninitialized) object + + + + + "Batch" loads entities, using multiple primary key values in the + SQL where clause. + + + + + A walker for loaders that fetch entities + + + + + Disable outer join fetching if this loader obtains an + upgrade lock mode + + + + + Load an entity using outerjoin fetching to fetch associated entities. + + + The must implement . For other entities, + create a customized subclass of . + + + + + CollectionAliases which handles the logic of selecting user provided aliases (via return-property), + before using the default aliases. + + + + + Returns the suffixed result-set column-aliases for columns making up the key for this collection (i.e., its FK to + its owner). + + + + + Returns the suffixed result-set column-aliases for the collumns making up the collection's index (map or list). + + + + + Returns the suffixed result-set column-aliases for the columns making up the collection's elements. + + + + + Returns the suffixed result-set column-aliases for the column defining the collection's identifier (if any). + + + + + Returns the suffix used to unique the column aliases for this particular alias set. + + + + + Get the position of the join with the given alias in the + list of joins + + + + + Convenience base class for AuxiliaryDatabaseObjects. + + + This implementation performs dialect scoping checks strictly based on + dialect name comparisons. Custom implementations might want to do + instanceof-type checks. + + + + + Auxiliary database objects (i.e., triggers, stored procedures, etc) defined + in the mappings. Allows Hibernate to manage their lifecycle as part of + creating/dropping the schema. + + + + + Operations to create/drop the mapping element in the database. + + + + + When implemented by a class, generates the SQL string to create + the mapping element in the database. + + The to use for SQL rules. + + + + + A string that contains the SQL to create an object. + + + + + When implemented by a class, generates the SQL string to drop + the mapping element from the database. + + The to use for SQL rules. + + + + A string that contains the SQL to drop an object. + + + + + Add the given dialect name to the scope of dialects to which + this database object applies. + + The name of a dialect. + + + + Does this database object apply to the given dialect? + + The dialect to check against. + True if this database object does apply to the given dialect. + + + + Gets called by NHibernate to pass the configured type parameters to the implementation. + + + + + A NHibernate any type. + + + Polymorphic association to one of several tables. + + + + + Any value that maps to columns. + + + + + Represents an identifying key of a table: the value for primary key + of an entity, or a foreign key of a collection or join table or + joined subclass table. + + + + + A value is anything that is persisted by value, instead of + by reference. It is essentially a Hibernate IType, together + with zero or more columns. Values are wrapped by things with + higher level semantics, for example properties, collections, + classes. + + + + + + + + + + Determines if the Value is part of a valid mapping. + + The to validate. + + if the Value is part of a valid mapping, + otherwise. + + + + Mainly used to make sure that Value maps to the correct number + of columns. + + + + + Gets the number of columns that this value spans in the table. + + + + + Gets an of objects + that this value is stored in. + + + + + Gets the to read/write the Values. + + + + + Gets the this Value is stored in. + + + + + Gets a indicating if this Value is unique. + + + + + Gets a indicating if this Value can have + null values. + + + + + Gets a indicating if this is a SimpleValue + that does not involve foreign keys. + + + + + Get or set the identifier type name + + + + + Get or set the metatype + + + + + Represent the relation between a meta-value and the related entityName + + + + + An array has a primary key consisting of the key columns + index column + + + + + A list has a primary key consisting of the key columns + index column + + + + + Indexed collections include IList, IDictionary, Arrays + and primitive Arrays. + + + + + Base class that stores the mapping information for <array>, <bag>, + <id-bag>, <list>, <map>, and <set> + collections. + + + Subclasses are responsible for the specialization required for the particular + collection style. + + + + + Any mapping with an outer-join attribute + + + + + Defines mapping elements to which filters may be applied. + + + + + Gets or sets a indicating if this is a + mapping for a generic collection. + + + if a collection from the System.Collections.Generic namespace + should be used, if a collection from the System.Collections + namespace should be used. + + + This has no affect on any versions of the .net framework before .net-2.0. + + + + + Gets or sets an array of that contains the arguments + needed to construct an instance of a closed type. + + + + + Initializes a new instance of the class. + + The that contains this list mapping. + + + + Gets the appropriate that is + specialized for this list mapping. + + + + + Mapping for a property of a .NET class (entity + or component). + + + + Common interface for things that can handle meta attributes. + + + + Retrieve the + + The attribute name + The if exists; null otherwise + + + + Meta-Attribute collection. + + + + + Gets the number of columns this property uses in the db. + + + + + Gets an of s. + + + + + Gets or Sets the name of the Property in the class. + + + + + + + + A bag permits duplicates, so it has no primary key + + + + + A bag permits duplicates, so it has no primary key. + + The that contains this bag mapping. + + + + Gets the appropriate that is + specialized for this bag mapping. + + + + + Represents the mapping to a column in a database. + + + + + Initializes a new instance of . + + + + + Initializes a new instance of . + + The name of the column. + + + + Gets the name of this Column in quoted form if it is necessary. + + + The that knows how to quote + the column name. + + + The column name in a form that is safe to use inside of a SQL statement. + Quoted if it needs to be, not quoted if it does not need to be. + + + + For any column name, generate an alias that is unique + to that column name, and also 10 characters or less + in length. + + + + Gets the name of the data type for the column. + + The to use to get the valid data types. + + + The name of the data type for the column. + + + If the mapping file contains a value of the attribute sql-type this will + return the string contained in that attribute. Otherwise it will use the + typename from the of the object. + + + + + Determines if this instance of and a specified object, + which must be a Column can be considered the same. + + An that should be a . + + if the name of this Column and the other Column are the same, + otherwise . + + + + + Determines if this instance of and the specified Column + can be considered the same. + + A to compare to this Column. + + if the name of this Column and the other Column are the same, + otherwise . + + + + + Returns the hash code for this instance. + + + + returns quoted name as it would be in the mapping file. + + + Shallow copy, the value is not copied + + + + Gets or sets the length of the datatype in the database. + + The length of the datatype in the database. + + + + Gets or sets the name of the column in the database. + + + The name of the column in the database. The get does + not return a Quoted column name. + + +

+ If a value is passed in that is wrapped by ` then + NHibernate will Quote the column whenever SQL is generated + for it. How the column is quoted depends on the Dialect. +

+

+ The value returned by the getter is not Quoted. To get the + column name in quoted form use . +

+
+
+ + + Gets or sets if the column can have null values in it. + + if the column can have a null value in it. + + + + Gets or sets the index of the column in the . + + + The index of the column in the . + + + + + Gets or sets if the column contains unique values. + + if the column contains unique values. + + + + Gets or sets the sql data type name of the column. + + + The sql data type name of the column. + + + This is usually read from the sql-type attribute. + + + + + Gets or sets if the column needs to be quoted in SQL statements. + + if the column is quoted. + + + + Gets or sets whether the column is unique. + + + + + Gets or sets a check constraint on the column + + + + + Do we have a check constraint? + + + + + The underlying columns SqlType. + + + If null, it is because the sqltype code is unknown. + + Use to retreive the sqltypecode used + for the columns associated Value/Type. + + + + + The mapping for a component, composite element, composite identifier, + etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class for relational constraints in the database. + + + + + Adds the to the of + Columns that are part of the constraint. + + The to include in the Constraint. + + + + Generates the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to drop this Constraint. + + + + + Generates the SQL string to create this Constraint in the database. + + The to use for SQL rules. + + + + + A string that contains the SQL to create this Constraint. + + + + + When implemented by a class, generates the SQL string to create the named + Constraint in the database. + + The to use for SQL rules. + The name to use as the identifier of the constraint in the database. + + + + A string that contains the SQL to create the named Constraint. + + + + + Gets or sets the Name used to identify the constraint in the database. + + The Name used to identify the constraint in the database. + + + + Gets an of objects that are part of the constraint. + + + An of objects that are part of the constraint. + + + + + Gets the number of columns that this Constraint contains. + + + The number of columns that this Constraint contains. + + + + + Gets or sets the this Constraint is in. + + + The this Constraint is in. + + + + + Represents a Table in a database that an object gets mapped against. + + + + + Initializes a new instance of . + + + + + Gets the schema qualified name of the Table. + + The that knows how to Quote the Table name. + The name of the table qualified with the schema if one is specified. + + + + Gets the schema qualified name of the Table using the specified qualifier + + The that knows how to Quote the Table name. + The Qualifier to use when accessing the table. + A String representing the Qualified name. + If this were used with MSSQL it would return a dbo.table_name. + + + returns quoted name as it would be in the mapping file. + + + + Gets the name of this Table in quoted form if it is necessary. + + + The that knows how to quote the Table name. + + + The Table name in a form that is safe to use inside of a SQL statement. + Quoted if it needs to be, not quoted if it does not need to be. + + + + returns quoted name as it is in the mapping file. + + + + Gets the schema for this table in quoted form if it is necessary. + + + The that knows how to quote the table name. + + + The schema name for this table in a form that is safe to use inside + of a SQL statement. Quoted if it needs to be, not quoted if it does not need to be. + + + + + Gets the at the specified index. + + The index of the Column to get. + + The at the specified index. + + + + + Adds the to the of + Columns that are part of the Table. + + The to include in the Table. + + + + Generates the SQL string to create this Table in the database. + + The to use for SQL rules. + + + + + A string that contains the SQL to create this Table, Primary Key Constraints + , and Unique Key Constraints. + + + + + Generates the SQL string to drop this Table in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to drop this Table and to cascade the drop to + the constraints if the database supports it. + + + + + Gets the identified by the name. + + The name of the to get. + + The identified by the name. If the + identified by the name does not exist then it is created. + + + + + Gets the identified by the name. + + The name of the to get. + + The identified by the name. If the + identified by the name does not exist then it is created. + + + + + Create a for the columns in the Table. + + + An of objects. + + + + A for the columns in the Table. + + + This does not necessarily create a , if + one already exists for the columns then it will return an + existing . + + + + + Generates a unique string for an of + objects. + + An of objects. + + An unique string for the objects. + + + + + Sets the Identifier of the Table. + + The that represents the Identifier. + + + + + + + + + Return the column which is identified by column provided as argument. + column with atleast a name. + + The underlying column or null if not inside this table. + Note: the instance *can* be different than the input parameter, but the name will be the same. + + + + + Gets or sets the name of the Table in the database. + + + The name of the Table in the database. The get does + not return a Quoted Table name. + + +

+ If a value is passed in that is wrapped by ` then + NHibernate will Quote the Table whenever SQL is generated + for it. How the Table is quoted depends on the Dialect. +

+

+ The value returned by the getter is not Quoted. To get the + column name in quoted form use . +

+
+
+ + + Gets the number of columns that this Table contains. + + + The number of columns that this Table contains. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets an of objects that + are part of the Table. + + + An of objects that are + part of the Table. + + + + + Gets or sets the of the Table. + + The of the Table. + + + + Gets or sets the schema the table is in. + + + The schema the table is in or if no schema is specified. + + + + + Gets the unique number of the Table. + + The unique number of the Table. + + + + Gets or sets if the column needs to be quoted in SQL statements. + + if the column is quoted. + + + + A value which is "typed" by reference to some other value + (for example, a foreign key is typed by the referenced primary key). + + + + + A Foreign Key constraint in the database. + + + + + Generates the SQL string to create the named Foreign Key Constraint in the database. + + The to use for SQL rules. + The name to use as the identifier of the constraint in the database. + + + + A string that contains the SQL to create the named Foreign Key Constraint. + + + + + Get the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to drop this Constraint. + + + + + Validates that columnspan of the foreignkey and the primarykey is the same. + Furthermore it aligns the length of the underlying tables columns. + + + + + Gets or sets the that the Foreign Key is referencing. + + The the Foreign Key is referencing. + + Thrown when the number of columns in this Foreign Key is not the same + amount of columns as the Primary Key in the ReferencedTable. + + + + Does this foreignkey reference the primary key of the reference table + + + + A formula is a derived column value. + + + + + + + + + + + + + + + + + + + An PersistentIdentifierBag has a primary key consistenting of just + the identifier column. + + + + + A collection with a synthetic "identifier" column. + + + + + + + + + + + + + + + + + + + + + + + + + + An Index in the database. + + + + + Generates the SQL string to create this Index in the database. + + The to use for SQL rules. + + + + + A string that contains the SQL to create this Index. + + + + + Generates the SQL string to drop this Index in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to drop this Index. + + + + + Adds the to the of + Columns that are part of the Index. + + The to include in the Index. + + + + Gets or sets the this Index is in. + + + The this Index is in. + + + + + Gets an of objects that are + part of the Index. + + + An of objects that are + part of the Index. + + + + + Gets or sets the Name used to identify the Index in the database. + + The Name used to identify the Index in the database. + + + + Declaration of a System.Type mapped with the <subclass> or + <joined-subclass> element. + + + + + Base class for the mapped by <class> and a + that is mapped by <subclass> or + <joined-subclass>. + + + + + + + + + + + Adds a to the class hierarchy. + + The to add to the hierarchy. + + + + Change the property definition or add a new property definition + + The to add. + + + + Adds a that is implemented by a subclass. + + The implemented by a subclass. + + + + Adds a that a subclass is stored in. + + The the subclass is stored in. + + + + Creates the for the + this type is persisted in. + + The that is used to Alias columns. + + + + Given a property path, locate the appropriate referenceable property reference. + + + A referenceable property is a property which can be a target of a foreign-key + mapping (an identifier or explicitly named in a property-ref). + + The property path to resolve into a property reference. + The property reference (never null). + If the property could not be found. + + + + + + + + + + Gets the that is being mapped. + + The that is being mapped. + + The value of this is set by the name attribute on the <class> + element. + + + + + Gets or sets the to use as a Proxy. + + The to use as a Proxy. + + The value of this is set by the proxy attribute. + + + + + Gets or Sets if the Insert Sql is built dynamically. + + if the Sql is built at runtime. + + The value of this is set by the dynamic-insert attribute. + + + + + Gets or Sets if the Update Sql is built dynamically. + + if the Sql is built at runtime. + + The value of this is set by the dynamic-update attribute. + + + + + Gets or Sets the value to use as the discriminator for the Class. + + + A value that distinguishes this subclass in the database. + + + The value of this is set by the discriminator-value attribute. Each <subclass> + in a heirarchy must define a unique discriminator-value. The default value + is the class name if no value is supplied. + + + + + Gets the number of subclasses that inherit either directly or indirectly. + + The number of subclasses that inherit from this PersistentClass. + + + + Iterate over subclasses in a special 'order', most derived subclasses first. + + + It will recursively go through Subclasses so that if a SubclassType has Subclasses + it will pick those up also. + + + + + Gets an of objects + that directly inherit from this PersistentClass. + + + An of objects + that directly inherit from this PersistentClass. + + + + + When implemented by a class, gets a boolean indicating if this + mapped class is inherited from another. + + + if this class is a subclass or joined-subclass + that inherited from another class. + + + + + When implemented by a class, gets a boolean indicating if the mapped class + has a version property. + + if there is a <version> property. + + + + When implemented by a class, gets an + of objects that this mapped class contains. + + + An of objects that + this mapped class contains. + + + This is all of the properties of this mapped class and each mapped class that + it is inheriting from. + + + + + When implemented by a class, gets an + of objects that this mapped class reads from + and writes to. + + + An of objects that + this mapped class reads from and writes to. + + + This is all of the tables of this mapped class and each mapped class that + it is inheriting from. + + + + + Gets an of objects that + this mapped class contains and that all of its subclasses contain. + + + An of objects that + this mapped class contains and that all of its subclasses contain. + + + + + Gets an of all of the objects that the + subclass finds its information in. + + An of objects. + It adds the TableClosureIterator and the subclassTables into the IEnumerable. + + + + When implemented by a class, gets or sets the of the Persister. + + + + + When implemented by a class, gets the of the class + that is mapped in the class element. + + + The of the class that is mapped in the class element. + + + + + + + + + + + + + + + Build a collection of properties which are "referenceable". + + + See for a discussion of "referenceable". + + + + + + + + + + + + + + + Build an iterator over the properties defined on this class. The returned + iterator only accounts for "normal" properties (i.e. non-identifier + properties). + + + An of objects. + + + Differs from in that the iterator + we return here will include properties defined as part of a join. + + + + + Build an enumerable over the properties defined on this class which + are not defined as part of a join. + As with the returned iterator only accounts + for non-identifier properties. + + An enumerable over the non-joined "normal" properties. + + + + + + + + + Gets a boolean indicating if this PersistentClass has any subclasses. + + if this PeristentClass has any subclasses. + + + + Gets or Sets the that this class is stored in. + + The this class is stored in. + + The value of this is set by the table attribute. + + + + + When implemented by a class, gets or set a boolean indicating + if the mapped class has properties that can be changed. + + if the object is mutable. + + The value of this is set by the mutable attribute. + + + + + When implemented by a class, gets a boolean indicating + if the mapped class has a Property for the id. + + if there is a Property for the id. + + + + When implemented by a class, gets or sets the + that is used as the id. + + + The that is used as the id. + + + + + When implemented by a class, gets or sets the + that contains information about the identifier. + + The that contains information about the identifier. + + + + When implemented by a class, gets or sets the + that is used as the version. + + The that is used as the version. + + + + When implemented by a class, gets or sets the + that contains information about the discriminator. + + The that contains information about the discriminator. + + + + When implemented by a class, gets or sets if the mapped class has subclasses or is + a subclass. + + + if the mapped class has subclasses or is a subclass. + + + + + When implemented by a class, gets or sets the CacheConcurrencyStrategy + to use to read/write instances of the persistent class to the Cache. + + The CacheConcurrencyStrategy used with the Cache. + + + + When implemented by a class, gets or sets the + that this mapped class is extending. + + + The that this mapped class is extending. + + + + + When implemented by a class, gets or sets a boolean indicating if + explicit polymorphism should be used in Queries. + + + if only classes queried on should be returned, + if any class in the heirarchy should implicitly be returned. + + The value of this is set by the polymorphism attribute. + + + + + + + + + + When implemented by a class, gets or sets a boolean indicating if the identifier is + embedded in the class. + + if the class identifies itself. + + An embedded identifier is true when using a composite-id specifying + properties of the class as the key-property instead of using a class + as the composite-id. + + + + + When implemented by a class, gets the of the class + that is mapped in the class element. + + + The of the class that is mapped in the class element. + + + + + When implemented by a class, gets or sets the + that contains information about the Key. + + The that contains information about the Key. + + + + When implemented by a class, gets or sets the sql string that should + be a part of the where clause. + + + The sql string that should be a part of the where clause. + + + The value of this is set by the where attribute. + + + + + Gets or sets a boolean indicating if only values in the discriminator column that + are mapped will be included in the sql. + + if the mapped discriminator values should be forced. + + The value of this is set by the force attribute on the discriminator element. + + + + + Initializes a new instance of the class. + + The that is the superclass. + + + + Add the to this PersistentClass. + + The to add. + + This also adds the to the Superclass' collection + of SubclassType Properties. + + + + + Adds a that is implemented by a subclass. + + The implemented by a subclass. + + This also adds the to the Superclass' collection + of SubclassType Properties. + + + + + Adds a that a subclass is stored in. + + The the subclass is stored in. + + This also adds the to the Superclass' collection + of SubclassType Tables. + + + + + + + + + + Gets a boolean indicating if this mapped class is inherited from another. + + + because this is a SubclassType. + + + + + Gets an of objects that this mapped class contains. + + + An of objects that + this mapped class contains. + + + This is all of the properties of this mapped class and each mapped class that + it is inheriting from. + + + + + Gets an of objects that this + mapped class reads from and writes to. + + + An of objects that + this mapped class reads from and writes to. + + + This is all of the tables of this mapped class and each mapped class that + it is inheriting from. + + + + + Gets a boolean indicating if the mapped class has a version property. + + if for the Superclass there is a Property for a version. + + + + + + + + + Gets the of the class + that is mapped in the class element. + + + The of the Superclass that is mapped in the class element. + + + + + + + + + + Gets or sets the CacheConcurrencyStrategy + to use to read/write instances of the persistent class to the Cache. + + The CacheConcurrencyStrategy used with the Cache. + + + + Gets the of the class that is mapped in the class element. + + + The of the Superclass that is mapped in the class element. + + + + + Gets or sets the that this mapped class is extending. + + + The that this mapped class is extending. + + + + + Gets or sets the that is used as the id. + + + The from the Superclass that is used as the id. + + + + + Gets or sets the that contains information about the identifier. + + The from the Superclass that contains information about the identifier. + + + + Gets a boolean indicating if the mapped class has a Property for the id. + + if in the Superclass there is a Property for the id. + + + + Gets or sets the that contains information about the discriminator. + + The from the Superclass that contains information about the discriminator. + + + + Gets or set a boolean indicating if the mapped class has properties that can be changed. + + if the Superclass is mutable. + + + + Gets or sets if the mapped class is a subclass. + + + since this mapped class is a subclass. + + + The setter should not be used to set the value to anything but . + + + + + Gets or sets the that is used as the version. + + The from the Superclass that is used as the version. + + + + Gets or sets a boolean indicating if the identifier is + embedded in the class. + + if the Superclass has an embedded identifier. + + An embedded identifier is true when using a composite-id specifying + properties of the class as the key-property instead of using a class + as the composite-id. + + + + + Gets or sets the that contains information about the Key. + + The that contains information about the Key. + + + + Gets or sets a boolean indicating if explicit polymorphism should be used in Queries. + + + The value of the Superclasses IsExplicitPolymorphism property. + + + + + Gets the sql string that should be a part of the where clause. + + + The sql string that should be a part of the where clause. + + + Thrown when the setter is called. The where clause can not be set on the + SubclassType, only the RootClass. + + + + + Gets or Sets the that this class is stored in. + + The this class is stored in. + + This also adds the to the Superclass' collection + of SubclassType Tables. + + + + + + + + + A many-to-one association mapping + + + + A simple-point association (ie. a reference to another entity). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A map has a primary key consisting of the key columns + + index columns. + + + + + Initializes a new instance of the class. + + The that contains this map mapping. + + + + Gets the appropriate that is + specialized for this list mapping. + + + + + A meta attribute is a named value or values. + + + + + A mapping for a one-to-many association. + + + + + + + + + + No foreign key element for a one-to-many + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A mapping for a one-to-one association. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Primary Key constraint in the database. + + + + + Generates the SQL string to create the Primary Key Constraint in the database. + + The to use for SQL rules. + + + A string that contains the SQL to create the Primary Key Constraint. + + + + + Generates the SQL string to create the named Primary Key Constraint in the database. + + The to use for SQL rules. + The name to use as the identifier of the constraint in the database. + + + + A string that contains the SQL to create the named Primary Key Constraint. + + + + + Get the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to drop this Constraint. + + + + + A primitive array has a primary key consisting + of the key columns + index column. + + + + + Indicates whether given properties are generated by the database and, if + so, at what time(s) they are generated. + + + + + Values for this property are never generated by the database. + + + + + Values for this property are generated by the database on insert. + + + + + Values for this property are generated by the database on both insert and update. + + + + + Declaration of a System.Type mapped with the <class> element that + is the root class of a table-per-subclass, or table-per-concrete-class + inheritance heirarchy. + + + + + The default name of the column for the Identifier + + id is the default column name for the Identifier. + + + + The default name of the column for the Discriminator + + class is the default column name for the Discriminator. + + + + Adds a to the class hierarchy. + + The to add to the hierarchy. + + When a is added this mapped class has the property + set to . + + + + + + + + + + + Gets a boolean indicating if this mapped class is inherited from another. + + + because this is the root mapped class. + + + + + Gets an of objects that this mapped class contains. + + + An of objects that + this mapped class contains. + + + + + Gets an of objects that this + mapped class reads from and writes to. + + + An of objects that + this mapped class reads from and writes to. + + + There is only one in the since + this is the root class. + + + + + Gets a boolean indicating if the mapped class has a version property. + + if there is a Property for a version. + + + + Gets the of the class + that is mapped in the class element. + + + The of the class this mapped class. + + + + + Gets or sets a boolean indicating if the identifier is + embedded in the class. + + if the class identifies itself. + + An embedded identifier is true when using a composite-id specifying + properties of the class as the key-property instead of using a class + as the composite-id. + + + + + Gets or sets the cache region name. + + The region name used with the Cache. + + + + + + + + + Gets or sets the that is used as the id. + + + The that is used as the id. + + + + + Gets or sets the that contains information about the identifier. + + The that contains information about the identifier. + + + + Gets a boolean indicating if the mapped class has a Property for the id. + + if there is a Property for the id. + + + + Gets or sets the that contains information about the discriminator. + + The that contains information about the discriminator. + + + + Gets or sets if the mapped class has subclasses. + + + if the mapped class has subclasses. + + + + + Gets the of the class that is mapped in the class element. + + + this since this is the root mapped class. + + + + + Gets or sets a boolean indicating if explicit polymorphism should be used in Queries. + + + if only classes queried on should be returned, + if any class in the heirarchy should implicitly be returned. + + + + + Gets or sets the that is used as the version. + + The that is used as the version. + + + + Gets or set a boolean indicating if the mapped class has properties that can be changed. + + if the object is mutable. + + + + Gets or sets the that this mapped class is extending. + + + since this is the root class. + + + Thrown when the setter is called. The Superclass can not be set on the + RootClass, only the SubclassType can have a Superclass set. + + + + + Gets or sets the that contains information about the Key. + + The that contains information about the Key. + + + + + + + + + Gets or sets a boolean indicating if only values in the discriminator column that + are mapped will be included in the sql. + + if the mapped discriminator values should be forced. + + + + Gets or sets the sql string that should be a part of the where clause. + + + The sql string that should be a part of the where clause. + + + + + Gets or sets the CacheConcurrencyStrategy + to use to read/write instances of the persistent class to the Cache. + + The CacheConcurrencyStrategy used with the Cache. + + + + A Set with no nullable element columns will have a primary + key consisting of all table columns (ie - key columns + + element columns). + + + + + A simple implementation of AbstractAuxiliaryDatabaseObject in which the CREATE and DROP strings are + provided up front. + + + Contains simple facilities for templating the catalog and schema + names into the provided strings. + This is the form created when the mapping documents use <create/> and <drop/>. + + + + Placeholder for typedef information + + + + An Unique Key constraint in the database. + + + + + Generates the SQL string to create the Unique Key Constraint in the database. + + The to use for SQL rules. + A string that contains the SQL to create the Unique Key Constraint. + + + + Generates the SQL string to create the Unique Key Constraint in the database. + + The to use for SQL rules. + + + + + A string that contains the SQL to create the Unique Key Constraint. + + + + + Get the SQL string to drop this Constraint in the database. + + The to use for SQL rules. + + + + A string that contains the SQL to drop this Constraint. + + + + + Exposes entity class metadata to the application + + + + + Get the type of a particular (named) property + + + Return the values of the mapped properties of the object + + + + The persistent class + + + + + Create a class instance initialized with the given identifier + + + + + Get the value of a particular (named) property + + + + Extract the property values from the given entity. + The entity from which to extract the property values. + The entity-mode of the given entity + The property values. + + + + Set the value of a particular (named) property + + + + + Set the given values to the mapped properties of the given object + + + + + Get the identifier of an instance (throw an exception if no identifier property) + + + + + Set the identifier of an instance (or do nothing if no identifier property) + + + + Does the class implement the interface? + + + Does the class implement the interface? + + + + Get the version number (or timestamp) from the object's version property + (or return null if not versioned) + + + + + The name of the entity + + + + + The name of the identifier property (or return null) + + + + + The names of the class' persistent properties + + + + + The identifier Hibernate type + + + + + The Hibernate types of the classes properties + + + + + Are instances of this class mutable? + + + + + Are instances of this class versioned by a timestamp or version number column? + + + + + Gets the index of the version property + + + + + Get the nullability of the class' persistent properties + + + + Get the "laziness" of the properties of this class + + + Which properties hold the natural id? + + + Does this entity extend a mapped superclass? + + + Does the class support dynamic proxies? + + + Does the class have an identifier property? + + + Does this entity declare a natural id? + + + Does this entity have mapped subclasses? + + + + Exposes collection metadata to the application + + + + + The collection key type + + + + + The collection element type + + + + + The collection index type (or null if the collection has no index) + + + + + Is the collection indexed? + + + + + The name of this collection role + + + + + Is the collection an array? + + + + + Is the collection a primitive array? + + + + + Is the collection lazily initialized? + + + + + Summary description for AbstractCollectionPersister. + + + + + A collection role that may be queried or loaded by outer join. + + + + + Abstraction of all mappings that define properties: entities, collection elements. + + + + + Given a component path expression, get the type of the property + + + + + + + Given a query alias and a property path, return the qualified column name + + + + + + + Given a property path, return the corresponding column name(s). + + + + Get the type of the thing containing the properties + + + + + Anything that can be loaded by outer join - namely persisters for classes or collections. + + + + + All columns to select, when loading. + + + + + Get the where clause part of any joins (optional operation) + + + + + + + + + Get the from clause part of any joins (optional operation) + + + + + + + + + Get the where clause filter, given a query alias and considering enabled session filters + + + + + Very, very, very ugly... + + Does this persister "consume" entity column aliases in the result + set? + + + + Very, very, very ugly... + + Does this persister "consume" collection column aliases in the result + set? + + + + An identifying name; a class name or collection role name. + + + + + The columns to join on. + + + + + Is this instance actually a ICollectionPersister? + + + + + The table to join to. + + + + + A strategy for persisting a collection role. + + + Defines a contract between the persistence strategy and the actual persistent collection framework + and session. Does not define operations that are required for querying collections, or loading by outer join. + + Implements persistence of a collection instance while the instance is + referenced in a particular role. + + This class is highly coupled to the + hierarchy, since double dispatch is used to load and update collection + elements. + + May be considered an immutable view of the mapping object + + + + + Initialize the given collection with the given key + + + + + + + Read the key from a row of the + + + + + Read the element from a row of the + + + + + Read the index from a row of the + + + + + Read the identifier from a row of the + + + + + Completely remove the persistent state of the collection + + + + + + + (Re)create the collection's persistent state + + + + + + + + Delete the persistent state of any elements that were removed from the collection + + + + + + + + Update the persistent state of any elements that were modified + + + + + + + + Insert the persistent state of any new collection elements + + + + + + + + Generates the collection's key column aliases, based on the given + suffix. + + The suffix to use in the key column alias generation. + The key column aliases. + + + + Generates the collection's index column aliases, based on the given + suffix. + + The suffix to use in the index column alias generation. + The index column aliases, or null if not indexed. + + + + Generates the collection's element column aliases, based on the given + suffix. + + The suffix to use in the element column alias generation. + The element column aliases. + + + + Generates the collection's identifier column aliases, based on the given + suffix. + + The suffix to use in the identifier column alias generation. + The identifier column aliases. + + + + Get the cache + + + + Get the cache structure + + + + Get the associated IType + + + + + Get the "key" type (the type of the foreign key) + + + + + Get the "index" type for a list or map (optional operation) + + + + + Get the "element" type + + + + + Return the element class of an array, or null otherwise + + + + + Is this an array or primitive values? + + + + + Is this an array? + + + + Is this a one-to-many association? + + + + Is this a many-to-many association? Note that this is mainly + a convenience feature as the single persister does not + contain all the information needed to handle a many-to-many + itself, as internally it is looked at as two many-to-ones. + + + + + Is this collection lazily initialized? + + + + + Is this collection "inverse", so state changes are not propogated to the database. + + + + + Get the name of this collection role (the fully qualified class name, extended by a "property path") + + + + Get the persister of the entity that "owns" this collection + + + + Get the surrogate key generation strategy (optional operation) + + + + + Get the type of the surrogate key + + + + Get the "space" that holds the persistent state + + + + Is cascade delete handled by the database-level + foreign key constraint definition? + + + + + Does this collection cause version increment of the owning entity? + + + + Can the elements of this collection change? + + + + Is this collection role cacheable + + + + + Is this an "indexed" collection? (list or map) + + + + + Does this collection implement "orphan delete"? + + + + + Is this an ordered collection? (An ordered collection is + ordered by the initialization operation, not by sorting + that happens in memory, as in the case of a sorted collection.) + + + + + Generate a list of collection index and element columns + + + + + Get the names of the collection index columns if + this is an indexed collection (optional operation), + aliased by the given table alias + + + + + Get the names of the collection element columns (or the primary + key columns in the case of a one-to-many association), + aliased by the given table alias + + + + + Get the extra where clause filter SQL + + + + + + + Get the order by SQL + + + + + + + Get the order-by to be applied at the target table of a many to many + + The alias for the many-to-many target table + Appropriate order-by fragment or empty string. + + + + Get the index formulas if this is an indexed collection + (optional operation) + + + + + Get the persister of the element class, if this is a + collection of entities (optional operation). Note that + for a one-to-many association, the returned persister + must be OuterJoinLoadable. + + + + + Should we load this collection role by outer joining? + + + + + Get the names of the collection index columns if this is an indexed collection (optional operation) + + + + + Get the names of the collection element columns (or the primary key columns in the case of a one-to-many association) + + + + + Does this collection role have a where clause filter? + + + + + Reads the Element from the IDataReader. The IDataReader will probably only contain + the id of the Element. + + See ReadElementIdentifier for an explanation of why this method will be depreciated. + + + + Return the element class of an array, or null otherwise + + + + + Get the name of this collection role (the fully qualified class name, + extended by a "property path") + + + + + Collection persister for collections of values and many-to-many associations. + + + + + Generate the SQL DELETE that deletes all rows + + + + + + Generate the SQL INSERT that creates a new row + + + + + + Generate the SQL UPDATE that updates a row + + + + + + Generate the SQL DELETE that deletes a particular row + + + + + + Create the + + + + + Summary description for CollectionPropertyMapping. + + + + + The names of all the collection properties. + + + + + Summary description for CompositeElementPropertyMapping. + + + + + Base implementation of a PropertyMapping. + + + + + Summary description for ElementPropertyMapping. + + + + + Summary description for OneToManyPersister. + + + + + Generate the SQL UPDATE that updates all the foreign keys to null + + + + + + Generate the SQL UPDATE that updates a foreign key to a value + + + + + + Not needed for one-to-many association + + + + + + Generate the SQL UPDATE that updates a particular row's foreign + key to null + + + + + + Create the + + + + + Superclass for built-in mapping strategies. Implements functionalty common to both mapping + strategies + + + May be considered an immutable view of the mapping object + + + + + A ClassPersister that may be loaded by outer join using + the OuterJoinLoader hierarchy and may be an element + of a one-to-many association. + + + + + Implemented by ClassPersister that uses Loader. There are several optional + operations used only by loaders that inherit OuterJoinLoader + + + + + Get the concrete subclass corresponding to the given discriminator value + + + + + Get the result set aliases used for the identifier columns, given a suffix + + + + + Get the result set aliases used for the property columns, given a suffix (properties of this class, only). + + + + + Get the result set column names mapped for this property (properties of this class, only). + + + + + Get the alias used for the discriminator column, given a suffix + + + + + Retrieve property values from one row of a result set + + + + + The discriminator type + + + + + Get the names of columns used to persist the identifier + + + + + Get the name of the column used as a discriminator + + + + + Does the persistent class have subclasses? + + + + Does the result set contain rowids? + + + + Generate a list of collection index and element columns + + + + + + + + How many properties are there, for this class and all subclasses? (optional operation) + + + + + + May this property be fetched using an SQL outerjoin? + + + + + + + Get the cascade style of this (subclass closure) property + + + + + Is this property defined on a subclass of the mapped class? + + + + + + + Get an array of the types of all properties of all subclasses (optional operation) + + + + + + + Get the name of the numbered property of the class or a subclass + (optional operation) + + + + + + + Is the numbered property of the class of subclass nullable? + + + + + Return the column names used to persist all properties of all sublasses of the persistent class + (optional operation) + + + + + Return the table name used to persist the numbered property of + the class or a subclass + (optional operation) + + + + + Given the number of a property of a subclass, and a table alias, return the aliased column names + (optional operation) + + + + + + + + Get the main from table fragment, given a query alias (optional operation) + + + + + + + Get the column names for the given property path + + + + + Get the table name for the given property path + + + + + Extends the generic ILoadable contract to add operations required by HQL + + + + + Given a query alias and an identifying suffix, render the intentifier select fragment. + + + + + + + + + Given a property name, determine the number of the table which contains the column + to which this property is mapped. + + The name of the property. + The nunber of the table to which the property is mapped. + + Note that this is not relative to the results from {@link #getConstraintOrderedTableNameClosure()}. + It is relative to the subclass table name closure maintained internal to the persister (yick!). + It is also relative to the indexing used to resolve {@link #getSubclassTableName}... + + + + Determine whether the given property is declared by our + mapped class, our super class, or one of our subclasses... +

+ Note: the method is called 'subclass property...' simply + for consistency sake (e.g. {@link #getSubclassPropertyTableNumber} +

+ The property name. + The property declarer +
+ + + Get the name of the table with the given index from the internal array. + + The index into the internal array. + + + + + Is this an abstract class? + + + + Is this class explicit polymorphism only? + + + + + The class that this class is mapped as a subclass of - not necessarily the direct superclass + + + + Get the names of columns used to persist the identifier + + + + The discriminator value for this particular concrete subclass, as a string that may be + embedded in a select statement + + + + + The discriminator value for this particular concrete subclass + + The DiscriminatorValue is specific of NH since we are using strongly typed parameters for SQL query. + + + + Is the inheritence hierarchy described by this persister contained across + multiple tables? + + True if the inheritence hierarchy is spread across multiple tables; false otherwise. + + + + Get the names of all tables used in the hierarchy (up and down) ordered such + that deletes in the given order would not cause contraint violations. + + The ordered array of table names. + + + + For each table specified in , get + the columns that define the key between the various hierarchy classes. + + + The first dimension here corresponds to the table indexes returned in + . + + The second dimension should have the same length across all the elements in + the first dimension. If not, that'd be a problem ;) + + + + + Get the name of the temporary table to be used to (potentially) store id values + when performing bulk update/deletes. + + The appropriate temporary table name. + + + + Get the appropriate DDL command for generating the temporary table to + be used to (potentially) store id values when performing bulk update/deletes. + + The appropriate temporary table creation command. + + + Is the version property included in insert statements? + + + + Describes a class that may be loaded via a unique key. + + + + + Load an instance of the persistent class, by a unique key other than the primary key. + + + + + Get the property number of the unique key property + + + + + A class persister that supports queries expressed in the platform native SQL dialect. + + + + + Returns the column alias names used to persist/query the numbered property of the class or a subclass (optional operation). + + + + + Return the column names used to persist/query the named property of the class or a subclass (optional operation). + + + + + All columns to select, when loading. + + + + + Get the type + + + + + Contract for things that can be locked via a . + + + Currently only the root table gets locked, except for the case of HQL and Criteria queries + against dialects which do not support either (1) FOR UPDATE OF or (2) support hint locking + (in which case *all* queried tables would be locked). + + + + + Get the SQL alias this persister would use for the root table + given the passed driving alias. + + + The driving alias; or the alias for the table mapped by this persister in the hierarchy. + + The root table alias. + + + + Locks are always applied to the "root table". + + + + + Get the names of columns on the root table used to persist the identifier. + + + + + For versioned entities, get the name of the column (again, expected on the + root table) used to store the version values. + + + + + To build the SQL command in pessimistic lock + + + + + Decide which tables need to be updated + + The indices of all the entity properties considered dirty. + Whether any collections owned by the entity which were considered dirty. + Array of booleans indicating which table require updating. + + The return here is an array of boolean values with each index corresponding + to a given table in the scope of this persister. + + + + + Generate the SQL that selects the version number by id + + + + + Retrieve the version number + + + + + Warning: + When there are duplicated property names in the subclasses + of the class, this method may return the wrong table + number for the duplicated subclass property (note that + SingleTableEntityPersister defines an overloaded form + which takes the entity name. + + + + + Get the column names for the numbered property of this class + + + + + Must be called by subclasses, at the end of their constructors + + + + Generate the SQL that updates a row by id (and version) + + + Generate the SQL that inserts a row + + + Marshall the fields of a persistent instance to a prepared statement + + + + Unmarshall the fields of a persistent instance from a result set, + without resolving associations or collections + + + + + Perform an SQL INSERT, and then retrieve a generated identifier. + + + This form is used for PostInsertIdentifierGenerator-style ids (IDENTITY, select, etc). + + + + + Perform an SQL INSERT. + + + This for is used for all non-root tables as well as the root table + in cases where the identifier value is known before the insert occurs. + + + + Perform an SQL UPDATE or SQL INSERT + + + + Perform an SQL DELETE + + + + + Load an instance using the appropriate loader (as determined by + + + + + Transform the array of property indexes to an array of booleans, true when the property is dirty + + + + Which properties appear in the SQL update? (Initialized, updateable ones!) + + + + Determines whether the specified entity is an instance of the class + managed by this persister. + + The entity. + The entity mode. + + if the specified entity is an instance; otherwise, . + + + + + The queries that delete rows by id (and version) + + + + + The queries that insert rows with a given id + + + + + The queries that update rows by id (and version) + + + + + The query that inserts a row, letting the database generate an id + + The IDENTITY-based insertion query. + + + + We can't immediately add to the cache if we have formulas + which must be evaluated, or if we have the possibility of + two concurrent updates to the same item being merged on + the database. This can happen if (a) the item is not + versioned and either (b) we have dynamic update enabled + or (c) we have multiple tables holding the state of the + item. + + + + The property name of the "special" identifier property in HQL + + + + A IEntityPersister implementing the normalized "table-per-subclass" mapping strategy + + + + + Constructs the NormalizedEntityPerister for the PersistentClass. + + The PersistentClass to create the EntityPersister for. + The configured . + The SessionFactory that this EntityPersister will be stored in. + The mapping used to retrieve type information. + + + + Find the Index of the table name from a list of table names. + + The name of the table to find. + The array of table names + The Index of the table in the array. + Thrown when the tableName specified can't be found + + + + Not really a Loader, just a wrapper around a named query. + + + + + Default implementation of the ClassPersister interface. Implements the + "table-per-class hierarchy" mapping strategy for an entity class. + + + + Generate the SQL that selects a row by id + + + + Factory for IEntityPersister and ICollectionPersister instances. + + + + + Creates a built in Entity Persister or a custom Persister. + + + + + Creates a specific Persister - could be a built in or custom persister. + + + + Represents a "back-reference" to the id of a collection owner. + + + + Abstracts the notion of a "property". Defines a strategy for accessing the + value of a mapped property. + + + + + When implemented by a class, create a "getter" for the mapped property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + When implemented by a class, create a "setter" for the mapped property. + + The to find the Property in. + The name of the mapped Property to set. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Allow embedded and custom accessors to define if the ReflectionOptimizer can be used. + + + + The Setter implementation for id backrefs. + + + + Sets values of a particular mapped property. + + + + + When implemented by a class, sets the value of the Property/Field on the object. + + The object to set the Property value in. + The value to set the Property to. + + Thrown when there is a problem setting the value in the target. + + + + + When implemented by a class, gets the name of the Property. + + The name of the Property or . + + This is an optional operation - if it is not implemented then + is an acceptable value to return. + + + + + When implemented by a class, gets the for the set + accessor of the property. + + + This is an optional operation - if the is not + for a property set then is an acceptable value to return. + It is used by the proxies to determine which setter to intercept for the + identifier property. + + + + The Getter implementation for id backrefs. + + + + Gets values of a particular mapped property. + + + + + When implemented by a class, gets the value of the Property/Field from the object. + + The object to get the Property/Field value from. + + The value of the Property for the target. + + + Thrown when there is a problem getting the value from the target. + + + + Get the property value from the given owner instance. + The instance containing the value to be retrieved. + a map of merged persistent instances to detached instances + The session from which this request originated. + The extracted value. + + + + When implemented by a class, gets the that the Property/Field returns. + + The that the Property returns. + + + + When implemented by a class, gets the name of the Property. + + The name of the Property or . + + This is an optional operation - if the is not + for a Property get then is an acceptable value to return. + + + + + When implemented by a class, gets the for the get + accessor of the property. + + + This is an optional operation - if the is not + for a property get then is an acceptable value to return. + It is used by the proxies to determine which getter to intercept for the + identifier property. + + + + + Accesses mapped property values via a get/set pair, which may be nonpublic. + The default (and recommended strategy). + + + + + Create a for the mapped property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Create a for the mapped property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Helper method to find the Property get. + + The to find the Property in. + The name of the mapped Property to get. + + The for the Property get or + if the Property could not be found. + + + + + Helper method to find the Property set. + + The to find the Property in. + The name of the mapped Property to set. + + The for the Property set or + if the Property could not be found. + + + + + An for a Property get. + + + + + An that can emit IL to get the property value. + + + + + Emit IL to get the property value from the object on top of the stack. + + + + + Initializes a new instance of . + + The that contains the Property get. + The for reflection. + The name of the Property. + + + + Gets the value of the Property from the object. + + The object to get the Property value from. + + The value of the Property for the target. + + + + + Gets the that the Property returns. + + The that the Property returns. + + + + Gets the name of the Property. + + The name of the Property. + + + + Gets the for the Property. + + + The for the Property. + + + + + An for a Property set. + + + + + An that can emit IL to set the property value. + + + + + Emit IL to set the property of an object to the value. The object + is loaded onto the stack first, then the value, then this method + is called. + + + + + Initializes a new instance of . + + The that contains the Property set. + The for reflection. + The name of the mapped Property. + + + + Sets the value of the Property on the object. + + The object to set the Property value in. + The value to set the Property to. + + Thrown when there is a problem setting the value in the target. + + + + + Gets the name of the mapped Property. + + The name of the mapped Property or . + + + + Gets the for the mapped Property. + + The for the mapped Property. + + + + Implementation of for fields that are the + camelCase version of the PropertyName + + + + + A Strategy for converting a mapped property name to a Field name. + + + + + When implemented by a class, converts the Property's name into a Field name + + The name of the mapped property. + The name of the Field. + + + + Converts the Property's name into a Field name by making the first character + lower case. + + The name of the mapped property. + The name of the Field in CamelCase format. + + + + Implementation of for fields that are prefixed with + an underscore and the PropertyName is changed to camelCase. + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName lowercase and prefixing it with an underscore. + + The name of the mapped property. + The name of the Field in CamelCase format prefixed with an underscore. + + + + Access the mapped property by using a Field to get and set the value. + + + The is useful when you expose getter and setters + for a Property, but they have extra code in them that shouldn't be executed when NHibernate + is setting or getting the values for loads or saves. + + + + + Initializes a new instance of . + + + + + Initializes a new instance of . + + The to use. + + + + Create a to get the value of the mapped Property + through a Field. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Field specified by the propertyName could not + be found in the . + + + + + Create a to set the value of the mapped Property + through a Field. + + The to find the mapped Property in. + The name of the mapped Property to set. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Field for the Property specified by the propertyName using the + could not be found in the . + + + + + Helper method to find the Field. + + The to find the Field in. + The name of the Field to find. + + The for the field. + + + Thrown when a field could not be found. + + + + + Converts the mapped property's name into a Field using + the if one exists. + + The name of the Property. + The name of the Field. + + + + Gets the used to convert the name of the + mapped Property in the hbm.xml file to the name of the field in the class. + + The or . + + + + An that uses a Field instead of the Property get. + + + + + Initializes a new instance of . + + The that contains the field to use for the Property get. + The for reflection. + The name of the Field. + + + + Gets the value of the Field from the object. + + The object to get the Field value from. + + The value of the Field for the target. + + + + + Gets the that the Field returns. + + The that the Field returns. + + + + Gets the name of the Property. + + since this is a Field - not a Property. + + + + Gets the for the Property. + + since this is a Field - not a Property. + + + + An that uses a Field instead of the Property set. + + + + + Initializes a new instance of . + + The that contains the Field to use for the Property set. + The for reflection. + The name of the Field. + + + + Sets the value of the Field on the object. + + The object to set the Field value in. + The value to set the Field to. + + Thrown when there is a problem setting the value in the target. + + + + + Gets the name of the Property. + + since this is a Field - not a Property. + + + + Gets the for the Property. + + since this is a Field - not a Property. + + + Represents a "back-reference" to the index of a collection. + + + Constructs a new instance of IndexPropertyAccessor. + The collection role which this back ref references. + The owner entity name. + + + The Setter implementation for index backrefs. + + + The Getter implementation for index backrefs. + + + + Implementation of for fields that are + the PropertyName in all LowerCase characters. + + + + + Converts the Property's name into a Field name by making the all characters + of the propertyName lowercase. + + The name of the mapped property. + The name of the Field in lowercase. + + + + Implementation of for fields that are prefixed with + an underscore and the PropertyName is changed to lower case. + + + + + Converts the Property's name into a Field name by making the all characters + of the propertyName lowercase and prefixing it with an underscore. + + The name of the mapped property. + The name of the Field in lowercase prefixed with an underscore. + + + Used to declare properties not represented at the pojo level + + + A Getter which will always return null. It should not be called anyway. + + + A Setter which will just do nothing. + + + + Access the mapped property through a Property get to get the value + and go directly to the Field to set the value. + + + This is most useful because Classes can provider a get for the Property + that is the <id> but tell NHibernate there is no setter for the Property + so the value should be written directly to the field. + + + + + Initializes a new instance of . + + The to use. + + + + Creates an to get the value from the Property. + + The to find the Property in. + The name of the mapped Property to get. + + The to use to get the value of the Property from an + instance of the . + + Thrown when a Property specified by the propertyName could not + be found in the . + + + + + Create a to set the value of the mapped Property + through a Field. + + The to find the mapped Property in. + The name of the mapped Property to set. + + The to use to set the value of the Property on an + instance of the . + + + Thrown when a Field for the Property specified by the propertyName using the + could not be found in the . + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName uppercase and prefixing it with the letter 'm'. + + The name of the mapped property. + The name of the Field in PascalCase format prefixed with an 'm'. + + + + Implementation of for fields that are prefixed with + an m_ and the first character in PropertyName capitalized. + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName uppercase and prefixing it with the letter 'm' + and an underscore. + + The name of the mapped property. + The name of the Field in PascalCase format prefixed with an 'm' and an underscore. + + + + Implementation of for fields that are prefixed with + an _ and the first character in PropertyName capitalized. + + + + + Converts the Property's name into a Field name by making the first character + of the propertyName uppercase and prefixing it with an underscore. + + The name of the mapped property. + The name of the Field in PascalCase format prefixed with an underscore. + + + + Factory for creating the various PropertyAccessor strategies. + + + + + Initializes the static members in . + + + + + Gets or creates the specified by the type. + + + The specified by the type. + + + The built in ways of accessing the values of Properties in your domain class are: + + + + Access Method + How NHibernate accesses the Mapped Class. + + + property + + The name attribute is the name of the Property. This is the + default implementation. + + + + field + + The name attribute is the name of the field. If you have any Properties + in the Mapped Class those will be bypassed and NHibernate will go straight to the + field. This is a good option if your setters have business rules attached to them + or if you don't want to expose a field through a Getter & Setter. + + + + nosetter + + The name attribute is the name of the Property. NHibernate will use the + Property's get method to retrieve the value and will use the field + to set the value. This is a good option for <id> Properties because this access method + allows users of the Class to get the value of the Id but not set the value. + + + + Assembly Qualified Name + + If NHibernate's built in s are not what is needed for your + situation then you are free to build your own. Provide an Assembly Qualified Name so that + NHibernate can call Activator.CreateInstance(AssemblyQualifiedName) to create it. + + + + + In order for the nosetter to know the name of the field to access NHibernate needs to know + what the naming strategy is. The following naming strategies are built into NHibernate: + + + + Naming Strategy + How NHibernate converts the value of the name attribute to a field name. + + + camelcase + + The name attribute should be changed to CamelCase to find the field. + <property name="Foo" ... > finds a field foo. + + + + camelcase-underscore + + The name attribute should be changed to CamelCase and prefixed with + an underscore to find the field. + <property name="Foo" ... > finds a field _foo. + + + + pascalcase-underscore + + The name attribute should be prefixed with an underscore + to find the field. + <property name="Foo" ... > finds a field _Foo. + + + + pascalcase-m-underscore + + The name attribute should be prefixed with an 'm' and underscore + to find the field. + <property name="Foo" ... > finds a field m_Foo. + + + + pascalcase-m + + The name attribute should be prefixed with an 'm'. + <property name="Foo" ... > finds a field mFoo. + + + + lowercase + + The name attribute should be changed to lowercase to find the field. + <property name="FooBar" ... > finds a field foobar. + + + + lowercase-underscore + + The name attribute should be changed to lowercase and prefixed with + and underscore to find the field. + <property name="FooBar" ... > finds a field _foobar. + + + + + The naming strategy can also be appended at the end of the field access method. Where + this could be useful is a scenario where you do expose a get and set method in the Domain Class + but NHibernate should only use the fields. + + + With a naming strategy and a get/set for the Property available the user of the Domain Class + could write an Hql statement from Foo as foo where foo.SomeProperty = 'a'. If no naming + strategy was specified the Hql statement would have to be from Foo as foo where foo._someProperty + (assuming CamelCase with an underscore field naming strategy is used). + + + + + Retrieves a PropertyAccessor instance based on the given property definition and entity mode. + The property for which to retrieve an accessor. + The mode for the resulting entity. + An appropriate accessor. + + + Lazy initializer for "dynamic-map" entity representations. + + + + Provides the base functionality to Handle Member calls into a dynamically + generated NHibernate Proxy. + + + This could be an extension point later if the .net framework ever gets a Proxy + class that is similar to the java.lang.reflect.Proxy or if a library similar + to cglib was made in .net. + + + + + Perform an ImmediateLoad of the actual object for the Proxy. + + + Thrown when the Proxy has no Session or the Session is closed or disconnected. + + + + + Return the Underlying Persistent Object, initializing if necessary. + + The Persistent Object this proxy is Proxying. + + + + Return the Underlying Persistent Object in a given , or null. + + The Session to get the object from. + The Persistent Object this proxy is Proxying, or . + + + + + + Get the entity name + + + + + + + + + + + + + If this is returned by Invoke then the subclass needs to Invoke the + method call against the object that is being proxied. + + + + + Create a LazyInitializer to handle all of the Methods/Properties that are called + on the Proxy. + + The entityName + The Id of the Object we are Proxying. + The ISession this Proxy is in. + + + + Perform an ImmediateLoad of the actual object for the Proxy. + + + Thrown when the Proxy has no Session or the Session is closed or disconnected. + + + + + Return the Underlying Persistent Object, initializing if necessary. + + The Persistent Object this proxy is Proxying. + + + + Return the Underlying Persistent Object in a given , or null. + + The Session to get the object from. + The Persistent Object this proxy is Proxying, or . + + + + + + + + + Proxy for "dynamic-map" entity representations. + + + + A marker interface so NHibernate can know if it is dealing with + an object that is a Proxy. + + + + This interface should not be implemented by anything other than + the Dynamically generated Proxy. If it is implemented by a class then + NHibernate will think that class is a Proxy and will not work. + + + It has to be public scope because + the Proxies are created in a separate DLL than NHibernate. + + + + + Get the underlying lazy initialization handler. + + + Contract for run-time, proxy-based lazy initialization proxies. + + + Called immediately after instantiation of this factory. + + The name of the entity for which this factory should generate proxies. + + + The entity class for which to generate proxies; not always the same as the entityName. + + + The interfaces to expose in the generated proxy; + is already included in this collection. + + + Reference to the identifier getter method; invocation on this method should not force initialization + + + Reference to the identifier setter method; invocation on this method should not force initialization + + + For composite identifier types, a reference to + the type of the identifier + property; again accessing the id should generally not cause + initialization - but need to bear in mind key-many-to-one + mappings. + + Indicates a problem completing post + + Essentially equivalent to constructor injection, but contracted + here via interface. + + + + + Create a new proxy + + The id value for the proxy to be generated. + The session to which the generated proxy will be associated. + The generated proxy. + Indicates problems generating requested proxy. + + + + A for use with the Castle Dynamic Class Generator. + + + + Lazy initializer for POCOs + + + + Adds all of the information into the SerializationInfo that is needed to + reconstruct the proxy during deserialization or to replace the proxy + with the instantiated target. + + + This will only be called if the Dynamic Proxy generator does not handle serialization + itself or delegates calls to the method GetObjectData to the LazyInitializer. + + + + + Invokes the method if this is something that the LazyInitializer can handle + without the underlying proxied object being instantiated. + + The name of the method/property to Invoke. + The arguments to pass the method/property. + The proxy object that the method is being invoked on. + + The result of the Invoke if the underlying proxied object is not needed. If the + underlying proxied object is needed then it returns the result + which indicates that the Proxy will need to forward to the real implementation. + + + + + Initializes a new object. + + + The Class to Proxy. + The Id of the Object we are Proxying. + + + + The ISession this Proxy is in. + + + + Invoke the actual Property/Method using the Proxy or instantiate the actual + object and use it when the Proxy can't handle the method. + + The from the generated Castle.DynamicProxy. + + + + Build a proxy using the Castle.DynamicProxy library. + + The value for the Id. + The Session the proxy is in. + A fully built INHibernateProxy. + + + + NHibernateProxyHelper provides convenience methods for working with + objects that might be instances of Classes or the Proxied version of + the Class. + + + + + Get the class of an instance or the underlying class of a proxy (without initializing the proxy!). + It is almost always better to use the entity name! + + The object to get the type of. + The Underlying Type for the object regardless of if it is a Proxy. + + + + Get the true, underlying class of a proxied persistent class. This operation + will NOT initialize the proxy and thus may return an incorrect result. + + a persistable object or proxy + guessed class of the instance + + This method is approximate match for Session.bestGuessEntityName in H3.2 + + + + + Validates whether can be specified as the base class + (or an interface) for a dynamically-generated proxy. + + + A collection of errors, if any, or if none were found. + + The type to validate. + + + + Aliases tables and fields for Sql Statements. + + + Several methods of this class take an additional + parameter, while their Java counterparts + do not. The dialect is used to correctly quote and unquote identifiers. + Java versions do the quoting and unquoting themselves and fail to + consider dialect-specific rules, such as escaping closing brackets in + identifiers on MS SQL 2000. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An ANSI SQL CASE expression. + case when ... then ... end as ... + + This class looks StringHelper.SqlParameter safe... + + + Abstract SQL case fragment renderer + + + + An ANSI-style Join. + + + + + + + + Sets the op + + The op to set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An Oracle-style DECODE function. + + decode(pkvalue, key1, 1, key2, 2, ..., 0) + + + + + + + + Represents an SQL for update of ... nowait statement + + + + + Represents an ... in (...) expression + + + + + Add a value to the value list. Value may be a string, + a , or one of special values + or . + + + + + + + + + + + + + + + + + + + + + + + + + + An Oracle-style (theta) Join + + + + + This method is a bit of a hack, and assumes + that the column on the "right" side of the + join appears on the "left" side of the + operator, which is extremely weird if this + was a normal join condition, but is natural + for a filter. + + + + + A placeholder for an ADO.NET parameter in an . + + + + + Used as a placeholder when parsing HQL or SQL queries. + + + + + Generates an array of parameters for the given SqlTypes. + + The number of parameters to generate. + An array of objects + + + + Determines whether this instance and the specified object + are of the same type and have the same values. + + An object to compare to this instance. + + if the object equals the current instance. + + + + + Gets a hash code for the parameter. + + + An value for the hash code. + + + + + Summary description for QueryJoinFragment. + + + + + Summary description for QuerySelect. + + + + + Certain databases don't like spaces around these operators. + + + This needs to contain both a plain string and a + SqlString version of the operator because the portions in + the WHERE clause will come in as SqlStrings since there + might be parameters, other portions of the clause come in + as strings since there are no parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds a string containing a valid "order by" sql statement + to this QuerySelect + + The "order by" sql statement. + + + + + + + + + + + + + + + + + Represents part of an SQL SELECT clause + + + + + Equivalent to ToSqlStringFragment. + + + + In H3, it is called ToFragmentString(). It appears to be + functionally equivalent as ToSqlStringFragment() here. + + + + + The base class for all of the SqlBuilders. + + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The names of the Columns to Add to the WhereFragment + A SqlString that contains the WhereFragment + This just calls the overloaded ToWhereFragment() with the operator as " = " and the tableAlias null. + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The Alias for the Table. + The names of the Columns to Add to the WhereFragment + A SqlString that contains the WhereFragment + This defaults the op to " = " + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The names of the Columns to Add to the WhereFragment + The operator to use between the names & values. For example " = " or "!=" + A SqlString that contains the WhereFragment + + + + Converts the ColumnNames and ColumnValues to a WhereFragment + + The Alias for the Table. + The names of the Columns to Add to the WhereFragment + The operator to use between the names & values. For example " = " or "!=" + A SqlString that contains the WhereFragment + + + + A class that builds an DELETE sql statement. + + + + + Sets the IdentityColumn for the DELETE sql to use. + + An array of the column names for the Property + The IType of the Identity Property. + The SqlDeleteBuilder. + + + + Sets the VersionColumn for the DELETE sql to use. + + An array of the column names for the Property + The IVersionType of the Version Property. + The SqlDeleteBuilder. + + + + Adds the columns for the Type to the WhereFragment + + The names of the columns to add. + The IType of the property. + The operator to put between the column name and value. + The SqlDeleteBuilder + + + + Adds a string to the WhereFragement + + A well formed sql statement with no parameters. + The SqlDeleteBuilder + + + + Builds a SELECT SQL statement. + + + + + Sets the text that should appear after the FROM + + The fromClause to set + The SqlSelectBuilder + + + + Sets the text that should appear after the FROM + + The name of the Table to get the data from + The Alias to use for the table name. + The SqlSelectBuilder + + + + Sets the text that should appear after the FROM + + The fromClause in a SqlString + The SqlSelectBuilder + + + + Sets the text that should appear after the ORDER BY. + + The orderByClause to set + The SqlSelectBuilder + + + + Sets the text that should appear after the GROUP BY. + + The groupByClause to set + The SqlSelectBuilder + + + + Sets the SqlString for the OUTER JOINs. + + + All of the Sql needs to be included in the SELECT. No OUTER JOINS will automatically be + added. + + The outerJoinsAfterFrom to set + The outerJoinsAfterWhere to set + The SqlSelectBuilder + + + + Sets the text for the SELECT + + The selectClause to set + The SqlSelectBuilder + + + + Sets the text for the SELECT + + The selectClause to set + The SqlSelectBuilder + + + + Sets the criteria to use for the WHERE. It joins all of the columnNames together with an AND. + + + The names of the columns + The Hibernate Type + The SqlSelectBuilder + + + + Sets the prebuilt SqlString to the Where clause + + The SqlString that contains the sql and parameters to add to the WHERE + This SqlSelectBuilder + + + + ToSqlString() is named ToStatementString() in H3 + + + + + + + + + Summary description for SqlSimpleSelectBuilder. + + + + + + + + + + + + Adds a columnName to the SELECT fragment. + + The name of the column to add. + The SqlSimpleSelectBuilder + + + + Adds a columnName and its Alias to the SELECT fragment. + + The name of the column to add. + The alias to use for the column + The SqlSimpleSelectBuilder + + + + Adds an array of columnNames to the SELECT fragment. + + The names of the columns to add. + The SqlSimpleSelectBuilder + + + + Adds an array of columnNames with their Aliases to the SELECT fragment. + + The names of the columns to add. + The aliases to use for the columns + The SqlSimpleSelectBuilder + + + + Gets the Alias that should be used for the column + + The name of the column to get the Alias for. + The Alias if one exists, null otherwise + + + + Sets the IdentityColumn for the SELECT sql to use. + + An array of the column names for the Property + The IType of the Identity Property. + The SqlSimpleSelectBuilder. + + + + Sets the VersionColumn for the SELECT sql to use. + + An array of the column names for the Property + The IVersionType of the Version Property. + The SqlSimpleSelectBuilder. + + + + Set the Order By fragment of the Select Command + + The OrderBy fragment. It should include the SQL "ORDER BY" + The SqlSimpleSelectBuilder + + + + Adds the columns for the Type to the WhereFragment + + The names of the columns to add. + The IType of the property. + The operator to put between the column name and value. + The SqlSimpleSelectBuilder + + + + + + + This is a non-modifiable SQL statement that is ready to be prepared + and sent to the Database for execution. + + + + If you need to modify this object pass it to a and + get a new object back from it. + + + + + + Appends the SqlString parameter to the end of the current SqlString to create a + new SqlString object. + + The SqlString to append. + A new SqlString object. + + A SqlString object is immutable so this returns a new SqlString. If multiple Appends + are called it is better to use the SqlStringBuilder. + + + + + Appends the string parameter to the end of the current SqlString to create a + new SqlString object. + + The string to append. + A new SqlString object. + + A SqlString object is immutable so this returns a new SqlString. If multiple Appends + are called it is better to use the SqlStringBuilder. + + + + + Compacts the SqlString into the fewest parts possible. + + A new SqlString. + + Combines all SqlParts that are strings and next to each other into + one SqlPart. + + + + + Determines whether the end of this instance matches the specified String. + + A string to seek at the end. + if the end of this instance matches value; otherwise, + + + + Replaces all occurrences of a specified in this instance, + with another specified . + + A String to be replaced. + A String to replace all occurrences of oldValue. + + A new SqlString with oldValue replaced by the newValue. The new SqlString is + in the compacted form. + + + + + Determines whether the beginning of this SqlString matches the specified System.String, + using case-insensitive comparison. + + The System.String to seek + true if the SqlString starts with the value. + + + + Retrieves a substring from this instance. The substring starts at a specified character position. + + The starting character position of a substring in this instance. + + A new SqlString to the substring that begins at startIndex in this instance. + + + If the startIndex is greater than the length of the SqlString then is returned. + + + + + Returns the index of the first occurrence of , case-insensitive. + + Text to look for in the . Must be in lower + case. + + The text must be located entirely in a string part of the . + Searching for "a ? b" in an consisting of + "a ", Parameter, " b" will result in no matches. + + The index of the first occurrence of , or -1 + if not found. + + + + Removes all occurrences of white space characters from the beginning and end of this instance. + + + A new SqlString equivalent to this instance after white space characters + are removed from the beginning and end. + + + + + + + + + + + + + + + Returns the SqlString in a string where it looks like + SELECT col1, col2 FROM table WHERE col1 = ? + + + The question mark is used as the indicator of a parameter because at + this point we are not using the specific provider so we don't know + how that provider wants our parameters formatted. + + A provider-neutral version of the CommandText + + + + Returns substring of this SqlString starting with the specified + . If the text is not found, returns an + empty, not-null SqlString. + + + The method performs case-insensitive comparison, so the + passed should be in lower case. + + + + + Parse SQL in and create a SqlString representing it. + + + Parameter marks in single quotes will be correctly skipped, but otherwise the + lexer is very simple and will not parse double quotes or escape sequences + correctly, for example. + + + + + Gets the number of SqlParts contained in this SqlString. + + The number of SqlParts contained in this SqlString. + + + + The SqlStringBuilder is used to construct a SqlString. + + + + The SqlString is a nonmutable class so it can't have sql parts added + to it. Instead this class should be used to generate a new SqlString. + The SqlStringBuilder is to SqlString what the StringBuilder is to + a String. + + + This is different from the original version of SqlString because this does not + hold the sql string in the form of "column1=@column1" instead it uses an array to + build the sql statement such that + object[0] = "column1=" + object[1] = ref to column1 parameter + + + What this allows us to do is to delay the generating of the parameter for the sql + until the very end - making testing dialect indifferent. Right now all of our test + to make sure the correct sql is getting built are specific to MsSql2000Dialect. + + + + + + Create an empty StringBuilder with the default capacity. + + + + + Create a StringBuilder with a specific capacity. + + The number of parts expected. + + + + Create a StringBuilder to modify the SqlString + + The SqlString to modify. + + + + Adds the preformatted sql to the SqlString that is being built. + + The string to add. + This SqlStringBuilder + + + + Adds the Parameter to the SqlString that is being built. + The correct operator should be added before the Add(Parameter) is called + because there will be no operator ( such as "=" ) placed between the last Add call + and this Add call. + + The Parameter to add. + This SqlStringBuilder + + + + Attempts to discover what type of object this is and calls the appropriate + method. + + The part to add when it is not known if it is a Parameter, String, or SqlString. + This SqlStringBuilder. + Thrown when the part is not a Parameter, String, or SqlString. + + + + Adds an existing SqlString to this SqlStringBuilder. It does NOT add any + prefix, postfix, operator, or wrap around this. It is equivalent to just + adding a string. + + The SqlString to add to this SqlStringBuilder + This SqlStringBuilder + This calls the overloaded Add(sqlString, null, null, null, false) + + + + Adds an existing SqlString to this SqlStringBuilder + + The SqlString to add to this SqlStringBuilder + String to put at the beginning of the combined SqlString. + How these Statements should be junctioned "AND" or "OR" + String to put at the end of the combined SqlString. + This SqlStringBuilder + + This calls the overloaded Add method with an array of SqlStrings and wrapStatment=false + so it will not be wrapped with a "(" and ")" + + + + + Adds existing SqlStrings to this SqlStringBuilder + + The SqlStrings to combine. + String to put at the beginning of the combined SqlString. + How these SqlStrings should be junctioned "AND" or "OR" + String to put at the end of the combined SqlStrings. + This SqlStringBuilder + This calls the overloaded Add method with wrapStatement=true + + + + Adds existing SqlStrings to this SqlStringBuilder + + The SqlStrings to combine. + String to put at the beginning of the combined SqlStrings. + How these SqlStrings should be junctioned "AND" or "OR" + String to put at the end of the combined SqlStrings. + Wrap each SqlStrings with "(" and ")" + This SqlStringBuilder + + + + Insert a string containing sql into the SqlStringBuilder at the specified index. + + The zero-based index at which the sql should be inserted. + The string containing sql to insert. + This SqlStringBuilder + + + + Insert a Parameter into the SqlStringBuilder at the specified index. + + The zero-based index at which the Parameter should be inserted. + The Parameter to insert. + This SqlStringBuilder + + + + Removes the string or Parameter at the specified index. + + The zero-based index of the item to remove. + This SqlStringBuilder + + + + Converts the mutable SqlStringBuilder into the immutable SqlString. + + The SqlString that was built. + + + + Gets the number of SqlParts in this SqlStringBuilder. + + + The number of SqlParts in this SqlStringBuilder. + + + + + Gets or Sets the element at the index + + Returns a string or Parameter. + + + + + A class that builds an UPDATE sql statement. + + + + + Add a column with a specific value to the UPDATE sql + + The name of the Column to add. + The value to set for the column. + The NHibernateType to use to convert the value to a sql string. + The SqlUpdateBuilder. + + + + Add a column with a specific value to the UPDATE sql + + The name of the Column to add. + A valid sql string to set as the value of the column. + The SqlUpdateBuilder. + + + + Adds columns with a specific value to the UPDATE sql + + The names of the Columns to add. + A valid sql string to set as the value of the column. This value is assigned to each column. + The SqlUpdateBuilder. + + + + Adds the Property's columns to the UPDATE sql + + An array of the column names for the Property + The IType of the property. + The SqlUpdateBuilder. + + + + Adds the Property's updatable columns to the UPDATE sql + + An array of the column names for the Property + An array of updatable column flags. If this array is null, all supplied columns are considered updatable. + The IType of the property. + The SqlUpdateBuilder. + + + + Sets the IdentityColumn for the UPDATE sql to use. + + An array of the column names for the Property + The IType of the Identity Property. + The SqlUpdateBuilder. + + + + Sets the VersionColumn for the UPDATE sql to use. + + An array of the column names for the Property + The IVersionType of the Version Property. + The SqlUpdateBuilder. + + + + Adds the columns for the Type to the WhereFragment + + The names of the columns to add. + The IType of the property. + The operator to put between the column name and value. + The SqlUpdateBuilder + + + + Adds a string to the WhereFragment + + A well formed sql string with no parameters. + The SqlUpdateBuilder + + + + + + + Given an SQL SELECT statement, parse it to extract clauses starting with + FROM, up to and not including ORDER BY (known collectively + as a subselect clause). + + + + + Contains the subselect clause as it is being built. + + + + + Initializes a new instance of the class. + + The parts of an to extract the subselect clause from. + + + + Looks for a FROM clause in the + and adds the clause to the result if found. + + A or a . + if the part contained a FROM clause, + otherwise. + + + + Returns the subselect clause of the statement + being processed. + + An containing + the subselect clause of the original SELECT + statement. + + + + Allows us to construct SQL WHERE fragments + + + + + Describes the details of a with the + information required to to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + This is the base class that adds information to the + for the and + to use. + + +

+ The uses the SqlType to get enough + information to create an . +

+

+ The use the SqlType to convert the + to the appropriate sql type for SchemaExport. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Describes the details of a with the + information required to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Describes the details of a that is stored in + a BLOB column with the information required to generate + an . + + +

+ This can store the length of the binary data that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. +

+

+ This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a + BinarySqlType would work just fine. +

+
+
+ + + Describes the details of a with the + information required to to generate an . + + + This can store the binary data that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the binary data the should hold + + + + Initializes a new instance of the class. + + + + + SqlTypeFactory provides Singleton access to the SqlTypes. + + + + + Describes the details of a that is stored in an XML column. + + + Does not handle advanced concepts such as associating a schema to the XML column. + + + + + Describes the details of a that is stored in + a CLOB column with the information required to generate + an . + + +

+ This can store the length of the binary data that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. +

+

+ This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a + StringSqlType would work just fine. +

+
+
+ + + Describes the details of a with the + information required to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Describes the details of a with the + information required to to generate an . + + + This can store the length of the string that the can hold. + If no value is provided for the length then the Driver is responsible for + setting the properties on the correctly. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The length of the string the should hold. + + + + Statistics for a particular "category" (a named entity, + collection role, second level cache region or query). + + + + Collection related statistics + + + Entity related statistics + + + + Information about the first-level (session) cache for a particular session instance + + + + Get the number of entity instances associated with the session + + + Get the number of collection instances associated with the session + + + Get the set of all EntityKeys. + + + Get the set of all CollectionKeys. + + + + Statistics for a particular SessionFactory. + Beware of milliseconds metrics, they are dependent of the JVM precision: + you may then encounter a 10 ms approximation depending on your OS platform. + Please refer to the JVM documentation for more information. + + + + Reset all statistics + + + Find entity statistics per name + entity name + EntityStatistics object + + + Get collection statistics per role + collection role + CollectionStatistics + + + Second level cache statistics per region + region name + SecondLevelCacheStatistics + + + Query statistics from query string (HQL or SQL) + query string + QueryStatistics + + + log in info level the main statistics + + + Global number of entity deletes + + + Global number of entity inserts + + + Global number of entity loads + + + Global number of entity fetchs + + + Global number of entity updates + + + Global number of executed queries + + + The time in milliseconds of the slowest query. + + + The query string for the slowest query. + + + The global number of cached queries successfully retrieved from cache + + + The global number of cached queries *not* found in cache + + + The global number of cacheable queries put in cache + + + Get the global number of flush executed by sessions (either implicit or explicit) + + + + Get the global number of connections asked by the sessions + (the actual number of connections used may be much smaller depending + whether you use a connection pool or not) + + + + Global number of cacheable entities/collections successfully retrieved from the cache + + + Global number of cacheable entities/collections not found in the cache and loaded from the database. + + + Global number of cacheable entities/collections put in the cache + + + Global number of sessions closed + + + Global number of sessions opened + + + Global number of collections loaded + + + Global number of collections fetched + + + Global number of collections updated + + + Global number of collections removed + + + Global number of collections recreated + + + Start time + + + Enable/Disable statistics logs (this is a dynamic parameter) + + + All executed query strings + + + The names of all entities + + + The names of all collection roles + + + Get all second-level cache region names + + + The number of transactions we know to have been successful + + + The number of transactions we know to have completed + + + The number of prepared statements that were acquired + + + The number of prepared statements that were released + + + The number of StaleObjectStateExceptions that occurred + + + Statistics SPI for the NHibernate core + + + Query statistics (HQL and SQL) + Note that for a cached query, the cache miss is equals to the db count + + + Add statistics report of a DB query + rows count returned + time taken + + + Second level cache statistics of a specific region + + + + Not ported yet + + + + + Not ported yet + + + + + Not ported yet + + + + + Not ported yet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contract for delegates responsible for managing connection used by the + hbm2ddl tools. + + + + + Prepare the helper for use. + + + + + Get a reference to the connection we are using. + + + + + Release any resources held by this helper. + + + + + Executes a query and returns a datatable. The parameters array is used + in the following fashion ExecuteQuery("select @id", "id", 15); + + + + + A implementation based on an internally + built and managed . + + + + + Generates ddl to export table schema for a configured Configuration to the database + + + This Class can be used directly or the command line wrapper NHibernate.Tool.hbm2ddl.exe can be + used when a dll can not be directly used. + + + + + Create a schema exported for a given Configuration + + The NHibernate Configuration to generate the schema from. + + + + Create a schema exporter for the given Configuration, with the given + database connection properties + + The NHibernate Configuration to generate the schema from. + The Properties to use when connecting to the Database. + + + + Set the output filename. The generated script will be written to this file + + The name of the file to output the ddl to. + The SchemaExport object. + + + + Set the end of statement delimiter + + The end of statement delimiter. + The SchemaExport object. + + + + Run the schema creation script + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + + This is a convenience method that calls and sets + the justDrop parameter to false and the format parameter to true. + + + + + Run the drop schema script + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + + This is a convenience method that calls and sets + the justDrop and format parameter to true. + + + + + Executes the Export of the Schema in the given connection + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + if only the ddl to drop the Database objects should be executed. + if the ddl should be nicely formatted instead of one statement per line. + + The connection to use when executing the commands when export is . + Must be an opened connection. The method doesn't close the connection. + + The writer used to output the generated schema + + This method allows for both the drop and create ddl script to be executed. + This overload is provided mainly to enable use of in memory databases. + It does NOT close the given connection! + + + + + Executes the Export of the Schema. + + if the ddl should be outputted in the Console. + if the ddl should be executed against the Database. + if only the ddl to drop the Database objects should be executed. + if the ddl should be nicely formatted instead of one statement per line. + + This method allows for both the drop and create ddl script to be executed. + + + + + Format an SQL statement using simple rules + + The string containing the sql to format. + A string that contains formatted sql. + + The simple rules to used when formatting are: + + + Insert a newline after each comma + + + Indent three spaces after each inserted newline + + + + If the statement contains single/double quotes return unchanged because + it is too complex and could be broken by simple formatting. + + + + + + + + Execute the schema updates + + + + + Returns a List of all Exceptions which occured during the export. + + + + + + A implementation based on an explicitly supplied + connection. + + + + + A implementation based on a provided + . Essentially, ensures that the connection + gets cleaned up, but that the provider itself remains usable since it + was externally provided to us. + + + + + An abstract factory for ITransaction instances. + + + + + Configure from the given properties + + + + + + Create a new transaction and return it without starting it. + + + + + Wraps an ADO.NET to implement + the interface. + + + + + Allows the application to define units of work, while maintaining abstraction from the + underlying transaction implementation + + + A transaction is associated with a ISession and is usually instanciated by a call to + ISession.BeginTransaction(). A single session might span multiple transactions since + the notion of a session (a conversation between the application and the datastore) is of + coarser granularity than the notion of a transaction. However, it is intended that there be + at most one uncommitted ITransaction associated with a particular ISession + at a time. Implementors are not intended to be threadsafe. + + + + + Begin the transaction with the default isolation level. + + + + + Begin the transaction with the specified isolation level. + + Isolation level of the transaction + + + + Flush the associated ISession and end the unit of work. + + + This method will commit the underlying transaction if and only if the transaction + was initiated by this object. + + + + + Force the underlying transaction to roll back. + + + + + Enlist the in the current Transaction. + + The to enlist. + + It is okay for this to be a no op implementation. + + + + + Register a user synchronization callback for this transaction. + + The callback to register. + + + + Is the transaction in progress + + + + + Was the transaction rolled back or set to rollback only? + + + + + Was the transaction successfully committed? + + + This method could return even after successful invocation of Commit() + + + + + Initializes a new instance of the class. + + The the Transaction is for. + + + + Enlist the in the current . + + The to enlist in this Transaction. + + + This takes care of making sure the 's Transaction property + contains the correct or if there is no + Transaction for the ISession - ie BeginTransaction() not called. + + + This method may be called even when the transaction is disposed. + + + + + + Begins the on the + used by the . + + + Thrown if there is any problems encountered while trying to create + the . + + + + + Commits the by flushing the + and committing the . + + + Thrown if there is any exception while trying to call Commit() on + the underlying . + + + + + Rolls back the by calling the method Rollback + on the underlying . + + + Thrown if there is any exception while trying to call Rollback() on + the underlying . + + + + + A flag to indicate if Disose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this AdoTransaction is being Disposed of or Finalized. + + If this AdoTransaction is being Finalized (isDisposing==false) then make sure not + to call any methods that could potentially bring this AdoTransaction back to life. + + + + + Gets a indicating if the transaction was rolled back. + + + if the had Rollback called + without any exceptions. + + + + + Gets a indicating if the transaction was committed. + + + if the had Commit called + without any exceptions. + + + + + A mimic to the javax.transaction.Synchronization callback to enable + + + + + Implementors define a strategy for transforming criteria query + results into the actual application-visible query result list. + + + + + + + + + + + + + + + + + + + + + Result transformer that allows to transform a result to + a user specified class which will be populated via setter + methods or fields matching the alias names. + + + + IList resultWithAliasedBean = s.CreateCriteria(typeof(Enrollment)) + .CreateAlias("Student", "st") + .CreateAlias("Course", "co") + .SetProjection( Projections.ProjectionList() + .Add( Projections.Property("co.Description"), "CourseDescription" ) + ) + .SetResultTransformer( new AliasToBeanResultTransformer(typeof(StudentDTO)) ) + .List(); + + StudentDTO dto = (StudentDTO)resultWithAliasedBean[0]; + + + + + + Each row of results is a map () from alias to values/entities + + + + + Creates a resulttransformer that will inject aliased values into instances + of via property methods or fields. + + + + Support for tuplizers relating to components. + + + + Defines further responsibilities regarding tuplization based on + a mapped components. + + + ComponentTuplizer implementations should have the following constructor signature: + (org.hibernate.mapping.Component) + + + + + A tuplizer defines the contract for things which know how to manage + a particular representation of a piece of data, given that + representation's (the entity-mode + essentially defining which representation). + + + If that given piece of data is thought of as a data structure, then a tuplizer + is the thing which knows how to: + + create such a data structure appropriately + extract values from and inject values into such a data structure + + + For example, a given piece of data might be represented as a POCO class. + Here, it's representation and entity-mode is POCO. Well a tuplizer for POCO + entity-modes would know how to: + + create the data structure by calling the POCO's constructor + extract and inject values through getters/setter, or by direct field access, etc + + + That same piece of data might also be represented as a DOM structure, using + the tuplizer associated with the XML entity-mode, which would generate instances + of as the data structure and know how to access the + values as either nested s or as s. + + + + + + + Extract the current values contained on the given entity. + + The entity from which to extract values. + The current property values. + HibernateException + + + Inject the given values into the given entity. + The entity. + The values to be injected. + + + Extract the value of a particular property from the given entity. + The entity from which to extract the property value. + The index of the property for which to extract the value. + The current value of the given property on the given entity. + + + Generate a new, empty entity. + The new, empty entity instance. + + + + Is the given object considered an instance of the the entity (acconting + for entity-mode) managed by this tuplizer. + + The object to be checked. + True if the object is considered as an instance of this entity within the given mode. + + + + Return the pojo class managed by this tuplizer. + + The persistent class. + + Need to determine how to best handle this for the Tuplizers for EntityModes + other than POCO. + + + + Retrieve the current value of the parent property. + + The component instance from which to extract the parent property value. + + The current value of the parent property. + + + Set the value of the parent property. + The component instance on which to set the parent. + The parent to be set on the component. + The current session factory. + + + Does the component managed by this tuuplizer contain a parent property? + True if the component does contain a parent property; false otherwise. + + + This method does not populate the component parent + + + + Handles mapping s to ComponentTuplizers. +

+ Most of the handling is really in the super class; here we just create + the tuplizers and add them to the superclass +

+
+ + Centralizes handling of to mappings. + + + Given a supposed instance of an entity/component, guess its entity mode. + The supposed instance of the entity/component. + The guessed entity mode. + + + + Locate the contained tuplizer responsible for the given entity-mode. If + no such tuplizer is defined on this mapping, then return null. + + The entity-mode for which the caller wants a tuplizer. + The tuplizer, or null if not found. + + + Locate the tuplizer contained within this mapping which is responsible + for the given entity-mode. If no such tuplizer is defined on this + mapping, then an exception is thrown. + + + The entity-mode for which the caller wants a tuplizer. + + The tuplizer. + + HibernateException Unable to locate the requested tuplizer. + + + Centralizes metamodel information about a component. + + + + A specific to the dynamic-map entity mode. + + + + + A specific to the POCO entity mode. + + + + Support for tuplizers relating to entities. + + + + Defines further responsibilities regarding tuplization based on a mapped entity. + + + EntityTuplizer implementations should have the following constructor signature: + (, ) + + + + Create an entity instance initialized with the given identifier. + The identifier value for the entity to be instantiated. + The instantiated entity. + + + Extract the identifier value from the given entity. + The entity from which to extract the identifier value. + The identifier value. + + + + Inject the identifier value into the given entity. + + The entity to inject with the identifier value. + The value to be injected as the identifier. + Has no effect if the entity does not define an identifier property + + + + Inject the given identifier and version into the entity, in order to + "roll back" to their original values. + + + The identifier value to inject into the entity. + The version value to inject into the entity. + + + Extract the value of the version property from the given entity. + The entity from which to extract the version value. + The value of the version property, or null if not versioned. + + + Inject the value of a particular property. + The entity into which to inject the value. + The property's index. + The property value to inject. + + + Inject the value of a particular property. + The entity into which to inject the value. + The name of the property. + The property value to inject. + + + Extract the values of the insertable properties of the entity (including backrefs) + The entity from which to extract. + a map of instances being merged to merged instances + The session in which the resuest is being made. + The insertable property values. + + + Extract the value of a particular property from the given entity. + The entity from which to extract the property value. + The name of the property for which to extract the value. + The current value of the given property on the given entity. + + + Called just after the entities properties have been initialized. + The entity being initialized. + Are defined lazy properties currently unfecthed + The session initializing this entity. + + + + Generates an appropriate proxy representation of this entity for this entity-mode. + + The id of the instance for which to generate a proxy. + The session to which the proxy should be bound. + The generate proxies. + + + Does the given entity instance have any currently uninitialized lazy properties? + The entity to be check for uninitialized lazy properties. + True if uninitialized lazy properties were found; false otherwise. + + + + Does the class managed by this tuplizer implement + the interface. + + True if the ILifecycle interface is implemented; false otherwise. + + + + Does the class managed by this tuplizer implement + the interface. + + True if the IValidatable interface is implemented; false otherwise. + + + Returns the java class to which generated proxies will be typed. + The .NET class to which generated proxies will be typed + + + Is it an instrumented POCO? + + + Does this entity, for this mode, present a possibility for proxying? + True if this tuplizer can generate proxies for this entity. + + + Constructs a new AbstractEntityTuplizer instance. + The "interpreted" information relating to the mapped entity. + The parsed "raw" mapping data relating to the given entity. + + + Build an appropriate Getter for the given property. + The property to be accessed via the built Getter. + The entity information regarding the mapped entity owning this property. + An appropriate Getter instance. + + + Build an appropriate Setter for the given property. + The property to be accessed via the built Setter. + The entity information regarding the mapped entity owning this property. + An appropriate Setter instance. + + + Build an appropriate Instantiator for the given mapped entity. + The mapping information regarding the mapped entity. + An appropriate Instantiator instance. + + + Build an appropriate ProxyFactory for the given mapped entity. + The mapping information regarding the mapped entity. + The constructed Getter relating to the entity's id property. + The constructed Setter relating to the entity's id property. + An appropriate ProxyFactory instance. + + + Extract a component property value. + The component property types. + The component instance itself. + The property path for the property to be extracted. + The property value extracted. + + + Return the entity-mode handled by this tuplizer instance. + + + Retrieves the defined entity-name for the tuplized entity. + + + + Retrieves the defined entity-names for any subclasses defined for this entity. + + + + + Handles mapping s to s. + + + Most of the handling is really in the super class; here we just create + the tuplizers and add them to the superclass + + + + + Instantiates a EntityEntityModeToTuplizerMapping based on the given + entity mapping and metamodel definitions. + + The entity mapping definition. + The entity metamodel definition. + + + An specific to the POCO entity mode. + + + Contract for implementors responsible for instantiating entity/component instances. + + + Perform the requested entity instantiation. + The id of the entity to be instantiated. + An appropriately instantiated entity. + This form is never called for component instantiation, only entity instantiation. + + + Perform the requested instantiation. + The instantiated data structure. + + + + Performs check to see if the given object is an instance of the entity + or component which this Instantiator instantiates. + + The object to be checked. + True is the object does represent an instance of the underlying entity/component. + + + + Represents a defined entity identifier property within the Hibernate + runtime-metamodel. + + + Author: Steve Ebersole + + + + + Defines the basic contract of a Property within the runtime metamodel. + + + + + Constructor for Property instances. + + The name by which the property can be referenced within its owner. + The node name to use for XML-based representation of this property. + The Hibernate Type of this property. + + + + Construct a non-virtual identifier property. + + The name of the property representing the identifier within + its owning entity. + The node name to use for XML-based representation of this + property. + The Hibernate Type for the identifier property. + Is this an embedded identifier. + The value which, if found as the value on the identifier + property, represents new (i.e., un-saved) instances of the owning entity. + The generator to use for id value generation. + + + + Construct a virtual IdentifierProperty. + + The Hibernate Type for the identifier property. + Is this an embedded identifier. + The value which, if found as the value on the identifier + property, represents new (i.e., un-saved) instances of the owning entity. + The generator to use for id value generation. + + + + Defines a POCO-based instantiator for use from the tuplizers. + + + + Responsible for generation of runtime metamodel representations. + Makes distinction between identifier, version, and other (standard) properties. + + + Author: Steve Ebersole + + + + + Generates an IdentifierProperty representation of the for a given entity mapping. + + The mapping definition of the entity. + The identifier value generator to use for this identifier. + The appropriate IdentifierProperty definition. + + + + Generates a VersionProperty representation for an entity mapping given its + version mapping Property. + + The version mapping Property. + Is property lazy loading currently available. + The appropriate VersionProperty definition. + + + + Generate a "standard" (i.e., non-identifier and non-version) based on the given + mapped property. + + The mapped property. + Is property lazy loading currently available. + The appropriate StandardProperty definition. + + + + Represents a basic property within the Hibernate runtime-metamodel. + + + Author: Steve Ebersole + + + + + Constructs StandardProperty instances. + + The name by which the property can be referenced within + its owner. + The node name to use for XML-based representation of this + property. + The Hibernate Type of this property. + Should this property be handled lazily? + Is this property an insertable value? + Is this property an updateable value? + Is this property generated in the database on insert? + Is this property generated in the database on update? + Is this property a nullable value? + Is this property a checkable value? + Is this property a versionable value? + The cascade style for this property's value. + Any fetch mode defined for this property + + + + Represents a version property within the Hibernate runtime-metamodel. + + + Author: Steve Ebersole + + + + + Constructs VersionProperty instances. + + The name by which the property can be referenced within + its owner. + The node name to use for XML-based representation of this + property. + The Hibernate Type of this property. + Should this property be handled lazily? + Is this property an insertable value? + Is this property an updateable value? + Is this property generated in the database on insert? + Is this property generated in the database on update? + Is this property a nullable value? + Is this property a checkable value? + Is this property a versionable value? + The cascade style for this property's value. + The value which, if found as the value of + this (i.e., the version) property, represents new (i.e., un-saved) + instances of the owning entity. + + + Logic to bind stream of byte into a VARBINARY + + + + Superclass for mutable nullable types. + + + + + Superclass of single-column nullable types. + + + Maps the Property to a single column that is capable of storing nulls in it. If a .net Struct is + used it will be created with its unitialized value and then on Update the uninitialized value of + the Struct will be written to the column - not . + + + + + The base implementation of the interface. + Mapping of the built in Type hierarchy. + + + + + Defines a mapping from a .NET to a SQL datatype. + This interface is intended to be implemented by applications that need custom types. + + Implementors should usually be immutable and MUST definately be threadsafe. + + + + + When implemented by a class, returns the SqlTypes for the columns mapped by this IType. + The that uses this IType.An array of s. + + + + When implemented by a class, returns how many columns are used to persist this type. + The that uses this IType.The number of columns this IType spans.MappingException + + + + When implemented by a class, should the parent be considered dirty, + given both the old and current field or element value? + The old valueThe current valueThe true if the field is dirty + + + + When implemented by a class, gets an instance of the object mapped by + this IType from the . + The that contains the values + The names of the columns in the that contain the + value to populate the IType with. + The object mapped by this IType. + Implementors should handle possibility of null values. + + + + + When implemented by a class, gets an instance of the object + mapped by this IType from the . + The that contains the valuesThe name of the column in the that contains the + value to populate the IType with.The object mapped by this IType. + Implementations should handle possibility of null values. + This method might be called if the IType is known to be a single-column type. + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + The to put the values into.The object that contains the values.The index of the to start writing the values to.Indicates which columns are to be set. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + + The to put the values into. + The object that contains the values. + The index of the to start writing the values to. + + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, a representation of the value to be + embedded in an XML element + The object that contains the values.An Xml formatted string. + + + + When implemented by a class, returns a deep copy of the persistent + state, stopping at entities and at collections. + A Collection element or Entity fieldThe entityMode.The session factory.A deep copy of the object. + + + + When implemented by a class, retrieves an instance of the mapped class, + or the identifier of an entity or collection from a . + The that contains the values. + The names of the columns in the that contain the + value to populate the IType with. + the sessionThe parent EntityAn identifier or actual object mapped by this IType. + + This is useful for 2-phase property initialization - the second phase is a call to + ResolveIdentifier() + + + Most implementors of this method will just pass the call to NullSafeGet(). + + + + + + When implemented by a class, maps identifiers to Entities or Collections. + An identifier or value returned by Hydrate()The sessionThe parent EntityThe Entity or Collection referenced by this Identifier. + This is the second phase of 2-phase property initialization. + + + + + Given a hydrated, but unresolved value, return a value that may be used to + reconstruct property-ref associations. + + + + + + + + During merge, replace the existing (target) value in the entity we are merging to + with a new (original) value from the detached entity we are merging. For immutable + objects, or null values, it is safe to simply return the first parameter. For + mutable objects, it is safe to return a copy of the first parameter. For objects + with component values, it might make sense to recursively replace component values. + + the value from the detached entity being merged + the value in the managed entity + + + + + the value to be merged + + + + Compare two instances of the class mapped by this type for persistence + "equality" - equality of persistent state - taking a shortcut for + entity references. + + + + + boolean + + + + Compare two instances of the class mapped by this type for persistence + "equality" - equality of persistent state. + + + + + boolean + + + + Compare two instances of the class mapped by this type for persistence + "equality" - equality of persistent state. + + + + + + boolean + + + Get a hashcode, consistent with persistence "equality" + + + + + Get a hashcode, consistent with persistence "equality" + + + + + + compare two instances of the type + + + + + + Get the type of a semi-resolved value. + + + A representation of the value to be embedded in an XML element. + + + + + + Parse the XML representation of an instance. + + + an instance of the type + + + + Given an instance of the type, return an array of boolean, indicating + which mapped columns would be null. + + an instance of the type + + + + + When implemented by a class, gets the abbreviated name of the type. + The NHibernate type name. + + + + When implemented by a class, gets the returned + by the NullSafeGet() methods. + + The from the .NET framework. + + This is used to establish the class of an array of this Itype + + + + + When implemented by a class, gets the value indicating if the objects + of this IType are mutable. + true if the objects mapped by this IType are mutable. + With respect to the referencing object... + Entities and Collections are considered immutable because they manage their own internal state. + + + + + When implemented by a class, gets a value indicating if the implementor is castable to an an + true if this is an AssociationThis does not necessarily imply that the type actually represents an association. + + + + When implemented by a class, gets a value indicating if the implementor is a collection type + true if this is a . + + + + When implemented by a class, gets a value indicating if the implementor + is an . + true if this is an + If true, the implementation must be castable to . + A component type may own collections or associations and hence must provide certain extra functionality. + + + + + When implemented by a class, gets a value indicating if the implementor + extends + true if this is an + + + + + + + Disassembles the object into a cacheable representation. + + The value to disassemble. + The is not used by this method. + optional parent entity object (needed for collections) + The disassembled, deep cloned state of the object + + This method calls DeepCopy if the value is not null. + + + + + Reconstructs the object from its cached "disassembled" state. + + The disassembled state from the cache + The is not used by this method. + The parent Entity object is not used by this method + The assembled object. + + This method calls DeepCopy if the value is not null. + + + + + Should the parent be considered dirty, given both the old and current + field or element value? + + The old value + The current value + The is not used by this method. + true if the field is dirty + This method uses IType.Equals(object, object) to determine the value of IsDirty. + + + + Retrives an instance of the mapped class, or the identifier of an entity + or collection from a . + + The that contains the values. + + The names of the columns in the that contain the + value to populate the IType with. + + the session + The parent Entity + An identifier or actual object mapped by this IType. + + This method uses the IType.NullSafeGet(IDataReader, string[], ISessionImplementor, object) method + to Hydrate this . + + + + + Maps identifiers to Entities or Collections. + + An identifier or value returned by Hydrate() + The is not used by this method. + The parent Entity is not used by this method. + The value. + + There is nothing done in this method other than return the value parameter passed in. + + + + + Says whether the value has been modified + + + + + When implemented by a class, returns a deep copy of the persistent + state, stopping at entities and at collections. + A Collection element or Entity fieldThe entityMode.The session factory.A deep copy of the object. + + + + When implemented by a class, returns the SqlTypes for the columns mapped by this IType. + The that uses this IType.An array of s. + + + + When implemented by a class, returns how many columns are used to persist this type. + The that uses this IType.The number of columns this IType spans.MappingException + + + + + + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + The to put the values into.The object that contains the values.The index of the to start writing the values to.Indicates which columns are to be set. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + + The to put the values into. + The object that contains the values. + The index of the to start writing the values to. + + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + + When implemented by a class, a representation of the value to be + embedded in an XML element + The object that contains the values.An Xml formatted string. + + + + Gets a value indicating if the is an . + + false - by default an is not an . + + + + Gets a value indicating if the is a . + + false - by default an is not a . + + + + Gets a value indicating if the is an . + + false - by default an is not an . + + + + Gets a value indicating if the is a . + + false - by default an is not a . + + + + Gets a value indicating if the implementation is an "object" type + + false - by default an is not a "object" type. + + + + When implemented by a class, gets the value indicating if the objects + of this IType are mutable. + true if the objects mapped by this IType are mutable. + With respect to the referencing object... + Entities and Collections are considered immutable because they manage their own internal state. + + + + + When implemented by a class, gets the abbreviated name of the type. + The NHibernate type name. + + + + When implemented by a class, gets the returned + by the NullSafeGet() methods. + + The from the .NET framework. + + This is used to establish the class of an array of this Itype + + + + + Initialize a new instance of the NullableType class using a + . + + The underlying . + This is used when the Property is mapped to a single column. + + + + When implemented by a class, put the value from the mapped + Property into to the . + + The to put the value into. + The object that contains the value. + The index of the to start writing the values to. + + Implementors do not need to handle possibility of null values because this will + only be called from after + it has checked for nulls. + + + + + When implemented by a class, gets the object in the + for the Property. + + The that contains the value. + The index of the field to get the value from. + An object with the value from the database. + + + + When implemented by a class, gets the object in the + for the Property. + + The that contains the value. + The name of the field to get the value from. + An object with the value from the database. + + Most implementors just call the + overload of this method. + + + + + A representation of the value to be embedded in an XML element + + The object that contains the values. + + An Xml formatted string. + + + + When implemented by a class, a representation of the value to be + embedded in an XML element + The object that contains the values.An Xml formatted string. + + + This implementation forwards the call to if the parameter + value is not null. + + + It has been "sealed" because the Types inheriting from + do not need and should not override this method. All of their implementation + should be in . + + + + + + Parse the XML representation of an instance + + XML string to parse, guaranteed to be non-empty + + + + + When implemented by a class, puts the value/values from the mapped + class into the . + + The to put the values into. + The object that contains the values. + The index of the to start writing the values to. + + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from . + + + + This implementation forwards the call to . + + + It has been "sealed" because the Types inheriting from + do not need to and should not override this method. All of their implementation + should be in . + + + + + + Puts the value from the mapped class into the . + + The to put the values into. + The object that contains the values. + The index of the to write the value to. + + + This method checks to see if value is null, if it is then the value of + is written to the . + + + If the value is not null, then the method + is called and that method is responsible for setting the value. + + + + + + When implemented by a class, gets an instance of the object mapped by + this IType from the . + The that contains the values + The names of the columns in the that contain the + value to populate the IType with. + The object mapped by this IType. + Implementors should handle possibility of null values. + + + This has been sealed because no other class should override it. This + method calls for a single value. + It only takes the first name from the string[] names parameter - that is a + safe thing to do because a Nullable Type only has one field. + + + + + Extracts the values of the fields from the DataReader + + The DataReader positioned on the correct record + An array of field names. + The value off the field from the DataReader + + In this class this just ends up passing the first name to the NullSafeGet method + that takes a string, not a string[]. + + I don't know why this method is in here - it doesn't look like anybody that inherits + from NullableType overrides this... + + TODO: determine if this is needed + + + + + Gets the value of the field from the . + + The positioned on the correct record. + The name of the field to get the value from. + The value of the field. + + + This method checks to see if value is null, if it is then the null is returned + from this method. + + + If the value is not null, then the method + is called and that method is responsible for retrieving the value. + + + + + + When implemented by a class, gets an instance of the object + mapped by this IType from the . + The that contains the valuesThe name of the column in the that contains the + value to populate the IType with.The object mapped by this IType. + Implementations should handle possibility of null values. + This method might be called if the IType is known to be a single-column type. + + + + This implementation forwards the call to . + + + It has been "sealed" because the Types inheriting from + do not need to and should not override this method. All of their implementation + should be in . + + + + + + When implemented by a class, returns the SqlTypes for the columns mapped by this IType. + The that uses this IType.An array of s. + + + This implementation forwards the call to . + + + It has been "sealed" because the Types inheriting from + do not need to and should not override this method because they map to a single + column. All of their implementation should be in . + + + + + + Returns the number of columns spanned by this + + A always returns 1. + + This has the hard coding of 1 in there because, by definition of this class, + a NullableType can only map to one column in a table. + + + + + Determines whether the specified is equal to this + . + + The to compare with this NullableType. + true if the SqlType and Name properties are the same. + + + + Serves as a hash function for the , + suitable for use in hashing algorithms and data structures like a hash table. + + + A hash code that is based on the 's + hash code and the 's hash code. + + + + Gets the underlying for + the column mapped by this . + + The underlying . + + This implementation should be suitable for all subclasses unless they need to + do some special things to get the value. There are no built in s + that override this Property. + + + + + Initialize a new instance of the MutableType class using a + . + + The underlying . + + + + Gets the value indicating if this IType is mutable. + + true - a is mutable. + + This has been "sealed" because any subclasses are expected to be mutable. If + the type is immutable then they should inherit from . + + + + + An that may be used to version data. + + + + + When implemented by a class, increments the version. + + The current version + The current session, if available. + an instance of the that has been incremented. + + + + When implemented by a class, gets an initial version. + + The current session, if available. + An instance of the type. + + + + Are the two version values considered equal? + + One value to check. + The other value to check. + true if the values are equal, false otherwise. + + + + Get a comparator for the version numbers + + + + Convert the byte[] into the expected object type + + + Convert the object into the internal byte[] representation + + + + Common base class for and . + + + + + Superclass of types. + + + + + Superclass of nullable immutable types. + + + + + Initialize a new instance of the ImmutableType class using a + . + + The underlying . + + + + Gets the value indicating if this IType is mutable. + + false - an is not mutable. + + This has been "sealed" because any subclasses are expected to be immutable. If + the type is mutable then they should inherit from . + + + + + An that may appear as an SQL literal + + + + + When implemented by a class, return a representation + of the value, suitable for embedding in an SQL statement + + The object to convert to a string for the SQL statement. + + A string that contains a well formed SQL Statement. + + + + Initialize a new instance of the PrimitiveType class using a . + + The underlying . + + + + When implemented by a class, return a representation + of the value, suitable for embedding in an SQL statement + + The object to convert to a string for the SQL statement. + + A string that containts a well formed SQL Statement. + + + + A representation of the value to be embedded in an XML element + + The object that contains the values. + + An Xml formatted string. + + This just calls so if there is + a possibility of this PrimitiveType having any characters + that need to be encoded then this method should be overridden. + + + + + An IType that may be used for a discriminator column. + + + This interface contains no new methods but does require that an + that will be used in a discriminator column must implement + both the and interfaces. + + + + + An that may be used as an identifier. + + + + + When implemented by a class, converts the xml string from the + mapping file to the .NET object. + + The value of discriminator-value or unsaved-value attribute. + The string converted to the object. + + This method needs to be able to handle any string. It should not just + call System.Type.Parse without verifying that it is a parsable value + for the System.Type. + + + + + Maps a Property + to a DbType.AnsiStringFixedLength column. + + + + + Maps a Property + to a column. + + + + + + + + Handles "any" mappings and the old deprecated "object" type. + + + The identifierType is any NHibernate IType that can be serailized by default. + For example, you can specify the identifierType as an Int32 or a custom identifier + type that you built. The identifierType matches to one or many columns. + + The metaType maps to a single column. By default it stores the name of the Type + that the Identifier identifies. + + For example, we can store a link to any table. It will have the results + class_name id_col1 + ======================================== + Simple, AssemblyName 5 + DiffClass, AssemblyName 5 + Simple, AssemblyName 4 + + You can also provide you own type that might map the name of the class to a table + with a giant switch statemet or a good naming convention for your class->table. The + data stored might look like + class_name id_col1 + ======================================== + simple_table 5 + diff_table 5 + simple_table 4 + + + + + + Enables other Component-like types to hold collections and have cascades, etc. + + + + + Get the values of the component properties of + a component instance + + + + + Optional Operation + + + + + Optional operation + + + + Get the types of the component properties + + + Get the names of the component properties + + + + Optional operation + + nullability of component properties + + + + An that represents some kind of association between entities. + + + + + Get the "persister" for this association - a class or collection persister + + + + + + Get the entity name of the associated entity + + + + Get the "filtering" SQL fragment that is applied in the + SQL on clause, in addition to the usual join condition. + + + + + When implemented by a class, gets the type of foreign key directionality + of this association. + + The of this association. + + + + Is the primary key of the owning entity table + to be used in the join? + + + + + Get the name of the property in the owning entity + that provides the join key (null if the identifier) + + + + + The name of a unique property of the associated entity + that provides the join key (null if the identifier of + an entity, or key of a collection) + + + + + Do we dirty check this association, even when there are + no columns to be updated. + + + + + + + + + + + + + + + Not really relevant to AnyType, since it cannot be "joined" + + + + + An that maps an collection + to the database. + + + + + The base class for an that maps collections + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + + + Instantiate an uninitialized collection wrapper or holder. Callers MUST add the holder to the + persistence context! + + The session from which the request is originating. + The underlying collection persister (metadata) + The owner key. + The instantiated collection. + + + + Wrap the naked collection instance in a wrapper, or instantiate a + holder. Callers MUST add the holder to the persistence context! + + The session from which the request is originating. + The bare collection to be wrapped. + + A subclass of that wraps the non NHibernate collection. + + + + + Get the key value from the owning entity instance, usually the identifier, but might be some + other unique key, in the case of property-ref + + + + + Instantiate an empty instance of the "underlying" collection (not a wrapper), + but with the given anticipated size (i.e. accounting for initial capacity + and perhaps load factor). + + + The anticipated size of the instaniated collection after we are done populating it. + + A newly instantiated collection to be wrapped. + + + + Get an iterator over the element set of the collection, which may not yet be wrapped + + The collection to be iterated + The session from which the request is originating. + The iterator. + + + + Get an iterator over the element set of the collection in POCO mode + + The collection to be iterated + The iterator. + + + + We always need to dirty check the collection because we sometimes + need to incremement version number of owner and also because of + how assemble/disassemble is implemented for uks + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The of the element contained in the array. + + + This creates a bag that is non-generic. + + + + + + + + + + + + + + Wraps a in a . + + The for the collection to be a part of. + The unwrapped array. + + An that wraps the non NHibernate . + + + + + The for the element. + + + + + + + + An that maps an collection + using bag semantics to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + + Instantiates a new for the bag. + + The current for the bag. + + + A new . + + + + Wraps an in a NHibernate . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + Maps a System.Byte[] Property to an column that can store a BLOB. + + + This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a BinaryType + would work just fine. + + + + + BinaryType. + + + + + + + + Maps a Property + to a column. + + + + + Initialize a new instance of the BooleanType + + This is used when the Property is mapped to a native boolean type. + + + + Initialize a new instance of the BooleanType class using a + . + + The underlying . + + This is used when the Property is mapped to a string column + that stores true or false as a string. + + + + + Maps a property + to a column. + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a DbType.StringFixedLength column. + + + + + ClassMetaType is a NH specific type to support "any" with meta-type="class" + + + It work like a MetaType where the key is the entity-name it self + + + + + + + + + + + + + + + + + + + + + This method does not populate the component parent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for CompositeCustomType. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + CultureInfoType stores the culture name (not the Culture ID) of the + in the DB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A custom type for mapping user-written classes that implement + . + + + + + + + Adapts IUserType to the generic IType interface. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property to a column that + stores date & time down to the accuracy of a second. + + + This only stores down to a second, so if you are looking for the most accurate + date and time storage your provider can give you use the . + or the + + + + + + + + + + + Maps the Year, Month, and Day of a Property to a + column + + + + + + + + + + + Maps a Property + to a column. + + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A reference to an entity class + + + + Constructs the requested entity type mapping. + The name of the associated entity. + + The property-ref name, or null if we + reference the PK of the associated entity. + + Is eager fetching enabled. + Should values of this mapping be embedded in XML modes? + + Is unwrapping of proxies allowed for this association; unwrapping + says to return the "implementation target" of lazy prooxies; typically only possible + with lazy="no-proxy". + + + + Two entities are considered the same when their instances are the same. + One entity instance + Another entity instance + The entity mode. + True if x == y; false otherwise. + + + + Get the identifier value of an instance or proxy. +

+ Intended only for loggin purposes!!! +

+ The object from which to extract the identifier. + The entity persister + The entity mode + The extracted identifier. +
+ + + Converts the id contained in the to an object. + + The that contains the query results. + A string array of column names that contain the id. + The this is occurring in. + The object that this Entity will be a part of. + + An instance of the object or if the identifer was null. + + + + Retrieves the {@link Joinable} defining the associated entity. + The session factory. + The associated joinable + + + + Determine the type of either (1) the identifier if we reference the + associated entity's PK or (2) the unique key to which we refer (i.e. + the property-ref). + + The mappings... + The appropriate type. + + + + The name of the property on the associated entity to which our FK refers + + The mappings... + The appropriate property name. + + + Convenience method to locate the identifier type of the associated entity. + The mappings... + The identifier type + + + Convenience method to locate the identifier type of the associated entity. + The originating session + The identifier type + + + + Resolves the identifier to the actual object. + + + + + Resolve an identifier or unique key value + + + + + + + + The name of the associated entity. + The session factory, for resolution. + The associated entity name. + + + The name of the associated entity. + The associated entity name. + + + + Load an instance by a unique key that is not the primary key. + + The name of the entity to load + The name of the property defining the uniqie key. + The unique key property value. + The originating session. + The loaded entity + + + Explicitly, an entity type is an entity type + True. + + + + This returns the wrong class for an entity with a proxy, or for a named + entity. Theoretically it should return the proxy class, but it doesn't. +

+ The problem here is that we do not necessarily have a ref to the associated + entity persister (nor to the session factory, to look it up) which is really + needed to "do the right thing" here... +

+
+ + + + + + + + + When implemented by a class, gets the type of foreign key directionality + of this association. + + The of this association. + + + + Is the foreign key the primary key of the table? + + + + + Maps a to a + DbType.String. + + + If your database should store the + using the named values in the enum instead of the underlying values + then subclass this . + + + All that needs to be done is to provide a default constructor that + NHibernate can use to create the specific type. For example, if + you had an enum defined as. + + + + public enum MyEnum + { + On, + Off, + Dimmed + } + + + + all that needs to be written for your enum string type is: + + + + public class MyEnumStringType : NHibernate.Type.EnumStringType + { + public MyEnumStringType() + : base( typeof( MyEnum ) ) + { + } + } + + + + The mapping would look like: + + + + ... + <property name="Status" type="MyEnumStringType, AssemblyContaining" /> + ... + + + + The TestFixture that shows the working code can be seen + in NHibernate.Test.TypesTest.EnumStringTypeFixture.cs + , NHibernate.Test.TypesTest.EnumStringClass.cs + , and NHibernate.Test.TypesTest.EnumStringClass.hbm.xml + + + + + + Hardcoding of 255 for the maximum length + of the Enum name that will be saved to the db. + + + 255 because that matches the default length that hbm2ddl will + use to create the column. + + + + + Initializes a new instance of . + + The of the Enum. + + + + Initializes a new instance of . + + The of the Enum. + The length of the string that can be written to the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This appends enumstring - to the beginning of the underlying + enums name so that could still be stored + using the underlying value through the + also. + + + + + Represents directionality of the foreign key constraint + + + + + + + + Should we cascade at this cascade point? + + + + + A foreign key from child to parent + + + + + A foreign key from parent to child + + + + + An that maps an collection + to the database using bag semantics. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the bag. + + The current for the bag. + The current for the bag. + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + An that maps an collection + using bag semantics with an identifier to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + + Instantiates a new for the identifier bag. + + The current for the identifier bag. + + + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + An that maps an collection + to the database using list semantics. + + + + + An that maps an collection + using list semantics to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + + Instantiates a new for the bag. + + The current for the bag. + + + A new . + + + + Wraps an exist in a NHibernate . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the list. + + The current for the list. + The current for the list. + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + An that maps an collection + to the database. + + + + + An that maps an collection + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + + Instantiates a new for the map. + + The current for the map. + + + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the map. + + The current for the map. + + Not used. + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the + non NHibernate . + + + + + An that maps an collection + to the database. + + + + + An that maps an collection + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + + Instantiates a new for the set. + + The current for the set. + + + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + + Instantiates a new for the set. + + The current for the set. + The current for the set. + + + + + Wraps an in a . + + The for the collection to be a part of. + The unwrapped . + + An that wraps the non NHibernate . + + + + + An that maps a sorted collection + to the database. + + + + + Initializes a new instance of a class for + a specific role. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use to compare + set elements. + + + + Maps a Property + to a column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + A many-to-one association to an entity + + + + + Hydrates the Identifier from . + + The that contains the query results. + A string array of column names to read from. + The this is occurring in. + The object that this Entity will be a part of. + + An instantiated object that used as the identifier of the type. + + + + + A one-to-one association to an entity + + + + + We don't need to dirty check one-to-one because of how + assemble/disassemble is implemented and because a one-to-one + association is never dirty + + + + + A implemented using a collection that maintains + the order in which elements are inserted into it. + + + + + Initializes a new instance of a class. + + The role the persistent collection is in. + + + + + + A implemented using a collection that maintains + the order in which elements are inserted into it. + + + + + Initializes a new instance of a class + + The role the persistent collection is in. + + + + + + PersistentEnumType + + + + + Gets an instance of the Enum + + The underlying value of an item in the Enum. + + An instance of the Enum set to the code value. + + + + + Gets the correct value for the Enum. + + The value to convert (an enum instance). + A boxed version of the code, converted to the correct type. + + This handles situations where the DataProvider returns the value of the Enum + from the db in the wrong underlying type. It uses to + convert it to the correct type. + + + + + Maps a Property + to a column. + + + + + + + + + + + Maps an instance of a that has the + to a column. + + + + The SerializableType should be used when you know that Bytes are + not going to be greater than 8,000. + + + The base class is because the data is stored in + a byte[]. The System.Array does not have a nice "equals" method so we must + do a custom implementation. + + + + + + + + + + + + + + + + + + + + + + + Thrown when a property cannot be serialized/deserialized + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Maps a Property to an + column. + + + Verify through your database's documentation if there is a column type that + matches up with the capabilities of + + + + + + + + + + + Extends the to provide sorting. + + + + + Initializes a new instance of a class for + a specific role using the to do the sorting. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use for the sorting. + + + + + Extends the to provide sorting. + + + + + Initializes a new instance of a class for + a specific role using the to do the sorting. + + The role the persistent collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use for the sorting. + + + + + A one-to-one association that maps to specific formula(s) + instead of the primary key column of the owning entity. + + + + + Maps a Property to an + column that can store a CLOB. + + + This is only needed by DataProviders (SqlClient) that need to specify a Size for the + IDbDataParameter. Most DataProvider(Oralce) don't need to set the Size so a StringType + would work just fine. + + + + + Maps a to a column. + + + + + + + + + + + + + + + + + Maps a Property to an column + that stores the DateTime using the Ticks property. + + + This is the recommended way to "timestamp" a column. + The System.DateTime.Ticks is accurate to 100-nanosecond intervals. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps a Property to an column + + + + + + + + + + + + + + + + + + + + + + + + + This is almost the exact same type as the DateTime except it can be used + in the version column, stores it to the accuracy the database supports, + and will default to the value of DateTime.Now if the value is null. + + +

+ The value stored in the database depends on what your data provider is capable + of storing. So there is a possibility that the DateTime you save will not be + the same DateTime you get back when you check DateTime.Equals(DateTime) because + they will have their milliseconds off. +

+

+ For example - SQL Server 2000 is only accurate to 3.33 milliseconds. So if + NHibernate writes a value of 01/01/98 23:59:59.995 to the Prepared Command, MsSql + will store it as 1998-01-01 23:59:59.997. +

+

+ Please review the documentation of your Database server. +

+
+
+ + + Sets the value of this Type in the IDbCommand. + + The IDbCommand to add the Type's value to. + The value of the Type. + The index of the IDataParameter in the IDbCommand. + + No null values will be written to the IDbCommand for this Type. + + + + + Maps a Property to an DateTime column that only stores the + Hours, Minutes, and Seconds of the DateTime as significant. + + + + This defaults the Date to "1753-01-01" - that should not matter because + using this Type indicates that you don't care about the Date portion of the DateTime. + + + A more appropriate choice to store the duration/time is the . + The underlying tends to be handled differently by different + DataProviders. + + + + + + Maps a to a 1 char column + that stores a 'T'/'F' to indicate true/false. + + + If you are using schema-export to generate your tables then you need + to set the column attributes: length=1 or sql-type="char(1)". + + This needs to be done because in Java's JDBC there is a type for CHAR and + in ADO.NET there is not one specifically for char, so you need to tell schema + export to create a char(1) column. + + + + + + + + + + + + + + + + + Used internally to obtain instances of IType. + + + Applications should use static methods and constants on NHibernate.NHibernateUtil if the default + IType is good enough. For example, the TypeFactory should only be used when the String needs + to have a length of 300 instead of 255. At this point NHibernate.String does not get you the + correct IType. Instead use TypeFactory.GetString(300) and keep a local variable that holds + a reference to the IType. + + + + + + + + Gets the classification of the Type based on the string. + + The name of the Type to get the classification for. + The Type of Classification + + This parses through the string and makes the assumption that no class + name and no assembly name will contain the "(". + + If it finds + the "(" and then finds a "," afterwards then it is a + TypeClassification.PrecisionScale. + + + If it finds the "(" + and doesn't find a "," afterwards, then it is a + TypeClassification.Length. + + + If it doesn't find the "(" then it assumes that it is a + TypeClassification.Plain. + + + + + + Given the name of a Hibernate type such as Decimal, Decimal(19,0) + , Int32, or even NHibernate.Type.DecimalType, NHibernate.Type.DecimalType(19,0), + NHibernate.Type.Int32Type, then return an instance of NHibernate.Type.IType + + The name of the type. + The instance of the IType that the string represents. + + This method will return null if the name is not found in the basicNameMap. + + + + + Uses heuristics to deduce a NHibernate type given a string naming the + type. + + + An instance of NHibernate.Type.IType + + When looking for the NHibernate type it will look in the cache of the Basic types first. + If it doesn't find it in the cache then it uses the typeName to get a reference to the + Class (Type in .NET). Once we get the reference to the .NET class we check to see if it + implements IType, ICompositeUserType, IUserType, ILifecycle (Association), or + IPersistentEnum. If none of those are implemented then we will serialize the Type to the + database using NHibernate.Type.SerializableType(typeName) + + + + + Uses heuristics to deduce a NHibernate type given a string naming the + type. + + the type name + parameters for the type + An instance of NHibernate.Type.IType + + + + + + + + + + + Gets the BinaryType with the specified length. + + The length of the data to store in the database. + A BinaryType + + In addition to returning the BinaryType it will also ensure that it has + been added to the basicNameMap with the keys Byte[](length) and + NHibernate.Type.BinaryType(length). + + + + + Gets the SerializableType for the specified Type + + The Type that will be Serialized to the database. + A SerializableType + + + In addition to returning the SerializableType it will also ensure that it has + been added to the basicNameMap with the keys Type.FullName (the result + of IType.Name and Type.AssemblyQualifiedName. This is different + from the other items put in the basicNameMap because it is uses the AQN and the + FQN as opposed to the short name used in the maps and the FQN. + + + Since this method calls the method + GetSerializableType(System.Type, Int32) + with the default length, those keys will also be added. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A one-to-one association type for the given class and cascade style. + + + + + A many-to-one association type for the given class and cascade style. + + + + + + + A many-to-one association type for the given class and cascade style. + + + + + A many-to-one association type for the given class and cascade style. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use to create the array. + + + An for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + A for the specified role. + + + + + Creates a new for an + with bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + A for the specified role. + + + + + Creates a new for an + with id-bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + A for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + A for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + A for the specified role. + + + + + Creates a new for an + that is sorted by an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The that does the sorting. + + + A for the specified role. + + + + + Creates a new for an + that maintains insertion order of elements. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + + A for the specified role. + + + + + Creates a new for an + that is sorted by an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The that does the sorting. + + + A for the specified role. + + + + + Creates a new for an + with bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use to create the + with. + + + A for the specified role. + + + + + Creates a new for an + with identifier + bag semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use to create the + with. + + + A for the specified role. + + + + + Creates a new for an + with list + semantics. + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use to create the + with. + + + A for the specified role. + + + + + Creates a new for an + . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + + The to use as the TKey to create the + with. + + + The to use as the TValue to create the + with. + + + A for the specified role. + + + + + Creates a new for an . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The type of the set elements. + A for the specified role. + + + + Creates a new for a sorted . + + The role the collection is in. + The name of the property in the + owner object containing the collection ID, or if it is + the primary key. + The to use for the set. + The type of the elements in the set. + A for the specified role. + + + Deep copy a series of values from one array to another... + The values to copy (the source) + The value types + an array indicating which values to include in the copy + The array into which to copy the values + The orginating session + + + + Determine if any of the given field values are dirty, + returning an array containing indexes of + the dirty fields or null if no fields are dirty. + + + + + Determine if any of the given field values are modified, + returning an array containing indexes of + the dirty fields or null if no fields are modified. + + + + + + + + + + + + + + Apply the {@link Type#disassemble} operation across a series of values. + The values + The value types + An array indicating which values to include in the disassemled state + The orginating session + The entity "owning" the values + The disassembled state + + + + Apply the operation across a series of values. + + The source of the state + The target into which to replace the source values. + The value types + The orginating session + The entity "owning" the values + Represent a cache of already replaced state + The replaced state + + + + Apply the + operation across a series of values. + + The source of the state + The target into which to replace the source values. + The value types + The orginating session + The entity "owning" the values + A map representing a cache of already replaced state + FK directionality to be applied to the replacement + The replaced state + + + + Apply the + operation across a series of values, as + long as the corresponding is an association. + + The source of the state + The target into which to replace the source values. + The value types + The orginating session + The entity "owning" the values + A map representing a cache of already replaced state + FK directionality to be applied to the replacement + The replaced state + + If the corresponding type is a component type, then apply + accross the component subtypes but do not replace the component value itself. + + + + + Maps the Assembly Qualified Name of a to a + column. + + + + + + + + Initialize a new instance of the TypeType class using a + . + + The underlying . + + + + Gets the in the for the Property. + + The that contains the value. + The index of the field to get the value from. + The from the database. + + Thrown when the value in the database can not be loaded as a + + + + + Gets the in the for the Property. + + The that contains the value. + The name of the field to get the value from. + The from the database. + + This just calls gets the index of the name in the IDataReader + and calls the overloaded version + (IDataReader, Int32). + + + Thrown when the value in the database can not be loaded as a + + + + + Puts the Assembly Qualified Name of the + Property into to the . + + The to put the value into. + The that contains the value. + The index of the to start writing the value to. + + This uses the method of the + object to do the work. + + + + + A representation of the value to be embedded in an XML element + + The that contains the values. + + An Xml formatted string that contains the Assembly Qualified Name. + + + + Gets the that will be returned + by the NullSafeGet() methods. + + + A from the .NET framework. + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + + + + Maps a Property + to a column. + + + + + + + + Maps a to a 1 char column + that stores a 'Y'/'N' to indicate true/false. + + + If you are using schema-export to generate your tables then you need + to set the column attributes: length=1 or sql-type="char(1)". + + This needs to be done because in Java's JDBC there is a type for CHAR and + in ADO.NET there is not one specifically for char, so you need to tell schema + export to create a char(1) column. + + + + + + + + + + + + + + + + + A UserType that may be dereferenced in a query. + This interface allows a custom type to define "properties". + These need not necessarily correspond to physical .NET style properties. + + A ICompositeUserType may be used in almost every way + that a component may be used. It may even contain many-to-one + associations. + + Implementors must be immutable and must declare a public + default constructor. + + Unlike UserType, cacheability does not depend upon + serializability. Instead, Assemble() and + Disassemble() provide conversion to/from a cacheable + representation. + + + + + Get the value of a property + + an instance of class mapped by this "type" + + the property value + + + + Set the value of a property + + an instance of class mapped by this "type" + + the value to set + + + + Compare two instances of the class mapped by this type for persistence + "equality", ie. equality of persistent state. + + + + + + + + Get a hashcode for the instance, consistent with persistence "equality" + + + + + Retrieve an instance of the mapped class from a IDataReader. Implementors + should handle possibility of null values. + + IDataReader + the column names + + the containing entity + + + + + Write an instance of the mapped class to a prepared statement. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from index. + + + + + + + + + Return a deep copy of the persistent state, stopping at entities and at collections. + + generally a collection element or entity field + + + + + Transform the object into its cacheable representation. + At the very least this method should perform a deep copy. + That may not be enough for some implementations, method should perform a deep copy. That may not be enough for some implementations, however; for example, associations must be cached as identifier values. (optional operation) + + the object to be cached + + + + + + Reconstruct an object from the cacheable representation. + At the very least this method should perform a deep copy. (optional operation) + + the object to be cached + + + + + + + During merge, replace the existing (target) value in the entity we are merging to + with a new (original) value from the detached entity we are merging. For immutable + objects, or null values, it is safe to simply return the first parameter. For + mutable objects, it is safe to return a copy of the first parameter. However, since + composite user types often define component values, it might make sense to recursively + replace component values in the target object. + + + + + Get the "property names" that may be used in a query. + + + + + Get the corresponding "property types" + + + + + The class returned by NullSafeGet(). + + + + + Are objects of this type mutable? + + + + + A custom type that may function as an identifier or discriminator + type, or may be marshalled to and from an XML document. + + + + + The interface to be implemented by user-defined types. + + + + The interface abstracts user code from future changes to the interface, + simplifies the implementation of custom types and hides certain "internal interfaces from + user code. + + + Implementers must be immutable and must declare a public default constructor. + + + The actual class mapped by a IUserType may be just about anything. However, if it is to + be cacheble by a persistent cache, it must be serializable. + + + Alternatively, custom types could implement directly or extend one of the + abstract classes in NHibernate.Type. This approach risks future incompatible changes + to classes or interfaces in the package. + + + + + + Compare two instances of the class mapped by this type for persistent "equality" + ie. equality of persistent state + + + + + + + + Get a hashcode for the instance, consistent with persistence "equality" + + + + + Retrieve an instance of the mapped class from a JDBC resultset. + Implementors should handle possibility of null values. + + a IDataReader + column names + the containing entity + + HibernateException + + + + Write an instance of the mapped class to a prepared statement. + Implementors should handle possibility of null values. + A multi-column type should be written to parameters starting from index. + + a IDbCommand + the object to write + command parameter index + HibernateException + + + + Return a deep copy of the persistent state, stopping at entities and at collections. + + generally a collection element or entity field + a copy + + + + During merge, replace the existing () value in the entity + we are merging to with a new () value from the detached + entity we are merging. For immutable objects, or null values, it is safe to simply + return the first parameter. For mutable objects, it is safe to return a copy of the + first parameter. For objects with component values, it might make sense to + recursively replace component values. + + the value from the detached entity being merged + the value in the managed entity + the managed entity + the value to be merged + + + + Reconstruct an object from the cacheable representation. At the very least this + method should perform a deep copy if the type is mutable. (optional operation) + + the object to be cached + the owner of the cached object + a reconstructed object from the cachable representation + + + + Transform the object into its cacheable representation. At the very least this + method should perform a deep copy if the type is mutable. That may not be enough + for some implementations, however; for example, associations must be cached as + identifier values. (optional operation) + + the object to be cached + a cacheable representation of the object + + + + The SQL types for the columns mapped by this type. + + + + + The type returned by NullSafeGet() + + + + + Are objects of this type mutable? + + + + + Parse a string representation of this value, as it appears + in an XML document. + + + + + Return an SQL literal representation of the value + + + + + Return a string representation of this value, as it + should appear in an XML document + + + + + Marker interface for user types which want to perform custom + logging of their corresponding values + + + + Generate a loggable string representation of the collection (value). + The collection to be logged; guaranteed to be non-null and initialized. + The factory. + The loggable string representation. + + + + Support for parameterizable types. A UserType or CustomUserType may be + made parameterizable by implementing this interface. Parameters for a + type may be set by using a nested type element for the property element + + + + + Gets called by Hibernate to pass the configured type parameters to + the implementation. + + + + + Instantiate an uninitialized instance of the collection wrapper + + + + + Wrap an instance of a collection + + + + + Return an over the elements of this collection - the passed collection + instance may or may not be a wrapper + + + + + Optional operation. Does the collection contain the entity instance? + + + + + Optional operation. Return the index of the entity in the collection. + + + + + Replace the elements of a collection with the elements of another collection + + + + + Instantiate an empty instance of the "underlying" collection (not a wrapper), + but with the given anticipated size (i.e. accounting for initial size + and perhaps load factor). + + + The anticipated size of the instaniated collection + after we are done populating it. Note, may be negative to indicate that + we not yet know anything about the anticipated size (i.e., when initializing + from a result set row by row). + + + + + A user type that may be used for a version property. + + + + + Generate an initial version. + + The session from which this request originates. May be + null; currently this only happens during startup when trying to determine + the "unsaved value" of entities. + an instance of the type + + + + Increment the version. + + The session from which this request originates. + the current version + an instance of the type + + + + Helper class that contains common array functions and + data structures used through out NHibernate. + + + + + Sets item at position to . + Expands the list by adding values, if needed. + + + + + Computes a hash code for . + + The hash code is computed as the sum of hash codes of + individual elements, so that the value is independent of the + collection iteration order. + + + + + Creates a that uses case-insensitive string comparison + associated with invariant culture. + + + This is different from the method in + in that the latter uses the current culture and is thus vulnerable to the "Turkish I" problem. + + + + + Creates a that uses case-insensitive string comparison + associated with invariant culture. + + + This is different from the method in + in that the latter uses the current culture and is thus vulnerable to the "Turkish I" problem. + + + + + Computes a hash code for . + + The hash code is computed as the sum of hash codes of + individual elements, so that the value is independent of the + collection iteration order. + + + + + A read-only dictionary that is always empty and permits lookup by key. + + + + + A read-only dictionary that is always empty and permits lookup by key. + + + + + Utility class implementing ToString for collections. All ToString + overloads call element.ToString(). + + + To print collections of entities or typed values, use + . + + + + + + + + An where keys are compared by object identity, rather than equals. + + All external users of this class need to have no knowledge of the IdentityKey - it is all + hidden by this class. + + + + Do NOT use a System.Value type as the key for this Hashtable - only classes. See + the google thread + about why using System.Value is a bad thing. + + + If I understand it correctly, the first call to get an object defined by a DateTime("2003-01-01") + would box the DateTime and return the identity key for the box. If you were to get that Key and + unbox it into a DateTime struct, then the next time you passed it in as the Key the IdentityMap + would box it again (into a different box) and it would have a different IdentityKey - so you would + not get the same value for the same DateTime value. + + + + + + Create a new instance of the IdentityMap that has no + iteration order. + + A new IdentityMap based on a Hashtable. + + + + Create a new instance of the IdentityMap that has an + iteration order of the order the objects were added + to the Map. + + A new IdentityMap based on ListDictionary. + + + + Return the Dictionary Entries (as instances of DictionaryEntry in a collection + that is safe from concurrent modification). Ie - we may safely add new instances + to the underlying IDictionary during enumeration of the Values. + + The IDictionary to get the enumeration safe list. + A Collection of DictionaryEntries + + + + Create the IdentityMap class with the correct class for the IDictionary. + Unsorted = Hashtable + Sorted = ListDictionary + + A class that implements the IDictionary for storing the objects. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Verifies that we are not using a System.ValueType as the Key in the Dictionary + + The object that will be the key. + An object that is safe to be a key. + Thrown when the obj is a System.ValueType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the Keys used in this IdentityMap + + + + + + + + + + + + + + + + Provides a snapshot VIEW in the form of a List of the contents of the IdentityMap. + You can safely iterate over this VIEW and modify the actual IdentityMap because the + VIEW is a copy of the contents, not a reference to the existing Map. + + Contains a copy (not that actual instance stored) of the DictionaryEntries in a List. + + + + + Set implementation that use == instead of equals() as its comparison mechanism + that base its implementation of IdentityMap + + + + + Combines multiple objects implementing into one. + + + + + Creates an IEnumerable object from multiple IEnumerables. + + The IEnumerables to join together. + + + + + + + + + + + + + A flag to indicate if Dispose() has been called. + + + + + Finalizer that ensures the object is correctly disposed of. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + + + + Takes care of freeing the managed and unmanaged resources that + this class is responsible for. + + Indicates if this JoinedEnumerable is being Disposed of or Finalized. + + The command is closed and the reader is disposed. This allows other ADO.NET + related actions to occur without needing to move all the way through the + EnumerableImpl. + + + + + + + + A map of objects whose mapping entries are sequenced based on the order in which they were + added. This data structure has fast O(1) search time, deletion time, and insertion time + + + This class is not thread safe. + This class is not a really replication of JDK LinkedHashMap{K, V}, + this class is an adaptation of SequencedHashMap with generics. + + + + + Initializes a new instance of the class that is empty, + has the default initial capacity, and uses the default equality comparer for the key type. + + + + + Initializes a new instance of the class that is empty, + has the specified initial capacity, and uses the default equality comparer for the key type. + + The initial number of elements that the can contain. + + + + Initializes a new instance of the class that is empty, has the default initial capacity, and uses the specified . + + The implementation to use when comparing keys, or null to use the default EqualityComparer for the type of the key. + + + + Initializes a new instance of the class that is empty, has the specified initial capacity, and uses the specified . + + The initial number of elements that the can contain. + The implementation to use when comparing keys, or null to use the default EqualityComparer for the type of the key. + + + + An implementation of a Map which has a maximum size and uses a Least Recently Used + algorithm to remove items from the Map when the maximum size is reached and new items are added. + + + + + A map of objects whose mapping entries are sequenced based on the order in which they were + added. This data structure has fast O(1) search time, deletion time, and insertion time + + + This class is not thread safe. + + + + + Construct an empty sentinel used to hold the head (sentinel.next) and the tail (sentinal.prev) + of the list. The sentinal has a key and value + + + + + + Sentinel used to hold the head and tail of the list of entries + + + + + Map of keys to entries + + + + + Holds the number of modifications that have occurred to the map, excluding modifications + made through a collection view's iterator. + + + + + Construct a new sequenced hash map with default initial size and load factor + + + + + Construct a new sequenced hash map with the specified initial size and default load factor + + the initial size for the hash table + + + + Construct a new sequenced hash map with the specified initial size and load factor + + the initial size for the hashtable + the load factor for the hash table + + + + Construct a new sequenced hash map with the specified initial size, hash code provider + and comparer + + the initial size for the hashtable + + + + + Creates an empty Hashtable with the default initial capacity and using the default load factor, + the specified hash code provider and the specified comparer + + + + + + Creates an empty Hashtable with the default initial capacity and using the default load factor, + the specified hash code provider and the specified comparer + + the initial size for the hashtable + the load factor for the hash table + + + + + Removes an internal entry from the linked list. THis does not remove it from the underlying + map. + + + + + + Inserts a new internal entry to the tail of the linked list. This does not add the + entry to the underlying map. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove the Entry identified by the Key if it exists. + + The Key to remove. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Return only the Key of the DictionaryEntry + + + + + Return only the Value of the DictionaryEntry + + + + + Return the full DictionaryEntry + + + + + Summary description for ObjectUtils. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Helper class for Reflection related code. + + + + + Determine if the specified overrides the + implementation of Equals from + + The to reflect. + if any type in the hierarchy overrides Equals(object). + + + + Determine if the specified overrides the + implementation of GetHashCode from + + The to reflect. + if any type in the hierarchy overrides GetHashCode(). + + + + Finds the for the property in the . + + The to find the property in. + The name of the Property to find. + The name of the property access strategy. + The to get the value of the Property. + + This one takes a propertyAccessor name as we might know the correct strategy by now so we avoid Exceptions which are costly + + + + + Get the NHibernate for the named property of the . + + The to find the Property in. + The name of the property/field to find in the class. + The name of the property accessor for the property. + + The NHibernate for the named property. + + + + + Get the for the named property of a type. + + The to find the property in. + The name of the property/field to find in the class. + The name of the property accessor for the property. + The for the named property. + + + + Get the for the named property of a type. + + The FullName to find the property in. + The name of the property/field to find in the class. + The name of the property accessor for the property. + The for the named property. + + + + Returns a reference to the Type. + + The name of the class or a fully qualified name. + The Type for the Class. + + + + Load a System.Type given is't name. + + The class FullName or AssemblyQualifiedName + The System.Type + + If the don't represent an + the method try to find the System.Type scanning all Assemblies of the . + + If no System.Type was found for . + + + + Returns a from an already loaded Assembly or an + Assembly that is loaded with a partial name. + + An . + if an exception should be thrown + in case of an error, otherwise. + + A object that represents the specified type, + or if the type cannot be loaded. + + + Attempts to get a reference to the type from an already loaded assembly. If the + type cannot be found then the assembly is loaded using + . + + + + + Returns the value of the static field of . + + The . + The name of the field in the . + The value contained in the field, or if the type or the field does not exist. + + + + Gets the default no arg constructor for the . + + The to find the constructor for. + + The for the no argument constructor, or if the + type is an abstract class. + + + Thrown when there is a problem calling the method GetConstructor on . + + + + + Finds the constructor that takes the parameters. + + The to find the constructor in. + The objects to use to find the appropriate constructor. + + An that can be used to create the type with + the specified parameters. + + + Thrown when no constructor with the correct signature can be found. + + + + + Determines if the is a non creatable class. + + The to check. + if the is an Abstract Class or an Interface. + + + + Unwraps the supplied + and returns the inner exception preserving the stack trace. + + + The to unwrap. + + The unwrapped exception. + + + + Used to ensure a collection filtering a given IEnumerable by a certain type. + + The type used like filter. + + + + Cache following a "Most Recently Used" (MRU) algorithm for maintaining a + bounded in-memory size; the "Least Recently Used" (LRU) entry is the first + available for removal from the cache. + + + This implementation uses a bounded MRU Map to limit the in-memory size of + the cache. Thus the size of this cache never grows beyond the stated size. + + + + + Cache following a "Most Recently Used" (MRY) algorithm for maintaining a + bounded in-memory size; the "Least Recently Used" (LRU) entry is the first + available for removal from the cache. + + + This implementation uses a "soft limit" to the in-memory size of the cache, + meaning that all cache entries are kept within a completely + {@link java.lang.ref.SoftReference}-based map with the most recently utilized + entries additionally kept in a hard-reference manner to prevent those cache + entries soft references from becoming enqueued by the garbage collector. + Thus the actual size of this cache impl can actually grow beyond the stated + max size bound as long as GC is not actively seeking soft references for + enqueuement. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Just a façade for calling string.Split() + We don't use our StringTokenizer because string.Split() is + more efficient (but it only works when we don't want to retrieve the delimiters) + + separators for the tokens of the list + the string that will be broken into tokens + + + + + Splits the String using the StringTokenizer. + + separators for the tokens of the list + the string that will be broken into tokens + true to include the seperators in the tokens. + + + This is more powerful than Split because you have the option of including or + not including the seperators in the tokens. + + + + + + + + + + + + + + + + + + + + Takes a fully qualified type name and returns the full name of the + Class - includes namespaces. + + + + + + + Takes a fully qualifed type name (can include the assembly) and just returns + the name of the Class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converts a in the format of "true", "t", "false", or "f" to + a . + + The string to convert. + + The value converted to a . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Counts the unquoted instances of the character. + + + + + + + + + + + + + + + + Generate a nice alias for the given class name or collection role + name and unique integer. Subclasses do not have to use + aliases of this form. + + an alias of the form foo1_ + + + + Returns the interned string equal to if there is one, or + otherwise. + + A + A + + + + A StringTokenizer java like object + + + + + + + + + + + + + + + + + + + + + + + + + + Count of elements in the collection. Unreliable! + + + + + Indicates failure of an assertion: a possible bug in NHibernate + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Controls how the session interacts with the second-level + cache and query cache. + + + + + The session will never interact with the cache, except to invalidate + cache items when updates occur + + + + + The session will never read items from the cache, but will add items + to the cache as it reads them from the database. + + + + + The session may read items from the cache, but will not add items, + except to invalidate items when updates occur + + + + The session may read items from the cache, and add items to the cache + + + + The session will never read items from the cache, but will add items + to the cache as it reads them from the database. In this mode, the + effect of hibernate.cache.use_minimal_puts is bypassed, in + order to force a cache refresh + + + + + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Transforms Criteria queries + + + + + Returns a clone of the original criteria, which will return the count + of rows that are returned by the original criteria query. + + + + + Returns a clone of the original criteria, which will return the count + of rows that are returned by the original criteria query. + + + + + Creates an exact clone of the criteria + + + + + + Creates an exact clone of the criteria + + + + + + Contains static declarations from Criteria interface in Hibernate. + + + + + The alias that refers to the "root" entity of the criteria query. + + + + + Each row of results is an IDictionary from alias to entity instance + + + + + Each row of results is an instance of the root entity + + + + + Each row of results is a distinct instance of the root entity + + + + + Initializes a new instance of the class. + + The message that describes the error. + The name of the duplicate object + The type of the duplicate object + + + + Initializes a new instance of the class. + + The name of the duplicate object + The type of the duplicate object + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + The type of the duplicated object + + + + + The name of the duplicated object + + + + + Allows user code to inspect and/or change property values before they are written and after they + are read from the database + + + + There might be a single instance of IInterceptor for a SessionFactory, or a new + instance might be specified for each ISession. Whichever approach is used, the interceptor + must be serializable if the ISession is to be serializable. This means that SessionFactory + -scoped interceptors should implement ReadResolve(). + + + The ISession may not be invoked from a callback (nor may a callback cause a collection or + proxy to be lazily initialized). + + + + + + Called just before an object is initialized + + + + + + + + The interceptor may change the state, which will be propagated to the persistent + object. Note that when this method is called, entity will be an empty + uninitialized instance of the class. + if the user modified the state in any way + + + + Called when an object is detected to be dirty, during a flush. + + + + + + + + + The interceptor may modify the detected currentState, which will be propagated to + both the database and the persistent object. Note that all flushes end in an actual + synchronization with the database, in which as the new currentState will be propagated + to the object, but not necessarily (immediately) to the database. It is strongly recommended + that the interceptor not modify the previousState. + + if the user modified the currentState in any way + + + + Called before an object is saved + + + + + + + + The interceptor may modify the state, which will be used for the SQL INSERT + and propagated to the persistent object + + if the user modified the state in any way + + + + Called before an object is deleted + + + + + + + + It is not recommended that the interceptor modify the state. + + + + Called before a collection is (re)created. + + + Called before a collection is deleted. + + + Called before a collection is updated. + + + + Called before a flush + + The entities + + + + Called after a flush that actually ends in execution of the SQL statements required to + synchronize in-memory state with the database. + + The entitites + + + + Called when a transient entity is passed to SaveOrUpdate. + + + The return value determines if the object is saved + + - the entity is passed to Save(), resulting in an INSERT + - the entity is passed to Update(), resulting in an UPDATE + - Hibernate uses the unsaved-value mapping to determine if the object is unsaved + + + A transient entity + Boolean or to choose default behaviour + + + + Called from Flush(). The return value determines whether the entity is updated + + + + an array of property indicies - the entity is dirty + an empty array - the entity is not dirty + - use Hibernate's default dirty-checking algorithm + + + A persistent entity + + + + + + An array of dirty property indicies or to choose default behavior + + + + Instantiate the entity class. Return to indicate that Hibernate should use the default + constructor of the class + + the name of the entity + The type of entity instance to be returned. + the identifier of the new instance + An instance of the class, or to choose default behaviour + + The identifier property of the returned instance + should be initialized with the given identifier. + + + + Get the entity name for a persistent or transient instance + an entity instance + the name of the entity + + + Get a fully loaded entity instance that is cached externally + the name of the entity + the instance identifier + a fully initialized entity + + + + Called when a NHibernate transaction is begun via the NHibernate + API. Will not be called if transactions are being controlled via some other mechanism. + + + + + Called before a transaction is committed (but not before rollback). + + + + + Called after a transaction is committed or rolled back. + + + + + Called when a session-scoped (and only session scoped) interceptor is attached + to a session + + + + Called when sql string is being prepared. + sql to be prepared + original or modified sql + + + Defines the representation modes available for entities. + + + + Represents a fetching strategy. + + + This is used together with the API to specify + runtime fetching strategies. + + For Hql queries, use the FETCH keyword instead. + + + + + + Default to the setting configured in the mapping file. + + + + + Fetch eagerly, using a separate select. Equivalent to + fetch="select" (and outer-join="false") + + + + + Fetch using an outer join. Equivalent to + fetch="join" (and outer-join="true") + + + + + Indicates that an expected getter or setter method could not be found on a class + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Represents a flushing strategy. + + + The flush process synchronizes database state with session state by detecting state + changes and executing SQL statements + + + + + Special value for unspecified flush mode (like in Java). + + + + + The ISession is never flushed unless Flush() is explicitly + called by the application. This mode is very efficient for read only + transactions + + + + + The ISession is flushed when Transaction.Commit() is called + + + + + The ISession is sometimes flushed before query execution in order to + ensure that queries never return stale state. This is the default flush mode. + + + + + The is flushed before every query. This is + almost always unnecessary and inefficient. + + + + + Provides XML marshalling for classes registered with a SessionFactory + + + + Hibernate defines a generic XML format that may be used to represent any class + (hibernate-generic.dtd). The user configures an XSLT stylesheet for marshalling + data from this generic format to an application and/or user readable format. By default, + Hibernate will use hibernate-default.xslt which maps data to a useful human- + readable format. + + + The property xml.output_stylesheet specifies a user-written stylesheet. + Hibernate will attempt to load the stylesheet from the classpath first and if not found, + will attempt to load it as a file + + + It is not intended that implementors be threadsafe + + + + + + Add an object to the output document. + + A transient or persistent instance + Databinder + + + + Add a collection of objects to the output document + + A collection of transient or persistent instance + Databinder + + + + Output the generic XML representation of the bound objects + + Generic Xml representation + + + + Output the generic XML Representation of the bound objects + to a XmlDocument + + A generic Xml tree + + + + Output the custom XML representation of the bound objects + + Custom Xml representation + + + + Output the custom XML representation of the bound objects as + an XmlDocument + + A custom Xml Tree + + + + Controls whether bound objects (and their associated objects) that are lazily instanciated + are explicityl initialized or left as they are + + True to explicitly initilize lazy objects, false to leave them in the state they are in + + + + Performs a null safe comparison using "==" instead of Object.Equals() + + First object to compare. + Second object to compare. + + true if x is the same instance as y or if both are null references; otherwise, false. + + + This is Lazy collection safe since it uses , + unlike Object.Equals() which currently causes NHibernate to load up the collection. + This behaivior of Collections is likely to change because Java's collections override Equals() and + .net's collections don't. So in .net there is no need to override Equals() and + GetHashCode() on the NHibernate Collection implementations. + + + + + Thrown if Hibernate can't instantiate an entity or component class at runtime. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + The that NHibernate was trying to instantiate. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the that NHibernate was trying to instantiate. + + + + + Gets a message that describes the current . + + + The error message that explains the reason for this exception and the Type that + was trying to be instantiated. + + + + + Thrown when an invalid type is specified as a proxy for a class. + The exception is also thrown when a class is specified as lazy, + but cannot be used as a proxy for itself. + + + + + A problem occurred trying to lazily initialize a collection or proxy (for example the session + was closed) or iterate query results. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Instances represent a lock mode for a row of a relational database table. + + + It is not intended that users spend much time worrying about locking since Hibernate + usually obtains exactly the right lock level automatically. Some "advanced" users may + wish to explicitly specify lock levels. + + + + + + + + + + + + + + + Is this lock mode more restrictive than the given lock mode? + + + + + + Is this lock mode less restrictive than the given lock mode? + + + + + + No lock required. + + + If an object is requested with this lock mode, a Read lock + might be obtained if necessary. + + + + + A shared lock. + + + Objects are loaded in Read mode by default + + + + + An upgrade lock. + + + Objects loaded in this lock mode are materialized using an + SQL SELECT ... FOR UPDATE + + + + + Attempt to obtain an upgrade lock, using an Oracle-style + SELECT ... FOR UPGRADE NOWAIT. + + + The semantics of this lock mode, once obtained, are the same as Upgrade + + + + + A Write lock is obtained when an object is updated or inserted. + + + This is not a valid mode for Load() or Lock(). + + + + + Similar to except that, for versioned entities, + it results in a forced version increment. + + + + + Provides access to the full range of NHibernate built-in types. + IType instances may be used to bind values to query parameters. + Also a factory for new Blobs and Clobs. + + + + + Guesses the IType of this object + + The obj. + + + + + Guesses the IType by the type + + The type. + + + + + NHibernate Ansi String type + + + + + NHibernate binary type + + + + + NHibernate binary blob type + + + + + NHibernate boolean type + + + + + NHibernate byte type + + + + + NHibernate character type + + + + + NHibernate Culture Info type + + + + + NHibernate date type + + + + + NHibernate date type + + + + + NHibernate decimal type + + + + + NHibernate double type + + + + + NHibernate Guid type. + + + + + NHibernate System.Int16 (short in C#) type + + + + + NHibernate System.Int32 (int in C#) type + + + + + NHibernate System.Int64 (long in C#) type + + + + + NHibernate System.SByte type + + + + + NHibernate System.UInt16 (ushort in C#) type + + + + + NHibernate System.UInt32 (uint in C#) type + + + + + NHibernate System.UInt64 (ulong in C#) type + + + + + NHibernate System.Single (float in C#) Type + + + + + NHibernate String type + + + + + NHibernate string clob type + + + + + NHibernate Time type + + + + + NHibernate Ticks type + + + + + NHibernate Ticks type + + + + + NHibernate Timestamp type + + + + + NHibernate TrueFalse type + + + + + NHibernate YesNo type + + + + + NHibernate class type + + + + + NHibernate class meta type for association of kind any. + + + + + + NHibernate serializable type + + + + + NHibernate System.Object type + + + + + A NHibernate persistent enum type + + + + + + + A NHibernate serializable type + + + + + + + A NHibernate serializable type + + a type mapping to a single column + the entity identifier type + + + + + A NHibernate persistent object (entity) type + + a mapped entity class + + + + + A NHibernate persistent object (entity) type + + a mapped entity class + + + + A Hibernate persistent object (entity) type. + a mapped entity class + + + + A NHibernate custom type + + a class that implements UserType + + + + + Force initialization of a proxy or persistent collection. + + a persistable object, proxy, persistent collection or null + if we can't initialize the proxy at this time, eg. the Session was closed + + + + Is the proxy or persistent collection initialized? + + a persistable object, proxy, persistent collection or null + true if the argument is already initialized, or is not a proxy or collection + + + + Get the true, underlying class of a proxied persistent class. This operation + will initialize a proxy by side-effect. + + a persistable object or proxy + the true class of the instance + + + + Close an obtained from an + returned by NHibernate immediately, instead of waiting until the session is + closed or disconnected. + + + + + Close an returned by NHibernate immediately, + instead of waiting until the session is closed or disconnected. + + + + + Check if the property is initialized. If the named property does not exist + or is not persistent, this method always returns true. + + The potential proxy + the name of a persistent attribute of the object + + true if the named property of the object is not listed as uninitialized; + false if the object is an uninitialized proxy, or the named property is uninitialized + + + + + This exception is thrown when an operation would + break session-scoped identity. This occurs if the + user tries to associate two different instances of + the same class with a particular identifier, + in the scope of a single . + + + + + Initializes a new instance of the class. + + The message that describes the error. + The identifier of the object that caused the exception. + The EntityName of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + The identifier of the object that caused the exception. + The EntityName of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when the application calls IQuery.UniqueResult() + and the query returned more than one result. Unlike all other NHibernate + exceptions, this one is recoverable! + + + + + Initializes a new instance of the class. + + The number of items in the result. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when the user tries to pass a deleted object to the ISession. + + + + + Thrown when Hibernate could not resolve an object by id, especially when + loading an association. + + + + + Initializes a new instance of the class. + + The identifier of the object that caused the exception. + The of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + The message that describes the error. + The identifier of the object that caused the exception. + The of the object attempted to be loaded. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when ISession.Load() fails to select a row with + the given primary key (identifier value). This exception might not + be thrown when Load() is called, even if there was no + row on the database, because Load() returns a proxy if + possible. Applications should use ISession.Get() to test if + a row exists in the database. + + + + + Initializes a new instance of the class. + + The identifier of the object that was attempting to be loaded. + The that NHibernate was trying to find a row for in the database. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Thrown when the user passes a persistent instance to a ISession method that expects a + transient instance + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + A problem occurred accessing a property of an instance of a persistent class by reflection + + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + A indicating if this was a "setter" operation. + The that NHibernate was trying find the Property or Field in. + The mapped property name that was trying to be accessed. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the that NHibernate was trying find the Property or Field in. + + + + + Gets a message that describes the current . + + + The error message that explains the reason for this exception and + information about the mapped property and its usage. + + + + + Indicates that an expected getter or setter method could not be found on a class + + + + + Initializes a new instance of the class, + used when a property get/set accessor is missing. + + The that is missing the property + The name of the missing property + The type of the missing accessor + ("getter" or "setter") + + + + Initializes a new instance of the class, + used when a field is missing. + + The that is missing the field + The name of the missing property + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Initializes a new instance of the class. + + The message that describes the error. + The that NHibernate was trying to access. + The name of the Property that was being get/set. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Represents a replication strategy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Throw an exception when a row already exists + + + + + + + + + + Ignore replicated entities when a row already exists + + + + + + + + + + Overwrite existing rows when a row already exists + + + + + + + + + + When a row already exists, choose the latest version + + + + + + + + + + Thrown when a version number check failed, indicating that the + contained stale data (when using long transactions with + versioning). + + + + + Initializes a new instance of the class. + + The EntityName that NHibernate was trying to update in the database. + The identifier of the object that is stale. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the EntityName that NHibernate was trying to update in the database. + + + + + Gets the identifier of the object that is stale. + + + + + Gets a message that describes the current . + + The error message that explains the reason for this exception. + + + + Indicated that a transaction could not be begun, committed, or rolled back + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The message that describes the error. + + The exception that is the cause of the current exception. If the innerException parameter + is not a null reference, the current exception is raised in a catch block that handles + the inner exception. + + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Throw when the user passes a transient instance to a ISession method that expects + a persistent instance + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Used when a user provided type does not match the expected one + + + + + Thrown when ISession.Load() selects a row with the given primary key (identifier value) + but the row's discriminator value specifies a different subclass from the one requested + + + + + Initializes a new instance of the class. + + The message that describes the error. + The identifier of the object that was being loaded. + The name of entity that NHibernate was told to load. + + + + Initializes a new instance of the class + with serialized data. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Sets the serialization info for after + getting the info from the base Exception. + + + The that holds the serialized object + data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + + + Gets the identifier of the object that was being loaded. + + + + + Gets the name of entity that NHibernate was told to load. + + + + + Gets a message that describes the current . + + The error message that explains the reason for this exception. + + + diff --git a/lib/NHibernate20/net/4.0/log4net.dll b/lib/NHibernate20/net/4.0/log4net.dll new file mode 100644 index 0000000000000000000000000000000000000000..ffc57e11254ad9530867b35d15aaf38eb4747d8d GIT binary patch literal 270336 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 + + + log4net + + + + + Appender that logs to a database. + + + + appends logging events to a table within a + database. The appender can be configured to specify the connection + string by setting the property. + The connection type (provider) can be specified by setting the + property. For more information on database connection strings for + your specific database see http://www.connectionstrings.com/. + + + Records are written into the database either using a prepared + statement or a stored procedure. The property + is set to (System.Data.CommandType.Text) to specify a prepared statement + or to (System.Data.CommandType.StoredProcedure) to specify a stored + procedure. + + + The prepared statement text or the name of the stored procedure + must be set in the property. + + + The prepared statement or stored procedure can take a number + of parameters. Parameters are added using the + method. This adds a single to the + ordered list of parameters. The + type may be subclassed if required to provide database specific + functionality. The specifies + the parameter name, database type, size, and how the value should + be generated using a . + + + + An example of a SQL Server table that could be logged to: + + CREATE TABLE [dbo].[Log] ( + [ID] [int] IDENTITY (1, 1) NOT NULL , + [Date] [datetime] NOT NULL , + [Thread] [varchar] (255) NOT NULL , + [Level] [varchar] (20) NOT NULL , + [Logger] [varchar] (255) NOT NULL , + [Message] [varchar] (4000) NOT NULL + ) ON [PRIMARY] + + + + An example configuration to log to the above table: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Julian Biddle + Nicko Cadell + Gert Driesen + Lance Nehring + + + + Abstract base class implementation of that + buffers events in a fixed size buffer. + + + + This base class should be used by appenders that need to buffer a + number of events before logging them. For example the + buffers events and then submits the entire contents of the buffer to + the underlying database in one go. + + + Subclasses should override the + method to deliver the buffered events. + + The BufferingAppenderSkeleton maintains a fixed size cyclic + buffer of events. The size of the buffer is set using + the property. + + A is used to inspect + each event as it arrives in the appender. If the + triggers, then the current buffer is sent immediately + (see ). Otherwise the event + is stored in the buffer. For example, an evaluator can be used to + deliver the events immediately when an ERROR event arrives. + + + The buffering appender can be configured in a mode. + By default the appender is NOT lossy. When the buffer is full all + the buffered events are sent with . + If the property is set to true then the + buffer will not be sent when it is full, and new events arriving + in the appender will overwrite the oldest event in the buffer. + In lossy mode the buffer will only be sent when the + triggers. This can be useful behavior when you need to know about + ERROR events but not about events with a lower level, configure an + evaluator that will trigger when an ERROR event arrives, the whole + buffer will be sent which gives a history of events leading up to + the ERROR event. + + + Nicko Cadell + Gert Driesen + + + + Abstract base class implementation of . + + + + This class provides the code for common functionality, such + as support for threshold filtering and support for general filters. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface for your own strategies for printing log statements. + + + + Implementors should consider extending the + class which provides a default implementation of this interface. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Log the logging event in Appender specific way. + + The event to log + + + This method is called to log a message into this appender. + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + The name uniquely identifies the appender. + + + + + Interface for appenders that support bulk logging. + + + + This interface extends the interface to + support bulk logging of objects. Appenders + should only implement this interface if they can bulk log efficiently. + + + Nicko Cadell + + + + Log the array of logging events in Appender specific way. + + The events to log + + + This method is called to log an array of events into this appender. + + + + + + Interface used to delay activate a configured object. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then the method + must be called by the container after its all the configured properties have been set + and before the component can be used. + + + Nicko Cadell + + + + Activate the options that were previously set with calls to properties. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then this method must be called + after its properties have been set before the component can be used. + + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Default constructor + + + Empty default constructor + + + + + Finalizes this appender by calling the implementation's + method. + + + + If this appender has not been closed then the Finalize method + will call . + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Closes the appender and release resources. + + + + Release any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + This method cannot be overridden by subclasses. This method + delegates the closing of the appender to the + method which must be overridden in the subclass. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The event to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the abstract method. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The array of events to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the method. + + + + + + Test if the logging event should we output by this appender + + the event to test + true if the event should be output, false if the event should be ignored + + + This method checks the logging event against the threshold level set + on this appender and also against the filters specified on this + appender. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + + + + + Adds a filter to the end of the filter chain. + + the filter to add to this appender + + + The Filters are organized in a linked list. + + + Setting this property causes the new filter to be pushed onto the + back of the filter chain. + + + + + + Clears the filter list for this appender. + + + + Clears the filter list for this appender. + + + + + + Checks if the message level is below this appender's threshold. + + to test against. + + + If there is no threshold set, then the return value is always true. + + + + true if the meets the + requirements of this appender. + + + + + Is called when the appender is closed. Derived classes should override + this method if resources need to be released. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Subclasses of should implement this method + to perform actual logging. + + The event to append. + + + A subclass must implement this method to perform + logging of the . + + This method will be called by + if all the conditions listed for that method are met. + + + To restrict the logging of events in the appender + override the method. + + + + + + Append a bulk array of logging events. + + the array of logging events + + + This base class implementation calls the + method for each element in the bulk array. + + + A sub class that can better process a bulk array of events should + override this method in addition to . + + + + + + Called before as a precondition. + + + + This method is called by + before the call to the abstract method. + + + This method can be overridden in a subclass to extend the checks + made before the event is passed to the method. + + + A subclass should ensure that they delegate this call to + this base class if it is overridden. + + + true if the call to should proceed. + + + + Renders the to a string. + + The event to render. + The event rendered as a string. + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Where possible use the alternative version of this method + . + That method streams the rendering onto an existing Writer + which can give better performance if the caller already has + a open and ready for writing. + + + + + + Renders the to a string. + + The event to render. + The TextWriter to write the formatted event to + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Use this method in preference to + where possible. If, however, the caller needs to render the event + to a string then does + provide an efficient mechanism for doing so. + + + + + + The layout of this appender. + + + See for more information. + + + + + The name of this appender. + + + See for more information. + + + + + The level threshold of this appender. + + + + There is no level threshold filtering by default. + + + See for more information. + + + + + + It is assumed and enforced that errorHandler is never null. + + + + It is assumed and enforced that errorHandler is never null. + + + See for more information. + + + + + + The first filter in the filter chain. + + + + Set to null initially. + + + See for more information. + + + + + + The last filter in the filter chain. + + + See for more information. + + + + + Flag indicating if this appender is closed. + + + See for more information. + + + + + The guard prevents an appender from repeatedly calling its own DoAppend method + + + + + StringWriter used to render events + + + + + Gets or sets the threshold of this appender. + + + The threshold of the appender. + + + + All log events with lower level than the threshold level are ignored + by the appender. + + + In configuration files this option is specified by setting the + value of the option to a level + string, such as "DEBUG", "INFO" and so on. + + + + + + Gets or sets the for this appender. + + The of the appender + + + The provides a default + implementation for the property. + + + + + + The filter chain. + + The head of the filter chain filter chain. + + + Returns the head Filter. The Filters are organized in a linked list + and so all Filters on this Appender are available through the result. + + + + + + Gets or sets the for this appender. + + The layout of the appender. + + + See for more information. + + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + + The name uniquely identifies the appender. + + + + + + Tests if this appender requires a to be set. + + + + In the rather exceptional case, where the appender + implementation admits a layout but can also work without it, + then the appender should return true. + + + This default implementation always returns true. + + + + true if the appender requires a layout object, otherwise false. + + + + + The default buffer size. + + + The default size of the cyclic buffer used to store events. + This is set to 512 by default. + + + + + Initializes a new instance of the class. + + + + Protected default constructor to allow subclassing. + + + + + + Initializes a new instance of the class. + + the events passed through this appender must be + fixed by the time that they arrive in the derived class' SendBuffer method. + + + Protected constructor to allow subclassing. + + + The should be set if the subclass + expects the events delivered to be fixed even if the + is set to zero, i.e. when no buffering occurs. + + + + + + Flush the currently buffered events + + + + Flushes any events that have been buffered. + + + If the appender is buffering in mode then the contents + of the buffer will NOT be flushed to the appender. + + + + + + Flush the currently buffered events + + set to true to flush the buffer of lossy events + + + Flushes events that have been buffered. If is + false then events will only be flushed if this buffer is non-lossy mode. + + + If the appender is buffering in mode then the contents + of the buffer will only be flushed if is true. + In this case the contents of the buffer will be tested against the + and if triggering will be output. All other buffered + events will be discarded. + + + If is true then the buffer will always + be emptied by calling this method. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Close this appender instance. + + + + Close this appender instance. If this appender is marked + as not then the remaining events in + the buffer must be sent when the appender is closed. + + + + + + This method is called by the method. + + the event to log + + + Stores the in the cyclic buffer. + + + The buffer will be sent (i.e. passed to the + method) if one of the following conditions is met: + + + + The cyclic buffer is full and this appender is + marked as not lossy (see ) + + + An is set and + it is triggered for the + specified. + + + + Before the event is stored in the buffer it is fixed + (see ) to ensure that + any data referenced by the event will be valid when the buffer + is processed. + + + + + + Sends the contents of the buffer. + + The first logging event. + The buffer containing the events that need to be send. + + + The subclass must override . + + + + + + Sends the events. + + The events that need to be send. + + + The subclass must override this method to process the buffered events. + + + + + + The size of the cyclic buffer used to hold the logging events. + + + Set to by default. + + + + + The cyclic buffer used to store the logging events. + + + + + The triggering event evaluator that causes the buffer to be sent immediately. + + + The object that is used to determine if an event causes the entire + buffer to be sent immediately. This field can be null, which + indicates that event triggering is not to be done. The evaluator + can be set using the property. If this appender + has the ( property) set to + true then an must be set. + + + + + Indicates if the appender should overwrite events in the cyclic buffer + when it becomes full, or if the buffer should be flushed when the + buffer is full. + + + If this field is set to true then an must + be set. + + + + + The triggering event evaluator filters discarded events. + + + The object that is used to determine if an event that is discarded should + really be discarded or if it should be sent to the appenders. + This field can be null, which indicates that all discarded events will + be discarded. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + The events delivered to the subclass must be fixed. + + + + + Gets or sets a value that indicates whether the appender is lossy. + + + true if the appender is lossy, otherwise false. The default is false. + + + + This appender uses a buffer to store logging events before + delivering them. A triggering event causes the whole buffer + to be send to the remote sink. If the buffer overruns before + a triggering event then logging events could be lost. Set + to false to prevent logging events + from being lost. + + If is set to true then an + must be specified. + + + + + Gets or sets the size of the cyclic buffer used to hold the + logging events. + + + The size of the cyclic buffer used to hold the logging events. + + + + The option takes a positive integer + representing the maximum number of logging events to collect in + a cyclic buffer. When the is reached, + oldest events are deleted as new events are added to the + buffer. By default the size of the cyclic buffer is 512 events. + + + If the is set to a value less than + or equal to 1 then no buffering will occur. The logging event + will be delivered synchronously (depending on the + and properties). Otherwise the event will + be buffered. + + + + + + Gets or sets the that causes the + buffer to be sent immediately. + + + The that causes the buffer to be + sent immediately. + + + + The evaluator will be called for each event that is appended to this + appender. If the evaluator triggers then the current buffer will + immediately be sent (see ). + + If is set to true then an + must be specified. + + + + + Gets or sets the value of the to use. + + + The value of the to use. + + + + The evaluator will be called for each event that is discarded from this + appender. If the evaluator triggers then the current buffer will immediately + be sent (see ). + + + + + + Gets or sets a value indicating if only part of the logging event data + should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the + event data to be fixed and serialized. This will improve performance. + + + See for more information. + + + + + + Gets or sets a the fields that will be fixed in the event + + + The event fields that will be fixed before the event is buffered + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + + Initializes a new instance of the class. + + + Public default constructor to initialize a new instance of this class. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Override the parent method to close the database + + + + Closes the database command and database connection. + + + + + + Inserts the events into the database. + + The events to insert into the database. + + + Insert all the events specified in the + array into the database. + + + + + + Adds a parameter to the command. + + The parameter to add to the command. + + + Adds a parameter to the ordered list of command parameters. + + + + + + Writes the events to the database using the transaction specified. + + The transaction that the events will be executed under. + The array of events to insert into the database. + + + The transaction argument can be null if the appender has been + configured not to use transactions. See + property for more information. + + + + + + Formats the log message into database statement text. + + The event being logged. + + This method can be overridden by subclasses to provide + more control over the format of the database statement. + + + Text that can be passed to a . + + + + + Connects to the database. + + + + + Retrieves the class type of the ADO.NET provider. + + + + Gets the Type of the ADO.NET provider to use to connect to the + database. This method resolves the type specified in the + property. + + + Subclasses can override this method to return a different type + if necessary. + + + The of the ADO.NET provider + + + + Prepares the database command and initialize the parameters. + + + + + Flag to indicate if we are using a command object + + + + Set to true when the appender is to use a prepared + statement or stored procedure to insert into the database. + + + + + + The list of objects. + + + + The list of objects. + + + + + + The security context to use for privileged calls + + + + + The that will be used + to insert logging events into a database. + + + + + The database command. + + + + + Database connection string. + + + + + String type name of the type name. + + + + + The text of the command. + + + + + The command type. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Gets or sets the database connection string that is used to connect to + the database. + + + The database connection string used to connect to the database. + + + + The connections string is specific to the connection type. + See for more information. + + + Connection string for MS Access via ODBC: + "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" + + Another connection string for MS Access via ODBC: + "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" + + Connection string for MS Access via OLE DB: + "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" + + + + + Gets or sets the type name of the connection + that should be created. + + + The type name of the connection. + + + + The type name of the ADO.NET provider to use. + + + The default is to use the OLE DB provider. + + + Use the OLE DB Provider. This is the default value. + System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the MS SQL Server Provider. + System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the ODBC Provider. + Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for ODBC .NET Data Provider. + + Use the Oracle Provider. + System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for .NET Managed Provider for Oracle. + + + + + Gets or sets the command text that is used to insert logging events + into the database. + + + The command text used to insert logging events into the database. + + + + Either the text of the prepared statement or the + name of the stored procedure to execute to write into + the database. + + + The property determines if + this text is a prepared statement or a stored procedure. + + + + + + Gets or sets the command type to execute. + + + The command type to execute. + + + + This value may be either (System.Data.CommandType.Text) to specify + that the is a prepared statement to execute, + or (System.Data.CommandType.StoredProcedure) to specify that the + property is the name of a stored procedure + to execute. + + + The default value is (System.Data.CommandType.Text). + + + + + + Should transactions be used to insert logging events in the database. + + + true if transactions should be used to insert logging events in + the database, otherwise false. The default value is true. + + + + Gets or sets a value that indicates whether transactions should be used + to insert logging events in the database. + + + When set a single transaction will be used to insert the buffered events + into the database. Otherwise each event will be inserted without using + an explicit transaction. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Should this appender try to reconnect to the database on error. + + + true if the appender should try to reconnect to the database after an + error has occurred, otherwise false. The default value is false, + i.e. not to try to reconnect. + + + + The default behaviour is for the appender not to try to reconnect to the + database if an error occurs. Subsequent logging events are discarded. + + + To force the appender to attempt to reconnect to the database set this + property to true. + + + When the appender attempts to connect to the database there may be a + delay of up to the connection timeout specified in the connection string. + This delay will block the calling application's thread. + Until the connection can be reestablished this potential delay may occur multiple times. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to insert + logging events into a database. Classes deriving from + can use this property to get or set this . Use the + underlying returned from if + you require access beyond that which provides. + + + + + Parameter type used by the . + + + + This class provides the basic database parameter properties + as defined by the interface. + + This type can be subclassed to provide database specific + functionality. The two methods that are called externally are + and . + + + + + + Initializes a new instance of the class. + + + Default constructor for the AdoNetAppenderParameter class. + + + + + Prepare the specified database command object. + + The command to prepare. + + + Prepares the database command object by adding + this parameter to its collection of parameters. + + + + + + Renders the logging event and set the parameter value in the command. + + The command containing the parameter. + The event to be rendered. + + + Renders the logging event using this parameters layout + object. Sets the value of the parameter on the command object. + + + + + + The name of this parameter. + + + + + The database type for this parameter. + + + + + Flag to infer type rather than use the DbType + + + + + The precision for this parameter. + + + + + The scale for this parameter. + + + + + The size for this parameter. + + + + + The to use to render the + logging event into an object for this parameter. + + + + + Gets or sets the name of this parameter. + + + The name of this parameter. + + + + The name of this parameter. The parameter name + must match up to a named parameter to the SQL stored procedure + or prepared statement. + + + + + + Gets or sets the database type for this parameter. + + + The database type for this parameter. + + + + The database type for this parameter. This property should + be set to the database type from the + enumeration. See . + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the type from the value. + + + + + + + Gets or sets the precision for this parameter. + + + The precision for this parameter. + + + + The maximum number of digits used to represent the Value. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the precision from the value. + + + + + + + Gets or sets the scale for this parameter. + + + The scale for this parameter. + + + + The number of decimal places to which Value is resolved. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the scale from the value. + + + + + + + Gets or sets the size for this parameter. + + + The size for this parameter. + + + + The maximum size, in bytes, of the data within the column. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the size from the value. + + + + + + + Gets or sets the to use to + render the logging event into an object for this + parameter. + + + The used to render the + logging event into an object for this parameter. + + + + The that renders the value for this + parameter. + + + The can be used to adapt + any into a + for use in the property. + + + + + + Appends logging events to the terminal using ANSI color escape sequences. + + + + AnsiColorTerminalAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific level of message to be set. + + + This appender expects the terminal to understand the VT100 control set + in order to interpret the color codes. If the terminal or console does not + understand the control codes the behavior is not defined. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + When configuring the ANSI colored terminal appender, a mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + + These color values cannot be combined together to make new colors. + + + The attributes can be any combination of the following: + + Brightforeground is brighter + Dimforeground is dimmer + Underscoremessage is underlined + Blinkforeground is blinking (does not work on all terminals) + Reverseforeground and background are reversed + Hiddenoutput is hidden + Strikethroughmessage has a line through it + + While any of these attributes may be combined together not all combinations + work well together, for example setting both Bright and Dim attributes makes + no sense. + + + Patrick Wagstrom + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Ansi code to reset terminal + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Add a mapping of level to color + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colours + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Target is the value of the console output stream. + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible display attributes + + + + The following flags can be combined together to + form the ANSI color attributes. + + + + + + + text is bright + + + + + text is dim + + + + + text is underlined + + + + + text is blinking + + + Not all terminals support this attribute + + + + + text and background colors are reversed + + + + + text is hidden + + + + + text is displayed with a strikethrough + + + + + The enum of possible foreground or background color values for + use with the color mapping method + + + + The output can be in one for the following ANSI colors. + + + + + + + color is black + + + + + color is red + + + + + color is green + + + + + color is yellow + + + + + color is blue + + + + + color is magenta + + + + + color is cyan + + + + + color is white + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + An entry in the + + + + This is an abstract base class for types that are stored in the + object. + + + Nicko Cadell + + + + Default protected constructor + + + + Default protected constructor + + + + + + Initialize any options defined on this entry + + + + Should be overridden by any classes that need to initialise based on their options + + + + + + The level that is the key for this mapping + + + The that is the key for this mapping + + + + Get or set the that is the key for this + mapping subclass. + + + + + + Initialize the options for the object + + + + Combine the and together + and append the attributes. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level + + + + + + The color attributes for the specified level + + + + Required property. + The color attributes for the specified level + + + + + + The combined , and + suitable for setting the ansi terminal color. + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a AppenderCollection instance. + + list to create a readonly wrapper arround + + An AppenderCollection wrapper that is read-only. + + + + + An empty readonly static AppenderCollection + + + + + Initializes a new instance of the AppenderCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the AppenderCollection class + that has the specified initial capacity. + + + The number of elements that the new AppenderCollection is initially capable of storing. + + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified AppenderCollection. + + The AppenderCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire AppenderCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire AppenderCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the AppenderCollection. + + The to be added to the end of the AppenderCollection. + The index at which the value has been added. + + + + Removes all elements from the AppenderCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the AppenderCollection. + + The to check for. + true if is found in the AppenderCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the AppenderCollection. + + The to locate in the AppenderCollection. + + The zero-based index of the first occurrence of + in the entire AppenderCollection, if found; otherwise, -1. + + + + + Inserts an element into the AppenderCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the AppenderCollection. + + The to remove from the AppenderCollection. + + The specified was not found in the AppenderCollection. + + + + + Removes the element at the specified index of the AppenderCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the AppenderCollection. + + An for the entire AppenderCollection. + + + + Adds the elements of another AppenderCollection to the current AppenderCollection. + + The AppenderCollection whose elements should be added to the end of the current AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a array to the current AppenderCollection. + + The array whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a collection to the current AppenderCollection. + + The collection whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Sets the capacity to the actual number of elements. + + + + + Return the collection elements as an array + + the array + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the AppenderCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the AppenderCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + + + + + Appends log events to the ASP.NET system. + + + + + Diagnostic information and tracing messages that you specify are appended to the output + of the page that is sent to the requesting browser. Optionally, you can view this information + from a separate trace viewer (Trace.axd) that displays trace information for every page in a + given application. + + + Trace statements are processed and displayed only when tracing is enabled. You can control + whether tracing is displayed to a page, to the trace viewer, or both. + + + The logging event is passed to the or + method depending on the level of the logging event. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the ASP.NET trace + + the event to log + + + Write the logging event to the ASP.NET trace + HttpContext.Current.Trace + (). + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Buffers events and then forwards them to attached appenders. + + + + The events are buffered in this appender until conditions are + met to allow the appender to deliver the events to the attached + appenders. See for the + conditions that cause the buffer to be sent. + + The forwarding appender can be used to specify different + thresholds and filters for the same appender at different locations + within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Interface for attaching appenders to objects. + + + + Interface for attaching, removing and retrieving appenders. + + + Nicko Cadell + Gert Driesen + + + + Attaches an appender. + + The appender to add. + + + Add the specified appender. The implementation may + choose to allow or deny duplicate appenders. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Returns an attached appender with the specified. + If no appender with the specified name is found null will be + returned. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Gets all attached appenders. + + + A collection of attached appenders. + + + + Gets a collection of attached appenders. + If there are no attached appenders the + implementation should return an empty + collection rather than null. + + + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Send the events. + + The events that need to be send. + + + Forwards the events to the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this buffering appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Appends logging events to the console. + + + + ColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes directly to the application's attached console + not to the System.Console.Out or System.Console.Error TextWriter. + The System.Console.Out and System.Console.Error streams can be + programmatically redirected (for example NUnit does this to capture program output). + This appender will ignore these redirections because it needs to use Win32 + API calls to colorize the output. To respect these redirections the + must be used. + + + When configuring the colored console appender, mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + combination of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + HighIntensity + + + + Rick Hobbs + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + The console output stream writer to write to + + + + This writer is not thread safe. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible color values for use with the color mapping method + + + + The following flags can be combined together to + form the colors. + + + + + + + color is blue + + + + + color is green + + + + + color is red + + + + + color is white + + + + + color is yellow + + + + + color is purple + + + + + color is cyan + + + + + color is intensified + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + Initialize the options for the object + + + + Combine the and together. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + The combined and suitable for + setting the console color. + + + + + Appends logging events to the console. + + + + ConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + Nicko Cadell + Gert Driesen + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + debug system. + + + Events are written using the + method. The event's logger name is passed as the value for the category name to the Write method. + + + Nicko Cadell + + + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + If is true then the + is called. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Writes events to the system event log. + + + + The EventID of the event log entry can be + set using the EventLogEventID property () + on the . + + + There is a limit of 32K characters for an event log message + + + When configuring the EventLogAppender a mapping can be + specified to map a logging level to an event log entry type. For example: + + + <mapping> + <level value="ERROR" /> + <eventLogEntryType value="Error" /> + </mapping> + <mapping> + <level value="DEBUG" /> + <eventLogEntryType value="Information" /> + </mapping> + + + The Level is the standard log4net logging level and eventLogEntryType can be any value + from the enum, i.e.: + + Erroran error event + Warninga warning event + Informationan informational event + + + + Aspi Havewala + Douglas de la Torre + Nicko Cadell + Gert Driesen + Thomas Voss + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class + with the specified . + + The to use with this appender. + + + Obsolete constructor. + + + + + + Add a mapping of level to - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the event log entry type for a level. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create an event log source + + + Uses different API calls under NET_2_0 + + + + + This method is called by the + method. + + the event to log + + Writes the event to the system event log using the + . + + If the event has an EventID property (see ) + set then this integer will be used as the event log event id. + + + There is a limit of 32K characters for an event log message + + + + + + Get the equivalent for a + + the Level to convert to an EventLogEntryType + The equivalent for a + + Because there are fewer applicable + values to use in logging levels than there are in the + this is a one way mapping. There is + a loss of information during the conversion. + + + + + The log name is the section in the event logs where the messages + are stored. + + + + + Name of the application to use when logging. This appears in the + application column of the event log named by . + + + + + The name of the machine which holds the event log. This is + currently only allowed to be '.' i.e. the current machine. + + + + + Mapping from level object to EventLogEntryType + + + + + The security context to use for privileged calls + + + + + The name of the log where messages will be stored. + + + The string name of the log where messages will be stored. + + + This is the name of the log as it appears in the Event Viewer + tree. The default value is to log into the Application + log, this is where most applications write their events. However + if you need a separate log for your application (or applications) + then you should set the appropriately. + This should not be used to distinguish your event log messages + from those of other applications, the + property should be used to distinguish events. This property should be + used to group together events into a single log. + + + + + + Property used to set the Application name. This appears in the + event logs when logging. + + + The string used to distinguish events from different sources. + + + Sets the event log source property. + + + + + This property is used to return the name of the computer to use + when accessing the event logs. Currently, this is the current + computer, denoted by a dot "." + + + The string name of the machine holding the event log that + will be logged into. + + + This property cannot be changed. It is currently set to '.' + i.e. the local machine. This may be changed in future. + + + + + Gets or sets the used to write to the EventLog. + + + The used to write to the EventLog. + + + + The system security context used to write to the EventLog. + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and its event log entry type. + + + + + + The for this entry + + + + Required property. + The for this entry + + + + + + Appends logging events to a file. + + + + Logging events are sent to the file specified by + the property. + + + The file can be opened in either append or overwrite mode + by specifying the property. + If the file path is relative it is taken as relative from + the application base directory. The file encoding can be + specified by setting the property. + + + The layout's and + values will be written each time the file is opened and closed + respectively. If the property is + then the file may contain multiple copies of the header and footer. + + + This appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + The supports pluggable file locking models via + the property. + The default behavior, implemented by + is to obtain an exclusive write lock on the file until this appender is closed. + The alternative model, , only holds a + write lock while the appender is writing a logging event. + + + Nicko Cadell + Gert Driesen + Rodrigo B. de Oliveira + Douglas de la Torre + Niall Daley + + + + Sends logging events to a . + + + + An Appender that writes to a . + + + This appender may be used stand alone if initialized with an appropriate + writer, however it is typically used as a base class for an appender that + can open a to write to. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class and + sets the output destination to a new initialized + with the specified . + + The layout to use with this appender. + The to output to. + + + Obsolete constructor. + + + + + + Initializes a new instance of the class and sets + the output destination to the specified . + + The layout to use with this appender + The to output to + + The must have been previously opened. + + + + Obsolete constructor. + + + + + + This method determines if there is a sense in attempting to append. + + + + This method checked if an output target has been set and if a + layout has been set. + + + false if any of the preconditions fail. + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + This method writes all the bulk logged events to the output writer + before flushing the stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + Closed appenders cannot be reused. + + + + + Writes the footer and closes the underlying . + + + + Writes the footer and closes the underlying . + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Clears internal references to the underlying + and other variables. + + + + Subclasses can override this method for an alternate closing behavior. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Called to allow a subclass to lazily initialize the writer + + + + This method is called when an event is logged and the or + have not been set. This allows a subclass to + attempt to initialize the writer multiple times. + + + + + + This is the where logging events + will be written to. + + + + + Immediate flush means that the underlying + or output stream will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logging events are not actually persisted if and when the application + crashes. + + + The default value is true. + + + + + + Gets or set whether the appender will flush at the end + of each append operation. + + + + The default behavior is to flush at the end of each + append operation. + + + If this option is set to false, then the underlying + stream can defer persisting the logging event to a later + time. + + + + Avoiding the flush operation at the end of each append results in + a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + Sets the where the log output will go. + + + + The specified must be open and writable. + + + The will be closed when the appender + instance is closed. + + + Note: Logging to an unopened will fail. + + + + + + Gets or set the and the underlying + , if any, for this appender. + + + The for this appender. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Gets or sets the where logging events + will be written to. + + + The where logging events are written. + + + + This is the where logging events + will be written to. + + + + + + Default constructor + + + + Default constructor + + + + + + Construct a new appender using the layout, file and append mode. + + the layout to use with this appender + the full path to the file to write to + flag to indicate if the file should be appended to + + + Obsolete constructor. + + + + + + Construct a new appender using the layout and file specified. + The file will be appended to. + + the layout to use with this appender + the full path to the file to write to + + + Obsolete constructor. + + + + + + Activate the options on the file appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This will cause the file to be opened. + + + + + + Closes any previously opened file and calls the parent's . + + + + Resets the filename and the file stream. + + + + + + Called to initialize the file writer + + + + Will be called for each logged message until the file is + successfully opened. + + + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + Acquires the output file locks once before writing all the events to + the stream. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Closes the previously opened file. + + + + Writes the to the file and then + closes the file. + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + Calls but guarantees not to throw an exception. + Errors are passed to the . + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + If there was already an opened file, then the previous file + is closed first. + + + This method will ensure that the directory structure + for the specified exists. + + + + + + Sets the quiet writer used for file output + + the file stream that has been opened for writing + + + This implementation of creates a + over the and passes it to the + method. + + + This method can be overridden by sub classes that want to wrap the + in some way, for example to encrypt the output + data using a System.Security.Cryptography.CryptoStream. + + + + + + Sets the quiet writer being used. + + the writer over the file stream that has been opened for writing + + + This method can be overridden by sub classes that want to + wrap the in some way. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + Flag to indicate if we should append to the file + or overwrite the file. The default is to append. + + + + + The name of the log file. + + + + + The encoding to use for the file stream. + + + + + The security context to use for privileged calls + + + + + The stream to log to. Has added locking semantics + + + + + The locking model to use + + + + + Gets or sets the path to the file that logging will be written to. + + + The path to the file that logging will be written to. + + + + If the path is relative it is taken as relative from + the application base directory. + + + + + + Gets or sets a flag that indicates whether the file should be + appended to or overwritten. + + + Indicates whether the file should be appended to or overwritten. + + + + If the value is set to false then the file will be overwritten, if + it is set to true then the file will be appended to. + + The default value is true. + + + + + Gets or sets used to write to the file. + + + The used to write to the file. + + + + The default encoding set is + which is the encoding for the system's current ANSI code page. + + + + + + Gets or sets the used to write to the file. + + + The used to write to the file. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the used to handle locking of the file. + + + The used to lock the file. + + + + Gets or sets the used to handle locking of the file. + + + There are two built in locking models, and . + The former locks the file from the start of logging to the end and the + later lock only for the minimal amount of time when logging each message. + + + The default locking model is the . + + + + + + Write only that uses the + to manage access to an underlying resource. + + + + + True asynchronous writes are not supported, the implementation forces a synchronous write. + + + + + Exception base type for log4net. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class with + the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Locking model base class + + + + Base class for the locking models available to the derived loggers. + + + + + + Open the output file + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Gets or sets the for this LockingModel + + + The for this LockingModel + + + + The file appender this locking model is attached to and working on + behalf of. + + + The file appender is used to locate the security context and the error handler to use. + + + The value of this property will be set before is + called. + + + + + + Hold an exclusive lock on the output file + + + + Open the file once for writing and hold it open until is called. + Maintains an exclusive lock on the file during this time. + + + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Release the lock on the file + + + + Does nothing. The lock will be released when the file is closed. + + + + + + Acquires the file lock for each write + + + + Opens the file once for each / cycle, + thus holding the lock for the minimal amount of time. This method of locking + is considerably slower than but allows + other processes to move/delete the log file whilst logging continues. + + + + + + Prepares to open the file when the first message is logged. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + This appender forwards logging events to attached appenders. + + + + The forwarding appender can be used to specify different thresholds + and filters for the same appender at different locations within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Forward the logging event to the attached appenders + + The event to log. + + + Delivers the logging event to all the attached appenders. + + + + + + Forward the logging events to the attached appenders + + The array of events to log. + + + Delivers the logging events to all the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Logs events to a local syslog service. + + + + This appender uses the POSIX libc library functions openlog, syslog, and closelog. + If these functions are not available on the local system then this appender will not work! + + + The functions openlog, syslog, and closelog are specified in SUSv2 and + POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. + + + This appender talks to a local syslog service. If you need to log to a remote syslog + daemon and you cannot configure your local syslog service to do this you may be + able to use the to log via UDP. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a local syslog service. + + + + + Add a mapping of level to severity + + The mapping to add + + + Adds a to this appender. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Close the syslog when the appender is closed + + + + Close the syslog when the appender is closed + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + + The facility. The default facility is . + + + + + The message identity + + + + + Marshaled handle to the identity string. We have to hold on to the + string as the openlog and syslog APIs just hold the + pointer to the ident and dereference it for each log message. + + + + + Mapping from level object to syslog severity + + + + + Open connection to system logger. + + + + + Generate a log message. + + + + The libc syslog method takes a format string and a variable argument list similar + to the classic printf function. As this type of vararg list is not supported + by C# we need to specify the arguments explicitly. Here we have specified the + format string with a single message argument. The caller must set the format + string to "%s". + + + + + + Close descriptor used to write to system logger. + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + syslog severities + + + + The log4net Level maps to a syslog severity using the + method and the + class. The severity is set on . + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facility defines which subsystem the logging comes from. + This is set on the property. + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Stores logging events in an array. + + + + The memory appender stores all the logging events + that are appended in an in-memory array. + + + Use the method to get + the current list of events that have been appended. + + + Use the method to clear the + current list of events. + + + Julian Biddle + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Gets the events that have been logged. + + The events that have been logged + + + Gets the events that have been logged. + + + + + + This method is called by the method. + + the event to log + + Stores the in the events list. + + + + + Clear the list of events + + + Clear the list of events + + + + + The list of events that have been appended. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + Gets or sets a value indicating whether only part of the logging event + data should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the event + data to be fixed and stored in the appender, hereby improving performance. + + + See for more information. + + + + + + Gets or sets the fields that will be fixed in the event + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + Logs entries by sending network messages using the + native function. + + + + You can send messages only to names that are active + on the network. If you send the message to a user name, + that user must be logged on and running the Messenger + service to receive the message. + + + The receiver will get a top most window displaying the + messages one at a time, therefore this appender should + not be used to deliver a high volume of messages. + + + The following table lists some possible uses for this appender : + + + + + Action + Property Value(s) + + + Send a message to a user account on the local machine + + + = <name of the local machine> + + + = <user name> + + + + + Send a message to a user account on a remote machine + + + = <name of the remote machine> + + + = <user name> + + + + + Send a message to a domain user account + + + = <name of a domain controller | uninitialized> + + + = <user name> + + + + + Send a message to all the names in a workgroup or domain + + + = <workgroup name | domain name>* + + + + + Send a message from the local machine to a remote machine + + + = <name of the local machine | uninitialized> + + + = <name of the remote machine> + + + + + + + Note : security restrictions apply for sending + network messages, see + for more information. + + + + + An example configuration section to log information + using this appender from the local machine, named + LOCAL_PC, to machine OPERATOR_PC : + + + + + + + + + + Nicko Cadell + Gert Driesen + + + + The DNS or NetBIOS name of the server on which the function is to execute. + + + + + The sender of the network message. + + + + + The message alias to which the message should be sent. + + + + + The security context to use for privileged calls + + + + + Initializes the appender. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified. + + + The required property was not specified. + + + + This method is called by the method. + + The event to log. + + + Sends the event using a network message. + + + + + + Sends a buffer of information to a registered message alias. + + The DNS or NetBIOS name of the server on which the function is to execute. + The message alias to which the message buffer should be sent + The originator of the message. + The message text. + The length, in bytes, of the message text. + + + The following restrictions apply for sending network messages: + + + + + Platform + Requirements + + + Windows NT + + + No special group membership is required to send a network message. + + + Admin, Accounts, Print, or Server Operator group membership is required to + successfully send a network message on a remote server. + + + + + Windows 2000 or later + + + If you send a message on a domain controller that is running Active Directory, + access is allowed or denied based on the access control list (ACL) for the securable + object. The default ACL permits only Domain Admins and Account Operators to send a network message. + + + On a member server or workstation, only Administrators and Server Operators can send a network message. + + + + + + + For more information see Security Requirements for the Network Management Functions. + + + + + If the function succeeds, the return value is zero. + + + + + + Gets or sets the sender of the message. + + + The sender of the message. + + + If this property is not specified, the message is sent from the local computer. + + + + + Gets or sets the message alias to which the message should be sent. + + + The recipient of the message. + + + This property should always be specified in order to send a message. + + + + + Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. + + + DNS or NetBIOS name of the remote server on which the function is to execute. + + + + For Windows NT 4.0 and earlier, the string should begin with \\. + + + If this property is not specified, the local computer is used. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the OutputDebugString system. + + + + OutputDebugStringAppender appends log events to the + OutputDebugString system. + + + The string is passed to the native OutputDebugString + function. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the output debug string API + + the event to log + + + Write the logging event to the output debug string API + + + + + + Stub for OutputDebugString native method + + the string to output + + + Stub for OutputDebugString native method + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Logs events to a remote syslog daemon. + + + + The BSD syslog protocol is used to remotely log to + a syslog daemon. The syslogd listens for for messages + on UDP port 514. + + + The syslog UDP protocol is not authenticated. Most syslog daemons + do not accept remote log messages because of the security implications. + You may be able to use the LocalSyslogAppender to talk to a local + syslog service. + + + There is an RFC 3164 that claims to document the BSD Syslog Protocol. + This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. + This appender generates what the RFC calls an "Original Device Message", + i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation + this format of message will be accepted by all current syslog daemon + implementations. The daemon will attach the current time and the source + hostname or IP address to any messages received. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Sends logging events as connectionless UDP datagrams to a remote host or a + multicast group using an . + + + + UDP guarantees neither that messages arrive, nor that they arrive in the correct order. + + + To view the logging results, a custom application can be developed that listens for logging + events. + + + When decoding events send via this appender remember to use the same encoding + to decode the events as was used to send the events. See the + property to specify the encoding to use. + + + + This example shows how to log receive logging events that are sent + on IP address 244.0.0.1 and port 8080 to the console. The event is + encoded in the packet as a unicode string and it is decoded as such. + + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + UdpClient udpClient; + byte[] buffer; + string loggingEvent; + + try + { + udpClient = new UdpClient(8080); + + while(true) + { + buffer = udpClient.Receive(ref remoteEndPoint); + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); + Console.WriteLine(loggingEvent); + } + } + catch(Exception e) + { + Console.WriteLine(e.ToString()); + } + + + Dim remoteEndPoint as IPEndPoint + Dim udpClient as UdpClient + Dim buffer as Byte() + Dim loggingEvent as String + + Try + remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) + udpClient = new UdpClient(8080) + + While True + buffer = udpClient.Receive(ByRef remoteEndPoint) + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) + Console.WriteLine(loggingEvent) + Wend + Catch e As Exception + Console.WriteLine(e.ToString()) + End Try + + + An example configuration section to log information using this appender to the + IP 224.0.0.1 on port 8080: + + + + + + + + + + Gert Driesen + Nicko Cadell + + + + Initializes a new instance of the class. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified or + an invalid remote or local TCP port number was specified. + + + The required property was not specified. + The TCP port number assigned to or is less than or greater than . + + + + This method is called by the method. + + The event to log. + + + Sends the event using an UDP datagram. + + + Exceptions are passed to the . + + + + + + Closes the UDP connection and releases all resources associated with + this instance. + + + + Disables the underlying and releases all managed + and unmanaged resources associated with the . + + + + + + Initializes the underlying connection. + + + + The underlying is initialized and binds to the + port number from which you intend to communicate. + + + Exceptions are passed to the . + + + + + + The IP address of the remote host or multicast group to which + the logging event will be sent. + + + + + The TCP port number of the remote host or multicast group to + which the logging event will be sent. + + + + + The cached remote endpoint to which the logging events will be sent. + + + + + The TCP port number from which the will communicate. + + + + + The instance that will be used for sending the + logging events. + + + + + The encoding to use for the packet. + + + + + Gets or sets the IP address of the remote host or multicast group to which + the underlying should sent the logging event. + + + The IP address of the remote host or multicast group to which the logging event + will be sent. + + + + Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to + 239.255.255.255). Multicast packets can pass across different networks through routers, so + it is possible to use multicasts in an Internet scenario as long as your network provider + supports multicasting. + + + Hosts that want to receive particular multicast messages must register their interest by joining + the multicast group. Multicast messages are not sent to networks where no host has joined + the multicast group. Class D IP addresses are used for multicast groups, to differentiate + them from normal host addresses, allowing nodes to easily detect if a message is of interest. + + + Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: + + + + + IP Address + Description + + + 224.0.0.1 + + + Sends a message to all system on the subnet. + + + + + 224.0.0.2 + + + Sends a message to all routers on the subnet. + + + + + 224.0.0.12 + + + The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. + + + + + + + A complete list of actually reserved multicast addresses and their owners in the ranges + defined by RFC 3171 can be found at the IANA web site. + + + The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative + addresses. These addresses can be reused with other local groups. Routers are typically + configured with filters to prevent multicast traffic in this range from flowing outside + of the local network. + + + + + + Gets or sets the TCP port number of the remote host or multicast group to which + the underlying should sent the logging event. + + + An integer value in the range to + indicating the TCP port number of the remote host or multicast group to which the logging event + will be sent. + + + The underlying will send messages to this TCP port number + on the remote host or multicast group. + + The value specified is less than or greater than . + + + + Gets or sets the TCP port number from which the underlying will communicate. + + + An integer value in the range to + indicating the TCP port number from which the underlying will communicate. + + + + The underlying will bind to this port for sending messages. + + + Setting the value to 0 (the default) will cause the udp client not to bind to + a local port. + + + The value specified is less than or greater than . + + + + Gets or sets used to write the packets. + + + The used to write the packets. + + + + The used to write the packets. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to send logging events + over a network. Classes deriving from can use this + property to get or set this . Use the underlying + returned from if you require access beyond that which + provides. + + + + + Gets or sets the cached remote endpoint to which the logging events should be sent. + + + The cached remote endpoint to which the logging events will be sent. + + + The method will initialize the remote endpoint + with the values of the and + properties. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Syslog port 514 + + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a remote syslog daemon. + + + + + Add a mapping of level to severity + + The mapping to add + + + Add a mapping to this appender. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to syslog severity mappings set on this appender. + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + Generate a syslog priority. + + + + + + The facility. The default facility is . + + + + + The message identity + + + + + Mapping from level object to syslog severity + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + syslog severities + + + + The syslog severities. + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facilities + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Delivers logging events to a remote logging sink. + + + + This Appender is designed to deliver events to a remote sink. + That is any object that implements the + interface. It delivers the events using .NET remoting. The + object to deliver events to is specified by setting the + appenders property. + + The RemotingAppender buffers events before sending them. This allows it to + make more efficient use of the remoting infrastructure. + + Once the buffer is full the events are still not sent immediately. + They are scheduled to be sent using a pool thread. The effect is that + the send occurs asynchronously. This is very important for a + number of non obvious reasons. The remoting infrastructure will + flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + Because the events are sent asynchronously using pool threads it is possible to close + this appender before all the queued events have been sent. + When closing the appender attempts to wait until all the queued events have been sent, but + this will timeout after 30 seconds regardless. + + If this appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. If the runtime terminates the threads before + the queued events have been sent then they will be lost. To ensure that all events + are sent the appender must be closed before the application exits. See + for details on how to shutdown + log4net programmatically. + + + Nicko Cadell + Gert Driesen + Daniel Cazzulino + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Send the contents of the buffer to the remote sink. + + + The events are not sent immediately. They are scheduled to be sent + using a pool thread. The effect is that the send occurs asynchronously. + This is very important for a number of non obvious reasons. The remoting + infrastructure will flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + The events to send. + + + + Override base class close. + + + + This method waits while there are queued work items. The events are + sent asynchronously using work items. These items + will be sent once a thread pool thread is available to send them, therefore + it is possible to close the appender before all the queued events have been + sent. + + This method attempts to wait until all the queued events have been sent, but this + method will timeout after 30 seconds regardless. + + If the appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. + + + + + A work item is being queued into the thread pool + + + + + A work item from the thread pool has completed + + + + + Send the contents of the buffer to the remote sink. + + + This method is designed to be used with the . + This method expects to be passed an array of + objects in the state param. + + the logging events to send + + + + The URL of the remote sink. + + + + + The local proxy (.NET remoting) for the remote logging sink. + + + + + The number of queued callbacks currently waiting or executing + + + + + Event used to signal when there are no queued work items + + + This event is set when there are no queued work items. In this + state it is safe to close the appender. + + + + + Gets or sets the URL of the well-known object that will accept + the logging events. + + + The well-known URL of the remote sink. + + + + The URL of the remoting sink that will accept logging events. + The sink must implement the + interface. + + + + + + Interface used to deliver objects to a remote sink. + + + This interface must be implemented by a remoting sink + if the is to be used + to deliver logging events to the sink. + + + + + Delivers logging events to the remote sink + + Array of events to log. + + + Delivers logging events to the remote sink + + + + + + Appender that rolls log files based on size or date or both. + + + + RollingFileAppender can roll log files based on size or date or both + depending on the setting of the property. + When set to the log file will be rolled + once its size exceeds the . + When set to the log file will be rolled + once the date boundary specified in the property + is crossed. + When set to the log file will be + rolled once the date boundary specified in the property + is crossed, but within a date boundary the file will also be rolled + once its size exceeds the . + When set to the log file will be rolled when + the appender is configured. This effectively means that the log file can be + rolled once per program execution. + + + A of few additional optional features have been added: + + Attach date pattern for current log file + Backup number increments for newer files + Infinite number of backups by file size + + + + + + For large or infinite numbers of backup files a + greater than zero is highly recommended, otherwise all the backup files need + to be renamed each time a new backup is created. + + + When Date/Time based rolling is used setting + to will reduce the number of file renamings to few or none. + + + + + + Changing or without clearing + the log file directory of backup files will cause unexpected and unwanted side effects. + + + + + If Date/Time based rolling is enabled this appender will attempt to roll existing files + in the directory without a Date/Time tag based on the last write date of the base log file. + The appender only rolls the log file when a message is logged. If Date/Time based rolling + is enabled then the appender will not roll the log file at the Date/Time boundary but + at the point when the next message is logged after the boundary has been crossed. + + + + The extends the and + has the same behavior when opening the log file. + The appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + When rolling a backup file necessitates deleting an older backup file the + file to be deleted is moved to a temporary name before being deleted. + + + + + A maximum number of backup files when rolling on date/time boundaries is not supported. + + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + Edward Smit + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Sets the quiet writer being used. + + + This method can be overridden by sub classes. + + the writer to set + + + + Write out a logging event. + + the event to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Write out an array of logging events. + + the events to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Performs any required rolling before outputting the next event + + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Creates and opens the file for logging. If + is false then the fully qualified name is determined and used. + + the name of the file to open + true to append to existing file + + This method will ensure that the directory structure + for the specified exists. + + + + + Get the current output file name + + the base file name + the output file name + + The output file name is based on the base fileName specified. + If is set then the output + file name is the same as the base file passed in. Otherwise + the output file depends on the date pattern, on the count + direction or both. + + + + + Determines curSizeRollBackups (only within the current roll point) + + + + + Generates a wildcard pattern that can be used to find all files + that are similar to the base file name. + + + + + + + Builds a list of filenames for all files matching the base filename plus a file + pattern. + + + + + + + Initiates a roll over if needed for crossing a date boundary since the last run. + + + + + Initializes based on existing conditions at time of . + + + + Initializes based on existing conditions at time of . + The following is done + + determine curSizeRollBackups (only within the current roll point) + initiates a roll over if needed for crossing a date boundary since the last run. + + + + + + + Does the work of bumping the 'current' file counter higher + to the highest count when an incremental file name is seen. + The highest count is either the first file (when count direction + is greater than 0) or the last file (when count direction less than 0). + In either case, we want to know the highest count that is present. + + + + + + + Takes a list of files and a base file name, and looks for + 'incremented' versions of the base file. Bumps the max + count up to the highest count seen. + + + + + + + Calculates the RollPoint for the datePattern supplied. + + the date pattern to calculate the check period for + The RollPoint that is most accurate for the date pattern supplied + + Essentially the date pattern is examined to determine what the + most suitable roll point is. The roll point chosen is the roll point + with the smallest period that can be detected using the date pattern + supplied. i.e. if the date pattern only outputs the year, month, day + and hour then the smallest roll point that can be detected would be + and hourly roll point as minutes could not be detected. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Sets initial conditions including date/time roll over information, first check, + scheduledFilename, and calls to initialize + the current number of backups. + + + + + + Rollover the file(s) to date/time tagged file(s). + + set to true if the file to be rolled is currently open + + + Rollover the file(s) to date/time tagged file(s). + Resets curSizeRollBackups. + If fileIsOpen is set then the new file is opened (through SafeOpenFile). + + + + + + Renames file to file . + + Name of existing file to roll. + New name for file. + + + Renames file to file . It + also checks for existence of target file and deletes if it does. + + + + + + Test if a file exists at a specified path + + the path to the file + true if the file exists + + + Test if a file exists at a specified path + + + + + + Deletes the specified file if it exists. + + The file to delete. + + + Delete a file if is exists. + The file is first moved to a new filename then deleted. + This allows the file to be removed even when it cannot + be deleted, but it still can be moved. + + + + + + Implements file roll base on file size. + + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. Moreover, File is + renamed File.1 and closed. + + + A new file is created to receive further log output. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + + + + Implements file roll. + + the base name to rename + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + This is called by to rename the files. + + + + + + Get the start time of the next window for the current rollpoint + + the current date + the type of roll point we are working with + the start time for the next roll point an interval after the currentDateTime date + + + Returns the date of the next roll point after the currentDateTime date passed to the method. + + + The basic strategy is to subtract the time parts that are less significant + than the rollpoint from the current time. This should roll the time back to + the start of the time window for the current rollpoint. Then we add 1 window + worth of time and get the start time of the next window for the rollpoint. + + + + + + This object supplies the current date/time. Allows test code to plug in + a method to control this class when testing date/time based rolling. + + + + + The date pattern. By default, the pattern is set to ".yyyy-MM-dd" + meaning daily rollover. + + + + + The actual formatted filename that is currently being written to + or will be the file transferred to on roll over + (based on staticLogFileName). + + + + + The timestamp when we shall next recompute the filename. + + + + + Holds date of last roll over + + + + + The type of rolling done + + + + + The default maximum file size is 10MB + + + + + There is zero backup files by default + + + + + How many sized based backups have been made so far + + + + + The rolling file count direction. + + + + + The rolling mode used in this appender. + + + + + Cache flag set if we are rolling by date. + + + + + Cache flag set if we are rolling by size. + + + + + Value indicating whether to always log to the same file. + + + + + FileName provided in configuration. Used for rolling properly + + + + + The 1st of January 1970 in UTC + + + + + Gets or sets the date pattern to be used for generating file names + when rolling over on date. + + + The date pattern to be used for generating file names when rolling + over on date. + + + + Takes a string in the same format as expected by + . + + + This property determines the rollover schedule when rolling over + on date. + + + + + + Gets or sets the maximum number of backup files that are kept before + the oldest is erased. + + + The maximum number of backup files that are kept before the oldest is + erased. + + + + If set to zero, then there will be no backup files and the log file + will be truncated when it reaches . + + + If a negative number is supplied then no deletions will be made. Note + that this could result in very slow performance as a large number of + files are rolled over unless is used. + + + The maximum applies to each time based group of files and + not the total. + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size in bytes that the output file is allowed to reach before being + rolled over to backup files. + + + + This property is equivalent to except + that it is required for differentiating the setter taking a + argument from the setter taking a + argument. + + + The default maximum file size is 10MB (10*1024*1024). + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size that the output file is allowed to reach before being + rolled over to backup files. + + + + This property allows you to specify the maximum size with the + suffixes "KB", "MB" or "GB" so that the size is interpreted being + expressed respectively in kilobytes, megabytes or gigabytes. + + + For example, the value "10KB" will be interpreted as 10240 bytes. + + + The default maximum file size is 10MB. + + + If you have the option to set the maximum file size programmatically + consider using the property instead as this + allows you to set the size in bytes as a . + + + + + + Gets or sets the rolling file count direction. + + + The rolling file count direction. + + + + Indicates if the current file is the lowest numbered file or the + highest numbered file. + + + By default newer files have lower numbers ( < 0), + i.e. log.1 is most recent, log.5 is the 5th backup, etc... + + + >= 0 does the opposite i.e. + log.1 is the first backup made, log.5 is the 5th backup made, etc. + For infinite backups use >= 0 to reduce + rollover costs. + + The default file count direction is -1. + + + + + Gets or sets the rolling style. + + The rolling style. + + + The default rolling style is . + + + When set to this appender's + property is set to false, otherwise + the appender would append to a single file rather than rolling + the file each time it is opened. + + + + + + Gets or sets a value indicating whether to always log to + the same file. + + + true if always should be logged to the same file, otherwise false. + + + + By default file.log is always the current file. Optionally + file.log.yyyy-mm-dd for current formatted datePattern can by the currently + logging file (or file.log.curSizeRollBackup or even + file.log.yyyy-mm-dd.curSizeRollBackup). + + + This will make time based rollovers with a large number of backups + much faster as the appender it won't have to rename all the backups! + + + + + + Style of rolling to use + + + + Style of rolling to use + + + + + + Roll files once per program execution + + + + Roll files once per program execution. + Well really once each time this appender is + configured. + + + Setting this option also sets AppendToFile to + false on the RollingFileAppender, otherwise + this appender would just be a normal file appender. + + + + + + Roll files based only on the size of the file + + + + + Roll files based only on the date + + + + + Roll files based on both the size and date of the file + + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + + + Roll the log not based on the date + + + + + Roll the log for each minute + + + + + Roll the log for each hour + + + + + Roll the log twice a day (midday and midnight) + + + + + Roll the log each day (midnight) + + + + + Roll the log each week + + + + + Roll the log each month + + + + + This interface is used to supply Date/Time information to the . + + + This interface is used to supply Date/Time information to the . + Used primarily to allow test classes to plug themselves in so they can + supply test date/times. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Default implementation of that returns the current time. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Send an e-mail when a specific logging event occurs, typically on errors + or fatal errors. + + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. + For these features to be enabled you need to ensure that you are using a version of + the log4net assembly that is built against the MS .NET 1.1 framework and that you are + running the your application on the MS .NET 1.1 runtime. On all other platforms only sending + unauthenticated messages to a server listening on port 25 (the default) is supported. + + + Authentication is supported by setting the property to + either or . + If using authentication then the + and properties must also be set. + + + To set the SMTP server port use the property. The default port is 25. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + + Send the email message + + the body text to include in the mail + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of recipient e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the name of the SMTP relay mail server to use to send + the e-mail messages. + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + + + Obsolete + + + Use the BufferingAppenderSkeleton Fix methods instead + + + + Obsolete property. + + + + + + The mode to use to authentication with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + Valid Authentication mode values are: , + , and . + The default value is . When using + you must specify the + and to use to authenticate. + When using the Windows credentials for the current + thread, if impersonating, or the process will be used to authenticate. + + + + + + The username to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the username will be ignored. + + + + + + The password to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the password will be ignored. + + + + + + The port on which the SMTP server is listening + + + Server Port is only available on the MS .NET 1.1 runtime. + + The port on which the SMTP server is listening. The default + port is 25. The Port can only be changed when running on + the MS .NET 1.1 runtime. + + + + + + Gets or sets the priority of the e-mail message + + + One of the values. + + + + Sets the priority of the e-mails generated by this + appender. The default priority is . + + + If you are using this appender to report errors then + you may want to set the priority to . + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Values for the property. + + + + SMTP authentication modes. + + + + + + No authentication + + + + + Basic authentication. + + + Requires a username and password to be supplied + + + + + Integrated authentication + + + Uses the Windows credentials from the current thread or process to authenticate. + + + + + Send an email when a specific logging event occurs, typically on errors + or fatal errors. Rather than sending via smtp it writes a file into the + directory specified by . This allows services such + as the IIS SMTP agent to manage sending the messages. + + + + The configuration for this appender is identical to that of the SMTPAppender, + except that instead of specifying the SMTPAppender.SMTPHost you specify + . + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Niall Daley + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + Sends the contents of the cyclic buffer as an e-mail message. + + + + + + Activate the options on this appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + The security context to use for privileged calls + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the path to write the messages to. + + + + Gets or sets the path to write the messages to. This should be the same + as that used by the agent sending the messages. + + + + + + Gets or sets the used to write to the pickup directory. + + + The used to write to the pickup directory. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appender that allows clients to connect via Telnet to receive log messages + + + + The TelnetAppender accepts socket connections and streams logging messages + back to the client. + The output is provided in a telnet-friendly way so that a log can be monitored + over a TCP/IP socket. + This allows simple remote monitoring of application logging. + + + The default is 23 (the telnet port). + + + Keith Long + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Overrides the parent method to close the socket handler + + + + Closes all the outstanding connections. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Create the socket handler and wait for connections + + + + + + Writes the logging event to each connected client. + + The event to log. + + + Writes the logging event to each connected client. + + + + + + Gets or sets the TCP port number on which this will listen for connections. + + + An integer value in the range to + indicating the TCP port number on which this will listen for connections. + + + + The default value is 23 (the telnet port). + + + The value specified is less than + or greater than . + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Helper class to manage connected clients + + + + The SocketHandler class is used to accept connections from + clients. It is threaded so that clients can connect/disconnect + asynchronously. + + + + + + Opens a new server port on + + the local port to listen on for connections + + + Creates a socket handler on the specified local server port. + + + + + + Sends a string message to each of the connected clients + + the text to send + + + Sends a string message to each of the connected clients + + + + + + Add a client to the internal clients list + + client to add + + + + Remove a client from the internal clients list + + client to remove + + + + Callback used to accept a connection on the server socket + + The result of the asynchronous operation + + + On connection adds to the list of connections + if there are two many open connections you will be disconnected + + + + + + Close all network connections + + + + Make sure we close all network connections + + + + + + Test if this handler has active connections + + + true if this handler has active connections + + + + This property will be true while this handler has + active connections, that is at least one connection that + the handler will attempt to send a message to. + + + + + + Class that represents a client connected to this handler + + + + Class that represents a client connected to this handler + + + + + + Create this for the specified + + the client's socket + + + Opens a stream writer on the socket. + + + + + + Write a string to the client + + string to send + + + Write a string to the client + + + + + + Cleanup the clients connection + + + + Close the socket connection. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + trace system. + + + Events are written using the System.Diagnostics.Trace.Write(string,string) + method. The event's logger name is passed as the value for the category name to the Write method. + + + Compact Framework
+ The Compact Framework does not support the + class for any operation except Assert. When using the Compact Framework this + appender will write to the system rather than + the Trace system. This appender will therefore behave like the . +
+
+ Douglas de la Torre + Nicko Cadell + Gert Driesen +
+ + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Assembly level attribute that specifies a domain to alias to this assembly's repository. + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's domain to its repository by + specifying this attribute with the name of the target domain. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required domains. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies a repository to alias to this assembly's repository. + + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's repository to its repository by + specifying this attribute with the name of the target repository. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required repositories. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + The repository to alias to this assemby's repository. + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + + + + + Gets or sets the repository to alias to this assemby's repository. + + + The repository to alias to this assemby's repository. + + + + The name of the repository to alias to this assemby's repository. + + + + + + Initializes a new instance of the class with + the specified domain to alias to this assembly's repository. + + The domain to alias to this assemby's repository. + + + Obsolete. Use instead of . + + + + + + Use this class to quickly configure a . + + + + Allows very simple programmatic configuration of log4net. + + + Only one appender can be configured using this configurator. + The appender is set at the root of the hierarchy and all logging + events will be delivered to that appender. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Initializes the log4net system with a default configuration. + + + + Initializes the log4net logging system using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the log4net system using the specified appender. + + The appender to use to log all logging events. + + + Initializes the log4net system using the specified appender. + + + + + + Initializes the with a default configuration. + + The repository to configure. + + + Initializes the specified repository using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the using the specified appender. + + The repository to configure. + The appender to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Base class for all log4net configuration attributes. + + + This is an abstract class that must be extended by + specific configurators. This attribute allows the + configurator to be parameterized by an assembly level + attribute. + + Nicko Cadell + Gert Driesen + + + + Constructor used by subclasses. + + the ordering priority for this configurator + + + The is used to order the configurator + attributes before they are invoked. Higher priority configurators are executed + before lower priority ones. + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Abstract method implemented by a subclass. When this method is called + the subclass should configure the . + + + + + + Compare this instance to another ConfiguratorAttribute + + the object to compare to + see + + + Compares the priorities of the two instances. + Sorts by priority in descending order. Objects with the same priority are + randomly ordered. + + + + + + Assembly level attribute that specifies the logging domain for the assembly. + + + + DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + Assemblies are mapped to logging domains. Each domain has its own + logging repository. This attribute specified on the assembly controls + the configuration of the domain. The property specifies the name + of the domain that this assembly is a part of. The + specifies the type of the repository objects to create for the domain. If + this attribute is not specified and a is not specified + then the assembly will be part of the default shared logging domain. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies the logging repository for the assembly. + + + + Assemblies are mapped to logging repository. This attribute specified + on the assembly controls + the configuration of the repository. The property specifies the name + of the repository that this assembly is a part of. The + specifies the type of the object + to create for the assembly. If this attribute is not specified or a + is not specified then the assembly will be part of the default shared logging repository. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize a new instance of the class + with the name of the repository. + + The name of the repository. + + + Initialize the attribute with the name for the assembly's repository. + + + + + + Gets or sets the name of the logging repository. + + + The string name to use as the name of the repository associated with this + assembly. + + + + This value does not have to be unique. Several assemblies can share the + same repository. They will share the logging configuration of the repository. + + + + + + Gets or sets the type of repository to create for this assembly. + + + The type of repository to create for this assembly. + + + + The type of the repository to create for the assembly. + The type must implement the + interface. + + + This will be the type of repository created when + the repository is created. If multiple assemblies reference the + same repository then the repository is only created once using the + of the first assembly to call into the + repository. + + + + + + Initializes a new instance of the class. + + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Initialize a new instance of the class + with the name of the domain. + + The name of the domain. + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + The repository to configure. + + + + Configures log4net using a log4net element + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The element to parse. + + + + Configures the using the specified XML + element. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration file. + + A stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Assembly level attribute to configure the . + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + If neither of the or + properties are set the configuration is loaded from the application's .config file. + If set the property takes priority over the + property. The property + specifies a path to a file to load the config from. The path is relative to the + application's base directory; . + The property is used as a postfix to the assembly file name. + The config file must be located in the application's base directory; . + For example in a console application setting the to + config has the same effect as not specifying the or + properties. + + + The property can be set to cause the + to watch the configuration file for changes. + + + + Log4net will only look for assembly level configuration attributes once. + When using the log4net assembly level attributes to control the configuration + of log4net you must ensure that the first call to any of the + methods is made from the assembly with the configuration + attributes. + + + If you cannot guarantee the order in which log4net calls will be made from + different assemblies you must use programmatic configuration instead, i.e. + call the method directly. + + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Configure the repository using the . + The specified must extend the + class otherwise the will not be able to + configure it. + + + The does not extend . + + + + Attempt to load configuration from the local file system + + The assembly that this attribute was defined on. + The repository to configure. + + + + Configure the specified repository using a + + The repository to configure. + the FileInfo pointing to the config file + + + + Attempt to load configuration from a URI + + The assembly that this attribute was defined on. + The repository to configure. + + + + Gets or sets the filename of the configuration file. + + + The filename of the configuration file. + + + + If specified, this is the name of the configuration file to use with + the . This file path is relative to the + application base directory (). + + + The takes priority over the . + + + + + + Gets or sets the extension of the configuration file. + + + The extension of the configuration file. + + + + If specified this is the extension for the configuration file. + The path to the config file is built by using the application + base directory (), + the assembly file name and the config file extension. + + + If the is set to MyExt then + possible config file names would be: MyConsoleApp.exe.MyExt or + MyClassLibrary.dll.MyExt. + + + The takes priority over the . + + + + + + Gets or sets a value indicating whether to watch the configuration file. + + + true if the configuration should be watched, false otherwise. + + + + If this flag is specified and set to true then the framework + will watch the configuration file and will reload the config each time + the file is modified. + + + The config file can only be watched if it is loaded from local disk. + In a No-Touch (Smart Client) deployment where the application is downloaded + from a web server the config file may not reside on the local disk + and therefore it may not be able to watch it. + + + Watching configuration is not supported on the SSCLI. + + + + + + Class to register for the log4net section of the configuration file + + + The log4net section of the configuration file needs to have a section + handler registered. This is the section handler used. It simply returns + the XML element that is the root of the section. + + + Example of registering the log4net section handler : + + + +
+ + + log4net configuration XML goes here + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Parses the configuration section. + + The configuration settings in a corresponding parent configuration section. + The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. + The for the log4net section. + The for the log4net section. + + + Returns the containing the configuration data, + + + + + + Assembly level attribute that specifies a plugin to attach to + the repository. + + + + Specifies the type of a plugin to create and attach to the + assembly's repository. The plugin type must implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Interface used to create plugins. + + + + Interface used to create a plugin. + + + Nicko Cadell + Gert Driesen + + + + Creates the plugin object. + + the new plugin instance + + + Create and return a new plugin instance. + + + + + + Initializes a new instance of the class + with the specified type. + + The type name of plugin to create. + + + Create the attribute with the plugin type specified. + + + Where possible use the constructor that takes a . + + + + + + Initializes a new instance of the class + with the specified type. + + The type of plugin to create. + + + Create the attribute with the plugin type specified. + + + + + + Creates the plugin object defined by this attribute. + + + + Creates the instance of the object as + specified by this attribute. + + + The plugin object. + + + + Returns a representation of the properties of this object. + + + + Overrides base class method to + return a representation of the properties of this object. + + + A representation of the properties of this object + + + + Gets or sets the type for the plugin. + + + The type for the plugin. + + + + The type for the plugin. + + + + + + Gets or sets the type name for the plugin. + + + The type name for the plugin. + + + + The type name for the plugin. + + + Where possible use the property instead. + + + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + + + + Construct provider attribute with type specified + + the type of the provider to use + + + The provider specified must subclass the + class. + + + + + + Configures the SecurityContextProvider + + The assembly that this attribute was defined on. + The repository to configure. + + + Creates a provider instance from the specified. + Sets this as the default security context provider . + + + + + + Gets or sets the type of the provider to use. + + + the type of the provider to use. + + + + The provider specified must subclass the + class. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + The repository to configure. + + + + Configures log4net using a log4net element + + + + Loads the log4net configuration from the XML element + supplied as . + + + The element to parse. + + + + Configures the using the specified XML + element. + + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration URI. + + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The must support the URI scheme specified. + + + + + + Configures log4net using the specified configuration data stream. + + A stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + URI. + + The repository to configure. + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The must support the URI scheme specified. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the specified repository using a log4net element. + + The hierarchy to configure. + The element to parse. + + + Loads the log4net configuration from the XML element + supplied as . + + + This method is ultimately called by one of the Configure methods + to load the configuration from an . + + + + + + Class used to watch config files. + + + + Uses the to monitor + changes to a specified file. Because multiple change notifications + may be raised when the file is modified, a timer is used to + compress the notifications into a single event. The timer + waits for time before delivering + the event notification. If any further + change notifications arrive while the timer is waiting it + is reset and waits again for to + elapse. + + + + + + The default amount of time to wait after receiving notification + before reloading the config file. + + + + + Watch a specified config file used to configure a repository + + The repository to configure. + The configuration file to watch. + + + Watch a specified config file used to configure a repository + + + + + + Holds the FileInfo used to configure the XmlConfigurator + + + + + Holds the repository being configured. + + + + + The timer used to compress the notification events. + + + + + Initializes a new instance of the class. + + The repository to configure. + The configuration file to watch. + + + Initializes a new instance of the class. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Called by the timer when the configuration has been updated. + + null + + + + The implementation of the interface suitable + for use with the compact framework + + + + This implementation is a simple + mapping between repository name and + object. + + + The .NET Compact Framework 1.0 does not support retrieving assembly + level attributes therefore unlike the DefaultRepositorySelector + this selector does not examine the calling assembly for attributes. + + + Nicko Cadell + + + + Interface used by the to select the . + + + + The uses a + to specify the policy for selecting the correct + to return to the caller. + + + Nicko Cadell + Gert Driesen + + + + Gets the for the specified assembly. + + The assembly to use to lookup to the + The for the assembly. + + + Gets the for the specified assembly. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. The results of this method must be repeatable, i.e. + when called again with the same arguments the result must be the + save value. + + + + + + Gets the named . + + The name to use to lookup to the . + The named + + Lookup a named . This is the repository created by + calling . + + + + + Creates a new repository for the assembly specified. + + The assembly to use to create the domain to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the domain + specified such that a call to with the + same assembly specified will return the same repository instance. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. + + + + + + Creates a new repository with the name specified. + + The name to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the name + specified such that a call to with the + same name will return the same repository instance. + + + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets an array of all currently defined repositories. + + + An array of the instances created by + this . + + + Gets an array of all of the repositories created by this selector. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Create a new repository selector + + the type of the repositories to create, must implement + + + Create an new compact repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + throw if is null + throw if does not implement + + + + Get the for the specified assembly + + not used + The default + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Get the named + + the name of the repository to lookup + The named + + + Get the named . The default + repository is log4net-default-repository. Other repositories + must be created using the . + If the named repository does not exist an exception is thrown. + + + throw if is null + throw if the does not exist + + + + Create a new repository for the assembly specified + + not used + the type of repository to create, must implement + the repository created + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + If the is null then the + default repository type specified to the constructor is used. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Create a new repository for the repository specified + + the repository to associate with the + the type of repository to create, must implement . + If this param is null then the default repository type is used. + the repository created + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + If the named repository already exists an exception will be thrown. + + + If is null then the default + repository type specified to the constructor is used. + + + throw if is null + throw if the already exists + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Notify the registered listeners that the repository has been created + + The repository that has been created + + + Raises the LoggerRepositoryCreatedEvent + event. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + The default implementation of the interface. + + + + Uses attributes defined on the calling assembly to determine how to + configure the hierarchy for the repository. + + + Nicko Cadell + Gert Driesen + + + + Creates a new repository selector. + + The type of the repositories to create, must implement + + + Create an new repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + is . + does not implement . + + + + Gets the for the specified assembly. + + The assembly use to lookup the . + + + The type of the created and the repository + to create can be overridden by specifying the + attribute on the . + + + The default values are to use the + implementation of the interface and to use the + as the name of the repository. + + + The created will be automatically configured using + any attributes defined on + the . + + + The for the assembly + is . + + + + Gets the for the specified repository. + + The repository to use to lookup the . + The for the specified repository. + + + Returns the named repository. If is null + a is thrown. If the repository + does not exist a is thrown. + + + Use to create a repository. + + + is . + does not exist. + + + + Create a new repository for the assembly specified + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the assembly specified. + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The name to assign to the created repository + Set to true to read and apply the assembly attributes + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the specified repository. + + The repository to associate with the . + The type of repository to create, must implement . + If this param is then the default repository type is used. + The new repository. + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + is . + already exists. + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Aliases a repository to an existing repository. + + The repository to alias. + The repository that the repository is aliased to. + + + The repository specified will be aliased to the repository when created. + The repository must not already exist. + + + When the repository is created it must utilize the same repository type as + the repository it is aliased to, otherwise the aliasing will fail. + + + + is . + -or- + is . + + + + + Notifies the registered listeners that the repository has been created. + + The repository that has been created. + + + Raises the event. + + + + + + Gets the repository name and repository type for the specified assembly. + + The assembly that has a . + in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. + in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. + is . + + + + Configures the repository using information from the assembly. + + The assembly containing + attributes which define the configuration for the repository. + The repository to configure. + + is . + -or- + is . + + + + + Loads the attribute defined plugins on the assembly. + + The assembly that contains the attributes. + The repository to add the plugins to. + + is . + -or- + is . + + + + + Loads the attribute defined aliases on the assembly. + + The assembly that contains the attributes. + The repository to alias to. + + is . + -or- + is . + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Defined error codes that can be passed to the method. + + + + Values passed to the method. + + + Nicko Cadell + + + + A general error + + + + + Error while writing output + + + + + Failed to flush file + + + + + Failed to close file + + + + + Unable to open output file + + + + + No layout specified + + + + + Failed to parse address + + + + + Appenders may delegate their error handling to an . + + + + Error handling is a particularly tedious to get right because by + definition errors are hard to predict and to reproduce. + + + Nicko Cadell + Gert Driesen + + + + Handles the error and information about the error condition is passed as + a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + The error code associated with the error. + + + Handles the error and information about the error condition is passed as + a parameter. + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + + + See . + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + + + See . + + + + + + Interface for objects that require fixing. + + + + Interface that indicates that the object requires fixing before it + can be taken outside the context of the appender's + method. + + + When objects that implement this interface are stored + in the context properties maps + and + are fixed + (see ) the + method will be called. + + + Nicko Cadell + + + + Get a portable version of this object + + the portable instance of this object + + + Get a portable instance object that represents the current + state of this object. The portable object can be stored + and logged from any thread with identical results. + + + + + + Interface that all loggers implement + + + + This interface supports logging events and testing if a level + is enabled for logging. + + + These methods will not throw exceptions. Note to implementor, ensure + that the implementation of these methods cannot allow an exception + to be thrown to the caller. + + + Nicko Cadell + Gert Driesen + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + the exception to log, including its stack trace. Pass null to not log an exception. + + + Generates a logging event for the specified using + the and . + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + + + + Gets the name of the logger. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Base interface for all wrappers + + + + Base interface for all wrappers. + + + All wrappers must implement this interface. + + + Nicko Cadell + + + + Get the implementation behind this wrapper object. + + + The object that in implementing this object. + + + + The object that in implementing this + object. The Logger object may not + be the same object as this object because of logger decorators. + This gets the actual underlying objects that is used to process + the log events. + + + + + + Delegate used to handle logger repository creation event notifications + + The which created the repository. + The event args + that holds the instance that has been created. + + + Delegate used to handle logger repository creation event notifications. + + + + + + Provides data for the event. + + + + A + event is raised every time a is created. + + + + + + The created + + + + + Construct instance using specified + + the that has been created + + + Construct instance using specified + + + + + + The that has been created + + + The that has been created + + + + The that has been created + + + + + + Test if an triggers an action + + + + Implementations of this interface allow certain appenders to decide + when to perform an appender specific action. + + + The action or behavior triggered is defined by the implementation. + + + Nicko Cadell + + + + Test if this event triggers the action + + The event to check + true if this event triggers the action, otherwise false + + + Return true if this event triggers the action + + + + + + Defines the default set of levels recognized by the system. + + + + Each has an associated . + + + Levels have a numeric that defines the relative + ordering between levels. Two Levels with the same + are deemed to be equivalent. + + + The levels that are recognized by log4net are set for each + and each repository can have different levels defined. The levels are stored + in the on the repository. Levels are + looked up by name from the . + + + When logging at level INFO the actual level used is not but + the value of LoggerRepository.LevelMap["INFO"]. The default value for this is + , but this can be changed by reconfiguring the level map. + + + Each level has a in addition to its . The + is the string that is written into the output log. By default + the display name is the same as the level name, but this can be used to alias levels + or to localize the log output. + + + Some of the predefined levels recognized by the system are: + + + + . + + + . + + + . + + + . + + + . + + + . + + + . + + + + Nicko Cadell + Gert Driesen + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + The display name for this level. This may be localized or otherwise different from the name + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Returns the representation of the current + . + + + A representation of the current . + + + + Returns the level . + + + + + + Compares levels. + + The object to compare against. + true if the objects are equal. + + + Compares the levels of instances, and + defers to base class if the target object is not a + instance. + + + + + + Returns a hash code + + A hash code for the current . + + + Returns a hash code suitable for use in hashing algorithms and data + structures like a hash table. + + + Returns the hash code of the level . + + + + + + Compares this instance to a specified object and returns an + indication of their relative values. + + A instance or to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the + values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + This instance is less than . + + + Zero + This instance is equal to . + + + Greater than zero + + This instance is greater than . + -or- + is . + + + + + + + must be an instance of + or ; otherwise, an exception is thrown. + + + is not a . + + + + Returns a value indicating whether a specified + is greater than another specified . + + A + A + + true if is greater than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than another specified . + + A + A + + true if is less than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is greater than or equal to another specified . + + A + A + + true if is greater than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than or equal to another specified . + + A + A + + true if is less than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have the same value. + + A or . + A or . + + true if the value of is the same as the + value of ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have different values. + + A or . + A or . + + true if the value of is different from + the value of ; otherwise, false. + + + + Compares two levels. + + + + + + Compares two specified instances. + + The first to compare. + The second to compare. + + A 32-bit signed integer that indicates the relative order of the + two values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + is less than . + + + Zero + is equal to . + + + Greater than zero + is greater than . + + + + + + Compares two levels. + + + + + + The level designates a higher level than all the rest. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events + that will presumably lead the application to abort. + + + + + The level designates very severe error events. + Take immediate action, alerts. + + + + + The level designates very severe error events. + Critical condition, critical. + + + + + The level designates very severe error events. + + + + + The level designates error events that might + still allow the application to continue running. + + + + + The level designates potentially harmful + situations. + + + + + The level designates informational messages + that highlight the progress of the application at the highest level. + + + + + The level designates informational messages that + highlight the progress of the application at coarse-grained level. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates the lowest level possible. + + + + + Gets the name of this level. + + + The name of this level. + + + + Gets the name of this level. + + + + + + Gets the value of this level. + + + The value of this level. + + + + Gets the value of this level. + + + + + + Gets the display name of this level. + + + The display name of this level. + + + + Gets the display name of this level. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a LevelCollection instance. + + list to create a readonly wrapper arround + + A LevelCollection wrapper that is read-only. + + + + + Initializes a new instance of the LevelCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the LevelCollection class + that has the specified initial capacity. + + + The number of elements that the new LevelCollection is initially capable of storing. + + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified LevelCollection. + + The LevelCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + Copies the entire LevelCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire LevelCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the LevelCollection. + + The to be added to the end of the LevelCollection. + The index at which the value has been added. + + + + Removes all elements from the LevelCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the LevelCollection. + + The to check for. + true if is found in the LevelCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the LevelCollection. + + The to locate in the LevelCollection. + + The zero-based index of the first occurrence of + in the entire LevelCollection, if found; otherwise, -1. + + + + + Inserts an element into the LevelCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the LevelCollection. + + The to remove from the LevelCollection. + + The specified was not found in the LevelCollection. + + + + + Removes the element at the specified index of the LevelCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the LevelCollection. + + An for the entire LevelCollection. + + + + Adds the elements of another LevelCollection to the current LevelCollection. + + The LevelCollection whose elements should be added to the end of the current LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a array to the current LevelCollection. + + The array whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a collection to the current LevelCollection. + + The collection whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the LevelCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the LevelCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + A value + + + + + Supports simple iteration over a . + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + An evaluator that triggers at a threshold level + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + Nicko Cadell + + + + The threshold for triggering + + + + + Create a new evaluator using the threshold. + + + + Create a new evaluator using the threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Create a new evaluator using the specified threshold. + + the threshold to trigger at + + + Create a new evaluator using the specified threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the event level + is equal or higher than the . + Otherwise it returns false + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + the threshold to trigger at + + + The that will cause this evaluator to trigger + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Mapping between string name and Level object + + + + Mapping between string name and object. + This mapping is held separately for each . + The level name is case insensitive. + + + Nicko Cadell + + + + Mapping from level name to Level object. The + level name is case insensitive + + + + + Construct the level map + + + + Construct the level map. + + + + + + Clear the internal maps of all levels + + + + Clear the internal maps of all levels + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + + + Create a new Level and add it to the map + + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + the display name to give to the Level + + + Create a new Level and add it to the map + + + + + + Add a Level to the map + + the Level to add + + + Add a Level to the map + + + + + + Lookup a named level from the map + + the name of the level to lookup is taken from this level. + If the level is not set on the map then this level is added + the level in the map with the name specified + + + Lookup a named level from the map. The name of the level to lookup is taken + from the property of the + argument. + + + If no level with the specified name is found then the + argument is added to the level map + and returned. + + + + + + Lookup a by name + + The name of the Level to lookup + a Level from the map with the name specified + + + Returns the from the + map with the name specified. If the no level is + found then null is returned. + + + + + + Return all possible levels as a list of Level objects. + + all possible levels as a list of Level objects + + + Return all possible levels as a list of Level objects. + + + + + + The internal representation of caller location information. + + + + This class uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. + + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + Nicko Cadell + Gert Driesen + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + Constructor + + The declaring type of the method that is + the stack boundary into the logging system for this call. + + + Initializes a new instance of the + class based on the current thread. + + + + + + Constructor + + The fully qualified class name. + The method name. + The file name. + The line number of the method within the file. + + + Initializes a new instance of the + class with the specified data. + + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + Static manager that controls the creation of repositories + + + + Static manager that controls the creation of repositories + + + This class is used by the wrapper managers (e.g. ) + to provide access to the objects. + + + This manager also holds the that is used to + lookup and create repositories. The selector can be set either programmatically using + the property, or by setting the log4net.RepositorySelector + AppSetting in the applications config file to the fully qualified type name of the + selector to use. + + + Nicko Cadell + Gert Driesen + + + + Private constructor to prevent instances. Only static methods should be used. + + + + Private constructor to prevent instances. Only static methods should be used. + + + + + + Hook the shutdown event + + + + On the full .NET runtime, the static constructor hooks up the + AppDomain.ProcessExit and AppDomain.DomainUnload> events. + These are used to shutdown the log4net system as the application exits. + + + + + + Register for ProcessExit and DomainUnload events on the AppDomain + + + + This needs to be in a separate method because the events make + a LinkDemand for the ControlAppDomain SecurityPermission. Because + this is a LinkDemand it is demanded at JIT time. Therefore we cannot + catch the exception in the method itself, we have to catch it in the + caller. + + + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + Returns the default instance. + + + + + + Returns the named logger if it exists. + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified repository. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns the named logger if it exists. + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified assembly's repository. + + + + If the named logger exists (in the specified assembly's repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Retrieves or creates a named logger. + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Retrieves or creates a named logger. + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Shorthand for . + + The repository to lookup in. + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shorthand for . + + the assembly to use to lookup the repository + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The repository to shutdown. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The assembly to use to lookup the repository. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Resets all values contained in this repository instance to their defaults. + + The repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + The assembly to use to lookup the repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Gets an array of all currently defined repositories. + + An array of all the known objects. + + + Gets an array of all currently defined repositories. + + + + + + Internal method to get pertinent version info. + + A string of version info. + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Initialize the default repository selector + + + + + Gets or sets the repository selector used by the . + + + The repository selector used by the . + + + + The repository selector () is used by + the to create and select repositories + (). + + + The caller to supplies either a string name + or an assembly (if not supplied the assembly is inferred using + ). + + + This context is used by the selector to lookup a specific repository. + + + For the full .NET Framework, the default repository is DefaultRepositorySelector; + for the .NET Compact Framework CompactRepositorySelector is the default + repository. + + + + + + Implementation of the interface. + + + + This class should be used as the base for all wrapper implementations. + + + Nicko Cadell + Gert Driesen + + + + Constructs a new wrapper for the specified logger. + + The logger to wrap. + + + Constructs a new wrapper for the specified logger. + + + + + + The logger that this object is wrapping + + + + + Gets the implementation behind this wrapper object. + + + The object that this object is implementing. + + + + The Logger object may not be the same object as this object + because of logger decorators. + + + This gets the actual underlying objects that is used to process + the log events. + + + + + + Portable data structure used by + + + + Portable data structure used by + + + Nicko Cadell + + + + The logger name. + + + + The logger name. + + + + + + Level of logging event. + + + + Level of logging event. Level cannot be Serializable + because it is a flyweight. Due to its special serialization it + cannot be declared final either. + + + + + + The application supplied message. + + + + The application supplied message of logging event. + + + + + + The name of thread + + + + The name of thread in which this logging event was generated + + + + + + The time the event was logged + + + + The TimeStamp is stored in the local time zone for this computer. + + + + + + Location information for the caller. + + + + Location information for the caller. + + + + + + String representation of the user + + + + String representation of the user's windows name, + like DOMAIN\username + + + + + + String representation of the identity. + + + + String representation of the current thread's principal identity. + + + + + + The string representation of the exception + + + + The string representation of the exception + + + + + + String representation of the AppDomain. + + + + String representation of the AppDomain. + + + + + + Additional event specific properties + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + + + + Flags passed to the property + + + + Flags passed to the property + + + Nicko Cadell + + + + Fix the MDC + + + + + Fix the NDC + + + + + Fix the rendered message + + + + + Fix the thread name + + + + + Fix the callers location information + + + CAUTION: Very slow to generate + + + + + Fix the callers windows user name + + + CAUTION: Slow to generate + + + + + Fix the domain friendly name + + + + + Fix the callers principal name + + + CAUTION: May be slow to generate + + + + + Fix the exception text + + + + + Fix the event properties + + + + + No fields fixed + + + + + All fields fixed + + + + + Partial fields fixed + + + + This set of partial fields gives good performance. The following fields are fixed: + + + + + + + + + + + + + The internal representation of logging events. + + + + When an affirmative decision is made to log then a + instance is created. This instance + is passed around to the different log4net components. + + + This class is of concern to those wishing to extend log4net. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino + + + + The key into the Properties map for the host name value. + + + + + The key into the Properties map for the thread identity value. + + + + + The key into the Properties map for the user name value. + + + + + Initializes a new instance of the class + from the supplied parameters. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + The name of the logger of this event. + The level of this event. + The message of this event. + The exception for this event. + + + Except , and , + all fields of LoggingEvent are filled when actually needed. Call + to cache all data locally + to prevent inconsistencies. + + This method is called by the log4net framework + to create a logging event. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + The fields in the struct that have already been fixed. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + The parameter should be used to specify which fields in the + struct have been preset. Fields not specified in the + will be captured from the environment if requested or fixed. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Initializes a new instance of the class + using specific data. + + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Serialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Ensure that the repository is set. + + the value for the repository + + + + Write the rendered message to a TextWriter + + the writer to write the message to + + + Unlike the property this method + does store the message data in the internal cache. Therefore + if called only once this method should be faster than the + property, however if the message is + to be accessed multiple times then the property will be more efficient. + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + The data in this event must be fixed before it can be serialized. + + + The method must be called during the + method call if this event + is to be used outside that method. + + + + + + Gets the portable data for this . + + The for this event. + + + A new can be constructed using a + instance. + + + Does a fix of the data + in the logging event before returning the event data. + + + + + + Gets the portable data for this . + + The set of data to ensure is fixed in the LoggingEventData + The for this event. + + + A new can be constructed using a + instance. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Obsolete. Use instead. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Returns this event's exception's rendered using the + . + + + + + + Fix instance fields that hold volatile data. + + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + incurred by calling but it + is essential to maintaining data consistency. + + + Calling is equivalent to + calling passing the parameter + false. + + + See for more + information. + + + + + + Fixes instance fields that hold volatile data. + + Set to true to not fix data that takes a long time to fix. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + The param controls the data that + is fixed. Some of the data that can be fixed takes a long time to + generate, therefore if you do not require those settings to be fixed + they can be ignored by setting the param + to true. This setting will ignore the + and settings. + + + Set to false to ensure that all + settings are fixed. + + + + + + Fix the fields specified by the parameter + + the fields to fix + + + Only fields specified in the will be fixed. + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Lookup a composite property in this event + + the key for the property to lookup + the value for the property + + + This event has composite properties that combine together properties from + several different contexts in the following order: + + + this events properties + + This event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + + Get all the composite properties in this event + + the containing all the properties + + + See for details of the composite properties + stored by the event. + + + This method returns a single containing all the + properties defined for this event. + + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The fully qualified Type of the calling + logger class in the stack frame (i.e. the declaring type of the method). + + + + + The application supplied message of logging event. + + + + + The exception that was thrown. + + + This is not serialized. The string representation + is serialized instead. + + + + + The repository that generated the logging event + + + This is not serialized. + + + + + The fix state for this event + + + These flags indicate which fields have been fixed. + Not serialized. + + + + + Indicated that the internal cache is updateable (ie not fixed) + + + This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler + changes in the caching strategy. + + + + + Gets the time when the current process started. + + + This is the time when this process started. + + + + The TimeStamp is stored in the local time zone for this computer. + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the of the logging event. + + + The of the logging event. + + + + Gets the of the logging event. + + + + + + Gets the time of the logging event. + + + The time of the logging event. + + + + The TimeStamp is stored in the local time zone for this computer. + + + + + + Gets the name of the logger that logged the event. + + + The name of the logger that logged the event. + + + + Gets the name of the logger that logged the event. + + + + + + Gets the location information for this logging event. + + + The location information for this logging event. + + + + The collected information is cached for future use. + + + See the class for more information on + supported frameworks and the different behavior in Debug and + Release builds. + + + + + + Gets the message object used to initialize this event. + + + The message object used to initialize this event. + + + + Gets the message object used to initialize this event. + Note that this event may not have a valid message object. + If the event is serialized the message object will not + be transferred. To get the text of the message the + property must be used + not this property. + + + If there is no defined message object for this event then + null will be returned. + + + + + + Gets the exception object used to initialize this event. + + + The exception object used to initialize this event. + + + + Gets the exception object used to initialize this event. + Note that this event may not have a valid exception object. + If the event is serialized the exception object will not + be transferred. To get the text of the exception the + method must be used + not this property. + + + If there is no defined exception object for this event then + null will be returned. + + + + + + The that this event was created in. + + + + The that this event was created in. + + + + + + Gets the message, rendered through the . + + + The message rendered through the . + + + + The collected information is cached for future use. + + + + + + Gets the name of the current thread. + + + The name of the current thread, or the thread ID when + the name is not available. + + + + The collected information is cached for future use. + + + + + + Gets the name of the current user. + + + The name of the current user, or NOT AVAILABLE when the + underlying runtime has no support for retrieving the name of the + current user. + + + + Calls WindowsIdentity.GetCurrent().Name to get the name of + the current windows user. + + + To improve performance, we could cache the string representation of + the name, and reuse that as long as the identity stayed constant. + Once the identity changed, we would need to re-assign and re-render + the string. + + + However, the WindowsIdentity.GetCurrent() call seems to + return different objects every time, so the current implementation + doesn't do this type of caching. + + + Timing for these operations: + + + + Method + Results + + + WindowsIdentity.GetCurrent() + 10000 loops, 00:00:00.2031250 seconds + + + WindowsIdentity.GetCurrent().Name + 10000 loops, 00:00:08.0468750 seconds + + + + This means we could speed things up almost 40 times by caching the + value of the WindowsIdentity.GetCurrent().Name property, since + this takes (8.04-0.20) = 7.84375 seconds. + + + + + + Gets the identity of the current thread principal. + + + The string name of the identity of the current thread principal. + + + + Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get + the name of the current thread principal. + + + + + + Gets the AppDomain friendly name. + + + The AppDomain friendly name. + + + + Gets the AppDomain friendly name. + + + + + + Additional event specific properties. + + + Additional event specific properties. + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + This property is for events that have been added directly to + this event. The aggregate properties (which include these + event properties) can be retrieved using + and . + + + Once the properties have been fixed this property + returns the combined cached properties. This ensures that updates to + this property are always reflected in the underlying storage. When + returning the combined properties there may be more keys in the + Dictionary than expected. + + + + + + The fixed fields in this event + + + The set of fields that are fixed in this event + + + + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Implementation of wrapper interface. + + + + This implementation of the interface + forwards to the held by the base class. + + + This logger has methods to allow the caller to log at the following + levels: + + + + DEBUG + + The and methods log messages + at the DEBUG level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + INFO + + The and methods log messages + at the INFO level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + WARN + + The and methods log messages + at the WARN level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + ERROR + + The and methods log messages + at the ERROR level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + FATAL + + The and methods log messages + at the FATAL level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + + The values for these levels and their semantic meanings can be changed by + configuring the for the repository. + + + Nicko Cadell + Gert Driesen + + + + The ILog interface is use by application to log messages into + the log4net framework. + + + + Use the to obtain logger instances + that implement this interface. The + static method is used to get logger instances. + + + This class contains methods for logging at different levels and also + has properties for determining if those logging levels are + enabled in the current configuration. + + + This interface can be implemented in different ways. This documentation + specifies reasonable behavior that a caller can expect from the actual + implementation, however different implementations reserve the right to + do things differently. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + Log a message object with the level. + + Log a message object with the level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Logs a message object with the INFO level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + For some ILog interface log, when you write: + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, string construction and concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed (who isn't), then you should write: + + + if (log.IsDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in and once in + the . This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. This is the preferred style of logging. + + Alternatively if your logger is available statically then the is debug + enabled state can be stored in a static variable like this: + + + private static readonly bool isDebugEnabled = log.IsDebugEnabled; + + + Then when you come to log you can write: + + + if (isDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way the debug enabled state is only queried once + when the class is loaded. Using a private static readonly + variable is the most efficient because it is a run time constant + and can be heavily optimized by the JIT compiler. + + + Of course if you use a static readonly variable to + hold the enabled state of the logger then you cannot + change the enabled state at runtime to vary the logging + that is produced. You have to decide if you need absolute + speed or runtime flexibility. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Construct a new wrapper for the specified logger. + + The logger to wrap. + + + Construct a new wrapper for the specified logger. + + + + + + Virtual method called when the configuration of the repository changes + + the repository holding the levels + + + Virtual method called when the configuration of the repository changes + + + + + + Logs a message object with the DEBUG level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + DEBUG level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the DEBUG level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the DEBUG level including + the stack trace of the passed + as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + INFO level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the INFO level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the WARN level. + + the message object to log + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + WARN level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the WARN level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the WARN level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the ERROR level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + ERROR level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the ERROR level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the ERROR level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the FATAL level. + + The message object to log. + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + FATAL level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the FATAL level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the FATAL level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Event handler for the event + + the repository + Empty + + + + The fully qualified name of this declaring type not the type of any subclass. + + + + + Checks if this logger is enabled for the DEBUG + level. + + + true if this logger is enabled for DEBUG events, + false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + + For some log Logger object, when you write: + + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed, then you should write: + + + if (log.IsDebugEnabled()) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in IsDebugEnabled and once in + the Debug. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. + + + + + + Checks if this logger is enabled for the INFO level. + + + true if this logger is enabled for INFO events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the WARN level. + + + true if this logger is enabled for WARN events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the ERROR level. + + + true if this logger is enabled for ERROR events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + Checks if this logger is enabled for the FATAL level. + + + true if this logger is enabled for FATAL events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + A SecurityContext used by log4net when interacting with protected resources + + + + A SecurityContext used by log4net when interacting with protected resources + for example with operating system services. This can be used to impersonate + a principal that has been granted privileges on the system resources. + + + Nicko Cadell + + + + Impersonate this SecurityContext + + State supplied by the caller + An instance that will + revoke the impersonation of this SecurityContext, or null + + + Impersonate this security context. Further calls on the current + thread should now be made in the security context provided + by this object. When the result + method is called the security + context of the thread should be reverted to the state it was in + before was called. + + + + + + The providers default instances. + + + + A configured component that interacts with potentially protected system + resources uses a to provide the elevated + privileges required. If the object has + been not been explicitly provided to the component then the component + will request one from this . + + + By default the is + an instance of which returns only + objects. This is a reasonable default + where the privileges required are not know by the system. + + + This default behavior can be overridden by subclassing the + and overriding the method to return + the desired objects. The default provider + can be replaced by programmatically setting the value of the + property. + + + An alternative is to use the log4net.Config.SecurityContextProviderAttribute + This attribute can be applied to an assembly in the same way as the + log4net.Config.XmlConfiguratorAttribute". The attribute takes + the type to use as the as an argument. + + + Nicko Cadell + + + + The default provider + + + + + Protected default constructor to allow subclassing + + + + Protected default constructor to allow subclassing + + + + + + Create a SecurityContext for a consumer + + The consumer requesting the SecurityContext + An impersonation context + + + The default implementation is to return a . + + + Subclasses should override this method to provide their own + behavior. + + + + + + Gets or sets the default SecurityContextProvider + + + The default SecurityContextProvider + + + + The default provider is used by configured components that + require a and have not had one + given to them. + + + By default this is an instance of + that returns objects. + + + The default provider can be set programmatically by setting + the value of this property to a sub class of + that has the desired behavior. + + + + + + Delegate used to handle creation of new wrappers. + + The logger to wrap in a wrapper. + + + Delegate used to handle creation of new wrappers. This delegate + is called from the + method to construct the wrapper for the specified logger. + + + The delegate to use is supplied to the + constructor. + + + + + + Maps between logger objects and wrapper objects. + + + + This class maintains a mapping between objects and + objects. Use the method to + lookup the for the specified . + + + New wrapper instances are created by the + method. The default behavior is for this method to delegate construction + of the wrapper to the delegate supplied + to the constructor. This allows specialization of the behavior without + requiring subclassing of this type. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the + + The handler to use to create the wrapper objects. + + + Initializes a new instance of the class with + the specified handler to create the wrapper objects. + + + + + + Gets the wrapper object for the specified logger. + + The wrapper object for the specified logger + + + If the logger is null then the corresponding wrapper is null. + + + Looks up the wrapper it it has previously been requested and + returns it. If the wrapper has never been requested before then + the virtual method is + called. + + + + + + Creates the wrapper object for the specified logger. + + The logger to wrap in a wrapper. + The wrapper object for the logger. + + + This implementation uses the + passed to the constructor to create the wrapper. This method + can be overridden in a subclass. + + + + + + Called when a monitored repository shutdown event is received. + + The that is shutting down + + + This method is called when a that this + is holding loggers for has signaled its shutdown + event . The default + behavior of this method is to release the references to the loggers + and their wrappers generated for this repository. + + + + + + Event handler for repository shutdown event. + + The sender of the event. + The event args. + + + + Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings + + + + + The handler to use to create the extension wrapper objects. + + + + + Internal reference to the delegate used to register for repository shutdown events. + + + + + Gets the map of logger repositories. + + + Map of logger repositories. + + + + Gets the hashtable that is keyed on . The + values are hashtables keyed on with the + value being the corresponding . + + + + + + Formats a as "HH:mm:ss,fff". + + + + Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". + + + Nicko Cadell + Gert Driesen + + + + Render a as a string. + + + + Interface to abstract the rendering of a + instance into a string. + + + The method is used to render the + date to a text writer. + + + Nicko Cadell + Gert Driesen + + + + Formats the specified date as a string. + + The date to format. + The writer to write to. + + + Format the as a string and write it + to the provided. + + + + + + String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. + + + + + String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. + + + + + String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. + + + + + Renders the date into a string. Format is "HH:mm:ss". + + The date to render into a string. + The string builder to write to. + + + Subclasses should override this method to render the date + into a string using a precision up to the second. This method + will be called at most once per second and the result will be + reused if it is needed again during the same second. + + + + + + Renders the date into a string. Format is "HH:mm:ss,fff". + + The date to render into a string. + The writer to write to. + + + Uses the method to generate the + time string up to the seconds and then appends the current + milliseconds. The results from are + cached and is called at most once + per second. + + + Sub classes should override + rather than . + + + + + + Last stored time with precision up to the second. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Formats a as "dd MMM yyyy HH:mm:ss,fff" + + + + Formats a in the format + "dd MMM yyyy HH:mm:ss,fff" for example, + "06 Nov 1994 15:49:37,459". + + + Nicko Cadell + Gert Driesen + Angelika Schnagl + + + + Default constructor. + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" + for example, "06 Nov 1994 15:49:37". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + The format info for the invariant culture. + + + + + Formats the as "yyyy-MM-dd HH:mm:ss,fff". + + + + Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + Formats the using the method. + + + + Formats the using the method. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The format string. + + + Initializes a new instance of the class + with the specified format string. + + + The format string must be compatible with the options + that can be supplied to . + + + + + + Formats the date using . + + The date to convert to a string. + The writer to write to. + + + Uses the date format string supplied to the constructor to call + the method to format the date. + + + + + + The format string used to format the . + + + + The format string must be compatible with the options + that can be supplied to . + + + + + + This filter drops all . + + + + You can add this filter to the end of a filter chain to + switch from the default "accept all unless instructed otherwise" + filtering behavior to a "deny all unless instructed otherwise" + behavior. + + + Nicko Cadell + Gert Driesen + + + + Subclass this type to implement customized logging event filtering + + + + Users should extend this class to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface to provide customized logging event filtering + + + + Users should implement this interface to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Decide if the logging event should be logged through an appender. + + The LoggingEvent to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Points to the next filter in the filter chain. + + + + See for more information. + + + + + + Initialize the filter with the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Typically filter's options become active immediately on set, + however this method must still be called. + + + + + + Decide if the should be logged through an appender. + + The to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + This method is marked abstract and must be implemented + in a subclass. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Default constructor + + + + + Always returns the integer constant + + the LoggingEvent to filter + Always returns + + + Ignores the event being logged and just returns + . This can be used to change the default filter + chain behavior from to . This filter + should only be used as the last filter in the chain + as any further filters will be ignored! + + + + + + The return result from + + + + The return result from + + + + + + The log event must be dropped immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This filter is neutral with respect to the log event. + The remaining filters, if any, should be consulted for a final decision. + + + + + The log event must be logged immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This is a very simple filter based on matching. + + + + The filter admits two options and + . If there is an exact match between the value + of the option and the of the + , then the method returns in + case the option value is set + to true, if it is false then + is returned. If the does not match then + the result will be . + + + Nicko Cadell + Gert Driesen + + + + flag to indicate if the filter should on a match + + + + + the to match against + + + + + Default constructor + + + + + Tests if the of the logging event matches that of the filter + + the event to filter + see remarks + + + If the of the event matches the level of the + filter then the result of the function depends on the + value of . If it is true then + the function will return , it it is false then it + will return . If the does not match then + the result will be . + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + The level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + This is a simple filter based on matching. + + + + The filter admits three options and + that determine the range of priorities that are matched, and + . If there is a match between the range + of priorities and the of the , then the + method returns in case the + option value is set to true, if it is false + then is returned. If there is no match, is returned. + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when matching a + + + + + the minimum value to match + + + + + the maximum value to match + + + + + Default constructor + + + + + Check if the event should be logged. + + the logging event to check + see remarks + + + If the of the logging event is outside the range + matched by this filter then + is returned. If the is matched then the value of + is checked. If it is true then + is returned, otherwise + is returned. + + + + + + when matching and + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Set the minimum matched + + + + The minimum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Sets the maximum matched + + + + The maximum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a string in the event's logger name. + + + + The works very similar to the . It admits two + options and . If the + of the starts + with the value of the option, then the + method returns in + case the option value is set to true, + if it is false then is returned. + + + Daniel Cazzulino + + + + Flag to indicate the behavior when we have a match + + + + + The logger name string to substring match against the event + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the equals the beginning of + the incoming () + then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + This filter will attempt to match this value against logger name in + the following way. The match will be done against the beginning of the + logger name (using ). The match is + case sensitive. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a keyed string in the + + + + Simple filter to match a keyed string in the + + + As the MDC has been replaced with layered properties the + should be used instead. + + + Nicko Cadell + Gert Driesen + + + + Simple filter to match a string an event property + + + + Simple filter to match a string in the value for a + specific event property + + + Nicko Cadell + + + + Simple filter to match a string in the rendered message + + + + Simple filter to match a string in the rendered message + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when we have a match + + + + + The string to substring match against the message + + + + + A string regex to match + + + + + A regex object to match (generated from m_stringRegexToMatch) + + + + + Default constructor + + + + + Initialize and precompile the Regex if required + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the occurs as a substring within + the message then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching or + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Sets the static string to match + + + + The string that will be substring matched against + the rendered message. If the message contains this + string then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + Sets the regular expression to match + + + + The regular expression pattern that will be matched against + the rendered message. If the message matches this + pattern then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + The key to use to lookup the string from the event properties + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The event property for the is matched against + the . + If the occurs as a substring within + the property value then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + The key to lookup in the event properties and then match against. + + + + The key name to use to lookup in the properties map of the + . The match will be performed against + the value of this property if it exists. + + + + + + Simple filter to match a string in the + + + + Simple filter to match a string in the + + + As the MDC has been replaced with named stacks stored in the + properties collections the should + be used instead. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Sets the to "NDC". + + + + + + Write the event appdomain name to the output + + + + Writes the to the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + + Nicko Cadell + Gert Driesen + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Protected constructor + + + + Initializes a new instance of the class. + + + + + + Evaluate this pattern converter and write the output to a writer. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the appropriate way. + + + + + + Set the next pattern converter in the chains + + the pattern converter that should follow this converter in the chain + the next converter + + + The PatternConverter can merge with its neighbor during this method (or a sub class). + Therefore the return value may or may not be the value of the argument passed in. + + + + + + Write the pattern converter to the writer with appropriate formatting + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + This method calls to allow the subclass to perform + appropriate conversion of the pattern converter. If formatting options have + been specified via the then this method will + apply those formattings before writing the output. + + + + + + Fast space padding method. + + to which the spaces will be appended. + The number of spaces to be padded. + + + Fast space padding method. + + + + + + The option string to the converter + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an object to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the Object to a writer. If the specified + is not null then it is used to render the object to text, otherwise + the object's ToString method is called. + + + + + + Get the next pattern converter in the chain + + + the next pattern converter in the chain + + + + Get the next pattern converter in the chain + + + + + + Gets or sets the formatting info for this converter + + + The formatting info for this converter + + + + Gets or sets the formatting info for this converter + + + + + + Gets or sets the option value for this converter + + + The option for this converter + + + + Gets or sets the option value for this converter + + + + + + Initializes a new instance of the class. + + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + + Flag indicating if this converter handles exceptions + + + false if this converter handles exceptions + + + + + Flag indicating if this converter handles the logging event exception + + false if this converter handles the logging event exception + + + If this converter handles the exception object contained within + , then this property should be set to + false. Otherwise, if the layout ignores the exception + object, then the property should be set to true. + + + Set this value to override a this default setting. The default + value is true, this converter does not handle the exception. + + + + + + Write the event appdomain name to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output . + + + + + + Date pattern converter, uses a to format + the date of a . + + + + Render the to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter pattern based on the property. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert the pattern into the rendered message + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone. + + + + + + Write the exception text to the output + + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Nicko Cadell + + + + Default constructor + + + + + Write the exception text to the output + + that will receive the formatted result. + the event being logged + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + + Writes the caller location file name to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location file name to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Write the caller location info to the output + + + + Writes the to the output writer. + + + Nicko Cadell + + + + Write the caller location info to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Writes the event identity to the output + + + + Writes the value of the to + the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Writes the event identity to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the + to + the output . + + + + + + Write the event level to the output + + + + Writes the display name of the event + to the writer. + + + Nicko Cadell + + + + Write the event level to the output + + that will receive the formatted result. + the event being logged + + + Writes the of the + to the . + + + + + + Write the caller location line number to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location line number to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Converter for logger name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Converter to output and truncate '.' separated strings + + + + This abstract class supports truncating a '.' separated string + to show a specified number of elements from the right hand side. + This is used to truncate class names that are fully qualified. + + + Subclasses should override the method to + return the fully qualified string. + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Get the fully qualified string data + + the event being logged + the fully qualified name + + + Overridden by subclasses to get the fully qualified name before the + precision is applied to it. + + + Return the fully qualified '.' (dot/period) separated string. + + + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + Render the to the precision + specified by the property. + + + + + Gets the fully qualified name of the logger + + the event being logged + The fully qualified logger name + + + Returns the of the . + + + + + + Writes the event message to the output + + + + Uses the method + to write out the event message. + + + Nicko Cadell + + + + Writes the event message to the output + + that will receive the formatted result. + the event being logged + + + Uses the method + to write out the event message. + + + + + + Write the method name to the output + + + + Writes the caller location to + the output. + + + Nicko Cadell + + + + Write the method name to the output + + that will receive the formatted result. + the event being logged + + + Writes the caller location to + the output. + + + + + + Converter to include event NDC + + + + Outputs the value of the event property named NDC. + + + The should be used instead. + + + Nicko Cadell + + + + Write the event NDC to the output + + that will receive the formatted result. + the event being logged + + + As the thread context stacks are now stored in named event properties + this converter simply looks up the value of the NDC property. + + + The should be used instead. + + + + + + Property pattern converter + + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + the event being logged + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Converter to output the relative time of the event + + + + Converter to output the time of the event relative to the start of the program. + + + Nicko Cadell + + + + Write the relative time to the output + + that will receive the formatted result. + the event being logged + + + Writes out the relative time of the event in milliseconds. + That is the number of milliseconds between the event + and the . + + + + + + Helper method to get the time difference between two DateTime objects + + start time (in the current local time zone) + end time (in the current local time zone) + the time difference in milliseconds + + + + Converter to include event thread name + + + + Writes the to the output. + + + Nicko Cadell + + + + Write the ThreadName to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the . + + + + + + Pattern converter for the class name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Gets the fully qualified name of the class + + the event being logged + The fully qualified type name for the caller location + + + Returns the of the . + + + + + + Converter to include event user name + + Douglas de la Torre + Nicko Cadell + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + + + Write the TimeStamp to the output + + + + Date pattern converter, uses a to format + the date of a . + + + Uses a to format the + in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the TimeStamp to the output + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone, this is converted + to Universal time before it is rendered. + + + + + + + A Layout that renders only the Exception text from the logging event + + + + A Layout that renders only the Exception text from the logging event. + + + This Layout should only be used with appenders that utilize multiple + layouts (e.g. ). + + + Nicko Cadell + Gert Driesen + + + + Extend this abstract class to create your own log layout format. + + + + This is the base implementation of the + interface. Most layout objects should extend this class. + + + + + + Subclasses must implement the + method. + + + Subclasses should set the in their default + constructor. + + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by layout objects + + + + An object is used to format a + as text. The method is called by an + appender to transform the into a string. + + + The layout can also supply and + text that is appender before any events and after all the events respectively. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text and output to a writer. + + + If the caller does not have a and prefers the + event to be formatted as a then the following + code can be used to format the event into a . + + + StringWriter writer = new StringWriter(); + Layout.Format(writer, loggingEvent); + string formattedEvent = writer.ToString(); + + + + + + The content type output by this layout. + + The content type + + + The content type output by this layout. + + + This is a MIME type e.g. "text/plain". + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handle exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + + + + The header text + + + + See for more information. + + + + + + The footer text + + + + See for more information. + + + + + + Flag indicating if this layout handles exceptions + + + + false if this layout handles exceptions + + + + + + Empty default constructor + + + + Empty default constructor + + + + + + Activate component options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This method must be implemented by the subclass. + + + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text. + + + + + + The content type output by this layout. + + The content type is "text/plain" + + + The content type output by this layout. + + + This base class uses the value "text/plain". + To change this value a subclass must override this + property. + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handles exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + Set this value to override a this default setting. The default + value is true, this layout does not handle the exception. + + + + + + Default constructor + + + + Constructs a ExceptionLayout + + + + + + Activate component options + + + + Part of the component activation + framework. + + + This method does nothing as options become effective immediately. + + + + + + Gets the exception text from the logging event + + The TextWriter to write the formatted event to + the event being logged + + + Write the exception string to the . + The exception string is retrieved from . + + + + + + Interface for raw layout objects + + + + Interface used to format a + to an object. + + + This interface should not be confused with the + interface. This interface is used in + only certain specialized situations where a raw object is + required rather than a formatted string. The + is not generally useful than this interface. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The event to format + returns the formatted event + + + Implement this method to create your own layout format. + + + + + + Adapts any to a + + + + Where an is required this adapter + allows a to be specified. + + + Nicko Cadell + Gert Driesen + + + + The layout to adapt + + + + + Construct a new adapter + + the layout to adapt + + + Create the adapter for the specified . + + + + + + Format the logging event as an object. + + The event to format + returns the formatted event + + + Format the logging event as an object. + + + Uses the object supplied to + the constructor to perform the formatting. + + + + + + A flexible layout configurable with pattern string. + + + + The goal of this class is to a + as a string. The results + depend on the conversion pattern. + + + The conversion pattern is closely related to the conversion + pattern of the printf function in C. A conversion pattern is + composed of literal text and format control expressions called + conversion specifiers. + + + You are free to insert any literal text within the conversion + pattern. + + + Each conversion specifier starts with a percent sign (%) and is + followed by optional format modifiers and a conversion + pattern name. The conversion pattern name specifies the type of + data, e.g. logger, level, date, thread name. The format + modifiers control such things as field width, padding, left and + right justification. The following is a simple example. + + + Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume + that the log4net environment was set to use a PatternLayout. Then the + statements + + + ILog log = LogManager.GetLogger(typeof(TestApp)); + log.Debug("Message 1"); + log.Warn("Message 2"); + + would yield the output + + DEBUG [main]: Message 1 + WARN [main]: Message 2 + + + Note that there is no explicit separator between text and + conversion specifiers. The pattern parser knows when it has reached + the end of a conversion specifier when it reads a conversion + character. In the example above the conversion specifier + %-5level means the level of the logging event should be left + justified to a width of five characters. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + a + Equivalent to appdomain + + + appdomain + + Used to output the friendly name of the AppDomain where the + logging event was generated. + + + + c + Equivalent to logger + + + C + Equivalent to type + + + class + Equivalent to type + + + d + Equivalent to date + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + exception + + + Used to output the exception passed in with the log message. + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + F + Equivalent to file + + + file + + + Used to output the file name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + WARNING Generating caller information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + l + Equivalent to location + + + L + Equivalent to line + + + location + + + Used to output location information of the caller which generated + the logging event. + + + The location information depends on the CLI implementation but + usually consists of the fully qualified name of the calling + method followed by the callers source the file name and line + number between parentheses. + + + The location information can be very useful. However, its + generation is extremely slow. Its use should be avoided + unless execution speed is not an issue. + + + See the note below on the availability of caller location information. + + + + + level + + + Used to output the level of the logging event. + + + + + line + + + Used to output the line number from where the logging request + was issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + logger + + + Used to output the logger of the logging event. The + logger conversion specifier can be optionally followed by + precision specifier, that is a decimal constant in + brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the logger name will be + printed. By default the logger name is printed in full. + + + For example, for the logger name "a.b.c" the pattern + %logger{2} will output "b.c". + + + + + m + Equivalent to message + + + M + Equivalent to method + + + message + + + Used to output the application supplied message associated with + the logging event. + + + + + mdc + + + The MDC (old name for the ThreadContext.Properties) is now part of the + combined event properties. This pattern is supported for compatibility + but is equivalent to property. + + + + + method + + + Used to output the method name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + n + Equivalent to newline + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + ndc + + + Used to output the NDC (nested diagnostic context) associated + with the thread that generated the logging event. + + + + + p + Equivalent to level + + + P + Equivalent to property + + + properties + Equivalent to property + + + property + + + Used to output the an event specific property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are added to events by loggers or appenders. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the event properties + + The event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + r + Equivalent to timestamp + + + t + Equivalent to thread + + + timestamp + + + Used to output the number of milliseconds elapsed since the start + of the application until the creation of the logging event. + + + + + thread + + + Used to output the name of the thread that generated the + logging event. Uses the thread number if no name is available. + + + + + type + + + Used to output the fully qualified type name of the caller + issuing the logging request. This conversion specifier + can be optionally followed by precision specifier, that + is a decimal constant in brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the class name will be + printed. By default the class name is output in fully qualified form. + + + For example, for the class name "log4net.Layout.PatternLayout", the + pattern %type{1} will output "PatternLayout". + + + WARNING Generating the caller class information is + slow. Thus, its use should be avoided unless execution speed is + not an issue. + + + See the note below on the availability of caller location information. + + + + + u + Equivalent to identity + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + WARNING Generating caller WindowsIdentity information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + w + Equivalent to username + + + x + Equivalent to ndc + + + X + Equivalent to mdc + + + % + + + The sequence %% outputs a single percent sign. + + + + + + The single letter patterns are deprecated in favor of the + longer more descriptive pattern names. + + + By default the relevant information is output as is. However, + with the aid of format modifiers it is possible to change the + minimum field width, the maximum field width and justification. + + + The optional format modifier is placed between the percent sign + and the conversion pattern name. + + + The first optional format modifier is the left justification + flag which is just the minus (-) character. Then comes the + optional minimum field width modifier. This is a decimal + constant that represents the minimum number of characters to + output. If the data item requires fewer characters, it is padded on + either the left or the right until the minimum width is + reached. The default is to pad on the left (right justify) but you + can specify right padding with the left justification flag. The + padding character is space. If the data item is larger than the + minimum field width, the field is expanded to accommodate the + data. The value is never truncated. + + + This behavior can be changed using the maximum field + width modifier which is designated by a period followed by a + decimal constant. If the data item is longer than the maximum + field, then the extra characters are removed from the + beginning of the data item and not from the end. For + example, it the maximum field width is eight and the data item is + ten characters long, then the first two characters of the data item + are dropped. This behavior deviates from the printf function in C + where truncation is done from the end. + + + Below are various format modifier examples for the logger + conversion specifier. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none + + Left pad with spaces if the logger name is less than 20 + characters long. + +
%-20loggertrue20none + + Right pad with spaces if the logger + name is less than 20 characters long. + +
%.30loggerNAnone30 + + Truncate from the beginning if the logger + name is longer than 30 characters. + +
%20.30loggerfalse2030 + + Left pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
%-20.30loggertrue2030 + + Right pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
+
+ + Note about caller location information.
+ The following patterns %type %file %line %method %location %class %C %F %L %l %M + all generate caller location information. + Location information uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. +
+ + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + + Additional pattern converters may be registered with a specific + instance using the method. + +
+ + This is a more detailed pattern. + %timestamp [%thread] %level %logger %ndc - %message%newline + + + A similar pattern except that the relative time is + right padded if less than 6 digits, thread name is right padded if + less than 15 characters and truncated if longer and the logger + name is left padded if shorter than 30 characters and truncated if + longer. + %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino +
+ + + Default pattern string for log output. + + + + Default pattern string for log output. + Currently set to the string "%message%newline" + which just prints the application supplied message. + + + + + + A detailed conversion pattern + + + + A conversion pattern which includes Time, Thread, Logger, and Nested Context. + Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. + + + + + + Internal map of converter identifiers to converter types. + + + + This static map is overridden by the m_converterRegistry instance map + + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternLayout only + + + + + Initialize the global registry + + + + Defines the builtin global rules. + + + + + + Constructs a PatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + As per the contract the + method must be called after the properties on this object have been + configured. + + + + + + Constructs a PatternLayout using the supplied conversion pattern + + the pattern to use + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + When using this constructor the method + need not be called. This may not be the case when using a subclass. + + + + + + Create the pattern parser instance + + the pattern to parse + The that will format the event + + + Creates the used to parse the conversion string. Sets the + global and instance rules on the . + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string as specified by the conversion pattern. + + the event being logged + The TextWriter to write the formatted event to + + + Parse the using the patter format + specified in the property. + + + + + + Add a converter to this PatternLayout + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternLayout + + the name of the conversion pattern for this converter + the type of the converter + + + Add a named pattern converter to this instance. This + converter will be used in the formatting of the event. + This method must be called before . + + + The specified must extend the + type. + + + + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Wrapper class used to map converter names to converter types + + + + Pattern converter info class used during configuration to + pass to the + method. + + + + + + default constructor + + + + + Gets or sets the name of the conversion pattern + + + + The name of the pattern in the format string + + + + + + Gets or sets the type of the converter + + + + The value specified must extend the + type. + + + + + + Type converter for the interface + + + + Used to convert objects to the interface. + Supports converting from the interface to + the interface using the . + + + Nicko Cadell + Gert Driesen + + + + Interface supported by type converters + + + + This interface supports conversion from arbitrary types + to a single target type. See . + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Test if the can be converted to the + type supported by this converter. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Converts the to the type supported + by this converter. + + + + + + Can the sourceType be converted to an + + the source to be to be converted + true if the source type can be converted to + + + Test if the can be converted to a + . Only is supported + as the . + + + + + + Convert the value to a object + + the value to convert + the object + + + Convert the object to a + object. If the object + is a then the + is used to adapt between the two interfaces, otherwise an + exception is thrown. + + + + + + Extract the value of a property from the + + + + Extract the value of a property from the + + + Nicko Cadell + + + + Constructs a RawPropertyLayout + + + + + Lookup the property for + + The event to format + returns property value + + + Looks up and returns the object value of the property + named . If there is no property defined + with than name then null will be returned. + + + + + + The name of the value to lookup in the LoggingEvent Properties collection. + + + Value to lookup in the LoggingEvent Properties collection + + + + String name of the property to lookup in the . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in local time. To format the time stamp + in universal time use . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawUtcTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in universal time. To format the time stamp + in local time use . + + + + + + A very simple layout + + + + SimpleLayout consists of the level of the log statement, + followed by " - " and then the log message itself. For example, + + DEBUG - Hello world + + + + Nicko Cadell + Gert Driesen + + + + Constructs a SimpleLayout + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a simple formatted output. + + the event being logged + The TextWriter to write the formatted event to + + + Formats the event as the level of the even, + followed by " - " and then the log message itself. The + output is terminated by a newline. + + + + + + Layout that formats the log events as XML elements. + + + + The output of the consists of a series of + log4net:event elements. It does not output a complete well-formed XML + file. The output is designed to be included as an external entity + in a separate file to form a correct XML file. + + + For example, if abc is the name of the file where + the output goes, then a well-formed XML file would + be: + + + <?xml version="1.0" ?> + + <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> + + <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> + &data; + </log4net:events> + + + This approach enforces the independence of the + and the appender where it is embedded. + + + The version attribute helps components to correctly + interpret output generated by . The value of + this attribute should be "1.2" for release 1.2 and later. + + + Alternatively the Header and Footer properties can be + configured to output the correct XML header, open tag and close tag. + When setting the Header and Footer properties it is essential + that the underlying data store not be appendable otherwise the data + will become invalid XML. + + + Nicko Cadell + Gert Driesen + + + + Layout that formats the log events as XML elements. + + + + This is an abstract class that must be subclassed by an implementation + to conform to a specific schema. + + + Deriving classes must implement the method. + + + Nicko Cadell + Gert Driesen + + + + Protected constructor to support subclasses + + + + Initializes a new instance of the class + with no location info. + + + + + + Protected constructor to support subclasses + + + + The parameter determines whether + location information will be output by the layout. If + is set to true, then the + file name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string. + + The event being logged. + The TextWriter to write the formatted event to + + + Format the and write it to the . + + + This method creates an that writes to the + . The is passed + to the method. Subclasses should override the + method rather than this method. + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Subclasses should override this method to format + the as XML. + + + + + + Flag to indicate if location information should be included in + the XML events. + + + + + Writer adapter that ignores Close + + + + + The string to replace invalid chars with + + + + + Gets a value indicating whether to include location information in + the XML events. + + + true if location information should be included in the XML + events; otherwise, false. + + + + If is set to true, then the file + name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The string to replace characters that can not be expressed in XML with. + + + Not all characters may be expressed in XML. This property contains the + string to replace those that can not with. This defaults to a ?. Set it + to the empty string to simply remove offending characters. For more + details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets + Character replacement will occur in the log message, the property names + and the property values. + + + + + + + Gets the content type output by this layout. + + + As this is the XML layout, the value is always "text/xml". + + + + As this is the XML layout, the value is always "text/xml". + + + + + + Constructs an XmlLayout + + + + + Constructs an XmlLayout. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SmtpAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Builds a cache of the element names + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Override the base class method + to write the to the . + + + + + + The prefix to use for all generated element names + + + + + The prefix to use for all element names + + + + The default prefix is log4net. Set this property + to change the prefix. If the prefix is set to an empty string + then no prefix will be written. + + + + + + Set whether or not to base64 encode the message. + + + + By default the log message will be written as text to the xml + output. This can cause problems when the message contains binary + data. By setting this to true the contents of the message will be + base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the log message. + + + + + + Set whether or not to base64 encode the property values. + + + + By default the properties will be written as text to the xml + output. This can cause problems when one or more properties contain + binary data. By setting this to true the values of the properties + will be base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the property values. + + + + + + Layout that formats the log events as XML elements compatible with the log4j schema + + + + Formats the log events according to the http://logging.apache.org/log4j schema. + + + Nicko Cadell + + + + The 1st of January 1970 in UTC + + + + + Constructs an XMLLayoutSchemaLog4j + + + + + Constructs an XMLLayoutSchemaLog4j. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Actually do the writing of the xml + + the writer to use + the event to write + + + Generate XML that is compatible with the log4j schema. + + + + + + The version of the log4j schema to use. + + + + Only version 1.2 of the log4j schema is supported. + + + + + + The default object Renderer. + + + + The default renderer supports rendering objects and collections to strings. + + + See the method for details of the output. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface in order to render objects as strings + + + + Certain types require special case conversion to + string form. This conversion is done by an object renderer. + Object renderers implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a + string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + + + + Default constructor + + + + Default constructor + + + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + The default renderer supports rendering objects to strings as follows: + + + + Value + Rendered String + + + null + + "(null)" + + + + + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + , & + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: {a, b, c}. + + + All collection classes that implement its subclasses, + or generic equivalents all implement the interface. + + + + + + + + Rendered as the key, an equals sign ('='), and the value (using the appropriate + renderer). + + + For example: key=value. + + + + + other + + Object.ToString() + + + + + + + + Render the array argument into a string + + The map used to lookup renderers + the array to render + The writer to render to + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + + Render the enumerator argument into a string + + The map used to lookup renderers + the enumerator to render + The writer to render to + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + {a, b, c}. + + + + + + Render the DictionaryEntry argument into a string + + The map used to lookup renderers + the DictionaryEntry to render + The writer to render to + + + Render the key, an equals sign ('='), and the value (using the appropriate + renderer). For example: key=value. + + + + + + Map class objects to an . + + + + Maintains a mapping between types that require special + rendering and the that + is used to render them. + + + The method is used to render an + object using the appropriate renderers defined in this map. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Default constructor. + + + + + + Render using the appropriate renderer. + + the object to render to a string + the object rendered as a string + + + This is a convenience method used to render an object to a string. + The alternative method + should be used when streaming output to a . + + + + + + Render using the appropriate renderer. + + the object to render to a string + The writer to render to + + + Find the appropriate renderer for the type of the + parameter. This is accomplished by calling the + method. Once a renderer is found, it is + applied on the object and the result is returned + as a . + + + + + + Gets the renderer for the specified object type + + the object to lookup the renderer for + the renderer for + + + Gets the renderer for the specified object type. + + + Syntactic sugar method that calls + with the type of the object parameter. + + + + + + Gets the renderer for the specified type + + the type to lookup the renderer for + the renderer for the specified type + + + Returns the renderer for the specified type. + If no specific renderer has been defined the + will be returned. + + + + + + Internal function to recursively search interfaces + + the type to lookup the renderer for + the renderer for the specified type + + + + Clear the map of renderers + + + + Clear the custom renderers defined by using + . The + cannot be removed. + + + + + + Register an for . + + the type that will be rendered by + the renderer for + + + Register an object renderer for a specific source type. + This renderer will be returned from a call to + specifying the same as an argument. + + + + + + Get the default renderer instance + + the default renderer + + + Get the default renderer + + + + + + Interface implemented by logger repository plugins. + + + + Plugins define additional behavior that can be associated + with a . + The held by the + property is used to store the plugins for a repository. + + + The log4net.Config.PluginAttribute can be used to + attach plugins to repositories created using configuration + attributes. + + + Nicko Cadell + Gert Driesen + + + + Attaches the plugin to the specified . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + Gets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a PluginCollection instance. + + list to create a readonly wrapper arround + + A PluginCollection wrapper that is read-only. + + + + + Initializes a new instance of the PluginCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the PluginCollection class + that has the specified initial capacity. + + + The number of elements that the new PluginCollection is initially capable of storing. + + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified PluginCollection. + + The PluginCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire PluginCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire PluginCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the PluginCollection. + + The to be added to the end of the PluginCollection. + The index at which the value has been added. + + + + Removes all elements from the PluginCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the PluginCollection. + + The to check for. + true if is found in the PluginCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the PluginCollection. + + The to locate in the PluginCollection. + + The zero-based index of the first occurrence of + in the entire PluginCollection, if found; otherwise, -1. + + + + + Inserts an element into the PluginCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the PluginCollection. + + The to remove from the PluginCollection. + + The specified was not found in the PluginCollection. + + + + + Removes the element at the specified index of the PluginCollection. + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the PluginCollection. + + An for the entire PluginCollection. + + + + Adds the elements of another PluginCollection to the current PluginCollection. + + The PluginCollection whose elements should be added to the end of the current PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a array to the current PluginCollection. + + The array whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a collection to the current PluginCollection. + + The collection whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the PluginCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + true if access to the ICollection is synchronized (thread-safe); otherwise, false. + + + + Gets an object that can be used to synchronize access to the collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + + The at the specified index. + + The zero-based index of the element to get or set. + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false. + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false. + + + + Gets or sets the number of elements the PluginCollection can contain. + + + The number of elements the PluginCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + + + + Map of repository plugins. + + + + This class is a name keyed map of the plugins that are + attached to a repository. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The repository that the plugins should be attached to. + + + Initialize a new instance of the class with a + repository that the plugins should be attached to. + + + + + + Adds a to the map. + + The to add to the map. + + + The will be attached to the repository when added. + + + If there already exists a plugin with the same name + attached to the repository then the old plugin will + be and replaced with + the new plugin. + + + + + + Removes a from the map. + + The to remove from the map. + + + Remove a specific plugin from this map. + + + + + + Gets a by name. + + The name of the to lookup. + + The from the map with the name specified, or + null if no plugin is found. + + + + Lookup a plugin by name. If the plugin is not found null + will be returned. + + + + + + Gets all possible plugins as a list of objects. + + All possible plugins as a list of objects. + + + Get a collection of all the plugins defined in this map. + + + + + + Base implementation of + + + + Default abstract implementation of the + interface. This base class can be used by implementors + of the interface. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + the name of the plugin + + Initializes a new Plugin with the specified name. + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + The name of this plugin. + + + + + The repository this plugin is attached to. + + + + + Gets or sets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + The name of the plugin must not change one the + plugin has been attached to a repository. + + + + + + The repository for this plugin + + + The that this plugin is attached to. + + + + Gets or sets the that this plugin is + attached to. + + + + + + Plugin that listens for events from the + + + + This plugin publishes an instance of + on a specified . This listens for logging events delivered from + a remote . + + + When an event is received it is relogged within the attached repository + as if it had been raised locally. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + The property must be set. + + + + + + Construct with sink Uri. + + The name to publish the sink under in the remoting infrastructure. + See for more details. + + + Initializes a new instance of the class + with specified name. + + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + When the plugin is shutdown the remote logging + sink is disconnected. + + + + + + Gets or sets the URI of this sink. + + + The URI of this sink. + + + + This is the name under which the object is marshaled. + + + + + + + Delivers objects to a remote sink. + + + + Internal class used to listen for logging events + and deliver them to the local repository. + + + + + + Constructor + + The repository to log to. + + + Initializes a new instance of the for the + specified . + + + + + + Logs the events to the repository. + + The events to log. + + + The events passed are logged to the + + + + + + Obtains a lifetime service object to control the lifetime + policy for this instance. + + null to indicate that this instance should live forever. + + + Obtains a lifetime service object to control the lifetime + policy for this instance. This object should live forever + therefore this implementation returns null. + + + + + + The underlying that events should + be logged to. + + + + + Default implementation of + + + + This default implementation of the + interface is used to create the default subclass + of the object. + + + Nicko Cadell + Gert Driesen + + + + Interface abstracts creation of instances + + + + This interface is used by the to + create new objects. + + + The method is called + to create a named . + + + Implement this interface to create new subclasses of . + + + Nicko Cadell + Gert Driesen + + + + Create a new instance + + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Create a new instance + + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default internal subclass of + + + + This subclass has no additional behavior over the + class but does allow instances + to be created. + + + + + + Implementation of used by + + + + Internal class used to provide implementation of + interface. Applications should use to get + logger instances. + + + This is one of the central classes in the log4net implementation. One of the + distinctive features of log4net are hierarchical loggers and their + evaluation. The organizes the + instances into a rooted tree hierarchy. + + + The class is abstract. Only concrete subclasses of + can be created. The + is used to create instances of this type for the . + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + + + + This constructor created a new instance and + sets its name. + + The name of the . + + + This constructor is protected and designed to be used by + a subclass that is not abstract. + + + Loggers are constructed by + objects. See for the default + logger creator. + + + + + + Add to the list of appenders of this + Logger instance. + + An appender to add to this logger + + + Add to the list of appenders of this + Logger instance. + + + If is already in the list of + appenders, then it won't be added again. + + + + + + Look for the appender named as name + + The name of the appender to lookup + The appender with the name specified, or null. + + + Returns the named appender, or null if the appender is not found. + + + + + + Remove all previously added appenders from this Logger instance. + + + + Remove all previously added appenders from this Logger instance. + + + This is useful when re-reading configuration information. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The appender to remove + The appender removed from the list + + + Remove the appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The name of the appender to remove + The appender removed from the list + + + Remove the named appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the and . + + + This method must not throw any exception to the caller. + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + This method must not throw any exception to the caller. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + This method must not throw any exception to the caller. + + + + + + Deliver the to the attached appenders. + + The event to log. + + + Call the appenders in the hierarchy starting at + this. If no appenders could be found, emit a + warning. + + + This method calls all the appenders inherited from the + hierarchy circumventing any evaluation of whether to log or not + to log the particular log request. + + + + + + Closes all attached appenders implementing the interface. + + + + Used to ensure that the appenders are correctly shutdown. + + + + + + This is the most generic printing method. This generic form is intended to be used by wrappers + + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the . + + + + + + Creates a new logging event and logs the event without further checks. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generates a logging event and delivers it to the attached + appenders. + + + + + + Creates a new logging event and logs the event without further checks. + + The event being logged. + + + Delivers the logging event to the attached appenders. + + + + + + The fully qualified type of the Logger class. + + + + + The name of this logger. + + + + + The assigned level of this logger. + + + + The level variable need not be + assigned a value in which case it is inherited + form the hierarchy. + + + + + + The parent of this logger. + + + + The parent of this logger. + All loggers have at least one ancestor which is the root logger. + + + + + + Loggers need to know what Hierarchy they are in. + + + + Loggers need to know what Hierarchy they are in. + The hierarchy that this logger is a member of is stored + here. + + + + + + Helper implementation of the interface + + + + + Flag indicating if child loggers inherit their parents appenders + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl + + + + + Gets or sets the parent logger in the hierarchy. + + + The parent logger in the hierarchy. + + + + Part of the Composite pattern that makes the hierarchy. + The hierarchy is parent linked rather than child linked. + + + + + + Gets or sets a value indicating if child loggers inherit their parent's appenders. + + + true if child loggers inherit their parent's appenders. + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Gets the effective level for this logger. + + The nearest level in the logger hierarchy. + + + Starting from this logger, searches the logger hierarchy for a + non-null level and returns it. Otherwise, returns the level of the + root logger. + + The Logger class is designed so that this method executes as + quickly as possible. + + + + + Gets or sets the where this + Logger instance is attached to. + + The hierarchy that this logger belongs to. + + + This logger must be attached to a single . + + + + + + Gets or sets the assigned , if any, for this Logger. + + + The of this logger. + + + + The assigned can be null. + + + + + + Get the appenders contained in this logger as an + . + + A collection of the appenders in this logger + + + Get the appenders contained in this logger as an + . If no appenders + can be found, then a is returned. + + + + + + Gets the logger name. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Construct a new Logger + + the name of the logger + + + Initializes a new instance of the class + with the specified name. + + + + + + Delegate used to handle logger creation event notifications. + + The in which the has been created. + The event args that hold the instance that has been created. + + + Delegate used to handle logger creation event notifications. + + + + + + Provides data for the event. + + + + A event is raised every time a + is created. + + + + + + The created + + + + + Constructor + + The that has been created. + + + Initializes a new instance of the event argument + class,with the specified . + + + + + + Gets the that has been created. + + + The that has been created. + + + + The that has been created. + + + + + + Hierarchical organization of loggers + + + + The casual user should not have to deal with this class + directly. + + + This class is specialized in retrieving loggers by name and + also maintaining the logger hierarchy. Implements the + interface. + + + The structure of the logger hierarchy is maintained by the + method. The hierarchy is such that children + link to their parent but parents do not have any references to their + children. Moreover, loggers can be instantiated in any order, in + particular descendant before ancestor. + + + In case a descendant is created before a particular ancestor, + then it creates a provision node for the ancestor and adds itself + to the provision node. Other descendants of the same ancestor add + themselves to the previously created provision node. + + + Nicko Cadell + Gert Driesen + + + + Base implementation of + + + + Default abstract implementation of the interface. + + + Skeleton implementation of the interface. + All types can extend this type. + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by logger repositories. + + + + This interface is implemented by logger repositories. e.g. + . + + + This interface is used by the + to obtain interfaces. + + + Nicko Cadell + Gert Driesen + + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + The name of the logger to lookup + The Logger object with the name specified + + + If the names logger exists it is returned, otherwise + null is returned. + + + + + + Returns all the currently defined loggers as an Array. + + All the defined loggers + + + Returns all the currently defined loggers as an Array. + + + + + + Returns a named logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Returns a named logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + Shutdown the repository + + + Shutting down a repository will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The name of the repository + + + The name of the repository + + + + The name of the repository. + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + + These properties can be specified on a repository specific basis. + + + + + + Default Constructor + + + + Initializes the repository with default (empty) properties. + + + + + + Construct the repository using specific properties + + the properties to set for this repository + + + Initializes the repository with specified properties. + + + + + + Test if logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the repository + + All the defined loggers + + + Returns all the currently defined loggers in the repository as an Array. + + + + + + Return a new logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Return a new logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + + Shutdown the repository + + + + Shutdown the repository. Can be overridden in a subclass. + This base class implementation notifies the + listeners and all attached plugins of the shutdown event. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + Adds an object renderer for a specific class. + + The type that will be rendered by the renderer supplied. + The object renderer used to render the object. + + + Adds an object renderer for a specific class. + + + + + + Notify the registered listeners that the repository is shutting down + + Empty EventArgs + + + Notify any listeners that this repository is shutting down. + + + + + + Notify the registered listeners that the repository has had its configuration reset + + Empty EventArgs + + + Notify any listeners that this repository's configuration has been reset. + + + + + + Notify the registered listeners that the repository has had its configuration changed + + Empty EventArgs + + + Notify any listeners that this repository's configuration has changed. + + + + + + Raise a configuration changed event on this repository + + EventArgs.Empty + + + Applications that programmatically change the configuration of the repository should + raise this event notification to notify listeners. + + + + + + The name of the repository + + + The string name of the repository + + + + The name of this repository. The name is + used to store and lookup the repositories + stored by the . + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + These properties can be specified on a repository specific basis + + + + + Basic Configurator interface for repositories + + + + Interface used by basic configurator to configure a + with a default . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified appender + + the appender to use to log all logging events + + + Configure the repository to route all logging events to the + specified appender. + + + + + + Configure repository using XML + + + + Interface used by Xml configurator to configure a . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified config + + the element containing the root of the config + + + The schema for the XML configuration data is defined by + the implementation. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Construct with properties + + The properties to pass to this repository. + + + Initializes a new instance of the class. + + + + + + Construct with a logger factory + + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Construct with properties and a logger factory + + The properties to pass to this repository. + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Test if a logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the hierarchy. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the hierarchy as an Array + + All the defined loggers + + + Returns all the currently defined loggers in the hierarchy as an Array. + The root logger is not included in the returned + enumeration. + + + + + + Return a new logger instance named as the first parameter using + the default factory. + + + + Return a new logger instance named as the first parameter using + the default factory. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + The name of the logger to retrieve + The logger object with the name specified + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The Shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset all values contained in this hierarchy instance to their default. + + + + Reset all values contained in this hierarchy instance to their + default. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this hierarchy. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are currently configured + + An array containing all the currently configured appenders + + + Returns all the instances that are currently configured. + All the loggers are searched for appenders. The appenders may also be containers + for appenders and these are also searched for additional loggers. + + + The list returned is unordered but does not contain duplicates. + + + + + + Collect the appenders from an . + The appender may also be a container. + + + + + + + Collect the appenders from an container + + + + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Test if this hierarchy is disabled for the specified . + + The level to check against. + + true if the repository is disabled for the level argument, false otherwise. + + + + If this hierarchy has not been configured then this method will + always return true. + + + This method will return true if this repository is + disabled for level object passed as parameter and + false otherwise. + + + See also the property. + + + + + + Clear all logger definitions from the internal hashtable + + + + This call will clear all logger definitions from the internal + hashtable. Invoking this method will irrevocably mess up the + logger hierarchy. + + + You should really know what you are doing before + invoking this method. + + + + + + Return a new logger instance named as the first parameter using + . + + The name of the logger to retrieve + The factory that will make the new logger instance + The logger object with the name specified + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated by the + parameter and linked with its existing + ancestors as well as children. + + + + + + Sends a logger creation event to all registered listeners + + The newly created logger + + Raises the logger creation event. + + + + + Updates all the parents of the specified logger + + The logger to update the parents for + + + This method loops through all the potential parents of + . There 3 possible cases: + + + + No entry for the potential parent of exists + + We create a ProvisionNode for this potential + parent and insert in that provision node. + + + + The entry is of type Logger for the potential parent. + + The entry is 's nearest existing parent. We + update 's parent field with this entry. We also break from + he loop because updating our parent's parent is our parent's + responsibility. + + + + The entry is of type ProvisionNode for this potential parent. + + We add to the list of children for this + potential parent. + + + + + + + + Replace a with a in the hierarchy. + + + + + + We update the links for all the children that placed themselves + in the provision node 'pn'. The second argument 'log' is a + reference for the newly created Logger, parent of all the + children in 'pn'. + + + We loop on all the children 'c' in 'pn'. + + + If the child 'c' has been already linked to a child of + 'log' then there is no need to update 'c'. + + + Otherwise, we set log's parent field to c's parent and set + c's parent field to log. + + + + + + Define or redefine a Level using the values in the argument + + the level values + + + Define or redefine a Level using the values in the argument + + + Supports setting levels via the configuration file. + + + + + + Set a Property using the values in the argument + + the property value + + + Set a Property using the values in the argument. + + + Supports setting property values via the configuration file. + + + + + + Event used to notify that a logger has been created. + + + + Event raised when a logger is created. + + + + + + Has no appender warning been emitted + + + + Flag to indicate if we have already issued a warning + about not having an appender warning. + + + + + + Get the root of this hierarchy + + + + Get the root of this hierarchy. + + + + + + Gets or sets the default instance. + + The default + + + The logger factory is used to create logger instances. + + + + + + A class to hold the value, name and display name for a level + + + + A class to hold the value, name and display name for a level + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Value of the level + + + + If the value is not set (defaults to -1) the value will be looked + up for the current level with the same name. + + + + + + Name of the level + + + The name of the level + + + + The name of the level. + + + + + + Display name for the level + + + The display name of the level + + + + The display name of the level. + + + + + + A class to hold the key and data for a property set in the config file + + + + A class to hold the key and data for a property set in the config file + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Property Key + + + Property Key + + + + Property Key. + + + + + + Property Value + + + Property Value + + + + Property Value. + + + + + + Used internally to accelerate hash table searches. + + + + Internal class used to improve performance of + string keyed hashtables. + + + The hashcode of the string is cached for reuse. + The string is stored as an interned value. + When comparing two objects for equality + the reference equality of the interned strings is compared. + + + Nicko Cadell + Gert Driesen + + + + Construct key with string name + + + + Initializes a new instance of the class + with the specified name. + + + Stores the hashcode of the string and interns + the string key to optimize comparisons. + + + The Compact Framework 1.0 the + method does not work. On the Compact Framework + the string keys are not interned nor are they + compared by reference. + + + The name of the logger. + + + + Returns a hash code for the current instance. + + A hash code for the current instance. + + + Returns the cached hashcode. + + + + + + Determines whether two instances + are equal. + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + Compares the references of the interned strings. + + + + + + Provision nodes are used where no logger instance has been specified + + + + instances are used in the + when there is no specified + for that node. + + + A provision node holds a list of child loggers on behalf of + a logger that does not exist. + + + Nicko Cadell + Gert Driesen + + + + Create a new provision node with child node + + A child logger to add to this node. + + + Initializes a new instance of the class + with the specified child logger. + + + + + + The sits at the root of the logger hierarchy tree. + + + + The is a regular except + that it provides several guarantees. + + + First, it cannot be assigned a null + level. Second, since the root logger cannot have a parent, the + property always returns the value of the + level field without walking the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Construct a + + The level to assign to the root logger. + + + Initializes a new instance of the class with + the specified logging level. + + + The root logger names itself as "root". However, the root + logger cannot be retrieved by name. + + + + + + Gets the assigned level value without walking the logger hierarchy. + + The assigned level value without walking the logger hierarchy. + + + Because the root logger cannot have a parent and its level + must not be null this property just returns the + value of . + + + + + + Gets or sets the assigned for the root logger. + + + The of the root logger. + + + + Setting the level of the root logger to a null reference + may have catastrophic results. We prevent this here. + + + + + + Initializes the log4net environment using an XML DOM. + + + + Configures a using an XML DOM. + + + Nicko Cadell + Gert Driesen + + + + Construct the configurator for a hierarchy + + The hierarchy to build. + + + Initializes a new instance of the class + with the specified . + + + + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + The root element to parse. + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + + + + + Parse appenders by IDREF. + + The appender ref element. + The instance of the appender that the ref refers to. + + + Parse an XML element that represents an appender and return + the appender. + + + + + + Parses an appender element. + + The appender element. + The appender instance or null when parsing failed. + + + Parse an XML element that represents an appender and return + the appender instance. + + + + + + Parses a logger element. + + The logger element. + + + Parse an XML element that represents a logger. + + + + + + Parses the root logger element. + + The root element. + + + Parse an XML element that represents the root logger. + + + + + + Parses the children of a logger element. + + The category element. + The logger instance. + Flag to indicate if the logger is the root logger. + + + Parse the child elements of a <logger> element. + + + + + + Parses an object renderer. + + The renderer element. + + + Parse an XML element that represents a renderer. + + + + + + Parses a level element. + + The level element. + The logger object to set the level on. + Flag to indicate if the logger is the root logger. + + + Parse an XML element that represents a level. + + + + + + Sets a parameter on an object. + + The parameter element. + The object to set the parameter on. + + The parameter name must correspond to a writable property + on the object. The value of the parameter is a string, + therefore this function will attempt to set a string + property first. If unable to set a string property it + will inspect the property and its argument type. It will + attempt to call a static method called Parse on the + type of the property. This method will take a single + string argument and return a value that can be used to + set the property. + + + + + Test if an element has no attributes or child elements + + the element to inspect + true if the element has any attributes or child elements, false otherwise + + + + Test if a is constructible with Activator.CreateInstance. + + the type to inspect + true if the type is creatable using a default constructor, false otherwise + + + + Look for a method on the that matches the supplied + + the type that has the method + the name of the method + the method info found + + + The method must be a public instance method on the . + The method must be named or "Add" followed by . + The method must take a single parameter. + + + + + + Converts a string value to a target type. + + The type of object to convert the string to. + The string value to use as the value of the object. + + + An object of type with value or + null when the conversion could not be performed. + + + + + + Creates an object as specified in XML. + + The XML element that contains the definition of the object. + The object type to use if not explicitly specified. + The type that the returned object must be or must inherit from. + The object or null + + + Parse an XML element and create an object instance based on the configuration + data. + + + The type of the instance may be specified in the XML. If not + specified then the is used + as the type. However the type is specified it must support the + type. + + + + + + key: appenderName, value: appender. + + + + + The Hierarchy being configured. + + + + + Delegate used to handle logger repository shutdown event notifications + + The that is shutting down. + Empty event args + + + Delegate used to handle logger repository shutdown event notifications. + + + + + + Delegate used to handle logger repository configuration reset event notifications + + The that has had its configuration reset. + Empty event args + + + Delegate used to handle logger repository configuration reset event notifications. + + + + + + Delegate used to handle event notifications for logger repository configuration changes. + + The that has had its configuration changed. + Empty event arguments. + + + Delegate used to handle event notifications for logger repository configuration changes. + + + + + + Write the name of the current AppDomain to the output + + + + Write the name of the current AppDomain to the output writer + + + Nicko Cadell + + + + Write the name of the current AppDomain to the output + + the writer to write to + null, state is not set + + + Writes name of the current AppDomain to the output . + + + + + + Write the current date to the output + + + + Date pattern converter, uses a to format + the current date and time to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The date and time is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current date to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date and time passed is in the local time zone. + + + + + + Write an environment variable to the output + + + + Write an environment variable to the output writer. + The value of the determines + the name of the variable to output. + + + Nicko Cadell + + + + Write an environment variable to the output + + the writer to write to + null, state is not set + + + Writes the environment variable to the output . + The name of the environment variable to output must be set + using the + property. + + + + + + Write the current thread identity to the output + + + + Write the current thread identity to the output writer + + + Nicko Cadell + + + + Write the current thread identity to the output + + the writer to write to + null, state is not set + + + Writes the current thread identity to the output . + + + + + + Pattern converter for literal string instances in the pattern + + + + Writes the literal string value specified in the + property to + the output. + + + Nicko Cadell + + + + Set the next converter in the chain + + The next pattern converter in the chain + The next pattern converter + + + Special case the building of the pattern converter chain + for instances. Two adjacent + literals in the pattern can be represented by a single combined + pattern converter. This implementation detects when a + is added to the chain + after this converter and combines its value with this converter's + literal value. + + + + + + Write the literal to the output + + the writer to write to + null, not set + + + Override the formatting behavior to ignore the FormattingInfo + because we have a literal instead. + + + Writes the value of + to the output . + + + + + + Convert this pattern into the rendered message + + that will receive the formatted result. + null, not set + + + This method is not used. + + + + + + Writes a newline to the output + + + + Writes the system dependent line terminator to the output. + This behavior can be overridden by setting the : + + + + Option Value + Output + + + DOS + DOS or Windows line terminator "\r\n" + + + UNIX + UNIX line terminator "\n" + + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current process ID to the output + + + + Write the current process ID to the output writer + + + Nicko Cadell + + + + Write the current process ID to the output + + the writer to write to + null, state is not set + + + Write the current process ID to the output . + + + + + + Property pattern converter + + + + This pattern converter reads the thread and global properties. + The thread properties take priority over global properties. + See for details of the + thread properties. See for + details of the global properties. + + + If the is specified then that will be used to + lookup a single property. If no is specified + then all properties will be dumped as a list of key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + A Pattern converter that generates a string of random characters + + + + The converter generates a string of random characters. By default + the string is length 4. This can be changed by setting the + to the string value of the length required. + + + The random characters in the string are limited to uppercase letters + and numbers only. + + + The random number generator used by this class is not cryptographically secure. + + + Nicko Cadell + + + + Shared random number generator + + + + + Length of random string to generate. Default length 4. + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write a randoim string to the output + + the writer to write to + null, state is not set + + + Write a randoim string to the output . + + + + + + Write the current threads username to the output + + + + Write the current threads username to the output writer + + + Nicko Cadell + + + + Write the current threads username to the output + + the writer to write to + null, state is not set + + + Write the current threads username to the output . + + + + + + Write the UTC date time to the output + + + + Date pattern converter, uses a to format + the current date and time in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the current date and time to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date is in Universal time when it is rendered. + + + + + + + Type converter for Boolean. + + + + Supports conversion from string to bool type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Exception base type for conversion errors. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class + with the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + An instance of the . + + + Creates a new instance of the class. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + A nested exception to include. + An instance of the . + + + Creates a new instance of the class. + + + + + + Register of type converters for specific types. + + + + Maintains a registry of type converters used to convert between + types. + + + Use the and + methods to register new converters. + The and methods + lookup appropriate converters to use. + + + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + Initializes a new instance of the class. + + + + + Static constructor. + + + + This constructor defines the intrinsic type converters. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type converter to use to convert to the destination type. + + + Adds a converter instance for a specific type. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type of the type converter to use to convert to the destination type. + + + Adds a converter for a specific type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted from. + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Lookups the type converter to use as specified by the attributes on the + destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + + Creates the instance of the type converter. + + The type of the type converter. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + The type specified for the type converter must implement + the or interfaces + and must have a public default (no argument) constructor. + + + + + + Mapping from to type converter. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an encoding + the encoding + + + Uses the method to + convert the argument to an . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Interface supported by type converters + + + + This interface supports conversion from a single type to arbitrary types. + See . + + + Nicko Cadell + + + + Returns whether this converter can convert the object to the specified type + + A Type that represents the type you want to convert to + true if the conversion is possible + + + Test if the type supported by this converter can be converted to the + . + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Converts the (which must be of the type supported + by this converter) to the specified.. + + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an IPAddress + the IPAddress + + + Uses the method to convert the + argument to an . + If that fails then the string is resolved as a DNS hostname. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternLayout + the PatternLayout + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Convert between string and + + + + Supports conversion from string to type, + and from a type to a string. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the target type be converted to the type supported by this object + + A that represents the type you want to convert to + true if the conversion is possible + + + Returns true if the is + assignable from a type. + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + . To check for this condition use the + method. + + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternString + the PatternString + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a Type + the Type + + + Uses the method to convert the + argument to a . + Additional effort is made to locate partially specified types + by searching the loaded assemblies. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Attribute used to associate a type converter + + + + Class and Interface level attribute that specifies a type converter + to use with the associated type. + + + To associate a type converter with a target type apply a + TypeConverterAttribute to the target type. Specify the + type of the type converter on the attribute. + + + Nicko Cadell + Gert Driesen + + + + The string type name of the type converter + + + + + Default constructor + + + + Default constructor + + + + + + Create a new type converter attribute for the specified type name + + The string type name of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + Create a new type converter attribute for the specified type + + The type of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + The string type name of the type converter + + + The string type name of the type converter + + + + The type specified must implement the + or the interfaces. + + + + + + A straightforward implementation of the interface. + + + + This is the default implementation of the + interface. Implementors of the interface + should aggregate an instance of this type. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Append on on all attached appenders. + + The event being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Append on on all attached appenders. + + The array of events being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Calls the DoAppende method on the with + the objects supplied. + + The appender + The events + + + If the supports the + interface then the will be passed + through using that interface. Otherwise the + objects in the array will be passed one at a time. + + + + + + Attaches an appender. + + The appender to add. + + + If the appender is already in the list it won't be added again. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Lookup an attached appender by name. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + List of appenders + + + + + Array of appenders, used to cache the m_appenderList + + + + + Gets all attached appenders. + + + A collection of attached appenders, or null if there + are no attached appenders. + + + + The read only collection of all currently attached appenders. + + + + + + This class aggregates several PropertiesDictionary collections together. + + + + Provides a dictionary style lookup over an ordered list of + collections. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Add a Properties Dictionary to this composite collection + + the properties to add + + + Properties dictionaries added first take precedence over dictionaries added + later. + + + + + + Flatten this composite collection into a single properties dictionary + + the flattened dictionary + + + Reduces the collection of ordered dictionaries to a single dictionary + containing the resultant values for the keys. + + + + + + Gets the value of a property + + + The value for the property with the specified key + + + + Looks up the value for the specified. + The collections are searched + in the order in which they were added to this collection. The value + returned is the value held by the first collection that contains + the specified key. + + + If none of the collections contain the specified key then + null is returned. + + + + + + Base class for Context Properties implementations + + + + This class defines a basic property get set accessor + + + Nicko Cadell + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Subclass of that maintains a count of + the number of bytes written. + + + + This writer counts the number of bytes written. + + + Nicko Cadell + Gert Driesen + + + + that does not leak exceptions + + + + does not throw exceptions when things go wrong. + Instead, it delegates error handling to its . + + + Nicko Cadell + Gert Driesen + + + + Adapter that extends and forwards all + messages to an instance of . + + + + Adapter that extends and forwards all + messages to an instance of . + + + Nicko Cadell + + + + The writer to forward messages to + + + + + Create an instance of that forwards all + messages to a . + + The to forward to + + + Create an instance of that forwards all + messages to a . + + + + + + Closes the writer and releases any system resources associated with the writer + + + + + + + + + Dispose this writer + + flag indicating if we are being disposed + + + Dispose this writer + + + + + + Flushes any buffered output + + + + Clears all buffers for the writer and causes any buffered data to be written + to the underlying device + + + + + + Writes a character to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a character to the wrapped TextWriter + + + + + + Writes a character buffer to the wrapped TextWriter + + the data buffer + the start index + the number of characters to write + + + Writes a character buffer to the wrapped TextWriter + + + + + + Writes a string to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a string to the wrapped TextWriter + + + + + + Gets or sets the underlying . + + + The underlying . + + + + Gets or sets the underlying . + + + + + + The Encoding in which the output is written + + + The + + + + The Encoding in which the output is written + + + + + + Gets an object that controls formatting + + + The format provider + + + + Gets an object that controls formatting + + + + + + Gets or sets the line terminator string used by the TextWriter + + + The line terminator to use + + + + Gets or sets the line terminator string used by the TextWriter + + + + + + Constructor + + the writer to actually write to + the error handler to report error to + + + Create a new QuietTextWriter using a writer and error handler + + + + + + Writes a character to the underlying writer + + the char to write + + + Writes a character to the underlying writer + + + + + + Writes a buffer to the underlying writer + + the buffer to write + the start index to write from + the number of characters to write + + + Writes a buffer to the underlying writer + + + + + + Writes a string to the output. + + The string data to write to the output. + + + Writes a string to the output. + + + + + + Closes the underlying output writer. + + + + Closes the underlying output writer. + + + + + + The error handler instance to pass all errors to + + + + + Flag to indicate if this writer is closed + + + + + Gets or sets the error handler that all errors are passed to. + + + The error handler that all errors are passed to. + + + + Gets or sets the error handler that all errors are passed to. + + + + + + Gets a value indicating whether this writer is closed. + + + true if this writer is closed, otherwise false. + + + + Gets a value indicating whether this writer is closed. + + + + + + Constructor + + The to actually write to. + The to report errors to. + + + Creates a new instance of the class + with the specified and . + + + + + + Writes a character to the underlying writer and counts the number of bytes written. + + the char to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a buffer to the underlying writer and counts the number of bytes written. + + the buffer to write + the start index to write from + the number of characters to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a string to the output and counts the number of bytes written. + + The string data to write to the output. + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Total number of bytes written. + + + + + Gets or sets the total number of bytes written. + + + The total number of bytes written. + + + + Gets or sets the total number of bytes written. + + + + + + A fixed size rolling buffer of logging events. + + + + An array backed fixed size leaky bucket. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The maximum number of logging events in the buffer. + + + Initializes a new instance of the class with + the specified maximum number of buffered logging events. + + + The argument is not a positive integer. + + + + Appends a to the buffer. + + The event to append to the buffer. + The event discarded from the buffer, if the buffer is full, otherwise null. + + + Append an event to the buffer. If the buffer still contains free space then + null is returned. If the buffer is full then an event will be dropped + to make space for the new event, the event dropped is returned. + + + + + + Get and remove the oldest event in the buffer. + + The oldest logging event in the buffer + + + Gets the oldest (first) logging event in the buffer and removes it + from the buffer. + + + + + + Pops all the logging events from the buffer into an array. + + An array of all the logging events in the buffer. + + + Get all the events in the buffer and clear the buffer. + + + + + + Clear the buffer + + + + Clear the buffer of all events. The events in the buffer are lost. + + + + + + Gets the th oldest event currently in the buffer. + + The th oldest event currently in the buffer. + + + If is outside the range 0 to the number of events + currently in the buffer, then null is returned. + + + + + + Gets the maximum size of the buffer. + + The maximum size of the buffer. + + + Gets the maximum size of the buffer + + + + + + Gets the number of logging events in the buffer. + + The number of logging events in the buffer. + + + This number is guaranteed to be in the range 0 to + (inclusive). + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + The singleton instance of the empty collection. + + + + + Gets the singleton instance of the empty collection. + + The singleton instance of the empty collection. + + + Gets the singleton instance of the empty collection. + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Adds an element with the provided key and value to the + . + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + As the collection is empty no new values can be added. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Removes all elements from the . + + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Determines whether the contains an element + with the specified key. + + The key to locate in the . + false + + + As the collection is empty the method always returns false. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Removes the element with the specified key from the . + + The key of the element to remove. + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + The singleton instance of the empty dictionary. + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + Gets a value indicating whether the has a fixed size. + + true + + + As the collection is empty always returns true. + + + + + + Gets a value indicating whether the is read-only. + + true + + + As the collection is empty always returns true. + + + + + + Gets an containing the keys of the . + + An containing the keys of the . + + + As the collection is empty a is returned. + + + + + + Gets an containing the values of the . + + An containing the values of the . + + + As the collection is empty a is returned. + + + + + + Gets or sets the element with the specified key. + + The key of the element to get or set. + null + + + As the collection is empty no values can be looked up or stored. + If the index getter is called then null is returned. + A is thrown if the setter is called. + + + This dictionary is always empty and cannot be modified. + + + + Contain the information obtained when parsing formatting modifiers + in conversion modifiers. + + + + Holds the formatting information extracted from the format string by + the . This is used by the + objects when rendering the output. + + + Nicko Cadell + Gert Driesen + + + + Defaut Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + + + Initializes a new instance of the class + with the specified parameters. + + + + + + Gets or sets the minimum value. + + + The minimum value. + + + + Gets or sets the minimum value. + + + + + + Gets or sets the maximum value. + + + The maximum value. + + + + Gets or sets the maximum value. + + + + + + Gets or sets a flag indicating whether left align is enabled + or not. + + + A flag indicating whether left align is enabled or not. + + + + Gets or sets a flag indicating whether left align is enabled or not. + + + + + + Implementation of Properties collection for the + + + + This class implements a properties collection that is thread safe and supports both + storing properties and capturing a read only copy of the current propertied. + + + This class is optimized to the scenario where the properties are read frequently + and are modified infrequently. + + + Nicko Cadell + + + + The read only copy of the properties. + + + + This variable is declared volatile to prevent the compiler and JIT from + reordering reads and writes of this thread performed on different threads. + + + + + + Lock object used to synchronize updates within this instance + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property from the global context + + the key for the entry to remove + + + Removing an entry from the global context properties is relatively expensive compared + with reading a value. + + + + + + Clear the global context properties + + + + + Get a readonly immutable copy of the properties + + the current global context properties + + + This implementation is fast because the GlobalContextProperties class + stores a readonly copy of the properties. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Reading the value for a key is faster than setting the value. + When the value is written a new read only copy of + the properties is created. + + + + + + Manages a mapping from levels to + + + + Manages an ordered mapping from instances + to subclasses. + + + Nicko Cadell + + + + Default constructor + + + + Initialise a new instance of . + + + + + + Add a to this mapping + + the entry to add + + + If a has previously been added + for the same then that entry will be + overwritten. + + + + + + Lookup the mapping for the specified level + + the level to lookup + the for the level or null if no mapping found + + + Lookup the value for the specified level. Finds the nearest + mapping value for the level that is equal to or less than the + specified. + + + If no mapping could be found then null is returned. + + + + + + Initialize options + + + + Caches the sorted list of in an array + + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove the value for the specified from the context. + + + + + + Clear all the context properties + + + + Clear all the context properties + + + + + + Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doings so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Get or set the property value for the specified. + + + + + + Outputs log statements from within the log4net assembly. + + + + Log4net components cannot make log4net logging calls. However, it is + sometimes useful for the user to learn about what log4net is + doing. + + + All log4net internal debug calls go to the standard output stream + whereas internal error messages are sent to the standard error output + stream. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Static constructor that initializes logging by reading + settings from the application configuration file. + + + + The log4net.Internal.Debug application setting + controls internal debugging. This setting should be set + to true to enable debugging. + + + The log4net.Internal.Quiet application setting + suppresses all internal logging including error messages. + This setting should be set to true to enable message + suppression. + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The message to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The message to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The message to log. + An exception to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The message to log. + + + All internal error messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes output to the standard output stream. + + The message to log. + + + Writes to both Console.Out and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Writes output to the standard error stream. + + The message to log. + + + Writes to both Console.Error and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Default debug level + + + + + In quietMode not even errors generate any output. + + + + + Gets or sets a value indicating whether log4net internal logging + is enabled or disabled. + + + true if log4net internal logging is enabled, otherwise + false. + + + + When set to true, internal debug level logging will be + displayed. + + + This value can be set by setting the application setting + log4net.Internal.Debug in the application configuration + file. + + + The default value is false, i.e. debugging is + disabled. + + + + + The following example enables internal debugging using the + application configuration file : + + + + + + + + + + + + + Gets or sets a value indicating whether log4net should generate no output + from internal logging, not even for errors. + + + true if log4net should generate no output at all from internal + logging, otherwise false. + + + + When set to true will cause internal logging at all levels to be + suppressed. This means that no warning or error reports will be logged. + This option overrides the setting and + disables all debug also. + + This value can be set by setting the application setting + log4net.Internal.Quiet in the application configuration file. + + + The default value is false, i.e. internal logging is not + disabled. + + + + The following example disables internal logging using the + application configuration file : + + + + + + + + + + + + Test if LogLog.Debug is enabled for output. + + + true if Debug is enabled + + + + Test if LogLog.Debug is enabled for output. + + + + + + Test if LogLog.Warn is enabled for output. + + + true if Warn is enabled + + + + Test if LogLog.Warn is enabled for output. + + + + + + Test if LogLog.Error is enabled for output. + + + true if Error is enabled + + + + Test if LogLog.Error is enabled for output. + + + + + + Represents a native error code and message. + + + + Represents a Win32 platform native error. + + + Nicko Cadell + Gert Driesen + + + + Create an instance of the class with the specified + error number and message. + + The number of the native error. + The message of the native error. + + + Create an instance of the class with the specified + error number and message. + + + + + + Create a new instance of the class for the last Windows error. + + + An instance of the class for the last windows error. + + + + The message for the error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Create a new instance of the class. + + the error number for the native error + + An instance of the class for the specified + error number. + + + + The message for the specified error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Retrieves the message corresponding with a Win32 message identifier. + + Message identifier for the requested message. + + The message corresponding with the specified message identifier. + + + + The message will be searched for in system message-table resource(s) + using the native FormatMessage function. + + + + + + Return error information string + + error information string + + + Return error information string + + + + + + Formats a message string. + + Formatting options, and how to interpret the parameter. + Location of the message definition. + Message identifier for the requested message. + Language identifier for the requested message. + If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . + If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. + Pointer to an array of values that are used as insert values in the formatted message. + + + The function requires a message definition as input. The message definition can come from a + buffer passed into the function. It can come from a message table resource in an + already-loaded module. Or the caller can ask the function to search the system's message + table resource(s) for the message definition. The function finds the message definition + in a message table resource based on a message identifier and a language identifier. + The function copies the formatted message text to an output buffer, processing any embedded + insert sequences if requested. + + + To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. + + + + + If the function succeeds, the return value is the number of TCHARs stored in the output + buffer, excluding the terminating null character. + + + If the function fails, the return value is zero. To get extended error information, + call . + + + + + + Gets the number of the native error. + + + The number of the native error. + + + + Gets the number of the native error. + + + + + + Gets the message of the native error. + + + The message of the native error. + + + + + Gets the message of the native error. + + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance. + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current key from the enumerator. + + + Throws an exception because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current value from the enumerator. + + The current value from the enumerator. + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current entry from the enumerator. + + + Throws an because the + never has a current entry. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Get the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + A SecurityContext used when a SecurityContext is not required + + + + The is a no-op implementation of the + base class. It is used where a + is required but one has not been provided. + + + Nicko Cadell + + + + Singleton instance of + + + + Singleton instance of + + + + + + Private constructor + + + + Private constructor for singleton pattern. + + + + + + Impersonate this SecurityContext + + State supplied by the caller + null + + + No impersonation is done and null is always returned. + + + + + + Implements log4net's default error handling policy which consists + of emitting a message for the first error in an appender and + ignoring all subsequent errors. + + + + The error message is printed on the standard error output stream. + + + This policy aims at protecting an otherwise working application + from being flooded with error messages when logging fails. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + The prefix to use for each message. + + + Initializes a new instance of the class + with the specified prefix. + + + + + + Log an Error + + The error message. + The exception. + The internal error code. + + + Prints the message and the stack trace of the exception on the standard + error output stream. + + + + + + Log an Error + + The error message. + The exception. + + + Prints the message and the stack trace of the exception on the standard + error output stream. + + + + + + Log an error + + The error message. + + + Print a the error message passed as parameter on the standard + error output stream. + + + + + + Flag to indicate if it is the first error + + + + + String to prefix each message with + + + + + Is error logging enabled + + + + Is error logging enabled. Logging is only enabled for the + first error delivered to the . + + + + + + A convenience class to convert property values to specific types. + + + + Utility functions for converting types and parsing values. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Converts a string to a value. + + String to convert. + The default value. + The value of . + + + If is "true", then true is returned. + If is "false", then false is returned. + Otherwise, is returned. + + + + + + Parses a file size into a number. + + String to parse. + The default value. + The value of . + + + Parses a file size of the form: number[KB|MB|GB] into a + long value. It is scaled with the appropriate multiplier. + + + is returned when + cannot be converted to a value. + + + + + + Converts a string to an object. + + The target type to convert to. + The string to convert to an object. + + The object converted from a string or null when the + conversion failed. + + + + Converts a string to an object. Uses the converter registry to try + to convert the string value into the specified target type. + + + + + + Checks if there is an appropriate type conversion from the source type to the target type. + + The type to convert from. + The type to convert to. + true if there is a conversion from the source type to the target type. + + Checks if there is an appropriate type conversion from the source type to the target type. + + + + + + + Converts an object to the target type. + + The object to convert to the target type. + The type to convert to. + The converted object. + + + Converts an object to the target type. + + + + + + Instantiates an object given a class name. + + The fully qualified class name of the object to instantiate. + The class to which the new object should belong. + The object to return in case of non-fulfillment. + + An instance of the or + if the object could not be instantiated. + + + + Checks that the is a subclass of + . If that test fails or the object could + not be instantiated, then is returned. + + + + + + Performs variable substitution in string from the + values of keys found in . + + The string on which variable substitution is performed. + The dictionary to use to lookup variables. + The result of the substitutions. + + + The variable substitution delimiters are ${ and }. + + + For example, if props contains key=value, then the call + + + + string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); + + + + will set the variable s to "Value of key is value.". + + + If no value could be found for the specified key, then substitution + defaults to an empty string. + + + For example, if system properties contains no value for the key + "nonExistentKey", then the call + + + + string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); + + + + will set s to "Value of nonExistentKey is []". + + + An Exception is thrown if contains a start + delimiter "${" which is not balanced by a stop delimiter "}". + + + + + + Converts the string representation of the name or numeric value of one or + more enumerated constants to an equivalent enumerated object. + + The type to convert to. + The enum string value. + If true, ignore case; otherwise, regard case. + An object of type whose value is represented by . + + + + Most of the work of the class + is delegated to the PatternParser class. + + + + The PatternParser processes a pattern string and + returns a chain of objects. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The pattern to parse. + + + Initializes a new instance of the class + with the specified pattern string. + + + + + + Parses the pattern into a chain of pattern converters. + + The head of a chain of pattern converters. + + + Parses the pattern into a chain of pattern converters. + + + + + + Build the unified cache of converters from the static and instance maps + + the list of all the converter names + + + Build the unified cache of converters from the static and instance maps + + + + + + Internal method to parse the specified pattern to find specified matches + + the pattern to parse + the converter names to match in the pattern + + + The matches param must be sorted such that longer strings come before shorter ones. + + + + + + Process a parsed literal + + the literal text + + + + Process a parsed converter pattern + + the name of the converter + the optional option for the converter + the formatting info for the converter + + + + Resets the internal state of the parser and adds the specified pattern converter + to the chain. + + The pattern converter to add. + + + + The first pattern converter in the chain + + + + + the last pattern converter in the chain + + + + + The pattern + + + + + Internal map of converter identifiers to converter types + + + + This map overrides the static s_globalRulesRegistry map. + + + + + + Get the converter registry used by this parser + + + The converter registry used by this parser + + + + Get the converter registry used by this parser + + + + + + Sort strings by length + + + + that orders strings by string length. + The longest strings are placed first + + + + + + This class implements a patterned string. + + + + This string has embedded patterns that are resolved and expanded + when the string is formatted. + + + This class functions similarly to the + in that it accepts a pattern and renders it to a string. Unlike the + however the PatternString + does not render the properties of a specific but + of the process in general. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + appdomain + + + Used to output the friendly name of the current AppDomain. + + + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + env + + + Used to output the a specific environment variable. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %env{COMPUTERNAME} would include the value + of the COMPUTERNAME environment variable. + + + The env pattern is not supported on the .NET Compact Framework. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern name offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + processid + + + Used to output the system process ID for the current process. + + + + + property + + + Used to output a specific context property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are stored in logging contexts. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + random + + + Used to output a random string of characters. The string is made up of + uppercase letters and numbers. By default the string is 4 characters long. + The length of the string can be specified within braces directly following the + pattern specifier, e.g. %random{8} would output an 8 character string. + + + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + % + + + The sequence %% outputs a single percent sign. + + + + + + Additional pattern converters may be registered with a specific + instance using or + . + + + See the for details on the + format modifiers supported by the patterns. + + + Nicko Cadell + + + + Internal map of converter identifiers to converter types. + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternString only + + + + + Initialize the global registry + + + + + Default constructor + + + + Initialize a new instance of + + + + + + Constructs a PatternString + + The pattern to use with this PatternString + + + Initialize a new instance of with the pattern specified. + + + + + + Initialize object options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create the used to parse the pattern + + the pattern to parse + The + + + Returns PatternParser used to parse the conversion string. Subclasses + may override this to return a subclass of PatternParser which recognize + custom conversion pattern name. + + + + + + Produces a formatted string as specified by the conversion pattern. + + The TextWriter to write the formatted event to + + + Format the pattern to the . + + + + + + Format the pattern as a string + + the pattern formatted as a string + + + Format the pattern to a string. + + + + + + Add a converter to this PatternString + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternString + + the name of the conversion pattern for this converter + the type of the converter + + + Add a converter to this PatternString + + + + + + Gets or sets the pattern formatting string + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Wrapper class used to map converter names to converter types + + + + Wrapper class used to map converter names to converter types + + + + + + default constructor + + + + + Gets or sets the name of the conversion pattern + + + The name of the conversion pattern + + + + Gets or sets the name of the conversion pattern + + + + + + Gets or sets the type of the converter + + + The type of the converter + + + + Gets or sets the type of the converter + + + + + + String keyed object map. + + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + String keyed object map that is read only. + + + + This collection is readonly and cannot be modified. + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + The Hashtable used to store the properties data + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Copy Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Deserialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Gets the key names. + + An array of all the keys. + + + Gets the key names. + + + + + + Test if the dictionary contains a specified key + + the key to look for + true if the dictionary contains the specified key + + + Test if the dictionary contains a specified key + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + Serializes this object into the provided. + + + + + + See + + + + + See + + + + + + See + + + + + + + Remove all properties from the properties collection + + + + + See + + + + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + The hashtable used to store the properties + + + The internal collection used to store the properties + + + + The hashtable used to store the properties + + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + The number of properties in this collection + + + + + See + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Because this class is sealed the serialization constructor is private. + + + + + + Remove the entry with the specified key from this dictionary + + the key for the entry to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + an enumerator + + + Returns a over the contest of this collection. + + + + + + See + + the key to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + the key to lookup in the collection + true if the collection contains the specified key + + + Test if this collection contains a specified key. + + + + + + Remove all properties from the properties collection + + + + Remove all properties from the properties collection + + + + + + See + + the key + the value to store for the key + + + Store a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + See + + + false + + + + This collection is modifiable. This property always + returns false. + + + + + + See + + + The value for the key specified. + + + + Get or set a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + A that ignores the message + + + + This writer is used in special cases where it is necessary + to protect a writer from being closed by a client. + + + Nicko Cadell + + + + Constructor + + the writer to actually write to + + + Create a new ProtectCloseTextWriter using a writer + + + + + + Attach this instance to a different underlying + + the writer to attach to + + + Attach this instance to a different underlying + + + + + + Does not close the underlying output writer. + + + + Does not close the underlying output writer. + This method does nothing. + + + + + + Defines a lock that supports single writers and multiple readers + + + + ReaderWriterLock is used to synchronize access to a resource. + At any given time, it allows either concurrent read access for + multiple threads, or write access for a single thread. In a + situation where a resource is changed infrequently, a + ReaderWriterLock provides better throughput than a simple + one-at-a-time lock, such as . + + + If a platform does not support a System.Threading.ReaderWriterLock + implementation then all readers and writers are serialized. Therefore + the caller must not rely on multiple simultaneous readers. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Acquires a reader lock + + + + blocks if a different thread has the writer + lock, or if at least one thread is waiting for the writer lock. + + + + + + Decrements the lock count + + + + decrements the lock count. When the count + reaches zero, the lock is released. + + + + + + Acquires the writer lock + + + + This method blocks if another thread has a reader lock or writer lock. + + + + + + Decrements the lock count on the writer lock + + + + ReleaseWriterLock decrements the writer lock count. + When the count reaches zero, the writer lock is released. + + + + + + A that can be and reused + + + + A that can be and reused. + This uses a single buffer for string operations. + + + Nicko Cadell + + + + Create an instance of + + the format provider to use + + + Create an instance of + + + + + + Override Dispose to prevent closing of writer + + flag + + + Override Dispose to prevent closing of writer + + + + + + Reset this string writer so that it can be reused. + + the maximum buffer capacity before it is trimmed + the default size to make the buffer + + + Reset this string writer so that it can be reused. + The internal buffers are cleared and reset. + + + + + + Utility class for system specific information. + + + + Utility class of static methods for system specific information. + + + Nicko Cadell + Gert Driesen + Alexey Solofnenko + + + + Private constructor to prevent instances. + + + + Only static methods are exposed from this type. + + + + + + Initialize default values for private static fields. + + + + Only static methods are exposed from this type. + + + + + + Gets the assembly location path for the specified assembly. + + The assembly to get the location for. + The location of the assembly. + + + This method does not guarantee to return the correct path + to the assembly. If only tries to give an indication as to + where the assembly was loaded from. + + + + + + Gets the fully qualified name of the , including + the name of the assembly from which the was + loaded. + + The to get the fully qualified name for. + The fully qualified name for the . + + + This is equivalent to the Type.AssemblyQualifiedName property, + but this method works on the .NET Compact Framework 1.0 as well as + the full .NET runtime. + + + + + + Gets the short name of the . + + The to get the name for. + The short name of the . + + + The short name of the assembly is the + without the version, culture, or public key. i.e. it is just the + assembly's file name without the extension. + + + Use this rather than Assembly.GetName().Name because that + is not available on the Compact Framework. + + + Because of a FileIOPermission security demand we cannot do + the obvious Assembly.GetName().Name. We are allowed to get + the of the assembly so we + start from there and strip out just the assembly name. + + + + + + Gets the file name portion of the , including the extension. + + The to get the file name for. + The file name of the assembly. + + + Gets the file name portion of the , including the extension. + + + + + + Loads the type specified in the type string. + + A sibling type to use to load the type. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified, it will be loaded from the assembly + containing the specified relative type. If the type is not found in the assembly + then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the + assembly that is directly calling this method. If the type is not found + in the assembly then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + An assembly to load the type from. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the specified + assembly. If the type is not found in the assembly then all the loaded assemblies + will be searched for the type. + + + + + + Generate a new guid + + A new Guid + + + Generate a new guid + + + + + + Create an + + The name of the parameter that caused the exception + The value of the argument that causes this exception + The message that describes the error + the ArgumentOutOfRangeException object + + + Create a new instance of the class + with a specified error message, the parameter name, and the value + of the argument. + + + The Compact Framework does not support the 3 parameter constructor for the + type. This method provides an + implementation that works for all platforms. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Lookup an application setting + + the application settings key to lookup + the value for the key, or null + + + Configuration APIs are not supported under the Compact Framework + + + + + + Convert a path into a fully qualified local file path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + The path specified must be a local file path, a URI is not supported. + + + + + + Creates a new case-insensitive instance of the class with the default initial capacity. + + A new case-insensitive instance of the class with the default initial capacity + + + The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. + + + + + + Gets an empty array of types. + + + + The Type.EmptyTypes field is not available on + the .NET Compact Framework 1.0. + + + + + + Cache the host name for the current machine + + + + + Cache the application friendly name + + + + + Text to output when a null is encountered. + + + + + Text to output when an unsupported feature is requested. + + + + + Start time for the current process. + + + + + Gets the system dependent line terminator. + + + The system dependent line terminator. + + + + Gets the system dependent line terminator. + + + + + + Gets the base directory for this . + + The base directory path for the current . + + + Gets the base directory for this . + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the configuration file for the current . + + The path to the configuration file for the current . + + + The .NET Compact Framework 1.0 does not have a concept of a configuration + file. For this runtime, we use the entry assembly location as the root for + the configuration file name. + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the file that first executed in the current . + + The path to the entry assembly. + + + Gets the path to the file that first executed in the current . + + + + + + Gets the ID of the current thread. + + The ID of the current thread. + + + On the .NET framework, the AppDomain.GetCurrentThreadId method + is used to obtain the thread ID for the current thread. This is the + operating system ID for the thread. + + + On the .NET Compact Framework 1.0 it is not possible to get the + operating system thread ID for the current thread. The native method + GetCurrentThreadId is implemented inline in a header file + and cannot be called. + + + On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this + gives a stable id unrelated to the operating system thread ID which may + change if the runtime is using fibers. + + + + + + Get the host name or machine name for the current machine + + + The hostname or machine name + + + + Get the host name or machine name for the current machine + + + The host name () or + the machine name (Environment.MachineName) for + the current machine, or if neither of these are available + then NOT AVAILABLE is returned. + + + + + + Get this application's friendly name + + + The friendly name of this application as a string + + + + If available the name of the application is retrieved from + the AppDomain using AppDomain.CurrentDomain.FriendlyName. + + + Otherwise the file name of the entry assembly is used. + + + + + + Get the start time for the current process. + + + + This is the time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Text to output when a null is encountered. + + + + Use this value to indicate a null has been encountered while + outputting a string representation of an item. + + + The default value is (null). This value can be overridden by specifying + a value for the log4net.NullText appSetting in the application's + .config file. + + + + + + Text to output when an unsupported feature is requested. + + + + Use this value when an unsupported feature is requested. + + + The default value is NOT AVAILABLE. This value can be overridden by specifying + a value for the log4net.NotAvailableText appSetting in the application's + .config file. + + + + + + Utility class that represents a format string. + + + + Utility class that represents a format string. + + + Nicko Cadell + + + + Initialise the + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + + + Format the string and arguments + + the formatted string + + + + Replaces the format item in a specified with the text equivalent + of the value of a corresponding instance in a specified array. + A specified parameter supplies culture-specific formatting information. + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + A copy of format in which the format items have been replaced by the + equivalent of the corresponding instances of in args. + + + + This method does not throw exceptions. If an exception thrown while formatting the result the + exception and arguments are returned in the result string. + + + + + + Process an error during StringFormat + + + + + Dump the contents of an array into a string builder + + + + + Dump an object to a string + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + The thread local data slot to use to store a PropertiesDictionary. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove a property + + + + + + Clear all properties + + + + Clear all properties + + + + + + Get the PropertiesDictionary for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doing so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this tread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The ThreadContextStack internal stack + + + + + The depth to trim the stack to when this instance is disposed + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + Utility class for transforming strings. + + + + Utility class for transforming strings. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Write a string to an + + the writer to write to + the string to write + The string to replace non XML compliant chars with + + + The test is escaped either using XML escape entities + or using CDATA sections. + + + + + + Replace invalid XML characters in text string + + the XML text input string + the string to use in place of invalid characters + A string that does not contain invalid XML characters. + + + Certain Unicode code points are not allowed in the XML InfoSet, for + details see: http://www.w3.org/TR/REC-xml/#charsets. + + + This method replaces any illegal characters in the input string + with the mask string specified. + + + + + + Count the number of times that the substring occurs in the text + + the text to search + the substring to find + the number of times the substring occurs in the text + + + The substring is assumed to be non repeating within itself. + + + + + + Impersonate a Windows Account + + + + This impersonates a Windows account. + + + How the impersonation is done depends on the value of . + This allows the context to either impersonate a set of user credentials specified + using username, domain name and password or to revert to the process credentials. + + + + + + Default constructor + + + + Default constructor + + + + + + Initialize the SecurityContext based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The security context will try to Logon the specified user account and + capture a primary token for impersonation. + + + The required , + or properties were not specified. + + + + Impersonate the Windows account specified by the and properties. + + caller provided state + + An instance that will revoke the impersonation of this SecurityContext + + + + Depending on the property either + impersonate a user using credentials supplied or revert + to the process credentials. + + + + + + Create a given the userName, domainName and password. + + the user name + the domain name + the password + the for the account specified + + + Uses the Windows API call LogonUser to get a principal token for the account. This + token is used to initialize the WindowsIdentity. + + + + + + Gets or sets the impersonation mode for this security context + + + The impersonation mode for this security context + + + + Impersonate either a user with user credentials or + revert this thread to the credentials of the process. + The value is one of the + enum. + + + The default value is + + + When the mode is set to + the user's credentials are established using the + , and + values. + + + When the mode is set to + no other properties need to be set. If the calling thread is + impersonating then it will be reverted back to the process credentials. + + + + + + Gets or sets the Windows username for this security context + + + The Windows username for this security context + + + + This property must be set if + is set to (the default setting). + + + + + + Gets or sets the Windows domain name for this security context + + + The Windows domain name for this security context + + + + The default value for is the local machine name + taken from the property. + + + This property must be set if + is set to (the default setting). + + + + + + Sets the password for the Windows account specified by the and properties. + + + The password for the Windows account specified by the and properties. + + + + This property must be set if + is set to (the default setting). + + + + + + The impersonation modes for the + + + + See the property for + details. + + + + + + Impersonate a user using the credentials supplied + + + + + Revert this the thread to the credentials of the process + + + + + Adds to + + + + Helper class to expose the + through the interface. + + + + + + Constructor + + the impersonation context being wrapped + + + Constructor + + + + + + Revert the impersonation + + + + Revert the impersonation + + + + + + The log4net Global Context. + + + + The GlobalContext provides a location for global debugging + information to be stored. + + + The global context has a properties map and these properties can + be included in the output of log messages. The + supports selecting and outputing these properties. + + + By default the log4net:HostName property is set to the name of + the current machine. + + + + + GlobalContext.Properties["hostname"] = Environment.MachineName; + + + + Nicko Cadell + + + + Private Constructor. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + The global context properties instance + + + + + The global properties map. + + + The global properties map. + + + + The global properties map. + + + + + + The log4net Logical Thread Context. + + + + The LogicalThreadContext provides a location for specific debugging + information to be stored. + The LogicalThreadContext properties override any or + properties with the same name. + + + The Logical Thread Context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Logical Thread Context provides a diagnostic context for the current call context. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Logical Thread Context is managed on a per basis. + + + Example of using the thread context properties to store a username. + + LogicalThreadContext.Properties["user"] = userName; + log.Info("This log message has a LogicalThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) + { + log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The LogicalThreadContext properties override any + or properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The logical thread stacks. + + + + + + This class is used by client applications to request logger instances. + + + + This class has static methods that are used by a client to request + a logger instance. The method is + used to retrieve a logger. + + + See the interface for more details. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + Returns the named logger if it exists. + + Returns the named logger if it exists. + + + + If the named logger exists (in the default repository) then it + returns a reference to the logger, otherwise it returns null. + + + The fully qualified logger name to look for. + The logger found, or null if no logger could be found. + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the logger doesn't exist in the specified + repository. + + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the repository for the specified assembly) then it + returns a reference to the logger, otherwise it returns + null. + + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger, or null if the logger doesn't exist in the specified + assembly's repository. + + + + Get the currently defined loggers. + + Returns all the currently defined loggers in the default repository. + + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + + The root logger is not included in the returned array. + + All the defined loggers. + + + Get or create a logger. + + Retrieves or creates a named logger. + + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Get the logger for the fully qualified name of the type specified. + + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The repository to lookup in. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The assembly to use to lookup the repository. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + Shutdown a logger repository. + + Shuts down the default repository. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + default repository. + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The repository to shutdown. + + + + Shuts down the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The assembly to use to lookup the repository. + + + Reset the configuration of a repository + + Resets all values contained in this repository instance to their defaults. + + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The repository to reset. + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The assembly to use to lookup the repository to reset. + + + Get the logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Get a logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Create a domain + + Creates a repository with the specified repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + Create a logger repository. + + Creates a repository with the specified repository type. + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + + + + Creates a repository with the specified name. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name. + + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Creates a repository for the specified assembly and repository type. + + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Gets the list of currently defined repositories. + + + + Get an array of all the objects that have been created. + + + An array of all the known objects. + + + + Looks up the wrapper object for the logger specified. + + The logger to get the wrapper for. + The wrapper for the logger specified. + + + + Looks up the wrapper objects for the loggers specified. + + The loggers to get the wrappers for. + The wrapper objects for the loggers specified. + + + + Create the objects used by + this manager. + + The logger to wrap. + The wrapper for the logger specified. + + + + The wrapper map to use to hold the objects. + + + + + Implementation of Mapped Diagnostic Contexts. + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + The MDC class is similar to the class except that it is + based on a map instead of a stack. It provides mapped + diagnostic contexts. A Mapped Diagnostic Context, or + MDC in short, is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The MDC is managed on a per thread basis. + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Gets the context value identified by the parameter. + + The key to lookup in the MDC. + The string value held for the key, or a null reference if no corresponding value is found. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + If the parameter does not look up to a + previously defined context then null will be returned. + + + + + + Add an entry to the MDC + + The key to store the value under. + The value to store. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Puts a context value (the parameter) as identified + with the parameter into the current thread's + context map. + + + If a value is already defined for the + specified then the value will be replaced. If the + is specified as null then the key value mapping will be removed. + + + + + + Removes the key value mapping for the key specified. + + The key to remove. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove the specified entry from this thread's MDC + + + + + + Clear all entries in the MDC + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove all the entries from this thread's MDC + + + + + + Implementation of Nested Diagnostic Contexts. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + A Nested Diagnostic Context, or NDC in short, is an instrument + to distinguish interleaved log output from different sources. Log + output is typically interleaved when a server handles multiple + clients near-simultaneously. + + + Interleaved log output can still be meaningful if each log entry + from different contexts had a distinctive stamp. This is where NDCs + come into play. + + + Note that NDCs are managed on a per thread basis. The NDC class + is made up of static methods that operate on the context of the + calling thread. + + + How to push a message into the context + + using(NDC.Push("my context message")) + { + ... all log calls will have 'my context message' included ... + + } // at the end of the using block the message is automatically removed + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Clears all the contextual information held on the current thread. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Clears the stack of NDC data held on the current thread. + + + + + + Creates a clone of the stack of context information. + + A clone of the context info for this thread. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The results of this method can be passed to the + method to allow child threads to inherit the context of their + parent thread. + + + + + + Inherits the contextual information from another thread. + + The context stack to inherit. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This thread will use the context information from the stack + supplied. This can be used to initialize child threads with + the same contextual information as their parent threads. These + contexts will NOT be shared. Any further contexts that + are pushed onto the stack will not be visible to the other. + Call to obtain a stack to pass to + this method. + + + + + + Removes the top context from the stack. + + + The message in the context that was removed from the top + of the stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Remove the top context from the stack, and return + it to the caller. If the stack is empty then an + empty string (not null) is returned. + + + + + + Pushes a new context message. + + The new context message. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.NDC.Push("NDC_Message")) + { + log.Warn("This should have an NDC message"); + } + + + + + + Removes the context information for this thread. It is + not required to call this method. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This method is not implemented. + + + + + + Forces the stack depth to be at most . + + The maximum depth of the stack + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Forces the stack depth to be at most . + This may truncate the head of the stack. This only affects the + stack in the current thread. Also it does not prevent it from + growing, it only sets the maximum depth at the time of the + call. This can be used to return to a known context depth. + + + + + + Gets the current context depth. + + The current context depth. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The number of context values pushed onto the context stack. + + + Used to record the current depth of the context. This can then + be restored using the method. + + + + + + + The log4net Thread Context. + + + + The ThreadContext provides a location for thread specific debugging + information to be stored. + The ThreadContext properties override any + properties with the same name. + + + The thread context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Thread Context provides a diagnostic context for the current thread. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Thread Context is managed on a per thread basis. + + + Example of using the thread context properties to store a username. + + ThreadContext.Properties["user"] = userName; + log.Info("This log message has a ThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(ThreadContext.Stacks["NDC"].Push("my context message")) + { + log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The ThreadContext properties override any + properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The thread local stacks. + + + + + diff --git a/lib/NHibernate21/net/4.0/Antlr3.Runtime.dll b/lib/NHibernate21/net/4.0/Antlr3.Runtime.dll new file mode 100644 index 0000000000000000000000000000000000000000..637fc3e3b64b376fa5c5ed0f840a9e97ace112a8 GIT binary patch literal 116736 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 K|KI;P4g43mkr3tp literal 0 HcmV?d00001 diff --git a/lib/NHibernate21/net/4.0/Iesi.Collections.dll b/lib/NHibernate21/net/4.0/Iesi.Collections.dll new file mode 100644 index 0000000000000000000000000000000000000000..32f2332fcd31be56beb09add2167e324e91b971d GIT binary patch literal 32768 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 + + + Iesi.Collections + + + + +

DictionarySet is an abstract class that supports the creation of new Set + types where the underlying data store is an IDictionary instance.

+ +

You can use any object that implements the IDictionary interface to hold set data. + You can define your own, or you can use one of the objects provided in the Framework. + The type of IDictionary you choose will affect both the performance and the behavior + of the Set using it.

+ +

To make a Set typed based on your own IDictionary, simply derive a + new class with a constructor that takes no parameters. Some Set implmentations + cannot be defined with a default constructor. If this is the case for your class, + you will need to override Clone() as well.

+ +

It is also standard practice that at least one of your constructors takes an ICollection or + an ISet as an argument.

+
+
+ +

A collection that contains no duplicate elements. This class models the mathematical + Set abstraction, and is the base class for all other Set implementations. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + Operator + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + | + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + & + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + ^ + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + - + + +
+
+ + +

A collection that contains no duplicate elements. This interface models the mathematical + Set abstraction. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + + +
+
+ + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns if this set contains no elements. + + + + +

A collection that contains no duplicate elements. This interface models the mathematical + Set abstraction. + The order of elements in a set is dependant on (a)the data-structure implementation, and + (b)the implementation of the various Set methods, and thus is not guaranteed.

+ +

None of the Set implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a SynchronizedSet.

+ +

The following table summarizes the binary operators that are supported by the Set class.

+ + + Operation + Description + Method + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + + +
+
+ + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Removes all objects from the set. + + + + + Returns if this set contains no elements. + + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a Clone() of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a Clone() of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns a clone of the Set instance. This will work for derived Set + classes if the derived class implements a constructor that takes no arguments. + + A clone of this object. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Performs Union when called trhough non-generic ISet interface + + + + + + + Performs Minus when called trhough non-generic ISet interface + + + + + + + Performs Intersect when called trhough non-generic ISet interface + + + + + + + Performs ExclusiveOr when called trhough non-generic ISet interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements currently contained in this collection. + + + + + Returns if the Set is synchronized across threads. Note that + enumeration is inherently not thread-safe. Use the SyncRoot to lock the + object during enumeration. + + + + + An object that can be used to synchronize this collection to make it thread-safe. + When implementing this, if your object uses a base object, like an IDictionary, + or anything that has a SyncRoot, return that object instead of "this". + + + + + Indicates whether the given instance is read-only or not + + + if the ISet is read-only; otherwise, . + In the default implementation of Set, this property always returns false. + + + + + Provides the storage for elements in the Set, stored as the key-set + of the IDictionary object. Set this object in the constructor + if you create your own Set class. + + + + + Adds the specified element to this set if it is not already present. + + The to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array of T. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. Needed for + non-generic ISet methods implementation + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + The placeholder object used as the value for the IDictionary instance. + + + There is a single instance of this object globally, used for all Sets. + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + None of the objects based on DictionarySet are synchronized. Use the + SyncRoot property instead. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates wether the Set is read-only or not + + + + + Implements a Set based on a Dictionary (which is equivalent of + non-genric HashTable) This will give the best lookup, add, and remove + performance for very large data-sets, but iteration will occur in no particular order. + + + + + Creates a new set instance based on a Dictinary. + + + + + Creates a new set instance based on a Dictinary and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + +

Implements an immutable (read-only) Set wrapper.

+

Although this is advertised as immutable, it really isn't. Anyone with access to the + basisSet can still change the data-set. So GetHashCode() is not implemented + for this Set, as is the case for all Set implementations in this library. + This design decision was based on the efficiency of not having to Clone() the + basisSet every time you wrap a mutable Set.

+
+
+ + + Constructs an immutable (read-only) Set wrapper. + + The Set that is wrapped. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + nothing + is always thrown + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + nothing + is always thrown + + + + Removes all objects from the set. + + is always thrown + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + nothing + is always thrown + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + nothing + is always thrown + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + nothing + is always thrown + + + + Copies the elements in the Set to an array of T. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Performs Union when called trhough non-generic ISet interface + + + + + + + Performs Minus when called trhough non-generic ISet interface + + + + + + + Performs Intersect when called trhough non-generic ISet interface + + + + + + + Performs ExclusiveOr when called trhough non-generic ISet interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns an object that can be used to synchronize use of the Set across threads. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates that the given instance is read-only + + + + + Implements an ordered Set based on a dictionary. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + A collection of elements that defines the initial set contents. + + + + Implements a Set based on a sorted tree. This gives good performance for operations on very + large data-sets, though not as good - asymptotically - as a HashedSet. However, iteration + occurs in order. Elements that you put into this type of collection must implement IComparable, + and they must actually be comparable. You can't mix string and int values, for example. + + + + + Creates a new set instance based on a sorted tree. + + + + + Creates a new set instance based on a sorted tree. + + The to use for sorting. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + The to use for sorting. + + + +

Implements a thread-safe Set wrapper. The implementation is extremely conservative, + serializing critical sections to prevent possible deadlocks, and locking on everything. + The one exception is for enumeration, which is inherently not thread-safe. For this, you + have to lock the SyncRoot object for the duration of the enumeration.

+
+
+ + + Constructs a thread-safe Set wrapper. + + The Set object that this object will wrap. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Enumeration is, by definition, not thread-safe. Use a lock on the SyncRoot + to synchronize the entire enumeration process. + + + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs CopyTo when called trhough non-generic ISet (ICollection) interface + + + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns , indicating that this object is thread-safe. The exception to this + is enumeration, which is inherently not thread-safe. Use the SyncRoot object to + lock this object for the entire duration of the enumeration. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Indicates whether given instace is read-only or not + + + + +

DictionarySet is an abstract class that supports the creation of new Set + types where the underlying data store is an IDictionary instance.

+ +

You can use any object that implements the IDictionary interface to hold set data. + You can define your own, or you can use one of the objects provided in the Framework. + The type of IDictionary you choose will affect both the performance and the behavior + of the Set using it.

+ +

To make a Set typed based on your own IDictionary, simply derive a + new class with a constructor that takes no parameters. Some Set implmentations + cannot be defined with a default constructor. If this is the case for your class, + you will need to override Clone() as well.

+ +

It is also standard practice that at least one of your constructors takes an ICollection or + an ISet as an argument.

+
+
+ + A collection that contains no duplicate elements. + + + This class models the mathematical set abstraction, and is the base class for all + other set implementations. The order of elements in a set is dependant on + (a) the data-structure implementation, and (b) the implementation of the various + methods, and thus is not guaranteed. + + + None of the implementations in this library are guranteed to be thread-safe + in any way unless wrapped in a . + + + The following table summarizes the binary operators that are supported by the + type. + + + + Operation + Description + Method + Operator + + + Union (OR) + Element included in result if it exists in either A OR B. + Union() + | + + + Intersection (AND) + Element included in result if it exists in both A AND B. + InterSect() + & + + + Exclusive Or (XOR) + Element included in result if it exists in one, but not both, of A and B. + ExclusiveOr() + ^ + + + Minus (n/a) + Take all the elements in A. Now, if any of them exist in B, remove + them. Note that unlike the other operators, A - B is not the same as B - A. + Minus() + - + + + + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a clone of this set with the extra elements added in. + + A collection of elements. + A new instance containing the union of this instance with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a clone of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs a "union" of two sets, where all the elements + in both are present. That is, the element is included if it is in either a or b. + The return value is a clone of one of the sets (a if it is not ) with elements of the other set + added in. Neither of the input sets is modified by the operation. + + A set of elements. + A set of elements. + A set containing the union of the input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included only if it exists in + both a and b. Neither input object is modified by the operation. + The result object is a Clone() of one of the input objects (a if it is not ) containing the + elements from the intersect operation. + + A set of elements. + A set of elements. + The intersection of the two input sets. if both sets are . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of set a containing the elements from the operation. + + A set of elements. + A set of elements. + A set containing A - B elements. if a is . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a clone of one of the sets + (a if it is not ) containing + the elements from the exclusive-or operation. + + A set of elements. + A set of elements. + A set containing the result of a ^ b. if both sets are . + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Returns a clone of the set instance. This will work for derived set + classes if the derived class implements a constructor that takes no arguments. + + A clone of this object. + + + + Copies the elements in the set to an array. The type of array needs + to be compatible with the objects in the set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Returns an enumerator that iterates through the set. + + + An object that can be used to iterate through the set. + + + + + Returns if this set contains no elements. + + + + + The number of elements currently contained in this collection. + + + + + Returns if the set is synchronized across threads. Note that + enumeration is inherently not thread-safe. Use the to lock the + object during enumeration. + + + + + An object that can be used to synchronize this collection to make it thread-safe. + When implementing this, if your object uses a base object, like an , + or anything that has a , return that object instead + of . + + + + + Provides the storage for elements in the Set, stored as the key-set + of the IDictionary object. Set this object in the constructor + if you create your own Set class. + + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + The placeholder object used as the value for the IDictionary instance. + + + There is a single instance of this object globally, used for all Sets. + + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + None of the objects based on DictionarySet are synchronized. Use the + SyncRoot property instead. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Implements a Set based on a hash table. This will give the best lookup, add, and remove + performance for very large data-sets, but iteration will occur in no particular order. + + + + + Creates a new set instance based on a hash table. + + + + + Creates a new set instance based on a hash table and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Implements a Set that automatically changes from a list to a hash table + when the size reaches a certain threshold. This is good if you are unsure about + whether you data-set will be tiny or huge. Because this uses a dual implementation, + iteration order is not guaranteed! + + + + + Creates a new set instance based on either a list or a hash table, depending on which + will be more efficient based on the data-set size. + + + + + Creates a new set instance based on either a list or a hash table, depending on which + will be more efficient based on the data-set size, and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + +

Implements an immutable (read-only) Set wrapper.

+

Although this is advertised as immutable, it really isn't. Anyone with access to the + basisSet can still change the data-set. So GetHashCode() is not implemented + for this Set, as is the case for all Set implementations in this library. + This design decision was based on the efficiency of not having to Clone() the + basisSet every time you wrap a mutable Set.

+
+
+ + + Constructs an immutable (read-only) Set wrapper. + + The Set that is wrapped. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the Set to an array. The type of array needs + to be compatible with the objects in the Set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Gets an enumerator for the elements in the Set. + + An IEnumerator over the elements in the Set. + + + + Returns a clone of the Set instance. + + A clone of this object. + + + + Performs a "union" of the two sets, where all the elements + in both sets are present. That is, the element is included if it is in either a or b. + Neither this set nor the input set are modified during the operation. The return value + is a Clone() of this set with the extra elements added in. + + A collection of elements. + A new Set containing the union of this Set with the specified collection. + Neither of the input objects is modified by the union. + + + + Performs an "intersection" of the two sets, where only the elements + that are present in both sets remain. That is, the element is included if it exists in + both sets. The Intersect() operation does not modify the input sets. It returns + a Clone() of this set with the appropriate elements removed. + + A set of elements. + The intersection of this set with a. + + + + Performs a "minus" of set b from set a. This returns a set of all + the elements in set a, removing the elements that are also in set b. + The original sets are not modified during this operation. The result set is a Clone() + of this Set containing the elements from the operation. + + A set of elements. + A set containing the elements from this set with the elements in a removed. + + + + Performs an "exclusive-or" of the two sets, keeping only the elements that + are in one of the sets, but not in both. The original sets are not modified + during this operation. The result set is a Clone() of this set containing + the elements from the exclusive-or operation. + + A set of elements. + A set containing the result of a ^ b. + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns an object that can be used to synchronize use of the Set across threads. + + + + + Returns an object that can be used to synchronize the Set between threads. + + + + + Implements a Set based on a list. Performance is much better for very small lists + than either HashedSet or SortedSet. However, performance degrades rapidly as + the data-set gets bigger. Use a HybridSet instead if you are not sure your data-set + will always remain very small. Iteration produces elements in the order they were added. + However, element order is not guaranteed to be maintained by the various Set + mathematical operators. + + + + + Creates a new set instance based on a list. + + + + + Creates a new set instance based on a list and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Implements a set based on a sorted tree. This gives good performance for operations on very + large data-sets, though not as good - asymptotically - as a . + However, iteration occurs in order. Elements that you put into this type of collection must + implement , and they must actually be comparable. You can't mix + and values, for example. + + + + + Creates a new set instance based on a sorted tree. + + + + + Creates a new set instance based on a sorted tree. + + The to use for sorting. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + + + + Creates a new set instance based on a sorted tree and + initializes it based on a collection of elements. + + A collection of elements that defines the initial set contents. + The to use for sorting. + + + + Implements a thread-safe wrapper. + + + The implementation is extremely conservative, serializing critical sections + to prevent possible deadlocks, and locking on everything. The one exception + is for enumeration, which is inherently not thread-safe. For this, you have + to the object for the duration + of the enumeration. + + + + + Constructs a thread-safe wrapper. + + The object that this object will wrap. + + + + Adds the specified element to this set if it is not already present. + + The object to add to the set. + is the object was added, if it was already present. + + + + Adds all the elements in the specified collection to the set if they are not already present. + + A collection of objects to add to the set. + is the set changed as a result of this operation, if not. + + + + Removes all objects from the set. + + + + + Returns if this set contains the specified element. + + The element to look for. + if this set contains the specified element, otherwise. + + + + Returns if the set contains all the elements in the specified collection. + + A collection of objects. + if the set contains all the elements in the specified collection, otherwise. + + + + Removes the specified element from the set. + + The element to be removed. + if the set contained the specified element, otherwise. + + + + Remove all the specified elements from this set, if they exist in this set. + + A collection of elements to remove. + if the set was modified as a result of this operation. + + + + Retains only the elements in this set that are contained in the specified collection. + + Collection that defines the set of elements to be retained. + if this set changed as a result of this operation. + + + + Copies the elements in the set to an array. The type of array needs + to be compatible with the objects in the set, obviously. + + An array that will be the target of the copy operation. + The zero-based index where copying will start. + + + + Returns an enumerator that iterates through the set. + + + An object that can be used to iterate through the set. + + + Enumeration is, by definition, not thread-safe. Use a on the + to synchronize the entire enumeration process. + + + + + Returns a clone of this instance. + + A clone of this object. + + + + Returns if this set contains no elements. + + + + + The number of elements contained in this collection. + + + + + Returns , indicating that this object is thread-safe. The exception to this + is enumeration, which is inherently not thread-safe. Use the object to + lock this object for the entire duration of the enumeration. + + + + + Returns an object that can be used to synchronize the set between threads. + + +
+
diff --git a/lib/NHibernate21/net/4.0/LinFu.DynamicProxy.dll b/lib/NHibernate21/net/4.0/LinFu.DynamicProxy.dll new file mode 100644 index 0000000000000000000000000000000000000000..222252208bf79f91cbaf3cd75cb0bf5a609b8a11 GIT binary patch literal 20992 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 literal 0 HcmV?d00001 diff --git a/lib/NHibernate21/net/4.0/NHibernate.DomainModel.dll b/lib/NHibernate21/net/4.0/NHibernate.DomainModel.dll new file mode 100644 index 0000000000000000000000000000000000000000..aed3dd7c0322043c91e3d2f4c78bbdc52286fc3f GIT binary patch literal 180224 zcmeFa3w&HxaX)^wE3Kq;?AVSYB~FOf3Q0DyB)^i71UZQ%+p%L?c4Eh|1BtwnR@OR_ zuClxGGjhYLKuI9HAy5hiT1p>0S_(hfU!kQf?XNsS3vHn-KMH-&7TVGu<=@ga{J%4E z=G=4d-n%O~PRQ@`iy^Byb6#`i%$YN1&g1UB_c1T+d0sRA`_Yd)?-Te-|8C>o`acgN zddaF!F7bY~{qw6o(X{LHtM^ZoD!G}mf23TP%8eGLr~PVfq?jwuPUlL~xh;G4<)-|x zV&CG$+2@<0_ipvPT}^3k>fZL9TH80g)ape|ZJzg7%JXu9J@Wwre;R*@I>Ij%x&bl$ z^w*=-0RPQRX+XEVf&&N#e;FbK|67N0xnh*NotO~)_l=ZyK@>NiaL)740{gEG;q5l$ zd41L5i7LV`f0bz$wUy}%5+TdszH+5J3KY{uZKpKv#$V^(ZJu{qU%5ExBO%iYnmOHv zYtjuk*`5QR;0DpbAR`-jW1jD*ROu*=KDr} z^(9^3=s9zG>GyuIZQa1u)^Bd=9Qw^qU;c_GR(-DThp%n^)?fbpiRn)-z4HTSra${z zyT0@n_wV?tPwt+1MKEy643D+I8U|eYD8w~2*GK7){#s4X01(}ZVBl!#bT1Ip z@sNz{90df$oS z7%mNr>meFRUKjv^SxgA!HT43gU;ruBDS`nYFvuhY13+M)34(z@B2I782nLYy7DX@s z1Vm7>G62N&ieLbU7b=1QAZ}I!13=uQ2nK+-Q4tIP@d8CK0K^T7U;v2g6u|%x8x_F- zyus^QyqB2?E7dti$x>h~{X2A99>Y32M-(H9icICc0-e1ods!t%F;s2pk~tzLb?F?D znZodV?6x^-f)>+p+Z;79wQ6?-gE>1#97&ZSR5NqLK9o#Miww7HXLqI>ayft~ReW<4 z5EOSL1u4y-n}z~{;xrU=#`5Vck|#Y!K#GI@TS%W;O=^exR!T||#6ZydlHd)h(w0-3 zwo_@Wo#$>RFg>@8a)aOemr79t#dEO?V646$)vF@6L9kKuI+e`H890#2|9p@B)iT)=*Sup6XuKhTR9EU;lnFJjtIy~q@1{P!XYtH17BK* z6`OeU_r>V(3rPl6r{BLBe;1jkrIK~=@^q_Yy12W1k^~X6VfK{gT?V?L7+|SG#vm>} z^ncce&d>H{m#3b*n5b(*Jy7~t=E~^Y4T=Lr6|l> z=`G27mq7fRHv9yMvXn!L1!^?gJ<|LH>TJqihX9)yU=Xw>N9>M9K##JW((L&tIRiRd zdKa|9wZ(uYjqTJfOzX%|0l| z`rsoLJZT@30fu(Uhwjh%(CXRlF64w_ChQsL<81zml)2C8jlO`6?)y<7)NnQr5fI@K z){@PMifB!^EbZTc$QCiS?m_#r&CJV1%S9*kT$BMsGSA%cAye7z%$Z&IBk+cF{&y&r zWkK2r>GiTycF&be8I3?kTlFsPeDok{TGZOn`OemE30%--r#&9a5FKw3mC;NBn(k?n zVYQ~IBir25*33PCz#^igS!in&3LzfgPr9cyEmKJc^my9qKzSFSyv|22r$%NvIHNy= z#Ah?z*>v|en>!>wDb$|JLwq@eEKZX-D@4QJLsj(!qSk$biSqYyjMQ-_!Kgw0-*@IN zgdZldX}$%uGG8(P1Sk>&13;h>K`@~6`u#ee|0kGV*@q(M@WVx-Zppv^N&o?ZU;qeE zAP5G4;H)(3GjOvYbduL9A5ZtTG}GFI{`RDx@p>qX-tqqxL^Sj7AtURZ;P+zczuA=- zdf8_FvnZ8m&HoqD+P+5J`wiK5D^U!5Ep?jymPcsJq4TmmnersyZi7GO;9pMo@*C)v z+Himhx8x1Oq@!D}n(ad_^z- z#Ec>s0OCPKFaShZ5exuPQ3L}(R29Jh5VMM40ElCXU;v2YieLbU6N+E}2+UO?Obh^V zN)ZeIaas`!0P&C_7yx2U5extUgGCBu0EnMZ1Oq@EQ3M0o72UU_dlr??VpxzLBYTQw zqzr~9^y?z;!x$G!Fg{b|Pb0w`wKkReC}!Bs&PtB733W^=k1?2?qb^D1#{c_AKboT+ zPObift2?i`wd)t#&peFaRh+c(Ci$s4S9&2sY@Ous{;DE{70bkY^JmPHU2wCj7l+b z)diP6is3->$?NEE>NL^*5&~O04ThQ^m`fPL4TC+GKZpuB01GXT!7qV}nwK}{G4iv_ z3(3e8=N?aiMO+j|IfJebW$#A{0%{!)fx z+MhsCw|yJ3Bm*|>j|0)yk$Q+aTtazhz3ffD!)d7d(>`=JrwKxND8lSb@8&clF=_vP zlO_n|4^tY@j=D&G(tepLe}EArmudgSCQ}e%r`b)na~hJ)w12Nj6NJbimA&aoPD83B z?H@&&{QtnjanoYPl02t!EX9ACnVLA z_Gggrwhu9aIxg-1B$b{sUAi9uLHPtq_Lp#K(mHAX1h5+`qI=T*DGC)+r%6MneG(y= zGVc=AllIRL>ROQ1bF1i@wEt3|`qoOQ<8cXhJTCb_I}NW+gYFbG);r{Bq{;gf&n02tq2By_$fs&0K{t) z!2l4CD1w2-giZCxQ+V2%nB+#Kad<$v0+;Ze=U01A4oA{cPk0By#bAg|K|3?Rp2 zieLbUw83;^+dMKA!wn-swS5U*DR13x) zoQX2CJi`-ZK8KWM!{>)ICiDM+U!I@ERcR13dxsF2ltom=P(~i}Aaef|5*)_w_c@Lt5CR;k}F5}B>}FH%uX^Iony|ZagzEk$ zLU%mc1%;mf0l}?-qr{&;3g~z5vi$ccip$L-FR1-f{EDS=QR}i+W2-D{HO9)aR=JA!F6S73D3+Zq*VSCy37f3l*?ZjG9Hu7Ks(L{DLPhCay2LfX$y}i^P;# zzSy7_8?@L{%a<7R5`(^!Eu)U3m7{36!R7yzD$2bh<$3up5Ln&?dh$;YDBOf}fSX^% zuUK}AE)l9OTy~*Qm64(@6k>8a+iZuM2+_F8M=ps(ZdHdVY3Z`1Qc~_uA?}yBHrrBD z=-Ux-xmdwc=+fFkS7;A(lGrq-i0m|e%LmaSt$m(|$skMR0V)no?@VP3KNqyg06GG= zjpr1KxSqOyz$B?zQOa}$ng4GX7S(9Z<}m)-Jh=ZKz95; zVAuhA_wF9 zsLe~7=RQGcmbA>l=xgpC3Z=@wpK^j;O2f7V13++MvMm?@;**+!0U)Sq&cc8a^qasM zf{vN0808Z58 zV4$!37KqrxpCY8TgHnnog4pvrnw|k5epe9;0P%Z@U;z6)l+yo=X0SKp5&EpAV*nX{ zUl9xd@dt`v0Eqvk2nJLFg1@K#P!lkK9G_DJ13-LU5exwF1w}9b#1|F8Kv1~#{5+uv z7(k9cQUn7)d`S@uXc5>DgQ_Ke&L1NlM(&p>8In_w`;h@4ID)#K0gT)i(8wLvuMy!#VmPggOdQofH!Yy@pcJw(X-lo{Y((Fzzq1r*CQG62M%DuMwZ{!9@Jr~p%} zk!8XMV)0c?&H(cNxgr<<;%kav0EoX(1Oq_)r6L#r;_HfF0Eqvs2nK-oh9VdM;;$6J z01)3)1OqD5lsq8*TbhOeWcq7GFaX5gD1reX{#FqT0P%Nue3F?z^XKaCDu(^5Xm`7bkx zFBftsF;U~+gv8|ZFo{3NiSxe5f|cTLE5Qt)1%Iyy27venMKGXJjEH~K2nK-ojv^R9 z${DvZ^<%co{U1tqCe?FU`J*7J{QLMxJ#sC~kNktkP$}c*6b%SYx3c{2i0>YFq92mY zyE=Y_iiOLI{U6}1w;cTKw7w%s4>v#Xv=@*VkI5s8DTMzIT0ev_LxmDz1vZ8MiHKZz z=AY%yzsR5O(Vr_i9_<0K_V3Cwj9z)>U!6o$5*1S=T343a(r5z}jY@&8%$g=x3b5>r zv@k8RoJ}FX%E~chJtb|sgxW~+XUF5s9gpXaBc`{#lMUT$rh5hNg)~Y-6bUD|?ciCP z_i~iG0_CpAp7}1?1P=sCu2KgqYVDb9^&xl}4rbGsPyLgKt$-x>jLw|KpAKxJJ%qoh zv~=Cu!S@R#EnF=V;J*a% z8oj{~`clG;NMK28O=9UO;^c~M%|dOXu#uO`@b_Z0J(cdr|0ih1&aC(3#VM==u%%yl z87F3$K`Atq^_7>PZ!2I~_S9WzsqtONx8ljB$}1@K&8c(?vnc<4pgGUBbpHK-gAT`D zA7eTKpf=4=3#S2L=x!D=c>DmJ^a@1YpoBkw?4+%(uXZ34UDKg~#=w07Si z1sme2qhe8RDLyr^d&JGyEL*}qLlIq)mY7QWk1N5`PD@ASy-1P;$pfInr}UZb0aN%a z3E7G#(^^7Dq=lhM3_mash11-L)b0Z6gWNBxpyKSqB*K-SB#6dz=c8AlTG|t&p?Nm* zFpY4LQ}CpG3p(>`>%%nOb*~Z|mu(Nz5EsPab|Bgx=D~i<%;i_2Li{^)n~#Bx^E$2g zy_$}`n3?|j$c>r)-|&b0SPqu-9L4f9%m5IajwXHvfcSx?U;v2!PZ10N@$ZUY0Equk z1OuwJ`>_7Pn)W&pOwl1P0Ns~@SGxC_mR&zy`(~T@&!SAn zm!k~Q!D-2b*`Id=r+!N$%86T113cjO)AG_L(tmdQG1D2+E`|C*OT+_K>SD%3}`c8 zl%Zd;b7?qe0;3FPWo2wIfXq#bU;v1eA{YRI3gF?yfEJI4W{qF~h>Ri_0HRe93;@xl z2nK*?Q3L}(v@3!EAhL>J0Ek73U;u~<6u|%x*mw|%834sOQlcv>cL|TJv9?6hF@TI0 zDuMxUkoTEZ0Bbn-(i#-B%2JANo?Awlf3raXc;A;(ax9xKqV!*1SbAD!6FDR)R4w-l z13)kVq~;g^f@$zAfA37xC(=V1+=qG|$k2ZT>LfR{k zb|p`*&^zV#kuGTKOyysMRA<{RDgQPjE|qMLU>G)?ZDWHxn<@Vu;&>|%S|lQUz}?sqfgZw5u?3m~Cq zV`i~X$A_lcaaO9c{I^I1;1V3mCMuUTUt0c-pbTZybC)S+7yts>GtyBE0D+wuK`?-I z;z}CIl-z)XH!=w^J%+mGo*$sVyNlMfd#}acRp4Pw0`$@p7@U-SUHZLMXeeCA^dGE z{{WHxDS$Z9k1ATll|~G>0zno`27n-H7{LG#IYlr4#A-z_00b4uSs1`sz?8Qe?afhp zIg(D-2;@J4c3iM#Nt^#D^=vxhgEQGS|8@B7{fDnFYnz=#-!E?OfxGW9;Qr$4ZHrnf zuLpFhljfc#D0-6KmFsx<15DPtY0zuii71j+s(Yw@-4_ORzX92=HkJQ%G9vv= zS^xt;+^h%&fOw%I7yzPQ5exuviy{~Rf(xgqNNc%OQ!s!Ow<&@FAT}$40i_oa0~)~q z5QB1$TtUIVa#xU^i6W4raJqhYR`3}zySe|G67P$RVdHNN#_ri?d$|(93R6gUkGm3r%b#cZ|BLL?jwzdH9 zQ5sQ^L~B?wpcmRbtZ4XOil^Yt&Q%w5mFn|<8ieLbU zyA{Cz5C;^&01)>mf&m~7DuMwZ4k>~GAnsKJ13l9;G3YraU+2H91aCBE+>b zfXb#6!2m`L>AL~^#kjM&_QiJG;}|3|KzsTJ(Z_-IB&^_A=Nnzyi8EG`ffX+$3XgCQ zFs%eI0K|+U7y!ao1Or6hyFlO74t@7I^ieLNuMnb-u!3{7yVOppheN4}6v4Tz5lSfa zXec$2B{;WiGLVVZJ3*_=9aO5BAP98l4klXW4g$^GA@d3qZ?X|+;@o-V^n<{2uQC9Z zl@-AN5EVr*07O+03~;}vyzB7y8i%j(SDraT@hi{#1pSdY z4(o0&k2a^P1!^s>_GM1bQFP|?L-_LuEuU##q4^MVVJL0y;!Ml?DZv~i?as7R_o9qB z&ffO~l_wrh%KJj(#om*xhpStZX(fv))01u`^GK>}<%&06D0H+kHN1{s8nEDXX^vhqT-}4HMU|JKb1!HEX&GFJ z;Rd#~a?{$_XG-fjtc8{}3*T_R`^?cRyPO4 z@OB@N9UcDLlnZN`R+!>Zc8j+WWn;~vWwXFs@@NwTfVMdTc{$tKxkC8RoPRsYI*YxJ z6t-vbkAbIPL;iL6%WX}2TTx~o$_#wG-+qPodg!? zsK8@HJWP^FvoixgyhITU0P#{qFo5+a{nc@N`eho+fKvgR2q-weoEn32Ualz_0OA#j zU;v1pR0IP+yiySi0P!kCFaX4>6~RDI{pp|52nLYyHHu&W{U!6*TJToaEk_{Ox^AIt zq|1L9)CcnzVFl-EexAoT1J7dwDSvb^fBF%vo&nGUxe&%P!1T}>W}QRNghLOdB6>a^ zqKB}8bLSSE4K}Gi7D`Rnj8C{Q^~8%{4a0e5vLTRLV%9KBghUZ23MI6LIsIDTS)Ld` zJ71>=27q`>5exwFdPOh*#2XaBfYYgO)CdNU@=c0hAV``2Lo||v?#-Hj0U+L@2nK+7 zt0EWx;_ZrH0Eo9Kf&m~NR|Eqg&$Ap8+;iIY4LN z{u*S%K>ikW5&OHo-iC{|>`@bJ`G*+w{vM=-K9hU5t=`Jj;@2X78vK@8?z>U07DkS{ zpe!fvl8YtpEgokS({B{T3{6d?V;0NP5_GJ*jhs2WBv00b4o2nK*Ss|W^w z_-RFi0mLwes5%CKc%LR^0EqW1f&r}OnmvpY{)Z+|4JjOz#vfWn&|m+%;O3fC$I-c; zqsY_r+i|pSqr~>EL2_#G6H_|lNs>nnLvQ=fmP_nXJo`zy2@(#X@{9hoRc0GQP(xZ4v$n`M*1Qo~#27us_ ziG>UR!C48xz|HAu3tHCfzXMGxqDWCu!6xx9p+FG&%cepKa`_CPIF6v=G{uKB1p`R& zVMQwt?tYCOK>D9m8W0Uay>9GS1^ix9Rri<4=Y|- z@7M7W{2H>@PWTv61v(n|2!cG;NAN3DjQ9wCl|c9is4(LrpbXS^l!{r&01%Xx5exvq z6cBG20D`j;Ld*ELW?=v+KA{K(fcPJZU;v0uDuMwZeq9j^0P!1&U;uNG^at!2J2zIG z{>U@)>DTs052NVU=?@}6`a@5;QTcYYDS{XHM1Pa005$(psbK&Jjvyv5aDOWQ0@RbP zRzZ?apd3K_+2E=$-4m8$9q)vY8{aa4ddS#L%b(J^7(iX0Rs;h;{FWjZVBQ>pj9@Kf zd2`I+O+V;i_Z0zon1I=ywHf~wqH;f-`{fFP3sxk{w;@vM;c1x{OAiq}dSX(k)xW2I zTWMkdM1DpQ3;^-FieLbU-%$huI_eSedm6z25T8{913>(~A{YST4-~-w%Bny~ktR7H zr?E0p$FGA{Zb!y9B(1?SZ|gKSUfH16gQs0^vWFn_sfF3ex?rARU1wUAU~z z1!)L0X`EJn5m+9141lsH6v2R#@=F@Q08;*uA{cN|{;@_dfRtZW1Oq^PMG*`*S^q>M z7(mKDRRjZ?61<{+YuY`p|JD;zleuHXa;4-?Z|Yj#x2`K!oF4VZO4CO+bZamUI**CO(-%N3| zG+r9*8z@vtql1*KCl{Z(i_5DPMkZ0<$SBp;-cJAZm&S5Z&5p6I+^9b}JB2ov#w101 z|B>Q!v0SM7sSA~qj!YMkcr6#wzqT|Ml!lKB%oNMjlcvnUi9)$BS}m6M8hlr- zdU6INP()DOC_=+CUAf8P^pWZWSl(sIjuuBvj25*Y1v*7h5|out0JuI|F7B8f_oKxO z22oCFC8SI&Z40`6e`%^1ElTl0Ib+qS#8P%lSJ&SVErO9j{>ntTN(_o`6%udU5L3cN zh??!uX(}Kw{|(p0h=#r06JGE^gHj0{RTIUQFLkIb3y zSlU}I9fQDaD-|c5kvaqH@Hk-#qoc(N6wf#%=o^LVm>exsioLVbV^C$Iei@@gc*ms| z%H@I%Q(^RG!eD@^k{GU3k*F(|{`klOR>*R8wO;pw_{+S6;9R9DB8rb^Y)v0|^=1|9@8O(;!M6BgQl z(sZ>!6Odx#2DcGhy*9ajExN^}F(7`VaKz|FY4$+jNSNhFFb{eYSUQV776ogVy5V|< zryH)fEJZB=O_QZcHAK`dAi`8l0zUOKPVQv10YN_$3*7DuazmJ(^lK#Kg4 zqg}u-OG361V`A(h*n&_^Dj;>Oqao;Mn=qp7H&2r)W?M<_qL~)o>X)$05 zn{Xz&G&Wo*LWP?-6KYA!Guy-ciZK~b?LDRH#NM)hV&3)7)F)u3E(L*nkvaO*y7aE% z_&j^HTpWK!dNnkFo?`2`PwKW0eR%@wiTD+OyI$DA3kH#^#>EDM0c?Y{LIdQP7!qOT z#Va6OlKj6;|LiN4ONGhODYCN?`!l>=<53(8T6fL%l=KjFrCDXVR6!VXI%pNMvpt871@7S#jK;^CXNOtaZ%53NLMr8ZrXIPXkMv{dIO>WYvxM#I_ZV`Q=izNFE(E$7;Ph<0jSc7$>tTrM-Wu zFnzMO>i7E7MO~^Cu`o8SwE1Y%6Z>J^C9>Hzs!}|`b|6V~sD51{?JbnC1cx(3du4d0 zJdNdrxFD-=am1}GxbJwBNTJcy((#GX=)~|0m#zE}o(E$|c|dE)OcD5d_Z%4^R>n-k{kg)o{SqdAGj)c(WG1St7HVT;1DCf7|)9 zucbu+V(xg6z7l&) zH8)W>R^*}zIkfVD+(=>cfm~sFEI00#s}nuBslrKoN48YWp_blUX*{K!?JmloJkS(Co-T24tny}hiF`(5R~jSF;p zbi6!0Ryh|@7TShc-8bk(O-gP!ayQS%Vs?9^@74{I)J2mDpXtdKVJG;y{w|bj>L&dS)Uhl`B=_<72eUFO4-gHIVb& z4a)25axT}-QjkQr7}-W`$H48KMnSq)L@6CDZznB>;C--}rpKO1iYxP`xRDJ6*&oHh z-FXW2c{Yf6;PJ3FGj`)XzP(t5t8RO75-XL&=}E>4ZSd(7>}Dg4Wkyr5xZA=$AI_3% zv=K+Cth32%?Lq(3*S=}}R4PI-lLF;*R$xT9H+Rw05Rx#SPvX)JEFkUR0@9+b^QK|z z0@7|Q%A;vFX>ZkRznhIPh|Z~jn^n22HHfwpT` zBO8!3AjH-fxtg9v7YQ@{qsc;)w^5F>(-l}ZW4+jsn#IoaIyW(AsM!KHE?&~WTqKn$ zyWkp>zfLr~>PDTgApl#vD_5GPGX|)Vt#8)~h1FFVEsPbYaR z8|QB)qGO&u&)Ixuupu1XN)%o?QdVa*6W-a6?npznu+*;|(^zQLIj0M`m z6o_DPYGg8TYmyeZG=M5Ig;Cf%4edZmpLm2atkn0+zz>g8Bc;)};~o#W6_SS60=D~I$0%CR-XEL=qEkRIQWj7g^14>4mae0EL; zT>n~gv?u8QBo&Hb;^F@zg5_=%Cm8k)h8QUn`l(WH*7uP5z_nd&n;rklrb zWORr(5*RDpp}ou~)pP|)YBn7xLR1DpY#MV~nL@Zw>(=Cmpn1dO-84I#6?k6fF;@D7 ze}n!M*i+X%(Jl_P@Hs!qgp;H5ROlwP;~(V)w9nhV6Jir5NKx$V{wz)u_a602IH@da zC$2`AstO;dU~d0-~lH38~0YAhK+06`0+6p}y3!qSHPmMKCis zE~;uMY0+yp8qBHh=m8>famtto4+k9ygf#=f^p_o4G607B>6uyVrHtx8iZ5qcli`#q zogFs%uThu3FTq|s@BJN~h8j+3efvsNGm}LcrdUi(C!bE^A)x(@Jj0{@6l;V?kMAtn z^IPz9xF@*}mtHh>-|*oWA($brgB%*33LP6>u+EH1g-Aqvhr6WVv4_SQ zR&26|E7r_z#Tc5(U*bUhk^07GyQzD}4YC9a zGw4RA0vTtF2&>K7T1ndqHAeb*r`#!P?_}X5{F8=aXOEoH7-B<9BGVST@{^M@T%uj_ z&2XW*%PMg~sk>Dr6t#!En5LZhj>Y<(Oz8#F@U_97d3~XTy^M=#KSqB!`Ag2>i0s|s z;oe{GBnh$COe=7Riyv^BYBcpNa;HS+lAj*W73AVxJMCHPa9xGKw>5d7sgI^BzE>LVzf2qzXjlsUawL#1$ zf@1B{zMzgPO=D`IJ3Tsgw)d~bW@D&~9HuO6wfHzqlB3OQJ}(lOmB$Mec>hf?fN~QX z`quSrlwC@!i$d25L#-7-)8=4yK6Pr?Nl-A7SgTe7n?bHzazUa5s5=6UYC48Bq>){z z&KL$1PkR@*^n|;T(_<%w3t^kqJ!l_S^k$GUQ7nr*hs!BQlvF{)asJBei1?~0R9|og z>I+W0!>T}Xde^&ikhLwiHdCE3!~|uzZ_F{l*0Nly}Swf%{+K>k#2bFPr%#7I*k!nsYkkj^`7aL`kmjMN7olp^5G-ZS3{FX)yF`UIh-3YZAVj48n z(g;X&a13r}R7W7El%~Bg{nlwH!j@PU^3EGBIT{y-ejgy zR*cs=7eA8oa&uxC#fRgWO-VC{{V z;S+G})qscbz8yKP?`@3t@0|Oz&I+uqqZ$kAM*i-k2LRv=R6Q@87=*~h_7CvI6IC3h z#NopM@!15dl)MF9SKG0^K@?y}7!$a+sO>!4L+HzfY(W|#y*_u5Xr8`*9BXn`E%AIb zb4AG2A2wr1w1Wd9aHJ&3c+xs8)PKRcKE`YbO`kYfOPe9$nM9oCIe2DE56IZ)A zzs)ZnFOUs8!S>VO1}yW#d!AxzZR)Bu$2M&+Lm*;c zjau`{lFfU*hTKrqx=Dp1B33{=he5W($#`yCvZAA+mcuR=VpxX`h+&=EEe`9}FNAfm z5)l^aMr?G+NMvJ}tHE3e?uO31K!#!^7b?%;H%spMP?7U614PQz0tiq3EV;>zfjWC8 z8x!dJ94~(DD?Paled}>!qM`%Uu5!C_wAiUx;nv8jF@ItjZ%0;e;_9vODE?x-i_ zL1D_PkrCy(`kK-B$P+ORAJA8u`7Iuo3ngrO@$H~zropB9&E-ciz)5LnAY8Vck=DtG z!e+D6Oo+oiJZQogXSU(6U&fRFU47WarrPp@BHB-ZxGVl6Iy?eI6>pww-8_ zw2k}5X`S5%tO)5wm_dr&29ub1$?n2iAiFOro@^}AZJ#Av=oa!Iu6z>2 z`0oawKt&<2Ae$@tqA6L6m|T%@X!Ihblfs>`c)gBA9gHvyRYzGG%wqsTvMEjck_M&i zHQU4nTO*}G9n(1Wh{OL0TrpMb!>U~OE|qX&)Hfh4Scxx*ckI zBt-W)stLX)qW49lK<%4x-w$k+UIH%IO@_g{sjipt%qgA8JdR3E!dTYqhgKCnfc^GJ@#OzN+@xkCHg%-5MFgCd->k2~ck-SD- zD-sau)Edz?%H~LQe0Tv0CnU^P-BKZ@3A!#Lc~S{>=6j7cG8z_7Y8D;Yb6p=Gjuhe_HdLVT-qG5TevyFcoQn=D9>(s zI?pl6aFL&mo0`R@(+(py=(|{g!&V4t8b(T;&5Rbbvj}8g`y<*=%E=e>G%pcJ)0N5L zZoGx2G<34q(m7LPZ=l5X$}4AP3$jF;hc_-hA}SLix1cl@v|-0sgH~X`)HFo9 z6*Uusaml3@Ct8$_nFr|niZ!vUlRxG<4IZ-zv<8%@Q(VkYIFH<57NCk6ehi$f7VCBD z2;!kX(d%x{J_{J4V_f)7&3Ms$f#;RTK2@X2R5n7~;H8%tB%)Jf$j5Yut4zbXDHx+l zmr4hzd6f>MvXl(2Sv!Rs6o!gzMY=%c>d!ddyGj$10vS~G7bcD3aPD6tW9BNa?jp?5g_blk z9&46@Y$KYUuZfJT6V0MGP-M=8>eze9Y=co?1Q=X{mbIL5CABmL=8Y7}b|*T)`Z+T6e7i;tw zt=cxUWirntoE>cLY??Tzctp`?+bXY)Ck-r!w~o-7aTUle9aFaprSQOUggOu?;lggR zp6fCKIaJ`DA|qHFGWZ(8QDcjOmuS~{pz&l2(7%pa9qDjN(dz_Kg zf+Eu@C2*&)wPA@uJ%%nd=jU5q~?5js2qbzZ?uW_PZPlWgA5ER6+QRyA53 zr^c*g>6Kv~hQa*24=a9B-XJNW${JPg3T;fyTCnK>oK@gG6s|tt2CjnAbCoVPY`yMb zr3Qm0rhY2f){P2L0@uyzkPJed(d^=m^&!P5v!h9eco)IM)=Vc*Xew>)rEfN{;`*|7 zNlmx>a5atmsA>zws-DoK7Mu|r!q;IWdLIS;jE6Yjn8B9YT1lf!~XqGl#EJh_289C($$pT@JA z4-|9PoVe;55uygCZ5Bvt=va(Zf;=neKu`y@k$s0WO%XYoN{v~=U!W>Xa>K+xc3U5N zl0**Xo=Uji7yq5D^ZITJv^j|jpM9oYOFUyfFzJur<6eme&8a72Uyne96*x*{b`f_# z>NsfUY~$=t>P_}FnRSOf20|t9c_S_gsuQoa93e{|20lHjzHS{sN3fE^bzXW{wWzBN z7)jOKln>+>UP{N3qQXVsh1cAKj|X6J2j?i91Xyw4mL3Afuof99;R8DA+NI?B3M5nU16fwKPqy(4FqSOa(M*}2td5A;q**@?tW`gBiT-CAUO zp;)?8sQ+q}pLKWIB)FHQGQg9PY$3@f;CR}wdtFAAKH|t5q<~tNkVvdh5=r9_5^FXX zNz!gI1{ux0k%763&S05Y92e5=7vpzmEtU$ z=n#w0i^pKY5*TM#_e>SbM~XeN0n|eeCTZOu#nLw;Prs|=@Y2ynV)bH&evBP{uH2W( zti!ifN{7f{Z&K-^67?H>w3#17qm_-LJfN5HN?MMvSXCPh5=d@X@g@)+6x>j74mR7TtbtwMtHf8!Gbm6&?m%8Q8 zLja@(bJ_K@65iK6*ONOPRD`fxdR2;ZHYpOCPq4DEcDdQ+Sle3Gp;wd4AMe%i_V-iQ zw{fZj>hXMh@OH3N9-W0VK6!M}j329s5dm&k8>Zo72KpHxwKHkCN`*&n$=mCb8W0Uk#4Vwu9uhsTG`j4DhCsA2KKL2uAtbK~lfS>EDvV~c^&y5GX z_*|8Fk0L=$;%+0SV-?h3iu3X5TC8{)C`ml(2T8$axHb7f)^9vJExfYi&p;8yNrjr* z^ZIp5>TD(J?rD5N6HlW%L~*m30YZ7w6t4}cKS@CF>s*+(TuCeh#Ikgf(Z*6LL|G4y zuCehA4(SfkmYlH0?MPUW^x8?o4E$IZ5L@<6-Fv2s`+eFPF*B93!gQ)|O+1&l;8tPe zTh3ICKG!71OV|Wt3iNhFLZ`^vc8Sas4ocy!RUd7k?E9Q^6N5{i^Jt>Zv-DT!duG~b zH6>PP%-V%@V{jfKyb_D+MV=o*$5Q6gmv(HdvCxib=o{E7mE=$OaLEb!oRztru5h%u zP-A?j=A?_k1;a}o0~E9o&)~`FV9h5IXt@)Y1mmY}yvUsn0mn}jJ{3Tm7S%u=A0|vy zEp#}s`>FQqv$WrI#QZpzE*pq26=)gk@?4IxD#z{GgubdF>5K=kFftl?gfB@=S_u*B z>e)AX++Hw)MZ`}>fI-HvBDisoSO|}iIwd$Cs&d}tokzhkxX!s`*KHggj>ff6BN+p9 z9+vBi_(&LMx#Mm$hXiJDaA5Q8JfoYryRpP5SLv^mWnV?qnV1e@7_u5nH>!N=n_jS< zYfe{7)jHcI@n=`z)XDlhawet_XLbo|1Q*LlVzJ>G9}A1Q!=uwd=**vTDf|xVkA@SvS%Zv^#&092NvKH~zxvhkgw?<54_ePFIWicp6V1~ z+K_0marM$VXTlam6PeDndxB|!&M0XA#!bZLu%RYN9^2qK)8Kqv$Pm6SIA+**T>iho zEHgz0t{C-MP+yv!voBcmZSkkDirkGi4<`HOscPo8q)OITphJ3dAxkO|`}47;ikc3A z@-rsFyfnTja2H5pbwO6x^Y2D;T{p+!p`rYSw{}}H-K6m$=c3Z3k z!<$l1*_mv;$@(=0yvaK`=6s65CXm4x+_?)K1KD~K3s+~jY6qH~GqNZny`T@I*0SFo z_dwt11H92)36cQaf21|8NW{^?Ni4G>#&oUmY1wH$Y)C@jPSHg)M%5=w2ECK68+&&Y zPHNTmkb*tH8<-d%Ch1;bAV@j^3jI{_)5=Ai3<4^ttqHdu11b}=RZIN&rKe9%36~Na ze7Js=s8aN-#9=y#HjaC7&VF}Dy%<5-N%wOxA5BHArJ* zY5zo#Zr7j>O8-^dCy5r%K10Yju7tnnU=#B;@3t5QULI85m@7ldE; zn@E?{9}9Av)caJt{(t($1I=#r$Aq6eBq*~nE5~u!i>6A^+QC{xt>F4b;kMbSK|L_H zBl(?Qs*fv(J)mbgL=w>c-Q?`lv{_=BHcArR6%QUm*?@-vsc?N&44nmSZqN9|)hWq^ zb^9i;`=uqQJX8p&RjC-erJ5S02>I@a6sjfAS4Xq}^WchoE4VYU<-$QPdIs^ThN zvS;74Y+j|^RjlAMXvxDum^81Vb__wyBrhhJDs+WC>Yd9q9InaZmHHG4s?Lrfd>VTx zL1NqJAcP(BhsSZXmL3)&TT1v(T&)T8s+>CvrO(YdH9J3R? zxTNa@=NXIS`CBy;4jUGxOof#qRz3WZ$}KnJ=n2J`8rRx_7!la9Ax>KppazY zPvQ#^kU06idGH71`2FoI|1V0;~?igP5r?(-n@$_Un}*7)-2nUPpS z8tY~en&`{o$q$84S(YRUXoK*OVTc&?B-4n7(nb8@&2o7T_vZ>Z>x9j9ksZ^8hqz0l z6Lhng7El#TdpM_tbiqz8&+7%p#&bwG^6=O@&1El3K!5l3I>Tbn|m(;1gSP@wSj#zji~e z8#7XMIM&d3`41oIqVHrEaHEWv z+fGlD;9?*qlWAyC9JD`$XG?f=P;>$t@YMJePH5vbGXXYrDM_K0)GUz1J*_>R&^z;f zStyCk@iQ2|I7E|rU_jguysajqOKncvIfzdfI{XYjr z3cd=$r!8a<@z5Am2a2hEP{Yat9ig(ujXPwedPN@XX?Fnv=Oj#%4>a7RT5h!Y%ps)g26{Jj@xuxUt*OqeoQD73e=0VsmR zz%a;`;97J$_-J%tx=Kb+$g~?~+r&sb1|^JgJ6mGGKyFekG110Dwx|b{tTH=CTgxjb zX*G;GX>ofyZc&rfHc`SoavbI@=0GCd$%euvZCo&R6%pFi!%7=DrYAVl`0O-4REV7t z+}O|(M~c45PXy0uoXRTCUq+x(y3IHkq(~HH*eX~ zH?(y>^(?+7!kulN{sO8XPt!v5D!C#g0FS0((xE2-ND%MXGBC)ZlH0O*|5g^9qlIII zKG+C-B+5ccAR`Ns{g6aaNnwT?->6kAW@;ksHKzfn%+ZNWToG`VG)Ro!A$3+vEa_(^;WI18oUiv%N7t}j180DT5mGIMzDfaYebE<4c95#pc9nMTD^uZaKCP=0tYflBg&-)9EyZZ~x84c&CFwbgOqg)9HlO7&(J9ko4t-Tvv6}JWF|xvE!aS(nWZE2Cf8K4S}+T3R>1HR zgx{$PZ-i@ug0*dX`&419NL_jARBi(vv@uUz=6pO}iQq_av;apr1z{ZV#DR zyR`AnwMcoqr_YQ%T4O}%A-gJ2Xk^SKtscziGVNzEh-}pC!jn#S^C1jyMXW^$GAGS+0S%@ zgnb;lZ0tk~MwG+-nxuR*K-n6NB`%t=NUuaj_H>+6GUXC|BiE4@qiw=sFxkXoolqTS$Z%&@t!PlBTIT1I4gCIIQE&6*y+JnZF!nsCH8^|+(Jp!xV8)?6i5f#0!R?p95?x#15{8}bRR$vFMr7LN zDLZIPaIFL500Hm|7h~Lqe87)@$uYc1L`5Hu@25OmfM3>D*@UKpjPAN0AaUI3qGILK{|6YUMt)>Drb80gO_#Wghdj z$saRev)?14V{~`OXe=`i1P6hkTVNo_T~!<#kZnvlctbBajOjPPId^@r@x0ex5PN>? z$9N91fis*JzTj7#!&Oqk-Uhyv;B?gyez3oIN|f(@f5%AnCZDrG2V>y z%j#d|RdlyJW^VkdIzcyhD>Uiigd9lJ<37AWLygaK7DmqIOG8 z&OJrb+hq?PA|=nZxjsP~jc`47*~-XOjd(6^6lco#@zO#hL6=ft+yL0mq)kk`p@#^4 zu7?k<2`EfEK3u%;56a@9rM80A?FhPbC@fM zu;~(+C0UP3>X`KKp=f$+Ys--+p{0Lq4Iw;exi@SRrB*$CDT7+d-v9G?ZYbBWpp;i0WPdYFbabo$9@e2CJ{ANIKjrksg$I>vQZ!E4Gf zjsa@K!<{%NNif+ipglw#Sw5o=pdxKD_ws@tIdG{?wBETbLa8GsjI}3qgJIZiHx;St zbYK__<&I+M*?6N~o7LW*^x0HlsMf#F-38UC2FCJy{EN~^)AriNtEb;>y=^|e8mp9; zPI6ms*k?*GTu`J6B7IHP;IxSTwMiV&9&$C8@R)Z5!$wPunXepo?IbfwxM26SA6dpS zVNwB4__CT6dQDFKfM0@*I$vu+S{B+AW)kWRdPz_-OpHNCJZj*77UB{Ig;fh&k+3Lm zW-vqc#b0elsxaZ_pC(kn6j2w&PMbTXre=AE)W}!(wh;HB2wY+bTkxdtvErDu7FZhe zfV=GdiYUYsZHI_89w;|e7|cik*&9s6T*Z#;+^Wnu{I+77%X1K%XUGne3=`3l* zYg;e1xI_~&gf>DFIkFp$>e37yEn{8?tqGEE(w0VXTws5_BaBp(5&uvVjq}5f+EApK z5_NJ2kq-|5w-trPt!A;5ZE1dn*Co=y37p!F=kDt~k;l9Vy~iuuR}D%pr@Q?jhJ^Dn zhhwuFd7Y-0WX5zG&TNy~Ua&V7RDC2`^MM4jJeXDnQ-vJ<)+M8)2_KUZf-HqMNK0g3 z_B+0J0X%+);C~!A7_mhzV(M76cV0D@HEB5UF4KgBoHzX$C0F zj?EF@XN2g)NA8X~F$*Od)y|XbSf!5ab=bTi;PcZ*mn!xcS3W;3E2E_=r*<{&0*%96 z$U+x30Jwu1>H_j?z3rKPXQ8e>urpV3Pnx4YC7R>9a%Q5_3sj;oYW)QM^du%2BewRg z6zyn*REZ8oYylg!d@c$>S_pZvHEM^M0fLQk6V51#6a3bKH)SBPbH zwior(_)gH=eD9AA>L>OTGzEy%X*u#h=T5p@&bmZ90IJPAT@krjzK(q$PEj$hRX7jx z+6p62I){#7*lx#c8GYF~(pfybNOH8`0CJC>;22z8$sQ{Ls)VvboeofLT7`C;KuOz(o z8#w}SAW6MjKUZiTXEKCX7+4YI2b)4xjhw2!YXiCKvx{Y`z8oyheivs_o;BZj*^Sc_ z4VM9QnkiSPVlxwWYH%`m924v<_`%K|VxXYWl@JP@Pv9U%nZ#B4Tnipj&;=&$&eWOT zotXsX*{65lSe6g$!JUoEe>k#)(@r?qOY1;<9vJ7Ersb4xu5TJo@eo=!8q6}-%>8yz zEGtMlFoMfIQ`pc}!tnvX;9+<^LQ?bEN`s>!toxWD*anVpja<36;K$)wa-t1Rs_;6~ zaXg4jyLU!eh*jxcZ$v$OT4AJgWEeh9e9;o$7ZFx$**dsm_vT&s>w7j{YmSsC3&DLV zQ+i+<+&;o(K32{BZq*`JEffuuj%+E8mZs?A$BZ`B2u`XAn;=RQr4|LP1i&&k{kH}D zEKR~S8+l>L^#%tY3oYTi+o;--5JlU`fpqFgwgnu<5E>GdfX*#;IT2958z=H?3&Kl= zqz3SZPK_{yT7aVP6<{4?&uBAtOv7}*u2Sd}h~6chs!q8ar)L)MMIpHfzIk&n&fp|H zf^U)?p(lrnh78CRUzp#4^wN=hsw1FD z6kTxYDCpchra_5ZiO6hBr$&fT0?s2(RLjM3U%x;L&8t;nW;7#@m%zeu;Y={afu*!H zXA&m#R)bL^e03&}F&^nMEsN@qnIn2`FZmI-gt^2jE7hE)BZM`k5hucT`DY(E#}^EA zD1-{fGh6QC1oJMuwo^=hghhRDFt%1lSWHp(qyFywmM#P}P!Opg}XvZ@px#H>G`7hNJE z%?1c_*KNQ188Mu#!Tc{%=`H=MUo?noP@7*w6YqH0pUUw!P-RT>)LnN-BgK99-O|67 z%SWT)7Cv+YoBw@3{v7ss{Jzooaj(#)91?}hT@?-P*fP9h$gGRhM-f_D8;t^Q7nq|d z*u#MNJUDd4j5cfN%{#4s#@sYEuJ!fnY977DfmJc1?8eXLom&sF)5iKTwAS#kY`4aN zr&QxWY>f~;Ivo)l<5n^PHU!IUCPp;!mf5jc(lPJ_-S|{0s&;yQ0kYw!Un4~OX8ARBWu*R9<6e5y zx=bwB)MXS%MvZ7tQS&V(=3xYKg3B2nhCu2w;o>E7u)Bj7dCU`2k<(AI@Y z{Ql!`5DUW=Uf=$E_SDvwDDM#|R~a7I1#_4wsA-sp-~c@#!3h>7JeumUDSl9 z{PMKg3VMTH?Wn{Lb%s|uyW!KK{e(?jyT#%T_R8<(_s{mhMZ)Hsbv%gOAK-V-U*J3ojP^miYdwb3n7TwYM@b^S6xW3BmG2(+`sJAkIn_uM zL5bTIjXw~+5gO}AkrgAB(x8Q?3&bVN(ILyxp=UEkRZetPHrKhNGb<*fV@l>R<$yCa zn%stcwG5@lE8G`lXskJ$iyLOv&i;e=?=(LB`<5h=^*5;Y`!n?{Yc9YHtFrG`*)AjH z#}RtmRS!ey=aoW{dMb(|O~&|lKiw3^=^2SlU8S-0!+N&bxyBFPQyuh=4!PGo5U(el zCAnlk_tu_@UoY>V1P9}7j?gB#$dz$_s8|u5HJ)j9hG-%5H*t4G6*nge@6|dj4Li^4 z94FN}15-!lm?7Q=3{@5xJe$X$kt*h}ZBj9@cTqy6){d(xy`-(0-8k})PsQN#5$Qm9LG|?qr3spk)1#6h`YLEN^!C#~YY`RHi=KjhEfVwcVIA z<6h#m*tkJS3XRI6f1ybQC(F#`Ly1JR6&uq43Qxi-l)Ohs`|Co)r^hmJXEa4SG%!MwF_#j?FJd&bj&79SzvAK!x3F` zPt=}rvE3aOYJAL4WNeFKKbC?c62889UI)$^8=tu~H=Po@R=bcWt=XU+#6EC{mYNj&)Ux@kjcsiB6BvqiM1Nt^8yx%% zI?;@IBb#<|3%AW(|5VJB>}a+~4{e^}*Z*wa*9xe7mQyrpbd4q!Ze)oTA}2g#VpZuv zbZJ8#MY?eh7d{ATIS8_A#Kb);q&7>uOu9l)HX3(E?3ztO*3 zO!P{lJkVjH%+x89cU_yY;ka=K*Q5K=jEKn;8SCLTIrd3>^U$)OqJ_wG1H~9{-8gZg zv~Mlot$w!o>NWr;4~pepT9gFOhZtVFYL$;0$n0l&`{{2>?UW6>GLXM240!cB7|)q5 zYD_TTQEgFdWrqvXz4}>qUU*NV^RI@JP@HCK2z+XES{R9c+=qp&(Z)Tia}E*4^Nw!B z!JoCM%S=p^QY3*TiZhB4x4ST1qDPn+6;X$bbJRG6jX1dqP+6ijQpm5)Wi+@)1{xY1 z>{jAyz4D0?`HAzrkE2^K!jQmEFfVh4y#{sHBP@E-C$!lXvSAjy-y&Qm_b-m-&?iF8 z`BVrvaB`4`jzkYTCwDYS^7f1sJR#Gbd( z#MCtdB~@a3V9nONXcRiADodF02b8rD^6H2|!1u)A>wS=HiC_Oz%+&+u2-a+Mycb_J zIcMX7v{}D<+-&omv&FJ`tCA0x$wogVt9xwB^Ip&ryKj8%wCRgHy$K43#<&c`1P^(= zr}!u{`m4?xPW5v0Y++{42WRO+sVGlu8M_^{)BP&!gR>{(eC)h68GqN<%qYPIv1_bS z6AS~$w<|MPeg6>BC5k&0XC}9h27#7@Z@4&pq&l&w3m?C;G&!_zJ}Mya{Y%emf!T%U zrEI3i5ZUG9)!f9`ef%tLQrniSp&`e^qaDpqiLOz~3gK6Mc z0ER*C>`z?_d(}?<$`<;oOX&mwMe&KOdfe7iP@EViHLIW$S9=B!inEux#Kg3y^hZ)99 z*Lt;F&Ccz6c5T^u*YMEh-CN`Dn{%P{6+WN0{dWBN;ha@_lKKRz`msNPFV;4Y&V7lp z$z5RlTdZ&lZxY0OA8*GbmIg^DuLAv})kkQ!Dwp~Fia6aV`Q*3Og%z?SG^x?1HW<+b zL$nW0otBiqZi5S@vMvo&B)z$99btHSuJM+6yrEDt=0Xo;@J>S#g>ifE^;)!-z9b(? zP%HQB<%#Ul_l<&A{9vBZZlc&zluEhO+;;_Zc}Mcze7NlDZ- z81{j-IwyvapS3cq@6cgsGRQF_#2*l+wTx&dJBMxv4y4x2s*+Wc-4v*UL!24rO#oIm zboMApBb5@Jp7+vroaEqW+F|9|giZU3I8|bA1tu?!jZckphJ2ue(XU%!-6d)VA3nm@ zBk8L`u%>e(B|Kt@cZ_fkzAz~tfOG9VeTa}b9GMfjKJC&9_Z`o~iVvU3609^9oG>=@rkVG}Yl{A)<^M-{gK7U|NL5!HY)W6R0 z@VM3DRhehox{HiGwy5h#b*-#56sPH`Ri`NBWbF0fpL)3BwcixF4M(+-^q!e?>MBqwLO9=` zl-m9<9!`k6<-~&hsP%^ z{&Dz5LUr5bqbGLaG80(IB-&QqDnsNhXaN5{};HEgaqP&1DwGDW_IT$3ZxTQa@E=8&_7jfecJ zlJ^16`@48LOo;xHJi0|Wb*fEB4bKNR9$8qS^zVW zw0`_Xo;KPvAb1I{rfvHtiiovsakY%B5(24<6FI(TII!=IfhG?VGXCLnJKixGIM=Ux z!G;$Qrp24Y@4BD$yerRm-aGMk{{g^erlA!7@?V~J3H-HJ-o4LjOEq~*fxGhdyLW8C z-%AjFIS^M4O!^~~82=#RP51oF*){E$d%PbuZS*>T0C)oby%hib83HFz-hGIFKEm(B ze|T=&Ta5oG-SzmdivKpEpeqo8KO9eS^dGW%H{d_GKJYJVT9)ztz4?318Sh8@+uTC% z68^mmzgcfn%QY=ayz!O;_IY|9$~f2QTbfWLq=OT2$;`6@7-nM`Jh*O#F* zdoxtdi(2XT<*j~e#(Qzw8-YKG-{szW+8%2|ElVl3hkxI?oZ#={H|t$_(KRhu?=ASv zc)xNHmH&f_zIjoHmtFBBeh=aol&m5p7Zw7vT3(^oI? zK5#X~e(7pT*?P_Qf$6-4C|rNdPT=2g&8cgac=zNf&69ab^BdRF?@afhZj{{p)A;@U zHH4Y%p_08`qVSit((hNcer9XN`wsuMZzH&ie_zPI2l&_L-#7E`NBQ@=+djW7<1N0O ze%IXoz2@cK&fAF(hX7~1Qy0_k@a=Cz+uwRSwf*zA|MKk_?_2!)Pn@Q0JEggbe~0+@ ze*X3GoArKk`y01sy)SL2yg%AbR9&%yey`o}#+DB6`W?i#T|20~hjx7PqKr4O<9p2= z-U;A4ym#X_<9+#3!u&d?{M?S6=&3*7K@|SSj_>Zsc$@E7cSpwiHKfUSb1W@WcMx3R z-;;Mx|NhY()VeEn(r@ohirt9c<=*`}shneg!TFtsx-;I-GyKJ!pW3;^`^TNc=O6O# z3wL$zTHmqTXrRO>ocd<10wEN!sa` z{?*NBdSpJuK1rA+`-zLOOap-y8ChtAS{}4i+x5^vfxYu&rDsLN? z`7<0^?d{~ak8tSu-d!B`84g|T-OZuTbLd*{#T@!$4z2Sl9QrngHhQN#r~~icP+Plq ztM^8Zdy?Y@OlWBnwPC<}3&&l`p)KA!IJBBWTfKL2sEOF8s84juM7n~3v&*7UWe7H`D6yoosfJ%l`O z+`F3Ne#mj--T{t#lH*?Dy}60na6#&8O|SA^;=P^AycnSt?`7V*IA0E-hrL&L@8x`5 z2zlNsy$^C|jR}2(Q*J=$F~oh8<8I)%N4-yRnYSU-;yvnphEoo4=yl%jbKG4V`lz=o zMQym3LmwmEj!*%iw|SrNR&!{KL%-qm@H}vYQ+~?3ok@&Y_bW z`a|zdF6Ct$`n-35jlMdhg=UKXd52-ut+QA93jWUMfxPYf2N#4iz;V}bsJZEd99o0WC%g-qc5%w}9Ji$D zPL8{dLra_PNjI(byv+!;dzUoLaNJIgyNp7h9#c?l1=*FfsO&{lcujZ6DHGPdkk8$YMrf+k~$2m06^v@i6 zH;1+~{eV;cJcqV5{Wr(`5{I@orJISLzs8}Vrsd5<^(PT}ans#Rt2y*(j=QgE1BZT_ zL&HrsalX%TXtZg7Lto&~WYa+oeT75QO~V}e-yC|dX@X1ndxT!xG}~19|G9e;@G6RJ z{kv-Q-pSsXLkMJm0106XV?qdokc5ED^DH8>5Fv~*gUpjSfQkYth=7QofPjF23<`n~ z1r-p%Aqo*h1O*2a<^Qg#Mc7=gww1+ST2Ace}Vxj5obt zf_~WKyliq#(lZR*F!ZpVX_gCi@qVAGpEhZshGyvJO!F4==nz9=3~koYh9(=@p(`1hX=t}jHuRXGJ-WW3 zWkL@F^dLiL4Sk~X3>6wWp&xRi>#E0E@Dcu*9`BAoAHD<%R;NH(W&1^7WbW=) z0{VdQqm6IupN>c~|Ax@s{@Kt4{!O5({W<40|K`wxCeLyIR`6&2+d{ATb7?LQ=ZWy} zr(Xr5bv#^Jj)y-1+j+V}`+9mp^Nh~&^nribGXQGW`%Dm*^L$W6jH)Y)`o{0}?%=w} z85>+t`>8p>>6pY)A5MFO$$RNb4gm8UQLWaO+gm8YF z^Mz2Z`C6kk5*Wsjl3`nrGbW6;v2+;cFB`^fk`T5X@d{zw8kNI#!l#724Xqo-Ypfr( zU;Fuei4wX@t>oITyG$)aM62(^c-yZT?G_$`vDRv1)1G6(Idv8^RkbUY!l}i$4!w$X zP~qzB;%5=Db!!^QYiS$F+hQZLOvIMIAd<_eQi7MQR)TZZHM+6{??Kz z-mX0*;xJa((rliLlDEsZZz@|P>l1m;{5+k^ZjA0)Wvl~7!hSyRxhS#1F!|ju9 zyj@Gf7+zQN7;euFM!UuEmfj!3tvVov`{7`-)CjYb-O@2J+}e{&{uwd*v6lHU??Io8 zX@dMqP0p1u-0NO7esfGdQn$w(b;4DvSgy&-vAo{(vD`AYwYSCc*4Y;LA(nfHt>?&6 zye*SU@wUt_g%2=ku?3~Lm)dQ&?eKCbKcwz7`S+CyWN-SO?f*wgasNMADjadU7Q5`` zn39OtBch-b*Wo*(SB%~)#We{k&05B2lF@Xd&5U+5+TZBV(pv$eL#SBSx1P zU18Mrmh~q87Nc()eb4BJM(y5r$8*~T#&bK^EzLCE?mOFaN{0=_Rt$^34&kTVY#Znpx_g(S4@Pj~V|(d2YiC zQYQCd-~3n0^B%cr^8B9I2W8qVQWYM6cUKq;y?Za`R9I`)&UNGbwbY0T``oqEvI+;G zuUE*2ZmG~2@wX}*gFgT*r+%n#+$_a)P{};DBqks7=Mlyn(aBs-+hU`Wx#aQ5oO88N zyQOxi&B-M_JPvT`8I!XhxdtNVP=cQdPdV!NsS-xxQz8)Iqu5Usl;ZL$q%=j&swsRF z*zMYu!tq@x+~%*EW8Bukwu8-cIfcjGn`S94AD;yk2B4g7;e0&u(R6E6e6`Mgr_0pW zp;~RK!)?36s4d4omA9+0|1vBal)4fcmih`bC4}n`lgh_(rPS9EvEzdsTkIHeI<*N> zzrj*2*++Iv=#s`Yxi5{!nSN=!6+_avv~kAINvrDB>M2B~sTb0?K5Npr4sWD!o7+z) zyS@9$Cr@{x<03^j5fb^k_P7OQhM$wujqoKbM}4PoiJb`KWXnaG$JZdSh4v&R^PS zMWePIYBk{c*kv30UqSheGq|=rGduy98yK%DaAdymi!w}WXYk&!CH!sT-iDl~Si`bd zDykvZvy{<|4Y~ZS4cnsMatrvW9~%zv)Kb4RT6<;j zmgZ)0-?Oc!%$V?o83F9)rmeFbt8JfrB%4cHko^hPZjYva-miGvJCMzv>AuU_rM}4K zn)uEi?6%u&iEDHb>uO`v*3jlr$y{c)a3_%GNL@LgyVn)k?#TmX3GMNWMBi>Eblfur)L!VKXQJ{~-G%=0Oa=873iZxb9`&G5 zMelsjD4|SmMO<~7DAdWD1ez(7>s^TJWRD6>^ezG|5_-&=s{+*vLd(5*pqGUicpC{#{=F1 zRTnxJuvZmVsY2HR4uCR+oWOh)shSFf2Ob5r6Dor=T)`Hqj@0}DYjEUD3f@wle9TGF`p#HiPVxc9`UH-**(#i>}##%xP$K_kSf z_k?x_Rneu?M?wdJs)IfgI)b#)>T97dkyct=uw?pfocc-9c~Qp{g1z)G{PaC8<$D z-9pf|YLd`^kbG55Ju5Ua>o&__XA zg@Qw$#1-k?LeZg%K?j8rLo4F$+J{1^p-G^VLfmGl>MJ2`vs86n=*`evRaadRIuM!% zx-Rr7($W;V1^#Ax&LS;M1z0kBrJgD#X&GU0s-B7w$_a}HB?vVSJE-fcszPnU@5I6_vcxmu<%0Ai$bN5)>Q2js)4ko>Rn4_4b9XClGZysj+&`Yg$9Qw zfG+#wY_5Lu$=O`p^vT&=c`!KK8narcFhh15TBxX^w0PA*Wmv)%#o;bh6QS*%cu*Um zXHn}`s*BKC)Vh`GWoVk(8D5=QtD!>qpf+l<TyfTQ>;3*Q>%nx zLG9IBhV01KK^+p}k*|aL+2%wm<*AN}Dx2-|3@Wx>by5LBql@K&5)D1$nNlo`I;jky z`NbMiXVs*L8dDe5%FscztXQ1tszwX(`nsy+hGr`ebyKg|Y)mY zs5|vkzY1+eS})~P;d(yf*<7qU^-(2+_7&?*{ZwP2BcK6lq|h1AK=q=~c~Gu8YRI3tYqiLwZA%ee!QG=ST3mT?M8?v8c!&IW7 zgQ|YSL>i_V3N;6fP~C*OM9iR3>QkY<5s%Us)x8>*c~A|Bc$Oxp(Lxg=meV9PPH1<; zYMQJb5z0r}RP~r4Ui(IxrWQ+DiQ;e4bhSe$9yC)O7Ft$pH_cYZEP42od5-#0(kc|+ zPjk2;_&XR}y?7NpPkm?7?Dox5*JL@HrmCBqo_mTwTn@8RMX=xLQI zX(x(b2GtY#3hP^>MoP|$sM%umu%wkJevKBZM@%6ZeyI9f!BLAZ2)N?|`B3;fh zwM-~B@-n@sRv5DTeT90>kR7vDsI5XgX01?f3w4T&Q!lB5LcJp6K_3Y{7@4nDs*^$^ zBaec8&w0L&r#+^)kLVUM6TMTS_@q%kq7D`^hb$`>J4?jkW(@V zG*Bq0WW2Lk4HGI+vLa}lB~#BWYO1919A%4|E5v(ji&`kewce_h2yv~qs+WZBDVeX{ zRIdtkD0vjL*^*hqHnmgIcn#asJ3_pMZR!IdZtLypQz35a?dl6lrj#A(ToJ{q9qO8) zgP6}RRd1;qLfbvdK&Tdsh z=#`QgAp3VP_)y6f&f7)wdC7J@^aIlN6s7%vwAd>hYq96 z_lwewqs-e>fHL!o(k`OR+w@D+LiIsW+Rdm%KIDxasg4w-6^kC@L$T3I)rUoC<)fGR zP_^h>e9y)H9Sp7)o##VMqARMSMQI(QlYEGezhgydeEi)e9$P;yO5?HhHuZ^~=6q6= zHY9qE4~>m}-1)R9ZC3QtK6DVr%JHJKr=sIQX{NW@vFC)!Dxy4mSEsF^LN70OQgs#L zAE}y9pLfkH=)OaComs4uG5bvYU)gwZ@k3LsV89L~FCni^&R?i6? zj>!Y9lAPRTXViKjZnHCLs}Q&K7izZbem3r2>W1Jp2`Uxi1x{03q&6->70j+?T#lu|nMEzf}oB+~>bl zNkV)aomDA9d>oxs8A9AA&Z#Cs+$YYdHbQ*d7OE~neB2hQUP3$;e5VEq@mTPk8ZN|R z$aytRh{urgYMKxqe;3p|AwK>ts3#50_IwmG8{gPkD)f2Ge9%gvbJ%|u)jFY{u>UTq zErtrcJf8iab_wx#_JcYgIsd|Pm(&pN_Fs^Ox0SA@1{+ z)$c+)wq8;Ax|`WYJhom@ULhWne^Nn0JSP97N?FoLvB#aCRT-f=v0pk@Re7NXNc%;7 z&0mSd+${(6tNK=mN7LWzS7DLHBkgahZyM*cGppa(;_qN^Zft?NO=DvVeP~u}MRna~ zM9#-!lR*7VDTQ86`vdotIJwZvX@98ELR{vbYO)ZQ`KOv~Xr}ozyrEVZ;(1n_x}nw! z@tNBVwN>by*nIVu+AZ{P>`~A`OQw{+)rWV`i6Sa={#KWY=(N)MhM|LAo`;Zj)#F+p z^zuA}bgwx(khf{=RoGvBzIm5aO}NU)L~H=;bm!x~`$wp2el&L0OWeVh*&d#21nN*IIO7nVH7 zOP6wm>vKYvO2>nK6mrMKsbcz9p^&(E&`lxkAracYKJV+<9_}F#I?Pa^nUNLOQIf{> zEUwE5m5i(Giqw^b%EZ+G)xJf1O zNp+Rim4ptJ$pF<7;w#9Bx}FeUK~B_-g!n#51>Hi3?~_!}9feMoY2vD=dkCE^(+bpI z=%+FTs*)ZebfZimXtWUD@2IRN3-SGq%6hhtf7t?6ML#YSQMM5DtWX)GRn^OdY9Xzv zenlt;X-RscP#dHr=^aAdkycIb6B>xLYWjU4K1;5yKNjM%Rj0vm7DiLT=W1#CaUnieOViH^HA5-&^m3t2D5ai$MTqBv_4P&}o)6a7 zy9^!VD|9*?Us+W6v)9NPXvdHp-5Th?J1DM*#ghs?KbT!t~g~r7{3z{!9B|cv@(N77@i9ZT@-jJ>5J$geC zZE)SAj}*~q)j}7@a$K{P`hpPGtfl^0==u2Vu2%XFp_TD(gPcaDUA(Vi?X7j7&>L8L zYhBzB@AsvujV>j`d!>y|6ynd7wz`@SkJoK=s!$=yY^NIv{f;u*>83&f2}fP+bz7n6 zgcG3tmQ0`Mpt~8ebEyt`tmNz+e%{qVPZ1g%{v&9v5Pz<8)C+|8bETtRBE+Beo%9MJ z{#Vm4@%DArJ1m*HbkX~Ya>n8J1BZ)p#)Ccbx)WI`c|l4 zf^v7$7lrZ?{6N=)#wJwJ-SrKjSqara?i}7LcE8`NgYTe7OXiB_y}GmzxBR`jg3z{v zD0dHCUFc9k9H_3)R|)y*KAkCaKH(^+nb5BZajK_oC-iqhJgB=+NcntqzwRRxUH&NO zK})8Udg+mO&;-fJ*K~U6=|Vhe^wRT%ekfVf-CI8;^he25(DOnK%g3ocdX-Si^6{Y8 zESdH7)mw`w$K6-wOU{y*dGyzx2$jLiqrW~Q^Z?2npw9{oMVSNiB|~l-NGDnHK2pAodyq~MT3o&pC_{+*Qm$?y#C<7Ow-MscfCqIKA^r?_Q1=pg z8Lc~54-|R>tvgr`H)MOk5dFBM1t#XJA^I7i=)|L-Bj-K=%ppm^D`S7vdvltj-fES7EYyoE|Myxxx(4!$P$xJmMa& zXA9M@umJRg5RW|*^s_=d_Ds+(8nX9~ChD|%ZXeSVb(SS_6i?L6gt#sfb$cP6?@rR) zg?PR@N%s|MS>bi}Wc{E}mkL`zqb!-D<6%8f()j%EVLd~L&;K6Qj|y>1OwmsZ@!F^8 z7Yr5ZJ{79ysd}|dGi6TIuNBef?x}j0p@phJ#S8A4`ix!9+p6Lf_bh!@s9VK2HA`O< z8f@r>&`TA6MNZt}#9yKJ&5B!*v#iizLm5JRhhvt`5;|3pDM#pnp?ib^DsftKLj~R# zL+vH4f2A8(Unil5D&-<)SE0F;_JZyedZiNi&C-2@_Ez$M1_^y!iR(E`=xn7>q>T{@ zu3Q}SuuzJj*+M-kbI!+v9y0W_(4&T)6Ix?vnb6_Nu~=?}(6^Q2L9Yn?TA5pSgHU)C z-u5?yY8l!p)V4|`EVo@~R+Z|YJwkh{q=5DdeQcIHAXI4RkdS{>UPHbmU7>0W=!j5i z)%qyqtmJHooU`?JLfs5~FErTDC83#yt_Zzi=&B{Xy=tc4Y<)xMOx1h*=IFA`On=dZ zp!vG7CGS-%_k?aL6r9A=La4H#*0Nlqq>g@1=ysCU3uy~=CrNua={~=O`mE55q(Od* z^hKe$Nu&LiYNxqf``o0de#>-#&=X0I_^r?-g`P=z+HbY4Y03LSQmEhSx~|YRtnYPQ zUvj>Sy1cG4gg#4p*>9t6A@qIH>wa(Oc0z&Gw)t(pY=ns@L)VQco3HRXxN1YrRD14WxamR|)L~ zozw3N9j<TUcl>c54Y8r}RaYyXzEo^dt$`~R#%EqQCy80vpj z7dK>Qs#ozhJ7@XeL$+S7`+VYa7La)J6ohY9saE(Apj z@jUrYT~3JS$$#o9mdt0s4PDz%p_lKK-_Ti>%w6sqdZrNH<^Ef*7vlTcH}xr5j>mFE zXC$pe@vr?A)og8B_p9PR_`B#KOI{vnJ@mW~kHQ|>Cpl+T|IOb+`9giG|K%S*r-g9O z+Y?M@g<>OL_6ws+LIIJ%o?`T?A-j)C(BF5EUmM#>lau3A2?`OKl^hQ$DfC$KQdN@5 z2rWup2C8Jpo^M9c5Fws9M$>qk)3jhTO_SwD7h8(7c|vPZN;Exbmos-QV`!-m_lX!< zDa3sumevVzpNOR`Lc5Ync}mePp+m{>paX{N)|RFtchJ|8lV@_J>AVoHuQdH6#IuAr zx-P`CggBzM+)4+%-zTSd%20sN&&l;c5kh~UpOvLpAt$8}RNj!SOF2ri+$l#X zLJd=%24x5}Pl;3U)I_LVN<65I5Z|v#pe{muzbb)x2~~_MP~~Z$P|dhP&~TxySYINI z6M6vaOQdN+qf=UWD$qQk$tfK`PYTUSY2j3)r9ul*+JROI@eHsMtrOxIU?tijv_Az` zqG*@U`)G;EbU^6ilzdf%jtHGjISM*q$@G`1^rfL^)P%`&qDp{#DnmaF#OH-jH>gvlR*JO6YD$;iV$j9VZNs!#R_$)un<&UsCW1@CzFzd z28Yi9wG`qj`B~Iah_B>l(S3&O5uQyC3-J-&h~^6Mcf}gffDX21@76g1$`ksi&S}sX zA#SA{dRT~CDTn3=eU9ZC(-T7Hv0P(XY{~4gCiLbV^g$7A_B5dfI@-0TrpBpzXsA%* z)OgTXp-rB*JWXke(00#e&|IMose3)mXn|1o)PtZULcLRuc$(7+p}f>jL9Yr0hZd+7 z^oCG$Xd!5qA$#wvC8c!YniXok%hrn0g!nF78`>zu_v6~qW<#?*6H+UxcC=IIk<=v6 zyFyD-&v@F?2SV#ozX2T=;yb7v=nEmfgW7=#h4{{LNBU8S?<{wu--P&1ZzsAb#CLi- z5q^M-KfB*MQ>GB__b$}RkR8vuP^UZSK1;ZM_Lip$LOea<*7_3bF7lxob#c|GC@sA%t{N3l)4C^AuOjMH z_p}f7sav3W7o`oaTj)bmP-dT^w1p`1Hm$5n-o8a?Z`Aer&_0yeuPE(9lzE#@*A4gf zFG@RKx1~_8de< zg}6Nj(J3Kr&s-`H;`Yp??}fNMAEcj!xIG`FKZUr>29ty5NAdYIx7lC{65=)+LdAu+ z&4y5EA#SrgN)+NY%cJT-+-5^5RfyYcC}mnQ_rr%#BOyMfhf{AMKBh;~Mj<|?N6}_W zUf%By(M}=W?+?+thGu&{NQ+aW=>wt9)8awLB`5dRG4zF`olnaH6-pZKqp|d(5bvY0 z^qUax+i`SLi1+O{@^rPW#C?7|g$Z$=A5YPS>@huo%H2Vgizr@ApfpS79{WVf65?wt z6REjSNWFYDiP{U5talW2uh7Xd+1|<2SLke+W}v}BUnLZ%hiR11`Gi8yB%!kP+IgqY zOre_fx_}-tWbdF(rA3m)TQrrH3GubjY4oxXUmKl98-)1U=ycj9#Mefr(_SIIhBSi? z3Gw#LpktQIXfu;e73Cb}ok;~nIY)!O7wTFMS1ageq2Bf4K{pK9v2`{z?8bY=-ldsC zoekOjFo$|t@=QP}b7+9j43sj5h6+83w7E1!Xc5xp(o{os4fE)R5RcxEP)2uNpIyTv z)Z`9oT|{%dk5H~5d#*O0MhNjdc|J`LT3_#R@1rzbXiL30p!tSodw#8#s~)4Lg#7F0 zfu0wNsvoBwr&U7b>c@j#6RLu=CuplsJ)}KBZwoa;+5$Q#)D3A1=p&&)NLxrJg~lOm zA$={xpDRz&c_IE>d6KRfvaR$K^}YA@et4RO8M3YPG>t2wJoPlKFQOQ=h)!5ipVnv6 zJxuGGx#A-73UQBIM8$;oe$_J+BgFTso}mOGo*_L;RfTwl^em+a@n`sAY9Pd);ftw> zP``xb-X+vpC@*0(sEZJv=PafBg?RrhrGY|!)z4MW(J&!zdLC$;5Fa_u(^Mfoa-OGo zLOi>Ffffq!?EVE>D#Ta8m(fc?d=-2dtrO~(u*<8@ z322uk)xE(5?|RA?>IZs_K9`)s8x*M5=^LR*4GKXQh2|n{16>tbjI<4O!;*RhYuHGE zJxzP6Euc*lW6ARlmV1NZg^psmH>j%Q`~o>QQ+=Tepe@u~a{i9xwo-c`cSa%TUPE@A zf0O!38Xr|}(qJKO!EH23h+A+Q&9!7&X**3aWUpCmr}rf1CeJV4?evk*cF&)n&xD$1 z#Hk(hwNU#Ee8-x8Fl0xKx2XR8w?~bg)ZUOCHFi>WOP+xl!2vs|kI=A;2+)H<o?WGxF6wdQa$!jH95VLOg@mPoD|#e%McE4cVH#L*;wl zuGza(%aE#rZqxG8m?6D z(*~i>8m<9tw`BTRKJC4O4jC#mSN8JhBO$)BmrtKr(tKqvpIm(u{t7i;**iihmdrKB zqm(6S{L7l7G*^hPIettVh4{MSCluD#mcrK+Ptp(}z8-m+R$21$^~f{yilp(i!!zXS zXP4t^hhI^S5MMhiptXkV{yRtA4B6x89BsNIZHFZfkFDoupAe6&=jeT*-r*Smh4it| z;P4#KX(2v`{f@pB;&a&V=m$e~hIF2;OImbh=YaF1`*W>ld&+0_00mew`{4o=yMtni zC{JCW1X->I=K9}LRiSju^}nYSAs)*wQUf6#%P&$Bq0zYJ@dLFMT8k^CKTsE;hM5KG z65TJ4sVA8D8nk5WIZ9_KI9JWFPauFyhB+vLd$xI#;WwtGf_ zUJ~k)iC>k|t3nTE#)GyPvd8AngrC;o&$j1PiZ*2T?Nusg3D?Gb$gbfR+AG8}&RA#V9UsIw5a{2z3`B~!CM=>bXO z`O=>>RETT#Cyf>2Ipz(TBE)md8#LFFDdjI(a0e}xoLuH#^r8@#`4_Df;=c4ZZ4%zouCkrkr?oKu#(CF703WaAM1x*rKpV`V& z+_@t3W@ZP_b)mTIr7F_Vxpr%-W-kNb;T-ro=uOLR=PlvjC%}esvb%s{4e{~5HK3$} zQ#AZB?Fxu-x)jkn0i~T>OXggroHIg*Kkdso6NEgtD-`cc7mC3BoOoxxP$AkZ!FfvP zN{MBl=Y{x}8ReZ-Lj22&^3H393iV%+QBI<>%chxLSJ8R5h>ir{S*Nlbj}w)hZ-jW9 zsO(%6;~sV2mGrIwQ_#M@rmX(+_oUfXFZ#BG-Bv=!nuOLn>m@fl`{ z(_4toFjJgdp?(R&-F2K1LU{>eKof)xXRlPL&UB$;*=s=ag}ANjI!_64Ti11-7vi=~ zb5;p)Tc@sB)t#0gat+gz7f>74(B4 zyX{S!_IbCr{T}CjLw4KmaUQsXhFbD;!xr7+j1lUOExN~3kwI zI6MS&M#u@zSFN10LSf-YL6?NqHo|v%onM6BYJ~6hI)7U-Yj5ND4K>G+P{Dm1^ZYUkW1#GiQWo!&zH+1SyUDa4}G|OJ<(c)%iwRVXQ^0_cV%(=Oc|*D%vcrj+gu9+`l@*%&dGsqRjs&^s}4>RzX`(BT+- zE7z$Yl$Mhg*u$wVl%3NMRM(PO!+lPsA-lErIZcIl4fi?iggWH33+(B16Y7@J1=Poo z-P-#derEmsIsf0%{{IX08UDXe=Ks6xR;9#$-D?k-ZM16ZHqAt=`nJHryIRAhE;Vsh zQvBU&JmL0#*)KEYuQuzlb=YG3n@h;*DPhrw2@#F=Lo5A<9(N9f9r_5ds$m@G?sD{ zf1e!BUxkvY?h~nFA~x05?cdi1rp*6ZpIiI--!JE1=d^A3uk-w~)c5P(Zl8aa=YKZt zyGQt5{(m#IIqE~I^Nd}3U%=8 zYkqf?9kF|wtr%ob_&C56x0G)vl2vWb!+AYa1$D_PW_&q?r zOZ_t+ik!FBYxk*bD{d1~{7al$sWx(VIlR=Zma)E`&r-I|ysV=dA%16D-5s}Uzgum| z%}mKQ)kfNy2=_6U@{Rj?o5wf8$Ds31^K+g5QL5b*TaIlF-!gsU?M`;F$6&K|F4IvwtGTrohMM>| zv-aEm)=bRKOt_p|vllMm*1qS>eu->V7t%zv~Wd0+pdxbIqS&jJ3?tiU(t-Tt4g_wJnk_apzwcG=qUp89`k zy?UvupX!M>gM@|M&L(-R*XF z#CI+KiMK}|w~v-t0sA{gnE#~wyO*`&Du1pyX4Jhk0{^RsOTBFR=iQ~*i0|I#k(|t| z``;TAY}@|#_LOgZY&mz2MK9$?mEF`Gq=_RdROhBG zwbwjL-AikO1A@Y#_5GqvD!zr?w0O`$H8&|bDB3K$1d+?MM2*B!OR#L2pe1S|6weNA zniw=5YpEKv3Chn-U4T60P|j5R)@Qok=%9Mgc$IBR_7eY2B%I1Li$LA@2_;_QJ7FBp zB`>)mrUo@P`NOGhGtSwd8K;IsJcb%JZT4hPd!#N2s%5ronwr*Z13W*gx0d2(^oG-# zV%vg7(AUj&BYvsbyHI{w?=%(K{L`RZEc*o_{KVc7v^(N@P(75hk+kOL?JlJ3=KjH2 z^V4s==Gn(fh=1!hjrcAG*ET441$A#)EO;St`>dtm%}WITq!u=h4c)2RMTdE z27A>5Evsm*gC`^#Idk086hF`Y7)^*gOU=!)?TvQF+Jl0lHTRZj`b^8HkUogVh0N2x zw5$}8>-e{-290agFl0R9?Lwv*&2{><>KYQQxkp9o1x>5#;;7Yx5H2%bl`?)Fe2iK` zC5mqeSwj51riCVzYjrAwx8nPdCC=tne}}Aa_O(K7^%F_e^$O=mtMzKF^G&N5wF&uM zq2c;QtIM>*l(xe3=VKJrxMC6w3$2cK)AkLkj?p9^KEXt)s!Q<6Di-k^RRh{l zHHY>v+Rx-1th$HIpjcfuC?PD_i6nmOBEPpfG^lpaq@Yd(*L#u?= z3auNO5tl)M~c>k8OR|zp2i`lYz4Fw4O$)z0Oe`bYndAritpV@4<6c znyP-f8J>;O0?!C(iD!DWQsZ=MJei^mo*mH^&xmNJ9@XvDb9nCh3f)ny(w)@Hx-;Id z*#+;#?W#8FZt6|lUA?XEReSLz@OSlnDqr_hNA&&bsP3gc)xGf^$-e5e?x()e{na;m zfch3+j5@0aV$>d_F5(Lum-K_`XFWt+)BFqMq4*u}aJ;2=gbJaNsu-R+9z_qSQh45Y z9F4`hamV3zpW{^`;qwDe7OzSVt7Nv@SvX z1irpO5zxG#DCk(D(}POGKN=Jdwd=iX%DEPljL7dsedGVy4-UQuOHB>tWo^#CgSkGQ zkiJEcrlDNVcA;E{?xD+}4;XzYlxs36bQN@}(V3xZ;pc|F4qXt+<=8T>h4L2NG`iQ} z(mo2ijy%W0{)Uz%2W|UFm_De+7@e2oVVKQ%Hq7&DnHpApIV?OG;8 za%s~dxdm*b&_wLouSDM77mt{SK0jr&Y)L|XyRPyjxrC&Wy!P59d5h|ntcG>j(rljl zOWrQumNV1z7Mr@ol(4sCV=VPt^mEYh#Co2%pRA2u0lzVt>-=Ukx8Ba^HHhqu<~6=+ z;)kQTZ9j}&kNBr1a>hiyiRN}bAI-h@QZ(23XS38F(OgekTiXJzm`zwVFlHOHtf`Mx z-=(BX*X=E}<=8dan%KJeuGiMh*4D1eZiU?K@DG+imY-yl>rX%h*I2S_OR~p10A)`_KVI-ZBy2-d-tz^F-1Y zNL`|Tf!cj!+u!E2d+@0QK3bO~1iP`l3AgvuDpw*R<;!z9mCJM8su^$VJf1R;+ReoO zz#Dnc&xv(E^+4Q~Z(HDPv(%16F6SMi%gwfbn8n%pZY)trS$gPQZ9EoyQ(-D*AwKeXnv(1k{~n8;zHUl_e+ z)Lm;C^2F9!4Xsj(>zQ4P*W1(R*jnolpImDbms4vSbh(LdF#3Vf?~GnCdedm}+FU}4 z(JZ4~j1DzA!|0;gT*Gz7Z!vnz=#RB`BW~M2E}1_;@cwZ`j+xJh2a|ap**;@Oc-vNX zt8ELskjz`LBAJl0bOft!X`d!n#`M%i>>gR`WFr!k!X-bK!Xx2JDO`db2?NZrv)aVl zy1FCh#uOe&?7r?-oR>PA!hNYvEU(Mf&6aHQ%&5~B@h9u>Qp@Xb$rT-5%XDWkN?W3N z1h!+&uXVVO*`@w6epf2zpBZ=oIcqtWp$AicfzA!(^?sDfV_-|?1|oKhwPU*-hwW0` z%u;rYwY9RN>o0Y=|JaBtjcejf<4=vyG~SkyXgg&WkTfm`LliM0h(t zvD+&n_Fd)tvl49i3(U;H*2I=(OSZMLqd`_ZuFtFGdSZ>`%X592)aws#^Y|X=Hvi1P zNl4AD$L+Sv=t`q@k0&@!BXw?l-u6ZHInPp~tBr0l>f2U#f66aOSdS8HX+6`q99sw5 z6YL1HB;f?|3`pmkdFkxOrJsSGNGH_a&N1vKh#fs_8(uS|70ck>9+$yeTES>-qv=NN zR@?ljLjXQEGk7cJWW>N%aGI z@NGlxQQtM>d4=yW<$J8ztyrR4AiwQ(H8T6chnl`&x2tpnuccEaZ-wvH%?zA?oTD;1 z^*!fF_~(tc?P+`d5%ntKzP-z)+P!1FE#LR(E1t#cdeh-Hf6L)E|HB?x**q3?F?zqz z0Y+^-hh*~}S!UX8R5q6|E}Prxh~guCnn|7K-0p92W>iTs^FTX?v30in#P-0w*}Qd= zUFWbBwtZ~N|D(RdpChNTxwUxxU}GMDJcK<;l`PJW}?eIPWAKO=1ZxE$VU>(9EXA;0zCm^NvV)1)Z!wX0_!;i{^m z_$=6gbKxu)@1(|mgmYnkcz^syI3M=Hd+{IPoH!6Z2ue6F4u%hb63&l9;lrT#-W2}B zTX&&^^JIQ=YjG&y%3maW2`J&5xg>lPlyKf04Ug+K@Ui$0Z|Q{+&Y?@g$3Y3_(PiMv z8pSv95h-Uh0cX@2XVeLZB;r53ff`CUudWDR2}(G(t_)uVN;to+3ZDceoMTsmuMQ=g zXV-wQX|y)Zwh8}OQ*g$uakiZdpNju$oN?EIPs9H;&bnFC@qbeFjb?zfYG^bIS4K%? zLh*eM{GU`Kqm5NIB2A!#s|h*qO`(J<3QgdfLvimCF^y{rP2t-hhWGYD3D;L!!ncQ# z>VkBQ>kX~pyCGex?od+qA{}oZhLY-uD=)Za4kgt~@!M~ELrL|)a(I(6lvF<~r*W;K zJNy7Fr_}>c!j%htm+l}a;R;4C_y?h+24iWw1>5LQEKRt!!8!~}Yc(87Y6OM@i-xUS9mILgrK2`H%rC_}4- zMi=27W2Bxo`V7jzyXlQCQS%XBZ1g#lgf}=tNi9Pe8rOE7fM1C+v|45KW%U#ytBtNz zix7VmN@^p@BfPh13G@@Z(~I!lmKUHWQ3m0CD=VO1qa?z$pViQFxK2d4{<9V(T!iA= z1-NRY@iq>)r7FdJnvxQIFn-h!;w@-t-Q9Ae2;)J^&wVG*rKbNQlvJeHig# zMvLow#3P^>2lNs6NTX5uBSfO1gs1BtgO7#c8!7q|cs%hQzN|hDUk*wtUY~?dfRZY& zPr)Zb2~Uzg4POyTcsl$S@Rgys^QFInuL>nR#k~N&8Wi8m)ZfD6iR|#T^*Q)tD2{sl z9ef=qj(U9ozAh9;y}k%v4~pYmUxH7E67G3ihR-mXseeMGq0uaT74d8+j(zdeE|l<;<5>8?P{Ol{OT*_u3D*|Ozz>7syHC0t{0J!FIl&3= zqo9Om|0cqZhLRei`AzX-p|~TgE5nb6VwBKT;U_{dO6Y3vlc5+NbPf0^P*PKMEqJ`) z6@I!-hMxh&D52}X&w^rn&~@SGKuOKj_2B10F+Sk=@pz{^6yt-=fPV~1YLU)_e+EkG zS)C2P7)tm=&VgSFC0rwI0{=V|qk(P;zZ^>HMco{J1(a~@v?cr+DB&7vYxuQL!nIWF zRkaREYQ1g`{~DC={Lqf@8+B*+4MsQVuJCW*$>CaUhLYN%d%$mn60XJegx>}wwO#ju z-vK4{mhJ<;6H02A?gziy=w3Ylkv&HD>4Avvhmv|n=fb}WC3Qd#hCgWZeVvEMVWata z7~&ro{ZNlU{0LOzy6-6XkBlDEqY?QSicwCFh5r>3j7%;sW0?2_%ES^>&P?UzlM@3(6ivbF?v?dLF8Mb=kz?p3!$XG)AQlaLkZWM zAA|qi=nwh{L@pY=q!%LoqtPq+Da0>BHLgo9g8#|rRsAd?*Pw(adM<(g6-w$i{T%%7 zP{Mu37vTSZ60T)0hraY~t zoruRm3D? zn$T(Zd!QIU=?nPgP>i4S6?{u5#!o7MZwW{6HwiN%{>w7mE23 zU56iPbU6Kq$S|WL=r6=aLNRN?lTCqgkEl0W=p zD8@tFS;ly1bQ%RBGS%pG3PyYe6yqU3vD8@;u z2)_b~agr)S*HBgHD^v}-mTEv>rCQK+lnh-@b)c_NUFhpn54wTUp&Ka!x`{HOZ%{UL zGvz?HP!s4@Y6^XmnnSlyOXzlL4c$R)p>I)p=uYYg-9??DyQwSmZR!r)Lp`8-sV8(F z^@8rFKG1ilAM{-s06jnhp$91!`W_929-=&GJ`IC@fV=P*CutP)LmCbJh{i%cq4Cg9 zX(IGEO@^MNDbO!z8uTlg0X;{vpoKICs+@UHw=*9t<_ELmo8apk z&2Tm&(!gj#XDi~FP*PdWHu!8PW>d}%_#7x^Q_fEKCQ!_#oZawEp%@LEJ@Cz;7!90# z@GXtDcHTjxmC-iN0mR!vNp*DIgYN_-{O0g5Jbr5kz0b)_^9B3}C}u~_ zSMZ~tm>oF<@S~xm#yj7_Pk@q|=$wO}1SK`u`40YJD5)vV1^B5@Qq!D^@YA8B<~Wz& z=R!%%b1uU_0wp!y`3e3}D2{RGD*WS69OKR}@C%GSz!ak)){@x2}S&MqZ^%Y#5X{-dc%o;-(+;NgXaUNEk@sTN+Q11=r$)B@$FC? z^-e7OTTmSJPHFgEP#pD68ThxMIO?5p@Oz;+>YW7m{ZJhB__aRfNJbAj6%jdL^gX9C z;)kF((w(aCA3|}YJJsNi8vWR*fygnVpE$J;|J3LSCmHeMP|S#&I`Airo^k3T@&y!Q zf>RIvD=5woopksDD5-Cp4ES%Mq|Q2-@aLcyF`R7p@1Ug4J2~(dpg5Own!sO#;#|^c z3V+Gy6{k5OmyQ19v_$-8D9#_9*6_bUasKGEg}-i8x!NOg6TkJve8$xgaWd+1bwH!}B#YpAq2_FQ-NagAU9|Fa^#nlJC1Qb_|T>apqpctuK z1K?wzxN77Y2ww_{t46L|_&6x88o36;mxYol=gNbRhmuNg4TCQa#Z@EM2>1$6Ts3ly zg0BR{DCZgtUj>R$&NUW335rq9H6FgY(VDJ_h}1Be?3#>t3KXN9YYKcS6eF8!8hm{y zsdU#2_y$l?8LnCI4WXFfxaPoTK{2wq=E3I}ZR(nj$UR1zxgJBjITT};>k0VQP+Spm zErf4xw4>`OL^>GlYw+Wt zn76n#z)yr?-s0K>KN*U7i)%Cd6ewmauC4IXpqQ(;wn1mPc0lL4c0wO_?S?LL?LnSr zj4pQVL*!YbOI+_Dz7&dIN4gHczW~Mf<9ZMNB`B$tuEX%FptwHc%7=d$it)#F1pXB$ z#vj*5@UI$O?>dIaI-{?-rxD+6bdT!` z#NUQ$wa@hx{9dE`T?L4|1I1jz^)37XC}t6^bMS|tIP-FS2md}4V~gto{D)ACEv}33 zN1+&1T$kWKhGJgfx(xp*6r+mkC-@Ukj4H0H@Sj0(&gJ?A{&Og)Z(YB^pM_$+;kpiA z2*o*+>reReP@F@#{(}D=inAxzP52+6q%OI%3+GTqFS{HUsVgowB0oWKRm$ZLe-(NNCTq{-I<7I8qIcRBc27t%*UMre~-~-?k0#d zhhqNYZVKNLiqXT}9KJP_R9kmT_;yfI?cJ^6J3uiPa<_%=1jSs)-5$OR6yt`wBYY1i zt{u5M!}m1W-`y3FentnlyCePp6r+c`2YfCRqlddE{9vO)-MtXWGdj%O2l3%XN4onV zJ_3p{#61B1A){m50}&Yujm7!3gKO%&-EMUtctptjkfEV9@$0J3v}-DVOB{Vfy%>uA zqWT4X&L`S%xBj>fv%fR;lf>+joF0Id;{S6g{EzkBwfqV*-)B3{Y* zd)Qa8ej@v7)~|>Ex`y@qK7qOBmo!R6wL=|nJCMt73jcdu>nFn>&9weScu%(V@54tm zx1OKIKL}5n;bkN7{QL8H);EA3H^Tb993Nx-BOD)Z{TuL6ldLa*$0c`DPCy5xwm)Hg zP54)yw7w(97g;|Be(GZD`KkCvw^;u+{DNK97r^g*+j@6Ld{-jh`l|4QKC-?&yyuwp z6W}X-V*N_^ZpW?9hwpvT`pX>u#`@S!_-@_z)@Q@-y<~kq_ysqup9?=1XY1TPTi~P6 zSJ|J0|IFWd!n3>QdaSPqe+aMhwisfIYau4 z8f9(Uz7G!Q_mHpeFyH~z++?$9?M4nm$N0yAjsr&K_8F2pp-@c0S`4BFl6|Ek*d>xQ4jr}_P#$hvg zu-E`{+aPwMMP#5sK(LKDt8PM zLTJR9P2g_T-MpLMjod9GspialajS2#NjF+nWK%yg4=E)2YIi*m z2mxPZfUHn!t?Es55YFGN;-85+4M_VeJmA;i`QC1q8?9P(-L39IQ`^q>Na_WiDb>1> z6i`@bw6;qfUjbea^*Ty58H=I5(J@V`$;TaNy6qX?P^+fqm~b+*{I)9u&`XHCLTf;z ziGuQ^dTEstJw;)$x)GIk%g|(DwuUZR=940f&3$sd-eJWT>>lI$xR%OWV3hPkvqY>m zx~($#vt6Vqh(b_tlV#e*X4EOp_Hk+-z@%uD zGDV><+H~6x-E<+8x8PD0&%Kh#cMUeRO_9o3w^=I&-Dc_oKJ#nwX;-M-CPpJ zc=J*sW3kifMhm4{J4z^aqxLe#4J%o(i53Tu7OD}(+aksgWH8-op^GX)u*c6C48v@9 zLi9{&Gk`)D=Bn!I**SX-=s;Z|YFGPBAH#MaAjk@Yov~(dlSv%VJR@fhU`5+k8=~vO zh~|(Q5al6w($hL<^09hId;m#G4ECu?BUwMj)1+$B)1)w-CRM$jCWRr5^{ss}?L&#G z-xA2mI^j4Wsn+`JgGBup(Ht-u(H+2&_IjT+k**&@8gM#{tRq&Kn6@JN>q zGai}_cFE{eFiA}tP0})y#K~xrNClHvnr;%wP!hKat4-n@*xmsX>o+EqFlK;I%0Tv6!oDi+uiUi*RoGuyhgC>g`6*2sntC-zN;HrvGl&`~ z)-j`WMb2z^K`F2}phh{=JGfNWYp_@ZH(J%GULjDr*=S)l zKvR^S7D8Ie5C^1>kXl*`0mdv;TkX!OVWh7jnRW#)3SJak5L^&EBX~yeWxe5=D zapV&R(lJJxjy6n88~{W6wj=SZzQx*um_S80tBo!uRh0h=Y?H5;T4K8Whk&ERt84H}qqoCzhwTYz)7JQv(2Rjg@ zIzVpsEVQ_@5C_4hFT#k3)%vDTZ+A*{ET%3+oqi1V2AWt3W0N6_BTM_U%%g-CGCUTVvY>HJ>zD0?*esv5(^lm;p2~yr9l)&yL*d z5q1#!857L~uC1=BoYe`W2yyx5q6m92&E2>llp!r-oTSiR^7}1Uqh_syYQg4Lw9PgD zT(ylc+2ELS5Jn7=#C`>XezR}Vs5b8hb7mhVn8_3f+iB=qOW1<#*qAFYj0Q|I9mlcZ zCZRYk5XaF0fp%daCY*u4pg`aaKbS#k$6+$wanPOz##UFwV9O`@WBo0u{<$cs7*pG`7?2p(ka<>UOLgx*0D3%*tYyfIa3@o>%Rkb8Cofw^|!(ifP zm5f+}h||1_>eo8BdT%kwhZ0SU*9dTEL#q45}OZl#Nm}vtX?wG_jI$Kf8bhpuH z-72+g`Z1k~P_C&k<-vxOXc-sabee!8Et`fmXtYbu6#W>|^v5S5#n~Py6Z-8^V*TzW zu^uE=YXF(IK{h?*o-&#ZrXF?f_mgmD7abK73m}F<2_t|Q%teIYU1=H(qnIH;%$K58 zLnH!31HSE;u~h-dBg|fuorg)gP-~Pd2ZM-P-9lF@N`r{wDoiK=#4I+@Baxi|VjyF* zi7t}J029xt6FT;7TL&f~#cf5@43n%GNbFqH#4H+uOXmpoWj zSi!NDi*0FHn`5qco0Ui|=q70u#oeflt!4C`+CLW(?Yo9uZgjszG?Q((3S8ODvdHaZ z4&R7CqDrhi>hd}1@HyEEcgd07YE2+1&``vU=l~P{jOR*xfa48SZX&zFD!LtJe5G!? zegGC5n73c4ufpGg+gwzOP#)`;eD)!az>|3e2aDNl5@H;y!z_eA5+}U$jLy!xYuE{5 z#RZ27$9<;u{uKsUkW?@Q7PtMr1Q**Rg9%SW+;+u=xe9%bAx$~n3{TOQxh_u36k368*}|4K5}*i5!L};> zKL9$7#7l!9=++wE1;aqheyy=UGuxD>#s}Kkvf%(gt&x?bj39TJ+vFADjm)BiDAjk@ z8r*e24a6WaTg9w|T#yq*EVav}3Z_8Nm4al5*5SP)$OB0cSE`bEn3Ql&#mp^9KgM&96)&c# zitzC<4^zLV+J_~rsXC!bhZ%2H6zYw9`Z1(|gmGn(A{}PD+#sr7#wMYJe^TK|4hfEQ zFafgz62t+<(218sB_YP4!%p^Y;s9e}RrppP+N;$L>McnZ2bd0lRhS;7@F1}$F+y>D z305wBcF9DueHf#Wv09`+VuNGPdX^-_IIySTdKm~3i{1xjOr$}?6@s-B9S211tzYyW zCLYT;v;txcT8%n>UE0RdEG(pA?EwdqmsQ)mr;SBO+JYf#Y^#9dgl2JRYwNeGv<)Q| zV>F3n#DIvqKJS{puWnmY+{${Z6>2~O`Wm!I8h+l^iy1iKMEZX zuhJ_4DK%i=S2TOc~&CFP6_CgLA&$I42sM3t(=uz%mK% z{1wYn{CUzTi<>f1U`2}iEPhuTjgBAS(7Cp|>*ZuvEMoB%PBAbW>VM8;BsL^nv8#i^869Kr$`yp0aF;W@K(u{9_k zh?F3Fc@hK%i?|;!t;t-tQnlo`D;4fGqx0mP-1!6sDjlrWX+nt#s>2_or3{O)90Ft( z2V#K3z4F7Tru=xvpzV)pV7gbjy&IZ8_DyuE!zhyw^I7zC%qGC$UWC_st-ubd0ONy{@KHijF#>h}k5%)#?vHc5yASo0KPMy7&{mFDRg_ZFJutXMVD5ElZB zSxbZ=*HkbSOYu^%3?{Or1W5^D-2!qh2Ch+x9ld(pJSjKZ+Y%b(Gp6v)eL z7k7sHbP(o9im_fz#2!R9fmC#3gkvq3?qmC_oj!DcPNPuZQV6HVqSmDdXI@G?6_7yM zgp*4h3E>37aU1U2RJ8}ll~91gY<&UFcpNz5j-pNsf!l_m(iy`BwCNO%Lex8c`%3*N z46xj7VOzMo3-f2!vg@ol^85#!c2W7IRG6yq*-9Dgoh&+TEU92>Uv8}nA;aMe&k)Cw zwvmY~e-FcjJwoi)Q=82E>2B28O@#~XLLD6xjM6q65RR2>eOpwS*~Nw=HZjGZ(Dus} zBuL2@wA1o3PVPTIGRfT2i3^?&H+97M9^p_3(JW&bh|@udjH%5{We^LW*ah){2{SWA z1dLfqn#Kwnj76J~g?hQx)dKGzq0b1bznH2&2U`&yNhVVXxu&y8n{FEK^>tVhbb8n@ z#ZH)S;;WrqG~{&RbcBhU=rpd81eMm7Hv^f!KOHHz#8qs#S6i_ivExl@N7OoXL@5+X zn~xAQ9US#2C?FV3s$1s47v*^vK4pSSXb%-_Q>%f-L1jqaX&i_BaqBC ztsa2#`^|~=RD48$Wm^&ku@6Zc_v)A8t^ZxsXz2FR{oO*fUYV=%C=wxbS?pb{CqQ-w z>)+QyeSSwSltKkZ{jO|S34@Ra+9>@42av1vQWIN0)~O(`eskeD#+THCvZM;(oTEA+ zzmwwkSy;KDG7Ob&58!L21_`jXE3KE>QJgVwv+BA#zEUv}#tAkbKx1y%IZ|tXwdlnu zcd3g;Wu=vH>^(7A>hip4N^KG}HjRVT*w-UOJX_2|Q{0)E-soU{T!*iUXTPw?!!SH9 z?RKLqvod!OQow);?X^~^-iD)HE|{PO^;qq-hSwL+==>=t@;FQ=PjGLcpePQ4vEL?) zm+g2H3};gP7)tkDm93EO5o#FYV+%W9lGp}L%q{vwrTeE3!-Rc^wC8Hq+(RHq%#$2a zA;g6$W&I>g(n9dyz%Z`WtFfLd`>YS=Q};9MZ_V*=hf45gszZ*Out*PcuH}!ZhCzSd zfN!>>z9AIY56mPu-Ook9Ay!jd}gU+x~&l}+X;lY#jBERZkMh7_D>pU#?^Ei}?pUKRJ2uR60 zGsE5F6rf9S1CKfce$m$}*}0kCD*(fT;pWFtBbkS?7AB}|7Izm(3D1bv7k&zNbNf%hY_WL`sN zojyE=g)yF%@?C;RmU*s+*$7~wD=i*}A<7`)tkk}JOQqJh=636)nc#ko14)Y2$Zx9| z0|g~mYDd|)V#6)gweeQxohUICBnJh-PlCn)#`yD3)>7lZzM`wNR=!ZSSp1Z%{Zgew zh;xiHDAuXTVnf>VmdeH^ZK>dWzBWWPIXYPZ4Q6qQm7r3z+iibN2c2+V#TDV!3(7s}G>kBz+57$3^MU`Q*%W6S@Fx=(!6y&O{SsxZr8d0otD_vRB90Ae` z(4|+XSAc+8CW&%cl(1Id7gvNM2jK&1KQ=bu5U)^m!Z&%baT>+=_({f0+ zcIDpS8AF|5qbHl3P_s#5vg|{UVwUIY7$YE+CLF@{DHs$zM^c}ilBL3o52x8E0pru* zzRZFrT%90(a;cNi4T;-2blQl2@^)8f{a}vTjB)-ej$B|Sn=I@^+q>Z#nuY87;%0e98e`EtYFe{ zp%zNU~?}e%NBP-R$goKfSd8KZhx9V{;_TVBk;3pvEDr z*ywgP8-zIZ2qq-EPtAkUVMu3e;&Y^W&XPq7>{+G&OL?iRrNdMh?67DzVeFu59Awfs zz;tl{iLixXa$BM}$V72~iQ+)I5J5UVMj7Ckdz=F9vyv1%gFAWg&L3tMJSKp{$IK2# zG8M}^!#tEsYTk+S-6QtGd5(d%HXnbq0RXK5+V{@2IABF5t(BXQva*Ck>gi9M_zdY` zlOXcgBD(2T3H>*6_uZ;Z^Uxt>Dj@<)yl)GhgB0sg0VWlP zIwcj5a1NXTt)g*C0>_GU0Li-0SwA=Co!sQ3vTnGO}GXtyyI96w}s7CH9N(a%1#8cGeGLoH0W*F1J0|Yx1!kN zo>mwSQykj^G?NaniK!e-PJzUVpAn}(tR2D_YmYxOl|f7-*@zNA3|n}NjRTC4#>1!_ z2N;u@5_r%y@bDC@*An+Pp&T!m7fRX0S;QPU?O`W?W}e#4mv+?bn4>+nC7cHp)%44` z6~DaWoj=qcx@+Gs!n4=XL<(Ou<>AI0v}PoU099n7HVU1nGYN4OrOl84*isfN8DW*9 zhgAxLZQbjMrqBf%b&OEvQV$xZgkz2|f?WF$eF04FcsLJjzeek9_@jGC*s3UmZ%25X ziL!l(09gyrrDz?^b)m1Looz*S&=B=$=MDwvQoJQD&x-b0d;Wyo3M$nW?>OG(npnVx zhd&&qW$8yhTwT6QSilb6TMkbJ9!K{#RJA>?(8ftadj_Gc$Fj9OmExnYe~uWL*+aX^ zzU}aEyFEP6b{+cWT6hUN4x#S2@^;1TY}XvtdGd&|{@V_3KtOkbbA~vh4?F6VT2PWJ z>#UpG&@)R+ftSQ@;FK6${pPe3g+rf;DWo>j4U{oW+*TA!P18g8TdMg+$aOlmuVDzF?y?NW4X(ZGFxSJ`_G;8hI|diX6S>{Va_qtVP7>BO?rr{ z|IHFfX8Q_=JaDAC8J7=}Jk-!)X}8f$RfdJXh-MCM}?!4mvht7^L{i&1^Ev&BN;a20)QsMLfkfhNm(&4br4d#KBJHptva z3{eLj;|s}JzzV&N_m5QY9wHbm>UuJ+1U>K-Tt2~~;gle=RPd6#R5#%rLq7&72_+9B z5rf_tN^8I|hwU#T4=A^UW<-}AV(>srI5-#{mBJfEDolZ`6ZMYa&^AQ~k5~oQkk1;Y z_RKK!wABjyN86ZA;hc2Ln|2c8@#YWgQIMI z>zxl`{L|}f6Bo|&I(5NIr>24CaK{BMjoFciYiI-DPjr;mSwd{ z?h>%3R^f_$3IaX+Fsfp!Q8~MF;q2M7=gyWNn{wVMo2?sg|-!yzN|IxYFj0*rP_GxaeHv5?;I z+!CID)n+DMF4D$(YLwJKoYulraJ_^BTXCPKr#GOB(5IwL#fz#Q784CA3B6l{J_s6= z%i2g1?^j_1b>#iUXy>+;N>xz$t!l};(k7F4rA=bRUV(@1up? zM*{zPxcf;_WnUYQwfB*dubjIN^3==ej!HE>Gy4%puu;U9P<#YR%v^VNkD|i?`6Eei z;vLh0BgypQyQ8SWvGpVA{0sArqzls}dt=_wb#?cgb zn&HSAzz)lijNl|aipEYbA4O$bKSxo;o~R=Uxh(!DeKVgkHC4}xH3%#cz!pKsj-8Oa30?sEa5wW#Fg;7 zsXV#}PvVupzp|f2!PSxIad!@+Wsuf!Z{S)3V`3;w6Zn?Tt^q8m8c4MTTnph3p&onza2}sgb%UP)RAD(`aaUpY^RTZuXtXMAS*fi#quEa+ zHo$V2Za2mMZ=j5;k_N7P=$H-smh`*@h*oXZmPee|Pjw2Kc^sc&WvN&WrZKyX0C(^? z*K|zT*BY@m0hd9+dSEw2+~fGnEB_HLLEGe1LVcA`wryOkb;EieV821TgC5Ups^(fM zjhkSZXj!zB2I|>5DOxA&vGA*p|M_R?f3ffn$DaLP|8(O- z{@KXxFa4i4GsB~U!(&ek=G_2(qbKqM1Gu=cr-lFl{|Io8Aeb4>W`+j`hjY{T&1Z&( zGsCAc!>2RDnZe-+u$agKU%+n(zo)?}OIBF`g9LDKxoPsuO%t3KIFIOIMh^oxMc@>G z(*#Zf$PmEAO^lL!f`UzC1%kWF6~v@Ka7o}2!KVd24au|k4MKWkiOW1f!}y)T?=*fH zAi)xsETap&Eb;PmW_TRAk2Cji5RRin50mr5;`}ga5FW^kpBSE?q8zTn6c7QhgVu&~ zO~mCMWvWM&O5m2jEn=GjadjY5Vo-yzE?b0}KLcQhz!3O>7?Z3%M&%*JzFn&#;E5ZH{58zwuF z9~{W-j?>b{nZX3;zIR`9_FgCbyP|*B=-(CnyQF_#^zR$}`=WoJ^gj^& z4~+f?q6aE7FgnWE4;1@>#eSgJ56JBuUS8z|c7?3pF~098@Tvt~Rba~kTgverU0>C8 zi>cB6kouz0TonEy@V#H++Eq%ewal0)z7y8gDV zzoYBdtP1baFf)Y5dfzhCw-tX^*Kg?h9bMl-Q_74&lw9xb=;{24iR{Gq#Q1ow_q{Bd zoqz|>o(cQ`kf%}KaR3c{z!RTD6Ey0RL@M1_{v@L(vg9KSy8~m*1`Bo%`5;yMh9sBQ>-^s0k6NU>+k6LHESbx*~&A7 zSp{k~-&XuxUB990cXWLVq+o~Qo;pMGsIg-9YGxialI+!32RZb0C@lL|b&i15>80m|EBHfzde&9YfjHfzMcDg2v;e^dB3ha7|;x4kFT zOtO#%4HyF=I)zd70S2SjQt~G)`IAciBom(HtB#Yg9(|1cI zk0*ab4A1KNsMHF1sUgI(hkDW{f|x*Be~cUT579|@M+rQTRpTWe9s_2nbLaGK7lgD@I=tz5@E* zd&KwNvmDev3uLx23j)*o(uKL5XevvTt{f8*zVe*M2_Ct<>D=D@*a+sVzz~mVtAA+ko9gy}vwg5?oNKAGW@ z`C)1te`ZkgnCt!BEF?#%?vCw!9i0w<+;nDQ^wE(q_Nixbz4!6ovmQl0qv*i$>D&NA z=v?pjhTOpD#5i;|F@EY41soqo^<({m3##8~^uvYh;%PP>+wWI5fu6MGGzJvcX(H<%VhMUFM z0gOx-QBQJ0GlDU8bUc$mF);<%yOVW;2t!jcvO5#wV8lxErTItV{+h0jX^}H6&FuZY zQ142re|rixoEhS(&HXgKM|yb6bnY>HKNLp<^X3K4>rhL++m0&v_1%025%9lv@@qH^ z*v3xg$MKcZ6sJaO6T7PTV*4V_G2vP7O1_Ijd#(K9rIkfce+=JBJvTWud2aGNjxOMn zX84XO<#GBn*jnbVJ=-cZ;pmQC-#DVtxYef2&;1trMEk1~&WBL{{l%CL=e1jNwc1jt zTDPz2z^}uPgz@h$KIQTk1sz|GHE^tfV+|Z@;8+948u__ zko~=JVv#Ep$douO4{~}$H0I>t^*kJmm@R?dXOPxhVRRzVu>(gOa-<754|f)wOC{t; z_i=C!)&SE=d30xK-FaKVYoL78$)+D(GJu+l9@RygD^|Au~ zbRKu*TuiiZuX??AeLSi9=;yb;R_;|N7nK$t$dO*QVNG`2;iIOP!j3P;8aUR#u?CJc zaIAr24IFFWSOdozIM%>leGR;pai<|=?+btRMLm}ASOdozIM%?i297mwtbt<<9BbfM V1IHRT*1)j_jx}(sfxnyv{vS#~lkorm literal 0 HcmV?d00001 diff --git a/lib/NHibernate21/net/4.0/NHibernate.Test.dll b/lib/NHibernate21/net/4.0/NHibernate.Test.dll new file mode 100644 index 0000000000000000000000000000000000000000..bdf5b28afcf2cb2227178301d2fc962232269844 GIT binary patch literal 3289088 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
i!RBKAqjp#6C}bfQmW5cE^wub@uoN%wFm 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 V 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

mW;2gE&sVaEl9Nx$JpThM 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 z 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