nini-1.1.0+dfsg.2/0000755000175000017500000000000011047573737013041 5ustar meebeymeebeynini-1.1.0+dfsg.2/README.txt0000644000175000017500000001036010401130742014511 0ustar meebeymeebey--------------------------------------------------------- Nini - An uncommonly powerful .NET configuration library --------------------------------------------------------- Homepage: http://nini.sourceforge.net/ Author: Brent R. Matzelle - bmatzelle [at] yahoo [dot] com ABOUT ----- Nini is an uncommonly powerful .NET configuration library designed to help build highly configurable applications quickly. INSTALL ------- * Take the DLL for your .NET Framework version out of the Bin directory * Bin\DotNet\1.0 - DLL built with the MS .NET Framework 1.0 * Bin\DotNet\1.1 - DLL built with the MS .NET Framework 1.1 * Bin\DotNetCompact\1.0 - DLL built for the MS .NET Compact Framework 1.0 * Bin\Mono\1.1 - DLL built with Mono 1.1 * Add the DLL as a reference in your project. In Visual Studio right-click on the References item in the project menu, click on the Browse button and select Nini.dll. * You can also add Nini to all projects on your machine by adding it to the global assembly cache. To do this run the following command: $> gacutil.exe /i Nini.dll * To check if your install was successful add the following to a .NET project file (this assumes C#, use the appropriate version for C++/VB.NET, etc): using Nini.Config; If it compiles without any errors then you've succeeded. BUILDING FROM SOURCE -------------------- There are several methods to build Nini. These builds all write files to the same directory structure as found in the INSTALL section above. * Visual Studio .NET At this time only a Visual Studio .NET 2002 solution file and project file are supplied. They are located in the Source directory (Nini.sln). To load this file simply double click the solutions and click Build -> Build Solution. * Building for the .NET Compact Framework This requires that you have Visual Studio .NET 2003 installed. Open the compact project file (NiniCompact.csdproj). Build the solution in the same way as documented above. * NAnt (http://nant.sourceforge.net) In the Source directory there is a Cyrus.build NAnt file. Here is how to build for each runtime from the command line: To build MS .NET Framework 1.0 $> nant build-dotnet-1.0 To build MS .NET Framework 1.1 $> nant build-dotnet-1.1 To build MS .NET Compact Framework 1.0 *** There is no way to do this with NAnt at this time *** To build Mono 1.1 $> nant build-mono * Note: If you would like to run the unit test then download and install NUnit (http://nunit.org/). DOCUMENTATION ------------- * You can find all documentation in the Docs directory. Here is a description of all directories beneath this directory: * Docs\Manual - Contains the Nini manual files. If you'd like to quickly get started with Nini then read this first. * Docs\Reference\chm - Contains the compiled reference documentation. * Docs\Reference\html - Contains the individual HTML-based reference. * Docs\Reference\xml - Contains the XML source for the reference documentation. If you'd like to add more documentation to the project then start here. EXAMPLES -------- The Nini project contains some example applications to help you get started. These files are located in the Examples directory. * NiniEdit This program is a fully-functional command line application that edits INI, XML, and .NET configuration file types. Reference the README.txt file for more information about it. QUESTIONS, HELP, & SUGGESTIONS ------------------------------ Go to the following places for help using Nini or if you'd like to request new features for Nini: * Help Forum http://sourceforge.net/forum/forum.php?forum_id=379750 * Mailing List http://lists.sourceforge.net/lists/listinfo/nini-general SUPPORTING NINI --------------- If your project (commercial or otherwise) uses Nini please let me know about it. I would like to post it on the project home page if possible. Email me at bmatzelle [at] yahoo [dot] com. Thank you for trying Nini! ------------------------------------- Copyright (c) 2006 Brent R. Matzelle ------------------------------------- nini-1.1.0+dfsg.2/LICENSE.txt0000644000175000017500000000213210401132624014635 0ustar meebeymeebey Nini Configuration Project. Copyright (c) 2006 Brent R. Matzelle Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. nini-1.1.0+dfsg.2/Docs/0000755000175000017500000000000010410342254013706 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Manual/0000755000175000017500000000000010410342254015123 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Manual/NiniManual-5.htm0000644000175000017500000002541610404411450020040 0ustar meebeymeebey Using Nini Effectively - Nini Manual

5. Using Nini Effectively

5.1 Handling configuration for multiple users

You might notice that the ConfigurationSettings class for .NET 1.0 and 1.1 only provides means of retrieving configuration values. This is because it is normally a bad idea for programmers to change configuration values for an entire application programmatically. The way the application should be globally configured is by an administrator. For this reason, I recommend that you do not change application level settings.

However, it is essential that you allow users to configure the application according to their own personal preferences. Nini allows you to create many different configuration file sources so all that you need to do is place a configuration file in the right directory. The standard for Windows programs is the application data directory:

C:\Documents and Settings\[username]\Local Settings\Application Data\[Application Name]\Settings.ini

You can get this path programatically with the following path:

string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

5.2 Storing configuration data in a database

If you are running an ASP.NET application then you probably have multiple users in each system. You will probably also have a bunch of user settings to edit. Most web applications are entirely configured with a database so the following is an example of using Nini along with your database.

Here's a very simple example with a SQL Server table. This can easily be adapted to any other database. Here is the structure of the database table:

CREATE TABLE UserSettings
(
   UserId ID,
   Settings TEXT
);

The ConfigSettings field stores a Nini configuration value. Now you can load a Nini configuration values like this:

string userId = GetUserId(); // retrieve the user id somehow

SqlCommand command = new SqlCommand("SELECT Settings FROM UserSettings WHERE ID = "
                                     + userId, connection);

connection.Open();

SqlDataReader reader = command.ExecuteReader();

if(reader.HasRows) {
    reader.Read();
    IConfigSource source = new XmlConfigSource(new StringReader(reader.GetString(0)));
}

reader.Close();
connection.Close();

5.3 Automating configuration file creation

Being able to create builds automatically is essential for any development project. There are several tools to accomplish this such as batch (.bat) scripts, but the most popular choice for the .NET Framework is probably NAnt. You may find yourself needing to create a configuration file with your build managment system. To make these duties easier the Nini project has NiniEdit, the Nini command-line configuration editor. With this application you can create and edit any file-based configuration data. The NiniEditor is included with each Nini release in the Examples directory.

Let's add an example of how to use NiniEdit in your build. Let's assume that your build is a batch file in the first example and you need to create the following INI file programmatically:

[General]
Debug = false
Logging = On
[Logging]
FilePath = C:\temp\MyApp.log

The following calls will create the configuration file automatically:

:: Create the new configuration file
niniedit --new --set-type=ini MyApp.ini
niniedit --add=General MyApp.ini
niniedit --add=Logging MyApp.ini
niniedit --config=General --set-key=Debug,false MyApp.ini
niniedit --config=General --set-key=Logging,On MyApp.ini
niniedit --config=Logging --set-key=FilePath,C:\temp\MyApp.log MyApp.ini

If you were performing the same thing in NAnt you would do this:

<exec program="niniedit" commandline="-n -s INI MyApp.ini" />
<exec program="niniedit" commandline="-a General MyApp.ini" />
<exec program="niniedit" commandline="-a Logging MyApp.ini" />
<exec program="niniedit" commandline="-c General -k Debug,false MyApp.ini" />
<exec program="niniedit" commandline="-c General -k Logging,On MyApp.ini" />
<exec program="niniedit" commandline="-c Logging -k FilePath,C:\temp\MyApp.log MyApp.ini" />

That's all there is to it. NiniEdit has other functions such as the ability to list configs, keys, key values, and remove keys. If nothing else then use NiniEdit as an example of how to write your own command-line applications with Nini.

5.4 Creating configuration files programmatically

On occassion it might be useful to create your configuration files programmatically with your application. Doing this with Nini is very easy.

Let's say that you want to create the same INI file that you created in the either example:

[General]
Debug = false
Logging = On
[Logging]
FilePath = C:\temp\MyApp.log

Here's how you would create it in code:

IniConfigSource source = new IniConfigSource();

IConfig config = source.AddConfig("General");
config.Set("Debug", "false");
config.Set("Logging", "On");

config = source.AddConfig("Logging");
config.Set("FilePath", "C:\\temp\\MyApp.log");

source.Save("MyApp.ini");

5.5 Choosing the right configuration file type for your application

Nini was written to make all configuration file types first-class citizens. This is because each configuration file type has it's own strengths and weaknesses. The list below contains some basic guidelines:

INI

XML

.NET Configuration File

Windows Registry

There is no perfect configuration type because each one has it's own benefits. If you end up choosing a configuration file type that turns out to not right for your situation then do not be alarmed. Nini abstracts what type of file you are accessing so the amount of code that you will have to change should be minimal.

That's it for this tutorial. I hope that you found it helpful! If you have any questions or suggestions for improving this manual then go to the Nini home page and use the forums, bug tracker, or feature request tools to make yourself heard.

nini-1.1.0+dfsg.2/Docs/Manual/NiniManual-2.htm0000644000175000017500000002766010404411406020041 0ustar meebeymeebey Getting Started - Nini Manual

2. Getting Started

2.1 A Simple Example

In order to show you how Nini solves these problems let’s go over an example.  First, let’s take an example configuration file.  I will choose the INI format for most of the examples in this manual. INI files are a tried and true configuration file type used in well known open source projects such as MySQL, PHP, and Samba. In fact, Nini has support for several INI file types. They are very simple and easy to edit so they remain a very popular choice. Nini contains it's own INI parser class ( IniDocument) which is written entirely in C# with no Windows API code so it's cross platform. Here is the text of MyApp.ini for this example:

; MyApp.ini
[Logging]
File Name = MyApp.log
MessageColumns = 5
MaxFileSize = 40000000000000

Below is a C# example piece of code that describes how to access the configuration data from the INI file from the file above:

using Nini.Config;
IConfigSource source = new IniConfigSource("MyApp.ini");

string fileName = source.Configs["Logging"].Get("File Name");
int columns = source.Configs["Logging"].GetInt("MessageColumns");
long fileSize = source.Configs["Logging"].GetLong("MaxFileSize");

Here is the example in VB:

Imports Nini.Config

Dim source As New IniConfigSource("MyApp.ini")

Dim fileName As String = source.Configs("Logging").Get("File Name")
Dim columns As Integer = source.Configs("Logging").GetInt("MessageColumns")
Dim fileSize As Long = source.Configs("Logging").GetLong("MaxFileSize")

Okay, that example threw a few things at you. First, we include Nini's configuration namespace to the imaginary app with using Nini.Config. Next we load up the INI file with the IniConfigSource class. In Nini, each configuration file type has it's own "Source" class. This class knows how to load and save the file. Each of these classes implements the IConfigSource interface so that you abstractly work with multiple configuration types more easily. When a file is loaded all sections (in this case the [Logging] section) are converted to the interface IConfig and added to a collection on the Source class. The IConfig class provides very fast access to retrieve, add, or remove configuration keys (like "File Name" in the above INI file). The methods of the IConfig class include Get, GetString, GetInt, GetFloat, GetDouble, and GetLong methods. All of the methods prefixed with "Get" are overloaded to provide more data. The next couple sections describe how to use these overloads.

2.2 Default Values

Sometimes an option will not be present in a configuration file.  This might be because it hasn’t been added to the project’s main build or because it should remain secret to users.  For these cases Nini provides provides overloaded methods that allow a programmer to define default values. 

Here’s an example in C#:
// Sets missing to the default value, "Default result".
string missing = config.Get("Missing Config", "Default result");

// Sets smallNumber to the default value, 50.
int smallNumber = config.GetInt("Not Present", 50);
Here is the same example in VB:
' Sets missing to the default value, "Default result".
Dim missing As String = config.Get("Missing Config", "Default result")

' Sets smallNumber to the default value, 50.
Dim smallNumber As Integer = config.GetInt("Not Present", 50)

2.3 Setting, Saving, and Removing Keys

It is also possible to set and save new values into the configuration file. Calling the Set method will change an existing value or if it does not exist add it. Here is an example:

config.Set("File Name", "MyNewFile.log");
config.Set("MessageColumns", 45);
config.Remove("File Name");
    
source.Save();

It is necessary to call the Save method to save a file, h0wever, you can also set the AutoSave property on an IConfigSource and that will automatically save the file each time the Set method is called. If you want to save a document to a different path or a different object then the IniConfigSource, XmlConfigSource, and DotNetConfigSource classes all save overloaded Save methods that allow you to save to either a new path or a TextWriter:

Here is an example in C#:
using System.IO;
    
IniConfigSource source = new IniConfigSource("Test.ini");
StringWriter writer = new StringWriter();
source.Save(writer); // Save to StringWriter(TextWriter)

source.Save("some/new/path.ini"); // Save to new path
Here is the example in VB:
Imports System.IO
    
Dim source As IniConfigSource = new IniConfigSource("Test.ini")
Dim writer As New StringWriter()
source.Save(writer) ' Save to StringWriter(TextWriter)

source.Save("some/new/path.ini") ' Save to new path

2.4 Adding and Removing Configs

On occassion you will want to add and remove IConfigs yourself. Nini has a simple means to accomplish both of these actions. Here is an example where I create a new config and then immediately remove it.

Here is an example in C#:
IConfig newConfig = source.AddConfig("NewConfig");

source.Configs.Remove(newConfig);
Here is the example in VB:
Dim newConfig As IConfig = source.AddConfig("NewConfig")
    
source.Configs.Remove(newConfig)

2.5 Key Value Expanding

In many cases you will find that your key values are dependent on the values of other keys. For instance you have a root path configuration value and several values for files that use this path like in this example:

[File Path]
RootPath = C:\Program Files\My Program
Logging = MyApp.log
WebPage = index.html

Without Nini if you wanted to combine the value of "RootPath" with "Logging" and "WebPage" then you would have to perform ugly string concatenations to get "C:\Program Files\My Program\index.html". In Nini you do not need to do this:

[File Path]
RootPath = C:\Program Files\My Program
Logging = ${RootPath}\MyApp.log
WebPage = ${RootPath}\index.html

This can save you a lot of trouble concatenating them yourself and make your code a lot cleaner. If you want to grab a value from a different section you can do the same above but add the section name followed by a bar ("|") like so: ${section|key}. When you are ready to perform the replacement call ExpandKeyValues (Note: This used to be called ReplaceKeyValues)

Here is an example in C#:
IConfigSource source = new IniConfigSource("MyApp.ini");
source.ExpandKeyValues();
Here is the example in VB:
Dim source As New IConfigSource("MyApp.ini")
source.ExpandKeyValues()

When you call ExpandKeyValues it changes all of the keys in your configuration file all at once. This makes the code execution faster because it does not need to replace the key values on every Get/GetString/GetInt/etc call. However, this means that if you were to save the configuration file with the that it would overwrite your previous values with the expand values. If you do not want this to happen then you can use the GetExpanded method.

; This sets logging to "C:\Program Files\My Program\MyApp.log"
IConfigSource source = new IniConfigSource("MyApp.ini");
string logging = source.Configs["FIle Path"].GetExpanded("Logging");

That’s how easy it is to create your first Nini configured application.  The following sections will explain some more advanced features of Nini.

nini-1.1.0+dfsg.2/Docs/Manual/NiniManual-1.htm0000644000175000017500000001252110404410714020027 0ustar meebeymeebey Introduction - Nini Manual

1. Introduction

1.1 What is Application Configuration Data?

As a developer you deal with application configuration data all of the time.  Common examples of this are INI files, XML files, .NET configuration files (aka “.config”), the Windows registry, and command line (argv) arguments.  The advantages of configuration files are that they load quickly, do not take up a lot of space, and are easy to edit. 

1.2 The Problem

Attempts to create configuration file access schemes do not satisfy the needs of either programmers or end-users.  To give a real life scenario I worked for an organization that configured their original programs using the Windows registry API (Application Programming Interface).  Later on they developed their own ASP configuration class.  At about the same time another group developed an API that fetched the data from a database.   Then when ASP.NET came along they started to use Web.config.  In a matter of several years the number of configuration data sources grew from one to four!  Needless to say getting configuration data often became a grueling task.  Here are the three major areas where configuration management can be improved:

1.3 Introducing Nini

Nini is an uncommonly powerful .NET configuration library designed to help build highly configurable applications quickly. Nini provides a solution that attempts to eliminate the above problems. It provides a large feature set that gives you functionality that you will use in every phase of your project, from concept to mature product.  This is accomplished through a simple, yet flexible, API that provides an abstraction over the underlying configuration sources.  It solves all of the problems that I described above.  We’ll see how this is done in the examples below.

nini-1.1.0+dfsg.2/Docs/Manual/NiniManual.htm0000644000175000017500000001013410410335560017671 0ustar meebeymeebey Table of Contents - Nini Manual

Table of Contents

Nini .NET Configuration Library (http://nini.sourceforge.net/)
Copyright © 2006 Brent R. Matzelle

nini-1.1.0+dfsg.2/Docs/Manual/NiniManual-3.htm0000644000175000017500000002351310404411420020027 0ustar meebeymeebey Advanced Topics - Nini Manual

3. Advanced Topics

3.1 Merging

Merging is a very powerful functionality that allows developers to combine together the configuration data from multiple sources into a single object. You can potentially combine together an infinite number of different configuration types into a single IConfigSource! You could add multiple INI, XML, and Registry files into the same object. Pretty cool don't you think? Here is an example of how to combine an INI file with an XML file.

Here is an example in C#:
IConfigSource mainSource = new IniConfigSource("MyApp.ini");
IConfigSource xmlSource = new XmlConfigSource("MyApp.xml");
mainSource.Merge(xmlSource);

// Now you can access any IConfig from mainSource and xmlSource
string xmlValue = mainSource.Configs["SomeXmlSection"].Get("AnOption");
Here is the example in VB:
Dim mainSource As New IniConfigSource("MyApp.ini")
Dim xmlSource As New XmlConfigSource("MyApp.xml")
mainSource.Merge(xmlSource)

' Now you can access any IConfig from mainSource and xmlSource
Dim xmlValue As String = mainSource.Configs("SomeXmlSection").Get("AnOption")

When the data is merged between files any IConfigs of the same name or containing the same keys the file being merged in will overwrite the previous ones. This is very important for those of you with clients that have different configuration needs. You can create your default configuration settings in one file and have a client specific file that will override the settings of the main file if needed. This will save you tons of work. It did for me.

3.2 Value Aliases

Many configuration files have options that are clear to programmers but very confusing to non-programmers. In order to help make a configuration file easier for non-programmers to understand a common practice is to make the keys and values read more like common human dialog.  Lets see an example of how you might return a Boolean value by using a string value that’s easier for humans to understand.  First, let’s start with the AliasExample INI file:

; AliasExample.ini
[Web Browser]
Block Popups = ON
Check For Default Browser = Off
Error Level = warn

As you can see rather than using a value like "1" or "true" for the value of each key I have used "On" and "Off", which hopefully are easier for users to understand. You will also notice that the case between each value is not entirely uppercase or lowercase. I did this on purpose to make a point. It is difficult enough to users to remember what value to place in a particular key value so to make it a bit easier on them do not make them remember what case to use as well! The problem with ignoring case is that your code would look pretty ugly as in the following example:

bool blockPopUps = (config.Get("Block Popups").ToLower() == "on");

Let's define some rules to this file to make them We want the values of the BlockPopUps section to return a Boolean value of true when the value is set to "On" and a value of false when the value is set to "Off". Furthermore, I'd like the Error Level to return the integer value of 100 when it is set to "Warn" and a value of 200 when the value is set to "Error". The following code shows how to add rules to the Alias property of the IConfigSource that defines the rules that I just defined in the previous paragraph.

Here is an example in C#:
IConfigSource source = new IniConfigSource("AliasExample.ini");
    
// Creates two Boolean aliases.
source.Alias.AddAlias("On", true);
source.Alias.AddAlias("Off", false);

// Sets two integer aliases.
source.Alias.AddAlias("Error Level", "Warn",  100);
source.Alias.AddAlias("Error Level", "Error", 200);

IConfig config = source.Configs["Web Browser"];
bool blockPopUps = config.GetBoolean("BlockPopUps");
int errorCode = config.GetInt("Error Code", true);
Here is the example in VB:
Dim source As New IniConfigSource("AliasExample.ini")
    
' Creates two Boolean aliases.
source.Alias.AddAlias("On", True)
source.Alias.AddAlias("Off", False)

' Sets two integer aliases.
source.Alias.AddAlias("Error Level", "Warn",  100)
source.Alias.AddAlias("Error Level", "Error", 200)

Dim config As IConfig = source.Configs("Web Browser")
Dim blockPopUps = config.GetBoolean("BlockPopUps")
int errorCode = config.GetInt("Error Code", True)

The first two calls to AddAlias add Boolean values to the text “On” and “Off”.  The next two calls to this method add alias text to the “Error Level” configuration with the text of “Warn” and “Error” along with the numeric values of 100 and 200, respectively.  Next I fetched the key data.  The GetInt method is overloaded so that if the parameter is set to true then it loads the data as an alias rather than as a literal integer value.

3.3 Key Value Lists

Nini does not have a specialized method for returning lists of information. This is because there already is way to do this using a little trick with the String.Split method of the .NET Framework. Here is an INI file with a list of servers separated by the vertical line ("|") delimeter:

[MailServers]
ServerList = "http://mail.yahoo.com/|http://www.hotmail.com/|http://www.mail.com/"
Now using the Split method we will return the list of servers as an array of strings:
string[] serverList = source.Configs["MailServers"].Get("ServerList").Split('|');
Here is the example in VB:
Dim serverList() As String = source.Configs("MailServers").Get("ServerList").Split('|')
You can use any number of delimeters with the Split method. Be creative. Just pick a delimeter that you will not be using as a key value.

3.4 Events

Nini makes things easy by allowing developers to perform operations in a disconnected fashion. A first object can usually just use an IConfig without having to worry about how other objects are using it. However, there are times when it is useful to know when the configuration data has been changed. Nini has added many events to help deal with these situations.

In the following scenario a class wants notification when an IConfigSource has been saved.

Here is a C# example:
void SourceLoad()
{
  source = new IniConfigSource();
  source.Saved += new EventHandler(this.source_Saved);
}

void source_Saved(object sender, EventArgs e)
{
  // perform save actions here
}
Here is a VB example:
Sub SourceLoad()
{
  source = New IniConfigSource()
  source.Saved += New EventHandler(Me.source_Saved)
}

Sub source_Saved(sender As object, e As EventArgs) Handles source.Saved
{
  ' perform save actions here
}
There are more events such as Load, KeySet, KeyRemoved, ConfigAdded, and ConfigRemoved.
nini-1.1.0+dfsg.2/Docs/Manual/NiniManual-4.htm0000644000175000017500000002753610410340126020042 0ustar meebeymeebey Configuration Types - Nini Manual

4. Configuration Types

4.1 Ini Files

Nini has a built in INI parser written in 100% C#. This means that unlike other INI parsers it will run on any .NET platform, not just those running Windows. In addition the parser is written for flexibility, that is why it has support for multiple INI file types. The currently supported file types are as follows:

Case Sensitivity

The IniConfigSource class has a property that allows values to be case insensitive. This might be desirable for people upgrading their software from systems using the old Win32 API GetPrivateProfileString function which was not case sensitive. Here is an example of how to use it:

; Note the Load method is just an alternative to passing the file name
; to the constructor. 
IConfigSource source = new IniConfigSource();
source.Load("MyApp.ini");
source.CaseSensitive = false;

4.2 XML Files

Nini has it's own XML configuration file structure. It provides more flexibility than does the .NET configuration file format. It's main advantages are that you can have more than one XML configuration file and that the format is much more concise. Here is an example of the format. You will notice that it resembles an INI file quite closely. The configuration values are the same as the INI in the previous examples:

<!-- MyApp.xml -->
<Nini>
    <Section Name="Logging">
        <Key Name="File Name" Value="MyApp.log" />
        <Key Name="MessageColumns" Value="5" />
        <Key Name="MaxFileSize" Value="40000000000000" />
    </Section>
</Nini>

To load the file is very simple:

// Loads the XML file
XmlConfigSource source = new XmlConfigSource("MyApp.xml");
// Retrieves a value
long maxFileSize = source.Configs["Logging"].GetLong("MaxFileSize");
Here is the example in VB:
' Loads the XML file
Dim source As New XmlConfigSource("MyApp.xml")
' Retrieves a value
Dim maxFileSize As Long = source.Configs("Logging").GetLong("MaxFileSize")

4.3 Windows Registry Configuration

If you are using one of the many Microsoft Windows operating systems then you can access data from the Windows Registry. Here is an example key path for a registry item:
HKEY_LOCAL_MACHINE\Sofware\MyApp\Logging
"File Name"       "MyApp.log"  REG_SZ
"MessageColumns"  "5"          REG_DWORD
"MaxFileSize"     "40000000"   REG_DWORD

To access this code the method is a bit more complex than others. You must create a mapping to a registry entry. This functionality will also give you the ability to merge many registry keys into a single IConfigSource. Here is some example code to access it.

Here is an example in C#:
using Microsoft.Win32;
RegistryConfigSource source = new RegistryConfigSource();
// Loads the registry tree
source.AddMapping(Registry.LocalMachine, "Software\\MyApp\\Logging");
// Retrieves a value
long maxFileSize = source.Configs["Logging"].GetLong("MaxFileSize");
Here is the example in VB:
Imports Microsoft.Win32
Dim source As New RegistryConfigSource()
' Loads the registry tree
source.AddMapping(Registry.LocalMachine, "Software\\MyApp\\Logging")
' Retrieves a value
Dim maxFileSize As Long = source.Configs("Logging").GetLong("MaxFileSize")

If you'd like to recursively retrieve all data under a specified registry key there is a method to accomplish this as well.

If you want to get all subkeys underneath a key with a flat name you can do this:
using Microsoft.Win32;
// Loads the registry tree and all nodes beneath it without 
RegistryConfigSource source = new RegistryConfigSource();
source.AddMapping(Registry.LocalMachine, "Software\\MyApp", RegistryRecurse.Flattened);

string maxFileSize = source.Configs["MyApp"].GetString("SomeConfig");
long maxFileSize = source.Configs["Logging"].GetLong("MaxFileSize");
Here is the example in VB:
Imports Microsoft.Win32
' Loads the registry tree and all nodes beneath it without 
Dim source As New RegistryConfigSource()
source.AddMapping(Registry.LocalMachine, "Software\\MyApp", RegistryRecurse.Flattened)

Dim maxFileSize As String = source.Configs("MyApp").GetString("SomeConfig");
Dim maxFileSize As Long = source.Configs("Logging").GetLong("MaxFileSize")

4.4 .NET Configuration Files

The .NET Framework has it's own configuration file mechanism that uses a specific XML format. You may be familiar with them in ASP.NET as web.config files. If you are using them with Windows Forms, console applications, or services you will know them as [APP NAME].exe.config files. To support users that still use this configuration file format in their applications Nini has support for these files as well.

<!-- ExampleApp.exe.config -->
<configuration>
    <configSections>
        <section name="Logging" type="System.Configuration.NameValueSectionHandler" />
    </configSections>
    <Logging>
        <add key="File Name" value="MyApp.log" />
        <add key="MessageColumns" value="5" />
        <add key="MaxFileSize" value="40000000000000" />
    </Logging>
</configuration>
Accessing the data is very similar to loading an INI or XML file:
IConfigSource source = new DotNetConfigSource(DotNetConfigSource.GetFullConfigPath());

string fileName = source.Configs["Logging"].Get("File Name");
int columns = source.Configs["Logging"].GetInt("MessageColumns");
long fileSize = source.Configs["Logging"].GetLong("MaxFileSize");
Here is the example in VB:
Dim source As New DotNetConfigSource(DotNetConfigSource.GetFullConfigPath())

Dim fileName As String = source.Configs("Logging").Get("File Name")
Dim columns As Integer = source.Configs("Logging").GetInt("MessageColumns")
Dim fileSize As Long = source.Configs("Logging").GetLong("MaxFileSize")

4.5 Command Line (Argv) Configuration

Since the beginning of programming applications have had the capability to accept command line switches. These switches are simply strings passed into the application when it is first started. The Windows program Xcopy has many command line switches and the excellent downloading application wget has it's own switches as well. If you want to read a little more about how command line parameters work in .NET click here. Our first example is very similar to the others you have seen so far. The difference is that the AddSwitch method needs to be called for each configuration key. There is a short key and a long key that both can be used to fetch configuration data.

Here is an example in C#:
public static int Main(string[] args)
{
   ArgvConfigSource source = new ArgvConfigSource(args);

   source.AddSwitch("Logging", "file-name", "f");
   source.AddSwitch("Logging", "columns", "c");
   source.AddSwitch("Logging", "max-file-size", "m");

   if(args.Length > 0)
   {
      string fileName = source.Configs["Logging"].Get("file-name");
      int columns = source.Configs["Logging"].GetInt("columns");
      long fileSize = source.Configs["Logging"].GetLong("max-file-size");
   }
}
Here is the example in VB:
Public Static Function Main(args() As String) As Integer
   Dim source As New ArgvConfigSource(args)

   source.AddSwitch("Logging", "file-name", "f")
   source.AddSwitch("Logging", "columns", "c")
   source.AddSwitch("Logging", "max-file-size", "m")

   If (args.Length > 0) Then
      Dim fileName As String = source.Configs("Logging").Get("file-name")
      Dim columns As Integer = source.Configs("Logging").GetInt("columns")
      Dim fileSize As Long = source.Configs("Logging").GetLong("max-file-size")
   End If
End Function
nini-1.1.0+dfsg.2/Docs/Manual/styles.css0000644000175000017500000000200010404411036017146 0ustar meebeymeebey /*--------------------- General */ body { font-family: verdana,tahoma,arial,helvetica; margin: 10; background-color: #ffffff; color: #000000; font-size: 12pt; } a:link, a:visited { text-decoration: underline; } a:hover { color: #fff; background-color: #333; text-decoration: none; } a.attention:link, a.attention:visited { color: #900; } a.attention:hover { color: #fff; } pre { background: #EEEEEE; margin-top: 1em; margin-bottom:1em; margin-left:0px; margin-left: 10px; margin-right: 10px; padding: 5pt; border: 1px dotted #000; font-size: 12pt; } /*--------------------- Main */ div#header h2 { background-color: #D6DFE8; margin: 0; padding: 5px; } div#nav { font-size: 10pt; padding: 10px; text-align: center; } div.csharp { display: block; } div.vbdotnet { display: block; } div#footer { padding: 10px; text-align: center; font-size: 11px; margin: 0; border-top: 1px solid #ccc; } nini-1.1.0+dfsg.2/Docs/Reference/0000755000175000017500000000000010410342254015604 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/README.txt0000644000175000017500000000357410400654252017316 0ustar meebeymeebey-------------------------------- NINI API DOCUMENTATION REFERENCE -------------------------------- All reference documentation for this project is written in the official C# XML documentation style. Read more about it here: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcorixmldocumentation.asp You will notice that all source code has an XML-based comment above it that looks something like this: /// string Get (string key); If you notice the "file" attribute has a value of "IConfig.xml". You will find that there is a file by this name in the xml\en directory. This is where the actual documentation will permanently reside. I did it this way to make multi-language support simple and to keep the source code clean. NDOC DOCUMENTATION ------------------ The documentation is all generated by the compiler (using the /doc switch) and converted to fancy MSDN-looking with NDoc. Read more about this great too here: http://ndoc.sourceforge.net/ Note: NDoc comes standard with NAnt so you will not have to download it separately. BUILDING -------- To build the documentation yourself I have set this up to work automatically with NAnt. From the Source directory run this command to generate the documentation: C:\dev\Nini\Source> nant build-documentation That will create all HTML and chm documentation in one call. To clean this documentatation run this: C:\dev\Nini\Source> nant clean-documentation LANGUAGES --------- I believe that it is very important that the reference documentation is translated at some time. That is why below the Reference\xml directory there is an additional directory level ("en" for English). If you are interested in translating Nini to your language then let me know (bmatzelle at yahoo dot com). nini-1.1.0+dfsg.2/Docs/Reference/chm/0000755000175000017500000000000010410343672016360 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/chm/README.txt0000644000175000017500000000146510400654252020062 0ustar meebeymeebeyThis directory is where all Microsoft Windows HTML Help (*.chm) files are located. These are only viewable on Microsoft Windows operating systems with Internet Explorer 4.0 or higher. The CHM files were created with NDoc combined with the MS HTML Help Workshop. If you would like to help write this documentation for the Nini project then please these look at the following file: Nini\Docs\Reference\xml\README.txt Home page for the Microsoft HTML Help Workshop: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/vsconHH1Start.asp If you are using a UNIX operating system and you would like to be able to read CHM files then there is an excellent utility called xCHM for Linux, BSD, Solaris, and Mac OS X. You can download it here: http://xchm.sourceforge.net/ nini-1.1.0+dfsg.2/Docs/Reference/chm/NiniReference.chm0000644000175000017500000062703010410341150021562 0ustar meebeymeebeyITSF`kUc[ ý|Ş{Đž  É"ćěý|Ş{Đž  É"ćě`xTpĚpţ.ITSPT ˙˙˙˙ j’].!Đťů É"ćěT˙˙˙˙˙˙˙˙˙˙˙˙PMGLS˙˙˙˙//#IDXHDRÝ˝q /#ITBITS /#STRINGSá‰Í/#SYSTEM„6ˇ8/#TOCIDXÝÝqŹ@/#TOPICSŢí1» /#URLSTRßŐ ´/#URLTBLߨQ¬< /#WINDOWSŇ®7L /$FIftiMain×ô.…ÉC /$OBJINST×Ţo•?/$WWAssociativeLinks//$WWAssociativeLinks/Property×Ţk/$WWKeywordLinks//$WWKeywordLinks/BTreeҰ„ŕL/$WWKeywordLinks/Data×OËb/$WWKeywordLinks/Map×Ü1‚/$WWKeywordLinks/Property×ŢK /intmethod.gifŃć+‡ /MSDN.cssŃí3Á//Nini.Config.AliasText.AddAlias_overload_1.html‡Đ%‘///Nini.Config.AliasText.AddAlias_overload_2.html‡ŻGŹa//Nini.Config.AliasText.AddAlias_overload_3.html‡ż(}./Nini.Config.AliasText.AddAlias_overloads.html‡ =Ź +/Nini.Config.AliasText.ContainsBoolean.html‡áTŤ:'/Nini.Config.AliasText.ContainsInt.html‡ďŽ{&/Nini.Config.AliasText.GetBoolean.html‡ţ Ť-"/Nini.Config.AliasText.GetInt.html‹6Žf/Nini.Config.AliasText.html†Ż76&/Nini.Config.AliasTextConstructor.html†ě1Š"/Nini.Config.AliasTextMembers.html†żm¬D"/Nini.Config.AliasTextMethods.html†öK©r7/Nini.Config.ArgvConfigSource.AddSwitch_overload_1.html‰ĚU–{7/Nini.Config.ArgvConfigSource.AddSwitch_overload_2.html‰ăP™#6/Nini.Config.ArgvConfigSource.AddSwitch_overloads.html‰ľ\Ťy//Nini.Config.ArgvConfigSource.GetArguments.html‰üs‹G"/Nini.Config.ArgvConfigSource.htmlš— )/Nini.Config.ArgvConfigSource.Reload.htmlŠ:’'/Nini.Config.ArgvConfigSource.Save.htmlŠšB’-/Nini.Config.ArgvConfigSourceConstructor.html÷F&)/Nini.Config.ArgvConfigSourceMembers.html±%Ć!)/Nini.Config.ArgvConfigSourceMethods.html‰‡l¶p /Nini.Config.ConfigBase.Add.htmlŚ *Śe"/Nini.Config.ConfigBase.Alias.html‹ŔŚ#)/Nini.Config.ConfigBase.ConfigSource.html‹Ě<Ś %/Nini.Config.ConfigBase.Contains.htmlŚ­ŽB+/Nini.Config.ConfigBase.Get_overload_1.htmlŚČmŹ+/Nini.Config.ConfigBase.Get_overload_2.htmlŚ×|‘ */Nini.Config.ConfigBase.Get_overloads.htmlŚ»QŤ2/Nini.Config.ConfigBase.GetBoolean_overload_1.htmlŚöB•F2/Nini.Config.ConfigBase.GetBoolean_overload_2.htmlŤŚ“1/Nini.Config.ConfigBase.GetBoolean_overloads.htmlŚéŤ:1/Nini.Config.ConfigBase.GetDouble_overload_1.htmlŤ¬^“^1/Nini.Config.ConfigBase.GetDouble_overload_2.htmlŤŔ<‘60/Nini.Config.ConfigBase.GetDouble_overloads.htmlŤź&Ť8(/Nini.Config.ConfigBase.GetExpanded.htmlŤŃrŹ 0/Nini.Config.ConfigBase.GetFloat_overload_1.htmlŤî)“j0/Nini.Config.ConfigBase.GetFloat_overload_2.htmlŽ‚‘,//Nini.Config.ConfigBase.GetFloat_overloads.htmlŤŕ}Ť,./Nini.Config.ConfigBase.GetInt_overload_1.htmlޤ“G./Nini.Config.ConfigBase.GetInt_overload_2.htmlŽ·a‘A./Nini.Config.ConfigBase.GetInt_overload_3.htmlŽÉ"‘./Nini.Config.ConfigBase.GetInt_overload_4.htmlŽÚ;“@-/Nini.Config.ConfigBase.GetInt_overloads.htmlŽ“?[$/Nini.Config.ConfigBase.GetKeys.htmlŽí{Ś//Nini.Config.ConfigBase.GetLong_overload_1.htmlʇ?“L//Nini.Config.ConfigBase.GetLong_overload_2.htmlŹ› ‘"./Nini.Config.ConfigBase.GetLong_overloads.htmlŽúŤ&1/Nini.Config.ConfigBase.GetString_overload_1.htmlŹąeŹ11/Nini.Config.ConfigBase.GetString_overload_2.htmlŹÉ‘60/Nini.Config.ConfigBase.GetString_overloads.htmlʬ-Ť8&/Nini.Config.ConfigBase.GetValues.htmlŹÚLŚ'/Nini.Config.ConfigBase.htmlЬP‘?'/Nini.Config.ConfigBase.KeyRemoved.html±•!/Nini.Config.ConfigBase.keys.html‹Ł`Š`#/Nini.Config.ConfigBase.KeySet.htmlĆ2”{!/Nini.Config.ConfigBase.Name.html‹Ř\Ś\)/Nini.Config.ConfigBase.OnKeyRemoved.htmlŹćsŽ&%/Nini.Config.ConfigBase.OnKeySet.htmlŹőŽ#/Nini.Config.ConfigBase.Remove.html/Ž( /Nini.Config.ConfigBase.Set.html‘W)'/Nini.Config.ConfigBaseConstructor.html‹?Ť_"/Nini.Config.ConfigBaseEvents.html˘Ź"/Nini.Config.ConfigBaseFields.html‹–ŤB#/Nini.Config.ConfigBaseMembers.htmlŠľĘ0#/Nini.Config.ConfigBaseMethods.html‹ĺ8şr&/Nini.Config.ConfigBaseProperties.html‹®@‘Y1/Nini.Config.ConfigCollection.Add_overload_1.html“…VŤ|1/Nini.Config.ConfigCollection.Add_overload_2.html““RŽ0/Nini.Config.ConfigCollection.Add_overloads.html’řŤC(/Nini.Config.ConfigCollection.Clear.html“ˇXŚe./Nini.Config.ConfigCollection.ConfigAdded.html•„J‘#0/Nini.Config.ConfigCollection.ConfigRemoved.html••m‘+ÇÖ  / B > 6 ,!=CHp‰Ś>^PMGL8+/Nini.Config.ConfigCollection.Contains.html“®=Ź%4/Nini.Config.ConfigCollection.CopyTo_overload_1.html“Űl‘q4/Nini.Config.ConfigCollection.CopyTo_overload_2.html“ËP3/Nini.Config.ConfigCollection.CopyTo_overloads.html“˝bŤn(/Nini.Config.ConfigCollection.Count.html‘Ř;Ť0/Nini.Config.ConfigCollection.GetEnumerator.html“í]Ť'"/Nini.Config.ConfigCollection.htmlŰ-“J*/Nini.Config.ConfigCollection.IndexOf.html“űŹ|)/Nini.Config.ConfigCollection.Insert.html”‹u./Nini.Config.ConfigCollection.IsFixedSize.html‘ĺAŤm-/Nini.Config.ConfigCollection.IsReadOnly.html‘ó.Ťb1/Nini.Config.ConfigCollection.IsSynchronized.html’ŤQ(/Nini.Config.ConfigCollection.Item1.html’ś(Śj(/Nini.Config.ConfigCollection.Item2.html’©Śf0/Nini.Config.ConfigCollection.OnConfigAdded.html”›uŽx2/Nini.Config.ConfigCollection.OnConfigRemoved.html”ŞmŹ4/Nini.Config.ConfigCollection.Remove_overload_1.html”ÇGŽ4/Nini.Config.ConfigCollection.Remove_overload_2.html”ŐWŹ3/Nini.Config.ConfigCollection.Remove_overloads.html”ąoŤX+/Nini.Config.ConfigCollection.RemoveAt.html”ĺVŹ+/Nini.Config.ConfigCollection.SyncRoot.html’µxŤ -/Nini.Config.ConfigCollectionConstructor.html‘¶/‹(/Nini.Config.ConfigCollectionEvents.html”ô]Źm&/Nini.Config.ConfigCollectionItem.html’ŽaŤG)/Nini.Config.ConfigCollectionMembers.htmlîwÇ8)/Nini.Config.ConfigCollectionMethods.html’õ,/Nini.Config.ConfigCollectionProperties.html‘Á>–}(/Nini.Config.ConfigEventArgs.Config.html•úŠf!/Nini.Config.ConfigEventArgs.html•§’2,/Nini.Config.ConfigEventArgsConstructor.html•áŠy(/Nini.Config.ConfigEventArgsMembers.html•ąJ§<+/Nini.Config.ConfigEventArgsProperties.html•ëŽ$/Nini.Config.ConfigEventHandler.html–„gŤ>$/Nini.Config.ConfigKeyEventArgs.html–’%’J,/Nini.Config.ConfigKeyEventArgs.KeyName.html–éh‹$-/Nini.Config.ConfigKeyEventArgs.KeyValue.html–ő ‹'//Nini.Config.ConfigKeyEventArgsConstructor.html–ÍnŚ5+/Nini.Config.ConfigKeyEventArgsMembers.html–¤o¨./Nini.Config.ConfigKeyEventArgsProperties.html–Ú#ŹE'/Nini.Config.ConfigKeyEventHandler.html—€3ŤM,/Nini.Config.ConfigSourceBase.AddConfig.htmlŮW”v(/Nini.Config.ConfigSourceBase.Alias.html€ŚV+/Nini.Config.ConfigSourceBase.AutoSave.htmlŚuŹ */Nini.Config.ConfigSourceBase.Configs.html›Ś32/Nini.Config.ConfigSourceBase.ExpandKeyValues.htmlîM–./Nini.Config.ConfigSourceBase.GetExpanded.html™„l`"/Nini.Config.ConfigSourceBase.html—Ž•1(/Nini.Config.ConfigSourceBase.Merge.html™•L”1-/Nini.Config.ConfigSourceBase.OnReloaded.html™©}Ś*/Nini.Config.ConfigSourceBase.OnSaved.html™¶Ś)/Nini.Config.ConfigSourceBase.Reload.html™Â"’r+/Nini.Config.ConfigSourceBase.Reloaded.htmlš„,Ž3/Nini.Config.ConfigSourceBase.ReplaceKeyValues.html™ŐŤB'/Nini.Config.ConfigSourceBase.Save.html™âV‘l(/Nini.Config.ConfigSourceBase.Saved.htmlš’DŽ-/Nini.Config.ConfigSourceBaseConstructor.html—âr‹(/Nini.Config.ConfigSourceBaseEvents.html™ôBŹj)/Nini.Config.ConfigSourceBaseMembers.html—Ł1żA)/Nini.Config.ConfigSourceBaseMethods.html¨2±%,/Nini.Config.ConfigSourceBaseProperties.html—î’6/Nini.Config.DotNetConfigSource.GetFullConfigPath.htmlś§nŤF$/Nini.Config.DotNetConfigSource.htmlš D”c4/Nini.Config.DotNetConfigSource.Load_overload_1.htmlśĂ<‘"4/Nini.Config.DotNetConfigSource.Load_overload_2.htmlśÔ^Ź,3/Nini.Config.DotNetConfigSource.Load_overloads.htmlśµ4Ž+/Nini.Config.DotNetConfigSource.Reload.htmlśä ’{4/Nini.Config.DotNetConfigSource.Save_overload_1.htmlť “p4/Nini.Config.DotNetConfigSource.Save_overload_2.htmlťľ~”4/Nini.Config.DotNetConfigSource.Save_overload_3.htmlťŞ/”O4/Nini.Config.DotNetConfigSource.Save_overload_4.htmlť›{Ž43/Nini.Config.DotNetConfigSource.Save_overloads.htmlś÷‘-/Nini.Config.DotNetConfigSource.SavePath.html›ăŽ-/Nini.Config.DotNetConfigSource.ToString.htmlťÓŚ&//Nini.Config.DotNetConfigSourceConstructor.htmlšý‘{0/Nini.Config.DotNetConfigSourceConstructor1.html›Ź‘h0/Nini.Config.DotNetConfigSourceConstructor2.html› }Ťf0/Nini.Config.DotNetConfigSourceConstructor3.html›®cP0/Nini.Config.DotNetConfigSourceConstructor4.html›ż3ŽZÇÖ  â Ę Ô Ű éëě#NPMGLD+/Nini.Config.DotNetConfigSourceMembers.htmlšµ'Çs+/Nini.Config.DotNetConfigSourceMethods.html›ń¶g./Nini.Config.DotNetConfigSourceProperties.html›Î ”u/Nini.Config.html…Ón±/Nini.Config.IConfig.Alias.htmlž®A‹&/Nini.Config.IConfig.ConfigSource.htmlžą_‹ "/Nini.Config.IConfig.Contains.htmlžń Ť4(/Nini.Config.IConfig.Get_overload_1.htmlź‹<Ťr(/Nini.Config.IConfig.Get_overload_2.htmlź™.Źw'/Nini.Config.IConfig.Get_overloads.htmlžţAŚ{//Nini.Config.IConfig.GetBoolean_overload_1.htmlź¶F” //Nini.Config.IConfig.GetBoolean_overload_2.htmlźĘf‘x./Nini.Config.IConfig.GetBoolean_overloads.htmlź©%Ť!./Nini.Config.IConfig.GetDouble_overload_1.htmlźé}’=./Nini.Config.IConfig.GetDouble_overload_2.htmlźü:-/Nini.Config.IConfig.GetDouble_overloads.htmlźÜ^Ť%/Nini.Config.IConfig.GetExpanded.html ŚOŤw-/Nini.Config.IConfig.GetFloat_overload_1.html §Y’K-/Nini.Config.IConfig.GetFloat_overload_2.html ş$ ,/Nini.Config.IConfig.GetFloat_overloads.html šFŤ+/Nini.Config.IConfig.GetInt_overload_1.html Ú_’,+/Nini.Config.IConfig.GetInt_overload_2.html í &+/Nini.Config.IConfig.GetInt_overload_3.html ý1Ź~+/Nini.Config.IConfig.GetInt_overload_4.htmlˇŤ/’%*/Nini.Config.IConfig.GetInt_overloads.html Ę1.!/Nini.Config.IConfig.GetKeys.htmlˇźT‹,/Nini.Config.IConfig.GetLong_overload_1.htmlˇ·s’/,/Nini.Config.IConfig.GetLong_overload_2.htmlˇĘ"+/Nini.Config.IConfig.GetLong_overloads.htmlˇŞfŤ ./Nini.Config.IConfig.GetString_overload_1.htmlˇçFŽ./Nini.Config.IConfig.GetString_overload_2.htmlˇőV-/Nini.Config.IConfig.GetString_overloads.htmlˇÚ'Ť#/Nini.Config.IConfig.GetValues.html˘…k‹/Nini.Config.IConfig.htmlťßB“3$/Nini.Config.IConfig.KeyRemoved.html˘Ľ<“z /Nini.Config.IConfig.KeySet.html˘Đ6“d/Nini.Config.IConfig.Name.htmlžÄl‹Y /Nini.Config.IConfig.Remove.html˘‘Ť/Nini.Config.IConfig.Set.html˘žŹ/Nini.Config.IConfigEvents.html˘­5Ź /Nini.Config.IConfigMembers.htmlťňuŞ /Nini.Config.IConfigMethods.htmlžĐE H#/Nini.Config.IConfigProperties.htmlžś}‘D)/Nini.Config.IConfigSource.AddConfig.htmlŁňF“O%/Nini.Config.IConfigSource.Alias.htmlٵ‹E(/Nini.Config.IConfigSource.AutoSave.htmlŁŔWŤs'/Nini.Config.IConfigSource.Configs.htmlŁÎJ‹//Nini.Config.IConfigSource.ExpandKeyValues.html¤†”w+/Nini.Config.IConfigSource.GetExpanded.html¤› Ź@/Nini.Config.IConfigSource.html˘äś1%/Nini.Config.IConfigSource.Merge.html¤ŞL“&/Nini.Config.IConfigSource.Reload.html¤˝i‘T(/Nini.Config.IConfigSource.Reloaded.html¤ű|Śq0/Nini.Config.IConfigSource.ReplaceKeyValues.html¤Ď=Ś$/Nini.Config.IConfigSource.Save.html¤ŰRR%/Nini.Config.IConfigSource.Saved.htmlĄmŚ_%/Nini.Config.IConfigSourceEvents.html¤ě$ŹX&/Nini.Config.IConfigSourceMembers.htmlŁ€K˘C&/Nini.Config.IConfigSourceMethods.htmlŁŮh^)/Nini.Config.IConfigSourceProperties.htmlŁŁ’*/Nini.Config.IniConfig.Get_overload_1.html¦ŰŽg)/Nini.Config.IniConfig.Get_overloads.html¦ËdŹ+/Nini.Config.IniConfig.htmlĄ•L‘F"/Nini.Config.IniConfig.Remove.html¦évŹ /Nini.Config.IniConfig.Set.html¦ůL&/Nini.Config.IniConfigConstructor.htmlĄűŤZ"/Nini.Config.IniConfigMembers.htmlĄ§Ô"/Nini.Config.IniConfigMethods.html¦pÂt//Nini.Config.IniConfigSource.CaseSensitive.html¨Ô%‹j!/Nini.Config.IniConfigSource.html§‰O’1/Nini.Config.IniConfigSource.Load_overload_1.html©ŕeŽ{1/Nini.Config.IniConfigSource.Load_overload_2.html©ĐmŹx1/Nini.Config.IniConfigSource.Load_overload_3.html©±EŹD1/Nini.Config.IniConfigSource.Load_overload_4.html©Á Źd0/Nini.Config.IniConfigSource.Load_overloads.html©ˇ+(/Nini.Config.IniConfigSource.Reload.html©ď`’o1/Nini.Config.IniConfigSource.Save_overload_1.htmlŞ“@“X1/Nini.Config.IniConfigSource.Save_overload_2.htmlŞÉt” 1/Nini.Config.IniConfigSource.Save_overload_3.html޵:”:1/Nini.Config.IniConfigSource.Save_overload_4.htmlާŽ"0/Nini.Config.IniConfigSource.Save_overloads.htmlŞ‚Oq*/Nini.Config.IniConfigSource.SavePath.html¨ŕŤ|*/Nini.Config.IniConfigSource.ToString.htmlŞÝ}Ś,/Nini.Config.IniConfigSourceConstructor.html§áR’Z-/Nini.Config.IniConfigSourceConstructor1.html§ô,Ť?4.html›ż3ŽZÇÖ ¨™ ‚ Ą Ó ń  H‹­¸żÄą×UPMGL.-/Nini.Config.IniConfigSourceConstructor2.html¨kŽ1-/Nini.Config.IniConfigSourceConstructor3.html¨Ź.-/Nini.Config.IniConfigSourceConstructor4.html¨źJŽz-/Nini.Config.IniConfigSourceConstructor5.html¨®DŹ(/Nini.Config.IniConfigSourceMembers.html§›PĆ(/Nini.Config.IniConfigSourceMethods.html¨î ł+/Nini.Config.IniConfigSourceProperties.html¨˝^–G;/Nini.Config.RegistryConfigSource.AddConfig_overload_1.html¬¸BŹl;/Nini.Config.RegistryConfigSource.AddConfig_overload_2.html¬Č.:/Nini.Config.RegistryConfigSource.AddConfig_overloads.html¬©cŽ_Ž71/Nini.Config.RegistryConfigSource.DefaultKey.html«çOŚ#&/Nini.Config.RegistryConfigSource.htmlŞę”|-/Nini.Config.RegistryConfigSource.Reload.html­Śi“+/Nini.Config.RegistryConfigSource.Save.html­źl‘}1/Nini.Config.RegistryConfigSourceConstructor.html«Ćp‹0-/Nini.Config.RegistryConfigSourceMembers.htmlŞ˙Ç]-/Nini.Config.RegistryConfigSourceMethods.html«órµq0/Nini.Config.RegistryConfigSourceProperties.html«Ň •/!/Nini.Config.RegistryRecurse.html­±i’!/Nini.Config.XmlConfigSource.html­Ă}—`1/Nini.Config.XmlConfigSource.Load_overload_1.htmlŻľŹ1/Nini.Config.XmlConfigSource.Load_overload_2.htmlŻÍ"Ź'0/Nini.Config.XmlConfigSource.Load_overloads.htmlݰ$Ťm(/Nini.Config.XmlConfigSource.Reload.htmlŻÜI’o1/Nini.Config.XmlConfigSource.Save_overload_1.html°€)“X1/Nini.Config.XmlConfigSource.Save_overload_2.html°¶]” 1/Nini.Config.XmlConfigSource.Save_overload_3.html°˘#”:1/Nini.Config.XmlConfigSource.Save_overload_4.html°”Ž"0/Nini.Config.XmlConfigSource.Save_overloads.htmlŻď8q*/Nini.Config.XmlConfigSource.SavePath.html®ďŤ|*/Nini.Config.XmlConfigSource.ToString.html°ĘfŚ,/Nini.Config.XmlConfigSourceConstructor.html®  ŹP-/Nini.Config.XmlConfigSourceConstructor1.html®ŻZŤ?-/Nini.Config.XmlConfigSourceConstructor2.html®˝Ž<-/Nini.Config.XmlConfigSourceConstructor3.html®ËUŽR(/Nini.Config.XmlConfigSourceMembers.html­Ű]Ä-(/Nini.Config.XmlConfigSourceMethods.html®ü}ł'+/Nini.Config.XmlConfigSourceProperties.html®Ú'”Z/Nini.ConfigHierarchy.html†… Ş+/Nini.Ini.html°× 3#/Nini.Ini.IniDocument.FileType.html˛ô‹2/Nini.Ini.IniDocument.html±QY*/Nini.Ini.IniDocument.Load_overload_1.htmlłęuŽ*/Nini.Ini.IniDocument.Load_overload_2.htmlłÜ]Ž*/Nini.Ini.IniDocument.Load_overload_3.htmlłÎ]Ž*/Nini.Ini.IniDocument.Load_overload_4.htmlłÁŤZ)/Nini.Ini.IniDocument.Load_overloads.htmlł°BA*/Nini.Ini.IniDocument.Save_overload_1.html´•\Ž*/Nini.Ini.IniDocument.Save_overload_2.html´ŁvŤ{*/Nini.Ini.IniDocument.Save_overload_3.html´‡^Ť~)/Nini.Ini.IniDocument.Save_overloads.htmlłů ŽS#/Nini.Ini.IniDocument.Sections.html˛˙K‹Y%/Nini.Ini.IniDocumentConstructor.html±ÝEp&/Nini.Ini.IniDocumentConstructor1.html±ö5ŤP&/Nini.Ini.IniDocumentConstructor2.html˛„Ź&/Nini.Ini.IniDocumentConstructor3.html˛“$ŤR&/Nini.Ini.IniDocumentConstructor4.html˛ vŹ&/Nini.Ini.IniDocumentConstructor5.html˛°Ť:&/Nini.Ini.IniDocumentConstructor6.html˛˝OŹ&/Nini.Ini.IniDocumentConstructor7.html˛ĚVŤ&/Nini.Ini.IniDocumentConstructor8.html˛Ůj‹ !/Nini.Ini.IniDocumentMembers.html±±*¬!/Nini.Ini.IniDocumentMethods.htmlł‹$Ą$/Nini.Ini.IniDocumentProperties.html˛äsŹ&)/Nini.Ini.IniException.GetObjectData.html¶ÁR’%/Nini.Ini.IniException.html´±q“B&/Nini.Ini.IniException.LineNumber.htmlµůl‹;(/Nini.Ini.IniException.LinePosition.html¶…'‹C#/Nini.Ini.IniException.Message.html¶j‹(&/Nini.Ini.IniExceptionConstructor.htmlµ‹m'/Nini.Ini.IniExceptionConstructor1.htmlµś ‹'/Nini.Ini.IniExceptionConstructor2.htmlµ§ŹG'/Nini.Ini.IniExceptionConstructor3.htmlµ¶_Ť9'/Nini.Ini.IniExceptionConstructor4.htmlµÄe"/Nini.Ini.IniExceptionMembers.html´Ĺ3Ĺj"/Nini.Ini.IniExceptionMethods.html¶śĄ@%/Nini.Ini.IniExceptionProperties.htmlµÔ}¤o/Nini.Ini.IniFileType.html¶Ów’+/Nini.Ini.IniItem.Comment.html·Â@‹/Nini.Ini.IniItem.html¶ć"Ź{/Nini.Ini.IniItem.Name.html·ÍDŠsÇÖ 9_} « Ď ď   [a]OXR%˙TPMGL+/Nini.Ini.IniItem.Type.html·Ř7ŠC/Nini.Ini.IniItem.Value.html·âzŠ|!/Nini.Ini.IniItemConstructor.html· lM/Nini.Ini.IniItemMembers.html¶öŞO /Nini.Ini.IniItemProperties.html·±9‘./Nini.Ini.IniReader.AcceptCommentAfterKey.htmlą§IŚ3/Nini.Ini.IniReader.AcceptNoAssignmentOperator.htmląłXŚ2/Nini.Ini.IniReader.Close.htmlşç%‹ /Nini.Ini.IniReader.Comment.htmląŔ ‹z*/Nini.Ini.IniReader.ConsumeAllKeyText.htmląĚŤ4+/Nini.Ini.IniReader.Dispose_overload_1.html»€MŤB+/Nini.Ini.IniReader.Dispose_overload_2.html»ŽŹ*/Nini.Ini.IniReader.Dispose_overloads.htmlşň1Ž!/Nini.Ini.IniReader.Finalize.html»ťŠ|,/Nini.Ini.IniReader.GetAssignDelimiters.html»¨ Ś-/Nini.Ini.IniReader.GetCommentDelimiters.html»´Ś/Nini.Ini.IniReader.html·ív'/Nini.Ini.IniReader.IgnoreComments.htmląŮ8‹S)/Nini.Ini.IniReader.LineContinuation.htmląĺ ŚZ#/Nini.Ini.IniReader.LineNumber.htmląńe‹%/Nini.Ini.IniReader.LinePosition.htmląü‹+&/Nini.Ini.IniReader.MoveToNextKey.html»ŔŚr*/Nini.Ini.IniReader.MoveToNextSection.html»Í Ś&/Nini.Ini.IniReader.Name.htmlş*ŚT/Nini.Ini.IniReader.Read.html»Ů1"/Nini.Ini.IniReader.ReadState.htmlş”~Šp,/Nini.Ini.IniReader.SetAssignDelimiters.html»é2Ž1-/Nini.Ini.IniReader.SetCommentDelimiters.html»÷cŽ//Nini.Ini.IniReader.Type.htmlşźnŠ`/Nini.Ini.IniReader.Value.htmlşŞNŚJ#/Nini.Ini.IniReaderConstructor.html¸Î4ŹC$/Nini.Ini.IniReaderConstructor1.html¸ÝwŤB$/Nini.Ini.IniReaderConstructor2.html¸ë9ŤD$/Nini.Ini.IniReaderConstructor3.html¸ř}Ť,/Nini.Ini.IniReaderMembers.html¸†Č&/Nini.Ini.IniReaderMethods.htmlş·° "/Nini.Ini.IniReaderProperties.htmlą†)ˇ /Nini.Ini.IniReadState.htmlĽ†‘^!/Nini.Ini.IniSection.Comment.html˝–‹n"/Nini.Ini.IniSection.Contains.html˝ădŤ™C/Nini.UtilHierarchy.htmlĹËo“d/NiniReference.hhcËá…Ó//NiniReference.hhkŃ´K?/protfield.gifŃĐq‡/protmethod.gifŃĽ‡ /protproperty.gifŃ߇ /pubevent.gifŃĘ †e/pubmethod.gifѵ †y/pubproperty.gifŃÆ} /static.gifŃ؇ ::DataSpace/NameList<(::DataSpace/Storage/MSCompressed/ContentĄnŠÔ^,::DataSpace/Storage/MSCompressed/ControlDataj)::DataSpace/Storage/MSCompressed/SpanInfob/::DataSpace/Storage/MSCompressed/Transform/List<&_::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/i::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTable0.IniSectionProperties.html˝… ‘/Nini.Ini.IniType.htmlÁ¤x(/Nini.Ini.IniWriter.AssignDelimiter.htmlÂÍeŚ#/Nini.Ini.IniWriter.BaseStream.htmlÂÚ‹,/Nini.Ini.IniWriter.Close.htmlĂ˝‹ )/Nini.Ini.IniWriter.CommentDelimiter.htmlÂĺ.Ś+/Nini.Ini.IniWriter.Dispose_overload_1.htmlĂÖDŤB+/Nini.Ini.IniWriter.Dispose_overload_2.htmlĂäŹ*/Nini.Ini.IniWriter.Dispose_overloads.htmlĂČ(Ž!/Nini.Ini.IniWriter.Finalize.htmlĂóŠ|/Nini.Ini.IniWriter.Flush.htmlĂţ‹ /Nini.Ini.IniWriter.htmlÁ´{•$/Nini.Ini.IniWriter.Indentation.htmlÂńAŚ!/Nini.Ini.IniWriter.ToString.htmlĉ‹''/Nini.Ini.IniWriter.UseValueQuotes.htmlÂýAŚ./Nini.Ini.IniWriter.WriteEmpty_overload_1.htmlġG‹c./Nini.Ini.IniWriter.WriteEmpty_overload_2.htmlÄ­*’6Ś·Ő  A × [ ‚“Äč1nşďMPMGI /+/Nini.Config.ConfigCollection.Contains.html+/Nini.Config.DotNetConfigSourceMembers.html-/Nini.Config.IniConfigSourceConstructor2.html/Nini.Ini.IniItem.Type.html-/Nini.Ini.IniWriter.WriteEmpty_overloads.html© Uncompressed MSCompressed{7FC28940-9D31-11D06kLZXC1(6k^Ş€–ě öâ!L/84.>\ANşQ]`aĽnČu”‚І†Ž•¨¤h©(µbşöČţ̠ۄ޼ęNđüŔ  lţ ˘+2Ę<âAŇI°Oŕ_sĽ4‘$ęŔ8nZť ˝"D HHA Version 4.74.8702$ đ…R[*NĆNini.Config.htmlNiniReferenceninireference MsdnHelp"ţÓ¸ ţÓ¸  T#SM®yíÚ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙3P3T”Yřv¶@š‚4lË7s°$¦š1ŇŚ[ďZrSďŞm÷•üű€ Ń>-6O˛~pë.@Ŕ$ *ůÝKĚĽ»ŰU™·y—y$łż˝P®Z&ę'´xíoŠŃNiZ@áZxŠ…Q@ŕ8¨Ľ 43X‡˝÷öÚ\łlÁAŁ ÝÝ˝»ÝÝďîvÝ·63F3iöhEŰX0üö%Ű­µ]ŮşşĘK ň´"HH±˘ĐEÄĐA)˙üĺŹÂĆ—Ć4>đĄăč6­l„ů52yóćf4žŁĹ‰/űsę_ćb8;/M| ׍<Cp™c(ŕĚ3-§#ůXú:GBó7ůËÜ[‘ľpó°/Ţ©BV3ß u=~ä yů®7rí\&‘śtÓxnyá} ólÔ3™ú(’žŢĄßi^7/:o×9±Á7Mččće…3Gő^yÎüŽŔËś’ŮĎäčÂŘ~™i÷Ľ{vÄŽ ×ńžű¶»:®žĆëxŢŘŁn¸‰ŤÝgč”q†ôąQ' Ă켛ĹC íl´ą—1ű”:*ş2ĹvĄUÝąZĆĘ—ôŰÉ1.yöűńĆn$°U/–‹ş|ó7“ěvú?8^ɶÓCŹ–n|BE?.G±C›ńČ}ÂÚ;ŢGÚ ďŰ#Ő“ü8Úľm˛÷)„Ó2ŰĚ3íćűCYĘ÷#8çÉ+š+Ú €g/äb~ŮôBag­˘‘ÜYĂŞâ™ZY2mĹuab4he4mřĹŕ-ń»DúHxyĐx~+=)‰ŤZŃë_ŞŻvÂă÷Ö+Ü âfŕ÷®îO| X1 H6Ť*ĹŢ| ‹ú˛ IdXɤ…Ĺe˙w•gҧ°›†-·ATn…`×_Ł.˘yÍăpoä­ĺS2ó6uäé3•-7>Ndĺ®"ăh@$~úĺ:Ch‡“K¶.Ü ‡­‚řXoNů'Żr¸ ÜPŔ•ĆädSĂh~?G%€’#zD@,©pÝR]A˘ü3\ŽĹJ@ྪV‹ůR„‘ %LçL„ÝŠ6»]ŇÜWŹ AČÉśQ#XJ´¬Z‘ő]*–• .d»šG`čoëWăŃ"L@±Ő$ dĹÓ u˝‹HŘ»%ĆâdűĘ(ç-<0=)›Śh6`D5!wÁÚý<‘4­xşŠ‰$"Ô Čë sá@XËă‹L±»+Q˘i[8Ňł¨8čY.\Đ.ˇRqbĚ©đ«AÇ1Öł¤ÉĽqó#Ę–µ!Ś6±Y„Ĺ;sŁŁÓQé ăiuŕk•Ź„äř¨)°í­) ć]E­“ Bc “uí‹F/„Ď‘őϽќŃ@ÁžŢ›qĆi‚ÝąklÖ%\ëiŔ=sŞG#öoĽ˘ď™´đ rčoą “ŠýÓÇaW5¬•€”=Ľ:W¦a«üqઅ#JY4W1™>lmú‚ťlľc­S'YK9±)ű” ĺŃčĄ;ج|ҸEĆvâQ˝Ń%A›„†OwX¤ąL űy|ůĄu—HťéɰĺŘ/ V­âV&Ů A™ĄŞ…häÔMeĆĂ`ťíţA‰»Ş¬c`7úŃŇ"« ěÎă…xb'ܦ¦RD!ˇ5‚¶’hőňř«x8®•q0^Ç;” +(«üp-ŮšbAŽKŻŽçj!\±™W‚pËĽ9đr›¤ ë¨s\źQiş"?8 ŔďŁő?˛€°2 —´Ĺ"¸®đ$xúů‰úŠ<(8•ďůSg ¬Ćíp0Ŕ îż3_óh1]¸  ŕ9¶rÜÓ*O`žâŐč]`~.Ї˛Y+qEÖ'mď”e¨µ äŘĹ}ذÇ’)Ąß0¦ ˘%ŘłZś‹çZ©ŃÎń&0öč ą;kX1!ĘţŁÇŁU(#q0d@`›ŚĺCSć'\âŮŔĆŔSEřNj¶źÇgŻ™XÍŮBŐTŚČSŘómčĆ3‰§ ±ˇßák'R+j*şŇľ}¸k°đáđ=đW¦Iú5¦Ůž,–*ČH ˛GógĂŕł%3y‘¦NÍq2©ü÷*V&Ý?lKÜÁiTµ!čţHĐĎF˙‡ůůRŕ¨A"€:Ç7Vö?ţ ýš- ŇÓ«®.ť›SˇlÄ(kăĄTfrJHÝmJ¶ŇOX'5a hďjî+đmÔ€Ű4†ľô ´ö)~SľeˇČ0€ěɶ)~YPĚcRN¸¸ ’“)˙÷±Şb0TlŕECŃýş˛z8…7̡Si BCłűo{‰—đ÷Ş ÷X“Dš6‡ŔÂ4ťÍR ĚŇĂ2`Á‰ l’:mµIó'3 ŇŢ)`FěÉŠsŤżŮF3áBŹ4oIs0šB GŻX+„čőÖp—  |©PŕłéjüIPŹéVÁKS ţ¨oȶî§Ő%#ÍzěŽ'tiŕŘ8$Î ¦•AIX5úӜ…‚Ľ©˛Mľ®=CŘ"_˘“ÄC«e+ ćFÂďZ¨LöÁU˙…ÓĄ™QĽ2¬{¨îÄúJŚÜř>,`<».ĄZ,™ŽŕP;ľnédڍtl˝+‘·KÄgdŮŢ\eěâ»ěń3Řş¤_ Ä\őű´űçŻ-áÎܬC@±M|ţ@îŢ„µyâ„ËĄ„¦Ď¶Ëŕ%ĘŇłűU%€yÇçń<ţľ×ş›ÄPňý;Ç ĆVŞ3ŞřoŤ We|q‘ײ¤1aŐzM¨¨{ ¨đ¬ňęM“•á&⯅˛Iˇć¬ú´°7KM>ę×új,Ą™@€łĄÇIW–€"Ď´Żv€W¸@ţĄöW×?W—„¶V Wď~ŻD~đ0Źj|¦Ěâ‡ęđűkÝtE­Źčüäˇő•– ÖŹóç‰ţU}ŹŐć˙éqćË«ČńÁł+vzW˛zś:䯯yŻ(ňl­@ŻŢń_‰ńĐYGX–‚JTjđńײűŞSÄłkvě›b5Ő§ůŕŤÄŐ "żtת—3űTuçXëŹç ¬çĺ˝?†IŰ :Żš< „Źź.E‚ÇŁ‘§rĎóśŢ”şčČ`Ó$IÚ~ fŹ(LĎ"‘NKÜÍ<Çhw·‰ $Ź ăÖÝă{Ş2r÷\GÄ%”şńh0Ü2$®8=¬Ť˛zKáéjöHKj3Ąď“łÔ)˘Z błq+h%äˇöóřó’ď­Ď˛|ŰRj,Éľä)I]–,yůŠ8 ]"»¤-¤ů‚bÎ~Kq€ľ¶žPJřâ4@Ęv”ÓN#š*5`)fĘŃ ŕ“$mZ)Ő¬B90sT˙ýsĹCřŔI……¬ŕ%I=M>Â#édzf˛|zíî›ŇJ ?Cź•%ŐŤt É·8¤ ,¶i› §ÖX-ÉîÍ™räî4„‡Ôpů5(>ÖJ %Đő0h0zÄ|Î0¦ó­ Ây"MŁ4BĘŚ—âgëŹ%ěŽOÉá0ąÜ‡9m ô„މŰ7Ělë0'ţŢyŞńFÖíe1´ţ(ł®Çj–-ëw§¬hX’.ÚĄÂĄ}mV›ß(€/m¬MýIlf4ä{uĂ’q–ŕŘt«OÝ€RÄÚ8—@Ó#¦¶%W­űX$ĎL]8ŁAŚěSÇßcĆĹ˝˝!qř>Č4…KЬ’hŃťčź'ŁXä‹…:@#Éď€OIa͵ű°ĎCĺZâPt˝wF¨­ĎIíżz­řßUűß @u¬Č˙€č‰Č;d1ÓB2F¸ Aý»NÓB,ŘĘâĘS¬,fĺe§&zčnnsç´^¶¬6ysŞ59±‹Ž±d”r#ÇtcoQ „$,a?Ş&ň«zEkŇĎŰĚÜˉ͆mm:ƸVnnfgVşZočßńSŐČî®ęDŽ'˘d_őŹ{ÝÖđ[]‚TÚý«ËK:“ú0¤‰©`±d꣤‘Î,zę“„˙,ńŐßKmüᔀ3Ă<; ŁłŤî@†ÂĂôłÄâi‚‚P˝˛ ]zÇBúu|o\Ş÷|ç•˙ŚKź¤ËŚx”»M…%Äŕs0uoYś*7Č>R§ÔŁž:%[ŚGű,!XTĂḩ†_ŤJŘ9’ȲäŤö¤UE#j±ái™ ü <öźŕ6_4Łť°ű1‡ň‚¦Ü/·űĘrDL>Ůűzm×=µË%öHŐUeőaîz†- ¶¶şÁÂŇ$XۢÚq-Ka‘Uu_ôa D@ĚWnX[ŃM‘úĄó~ÇÎďřÜÉú•hčń ^8Ŕ2›áE6Žö7áňmÁá·Ň ŢŞEFh¬9·«:YÖ˝Ö;&DUťžŃRÜÂ?ĺĹH€\Ë:ŃŁ^l*Űř¸«ŇđϞ푤nAóŕ!7 wpŮJÜöŞ·ëîşśgO×ĚĚXŃčÁ> HÂ]­ Ś"ţÁ€®őÚ°IJ–Ą¨[w©ceÚ˝[’m·»Ű¦Kvď_·šmîË»ÚÖz|›±őż|@ä\-žž–¶&O/[돋O—#–ÄâÇÓTDâ„ÇÜ&$ă—ŤĚŔďýîÝwďĺnŰËŁjKŞ«Ď»mnwÝßWÎ,W™¬ d—Í%Z!”Ś Î˝UŰmP$”Ř’J@  –!éź>aă>ńë@'Tćčµ)`f¤ň§ÇÇ4šdDyeťggţ ˛J‚1¤´ďňq):O“¨˛†$źđ]tŕd%÷ŠÜGwüAtô:5‘ľ«¦RŢëW‡-ďÜ]ň,#|Nçú)‡äŤyÝqČf›»Ä„>6ÇŃYęěáŮ˝A/Ýç:ę2X´Šž·MEͰvgšjŽ4 RRxzĆIß'1¦Đ™±>úŐ<šH&Ă<üDU‘ُ§MŔ­ä‚Ń ,Ď2“ÇË©/â„Řt¸¨.R±Ň†ŃŔ“p¸R›+*h ŇÜ đúUŤ&ţŠÓ‹v» ¦±Fŕ)€śńĚ)r1á2 ”đ1ń,6Ł0·µâ<ŕÄfWÂÔ8Ŕ“Q&ÝE­ˇĎ‰ťż»VJîIn (­Ě“wĄ"ĚM:Ň‹ĄJZ<^‹Ń´sţ\´ V¦xŘ%w+( ĐiÎ+ĎŇéJ‚ë}†Î„…ĐŮŘîě …ĺ4}'«Äɤűç:T– D›K4b4áUt¬ş”ôŃ&jYĹ#ÝÎ?.IÝÖ””Á d"Ą •á`(ŃIí“mŠ/n®¦!ýF4F±Ú>Ú§µ™v¨‡oQ&ä.ňÉ€ęFë5Ůů´đ["`7Ş,ˇ•»Đ47Ć­vUŚ9ÜPZ z!L^ófX*îDĺŰ^Ë [ë`3ŮÖk¤¬öľĄ—(W»#uŚî·!°ż#˙.ji NđŤäâu ć]c މď¤é0 G`ĽJ’Ö=×Q‡ 2&Ăöj„ÄĽÇęhŁa>–(şÍ'ěJÉ·mrJŰ!“ÚL÷ęZ‰HȱďDď‹ üŘ/…%z:z%q3[S`\Ń7‘ł°âµîva‚E©clQŕ$Řhř`Ź­Keá÷zEął1Ś ôsß­~Ů2·Ęż/ßł@'k™»sŇ;¨–y罞Çůµz€ŢH·É_D6˝Ş]ˇ!ÚeWIň2Ö_WőĐg7dCa7Ť›AX& ÓRoG›Ě/ČtOÉtfC̢Čë}ąî#.q/ â7ÖL«’ M¤”Äá˝éÄC<ú˛¦řČE‡ő2o2š”ŃbÖöl"Ý´Žµ+îżâo76ľí/ţ}˙żě÷­†ůďł ďÝ'ÎáX`?FLjťçhâ± 0Š„÷ąŃ|vÖëĄXw*1R´ĘJÜ*Eč˘KŘSul›Důi›S&Ĺz˛RżŇ -ď%ŢJ5K{eëk˘–Ą3¸öiÍq^ŠŇĽîíůTOy p^™µ´ 5†“d±ćBős8ľyłł"µFt?<đ%JőŘŤř„zÎZQşÓĐíú Ż ŕ ÝĆcW1ÄáXv÷éţą“á M8É-“˙Ů8QÝ7@a}şś"á[‡Á˛˛.Rëč8-†ŁÉ¬c¸Áâą ‘ňşÄGBßzĽĐ56aG¤Đ—ăa—üÝhB-ˇrĽţ‘ě•k‚—ů·şt©±ËĘőöö•S‡×[ňš–(6ăsP‡ą€Ëµ śµH†M<Ń9VÚ÷˘OĄ©”Ő:Ą/ţ¨ÉYFŔî!ó󮳡›#xŚbkĐj0:YťŻʶ§/Ë|LżĘ 7š#‰o~Ě·,ôFĄř挑is|Â…óVÎâŠ=µsu¶íRôÇYŐ¸űë¤Ň§r:;{çŰŹp…Š;1;­aK|H°ö†›(6GżĹÉÉŤM3ą ŕ0™#­Ň˛\áäźacŰ“ĹÂźY¬˙3:ęuEVeŐ`ÝäxąGH3ă8ľÂE0=· mĽ›đ„=F Âfą@I¶â|Uňă˘5e¦+äCÜ3^s-cT wĽ)Ö(m“°>É‹,ńs滢/LŢ´˝…`CT\§/hGýk;Řçéż¶âü«"uQ»Ť¦c~ă%Lńdu[}łÎźkn†séÜĂ>Vt÷ć5ŕ˘1Čß!FUČ‘3jh§‰ q ÝöHF+«MO>łůxwf»‚ł~D;y䲯73öúď'ä}ŠM[ĹG)?U…—DŚ2Äá˛ôŃ‹¦I’ô@±|“›•Ă=x@µÔńĄ·Đq™ş”/8QD˛88ŰĂĺă'P“k7,#@„s8@˙Áłö ™Ł[§F‚é™ FŤ·Ďú$!í©ŞÚĐYQRšĄmř‘˛š¦âI;§CÓÉđü|űÎçcŔĄ†ÄQµă!JcŇwŰ–€tź#{ 7ľżÁ\™ŚĹŰ> ­RrEdĂŮ”ę‹N‰ĆAcrŃAć!§9Ń5”Š |ż59_Ë—J+‘CČ3.˛óâ\ëA#ڬŹCrO¨ŻÇˇ?ďç`}%uCĹŻÜű9"ŔTDĘwkě˙‘Z/ ĹPÉWŰĆâ—­ďÎrŮ×Cű3‘>Ă‹€±°Ęş4ŵÖéu´ě¸űXb§hgW9 Iy“Ŕj[üĹ鳦ť%3µ’Ľ !7’i3ňŚ(>Ó“…•4ÚĂŕÔ5î˙ÎѨ ł/”Ąľ¤j*:L6›Ę˛FeĄ5¸~ŕŮž ˙%ó\; TÓ'Y‘–wj˙¶Hęf ź‘Şť¬ ĽĘz Z)híčźSnżd˝ńRlńQŘ÷J8”fç±Ňç>ü.}ŻŁłbĘÇ{šJqŢĄ·6m¬šhd/zŰé+Úś«&(­Ô}¦wŹ–Ť:0M˛Ľtţ% ďě7TMřSě_É:EűL«ŠąŠ÷ő*q×ć ´ôćtVCĄXô ÔA{˝Č>ţŔđlŐZ\-·PQ”í|îB6 ŰćÓ1§ĐI2Óá:A)5Ye†Ď0 ٱŤ*8|lî¸:Ű2 4sîÜ9µÝ őJ_‡OAXďĺĹ]M—ťĹętbŐą˙ŠÎĆúż(.Lżă©ą†ÂľŢŠŽÂů•ßŰ|‹]lĄša»oúşŐ˙ţąçßĐĐ(ç!çTüq>ßM‚ęŮě,sçĐÜNQ;gČźž{'îĎ™ł?źĐýyľŕ»2…[}îŽŃЉfŻL¸TĐ’ ţÁ)ó5“aTçZć×2źT:ąÁqă%Ą=Ňkúx:ÓÖL»‹ž­=eŮ:­Ý[zµ3–f[m·WsŚţŮr^Rk˛c2›w€ÚŹ[fNT-&JK"…˝!zŃ&|m@Ů<ş=B{#Óßůś®Ëú'O%íbH&GőQ5ĎÚ˘ţ©ř$[žôe1â¸O-ĹiŽ–ă&K-{`Č›!ŮFŃś s©şź>(řŰ%ă•Hˇ-§qŕ›]ĚVI]ěrPbŠ«çuĐf°˘,ʰc-ĄŁ¨`ŕńĎxB3XyŤŹYÇű® í‰Ó˝ß͸©™|DBQ§Ő (ËĹíAK‘cS˘ő^šĺ­vµ TIj|ĄóŹIç6Í!óĘ–iÖčtË'†Š1Ü‹ĽRP/‹Ř_YŇV3+§s0L9®GeS-U„ˇ.É…ĺ•äl]Śî—×ď©®`Ý—ĹLmtĽžó®grFă©v}Ż2A˘K¦‚Z–BÄěAj8“-Ąg—ŘSČŮĺĚ |ÂW´~µMÜoŐLhŻ#şmµÇ }’{<ÖKůUđ„•Đh+8«˘ž5WĄ0lÝŹ´$IË Č8g÷ŻĺžYhźü„]°ĄKcÔC2ÓźGÁJĹĎ$©†‰žĚ L{ ¤×tďh€m@€ •ÂvX·ţ×ţž5;Ĺ€ÍIâč–ť’e‰‹¶7KGĹăjO&˛ßUţUt9ÍĹČŁuĎů]…GüŔŕ2oÇ‹*ÚŤłíE×Ô";šŃś*Q7*R“Éę”hý<ě>:@Ź7ąŐ™ă5‰şo h tG! •ĺ=äq¶”ř˙ěoŤ/ľt–O _í*ŃÖÓÍŹc2DÚżÇ éDűYł9g˙»÷߼Ťĺ[ĺţ˙d'âh(›elx ˇ9+ 8&ů~ĎŻÁĺđ V*Ľ~´ ň›¨Ěřľ>´5ń‚ Ě@<ŘňąŽWĆŁ÷­C”HőĎęMW °VođoXAµAVD–ňŞN+YĹAçŘŃE6Ä6š@ˇÓ>䍮©âb!v—Ź÷O˝"óě 4žÍÂăüŚř‘`9Ć"(•ÉpeÉß•—Rťôşí™%hÍDŕÎ=o¶¸ŠŁsCŐ‚Kć@ŢéýÄŘÍ&˝čc7ło"”…–l:Ů~,h_yŽú,®|±W#;ŘĹ 1ŰÚ™ŁŘj×.€…Ŕ°|„i!BľA 6D!Â>~¸¨›ĺ3Ć"ČĆ˙UźŐ~c }$¬GdÚß±9d@`i©ý€Zi1IVÓĽiűĹev é× Hňn…"—­°¦0ŰőĚx˙ť'†HŐ5_š „T˘’?gxđŔuíů ×w–Oµ@aYNÖfě.ŕŮQçUČő …ó—ž°wdÜ,<”´ňýŠ?0Iz˙ÖhúE@óĘ" &ɧ„鱌YĘĺbH¬ u…#wĽLŮo‘řßňÁ©a$?•żżaqóóő»ŔúŮŞě›ítöoÝ^ÓŚ§Î#żí§¦Ĺ(‚¤ěÖHâ5Ý÷Ëťô·!ĄD¨•‹7¸6ľŰĎÝuź?µĺK®´[Ö@Q¦ÚÁµëO“Ǩť>jq·ÔYÝá™˙OÖďŠíýlŐr‚_ż›LďĄT¶˙ę#ĐMÝňş¶o¦ÓsőżÄŤARr(Ąjů8:éÓrA\*xł Ä‚at"ŕ‚´\‹ĆźÎŕű˙·:m‘e+°_q˙úeđŰďe‘Q!ÂÖăúßZVD˘C#Q+$‘lâę1Wl;¶ÄŹx8‘¤ŽĎq#ý{óJÄ:¤$F"¸j~&A…ŔDPŇ3ßH)ŘÁćsW t^á‰Ŕ|)MŠ!•ńzŠJxc{ j?đGł‚긆őJe>·§>¦±ü)D°ĆŐZ·ĆZ_»ŕçw»>Poˇo÷–ćÔÓřBX3TF3nUġÝ >f–ř6–pŰć'‚ҶŤKĂ!Űmă.í¶»[•d^,=i\˙0B5#»{üŽôđ;B§Ipü#üˇćĄKăQ˛P[äF\k.K­iuÚÎěŞ/‡¨¶ŐvÓ4PEZÓ˘Żú˘X]5úJCtÔ?ҧĂČôIi’ű$ţ¦€pČ]ŃŔ}ŢűöÝîúnۿ۵md˛V‰×şŰjÝ-ZmL˛Š$Ô¬˘X‘1 `„Ś(IxŚD“pś„śdáDL 33áŔ€ CÎăţÎČ.«_LoąÎ”r–0ż‡"Ť[,KĆ-Gă`0™Ó,ŮĂ2¦IqłeKĽ"MÎC>›(97bÚjĘ€ęłU‚2š w>ČźU4F+ŚiŁĘŮ1‡\çEŘQhšZ^—Ż­E®ţKŃ8ý20‡±ëĚ`(qË^-5đłĄ^*Gđ[şúáŐZV«XÂüő¸ťUc ±™”rgT„ ÂA!ĆMyń´ě¨ř^o·×¦HŽŢĆ0©ĹÉVúYLJ,[S*‰tŚSνzFépÔá]<S;&IÖ›•!*űŻĎ‚ö§U_ËŐ©z4®ˇ_ĚÂDí SźžÉą˘›´sµ8ŽZ’ŮŁů”•:—cî)âh(UţQd7J0 ÚzʵFä †¸¬×•T ň™h&P™@VHďćšděĆ@ JŰd‹ć˝Í4Á´†ŠRĹqĺç˝Ĺő¶ÍŰĘ™Źé4™˛,”‡ëÍĄf;äLzlBâD–xZ‹)Ζ)+Ji˛Ó"u´íýŘčo`‰‰Ú¨´ ÜE4ČÓN0żś™d¶PééAÜđd pM—š çăkť|¨Ą[}bM±ŕgYgöśśyÚ°6ţEé§Üß쮓U3XŐö‚­BťvjőÝ«öh‹Ô˝†]v-iâÇ­eK–ѵTÝßţŹűß”ă_ÉícŤŘp‘âáÁ…~ńcťé{aťeA{ßčŹÇÉvQn†_µ˘9pĂ;>˝cł§Ę­‘ÁĚMâŢS™,4NůŽEhf S1&ěť–C/żqѤ…iJ7,łVÜĹ©ć]ĆĽ':C  ç *öŠO»ňjx×±ÉĆűŽ-_Ň1SÔQt‘7Z"ÁŮâW,ϢĚÇgţU±JŢ\#bÚ|x:Ë}/«UŇÔÝŃ'¦Ăj®ŁĐÂçÓ"!.DIJ–¸"ZÂé/3ŚL[jÎűqBK—ůăi?׾ĎÁźĽ=Đ۬Ľ7C.OMÓ ĄŽ_%H𦡵‰QÜ]mĽ˙ JşkŇź’ĽiŤ3ßűâzs\"i'{&íNŐ:zÓĐ0µ6é&{ňľĎşëÎbt Ô‹˛f]Ô*ÂVOČĽii/˛>Y( KT6TÍíí˝şbŃqŞ…—\:2Ü…gEš¸ĺR>Yţş]µaNX„źă bjëÉxčŢx˘H'€şĹn!•#úQÂăŹNŃ&Řóňzf1)·§ÚíĂÔž]J}xřK4Őůëő-Đ"‘ů‡ŔúH9™öíé+‹X#'{Đš&{_-8l_+ęŚXI¨VĆ—9; ¨;ĺ6r§Ű[ÄĚìţ©ËÄSĺ^«Ř‹Y  r2bZŃ ýÍ@Ü#µŠÄ×˙.ô·Ô+^­w‰Ó¶µfŹŔ×…ľ>±Őv˛m®’µeŘhśŢ=q™z‘0ł(ąćzÓÂńËŁŕ"CwÄ•-B‡Ë!MO“µE~­ÔĂ‚´Š‰†m,ĺĐBm¶ZÔŮ\âs–: x¨PýÖú:˙źäčx—!űţš„™W \çľô¸q1p‘Ě ^Nx˛î«cv) ˝‰1€~öČáÖZŐ|ŻŤ‹ě+Zx5~c|ă3ŤÍO6Íç1™>ăm2ĺ!ô¸~MÓŇ|L.öďŔ=`áéŮä0O™`ř°vCe1=NŮ*§˝›ep1 $b÷üëŻă‡Ś7‡¨ŻĽdg5^ĺh»Ű÷«PYEĹ]Ú‘·¤r0»¤rT\Vٸt /´#ÄuĎ„·f Ş[Yá#LÜOľĹdVKoͽёuÝŇ®Dkaqnţ˘ĽĐ8G_x[ÂŁ},F×ńŇ„Z9Oéz ŐJů(çĺóµOA“·7Ď·Čî,č,ÍY5Šţ{‘A{:^‚zµXĘ–Ô4JĎfCÍ,vÇ`xÎQW·4śŰ’K¦!Łľ_ăĎĂ?i¬ţz>+A‡ě‘D`6p˘ s–ó¸Z§2Çôĺ[7X†·¨„ÁwOeośJŇ" ٰˏڢĴhjěOD©=;ÇÜOŠź¬/"m˝ Ő­ę¶–čŃŘĆ kzšq+ .0čöőTҶ G=±™#™‡OŚAú’ć|·sţQÖňŔ-jśN¬ĽżkĎyˇ•ÚAeëb{4lřľŽj«XUkî×ăS«¬Ż}?Őă—턌ěľłÂ6ř5~—SoGj\ߎ›fvh:˛ö%> /u…Y´Jy;V3 VHż.—ÔKŹî);ŐÄ…Fî;mkgĄĹw-Ňý»ííOŇÖĘÄiú*ľ Űă‚ě2m„#öŇÂ=2掝ťvpˇÜc˛ô” ˛âXŻí°'ęgH}ňĎô˙ÖpĎ :żdścml4Űf74r!Ěö3˛ăóËŤŇňpą\~ZÔę—ơŕ-+ťN<µ4FČ÷vlVřĂJ‘.ăÁ8 –Ž|€†îŢ3X–á›űaóĆ~HË6Ö—G˝2őź/ô!~˝- MčDUoď*°/g`@·j™ť¨döi¸)ç™ýŰHMrŐŁľTŰ1+řVW^=z÷[~Ρ«Ë\ěŘÖľŻľ¶ÇňżĹŰÚŠ‡&>ł±ň…ń˘[b8ß1T¦/v+¨Qm~FďĄK.ÖäçCŐ`a®sK×ZH«[€űa#¦t.‚n:pţßżŚ>¸Í§ç´Ż†oä+HşäďŻ=ç6ŃęM?ŚQĎ®J–2.]^rżK†ńţľţ×O=ČO–˙ÚhŠG{»3%úký˧Ző }lÖiđĐčk'”çś;ĎŞŢ ˝ôRZ¸Çn@GŘmĽČQšĆ3ěłsňľ‚€&ŔB~‘O[Jžşęô{V´OG‚V”v¬:h.Ü­q„W:yÖ˝#ŤŁ¬úsŰ{–ÎÇ`e'zćČyM7U94ŐŹ?ô®ď‰|ěŽUüŁłJŮäfľoŰńU鯒Š_żźA’ťšůęrP—čGÎI?ś×Ur’ÓÇ=>ţč!ŤŠŇx¦{‘$t öŕÜ1ř[šf`ky/źńÜOž“ŻEĺ~ß§˛hŞXLE$Ëôb:¤n7s7ŕpÂM ő F…J1ŁzŽ‹B‘÷ Ř/:—žČĺËěš}9đrćę˙Ř ĄúĚČŹźµ˛Qtč‹°=»'Ę2AŻK†6®xŢśľ$&ôÜ@3çÔďך%e¨QCb«Âţ€-2pśB3â ‘%'Ś)ň+1ń´m#»tëž«¬ ý#QXiö=‘’EN,çcÄúąĆő{Üâ{ŞĆŃşç ‰ň©tUÖş©˙‘jËjeÔ¬.K›>RĄją€H ŽîE°ZHH÷ŁĚq[‹Z’Š;×ĐâÖ/ ąv)?Ĺő´l!ŮňAží“mÝ$+ëYO­¶§%„¬řöÜ‘¸Ý˘­m|7ĤH2t@[€6đ stX¨ĐĂrÄhF@N?şˇ@ađÜťN«Âń}n¶~áeŚ 1§1ޡ8ĽĽćüźđ2#Ţ-!ę!5D/ęÓ™|žĂĎ y.ÖçJvpÍfئWŞ1‚Íëřň$t ŁÓâ§MÚXöóăŁ!ňwŹ÷§EhSäHčśz¤ä˝ˇ•.ß^^J'f2żëÚ5ó$’zŻŰĄîs~ečŢW¸ЉŰŰl¦ą*ĄńVŚ3Gô«‰Ëg |iáŹĆ|ĽBĚä_ĎěxŕW™vSě5wOŘŃËz•‹oęŻůâźNÓZtscr…µPŕŻ2nŮĹc¤‚—,ěé/ȸNö—Šđ öµez7]bHńÍşYžš™$H˘F_$‘ŽMN0@‘OŤŻ'xMVą^G9‹áh§/Ř Ce¤Č’¤›ůă ŇŤ ™pţ©ă¨"]µé)t¬» Î:Zý|{OôW’čí=#‹ iLˇqeżňÁGŰ5 źđ×KťÍ ™˝&“l\&ťWĘ˝›;Ça™Vц٧ÇüąjNă<č¶—Úi‰®1(Źh´$Ýčě´żŠ15UÖÉßíćA‘‰!ÜŚh)ş ç­ë1Ň*Ě))żžt_T ;Ő=~đşŁOHč4R žyPŕ—ąr?^F»Xű^ąílľŐfa_; ÷t‚Ű%«RĂűa¦X<j’“Fr´ŚŽď9¤ŇŞ¤Ł¬Î«çV*Pi(CŹYKžQĄ®ĄŁn¤Ęö8©RgN8”?VłMč}›ĄO:ÝČZGéý©•k~ËŃśŻĹ<’’q4aN ÁŘ=ɰgľb|2„yB­Éڙৄ,½oĽő®âu9XP1Ť§ëćô˘‹|»…‡UřZ I˙îĂ»ţçŰ‚+—˝m©Il#ź ÍU‘Üz;©ČÓÁHXw¸— »ÜüiÓĺ©\ذ*°J…Ď^V€ˇ&dö!)ÍEŁ×ŽK©˙z©ô+Ő>hÖ5 p¦‡úľĐěµYŰY×d%Ţe3ď'ѲˇŤ-•Ç(«»ÎS “«›î"Zg·żł^@˘BĂň^p¶OkGóiüYĺ&‘ăSziy ˇ­¸Ü+ÎqÁ¦GŕNŞÍľă'OôŤŘč[ şTJéŢĘ­Ąáb€—ß/|®„şßzŞÝź=;e>şHô"áç{D°Í#ĂWĆvYę$(=ܨ~AyA]ĎäĤćĚüMů+!¦”÷ŐÝ«Ş(‚kJč`ăˇSEY-ö`EÍ6¦KQJÜBĘ]–>ď7!‰hÖ}9­ËλźŁŃŽ—ŘĂŁĘ˝ş/•6‡h»Ň•ŇşťŚŔ§Čßć\xMYyévNk˘§Z׺)ď~DŰ1!L•™mö˙&›šÁßUbŔ=yÂÔBŽŻ ŇT˘QŁŕ°cüŇ‹dÜgî/zýŹćdqä›×Ä•+ďćšč9Ą)Ş/żÍľg˘„–öŻ3çŐŽJoyŽőg%0IżţŃi;wrŰnĽń´ö0ĹGUhďüáĹařw_µqľ‹ÂH~QšóćvŰ=űTń1\6íňš Ţśdşš©Cé ©_l{ß;á'JB.ýs·ÍnM# ŇWÂ÷‰×çOiŮM”­+?Qĺ™M‘Ů‘FźU‹FÓĽż‡vXN,nź“űÁ±,Â&‚áŇ'hČŞ-h!€aU™Ó6hśxˢ.E`«aDşĽ™Ů7cÂÄć4÷…˝{Pmě[°/ cĚÚĹŚí;¶eç’ëwĂ2oŚD€Ś[âX(› 56m‰Ź+`qÇŔ@93,‹›s^DĐťôZY×ČŰEň˛Eř­Gë¨kxZ‘Ť 8 AÔ9d˙ÄLu¸0ÁWN „¶Đb!`|F$]JŔÖĂŚvyQŇÜ+ ¤€9‹{§}ţeě@ÜŞPš‡B] o3 Ń-őˇnZEëÜE‡óŔLž3˙.6D ;ů˝ý«ż†j¨YŮ_w®˛±ďÎ4ď©·éUŚ ’źÜŘţ8¨ţw<Ś%>Č€?hĚßpç¶jz`V÷Ć,‰…8\jŢXvZktâ@ęŕśojĆš¸JIÝj ´‰ŮfŔ€ş*ĘŔ°3u ËĹkŻVn]^ŞýűşúĆË:RDN?QlóŰ€śđŞ"–› –42ŻśAcŢs€3Ř_•YOv kPg'˘T—Î7LR—%LŔk\zéL6ľ^aĆe@ě;6fAÄQň¦†(mË«ĺJ“ů çBŮ ľ©n»˘ĽPTîLŇ;Ń »D^ SďŰ|ʞ@·Đ¶ßUU ,ÄŽbX,ó]ÚXhŻ]|Ý9]µB@áőČK†ěí5e‡˙Ł5ÉĎ0É.Oţµ.ö›b)!9šŔuI'ˇŇşf=kÇXzm…~P—»~Â9Š“¶c”^ÖPô—*ĘźSň†ůy4š«•ž™ŞĚ˛UfⱫ]ú´Ť xŔ0vś.‚a?Ěy&@~±ťTŕ$áĂĐÔN6 W”é…‹ź¨wůoüBžšFţŻyK`¶Çxě€6¸ Ă/c(ń‚ĎÂnŁ][żőë °t/#ró”bµdĐ(}ĎÝ˙ Á€ &Ok°ÇeĎőćĐěî÷¬d ¶ë‡[ ź©­1Ţ<¨Ň}dPUĐu¨ÁxÉ«ŁůqRň˙ĐN vyçY–uFßÁóĘ;ńL^˝˛ĘşqĽ—„ü gI< xČȢU‹$ÍGN 9 şB¨ĺĐ î®ňNiÇN=űĹűL' És¸ŻIµhr ż§óŔ’Fś &ł,~¦5™]D]•Mﶸ$ mJÔ /z85]•*™uXĚŚ%-îł–× :ŰÖŞĄíŁ<ɉ5V-Lüůh ·šXőDzŮDqńl÷¸ţ¨†“<Ľ“YŕŠ®őŘ\ ežńĚ@•Ő”IćüČW˛fű‰­¬ꤟËŘ bç<ĄŔe¦Č)×D…ěB5¸$g\¨Š‘«Ü˙:Ü⊩µĹ+c“vÍşËçJ Í{×^ĹľřoËFĹh>kVä„ŢĂ?­ĺć§‘ŔÎżâ‘?űĽ|-*Ô5gyĽ=€äaž§,^9Ľt?±:*Ł…ÄpT<|Ôĺ=AfJNĆH•} ­”ł¶s h€©>bÔŃwÇď.Ů€3@3U i/ĹB)e]´‰•¶PY’Ł]Z„HŚ1·íąkŰ^îłlí%Í›öý˙Ă4"€X`”tü—’…–¶’A,É©>!©Z&ě”Ű&Á´˛~wvv1Ĺĺ˛;Ý#;˛ÎÝąz—mrzÓ_e"LE˙úČCaZ¦Šnčá_(ŔJB:ô´Y’,o’bŠ#E4ppm@ď÷·oőŢ™›swÍ53ÇldĚ’r[ĚL•ąm“K’Ř–Ă(%,ŚJ„m’‰â·Ĺ*ŠP0(`AHđQx@„AxDxc^#ű%†)•„t1ĚŠ*Rc.Ů(s;i ŔFĆaC\FuÄ9*]fלëÝý,óŃ:”–¦9)ţÇE:gIŮdĄ,9FŮ`—˛őQĹźĺą›s˝çÁdÝY•Ů’&/żŹgĐ­§Ä¬*SÝ3ąCó~?6ó ±ńŮľŘEHëeňňę®z=źő..Q•&uřpβĽ}ΦĽĄÝ‹öź3îcj:ŁŮ¸˛EeŁŮňÂoá4f›/ÔçÎŁźźí+Şźa'5f+ĄÝnĄPM4ďÂÂ5×´ŇÍýOď¬Çhgv¨·VÄ]»ĽŹ:Žs,gjGÉŃ&ěcâ­˘–ĚjH‰5ڧ˘őX—Ä”P”Ë Ö¦ú*´–µPżW=|?׳_ţ>.ŮcŘ-yľĂ$Ö HŔŮĐ[ŞôŰś€™č¶*ˇ*Bh,oŠ ±2&Úü#ČÖźQ­ĎĹEdŘžâ¨VŰl|÷ďťćwu=˛¬Cb\M®}3Fţ^xË{_$®ř{ܡ˛+e30(!Í §ôňn’ Ťö¤T8™6›˘Îść×}{Y _ΛvĎöÝęňĆő—Ăëąß˛ĄzĆřŤ#<·˘UŇď2ŞřW_ŠsÄśBŘ9×\•ő®Ö‹ď)Nýí Ôj}ŹÖ·×Ěŕ?‰‚ néţ`ÝÚ^Ţ=Jüi®·÷Ŕ7=Ňq^[c›:RŃ~FĄ…'s÷€?Ű©7#6VĹwáľF¶ÚłŕśK<ćŕ^ë3ÝăcÓŚŐÜfăLSq:Ű: Ę;nŠšgCĆ]H ™' ˙2ŁŤë_Ë­í} ćĄ7Ü\ sŻ{ýâEîĐđ­ëŢŐŹb?Ć/ΰ˝Ë—dÝ*Y^T\WO3“±–sĆyEÍ:Gçó3] K‰ëwpL›\yµYi˝).¸k^’O™+‡Ďyd.‹Öđ+ ͨ(6ogllël–ęK—;ĽR‹řѤ+ňíříWwhóé¸{íŞyŤćČ Ř­¶ůŹĺ–›—ęĄý‰VUŽŐ‰1ň:{ŻśŹĽf‚GĘ2®&ĽőŃbfU˛5CŠÖßź-óölYŃ!S*˝oŠPĄHŔü6-ąNę !_qEJ”©? }.ę Ň–‰čNÁ|@·ě·w@K1… 5˛Ě%ćÝĄmËx‡ô-‚Ľ\Çň8ˇłđ(ť# pR‹Î>čśt­FöÜ!“z’ˇĹr!»“ĄF=u|¤Ę®ş«71Ň?S{Gó×mť±’xÝZ»ŹX'­í.]nĎë§Ť"Ξh»{ľđ<Óľ«|›N:Ű®ôLý™ć bo†t"ŻŤÝK+{÷ć˘çŘŠÚaŢ ×u¬qä6´ĹöA[ĺĐŢÜwXrň‡›đŠŽŘ.#)˙@Í7Ă{a,,Výh* KĺëfŇ˦` -ÂkŰşwăíŁU("h/0ŰđkłČ«­ęF‘„ĺ-+ç9[ş8`TŚV ý]ÁęN‰o˙ą7ď_«q’ŐăEÉ;3‘o¬¸¶¦ßČrţ,±ŮEqüJ˘\m[7ş©X`ž”Ď8‡·_~ZŁ$†qjŽšóLb$ĄdŠV=OÜJ»#|ä©b&ű5ݬ˙+,é)˛gXźöônüXľłO‡ hó§1<|Ó’ć¸ţ¬pIÜšâ*F[ÇXM·+'PžsC<}É:ň¦2†5$ŃĄ1őŞmžşI?ă ds_čVőmOŚ«,'] x;‹˙W­źćm5đsţQÔdÇđřˇź²ĎÇ)=]ĎVîÄl‘]řĎVW’Ő Ű`¨čYúxsĆ>ńŞmţ˙hSĺÖźă—3F·îĂžRfÄą¶“i˘äQî“p‡\pÂŘsl#Ľ,Đ2´Ă}1ř˝]e JđE5 Ń%_ůĂŠ đ¤˛\l1©~G"×äô{:č&.× í‡Ýj|NőBU­Ţt‘µ×8çş—ö8ßG3SŹOČś˙Ą„_ź¸Ç ë^â[ţ±1.ęťäGYŰĘgĹ8*T2é­ÍhĘ9ˇ¸®Cx«ń¨…íć@űÚÁČĂ=şEć'kžĹµ1QĆÖ7<·s©,şó„-y˙óĽ,Qă‚ VgerzĹŢĹoĎYç#l÷ŇÔcŐµŇĂťß®ŢEsú_`o,ë»îHLoM8Ř’ŻFbĎPY<Â؇†!?upÜ;ś9X§]f h˝í¸Uő-˝»ßŰçdŃą—ż€;žcůÔ‰ZóNš +«f;ś[ő5<ˇ* •č upś8§Şí2`עÇë[rľä»ż:”ţ!MŹÍěÂĂÂXAöÁ7ČńĐźiŹŘł6»·ţŕ‘É‚¤ăvĐĄłćjü}˛»T[f±{Ź˙ňs–YI\gL˘Đ§÷Y|‹ĎíźÓTŐçZOx)ľâ:€“ă ŁŁlŕ˘áľÇVÔdĺŢYE>¬ŹnTÔrâŽísB(¨«Oß`oFú”•ő u KlĆ]y9oĄ°.ÝscYgŽ?EuQÄScŹfŔ «x’0ř·Ľťq:}2śÄ=`IÖ÷>&źé‰SĂI†ü¸xëšśÖ?í(GÜ9qx›ĺŔąb"TU'°}ťÓÁ×#ň#lVµíĚă2űŐ ÜŽöx+nč= çňĹŐ^°í7¦7ó¨fKó ź˝Ő áu(`żZWFŤ‹9Ł?‡Q®Źą©‰ąyą BŻ/Cd¶gť|#˙kÂď Pf‹×‹)oş°‡S˘‘ěj6±˝’đ{<ůt>ź P^¨0‘_7Ôč*ąť;ŚÂg‘& lňĚ&đ˛if¤¦<šOţśZŠz*ź5îjÉúwBiŻbűüŕáe‘.™hNÜz”LŔdŰ2 ¨“˝c ä[EYkSú_Ż ]Ş"ń*3ű° ßÝî¨őbnԋ荔›|ϧ'Ż4Ő™"o€Cs Ôbř  @usz Á {ĚĚŻá!ĺ»QP)-ňهR8ޡd€ě„ü´2üŻ’ç˙Ű4yTMO\™śÄßÓě?MF·TSą†çɇÉŔĘ„°¦ëŢg2€*=/ŰŔxvŻžŁ)ĽˇmOrţč&ŢŞ˝µÓÉŘĘĂůÂĽ złČmÉ SíKîÁčq“Ń"ČŢŻW{±v¦żŕô‡T‘ěçeťMŕG¤¬Ś¸źěhťh;Y@Ŕl*»šnć!€éý´Qmr㋜L d&§ L˙śćiťźą§\IFĆ<ÍoO¤Tw˘ô×QÔ"‰Ţ.Ń?bň@ "ÜüÍXo˛Č‘»'ĄŢ´„ÜvmM¶Ú|řŹłJ›pXky “ŃWÖ âëCŹŚąé'VAHĐČÚAß÷mßÚľu»öÚş»oë„A-˝ďŻ^wµ·ŰÝ$¬B¶K)Ńj! ')€ęŕ«|* DQPÂ0’žb@Ć‚'ź”Čô!1„ž˘Öqn\¬B0źŠč٤¦¶xіםZWśUL´ŻKPµČ˛Ś-.-XŹ…mu襽‰/(ö)h®mÖt‹Ě©gy ‹°Ç.TY‰ŮjZN¶E´Ň yźAę}Ŷş=·żXKÓŰX‘nůë}ČžË6ä‚Č[{U=۬¬("Ż[E7|´O}Úrš/hân0BŘ’x+SÔd7ú1ÄOżII­˘ŁY.ĎśĎRK ¬ş:§¶Ż©YĄHK˝ÁEÍ1R¦82™ĂąV[‡§ZúĐĽ™Ëún.K÷Iw‹á;MȭŬó2¤]vžAkÝţPüY±{J{ébyŘ]E‹9÷äśo§é4$e—¤OÂ'ü~ľB–37­¶cokµIúž0¶ťĆvâ˝ ¤ň E BEgąr_Š?2Ës$5U&o)äZăě¬Ű†ßëE+éú ­˙g>=YlĂ ·Y±Ü˘ű7‚0F ë˘Ađ ŽŢAýv)˛ĺŢly l ¶BŤ÷:"˛ë8{JLKŮ<"–ѵإ—1Yíë‰ÁęŹĺ‘ŰG`ÝüµFH?ŽŰŔ’ţ®/bTäş4ß$E;ŮŔéqt¶÷Ř\’›8:ą Ś\ ĂÉÖĽękP‘˛t+)#ŃX‡>T‡÷8Ąň‚—äTöPó˘ąXi˛§·Pí°Đ®Đľ¬Ţµ–(;RĂťŽ•ѸŐw|“˛Łâĺ\Tą^R…jß±n»śëšwqiĺĆţŚ#Űéč}sn6r‹ňŠŁŤzŐçőVőĚ1şÝ­×e-GúLi“őŤő`K§qÉšŹ­z!ćx=Kvć{™®}ú˙ <ĄUNζ&7ş/Řčš®ź8O-HëČ—®f¨­%/ř@˝E ř˙B˝Ťě‹>AÎVŃčÔ~ÖIĹŃą‹¸»Ű[ŽŃŞÓ˘©]Iő?ujŤO’×¶Ůâř»áÎnVŤ&•xŐ05žÜě·Dí>ÚĽ:Řł§ů¶Ť­pl˝ëc4{É“™>śĐĄQ6FôĐĽ–躊%ÝWȤv©0EkŢfäyΕaŤmľŔ˛—qąđ’ ‚ű+jÍ˙Oś_"VéB™HńáG6ĄBfĎľop×× L˝wQë…BĘđń$=őÂSy1)aL°#Bâ:É‚3^VŔčY—˛YKs>őzpĘ[›T[Ůx"·âIî€o¶UUŐX¬Ĺ”~@"SJ/ű“™/ڍ“Đz„KjT­đ«'Ď důhşĐ׳ý$µä.é6EăHž_Űć´íg¸âqtŇű”‚BË”" ń43C(‰±b‹‰D%Ĺěţ ąwIś$ÜąYćžçř#ŞŠ‡x,+Ý’°qő¶ĄČ}Yş:É3Ü‘iItí„3S!ĽOuRoŤôŻ|o+…OżÜ_Ŕ¦Z§â#Čü>ú-"@„Ăëj® öśľžĘ–í.3g'Ż*$đ­0ÎcŇö8âţđľ× ­î"Ć$Yî—uµyŕëŁzi|Şzi\(Çăťŕ­wń̡'ç?9(b|ôćě?ÂŘVlŚÜ âÚPđŮdťiLC¸ÔtÍG“ßâĎrüőÝełj†n“«wţmë˝>;:ŹČřPŞ˝˛ü*gďNĐ**®ŤG_¨Kś.ś"â +DřBŐ§đ·°J(QőwëPąő~ÔŠµVS€éw¸jp5}Qö9.˘˝˙żj¬†k ®Řp^Ě*Ţß.ÜŻWµŁńŐZ¨1ë‚óńHgEXžÂ»ěOžúGťđe~^Ťň=F$ń¶ë%Ë!y_ňÝBaŃř†í®Ş˙ż…kşRů¦Ôř«. ŕ“â·ä•nŞ÷‹xBnłqô§řb“Ó¤‰ ĘŞČ`Žś.OĘŁRu›Í:Č%ĽßĺʵňěOXtş9şU®FŁCíÜq_Á-°´éúë×lłÓµEgĚqśÁśË¬ÝeN*Óé««ŘĽP6á^l8ÝŚiŢţŻd°‡60Ż]ź mˇÄ ćŚňă\äd:˘ŕ=ěŘĹă~D€Ňďĺ/ý¤Ę`ŕ©Ôć±ß*ÂÓťą:6ýĂÝ×ďQżfKő˛7o§-©»<Ŕ»›MĘĹn˝±PQ`ŕ~ĸÝkYó z+¤źŁţ>ŕ*sŮ7qÂϱÔčXÄqĽl˙ý®Ú˶ićTS}?Őryţí ÚsňuCgçÍÓËOjš¶}[``ÖŢýPÇ@§×ZËLňk… lcr-÷ŢIł·­ ¦©]‹‹¶oż{ öĽ0*Łăţűő^V’}VŢZçnކ‚x2HŇýDz…”ĘÜ”Ţp ;vzH§ő©…Ţ;‘_ŠZ‰Ű5íş'<`P"O'Ó"b«Äű”;A!Ƈr™]ąŕ­·‘\,đW˝÷ˇ‚ž±ĺ±8ŹłźUŇ#†ň­~ËŚ›oĘW-‡lÔţşü85ÖŚ<Üj•±¤·.Ăk‰ťköÓGşµyFč‘+{naď3©s'@‹mݎyËŇęYb’»»n”“ąŔ Ň/ć­ËíÄÇGÂŚÇ)¸gÂ$*ŕIRć/‚Ţ?ýl~ˇ˘;§•&ŘĽyÁߊU^Ó¸mEsŠlŐIÚ€ä)Šö«“D׹©˛÷K) Je’ŘR­÷řŞW/«Úą˝ Xұ‹¶C.ľŹó'Ý‘…w!łTn«˝BM=óäŐŠYY/=Ő<ĆZ–‹/ą9áĽŢ’F{‰Í•™*fžµŻE{´qJ#A}ô¦ŮsůgÂfŰ»Źnmů…őxâĹ)ą$¬˝ÓVĘ‹Ă}¨ýiĄ€ť­1®rJ˛łéµ»qgW}‡žÓ†ŰxÜËĐű×ErřfpĘĄDZ]™ ş_{\ý‚Ě;ôü¸ Ś›1뿍&ż}ǢݏŻńkň:muaxĹ»źŻ4\0ŚŔR¤ę_‹n4ň)e¶ő¤ŁOÍľ{}HúăEäFsyŶÍňCŃ,-:‹ę‰2>‘â«3¤EdţAŔŢ?÷źoşý˙dŘ%9ľËŻA'yÜ K~ŽY†LÖľ^Ě®°µ“·w Éî}[ă1ˇ¤msíĐąW)Ĺťż1ěÖ؆ܓŻ$7aÄ%áľäĽĽV UErĚ'‹C¨'ĄöIĚ‹×ő3$ĺ$łäű;µd)ÂľbŹ ńó-I¨÷eD­xg °1T´Ú…‚»8wÔ›Hřµ“<ZŘäŮđjö3t„‡dI:‡ µ§©ŕWVťŽ¨CTĂŘËŻ¨9<Ű@'Îh’]Ĺs2Kć{“ŤČş., ·;ýZ¤ÖĹĎOcÎşĎÇ©šň ÷ě¤CääX ,ÓINa›ţtTT›ü[ľćsöď߸Z&Ö`D‹˙TűĂ]¦ x>ÉÁ•tXŹ™OŚ?ĚŹhCŐÎd(źÜŃ Śvţ'łčą™ J˛ đâĹ”ÔbäÉoÇ‹YěyX‘Î\pĹ ›Ţń]®g1¨@hB%zŔYS Sü- P§L´±µ4bŢ[ ą0-éx·Ă>ä›ô˛ôíńi~XťźVÎäĹžD)m8&çń3´lţ1č™ ˛@xŰ`9€s3 řh‰*;˙# ´$Őü(á h«Ô€†<őűtÜ—„ĎýV¨ĂÇ= 7 ĺŘ }Ř,7dÚŽzt_ޱ%smý qî.<8"ŕô×I@ý‰ŹĹm¦ű*ýŢîő1… L3+H(ÓL€'ř˙iŤ‰´šąŻ)7#Díëę‡HÝŹvu‹ŁÓśˇ»°Ő~µ¸‚:8^ŰÍ"…IŐŁ—ÝůÉ'µ‰ŔÇŇ–~T¨ő7úĹ=ifçŻöF§ř‹Ýá\Z,O_E×ű‘{ »µ+ýAT=†š¤ŚË{Í«ż«ęýëýŃV\ÎŮZ_ÎÝËÁ|Í|ŮńÇ`wĽÄěŔ‘yá+KČ>;IČśě‚IL[m<Ă4W—BuŐx5E­¤ O¬ˇś?Ěşˇg§µ&˙D )P^Đó ÎŔ§§č(˛aqţ&‘_ Kůś_áů‰ö˝Jč]Ő5Ř4“U‡ŘýB’ZIdańÚ~ŤË1@µĚly5J&U…—ŮîaZŢlŃеsşö Ł©?đçphŚ]~PĆ\¤â+ŻI*ßZŠ,żLýy7îĘ>÷™aI7L7“k_ĂćčľŰ]¶Ö·Ń©㨼Ů8Ň Şačfńś˛žŔk;CŚcé1ŁŁb˝xI«Ň(W.uč„1® ŹP)^Á+eYs3íB~ĺv/ Pčp:JönĹĎ×Ú=ü+K©f şÄ§ř©eűú¨I5‘Šł@đpŽ˙…˘#»šÉ|M ˙+b·MqőĚŽ¬şţ!ď|űV§—W0sĐŢŕh&č~9Šźíž1e˝™žp“Ł•b†žÇDŻ-ţÖ. ”űĆCÎf2’XU†Qę“;8}×ě§a›Üřěq}Š-m4fLŘk7¦H¦7eĽÄv© ě'Cú7řkÁđĽŰ†`­DţsPŽ›÷7+R{ vTŤÝĽc%Ž/4š‰Ţ›”\‘”şîiÝÚÚÓ>ćé2v:}fjă;—ä#e†\u“§Ł—M(@,eý€|’SV7ŮözcŞrů%VSÚË^VÉăô hČAÁ˙ź:|ˇźń™sčŐv?ŹďÓ)°_Š™ZSzŔ2"ž€0ĘĚÝĐ O^Ô…żďhRNXµęfŞ˝‡*;n‡vTć°`ô3D@3oeÄöCśÉt;x€ÖSŰůIp˝9Nb !i#4˝­ěeo}ÝUGÖKR'Í뿆ČfD°á üť÷îŕ’HBßs=†¤Ó›*I‡ężTÔ˘Ú"–©uŁ›WÔ˛ÚÚŮŽëŞ÷’ŞiŇ—ÍQ•ZÓĄ‡ßjQDµôčŁŐ´98}şęŔwOšç‡ôIßy$ŠFŞfîÝ îďť÷{ď9·9ŻËą.Żg׳EÝŰ.¶|źsvm¬Hd“kQe3‹FÖE)´´$……!!<’ňR€'ž€y}Iđ/‚@‡Řţ/"Y/ąŰ˝„e¦•[jWR –4ĎbwŘ1™©í(4‰Ţ”•P1a•rß–đ;3¨Ž2ˇä{ŐĘGb—'4ăĘUpňKČ€L$x‡¤*ÎĂ|_ż‹űűŁ‘MąódřdŃ3K6Ú"Lč:Ę`ÚddĎIQ˘)):’‘rE1"28Đ ĂKçÉ;±2ŠBů0”R’ýs…“É.ĘZKA[\źăÂÍÚ˛éČ?J¦« ÓôůÄ€l›–Ëj•=GOúşIR”^D1 ůxTZl"/qGlcŇ×Řv‚3ůó5LĂ:Ç”aŰ%ôÝÂvI/ĐúTŕŞÖTť›`¸äręý¤ý¤ˇjČěń°2SܱͥĽ|p˙ÔęľQ+Q„Biçoµ©!”Cf RÉ(Ĺb‚ž ņpśĽ ĽS´€Ż‹Mđč/U™"<«„°řłłw5ŃŇM}÷R“eŔn±LM)FÖóťd©sd§†ÔěŮ®×x;S®śKĽ…Çç‰MwJţfqě‘Âą¦OĽfłJGzŐćs­Ç|$UQÉÝřg¦šzµÁ/çű˝ř*łu`™÷rŇ€/ő¦óM2˘»,˛e`šg©Y« ż­MVŹ ń˛vµ’ĄSöVq#±Ą9ĄťěĘdîřNó•/¸kŐ®Mďŕn0* (!]Ą…Xů5»ä€ťšŁžZ<ňQÓłS„•ÚČôöFŃX%HĆŰéÇz˛–™ťŚÂB]ë7ďhń^ÝłžĄŘĹ~ÁŃ ™=Źnśśb-‘)ĽÇ®ĘÉÚ‰Ú–k%hH—f= €,űW÷í…đŻ„^ąf*^M ×Ë?ŽQÖ×|úgXXčP›ĂŔ[MÉq1źzź|ś>¸PçÉŰżĂřčkG° ŇAHu e –l!l˙c:†2Ię3ľŰŕr˘Ń¨đb8ó+‚'ÚX2xäęnünýŠ•"]5|)Čč„¶ÖNŐq«Ć«Úq™:Űŕo­<“Ěl“›3<éN” ;At©Jü.×)Ú§*N·ÝdĄyłĂ&1€kű@tLóŻëĂ4,ˇ«ţô’%-ż/:nS~ŢeńĄX´Á»O‹XkŠŹVݤ‹ĐŽqX0ű&‚ phSžě}p2Ǧ¤ôú]1§nişŽş7t6Ł5Čpšsj,]D­C9É0äSYţĺPĺ«ÔŃĐŇ´őŹč義ў˛*_±\Ô.Wb0*網´`”ÂB:ÎE6ě6ypk;.őkerdOiö ŽŇÚ+Ú\ČŁ6µsĄ>)’ VĺŔai^ew·ŁčFş„ëíĐP—¦žĘ źnŽ,źöJ'µF¶¬ôðFŔĽPű¦-ů sĺQ˝ŻŁEÄŽ xűWŰŤÜč(=ĽËsěůý"t•k†Ů”5z„°> “Ż4aoźŻE–ëÔ`|_/.ŽÂň“ţŞ´Ău8á-=ĚĘhÓ¦µÜ;PYş ŽĹŘ´›Ě$|să˘2aĄŰÉąÝp•ĎĽçTŕ<·OBřĂ ^–c@DMż,PŤJÎŽŃ™‹ËçËçäŐGP1üPn°4 v4ÂM7˙&‚Ű9é(Áęé+M§ş•yζöâ8°ÂbřEy¦›´ZŤIŮǸěă> R¨2Y-eYq–Ľůä˘q–ŰOM}‘hă)©QŞnĹzÄkŕůKşŞ‚ş!ą€“ÔTö‚ü-®ŚŔZdĐ$ôh“o„löĹ.ĘDEĽĺ^ĐZ Z9Ř´ …mj–Jý€JPë—ť¶VMŃŔ}D t4‘•%’ZgÍ ˇłçgţ[Ů´=TłÉĽ!Ŕ1ڵ„8s>Ď>> Ľ,ŇśçţNŘI RÝŁP×mޱyęj×[Ř™ăPNh‹b"ĆŹÚżINTˇÎJ#đśO ±ĺ ˙đ%Ďq­Kä}F0păë!’{Ő ;îüŘ+ŕç#ťR¤%×SCŤů&ńq80NůžX`ä«W%ľĄ. FZŤRC[h,!ĐžÎ]5-ĹHłĺěZÖÁ‹ěáÄU!c7, 5Î\|řpnö˘WŻŁ5,¸d jUŔłÁl¤A·€Â&‚ąďÓڀꟵhőşŤfú¦G?lś&šÔŐR÷ąšô ,–ś)ôQ ô;ĺÚőŤ-aţU®×3&”›? kgD8Xžh÷vŞźh€qůź„rö„‡¶Á8¶ÚÇbysk}9ńVhüÜäD ‡' ŐlL¦Ščű7Ňp‚t>ôK˛gáé­y={zôö`oÄŹ…ťĺ”N*ݵJÚ¬†Ům˘ll¦Ňj>֛ǵ+ŃÓ{tĺË ˙„Ĺž_\í”.Ś ČJÓ¬ßMńţzb†¬‹7ĺ§u‚ćȦđ 9ĽiťµśšČĆ=^T˝Ćäe¬%›¸nUŤ#Ú·sRŹ7~°*ć0—Ô})ř"6Ě,Ü…ŻŐăŔ yiŽ+˙ő\Ʀ¸Ę6»ÖŘu)ö4e‰Ďj5 Ń/˝ŕý%‰îíćߡv7Ą®j~ëtµűČĽXÇ~×űTˇ|9ÁÄ;E?’©D}ągČŹc2Č˝·#1„2ŰŞ#GŹÁlöŽV]Y®É@°Ş­jâĚ&ë[†Žô۶Ô]U4ä˘f2smě?“k˝ů‰HMčz&ěńZ.RŐ\y}ëŮü÷CMŘxÍ×B}ŁŢÖQ7ęEůęĘIkĽüXžî­ŠUt?hžŚú«đꛇZŃ5‰çb§‡Ý]|¨;|”c$éµbľ–㎍h˛§Đl<#”MŮőŠ­R†±;Ti+,`ĺC=¨e.†WŁăĂsy@÷OŘ$ďř:zCHřôfâĺĆ×Đx7€!‡š@Ń€Žň:âć6†2wäµ›¶¨Rx6Ź?ĚáË—Ř'6ÜŽĚýďČűQŹ9ićńą].[Őť-») úiĆžĄ˘Ýµtmé‡Řě`'L(nľĐĂPNŢ®Lë.Đ®ŕ64¬ŕ_‡ U Ú‰ĎÔĐm¤· ©jD“'?v a‰ąËuO…ľ7QT¤úÝFŮnGа݉lT¤l)´4W!ĐÁs©Ď:fß«ŕy™đ´O rF.FO‘qBČďަ ŹH5'ÇŠüřG㦿¸Ba7rűyąyřüş:YżÇŞg˘íSĂ Ţ˙`Ú Ąl\đg§Ŕ„÷†jŕ\«ejtŔĹH…*Ú±Ŕ2Ŕu!6ÎmDt1Ú„´|¤÷¬Ä5ü;Ăčę­ÖËŤLU:•ąý#ŇŽ]…¦WŠőüőĮۖ­¦43“)ȩ̍Bîż4(×&łß‹)$řĽĐ Ţ–·9â;á™a9˙“^ĽóŁĐŕîW~Č-Ŕ]îwű­·yIĄNśÜ ^ߎĢüčč_q QJČć‡`Đ `ěśâ€#]vT›j{?eôďŰJ÷#"‰—‰¨Đ¨‰Hdę·?Ýd‹NŔÉ5ô®O>îbŮďfśľ@ĺ\TD+ÇĚ9)!łţA´pUy ,Á];€>tŤ¸g™yüȦ™ń¨ř;cä4µmbpţ­ˇą?ߦS›†FŽ+ŢÁ°†UŁfĘw}ľä~ĽÁŠőĚ'¤ÓPëR9xË/í¬K‹—Wô­[”˘Ý/ŽŞĄ»ÜéE /+˛¸Š=Šő”ÝĹFő–ď¦ÓUµ˘ ŚÂŤ‡ÔrČgö¶‘—Ď_o4ýÁ,SŐĚś±Űc^8łkmŤWŞF›ErŽôUă–Pť-9ᱡ”­›ć8ŹBc4śÚk­ ó:‘Ł}G—Ç ¨h ×z^â|†Qo®Ďkt¸‹—[‡ťËĹ·L@ęÚ(Óp#xÎü ÷1’ćt†X,Zt:u ŽęsP:¦tźevC®W&›3ßnÜîh_‰ëGÄ›N©ś`Ŕ1S¬üŰýç 9d§Oüět>á{9DPF$L6cr®PÄv˙°>Ńë‡wfN?ő0BšE0Ľ`Ë.Ăă Qys™ńďČĆ.]€j€ĺĐ,‹ 䑥ް9\ő±ZÓžÇ^®g• ( ›J.ćz†0âP+ŞEě•Jg¤¸„ ď‹e˛̱…j¶ĐW: ţĄô­ď-·­!č[3·śŠť~˙‰čĂóž+o{©ŔřßyŔď>őtĚä|0‡h`@?Âbëô=ˇ™Rłt DâÁáÎÎdZŚ[ŤrŚŹnŘuÓÝbJ÷bQ9l°ůX&UBCÍrˇf‰z""ˇg?·qz2É1ĽÔ›XąIP1{ő±}T8(1ßĎśěJVjĹďçÎ`7†ÄţŕZL=E‡n†p¶8˛d;ĺ!Ý樦(\ÁjŞ›řýŚĺAr©nÇ2żxzÜ›°Â“† ߍg±TÎutm¶Óş)“/GÉkÎ"*E!1ÖÔ=Eů:¦PĂô–ďiŘŞEĎĺr•n¦čŐÖ/6 †¶Yߡ3ý"”–›ęŢfîx4ŞäÇ ‘ęаqą›˛çGMra &>ŽaŘ’rdóNmi°3â0ŠçŢA™·¬Ůśß_vëiŻ8‚1fdŇ™ŞCľ7ú Ć#&Ł^ÔîËGÄI×Ý”źt`Éß #ŕWŢ+ďĐĚŰyĺR_¶ăłŇk7v/…;„ZWUĺŔv‚€‡ŢF/ďtÎYď•ń‡ˇĄĽ`›˛?÷ífźjY*«ňqîţ˙SŔÝ0ĽŐĐšíÄLĎ"™ú…B#·ţ™Ńáq8ţ¶q¶T IRľ– !Ur‚Ěţo;,đ ĂĽXÎŔaŘ2#Ů őŤëLEĆÝ1V< Ž6¦1OŘ6`®z‹!™¬1Kç¤1mIő«›YͤVÚ-ćo–µŃ`q gÖK‹őś]±Xáš7@ŰxO«9űł8B`C_|rµ8§Ż=ŻÎQřýťŽČ|Öu-DD5\×–@üR >Ł˝yÎ×GM‘WťXŹmK˝tÂůęĐd/ş,˝˝Ĺ¨VżĽçîfŃq:‰§ub϶8lŚ }RZÇ;“ő(»ŕ+“â˛ú뫿Ć˙_EŞś´ťŕ |ć=Ď"ˇČ1™×En˙łçÂyŚĽŻ˘ćŻ{  3@3oeLÚAq@ Yłm*u#KrxKÉćo„Ám;ěÚۦîłlí%Í›ćőßĂ4"pP`JvůK%)>Ĺe ’ żđK$Dl˛¦Ś™L)ʰÝÍĽZąQŮpŢw§űúŁÜ¶»zŁSvazÓe]¶˛é¦ŹŢAPŠTô˘7zÔkTPč”®:%a HŇßË "P5`ďŢ{ťsuçsžŰśn›[gřXµÖ®mŞUką¶CÍץI¬2´i¸›h^ €"@ / ‚"("ŕďc÷Ż€}/áň’Śü€ĘuX¨”Ż™b–‡Î .#_JÚ'3Ŕ Mf2qÓŇę“ř± ĘiłrŚS2}ó˝V!Y"Zk–şS`R6ČËBdöů”ä<3Ď‚2±҅lś$|gVŘĐDŐŐŠrU™ôő¶ĚB„‰Ńbčěb×Çď$fÉÂ.ť : S”–ł¸Á2Ř()®gXv¸đcíˇ»Ş‰),@mńDâÜŐ?ˇŽ«ořúçŰ„ÇďĹÚ÷ ëCµz±Đ«Ő‰nňx{&Ś ť ÖĚ_9Źk{|ť¤ĚÔČYą4i VËËUŔŚ óX1f‹UˇhŻ{;>rg(6˛ŚUµÉ˘ÜîýfüËUÍŹŽĺ Qu©„Čę6މ¶ˇH^ůÚš'‹]Ú µĎ[wź·•8żehç:Až4Ôz'7r’§~÷ËëíĐ·µŚ`[\„N<†'”Ő†Ż¤A÷ˇÖľjJßÍÉůă[•ńI{Ů(pŮöużvăě9s=0Ěŕ˛ű€˘_8°PżvçŁŮb˛\i\ľ¬YânÂ)ĹÖŤÝbĺ®ËrłK¶¸gc´!ÚčëhcŢŚ#ěÎ`ÍĽĎ,ëŠ-[6Zg¬żÂŻ-iý,®C٨ЀÎ7â Ô}{{¨;đĎDńy[ęĄË Ú$ ,śç6MX9Y÷˘p8öWqGd˘<żîŽć1{ÁŕKýĐdÉ+AÖ2ˇĄLĄ;!{Ěąůs®uÁz¸wÜ$4xrŹ8´^m#ňß飫ŔuU»ę“XIŞ®ˇ'›ÇŞ€˛Ű=ú뼳T8śç´†»ŹM-‡ĂMÔm †oT­®=î%!tô D¦Č ćoĐ´Đq°yŽęĐČ1z¸>7-®Çó$=Ěšx;ȬP ?îs;NŞ$Ń›ar» EüÝ·ůU|?-fÎlč.Ăřă™r·ź Řóús±,CáĹŻâďAőF·ôb°“<łŰ˘%YswÍy1¬]śv¨µš>˘ő)Í@O=ő¨íĹÖ+”ŚC§ŃK-gßP5ĘĂżA°× q®=¶4˛ żÇű@6o‰ˇš·|ô-c÷: E™ ă]U+µ»0ˇÁËŤ8uźjL×_‹Ë=>¶¸ Ů~8­<Ş—°N˛j2Ru‚X7R„ 2B>đ˘wꢜr5,ß«|“—ŁÇAr/;¬ŰXxqbĽ–ôÚ@ˇŐ.éżçKŮ„AÖé§Aža‘5ŹRĄpâf§WÁMőŮÎ͇Oď Ĺ2MĘ1Ża®ý]JŐm–rő&kOă7‚®ĺ˙Ă™1A,ńBŻßŢń!0QBĄ,c§‚HĂÂĽÇńĽˇ MßŰXŕÜj¦‡s{­z‰Â‡/ýĂ1ńô[ĺNBW xÖ‘NgőiŐËŃË–gf­uÜéÍŤ™“ű<ôGA@cx'¨6¶áÓ]…Ȧ°‹”\S)7—7Č!MIcąÄŇPDioM«V„‚éRďOjWCč¦l đD 1ÇCXżŃj^]uúóě˝ăFx27aÚI{O<ń22ůiQľšCäÉ`š®ąk9Eň®Ó&÷á,ń™–M¨N8-O ćŽb$2gÚˇ^đ8»"ž·áixj© cšÔ¬¦_a^×â‡éĘ,ĄŇí˙#tč»%BCŢäűzdňkŬ‡Ţv†B'VüÝ©ĘđÎď â0ç^řĚ™ľ}ëşwő$˝aübű«íĺŁ6’Šo•Ýř+Ě»Vw9±EN"š7*§6ťÇŚ»,żćĹĂ{âŰ%2‘éä;4;;ÝW!UŻJRßÓb ł%4¦^ˇéă^­_ĺ<(·3t8HUŃd  ZÂĺ$ µLq5!ŕš–íM|Dć(đ&łWň2ů z¬ąů.U´Ćˇó·ˇ4XřÔYüG­°ĹŃÝĉµâ„ŻCâ^7ÁĹ7Ď0Ň´ĎŕTw­']ÔŤI‡ŇůB@„ĹîÇn:ţÉL'¶8C>^‚“TjnÜ/ć$)—8ë=o”Ų0ěĺĹáíŘIaĆĎŚâ&˛Ąşö;éN¬‹[ědô>˝+Hřň¶ĘIz.¦1ĐeΝ椫Ţ]Äłů$[§Ţ?v[ďÄ« oŕé1ďU:ÓŃ$ŮĎVŁüCÇtŃĽ*ÝšÓ+Ń‘\˙qŇčŃîÚ ‡će­Ŕe/ÝR÷f+řTš˝ţe«9Ú#¦0±©Ř ݸł;WÍđĽ+ľË]çOR{¨¬ě™@«2­üQ´/OQĽşżńňŐ¦R˛ĐäĘÝV4Ź_  ]Ó2‡DŤX‘Ňh‚ś8O(¨‚@+­l–Ww$™ĺb\×c´ô–ĆRł†™~#ł_żRők5 ŔüŁ2¶c €cűÖxB00‘ Ą{x–P2PÉ!sƱ{4­ÚS›Ţp ¤hBZŤëŤ›ŁwË» ĆvźŁ;ąĎo2ČÍÔÔ [Gî˘lw•µXF€·!5Wb'Ý—ŽĺĘËć|XĄĚŁęŽŃzz î[>- á †,¶đ_«dţ_GžËĺTą­ Ż÷SůżÇĚÔ…§‘—îP˝M/Őxń˘„ě™Ě5v`µÍRž›*±×&ť¸Í©_†‚çclĆśO*}žžÄ).Źł$\üúŔŐѨâiüGnä®&Žđ9ďҢŃ$®«oŢÉoË/••ňG"óĐčă Óh!M-ŞTx 1L…˝p‰®Ţ؇⬍ü=Ď•ů„›HRwU]'ţ Ő|óÍĘúĹđ¨f2Ď]a(؉c”Ăgţ[m çĘ›†Č^!ńoŰŚ÷wfLĹőĘó–É—ŢyUđJ@ ćhi- `ŕŮ“ÔXîĚI¦PýŤůéĐî{îőÓRţ|ć+D8&!ş˛Ű¤N(őbŢí–~Â˙e*|Z@˘3čg¦×ź: °·V˙6üLę; Ů]â?wŃ(:¬ĎĹDRźyí/"&€?||[Žśüâbů¦mÁ¤;ݬ¶!ÁvĎ™Ž“˝)Pµ5¤Ë˛ŤA€‘ţ¨C°ą& Ŕ÷Ô&¨ «3%dV*yŞźµ c‚5ä*‹łŁ^Í•<¬Ż%]âóhÓčxşČՙҫČ>"¶ŞSK~‘¶ÁÄ×™®}ǬS‘äŹ7‚ä4JÚaŞň‰±<ćnëâ/L^Ű–ŹÚ HS)ž`[&ŕy؉ Ú¦"Ďgë6d->ŐcjýÝq耭Iľp ŮČŹô\ Ő8ď««˛(ř¸I(ÉđA-.€3ţ<ÎÖĎKK>ŔÝĽˇ1.Ó¬7Čćĺ™–EÇđú¬{Ă'Ş<Ř[^)ĐDŽ2X–ćL8Ă ńąńt[°Á2BAC ˝§â"Ě=NîFĄ’<|Ź\EŻý‚–mßéŘÇ”Ľk¸ĄÄSVŇoCZ©Öl’.;ۨ˝á\TZ#(ć¤s»ě6JWKćęne”˝ Ť—/ňčŇ\ťĂŻ2ńńT J~yëÔ™Ú; ‹ŢQ&!˝‰ąŕF.‚Qݢ`ífŇv‹Á(}“+jŐGŕ.¬•É\–?č~ řéěĎ‘±¨ űÎ̆7MlIÂű˘|pů”&ë=9¨e𤢸ďČť",H§şę§ĽN…®Ď6‘Í>'v·ë‡l?Í[8_˝H•Cš`Nˇ¦Ş/\{·ŔŤh^ĐEaŃ´ [öŐÓ}ďL:­‡ú.Ţáδá ôŕ˙řűfŞś‚Ě‚f÷!ČEÔS(µŠéU˛jëŘśfegć˝=„¶“" 3ľMů4–ćĂÎîűŞěbŁĆÁ_Q5ŘďX—¸[Ź®b+ĐR”‡tČČR}š ÉżEČ«ĹŇ3&Ţé/CÎŚnúŤ„&éPäŹý’QÓ©(S:!"PLĐÁ )ĹúMA7ËĵʞŻ'\wĎH´‚;7ő\˛"3Tń?'­fť*uCŹWkN4ë†íç®ç“Ťž¸ääM†Ĺ",` …BtŻ»D·@µ*G‹Z2ć.%µý8†TśŢŠł ›üĎhŤM:KxbĐ'ZOBp šă[Ś\”Nxúă < b݇3ŚgxYő<łŔaěĂBßëÓÓÇ ÜĆö`÷˝Ř€Ű…ŰpÖăI¶=6]Ž—NŚ8ľ‡Ť&qšB:3ŕ¤0¨L€f@6  ¦mPĹHp¬€îŃ—ËŃGęvÔW~Ś´ďŁ©¬žÎăÝłŹHŁdë˝ÝČ-ŇěU5€[ő]€x€Tńd Ő&Ĺ9ś9W4™5Ł5‚jbR»î3Kş ŕ>\ę•´“*čT8ô4N€Ä@cPHGb®Ú)Ä2É9x“tmr® mQ ő*é"řĘ'€‚ĂVýbuzń9] ¦:ąb1l“Pz;ßkŕőÚţ˙rŮŽ7§  ?đZˇ1y@[‹c•űfщ«WčO_ęIíK”Ů_Ó@l˘q§)°đ.F¸4+9)ž‹-šĹ$“%…v˘×le¶vKR™])mž^Ú}ş”/"C펼Őä`ë.oŚó lţÓă–ë¶ć®aĐU—R·„‚Źáئ>Ĺ«VďÉ”bř˙O0µ˘ÔŔđłŃýÜ|&–gŕ %Ó$óŔ/; ńŘwíó©óËŚvŹú·ď9zyÁôeTIĂŔžG•"@‘Xq ‘ŤÎo#¤ 1~jś@ĂUČĆ?ŠŢQo*:ۉÁ nY¤8áE”}ł´&«lĎ·&}m!M’ik™B:ťiqž OFób?ëŘşŮÚE°MH±ř«QŤĐ‹O»ÜŹŰK¤|I{ŰzŁ;Ó9)sv_i—8Ö=}8T—IĘŮ6ą**ťów‚ ű?= :ßA<őë&ą›–«ÄČ÷?@µŠ©¨‰K>^[Dwhşięť­®Ôîč¦a–|p•Lʵçşľ.POź¶QŇoiąOž.–˘s†¦µm—,/»KK*\„,›óÜoO÷B»x ž?:4@;G–0GÖ^‰ŠDčÓ¨™śä˝j)÷ÇYá§·Ą6Włd2ČŐ§úĘVŇÂrşďë ß şó㨢@ôŤ­A`Ńôn,_·Ů©%ľ°}÷÷eÚĚÝľšJ’Ăy™h`T¶’r˛a 5i “Šós†Śč$na\Çť€ZÄ›čJ¦ζFĺiĹ*&ę@ÍŻčvk¤ü‰GavíĎýĎ×"#S0®®Ąm>!q˘_}66×í<]źÉ”âÝAčL<Ń; ©ÓĽ)>TľDëźÇŽ ń㮜’Џľj‰…ë4ă;ë·\Ăn^źŢ‰,9áLŃógýQ´µë‚†4ôń2ýÂÍż˛»v¸äifUü)Ś2žâłŐŃu”:yéÂŽRbíŽć¬¸˝ź2UĹ/…FűäŹ ,ď\!PŻ09Γć@¶čG±Ć2®jŢL±’˙ΗU@ŘŃWüĆą_I'v©DB{—“ ·ŰÉç¸MnęŢBü%ŤŠJ‚QŃđ~˝$˙;t‚4nVáJqJçŘg¨Ű'”k޵¨KĆ:vëgÎ…JÎIF‹Ö9Oĺó|Ís×ĺ»Úo%>z0î Cl h)X’Ö#ńŻů ü‰{ÄťóňÔňA8ů—¨›Ą¨ůďĐxŮ˙^®t—\7˛Ç­$V¦*xŹ[K5Jnò=ä®8\úą’‡pC÷ą´v˘.ߥqp×ת×`ر ŚŁ¸±{i‘—jĎë)ŇĹÓŠŢš]·/q‹Ę¸nlűÎYËi.Ö‘!M4¤üLZą›ŕ[HťÚJX—‡řőËűĽłŘ «`ˇŘe±Ôđř/–ęŘ_Ş'ßh^P\Ă©I·$]~›ďŹż SZĎFŁÜÄŠ¶EoҦ‚F÷+ůZ%Vϸŕ9j…ŽĘ?áň±©ncN±y\NłJč÷S>»ŤŇ8ŢMń4ęĐdŚC°gŔ)VjXÚ­§˛UĄÔGţRmč)ŹÁ†ÇµSôEe)ÍU @3löÔ}]1öfOç– ĚMŔ>ZvˇC]ŮQCÖ ëŰ,Š0FŁđĹpY_˙»0M4ťâSLb_ŕë™ę '~äÎSOÝٶ䪉a{,lp4Vş<&ĘžWŢCpF€ę׻ŝ9çB‰Ć ńË­í|ënýŕDNô›@3ζ·};‘žżüó•ŻËüíQľ$ă°ő-á†u˙ĚFP`ś`xŔĆ<ÂĐ`,ȉ@’€0 ţ` Đ Ŕţ„ăˇŘ®šh$` .·ÔH¨¸*¶’NĆ_ŢŁřlbŽ98üTżů¤şŽwY>ô3Źv-9Н쳊ć@™ŕôi0٬©HŚq(Z˶Ú&®i 1nç"]Si4đ4ôjűB É‚öřĘAşŔŇŐ9é p ¬Ö‘Śé;hú=ŘkčÔ›s^oĚ–QB0Y€K'ărI ű©`bަů˘2 ć'ĆŽC?z?Ůâ‘QgÔůa&黚ĘĎ@ ĂĹíŚ`p ř'˝‹ĄŘO|ę\‹Ů±7ůEňŤ~÷µ}+Fô|†÷ ľ˛Á@őĘ ‘.ë¶€Éb‹gÇ@Ú^ě®ű"úô"řţEmMň×Ú‘í±që[•Äh*݉%l ±„ż±Ű€Đ@p § aŔĆ8 íE1\$Řd5˙óçA#ŹĚ­ÍČ˙Ş˝€eř Š…déçĹ-K$‡ÚlŘ×;b’cVŤ)c»µ›ľ|­Őˇ đňk‹€ Đőš—¸'›R)´G+#äżŘV‡ąI¨<ÓýŃÉ"Fu.ďp)ż÷fĘż(Ç\H\ţťKÎëŠ~Đ…­«EŢőbŐ3§Oź—щäőĆŔúç~nZďĚ|Vź–Îá3-Ć5%ĐŁÍX €†}µJ¶¬T4V»ßň4óĆv5łţRgąŃ€żŔ%¬śG•…-8ĄÉüËyş´żF"ÚH·äu4Jđ±÷řf•gAž¶áŞ8ž…ÇĚ#ČuE™‡:=‘°Xn§"<˙űĂY]ë­j°i;4˝gďţ?]¤C¦ÉmŽ@ÂpňR‰cµŮŤ!Jöd[–ćKíí{Ee‘]ĄŘ{ň[°$ §E—$ˇ‡ľYÔ‘Ç^éů¶ĂŞÁ{‡•ĚŇYă©Ă|¤7¤k0]–1VÇ!O‘<ĆÚLI}ďEä×~i­™^ʉ†±Ź¬|gewâoťí˛tľUňV÷|Řjš’]4´–µĚ­B8ňP㲏|ýJîÜ$)+łJ'â+<öăs›sňžóŰoD(}°ŃďÇfX ŢŠű+Č.ÎőNTu˙ôTöRÖŁç|’ňěEg<@k$°pŇLô_K¦ ¬˝_ţžźëj·Bc’&úĂČr¤z›”=pÔ{F 'óF …ćI“;GLC9OUţFwÖżqşţĽ&Q…¨l?ŮŢŮčŻá)ŻŘőE8–@Pé"jŃĂŽ(!XŞźŁuýGÖŰú{7ľm4M.ĆżźňĂŔž[ V~L ±ľëŁľc\ř1DěďáÁ„°ĘĚcmT|ßrŔ§¤Ç}%IÍĂtyÉ~gčź?ĄÔXó*ł¦§úÚŠŤs<Ó¨nzµŢBaÚt­ŇpzfĘ\;¬ŻŘ¸Ń»}ÉRdk;îˇNúńŹ—BźwvÖl‚˘,Ćq!‘µÄŽŃÄŢMłŘîm½ĹvĚéŐő9©$s¦|©ŠC9‚ýňČqxHxű0ś˙˝5Ăć\äč<'đb±Ťę7íjtenJ˘úŢfÁĽ¦?iř ś49Ńň(R{ 4S€p·…nxőyěáďŻ=o¦ąU/$ę§K“Ŕ‹v6,˘[Q!}ĐŚËů§şçg8x§Ó ™TC§Ţ_§"ˇk˙&ç|VđĚĆ/ä:řövTřŮĹôÄüăăÁyBűr׍/2¤)ÎÓ×i§śzP)ţăĺ×ßTÂć¨A—Ůç†e vŇËâL~Ş8ő“R“6©ëoŇÝF-ç, «Ü4ĽďÜDěćC &‘žiŻĎ€|ť±2ęŻV·Ă:ŕ1 Ó…ŕŞGP65ë †#QÚűEúŤ(7Ľn˙vÉć6¤$ż7ü¤Lę4 2‹ťĎ.*í*¶Íq \ŻĚ}ěż!m÷!&ÎX¤@ąY^„öQ†vŘ,÷ŕGűÂf·•äŕW"ř‘4"HťŃű[îµ§‰ĽOg &Ëf*ȸýÎú”zŮIÂs›3Ż‘ś ZÂfŘhA €r¬.ŹôöřaOŁlcĆ€´Ű-ČĄńđ}€®¦ľî,ë‡5ŠRpśĎh9ĺT†¸ęĘGóÍ_Ü“ż‹{Zw9‡g=+ȶ_ÄÔßť—őÄýü6ôýI¤\’T/çüŽâ'z$ü‹âě’ěÁd÷F *J)"ęKńüRÇÔęH`ţ^hćţ=ŚxóĐO8?âɉ‹Ž]čR† C×ńt©b”¨*ęj,“@=÷öÂĺđ5ýýšů2gŠ6‹©|Zu€±eí~1믄ásżöÇ&f˛FP,ĂAg{«Ű4ű?SŕN’Ë4¦ýÂ`đIŞÍ5I…~fzŐ¨“ýÍÓ Ăo7xÄ»éşÝ¬6'©Ľĺ<»Ţö®(Í|¤ćŮW~­Ńů2€«ł˝ř`y’"y‹z&9H0ŕLO\D*č[FŤDűq·ľâąS3D@3Uš!í¦8’iv±8,¨Gˇz¸­fÉi$D‹˝uÎÖÖŮ]őcÝqwÚo˙O ÷Ś XÍ'€Éq.|şäą4m.6ř‡ˇ¬‚ĄIb,Xo¶B>ÖhâG6´­Y—ş@C×Rjm_“lkZv/ŰŚ•µ ž”ČV•O9’Iĺ)—d(Č•ŻŚ@HĘÉ ÷I˛ŮĄç.ÝŚÍ űAűűď÷^»wíŰŮmvV»°-ë-·ťÖvfíM›Q­˛l,~Ą[T©Vs•$I ń “řń€!>ň> _”Ź)˙”Y 5Źm0~ů€¦9MĐAťR®Š;żŐôçgčÄuGoł˛S¦ŔJČI1!'LiXŐ·>w8BsB‰ëX¦űg&G(ž%bzJc^±E›ŁAV,ę#. f‰ę‡ĚŃ™«\˛Î(¦bMÂLÉňz-¦Ć;pĄí윬S$  v• 3ÖřĄŃŹ[<†‘Jy'‘W*+řQďµ]Â¦ŽŞ–!ŞľËÍ˝âŮÔŚőA;$Ĺ őu5AUiÓ#„ĘűI E¸€ŢŔN/v×e;î`6‹…Iš7ł©g(ŔL­k 1WJo;ż…-4ęďÖîmąsJŮÔl>čůսً;ÝäÁI×4ÉĎôž‹đ„8I,…‡Ăe>âç Ę Ę*—^–Ń=Ű0µ™Ń-\ťeIâŇąuď܉ôv &«}Ćťő¦(‘ý'Éož ĆÎáĚů¸™ˇĎ@©ŹDź“îéűm/ÄLLsć'ßăYłÖĂEfĄ%Şú¸=ſěç÷cľOVÔf×8™}ŢN tÔ űHŰúr—–쳥Ÿu§CČfËIábś{{Čt b†[˘1ˇĽż’ÓLöćüV0Öśěá,­ő´{˘\CžsŘô=şě2gl䝎‡E·=`g[9Y¶c·šýöjšR©Z"k¬ř-kćą–şńe‹‡‘;fĂr:ŘÉÓč˙ií"¸P•Dsý<*8Zâ…„B|µăďׇ.%r>‚—ÝśËŢ)ę‡ď ¬F4w}5†Y‡ňbcËúöOďíŮĺ|ś&ż]ţ"_Q6f! ÷Ü"gÓţÁµŐł’űܸJâc—ŇD˝8Ú“ÖčŰi§\U+|›hjm$Ţ„#(EöŢC8ÄŐvćńŹF1I{.ë5)ďaSrźd—Ľ#ô“29Pé7K„*¨±ÇVäđ8ßy’ŐkÓř!Ó†>A°¬…µtmöy†–(aîŻö(_:Ó˙3¤ĐfčMš4$O |MP{‡i O3ťj˘ 7ćUŢ–ĘL˙A ¤ţĚ•J:uZYëaź÷ H‹ T2ÁlKתŠK&Ń~Ł…ź[çťÖ‹— Ĺ˝NČâ1ŠšŔľń—bc4Á…]˛gĆĺ «ţŞwy€RÖÍP›ę×L5ˇĆÍZ.tŰü‚_\ď˙Ü s©Txm^,˙5çć‡ÜěP=’PęŢă(’ghůľ_˵vyYŻĘE ?(·Ů°Ëďë)^ćrĽ”ČX_^Žq¬‚Sňüâ>&V5„ L^çŻtďĘe"eřŽL~ŕéŃ>¶Yü9jG“µ,F0†@š á=T4mx@„ž© 0¸Ńű$lĽözGćĄył©6ë+aČ+rô~&ô€ô\ !±l»ëZ”vÄu+ś‰ů¬#Đ3ô:ĄĐ_A¨ń0ţvo\‚>mĄoa7~'úQ ĽßŇ—Ćľćě“ôSżěMW<Ĺ Ń>XôlxŘîcý°•~!L˝Ţk9| ÄoţÝ٨c7čŻŘ‚öÄ<4:ÎpC7fzťfĚ9|ö…Üąńë")˘«Ł¸ îżĹřĺÚŐęClG`źÍ@˙ÄŢ'Ď ŠęĎ^ßC#ů÷Ü .{qV &ĚęąŃĎ—}Î&zřë›tD”*ŃG_ŻíĽH4ßČ<Ć ęAŔS/‡N6ä]˘|(§fCäńłŢŞ7 Ń8ľŕŢôďR”2YeW®łlĚ??Vś0NPe†?s®ľ$ŽT#‹ŽĘçt .Ăßäň~_Ňjx\ŠńŽH‹–xúěŞßňq±Xز{ĺ‚r™.(âtŔaŐćëĂĺ«ď/,ëüäTÝ<ýĽÓĎě^—?éŇ3’XXůíSw¦»<ţ嬞Ďü˝߼őH3 –ż “=iT'1„0d–(sĽÚFW:ĚBy˝řˇ7e¶ŮŔCožľó˝CÚš§tžŰ(‡ ©¨53°ˇ^:(8‘:ݬ;çV­˘€Wş9Űx짲nnör‡ˇńäéć,ăďmD'ŘMýjËťRŻ;fj‹JŐÖ*NŔ@ËČ{GÓIÚ´â :őĹ?Úx[7Â/Tv ­Gç%7„Y‚këČźŇڎMmq|Ü–_ňcST´¨•&łĺuµ´¶[V€ĹĽĆéý•Ůľń}“iŹoľćÓPçň—ˇ'ŽitÁąřţćÁĽ°ÇN=¬ł}ŹÄĎî'˛8=ř…9?UĐycç×ĎŞ« <­Ťă¸lrŲ‰j~Hş_Č5`#Âxi騅lM›G¶%®±ôtňĽĚwXDGSx/ä}M¬Á&‚>ÄB)·ĆbX¸Ű…žŞß퇹ŁŐKž˘.ąDPöR’4k˘:ĸfÔŽŻ®â¸âR˙™öŰxŤl¸v–Ý>z#U¦Ť8 żîöĆóŞQ5Ęľ'˛Ć«D’&–!.Ôö+T˘˘<Ä…ZÝüAáűЧeÍ%FmČ×Ň2˝č>@*ńí"Űęymz +:›;1DRá7ĺD5VşĎ5ĐL†PN^lűh¶®3÷Kl©SrěV‹Ú×÷™¨4ŁDżŽIűj}Şłŕjz:¶˛##űĂýęđ)6ż™]řźCZSÜ'mŠłeZ7Á¸Tú÷ ÇśŢ#§˙s÷ËĐŚö›ăćź…¸aíŤä!bXa5Aô‹E3Ą€ý­ßí˙PŤ”Đyâý„ʵ°Ş9)0‘‚žµúěCNÄf‚k:ä"!ß.?‰Ď‡ĘÉ“ &'ż™ö´7Ô3ęŢâă“$N%y,§:^řĚKŐèVłß8…°aË«–băľ@6(Žsäx\‚âőŰyH)–÷u&Örő )Ęo&2OZîĘô­ü_‚˝ŢO»änĽčłî‡ľÉ’†Ľ ëÇdá<đ!ȸň܉p8“B˘ŮEéŞ#92’‡¨Č$LŠ[›¦l_qŚŤĚż™7RĄLŰĆÉcĺđ‹0€jČ=b/Ŕ$Ż€BŔ6(?ŚHž(Ŕ_š8'ă\Üü$ĘO…;' ĄSîĂ °=çżkQívŘ"b».GB㤼Ýé'Ř i'=‘1VŇ·tË€ ö~*/ĹpŇ‚¦¶¦Ňťć4sŮi5ú9úĢŽ?#ÔZ"đľŰłÄü€# ´&ąţ2<´5¨ŽżC#ő=ie»ż);#ŕÖ$ÚJ0g•?Đž)˙,†ů)Ć5°h-čČŚJŁ?j;K-Ř÷řU¶ÄcŮkťĹUl“ĐK1T ‘t·¦*d®SťĘ˛ĚćA¬..—lɸŃč\ľp;ŹHŘSÉlb(”…fmé«'ě"3“HavÇXł}†˙îŐ¨6ť0fe,[¶®Ę)»:¤˙Ž«)FAűýĆ2jQ‘—X÷QLřDGţSRÔ¨Yľ>¬NüŮPő–­fLKÜěŘÔĄd‚Yţ}4µÝęvˇ¨‚ôe¤őöôV …v4†î©»Lˇ•MšŹ |;”˙§‹âwhëăÜ««ëe'ßµĽŚ*0SťŕŞ_˝ĘΔî ŘŚí%lĚG2О ćžţPŹ1eßw čŐ˛ úĂĺ1W˘wÔŃŁgq.pšXv?Ç0y–2Ĺő'ᣵĺ *Ń)Çç»Ňh–f<™ň™f߯2řŮX @Ŕ9µęĚÓ±‚fK"CşŇ¸ €Ťo٤”Éy~§†ó 0Ž‘ô@4U2Ŕ¤¸Ç¶`ä&!Ťńą&')")e)–SŤ‘)KŽ?câjQŮ3ĺ®r”ŽNéq¸1ńť×ťŤĐ:YűŮůëYEÁ¸a«î˛ý©Ł•ď˙¤”żťEŽ•´ĺTZd\!iź2P€jIżĄ,PÖŁ!°ÚWńdő[0µřďČw/JNhę°-«ÜŐ•˛»kÄĂF<ÇďXŠB>±ţ·˝ĺąű]‡s„ďř2[„z¶C•™µ[¦e*>h‹¤:żÚĽ9tĺĂőÂqcí1ąé3@3U i/ÄA+eÍ4Ž‘˛PŰH–Ł[XbTđ·íąmŰNîłlí%Í—öý˙Ă4"€X`Rv˙KH¨mkZ€I†_Ë6Ô$&ř%tř˝f»»¸¶Şxc'Ý&»•ÂvŘ=÷r+reŰť}€12˛Ó¦ŹT¦Š>č7ĺuĄJ§=­P((č%=é !ßHŤÜQ€ż;{wď˝Űm­kµ­ö¶™R§­­mŢfŐÚI—40 ©«‚e$Ař(Í B‚@Ą"Źň@Â(ż*’Śđ[˙[8#6¶Hś%cGÓ`ÄSQ«c*MK”[c:ö-¸>§ßą Ę©śS&+bxýURĚË´9´bĂŻCľSpé,f%Ěăj’†&U76ŚcűLd‡!›ć4PçČÄvQ1Jň·lJ_/§­ńŃ ňŽR”¶ZćyqŹĺU#;ÁjĂ9;+Ż7¦µÝ!¬ZA^ŚĂÎŐ‹cµ#Üdeísń"­ÎĹbł(FZeP!ĚhŐŮÇŐË´0‡3ҡť,>—.nWc×[qUd`ô=çŮĚŤFŇh-ç 1°Çë(×)JĘĄ¨FJ^ ٵ4(‡‹j ĺ>Îp3®)xŽLŔşqľ='-eŔ0J›V )ąAĘÖ¸˝ÉâŞvoóí‡˙׊"ąkڎq7*6kŔ\”âŢ['˛}QŐ´¦šK̢ĚäOćŁ,”ąnŰKÚťđʧ[HćÁv2Ö\;Uh‘ťÉšíý٧xŇç°#şaŞ>©M=f+·=ýcżÎ©ńj3ă·µNĹďĐš¶ŞŁę5ăŞU+Ăą´ö_R…ş*=úC ZËč‰eݤ”ŕ×nË— Ěô6 ßmĹlčŤa<ĘVÜ XÎ]UzS÷˝ve3lką«éL<˛§‡3K¦·;kŹűí§®¸n˝Mýr.ŔJľ8íÉŰ3 ; ¶Ö‹@4evNŮű¶+Űş˛‡aŤáÓ˛gnś6ćşŐîŤ|u6ÍšĽmłĹ潓UÉé@IZd#ß?h@VRye»¸%‡]ś™–QNĘö?^ĐO§ć}2ôś‰ŞEYjLŐ딾aX,Fgś˛i|űZ2ÎËĹ–Ă›UŚĄ7É&×Z¸,.ç©hv-ńäđvů9Çdg¨ Ł0ľ&Ž•RxoiżÝf`Ó÷'š‹WŞ5, dđöĐúĽµtńöőG—’Ó)›)y„“zšĚXîôÖíś“0÷µµÖ¨Ť%C8Ą’¸Ęĺ»Íď;–Ev[ąy˘¬°ş({N•7w†E6üO 4‘ĺ\Ëľ‡ —©S®<(ť ±}m§›,’¶ŕŕÜ„aGžűâćΞ&aA7<ŞQâĐL\ëˇ+– úĘŁ„.wî5ýÇL1ľŹf=Ń3j&…›Ý@”ăÍPŚPgé ®_!IžXN’Ř:ó̧úĘ˝ęá »\<łZ6DI‡eňdŞĹľBz†˛˝Cß?ćf{¬?§ýÄ)«˝ˇŃľ\4ŮŻRď÷EG…pđőRÎ9Bî\,·‹îzŠ<(ßăm#Őˇ‰B7s®?ŻXşóařXŚeő{Ư̋Ĩ!’Ź9Äźr6fŹmSÝf&ݵĄŚë ÷Stľš.›}Ž7Pö`řmfăgëSaY…|/äSë45‚B–VdRgCčé;ś­…a_6ŘF`|v‡ŞČkx¬UÜŁĎóŕöW_v•#Ę˙î»×ĚÔĺK;fłiEIÍvK>]c×C>c}νŇkËph ł@ 5YI˛¤Mšý,i& ČE(¤v—ű¸”tÔ¶“”\eDŢ·ÜÁÄGW•ĽŕfťüËާ±˛¸ánŰ:JŽ*G×·kä…żěĽLÖŔ&AÁ5&Ţ ł-Nžqâ˝ížţÖ˛N-‚ąůÓ™öhŰo®O+Ł´]˛‡ŻÂ ßGScăUNśn ŁÎýŘý[!u¶­dśXżäćÇN!j[ćU™˘<źVíDťŢ¬R‘ő`8_FfCUąDç¤÷!Ú`{m˘Í߆]©đxQĘݧ|^(ÚëS‘ó÷ĆývŢF6Ż)Ďî>Ŕžej.­™ŞŃżÁáđľl÷·D>˛śîH4˘Ű*A'^š E#ęz„ú‹¬RDĽ–}’äl,KŽ«ŚlmŇ)Z~Ö4”‚÷ň@ío/ţZ<5{éŠĚŘxšĹÎ0Gw[#ńĆÉŐ§ćż'âvr!ĆPDâФ6îčß khí‘™úĚ˙?säűn›>ŻťO´ŻNČ$MŰu4ÜăVűIÖź9OÁ56¨|S\˙Ł:wó>Ȱ?SŐ"`…Ż"úŮ,C&Ű –áé‡O㆕Ç ±6댟Wś§šÍČ!Ş!Źć×µ•¤6e^‰°#ľDuÁ''ŞO#Ŕ/.Ó”‰w řŕźµMĄhHî:%ËV«‡$ĚiŻ’Ć@w­<źžĂT©OĽŤÉ×dŔ.9÷ŐNĺ„"DËÄß© ŚÇ'óÎíŐ„¨ű•¶Ř`‡Z“V·týÔ[ăŽÝÎ#âĺ„ W7x>»ŇľŮĆŇÇĘĂŘfÁŽf_™ą6¦F~M®{¶Âĺ) c®ôzO˘CÍ…A-˛©“.‰m\ř[F1]Ř[ąŞĚ Ż=ďBf/bř7QđŻłČ6“B+<ó"S=Đ?|vŃ»HćąŔŹńŮ6M°IAŁfďrxůÚňýŤ‡:Ł2_ěb¦‹q>Ĺčö,ň"Íąę—ÚĆěpuŠoŚ•Ň[ę¶ůá»ßG‹Łěö°=É‘°ŃŚSŃËĆĘ•|Çź’CB„ŽŢ]u:±m• śťsŮpTüű‹Ś€ł*YĐćLf ZĽjpęŹŮ!mËT› ¸ĄDË1GëHBSŠ–±ţFćHĆxÍ… ©ľ}¨l3ü— ›®M;÷pOh±‹€gCąŰô ÷JE4i…ÆɻwáF{ŮhĄl8ÁĎě‡Đ¦™&Üňkd (ÉŹżçŠÉů‡‰¬|‰â1‡©ŤZę„n©Y%Ő®#”ä© ńĐĎ)5·ÂÖ3âďđžO‡ď şŚÄî÷ănęŃéyÎ+äţy0.¸!4%ĆĽ‹&Ü"T6sĆŁŹ 5ÄDćˇ>gŚ=ú.q6‹`5CŔĹ­!fáiÄ·n_Žďí{`ü ”±Fśyä‡đ43^ĄA?†|ѸQ‚ ŔŹĐŠ»˝:ËŚ-CĚc6)€€UO`>żŕč?@Ăđ=¨¨ý ­ňńŽ‚úBąęÓ´70śFŔK¸ź”E"¨z›[ľá Ŕř`Łřő ÉL˘c>anX4ah¬¨ĘŐÖx«oń™âÁ˙öŠž¬Č‹EÖěI-Ö`Ç­Ç˝ťäşöLx(ëJć{—îöHOóţăů˘MEDă„.{ׄÖÁ~[1EEź_ fŮĎŁSôHĺŢÁq’ţ¦.yi’>?źuM1ÖnÓG:eMhž‹¨ŠŹ(‰wÁńˇ«wýs®L®q˝6Ńý7Š®ä‡8ÇÎ!ýgś€X÷«Fwü]ÇWfÇgěó!gT9ř;‹Îęĺďë·ĂU‹đµâVŁŤę€ q!¸ ýNŻŤ€…¶ČŢ‚ś,‹sŚöźzťO_RE$ ¸Ďˇ›Ő›$wŢ6ÚŹ†+¤#ŚŇëwZÁěź“zę̬řĘ ˘Äz¶Ć~,C|±ťňă´5ŻőH"čč·ř‰xá&–Ie Š<ʧG7îýVJ }(¸Ź›5Şuâ<'Sâó™.k7—#á=şN7|Ť ‡±f„ł ·j¸GYâ<2ÂÖ@‡4fÍźňŃô੥D5ŠŁI+Ň~“–Ď$ˇxęç/đźwô§¨N”^SŹČľ“-dď쌿â‘ńw6•*i‡ŹŠ 9•OEOA1lI¨ĺ8đvş°.÷5©ďg)ň^ó¤ŕęmŚwN7ôł ŤzŚ×ó‹wŃ.ÖË©€;Ô*!;Çcß9:8Â×f]š÷9ô/<‡Óř;V2Î’éBŻŚX'I0űż–¨j?g2`®oăo[ß›ő_bT"{_ˇş5ŘnĺŐ#Ďîţ¸`8ÚY­Úq ˝Úč‘~«”«ů/v8Xn5Jy¤úęŠůE¶‘Ř ĘźÍçĽĂHíz¦ŮÜ‘‹ţ÷ć&ą# µč»4ÂHź[÷0S ťoŰłŐfŢŕÄ™ŠĚŁ^•¨´oĆQxS•?¬ŐĐLFĐN"#—"Ľę Ěqáy+ÉŘč´^ą›˛ÁŻEż5RÓ=Ť‡m«Ô¤ďśöşŽŔNڤGŇîɸ_‡8‚U5#Mp—^xgs™‚MSdj=i8,ůÜîeĹ'ŁGľ5Ą^ˇşźą÷ú #gt1ë~ŃB‰M{3J>Ď–D úH×Aš†•Ą¦‰z%Ĺ•@‰G»‡ ä˙îóňšýĄ_ND.`Ç{޵ů˙/rČĐ'î3ě»Z&ą÷˘ć ‰@)ô €čü‘A†žm˛~`{<ŮeĎ9í‡ÜpŁgćK˝dŤĐZ"TůMźr§o ‚† ´ë°ŠČŢř5_el™*GQő‡¤eŹúö őroĽÝ/Äiś,ää°mŘ…ŇHí™wL…ąY‹żxkę ů˙*7¸2Ç8’é5ŽÎ@Â|@cX†U€kC#MzţÇň] =őĽcjžD$ÖĎvBL±Š¨Ęű"©-Şiއ™~Pś¨Ď%PtFb.ŁŤá»ć{4”¶Ś<)Ëi==”ĬR‹ĹĐH@”I9ňRć5ŤßÎdłÉŤ:WĂ›ä÷ň*í˝Şĺ äÉĚfĎ)ÁsČ&ÁR^S1d}ßĘš”j)uÄĺOßje‘L_ÄŔéĐLăů´`M>’bˇ;TŻĹëŽY23Áň=RYžY­äÂŚŐ%I±ś­>[1W¬P$z»µK¦b‰±˛‡Şw%c'ź,”-Ę—ŻM _­–ší±fńéńÓ.fÔŘɇɯ–âdŐ(ĘcüĂŚ$˛ŠRwĘE,©$®u´#ČhrËŢ"ń.ť ÜhČnëişUDˇwÂŚ‹x{ôš‹¶"9”ETőTN[KŐVÚa]{F\-Řb7™)ź\›Ĺ*¨=łě°=bľâDÖʶ«…D•QÖA˙Ű$MmlTĚ»efź«ŇtÎŤU%ôą «\3X……[éŹKdŤëŤÝ .mű©€)B˙ZbˇÖ ‰<¸[úím§fmNĘ?.R)Vî[ĆyŰ´GUťµ8f×5jšeÓÂÁšřéŰŇܬŘDh+;¸;C‹îť>_bhŕ¬K(‘_¬7*e{o1T? źN_~y;˘nTLř­­R]“ş´,+>ÚÚ˛ňä3ĄyaŐajżkÉ7•űŘŢSÎË·i'Ť»Ĺ[źpŹ3°oŻ€á;r›«HŘl±†ŘÇx…e÷št Ž Ň ść"¬Ŕ =¶l„˙-i´´•Ú >)PŐ°Ę+U5%g{| A0Ŕa¬žĄćďß‘¬{ÂJźšH8ˇ×U_¸KŃ]í§ö:˦–»©ÁŞěűČ‘Ŕý$Ďś™ý1őśę»úŞ&…ó*ÎŘ—ýÉŹeÉOW§RFášxc“á–áZ‡ť«†Ž$|čiéŐ)Qx±î7[kzáZďélÖö4†ąiń2­‚·®ą®×Ç⋾3ÎäŠýńéwDć  n9}}ĆŃץ­ ?}ĺ„ ™zGf®8Ô ”ěĎI…·ÚWů“Š ŠľXxŤSeÉnpŔŘVi»P'„×…Ľ2Íi"ăßZsÉ·—EĆÄ#Gzě 8E‰_»+®Ď}P/gĂĄ÷ ÉŁÎ1żvGţä+¶µŃ¶DőWüŞ˘­UĎ%Ô˶? »Ěp'WłTůśa¬ Ë•‰k°… VAÎWďşŢ.od.ą˝Ý›‘ßĢǍ»c2´{TYxüĂ‚ş×•fŐ§[8JĎö’‡h˝jíY–%÷v»‡tŽ̸^JľVüŮŞ8xu…ývâ xcőëŮ©ÂË+ĚĆbšń3(]3˘m¦E…3rPůĘ«9;Ű¦Š‹ ŹČŤ¦F"ÚŃÖĘc­¬hőĚ@ĹKŘa4ŠŐŁŘKSąˇR^:)˛´^łĄ Eł„qg€YĚgâň±‹ ěí`ý•Űlá=„ňݎ–{óěůÍ%Yר\˘SM¦iý°é˝#ŚRöo'g!-O–Ł@–6›¬ ůK–/`‘Lúarr’–ĹcčPuY¬Un‹Fn¦›ĽžÇŮk¨Ńń!\1ęuőĹ«ő§T…ÓŐ¶NŘ‹)çčÁŰÇ …HĹ çăüŘŹĽĆoďĚWžh…Ң›îa>op&µ›@÷ĆŞĽÍ)^”ă*'™"ş‡Đ%5“­â©›Ż}W ^n¡y¬r¤MyţŤ[N4ž—›m›Y*¸ÇŞ>ą=%Ě á?|ąÍvĹ‘;ąŠ°˘ň)ŽůPFvVü°$ąâ;zA°}źd¨u“kŚOZo"©»wÎCa tîšŔXhÚY,ZÚ< ÎđsIý8çőŰŠ@’źÓ/áPwÉyh1…+–¦áyńěn_Ém{ä3LŠdŃ‹5ß3XAĐÂçVH<ű ęn‚/%2öy>÷Xę]büe¸LŚ2ŠFŻŐ™2;Óďxš×_+źA(@?ô˛7BőŔZ)34‘H‹ę ô±™D? §ývî±m*ÔW˙ćź3V)gŃRę€{Ô}ę<ŕĄó Íăn^Ľônünžď 9˛ †"ë€ďç/|eVS˝¨î9S†â6ŰĹ †n-5©Í$#Ć+ć:rbÇ"¬›Ř$…˘qĎtđçęţ5NŁ€łś‚TďÝ…‡"g–TnFŻ˙fŘ—ŽR/{$×µ×_-O<6§€Ô˙xüCaóăaoás+ôsF—űëúŢĎQ_›$˛Ń…Ď’y·ZŃ5],‡éč"Řű}ŔHťČőŔ_=Ő˝I7 |ŰpÎĂžŰđ\+Ă^ń˘ +ÎŔżž5 ÉL’„ŹlôĺNę ó¶'÷%Ë='ďăÚËâ€C!‚Ô´p°ÜpÇ{Qzçu4]ěÎ^ ›we.äÍ9X€ĺÁ_Šg˛#mŘťŠşjÓžŢz`_|ÉeŰ˝ťuţF•¶fHMF‘‘o$.ý”kxÝÎň¦ń§-•Jb…ź«{5[ewř‘şXŠŽůŢrpń-M+6ü5lRףß7M!‡yě†óÔÂcč›Óľzĺ×BĚ0âň^¤–2‹T0í#Ů„n˛jVFŘí÷ĽGý€¤Ä~ĎO|Fá|ôhŐú’áŰY"U} Ő&P‰$Ĺ“˙ĎřűŐĂ‹‡Ľ@kEx›p·ěIGá@„2bdáõBÉ?űţ ť«€±8Č,ßµîĘŐ¦T;ČŞŐ0§nŹďމćű¸Ńľ¦ŮU}»\í®UŃ.ëh]ŞZbHĆćo8<Ż™+jŠĄŁ»QđzÍGëéŢăď~ż]Ë+˝N×ţâC­$}ď0×:rÔ‹;¶vf«×%E4±|1AŤ2€$ҧÔFŤŤ|űq©Ý4ťa_:Ҹ"?9¦_$LŽŚÁ˙jŘ! _W®3f+ÔLŚ·Ř×&63mÔ«—îË膗– Žp}Sűć×G1ÖšăÎŰű (ěńóĽm>@Ü2|»>ł´µÜ±ů×É«@4póú†óä~užëbˇV8ą?qy÷›9JMŻ+šÜ—…cʇ_JR¤y¤“ź>DB˛Ć|±R„ňąŚwţVŮM/ĄgćÚs׿‰/˘;µćÖô”őBŽ(•ÇŃ\ş^A?ž%d¨ŰŚ—I”Ńx>Td~­îĺj4Ą˙[8ŕ]Ň$–ŕ)P+{‚k]ŕB¤wg)‹¶gŘұaŃ$sçΧq jjŤŻĽĘ:ý‹NCÄ{Ú3 /ą—<Ňz°§,ćpËç™[•ÍB—±c{‡™]z~XĄí6)Ç~FÁ­=ŕ&ŚđrŃ6×!˛Ô•^%TĺYŞh´ăF&`[FéŢk$"¬1:˘a@ ˛ =ęôI—ÂĚăb_ôJ ŕLřîPQĎcČv`Ü9ť›”|m†^mä€ÍSŢ!J¬_4Ś;—KpŹ’1W%Méçe¸ ŘńEó#˝"a…~MĘĘS–»¸Řś‘”ÄPŞ´$Ü hŮ ú©ł>ÜpAŻ ź° Xt©–ZŠ/5/—h÷[ I€™€ ‡ë˝"á‰#‘˙2|žĆYÎF ^1 ZB%Xę"Ę:Üa•ÖäŤfÂ*ÓÇŕ‘$RŰ⦜’N:°E‡%żux¸…hÜö;ëPşIÄD,#g϶ŰË®źZ +ŢÍéĹHwpŇéŽ ˘ôč6éYý¤ČíměľŰ(s¸ę’‘ň‚$F@R 1LĄ'–ŔMŰ$pŠŘ ôŰ^DíŁ%ž©3/ËéäăŢŁR:ge¢ů5XĆCˇfĂčqĂ'óUa•Ę¡]% Žť+c¸1i+4Ô`>(DYÜ1ěĂ‚€Ę+…öşśťKŮ ˝·´žT8–ů!u·Î9»Ý(6˙ç˙IđŔ;ř\4çŞxńppźŐ …făs ż"=4ĽÔŻÂôUNŚBĎ_S@ŞÚ¬Őęçëńrěiťű¬×*€Âô,5aO'1 6ŠmÖŤM #G4ëŐˇá’4Ű)‰Ň.9N="&źŃ.ţv$oĆNŁÎ‰¨5ĽÔ­ŮŻE¦µ‘ţĺ7„3tŔ "y6<ůÄ#¦§%1ፖĚčŢ×Qě€Ëď&x«łepş,®|GčóŹ€8€@j‰b@÷OŠ?Ř'@5ÔÇýđP‡¸(6äž4g÷‰–Ô*ءÍđvĄÎוîg—/ROSj7ŹsŰĽWB®Á\,ŐO0Ëď–VşIKxý˛ ĽÜr×2j¤‡ÁÇB”tëżpŮš»–z¬ŰâÉ‘.ĐýîŁë^ qýß^Ťř€2@3Uq"í'Ş\:M]& m€•J-Ęş*F˘j˘¶-wëm3wÚ´vÇŃ«öţ˙ŔčŤČZü¶Ąlóé–”eüŤI`d’%–d‡PąÝk… Ŕröś;w·.lpî»ŻŻ˛ĘvGO˝$:r:Ó5µML_=¤C!ŃŠNč†e‘Izé@$ ”ßÍÜAż»ooîv·íŰ~˶”%F`Ý–l»-‹,۵’ćĘŚb˛I–ĎH @´B$Š ""Ў€gDńA€ C1Ď€€0é%ţ>6PUsÔo?®+Ä©}ŽŐ¨µ”ÎdÁ?jvY2 Z-ů+K:f­-â¤r5Ę—Ű n°łv:6…âeĎ(ŻEH:5¤hꪙăiĺ$ČnZėĘ&¤^Rc×0k%EŃęÉĎOFSmD¦ÍÂlO­Q^¦°V6źT!h‘HĘ‘JčŐHĘVŤëK Ď\qjUqňĺ)†ł`Ł=l˘ˇ©‰ě0RD*čÉĹá,Ţ*$|žşçÖi.ťđźęĄŽ™ ‡qt1%l-şś¸­,·Ô‹K’­4PŞeÓN“¤NňüͻѫČm•A5K¶9b™¸vŞĚ!+ś—ňű1VG·‡¨¨ŠąN¤p›i_DCвÚúŐ·Š:~mL5í˝¬rŘÄň˝Y˛/•˘yŇem0kíŠU+ ţjŃa«BVSş‚33TŁeÂPFC^Ľyj“(@N$ž e“lŐťş×í¤ď›]}•SŮĆń^Lu”Díßj†FuG}T´ë2űĄ¨.8.˝OýrËyq´G„ÍKkŇÝVţĺÄř”ŚqąĆ0#/˘™"]ODěŚŕ’Ę餍aťi¤V+Ú˝´<–€ž+šOĺně2XQšřčŽé zÜUiůŠ2gŕ÷¶L–w’A#"’í o&š2˛s—Ł/IĄ*]}gpheXH E6f­PĚÝv }{«$ńŁ˘sĚ“ŮŇóŢs|Ňô‰WM~4qVÉXŻpÝIl‡|—Ű»ýgJFny7%Ć~–Ä·pFŁ’];%[wřů§b;›Á`ЉÜ5Ś2´ovňµĂ¨BŤŮѱ5KnŔŹu6sš”†ŘĚw«Ašü™ůŞtÓ\Ż}ظądAUuŠč lOßĹżQlA5äĘLaąůyxęÂŔÚ ˙Őźa{TUÜ·Tv܉MúÂuA­WßtuUě?zňň.TÍýě]+™ĹJŘh og#ögIŇnYő¸DŇ ±P5…iép„Ą Źq. y îhë&˘sĎ _ą:”Ńv-Ţ(ÎtľčżíSR¸eT§żNĂ2Sţ´Ý* °Ŕ –t~ äs*:%ÇŹ+~¤[•ŐB!±]Ĺ$śš“0ұŘ2¶r~fĚ ´ÄÝ>#Úř°FŁáéÚŠé‰{Đ€‡PNő˛Ďvó:d778|™ö¨l“ŠÁq(î;iĚśźňܨÇ6áiiŔ\ąÔ»}U®0OŮ4:ÉR!ölÉ|yn=ě0é´ëUŐ`»ő®ËĘ 5U!kÖVřQREYU1* o@PýYYSĂp” ů‘eÖş8DŚÓ‰z'—´ó ďÔÍĚłUĺyh¦ÇxR–Áš KŮîögÇá¦/Ńߪ R‡ÝĂđC•Ĺ'"+ÝëpŁ„s˘TÝJĘÖ ů‡ő4wC˘¨Aä©ÔSatŔ+Ŕ0LÔ€ř¦ű)˘Qżű˙źwžĘO09ŻíŕÇě†~34µzž>‚5ďźí‚df »Śä‚çAM6şÁäŮG§€­Űż@_śhKďÂöąř&ŞŰ|”{Ć6z•15JĹB(€7(>ł˝ÓĐw˛ţĚpłý||/8@CWŹđłĽ“F(v Ęč+UŞâ±¬Önň´j4Ä=b¸)ŃkĚ{B7aĐ­ ăěŻ27ôýźřśćöÍD2c÷=F»`ög‰śRđfkŹy©;a‰ľĘ5ݧÓ@g) µăék’4¸µ弝¦ě@˙ ť=…µnb đr–ôęđkܢ…˝Ł©~ygři‘xÜHTˇy‹•,+Âtwȉ8ŇÖß1_/ÔĹ_ÉR…TiYh©µV­^'ř"›—bÚÂO‡ÍKk®^;Ţa›k˙ťă‹‡źn®Ń._#¸˛đ™żýYJÂő•ČJ‡®ç¬“yé¸Éî˝Ó\µ3—ňż€ŁŰÉ(ńéëonŇ÷č ú÷ĂsŔůćp“píIŻÎŠfî•Ѥ.ý'Ť\s‡#/Ü& /ĎĘË6•ď©ßÜÂ3<ŕĹcŐ¬:„˝Hěčj€dŮ Ľ# ­<ŰĽŢBRB3g¨çűĽ<Ű|¨•Ď şřQ7ŘÍMMËKĚbJţú ĂÔö伦Ä3ś–”KĆbKr1RóĚřgŰ?ô‰Ř5ęÂíÇíąqa_ŇWş¤fÂ@3ZMďÉűfĚr€ôLëF^‹…nýeô3žUŮ´›&ń˛ç–ĂliCáá/Ýh[±Xň?çhŃđÎEĐś:D—Ńú͟ȼ%†ś››"Ó¬C°$vÉAämxQŁťţ´koł$śűĎkRb‡řÄźXůé^k—‡ˇtwlϸ•OÉV7ţHÂ_"¦hÓoŰŃFó—p$-Ôi˝öÉ› ­Íx¦×Žc—ă%QŞŻăŇŐjM&-µ;gŤřŘÝüá5應Ňq"G4·Ť…g1 ô8ßtĚ "ΗÄS1¬+qć®=ęC»ŹßąM™µZxz’„54‘ýiRţóCAŹ9Rmąą—|Ő7\”őz K„ŘĎqFۦéŻöhsäŤ÷ęîúN&.ó€EŇŢ„óź]ÔíF­<Ţ1ž[›Ťí©¨Ź@tĆ ůź0zŔ őBÁ/„¸‹^s?Ö/׬ŽeŔghŕśÜř˛%Q­pĐunŇBN/Wϡ"Ë+yËÓbź÷'"ś´KŹ€»…ůŁ& FŇ€Î(Áż…éPz¨ZziňGŇ@yM€ż|27Ą)BÄ\Î\<˛ĚôČöÝśŕÇv2¦^đ†Uýť·@ĚÁd<ąjňc8L!Ë82Ĺ%v3řZ[˛`‹¦elíţ ŕ&Gě[`»ŕÚplr¸U¶a˘ľxĂś¶ö°Q˝ć–Ň·=é S;[őážAĘűĺü¤ëě¦ÔoŘ&Ws?¨ö×ôPšŐuÄx ŕÉd`M¤YtĆK0)Zwě}P•?8şú:ŕµ1ËŢ_Ě‚ČüÔ¬ť¸QŹłgăÔ›MíŞÍŹVR{Š$ĺ3?”,Ң:˛!4* Ń^ľÍCŃĆBŽ"N6đm:łíÉ2ńČĘKd`H¶ő[ŇÂŃ'a˝%%džĽ8˝Ýů^îéřóĘĹĎöYO‰Ć'$×Ţ&_Lź1ś–wI›@ż†V(üŔ|ĚÎ ݦ¦ďóG`†Ą«-4ťZó:Xyřáe” JőY§­#ŠŢŹ©8y•óB=x;ŰýX˙ ·µI´•Xé­‡k,¨ä󎶻pi˙y;˘Ĺź$źQ ęÉűm'Ź‚[4"Óx¦!&Řü1M¶sőD[4őA* ľĐ¨>#Iň"­I¸řZÓ¸Mu‘ßČştuŠí? ¨!íÓÄwsĽ{ż›ĄŚ÷ýŢpˇÄŤÜ ą8„*Ź71°ćaHcDž˝ö6?np+:=󚣼tj8;Ć!‚˘Nąîž*Ăó:r×čĐtvę;Áć’kbiaoą€.n˝ŠŇ” ,ŐîgNŕb)WěIß}7ą&Ľ†3`áŔ®cł‰™Ş¬ś\jěŕ…Ú2 !K!żQ–Ňô%˝ÔU0ecůç¬e-mů ű¤˘\+7W`î-x¬ńó6HwÜĎ#”>iŽůžć”#ş@S`9;ă:˛HýCLűµŘCžďČÝşôŮd_µ¦˝˘p_,×LD·ˇ­'î硓m{šŮöěČ{IĆ5ý”Ež\N×i•ŠűrVcÓ‡kuŢśż [Nů‹D·GíżXQř[uĎöîp]PéŢö÷íŚď“ęd S#Pť­ŔPm©uÔˇŐ¨ßÚ^u3¨Ł4[˙Ă”iQ[€yeWźŢ®{Î)Ňľ¬Be`PěňJ •»ąĹőrŮĐv•ěsÎ×üKĘö×ú¶6¸ Ľ1Ťŕ€Ă¬ëß*y’l«|ĺߨ%.Ü€6-Ř<şň¨z|&Űlѧg­2î†Mžl9d‹Ěúcă čŔb1toýGĽ°ůEkňn7Úaítý>.ţ}sžˇ·˛\v +ç|0‡˝É‹Ú*O™őö,XŻ·5ŤA8Ô´-Ăă6ÓuäłÔÇ?˛†Ľě‹k’Fë˙—ľ& «J¨ âĽ0X©ű@ŮÉâ:đć«Ă± Ď‘f$Ě_Š?UhĘ8Yçm“9¦­bh9J¬ ×vŻńe†PôkčŕW•Ęk–đ.Řů€óy `¬¸Jߊ+ `ŘgŠ/ŰDAžČę´Sç­ă«ŤA€+ ꉜD ……č&Á‰t,U±n8G8L7ůp`‡&˛Ă‹kóM!4»\•hîiźP^őÇĺÄ#"_Ń"ł‚ˇC‡Dű‘# €¦Tr‘a0fä-E(ˇ8'#Ç}K‹š»'\óÓyŤm’ro(9Ýž5„Ą‘ S«ÖB#cĐŠ=Hků qř÷“Ł2ęŐ÷ü:ě5 FkÉ BtműáuŮ/‚?Nܤę%ŠżŰ—?ËyGŮ“Üv¸őâĹmĽ„b<âŔ9ő˙ęÝPL‹F@ łÖŰN®63âďÇKĘÔâ8ť~î.ĺşÄÎő3\ÂĚ8ËŰ\0L˝…ť9 Çń€őH!Ź{ús3Q’şĹ'˛4>&äçç,ŹžüÝ•Ł§›˘×Ž>ćąrëŻn~2$ äŽNA?Ő8¶§Ů+Řrě§±-Vß–ÉC8bŔ7#P—ubóË/˝;ür“'=ëukźß©CÍ–5¸±ĚLFś. 4ń®ď9ŕč.ćäŽahíVĚzw—ôě.ć¬ÎCÜ<ŹŮHUÁΊkĆ)ż‡ Pţ¸­P8=ĹŁĹÎEĺîˇÎź¤Ď' 0|p Čž[a:8ě3wÚ« ä Źn‡´Ľŕ č\Öp({ĘB“äčÎĐ9‘ćŻÎ@0`H®´–(`r–).ÓeöfdWąH_ôw\ž˛Ž(ŔණX¬VÁ»m{śĂoŁcü»Ŕb=Gc=çŚMil1&‹ř.ÎůŃĽäTČ­AI‡vń˙,ý[†©ęU¨µŽ'HcĐľő‚Ó‚F}ŻDOЍAź“E:(ŁO7µ5+CÇc-XýuvŢ ˙Fš0HćŤjT$|ďOB—DGĂČ%yEř3/}‚⎻'Ąţżé7żV§ EĘ"KËů " ‘Ü]Ťî\->u­Ą ÂMuĺ.{¨źřëľÍ}śov7=*aú¸\{»0 Ä˙°-Ě÷ź©`†%…účHղεýGRe <‘±c|ňÂ_UŘŕ Ŕ)€*€2™o!ŚP–Ś˝zyźŁNśż=ٵ±‘Ç•/”•rÔNŻ?*Ń%_c$˘P·¬‘‡fŇ Ú’]wdÎMZP$I;ˇlh#ĄĘ9Ąsp­©Xĺ<äa25‘ü?xQęl ÇşÓĚ~‘"ŰŮ)‚9Ŕ"?·4bměŹüüť#7Ą‡:e“P—ZćęŃÔĽöí—“Ű,>á)`—~Ę 4ęaâßzt˙ťü:>ZmŽ ö„4ęfQâVŁľűN$ĹA #śŃżŃÁŔ’ëVć/ă˙ë™c33@#U‘"í'†\€›1ť’m•4 ¶…L”ڶµĂ?Ť‹7¸¶;;í»7ŇŁöý˙Ń™0(0’~Éa$u Ą@‰źP`J4i:I;ł&kě®Űµ­Ők_»™l¶¶{wW[eŮÝ»WdkeăŻ/[–;ľř*nuµđ6ĽÚ˛2Űâŕc—¶¶đű‚!N–¤FÄď÷îďĽ9w·µn–s9Ű$ť¦’ŰšŰuů~+kfd˛*Ą„”ńB Ę€áSD^T1ďŹđ|„řbĆńAÄźůű]…ŠŠ]Q‚¤ó’”ť®„„~Ub*&‘(‡ÄĽ1Łú•x>ž•®’Đc9!†jg2=‘"K ›ţN˛śFcbv ăŔj¦$Tř” Qc 2„‡7ăY~DYi@ĹÍöÔÉ”h5bűÄ›ĺÝA<Ś)áR T7­~© eR)¤pzާj¸Č—@…©kŻ%|Ds`.ŤěV" H˘®L'ODő“ĚälaâŻ3÷+iWĎNTve¬Őý:©ůz÷RLĂűŇÜwĄ‘f·jÂsvkk3,:čsüáĄ7«t-ĎšŹrv6ßÚď'ĹÁ:ŇpŠÓ]˘ĺärŤ˛ěIˇj( MJ·˘HO*•)ňě˛VÔZTiňBŹmWMÉ@1§X†B+ĄŤŇ2…’$eR¨‡$§ŢEß‹f%x¤rd癦}ěĆÚËl·`Ą].ĆÜTĄˇç 8?Wëęú^‚7Ę÷y˙ÚJD«„!ş­ŔŔą)ˇ¦K«ë¸ŠuŠ‚ôs ĺ©Éó‚żŢ”ąęáŹ=·â7^Z^fBg1ţĺĎŐ hr8đĽV«Nđ«Ůjë.5ĺs?ł¸›ÔWç2Kv¶ďÍŢÁŰŞu=ůk}›đ*ýSX!¦Š„ʤݰ—>HŢ–xrŁ´ĽČÜŽ“ŤŔfy"Ő‰I\ýô-ßL^0ŠJE¬ÖÓÍ˝veçť-ç2©+ ^ ·Ę#”z{˛Şú¸˝ĆŢ;uÂwŰq©—«pq(Ý€ÓzĂÁ?F!1Ŕ:4ţŇ‹YFęl oLͳƜĄJe¤ÂjÍž»ÔyłéÓ˛ą«`iŃI4ţĺ˝6QQRęBáÚĘK’O™¬ěôW- Y‹‡ľáHgl\śoöĆ?űh|hâóÍ×:Ń6g6ą?˛uVăS6ĚV*S f˛äşűş‡› ŘuŹŇ-PĄOP{î Ö»\Ȣ+k _ĐvDŰ÷A¤uúĄ+<ň>Ă€–>­¸Ž‹:Ť/AëI| ŔäÄRG€čg9ÂăĘ«ÂÓşlÖbrÍ>DQäޱń{‡âa8ô?‚řńT˝sbôn˙śK¤éx߲‹09żŤbł*»Č}Í6Á§ÍŘÖ«‹1qúá=Ó5d.— ďđ6 |RN=Ç;™T׊–‚c ůĆ6;_féřR‘Ďy¶˝ä…,2›& ?t"Ţ~,}Ež,é‡ ńjţ–$CC!s nOHä;×é´j«ďlłŇ‡5}ÖýçétęŠjňrľG›şŮ5şŻm^żábvômx·•Wđ˛ŢŻ2«Úµ]MO’W «g6zu„™?Ë;‹´§Ýt‘»]­'…8Bí´q¬)0źĹ¶ů Ż•Í>ÍĘ!îŞ/˛ö 7§˘MĂ   Ą«â2™l”Śé(y˘ו’~ʬ$t–\˝†AFËŔ´c\˛pLʸ#m–ü†m˛,´đö‚ UĘ_˘f ( śz^›ËIÚś Ús¨ö—}v@€”=ŞéŰ ż–Öę!O­Śąˇ´7Ëâ^lUB6ă^¤±S•Jäj-·ÖőC>;†Š84q€ŢĎq€€üQż„zŢăH&Ĺ@Ţ·&Étmo$oNk“¸QK‰Ą­Čćt(E©‚uďÚ)xŚÎBQ ĐcşP›>»†®Y‡…ú%a«?Âuú$ w—·g%»¤ë"«ŘD—ńü5ڧ­čżá†9şaˇ|/ ďFtŠzĚíŤxéîţ1Ťcyj×P·{éösĽÚ·ÔݤĂZ…Ęxíăó:1áCE«ÉąbĚéŽŢŔĂŘÎ;]Ôýľ©c7É_ŢżKŢ|(řdHÝ,z‡Üĺ˙üü·Ç\…o’FżťŰ’Ź]gÝţ//‚ČŻ’7ÄxI·`ź¤Őˇą¦G«đM ľ¸ůł%Á«mU¸ßhĹÚT Q04óȨ9Őxdˇ}±1)Bş,2ťái©Ć#}ě+ü„Żńl¨ĽĚ 1eţž\GĆuwsćť<×ďO”„pxIr?ĄÔđ5ŕjĘ9YE٦9±“ď á0ßÓomq°˝–:oźĄ_ö.kíę\é~ď?A ,Ľp€Đ( óαlĎěSâŢ‚§ł”IÎťµ€ŁV(ŤŕŇP¸Őý@©áQ'8Ź­ÚR6av ÔÝ1f˘w~§{ÚĆ–ś°O<Ů€o3ĚĆ?dzy|WŠT]x €Ě¸Â ,cž' ĺ÷Sľ^cÓŰ>sâĽŢ©×ő(O^\‡˝‘ɦó˘­Dký.śőĽ•) ÷É8˘"˘ĐtJń†żÓbšT+Y”G¸3›˙iźřZçŹÂ|S÷ůsĂ•Ĺçřm"H7<?GÉĹŚWőĹué~”7[u’tÁŢG´ÝŞ¬Ž˝aˇËŰt¨uÂ5ŁćyÉąO4’mČ/>âk¬ŕ,\– l_ çş3ŘŔ ŕ ţÇ&ŢxŚ5îő@w Š˙a&ĐXÜ(âŔs€Ńxh'‘Ľ#—°®“)Řabĺď­7oŰH8˝>ú ć_îî9tĽ_Z8˙CoĎůθđ…9ÁG;Đg)á^‰ď8ś Řgzăzh‡ăn3GťńEôŐ˘cŁŐqAď5@úeővĘť9@­‘łbYä'ä–Ň“ßč!Éđč´PS~:ÜÔ’ŠČfCŕÔ´r‚ŃĎŕă,ťţÓş%†Ťu!´Ëc˝;dÂÇČt<w~Ę ÍSń {óĐ2ÎúÁx)¸‹bno˛îŽT3/t…śŁČoúżKÔsÚ$Ýů$á^W§Q?™ŹČôn:úX§ ýp©ü[ä$J»ÇŰ÷$˙:#’@„\”HAçs@*¶ęćgĆ_1>ăŮĹZŕFŽłĘáa'śŕns”EZiűQ’↭O#"ÂQuaJU'f/”ß^m5Ĺ Ă×ýůiřŠ{t JŠĄ)šx’¸­ç4Ë⎌Äb¨(4±TľnřĹç!ˇ:x°Ć%A)â#¦Ëč+KXpWž?ĺ{˛1ší¸˝InÍL©ŹĹZŤ"V&m0q(¦lʼnZľY_ “†ľlmŇŠS€ě­˛J$*†i’†“fťgW`¬nâ˙”ib.ŽőWFÚRń›Şá¨ ¤%úş%@zˇłd8.¸hI’ŕĚG¦hüú„=Ă|ĎGhÄÚLZŠŇěĎ«ô•Ą)Ź1-Ă?Ŕ( #MPŰűÎ0řń?LűZ1ĺTă#a×-a“âEĄűG™á˘*Gő ]XŐw<G܆Éaţ}CŰ.á=&° -ŚăVÜ<Óä^,Ȇwc*@öµxî‡SˇťX­‹ĐG$€ČXU‰Ą·űďQតjŻJ}÷̇­˝€vKőŃęZńú8ő~3ý=ť{0¬yo×ÄäFăť»¶nDřţ:€‘&” Š&&=ţL4¦9˘+ĆŐ^Ha¨řp™˙I$âVśŹ$jhĄÓ\xgŠßŁ4«ú‡#ŕ_r‘˝EĆC!CísDC|u" :dĚůsÚ,1v›˛fśsĹőČhvÜĹúh»˝őěÚÓăEÓeďußBi˝š6ia·PšnĄ›4ö=”¬-‹ü— @ýáČ9á„#;Ć]Ž–ŞJ쨔@OĄ#işTS0¦AÂŐ„'Kń Éló LÚ›Ą3ŤĽĐ_KQĚá`T·±uFs[RľXa8†šéËC ü.á”oypžď“ęAǸ}.‰ŚçNáPyµď ^ç1›ŤŁZItép5ÖđÂ1ŚŢ'ť–Gť¤ÄnH{×yŕvĽéżçꤰŕ%“=ج·¬ťľ]4WEµ[ZŞŤ.Ô”[©v,ä°f¤ţíĄ–tׇ˛±éĎ_ç–Ě4ĺ¸ .׫Kg°–ÎŻŢJßk»5{Ô˛ĚĚß_9€ţ O(OpßiiĚ•Ć4xŚü>UG˘[vL…+}ÔĹŻkn˝űđ첬­š*0T…Cí¶’‘áďL3ş±ąĎ Ë™ďŁ?.< ćR;öůFĺ&ęŇő[aŐÂ˙éδÇ^kÍTfxĹÔ5#ÁęřË‹ Ťá’;­/v°G´’¶@fvfR[ř\/ŁÖIOr]Ŕ»›¤jÖCj‹Ńsń®źő×ňÇ’‡rři/ŮîaŤŚĚiG¦E7%!j—[nć‹âµ%:fWväM z­Jn©J>węw°ërÍĆôh¶Tcž[ťţ¨&Źç$¬™€Ř‚úŞWŰ HČ«Yc‡¨ó-'»ýs*ŮłżÖ­9AĽ˙Üű\Ç{BĘĄşŞ˙š}˝Ű‘·Kş‚¬'˘Ĺ3@3U i/ĹDK˛¦ÚÖŘYčŤlÉá.dbŁcm;îÚmS÷ٶv“fKűţ˙€á‘¸+0i˙e¶Ą·–ŕ-ŰřĄYbd¶d¶e4»MQ ÚĐĽąW7m©)°ÝrŹ{®ŰŰ˝:lÂôNSÍÓÓďw)E˛éŃÓ:YPé‚Ň$mI–dßÉHÍ˝oďű¶v×nɶĺ’í«ÝJr$ąÚĘKBŔ6»ŚH‘ä\0#ĚäżŔ1VA"1΢ÁŚ“@@3ăΰ:áĚś>}ůqU'¶BŃ…j·ĄR.…łiMâţV‚˙ç5–Ő,G ‰Ú}±ëą(ÜŇ'ů8mMpk†ÝŻţr°đŻk(űllŔć#ćXZKŃk^Á8{Ь$x•őđd$ÝČi©źĺBCŐŘ1ÎT—?•Mýöľ—Í€®`˛˝ŕăŤ0×c›-ÖŘżťČŐNž2âQÝđÝA˘+ĘĆpJhÍ.á sŠĄŹ·ŹK˘z;šOUľř…,IŐş”) Seâ_P@I›€Î@6kaW!hD7äwô×ۆ˝}fE»uÁâ$ŇRź?đ=GĚ–ŇĺKĆgę*łjúy+Ó'‹éĆv5SwćŞYÎŤx]ˇx&6U/[HęřźÇ‘ ‹˘9ÚŇńry*w3AđĎ/6ô–GJňş"ŽĆ*î{u‡ŔTKCľgĽ’j{ąĂŇPĎő*Ö˝&‚îi#âń®ŐöĚ;ţ#|~ Jťtçňjł˙|\¤0OkÂ!b¶[ÖÜ5Š+pLOđQĂÉüä ÍĆLí¨y5;ŁâLčő:#;íł!cËmdBAőŤtJ-ĽÍ){&UťÂy`¦7é´9ŃHţšÝq&ŕ˘wsŰäŁDj+ŹŚÜAD/ ilYż ]0˛łÝD‚“lV9ýLć"Żß(ą­ÁJ%Şú†tE »dŮĆť1ł1^'k·‚— ŐÝX=KK„bąP©B5÷ăĺÍő!± †_9;÷%7Rž“ó‚í»Ť“qBK® zđ–ş23H۸ؿeĽ˝sŁ7ŻYŻ gł‹-n—®eă$•z #žÁYŞÂÄ–#ńj»ěNa·ĎŽé“ĂÂ|y‹¶“…·¶ą^/ďć66ŘóťáŔ8óĹa”ĶNęÂ×$YŢKÁ8¤1-ÄřŇ”z°6ř>ŠBó<¬ö“VźX¨ťá;c8‘µŁó-®´—D×ĆŔ‰ĂŁ ă䎝včhýŘŇ ĚFžVą¸f”^-oęS ©Ô˛ëËľTGďÍK@ď7.¦ůwęwSż o h…A˝Łži™©ÍÖ%[Üű'<Ź"ý< "^łb®Î‘&ŰÂŮşr§S*ŰŠBGCnšő)Ń”ŰyNM˛7Ş^B^lýn`?MÖĎá¸v<ž~°9.e ®íŁéd–ęh0bRJP°µŔł ™šăÓ{i:ÇͶ9/¤-ôŘěY2[wŞeű,OÜůŢ­śŁ˝Řú†ľ`Ç6łÂĹ;Ňh»oK ĆÉÜ×ěd,Ú ťwÂ+ĽţłŃ(@!› qŽčŇmÄĹý…ľqÔŰ0n´˘4 ·ŹČ>gףm)ĐÚúđŇÔ+¬°—j1Č»2:­J?WÓ®QPE ­NíbklYˇî4á˙C`ÇBÁPÎ7ѬŔćŔ*ęé|8%lŻŔń¨/ôĚčüX ü”`­ˇµ˘Ă>’ăç(2űĘ„ ĆÁ®Włcçx´QÜ~L¦¬ł„Żř?ŽV¶r´Ć=lRÇ.Ĩ‹p'čŕj5şßĺÚďÂĽđŘ`ĄĹ.;‰™¨!{K÷˝ŤµŠ‹bÂłB'T‹G‰^wvĄ‘URîÇi۰Ôxťkş Čú”,¤ž˝'ćuźE'ł>öšElˇ69_đ' Ů.+|MńÓ2˝FÂâŚŃ‡k §<śńŕOĄj|_?5]#´›|vžđeµŕV)Ąüţ}< śDvâFOí\ą¬ÎXŐëŞĚ='NÎ Ô&…’dľh±?Źüjť KsďK[6ý­˙ŤÍ‹†îĚ•!×ɇ¬ę„Ôčgë—Śű· 1ń“dŚQŇîČ#ł©ČŻ”7 % ŤĚ§6ł´‡łŇęX ´&`Śë7Ćă@á}ű¨ëëŹ=şÄŚŮ-6Ă´d pwv*׬WS gpĹŃ%§€ˇ’NÇJk«Š‘ě4Un—lî:ŕŻ'âŞ-˛ůáńQî˘Ę3ŮśęĽkô#áݦ¬ź‰4;šÜĽ‚d)\Ľ÷QrI·NÓ< z÷SU— ¨‚ř¬ß7ĄL€Iő?Q1NÉ*§NNOy>0–RΦvÎĽ¶yń3ĘS ;ýéűsĘ_»Ś`íŻ"r Ś˙÷ N˛Ů6ÂŁ}oš!`$D ô´¨źBý_ô0bh|ÔąB0E1Ľ€é4 |š4ÁaşÎÇ.Ž‹w`ś©Jr}KIďq/{UČađG˝×!0ŕ IVc‡ľË‘‡–:Ţ„GEkă˝ĂţŤ›&™˙•ŚxßŃÝaÝ”ü·…TRę§ŕ–í¬x†N÷níşŕý)g=Ô!ČҶ::ę#-`Ip:•=•‚@Ď‚~.úŁŕҨŽÓ¬Q#¦®“D…e'ČLĽ’› ‹ďŠ<.—Đ‹2|Y|ÚĘ›FÉü2Asć_®ô%SrăZů˙ 9L™+6GÉ÷Ń㖹ŠŔsˇ{“ ţIV’î/'őŘńđ»ŐC‡66o¸ĐŤňΆ3Ś€ŕ–_Ńţ°ŔK9M/jŁŇýŚq^l]ŤAČĐúf»J#E\z\-ÂďŞ˙Đ{mOłđé˛-Íą˙ :«"¸‚^-Z©3D5OsüÓ_k­: «ţ®Tă{·Úiń’ë´¤-ŻĎO(î3L`]î ś€-ŻÇŚ`¬Ý’OšĚ,Ɖ–¤-q—s,~­Ďąím+^Z xŃyO4NňÍ-ţ(~ÖŰbs0: Ć"V/˝µ•’…ć•%Ů>¸),Úüy6©d č%iQp„âŤó_™X €Q>FF–ěŮ‘áţťŁđç ü0Ç Ŕpđ(@ °Ő×fiľ §-ôú#ňIdćą×ěÔA˙°¤KŚÜáĎ/ń81o.ŚĐ|p88Ś€0ÖWĽU@üĂŁŃČR^Ł­űú˛S´‘KAŕ=?%ňz˘ň®DŐ>Źz$pŘßÄő˛4Ë;ţExüŃÄűJŔ˘<2ÄA™(‡4C< đ+‘—§˘•`őüqÁLő~E»ęs|¶í·q{Ą/4<@ü<ŕG­+‘RiRÇĹyŃĄ&ŹŁň[Z’Rť8‚đÄě"ů1ę–ßdŹҰݏF(”×…wíˇeż,^"«›Ke_ťÚŕĘňŃVOe锋T!-_ˇ«ŘM¸ň=˙}©b¶]ôF&IDyUá_Ăka0{˙Ő]¶2Ś/H$ÔĽéP"Ź‚=5™JÝkĐŰŹ a [µ ’~\đÄ€@%Wě’˛™g›ă€?RQ.Ď«ó7ë´Ů^i$Ůąmk+#2[ŕ?é:_ěűÎ#ÄNňe.]bJĎIŔ ˛>˙0jouŹÝł.ů@»A Řs/ˇdłLc< ༕ŔXM 5Ěďň™‘_­ŔůÔ„VţT܉Ĺ<%7/˙ŕýFŁŚľ` ‹‡NqŮÚN·Áń÷ŠH,ţßú8ëł?đ^Ěë$đłĽ[çŁ öŐ żqŔÚ˝łËňČŢŠl;0Šč>wöx2Žo¶Gó|¤źöB÷ ą8řţß ~r5PxEýl`©Gö¶ČŹmD¸ţ÷˛Žäčs—=:ĎKŢäPŚkÇxçĚfŽřů<µ±S@sdČSëá©ăYţů§ög’çͬŮo Ă,#}8Żró?R«z)HŁw1ü*0e.+é´U`3(@e~`<ď§©RŹA=!’ę,kLŠÝS‡ĎÂČÎźľ˛ÔSY‡î¨Ú_ő,5"Źę\j7Ť Š :‚Rg;JS‡ťSź9ƆĂm`ö3c@3eůĐ˙‚(NÚ!ëm- …ŠČ–ÝB–DjŚ!mg]»mĘ>»ÖîŇĚi^˙˝ \32‡E ţČ"‘ ) 3 á `­«:Ču7ŮIkUo{[›Z\»ÝÉMkşî{Í«Ývo/ÖŞď.Ém;_w«uůř¶cÔ¶Ć‹ŻÚËô{jęJ”5Kt[ŰUZ#˘3[bŘ2p­Ćc¨´9d u0ÇÂĘ›e˝Ď°/SnÖ¶×QÎL$ř0Óć~Ą,óA÷cK&0›şuęxĆx]öË€čS>{á˝ctÁîólÓLŐřuş7ďüýÚöšř‹×vSY !%źśňS Ň(ůTĎž5°Sőî3{ĺ©<¤ĆcŽéözF׫·ŰyłáڷٲúăIěF}5eĄ­hë-7ölÖźîŮiS÷i rzÉ*JjŻĘ€Ôď°ZşĚ Źq®Ă €ao|¶ąĽ‚łĐU#ß°1ČëŚňÎĺŻrĄŔp®×_#’QbăPyOç,»˛šŇ¦  ε&őľj€ŢLëoť /6ZňÍbîgŚÎą&Ů;ěZŠ\ćď%v\¬S§Ä9‚Ç„‡č ‚†Ił¶ĽC˵MđČĐPkšj†;ď`ęgÔý5TŽ=/-Ž 7§Zq°Q"˛Ţ`ßLřŻ †2“ޤ°ŕž¸˘XŁ]uq˝˝ť]Ś“míZźŁH=ÓÜ‹’gYڬ˘˛bţČj´ôęD™!Ç$ŕYrě;ó©4I^öĄžű˝«Ő<ç»bówĐ–ŘôËÁđ‘đ‰ř|30-ľĹ$5 °Ă2#°S|ąwŇ^ĂĽ˝']SÚ µš2žŕ˘ľâűí[@ś Ż©ŞAžYZÝŮOÜľ ž v¸p­­ŚuYłěŃç˙ţďüvÎŁÉĆ›ÝD—؆/— ޶ő7ź­µ®Ó¸&Ƭ«(.}[¸Eń6Áţhă\ á[^ÁGź6TđG$|«¨‘ôF5™âPŵÜöű« +z&}ř?f¦WĐÝ`§yŹ4ő5eĚV÷}gňÄ÷Őf! bîĂ14*¶P4}*ĚşjJ ‚t;4ľ+ÖÍä1ľ¦k˛ęŃńjÜ‹˘]†cĂ®sNÜ.ł­6x˝É§»ś;ˇ«°t“4$É]?%܇: „Ä+öV…çSt#äĹ[ňÖZĄŢB6öWCžďŔ űŐßc»ĹQÚ–T¸bÉň€mĽ{B°.ÁçŮŽo‘¨¦Qf`Öt &’ß#+J8=JÄ~lÖíAçf°š1ђϧy`´öȶíB‡ąĎŽ _ŇlČŇ>°ßíTĹFy)ŕöz=ökČ[ŮlĚS?Ç/Í=Ţđi-}ŐQj8Łô#š˘n­îŐ˛ŹĐ|yč*ťŽ)«Jđ˝·ż}”ŘÇňĺčL‚KlČn4˙ĹńŐf|pˇ¸OX~L› ?a'›»Ó"Är ŚŞdňPXĘkŚ8J˝ŤN,;|żŞ Q˛\…Nť1N!ýŔÓ?^7ÓB­ÇďĎÜo%t6żż˙]2A¤¦*ÖĆ’ćGZ?őYć)ŔĄ“ˇ)WU¨U©ó±ç/bł9źçł‘vŹ—lń UÓú;đÄEÍoś[P‰·µsyÜJŚe&źűXă+Ť­7O»D\íSĆý|Y~诳ĽÂöŽ<)äbČRů>ę{őrJLË'ł«ëI´ $váYך]G·ŁMşž.lýëţ˛µüŽÄçMKqsÁâĽÎˇ“Ť  ‚¶®72ŞŁäŤa¦şäě®"ʵŹ'Í}sŇ,®†[p­ŔÝq.ů‘­şčké:ŚФ—ˇs\uÎäüwb´˝;$Ţ ¨Ůŕ/ţR› ¶O,ˇ”9$ĘM`]•zHâÄŻ˘_d5–|”¨XT+IŃđ-=‚>˛« «Ć5›ĺ‡Ą%Ćh˝äĐäyŮÁie,—şx̤IéG’Cć„«˘Ő ż©Ěµ;{ś@䞇Žk§Ü|^žĘŘ˝ÜA&uă°ÇX/ŁP("}`#ÖĂ~FF´Ś  LJ·á¸ČşyŽ™Ľ?ęWÉ•ôFë‹çwßAd"˝g' i}¨Źť®:Ô˘5Ěz—Që7Ő!‘ą5wmµťŠoÁY'.}i•i tDĹďÝ2v„1M oÍŐçć3Úp#&dÝ…±¬—ÖŁ]÷[˛4|zma)üTÝ7HCß Ś“CÓ‡Tĺ·l–.Z uPf˙ŚB+×Ř#8"0HO#*—K™°Á#d+^*§#Š-ŁĽ QĺČlî™-ă”J+ą|ĆĽiđ đ%Ăű€)żäĄf>E^A•L=Ó3Š™klúp­ŹÄťIąx—[ĽţzŢáx[.uUŽŢ‹‹ţ‰Ł=vĹ© ŘŮŞ, “T›­[ěEĘŕdGćˇ&b®˘Ç2Z·ŻnŃÁÎőĺ-‹ýě®Ü®áą1Á8.O‹DâÎ2†y¶ŽĺËGöĆ0»,ć¤ń \k™őb:—?÷€Ť3*[ȤŇ8ťäFh‘?Žç[ 1ľé­ÖÝ»%O;§ţ‡!ÓŢ©Gëg}gŰ$yDľělˇó­†—ż _s!&ÇŚ¨­¤čŘ‘´ßvY'-ëÖąÂz[x_=ŔűQ…2’΀oŰÂâŢťý÷á×Uř}ÔyŮyâ»1Ěfňq‡a_Űţ•> f4łr柪[ă\ďžG/4¶~|Fmć—Ö5¶ň;Í'Äť-·…$>ű˛±Â2@rŇúŽ6iósćtŔľ/qł{2//vU‡Ç/ݶ†8'ü :RŹÚš€+xZ•8”_ĆFÓÇľ*Óóy­>„wÂ{Ň|y;Ä9.&ĺ9p—+ݞ‚Š·Ë-m§RLŰÖ%ZugQw"ȇĹsA«-Gőp̱=Ę;¦Í´uĄ;(űÄdć`e‚PíË]6\é¨'˘ďekŇđ!ˇPm—Vď>Z$3˝›ŘňďZa˙ňĆł`ša)çr"‚”Ëcň˝Ü1ĐŐěůuÉ$Ä%yolŰ/?ŠďůzŁ—ěő;núĽá"„ůíâRÝ$ú“ň)‹đÍŽ>M.g ť–Ą”ęŻ~ÓD -jhŻ0…šŃ`đ ¸E~¤ľßH ˛°4 áÓĚ|Źr˝­3f“„„č;ٖݏą×W?ÍÇâüčÝĽ˝lŠoqë6Î~=ĘŰŠđĎŘç»ÁFÔ;Ş»‹Ů,Ásv.,Ƥܧà 'ú"QPĐ-·ń˘…Wąú#D€ŽiĽM˘Ă €Pβpömę§ăâk‰üńkl#V×ĐOŞ7?‘ĽőŮ‚4o°±ŤöŁ‚¶ŕ'NříYüĄ©6ń˵ß&§m’‡“ź+i%ůšI9@äxZźá:„ "X’LŠ”¬TüÉWŢxçčáíŇżÝý(ó¬Ď±îiť9ľ/Ů­ůł.ݱţ•;{ >‘ţXsODęˇ#šôµwKçżAŻ˙®¤ŘFpź¨ĂşNTŘ`îD3ëřč%ŃͨNKČńí5ďČD€Ęčň×\'î°Bý}™łsĄńżlëčűM.!?pĽđvčb5´Ôl ¸)yY4' Ë@ó„?ĘyŘrőô¬ÝŤĽ:RQhx„·Č»ă>ŕDSźÁflł\ł5™wĺŞt¦¦ŰĚţ!Đ|iOé€^pŚĽ°?O‹<=.ŚÓTř_˝Łzs¦`Ě4ő˘&Ůń]Ţ‚Ý3Q(sšW8xŁśAŕęúľ€n©„’vÎĚ@HBú˝š~ö•‚W1ŹoNîHťIb„ Žş|!LäŹú˝ÁT2ŤĘ™›óPTgß6ą‰:!˘Răa ŕ{ăćű! ęáf‹çi2‚§ TJÄĄÓłvr^˙âyślkCďDô!k•ĘP0VA| ×»“ŽöJšő[ČĚŢČl#ăŕU¶;ĽĘ«9ë  Ś˘+M=E»ôWĚßĂXşüT7‚2Ă/˛Řťş­vS2–ŰĐ!Şó´Y»…H˝U:‡Đű÷Ą|Á1ÉěiNô‚î˝LQ5 ÝąWĄŢŤÎM×ŐkŐnÄt™$Dqé•qĂ,ŕĂHď@yE NFK€ę¦W,ʲş©\.ąHQҢö­jDSąŐôĚ&Ü6»4ˇď@›–›—swĄKÔ‹„Äž%„ O­;™ŕ+ap‘ŹĄD|hu,˝NH'¨ŮOÖ2żÇĚ-9G-r†Ó~RQjńŰ’:ňŤÎ#őD"őś÷xõí´^˛S*Ě(ó]vžé4ç[öEĹüä;Cp PCC?ôí IďFńB@3Uš!í8؆c »&2€"0Ýű‚IraЉ¦ŢÖö¶Ţ6wŻYgć_Ú÷˙ÍČŔ]€HĐ?R€ÁÁ~Đ@"ŕźÉY+Ór—5­Xse.r;Ú[·ÚŰ—.F`µÚâĹ×Nz¬¦Ĺ“׫Űđâ+G˛± ɉÝ$Ś1ŞÄßČÁŕŤĚÜ@÷;ľďľűwîÝmîÎ]vX۝۵ŘÎöĘm–ą[+2𕵴@ˇm(´"ZB(”_·Ń_ÂD  A@ d<€'H€<ńGiĽDeŚĎ¬J‚lŘ 0ʲ“ —}ü¦öDkÔŃ .+e0‡†Ę9b­fu R ‰—©Ô‚%ßĆłž­SŞĄĄ‹Čt¶Ş-Ô{– jË“Í E%“nĂŚiĐ´„Óu+H:‘Řš–k”d “NvLaR‹ŰÂZĽŮLi)4'ůvŘ©.“’ÖkŞG‰ôřefôíÇŁ,–Oé:ő$žďÖő8ôË[¸ą'Łú7|ćÔožC:IÁ†)§Şf©Ăµśő/r9q(ŇQO®Pś‚]Ý6 ltl‰ż§Í&¶ëůÁŚĽ'ÉÇň=ĆVvÉyęW›’ $&{F-ô¤cžQw™ÎCKŻ‚FâÄ­s ]jer°Ô±X˛rý‘Źu¦.óŹĹ=(ô‡Ę6׼ÇČżźZ´Ş=âYě Ý÷P!‘â;}ţ9QtÄsśžfHCÇqt´ěK.'ÉS^ĐöľK vZ[¸nĹĐȤŚ\=Łoq•‘tF=pzwŃQ\ČîŃ|Ú-zXuFł×]•ęýkm_0óM‚pPôj(î‚Tăň´#ŔĄ•(™‹mâ•X}$¶ú(,+Ü0Ü]‡bS9Íš‚˛<¬tëúŮD!*Ę™™~O{™ĽJ4{˛Ö˘j‰ââ4.eä¨bëH“ÉبďŔŇü`qĹB‡ą¸ €=â›űhŘ*×yG˛GŤTˇŤ§ěĐĆáYgZß½qPł9«_/Üs»Ęů"ţĎ-Ť˛ ˝BX »t|:7~;=G–ĚşTu˝ŐL.qÉ'¦€őŢ©w ĐîšĎăôl©27l´4‚Ĺ«lÇŠ.ÁůXŁëđöżŁG» říŻ@^m3’ĽG0 ܬ;ţkgź†˘ü\/¨űŢHŔRRăĆÔW7ľ^9"đ¸¸ĹvPřńl.˛řňöô6‰çsdŠ VÓż¤ßlš|1\Ó ˘Ö¶ß8˝¦**˛ž‹ <°ł_„Ś źä*ZŇ(â‚­/7\BV”“KPâdŻ‹•>…·Ăäa¬môár(BW6Ă… č¶ź ¨(©Qxľ6»=ői˘Çś‚Ő’€ęP˝óž&uĚŤ~ZDňţŤrfuZŹ˙\Ba0ŤűţÖZ2ĆÝÁ7°¶q† ÓH&I1±d“ákˇ?ďŘí%4úv;˝uÁŁvÍďČpCóÖ4–DnužÂŻĹřKF™zcŐĄÚăÚkç7—pC$i7Ă 'Ó<ęc" ;I¬Ňněµ>óc¤u¦ď‡Üna©ťeóÝxç›Â˙ŇĆŽCu¨ÔľĆ+t°—ór^NáëĆ[\áeV§°áÓe3x»s´\4¬Î UTűjÜŞ”ş\żE/ţ áKßÎî‘r(>fc×ý.HíD"`ÉV2 Ń›u© bťŻ•BÜî;ʆˇo6ôÍV´˝Â!r”đî”Iz$E§ Čqsz4^#şÉĄzé« řą,ÍąuťGß");Ö˘Jŕ_¬2Ńa5Ád3‰ZF˛iąďŽ®cíź ­žŞo§îVGçE­U–׻嵩]ëóššĘřDV!áíCşËö1ždÎdÜpO¶ăά\\EÇî{©Đ%_rzÇŘ©ş1ă˙ř¤ş|(0şÚu¬ýĘzâŮŮŰF»ž;±Úe2ý„!óśŘŁÝÄóîűjĚć/Ďłüc .{LĄ4EÓĚ ÚHHąĘ…>¤­ÁúIżÖ©Ú{ˇ.áâ˙iF^űŔ¬Ľ{I¤×űúˇÓ˝âĚÔt±†Xo%- f}ç~ä­w÷˛Żßűć?qY›+R|Ŕv×´Đ2˝Ů~Ŕ Ëř?#Y·č?Ąď˛Ť›•ťcÇŚ>ł‡B Ô{†JszŰđ=ľ¸x;v_š×L!f“źÂĎç•Ý®“€źŰé‚tݶŇUT7`ědzagÍćűĄ­kÇ=á ŹąńMCQl¬]¬Ăd(PđJcQď}Č˙nfÎvXżŹ‘źČ\¶Ĺ_ř>Ňf.¸Ň|íoHňgŕ?Ě‚ €° Gá(8qX”‰pÄčÜNňX27MŹJËţ÷qôä+ů]Ů/˙Ą›dh {NŐd\Q<ˇ%¸—ő” O’{ăʨî'&gĚŔ ›pĆżň÷ű)B× ĘůÄů@(G@ (¬ˇd_{Cë´;Oqű ň›6Ô ČpşűEć ç–öHŘĽŮsҨ÷áÁAđă#0ń NÂŽ—ŕ}€ĘĎ0ÔĚRQâBľAďÇşćŔ[鼔l2€PITM @(ŁžH‰o‘¶ÇV®°ÄŤ˘ĺI_¨·I+ŇŚ˘¶í@$8E.ť  ‘'¤ E `šíŰŁ¤ŤäN)öĂ~°ŐĐp X<űĹ.řý.íĂ =$ ]ŕ řŞ~`¨Ě Ňűq[ Đ[´Däa¨¨›”îIxÂFÄOváhM¤ÉÖC i’ TĎ?±/ s`=;Ń[C“â2ŕ;z éí6Ăßĺ4l¨3yp»KÎɇ2ŇŮĎ-‚ş€jr +o«˛ÝA뿆~…E-ĺę섞ţť°ËŔy‚О¦KÇł»ÎÝShßű•úyŇćž-dĘć/TdQĚ4«ěÝYűoŚVŹő5“`‘bľÉcD’¬˙q'ľü_7B¦ X?OV‡Ë®­Ľ=B9Ń0śüh |·p4÷öHq@©µÜŰüęR\ÜnŰ·Ŕď*MÍ«Č塣›«Ş'HîŽL‹iRą9§1´Ň§â„ĽĽ8höČ×'ńk™¦ôÉ4çÉ1µÉúśÂ”XNĺOśţV śJäb €¦'Kž&?R$ŘG¶,¬ç'ůŁť źôŃ7 çžÍ+oÄxążM~Ô0ÄinNUXÓ‰#…ć·ÚŃőrŘů`b€Q â1Ů|§l(0UŇ'ľű)ä%g¬§%ű„űÝ›ĘK}.–Ĺp -$đđ­P8?hxE§3‡ZĄ;%i·,¸Í&Ą 8Ă©S}şiJBs@)@ÝGQ»Z(ŘŻjt%wíę§ŰiťrżŇ·AśĘĎ™dž~LÜ‚…X â Ţ D>™Ś˝É_ÚŃT­@%x ަS°©ÜńŇĘ)¨*á:Î÷€€‡€P˙ křΠ47RHőh%é ňIâÂĎ+<{ţ%(ě)5ńr±\ěoěBŠź~6*źKy6ţ‰Í”pgčřj`®"W/ 7Ţew±Ó]uzgŕąRń‰nF»8ećąťc^Ă”7Ăđoĺrd÷zy¸Lüw»1ŇőSµ?‚Ë^î|ýf˛µq×:ŔĽ×XŐďŞű×LúűőńOŘұČŢéťa^4±Ü@”ÔěENľnÖ7×Y%›,wQŃ>qü€­ă˝MŃâµ7ŕýpVÜ`‰XQ_‡~Ő"›\ĄJ÷żüRî]rűÄ"’óh_Ť›D(Ôl,’q$Ż#Űbb‚aŘřŐ±¶ń¨8ö%Ż*ż–Fއś—Ů(–0Eh_'ÜĺXŠĘ´Śj„Ä2÷®×“3Ĺ䵟Wi‚xdą’»°ţŽ;'f„Ěí.s™_0WbĺkűŠk‚B-á|¸ż˘Šą/]Öu˛ÎŮ]żčá…«— żşŢ^KŤÓSůuůŐqúl‚€(Ľ-lKľJe#űpČĘĄĎX4Eß^XÍ}Ö[>]|ŁY śç/nź®šźśźš~ë]·=ÝÜä3Ć=1AŚ5ššuĹkłńf·™˛oÔţŇPx4ŘpÖŹë†fî•| $őŕµrvWz5 Ďl‰/ŁA'Ąţź*ľLíÎ8,—ţŇĹ Ť&KřmK4 •=Ýíâ‚Ç’íđŻîuuoĚo~Ó°Eźąl=´¨ů·%ő<ë÷pţĆ&”™ţůŢ;ÇX7śAáÔ·oY®şŮÂľUH”$™Ú~0L±qSf~šEXFĺg×$hrgU§]ڶ©Kň'’RůR˝+ʨ Îß'išĽm„‰XŮóJ'u/€' ŽcuäFBŢ•G˝řrąL»č®žktwç‰!!Ą÷*“ińâ‚Ç:ýë/ŇűšF+Í Ç”Fë¤lÓ»1Y‡b ’€ŹčĄČÜÍRÔÍs›ąxŤŘýž±ţpâ펛çs±.†ĺfRa.<ϡ“FÄPrBµ.Ű@îRŮË*5:Ż_şhŔ4{zBĘť…o«5›´Í®Ě9_ĂgZuĐáŃçÎ ĺí5w®ňĎu¦0ŇşEž:1ÔE])´t»sĂţŇ?CzC5@…7Ş>(eçC” 膺P›ęHĎo…ęźüdžĹDňéáó-‘+—T˛•YJążĄ,L *Ka÷bCeíâŃ”ĹŇÄ)ßA©ÂŞ6˘g”îĂUëKţmÁ[ök—çŃw.'ízôö-’źů?ç°RŤc&'Ě`^ăcŤW5˛â2‚´žŮíÚŢI{O§ë‘ĹC‘ť˘ąçGQ3+V¦ů˛_Źć¸ü’żIţc/ +"Ó‡±/äľŰ;Xḧ—–ł퀤 ďŹOřGr¬|č .-ż –ČĄśý0Îč 3~˘+čfľË¸ÍÖîŃšÜKJÉĹęL’ôF`X~9¸L÷ž±g˙kňYö6˝.ňç‹U÷Ă愼›jđ(rÝ!cד}Űť|V×üËK°ż§HjŃcUNĆYÖúY]ů¸v¤ÖFúĆ˙šő8H›¶ň ˘/¦»bN{§ŔÔX‡.©‘˝–š(ěqh?Ühpaxrđ¾qŮ>akgĎhSMߎńx1˙łŢ#Bl+šZ‡x"˛ŞĂŞ[m} bĽyŐ®Ľ áÚŐs8 Sá9Uâ‚G±qűp9N  qéüű~Ť¶°ßdę#;ôl§ův´Úš ŕ]„ú,ŰţsĹäŁr \Ö8Ü­ö%%ŽÝC¤9îŚşŁ Ľ”% J ›9L›DTČK(×%öß=6˘ÎzüđicóÉGl`˝HBŁ]űh>ÔDŢň–쫳ÓiP2?ńK=L€sóµČ^8P®˛äpöĄĎŁQ\?Ge¦żh5EU4„X¤ĆŻĚBŕ-Łő śŹ=Żd b„ Qq âU§‚Ń4ÚJČä¨Mp·š‰Mf}±j#•^eT¸2ж wŕˇcŢ˙ő~W‚`ś(ŞHçĄjj$0n…Ú’z„>ŢVĂXŽC°Ç‡d•MÇ®Şv»c”IUŞ đ˘˙žQ˛ÇFDŔő/F8w´Qľ}áĘŰ7Ťęę=)–AéŔ܆¬ç*YŐ·ôŕ5M˙ŃŁíęčĄÜúnfłúŃĽ/|¸xâ_°Űv^(´}uż/z{–>|ŕŚ?’ů?łâ)p=rŚ ”ÁŽş%ő1’Căö‡Ô$lŔC<ő°Ěč…†^aÄÖ–ţö:%děTŰŠyO{ j2É١ű7ÁQď··%ŐČW2&"–°[bZîř=Ą uđ×@ćfGËŐ;˛Văť ÖÎĹĘ›·ď<%m}ŻîX˘Đö2Ä·Ö„‰Üc$Űüç.޸ŘőŹĄsżb*m[5VńĄËeU÷Ę`±DŕóTQĺöVó{ě}s¤™8+ä»6ÝĚÉřy„ęŐĽ…­ţ?Uő*NÄ;±]ĹŐšŚ›1j|>& sĐă¶4l¶WăÝ^ń„˛†!©®±6Ź“n»BĄĚ.ŁŻu×pĆşřr,ŻYŢ],„śË· cBr‚ÜłŤî5’;Q۰\IŤż`“¤×ިŞZ’*˘*ßW[žÓç1!x]öĹMóĚWu#÷c2Ěm4i 0ŠdŞd˛§k Ö€°^Ń_Z#~Py(á*Č/=·of·p4<ŠşÚ÷A‹ÇKź…~ŠeĄí8¬(o§rŇ /׳;Ž-”Mß§ŽTUCĐŢzo‡ÓĆŤÇ·p’ţ{jr4BysZ•Ga ±ýBÇS%Č—\D…ŤÖ ©¦éşeRýý’6a3'0úÇ˙¬FаÂt‚ęé ˇŞĂvŻt­ą ăŕ,ÖĂ(>"Ő%ˇäÁgWrq]*’}¶^9q–O<’,ÁI .šŘŮóŕK4y#…9—ŕżI‡>^ÎŽXŐ–nŮ$ň_ę˙ź0¶fcÝâŞŃ Ó–aÉ×mÓíŻ*\ţ 0 a‹GˇáI*˙LŐű,ôźKÖM 5Śń-Ö&ý: 7`-ň§ĆC€ŐŢ.?¨K)ާH/Ő’RŞżł_žUë%˝u’P ~*äNrđAz‡%Ç H©416 •[ycyˇT lâňüýx3*8Bąˇť­äÍňłő]†ĂőCíí–zĆ:*˘şDé’˙Qđ 'Fžč蓟ÔŰOO_@e‘»@}H u\R*ŹVťG‰ŃUWtqĚBY|Â…Hďć‘ XŘ+§Ł#źŔÜűGO2ťŽ4±pBYćPi €°3@3U i/‚ĘB e]4®•ŇPËŮŞ-d!Îd m;n۶w÷ٶv’dMűţ˙á™@,0 >ţI „¨HH/_ÄÍ „–Öóću&m¶ě1Ż{•f]ÎîîeŐŮVîÝ»‹ßŮ6^ďÖŚí8ĽuŞk˙řh[Ęęâ‹“/[˛qÄI’ŔĽ€B€F#wPÝď}÷m÷u·Nßm·Ť­‘ŠÍ¶µ­v­mi¨ŘŘIs‰ŞÂ¶’) Ea¦ đ„OŁ1>c|áX €„ţ@Ô0 t®Éů¤ýĺÝł•NAq”&[Eů[Ëzúꕆ98čf{č)íČj…,$ujsj+T0¶¸ ,íúÚ¨-k|“Gkr´˙W݉w6=:Yw“µV©l«Ö Řei ČlëpĄ,JÖ%¦>¤Q{ĽŢhô¶ eÖµr¸ˇ¶ě«ńŞYÚ5+FňšŽě¸5Ü(Ń/őÉ4’šT‰ŚÖťq…HŇŤ'ó@Ţ]¦­’5±2UŤŻc˝"u‰šµŠę4Ô™ T\M U^Â-ĘdŃŰč±})ěĎ|‚¨Ő)\Ŕ#Ř)ÂHÖšë…ý%°ýχ¨Ë_ÄşŻôě B°ž^§ăÉ-_l!;Ď8Ů!ŇSĂ”*ţˇ—Ëq´]<+°ă‚Ú!0Â'˘rÂčÄŐÍ뻩Źw1)JëŠďÔÄśŔä[Ŕü_<룤Ţy@ ‘†ă:/7Ž®÷âÄşX±_d˘`ÔţĐÉ€58 †Řtă cĽ†%[-)y7–|QŮyňĐ66˝ŕă-QÁť'‡ýíVđ~-c‹A|"†U±ţ• ŤqňeĺreÇ=aŹCŕÍą=˘oMiž DĚ SÔODV B%™bY#F"{][1Ł<U*áěGo…GÄ čµ8„j[Ä‘vŕÔ@ÁřkÂęÔ Śş*¤5˙ÄÜĄ«—3“‘m‡×r‰ąś"Ď&LŻŠ6ö ă#'Ü‚óŰNă%©Ln Îa]nI;űř;´­‹Éꛣî˲éŁćÂS>\ `5…gŰmÇG®ÇŔŇ»ú„š ßcv`–Xtş4őµýeSë|i^Ź“KŞ]3íGż‰\¶^26Ő\9ÎËäYIt° (HbŐę ń k#ź=Á­94w`k~EžeިčJâ8m›–xő/Ąö ţ_ĽĆź~¶^×uPÄŽŻ¬®Š-ü÷FňcŢÚB›[ ýńŰÍĂą©rNçň˘É:†?†ßÉ«ŕNl?m÷ŤĘu㪠IŽĂ"&ěŘ#‹ŐˇBĐăsŠ 7ĹĚvráYĽ×ü‘ěĎ1YŘš™­Ý z¶‰«pččJ;c^KˇćŻ 6°=ä$ĚÉ@K—ÚAC˛M(ű¸t˝#(,|5U—ŮaÍëŢ%îG|ał9Űf:Ü îËÝ×ů\Ńá…# pĹú«‰ §šë%;+u‘Á˝ Ű&?±şWÉŐa߯ďsąf›•Ăłr{/bÍEV™:OM9gsĺ«ţ±d̸͜ÚD]frÔńžËµßXą.á}>X1îFÉ* ăéĽ÷DwŢŤî”`.M>`‡4í?qČâa1»<~KTo¶ç¸Ţźälc‡¶<Ą‚lĺvďđą­ř Ď–äg!N*D˙'SřőZ˙xóŇ:FUęzpIe˙ľŘ‡łµ7qub–ŹíÁ 9B'‰E1áâ€A~B«Stď/˙”ßSö×á,1XSřřČ;¤biÝäQHĹÔďv¨˝¨P~´÷Ő*‚‘Ś M˝7X´ž/ßjö)ŻęQ¦+î4|ü1sSď|ř˝#Že–y-¶TfNž‡Ç%+Ŕ®$Ţ 簗¦ŘŚŤ…^öP3Keh˛»—wPK!@w*šáZ°Ű`ţ &Y1…ŚąTa*‹9Îh”“âSG‹¬zÓGűÁĄĚĄ’Ýý©›„Ȱ&PţĘrz5xÍ|!3=˝ťčĘĽ!‰Q©Ë©<·ť–e‡ µ¨=ŻÓ’ď©ÎÄĎcgĎŔ҉ŁĎѱęš=¦´ü“%[gv%TX!Đ=đsÇRčŞŔ=ŐŢŠLcŕo2Ř­B`Ä-×.ý\Őâ„+UóŽ ‘p_˘Â©ôŚÂő˙×Rv}ßJ'%Ľě(űŘQçd‰Čđ…a’őŐ VÝfT¦QrIŕc™źcűÎچ‘·éÇ›Gń9ľU§ç“JCč¶Íß«v!/6!•Ź!?Dj&k ddZÂ''*ĐŞžý%b3Ü~ëb)0б}~ł3äˇtFJÜC •đËl-” L$Íö<ĺr»ćŮ·ô†$ÓŠĘ‘$Ě-MĺĘ!ĎO¬ľ¨Á’Ű÷żÉĆqĽăaG¨«(K1¸öÂ0z±?y’ę.:°,‰¸â;Î!üöiş+<ÝUîvF#¨„ŻűŇI‰—§”–xJ>wR€X‡aŚUch)CT„ÚŔéĹM_¨}ő•ź×äEµ¦Ű޿Ʉ/ťĐëźÉ„˝ëŚśYktj|wŞW—¶:ÎYŃFŰV„/űkе/"Şäx=&ţµ€¤eĘą@)»ŰŢ ýéÝÁLą.tł N arÔůŠ‘‚nŇÖMW, üx¬ĂOé…Ťům0AË‚Ş~6YÔ-Źk˛o€w¤•¤©:mî Â ŕ¶mĎa6ŐN7ŰauS»ĺť^)IŰ·/H7Áśl X™‡˙v¸H:1˘naúŤŐ:X Âăhb´ć-曼†­…ť±–đpnľ›Q4Ä™ä}ţ ß'u=ŰĘQ|ŔÄďáezö˛FeŢîÓé*R¦c[Iţ\0Ä`ÚŰf­¸ŮH#ő¦Ăž K”úŞÔ­#0¸%›sŃëDđ!ůŢţhI±ÎúŮďB˛.ś žŽ×ĐúR—´vśaűÝ W_ľ3ý”ćH¸(L˙ţŃ"1…¦ýEş˙9É]^+l'ť ‹đŞH±gjG†"ć„; k8ţćč$łÄ”¦‚ěău•˝I6Â}Ú•‚ďj6TďčÂćěšÝ_*-řwâÁyĆ˝yĆg˙Eý÷N‰?n2a|v?{˙5őJ>;š@§*}ÄŢ~䤥\g÷Ôi9Ů8ŐÎÉBÍ'ĺ3^÷ŕ;nQRĘHřÇ”’ÜA%ĺXsq ¶–»Îú*Ť:†í „ťÓŞ łÓ•Â2čü’ˇ;´P:[é8ÎZč«]ő+—J™Ez~;ä¨6ćýžÁD;;q;ÂY»óŐ3@3UĬ đ,„m#€4IĘ–RÖaÉMuc0Ň!¶îşd¦î©Ý˙3˙˙ ¨4#fD • :P߲ž>„/DĚ ÄBn-rÉ;3włs{I.Ů›·›Ű®ź˝Ůž›Ň°…á"~Ä©đˇĐđp€ż  UřĽŔG»H)⢙¸7Dű˝íµš¦­ %_Ý˝îîwďîîÖëµí1šÖşł¶Ńć ˝Ú´ÚýfëĐT/% ň´"H…bŚh4±9(A ŕĺLyĆÖ2Hŕ|á—ߤ2őNäŠôÎü¬2µä•ËQ«ĺ©?TłŹZ¸§?|<ż^,Ď'ŕâôăIĽc_1ôß9Ő[™Ą¬§Í+…cnB¬Îś™ä܇t_ V1Ď$ŁĘ“ÓˇŹ#óŁŁôq§Č¨úf؛΂켹™X››™öŃkź®Dh® «2¤.€Ŕ‹úŇ ©e¨š;@iďE2lZÄ«‡R\e´ SÖ&Ř%Üqé¨=sç¸ĺ9ŐžGáě“F‰Arô^*x€cÝ C«jĽL­°]Ď"­¦*â:Wy0„ŠňĂŻgŐvěşD×µřş­dą6}äOJ&+f9şÁ€ Ť:Č€SŽŃ ü–ŽKEGýôÔL®pë öf˛™DČD kÉ(H—KaD ^śÁSoTż.4ůR!¶â÷l!<$YŇxźŘś`ŻíçpĺßîĽçŹN@—d^”ë"ެ„“Ő**RľËĹĘ’5…¬ÖľG2řň>ô ó Öyôk 8j˛ăYBiďš"Rvߎ dđ¤zJ'Î+^|0m1ťŽX8`EU¸čÝ~žHU<ÝŔĹ”8nc ÷XŠŇ9l ĽĺóE2 §˝ćŠbM»Šs>s…ł•ŤâŇě׺öě éA'ď ČĽ7ďśî ?Ä9+ĽŃă#H+Ô‡1ŰŚ_Ř )¶Cß-žuť(K×o«űČpf:_>” P]S<`Ú´O6ÚvT¶í)Ť \NÖĽ/uľ?wě7{®9ÇĹžďť1Ç©Árn*\eÉÝşY¸]ŽŁ‘űSŁďŮ {cíĽî úżîsqˇFQ˛lëă:X®§•‡‹ô ˇß|Z˘dU9t•–!Wş‰—9ç+1 :R’Űsś˛M)´*p&śµM*·€Đ Â5J‹1ş®3‘e€l@rĘ桚7ɬ}s4 ¸CYę¸Ŕ©Ę3ÔrMŃJ) ĄË#;>™ţÁ‰Ý¦…»6¬Ň`Đ´E!AµťKéńČĽŠş5›#™BĄBmgQĘ%ňăä¸.ĆâxUÇP,Ě€qٵ¬ÖĐ Ň.MZ<5żčÎ?BRc.é®y–ĺrIŕ68ę@QÚ¸Ž˘0şŔżŁ^ëRf\Ç‹4pmđS<Ú|˙ü3B€>”ŠR3yŐéÖ bŚŕÁľÔQgşéÂb„ăá&KdžVyúó”$F «tÉĽ5MS×µ­b`gqNYĂLµ4Y8ŇvŘŤŃŮő.Ś-0ŕ-šuâ¤íY-^˙æŔ8Ř‹żĽě¤Ş#ě„`űçI(.­:ąé@ąFĹ“ËŃ&‘]ćÁ,˛Sg Ŕ…9ňź§Ç´Ż‡Fhćą!¬ŞmmŃ8ňGBńDĽp#8ńGDžů!Ő1<+0]1Uâ÷v××ÁůĂŕßÖYŻJčuJp˘‚“=>1 4KöQ;Ó Ćé?Ž>ˇcęD‰ÇŇ©űm ;†Ťýś)ÚŕYĐč˙lH7č 7Gř6CęţŠÇŇÁßСżZŁTš)hëpčŘŽ cEY˘2ŚQCÚíj¤pE}ł/R–M_ý^éjŁÜoc DBeŃ;űđn„š#ă0 wrEőËsâŕЉӤŹ:˙ďÇUĹpUPÂ÷đD=tĎĹŃÁ}Ľen`F jkjYĚňß÷%/˘÷U­$°#µ5i€ Űéü&†Í”Ű,fĄAVŁĽŁBŇéÓQpf¨2×w3=÷\ăoČd ]ş#ß›Ó&‘–Â, 9v° @đ¶D%皆ű¤ÜM‘ÉÉ%GŃÝI鍑ÎŮÜ’^O°+léýĎ<ôÔpŃ ŕ„Xhd…0;K&¤>MFtVëýáüĽoňŔI'wC M›Ť–żë8…ˇg÷ŞËÄřÇçĽýÂ×µ›“ádüuő›tř›T|·Ć…ŻŢTdµl)é1Ś­›†Zť;"EgMOÇšśŚoź-4Mz4·ŕě§ĺ{ĎŇ©~í¤ź–Oޤ¬/Aźź?Eqpíüź€źĘ讯ź­ţźlýP‰ßŘ?ýŘ`™UŹ,ńĹöÓşŹ‰Öčđ[ř'C'éë¬-ţ‰ŹS÷ţö}˙ÓqůččËʧg=OÂô d픟 zíÎę>‘ľć|˘ĘC˛µC}~Çú$GÉú<ľ0W˘OĂEŚ˝–ŕO›"›]łkĐ­‰ź>DĆožJŤŻTw]Ű(uőÎŁ¬ëdŰćĽéř12»˝źł¨Í@ó'řéY tůQň^¬Úq—Óúül$LŰÁů€iQ ´÷Ě´Ě]dŁC»rż‚@ý>.úUąG‡#lĎń#K\FČ[~†?Á ±Ę–ŁOZom’ş®R3)šT±Äłë(łÚ„+0$čŐřˇ=Ë@çcßs߬ÍřÔ8’¦)ZŇ|žSĽ^Ľ–Îp‡˘n‹Đ>Y1W?EĄh ČA¤­¸#Ť˘ ´´eŞÓ€˘Z 2Šh„ä3hÇJçZµ2Ş`„č3>őd‰˙ 哊 ®3Ąt=ŕ>ysFť°U:?˝»<§ž µ¬igŇ亯Fˇŕ‚+NŇF´MÎŃk,–d÷ĆÁBvä[4¨âňnl¸•ÚI ë°éĐiĚ|éPŃyVDá<‘˘Ń‰uFMq´őäRű€_t8ČnwaF[Âaâ¶ 3ŰúĚż7ŽŞĽ1+c6•>‡\‘ŐfZŽď¬YÚh]’Ť\°`©NijKŁ|Ţë›8.ąQ*ŽY·2Ő .®·dÄřDÜŤŁ ä=bJ3veşg=Ň A”öaËžđČŁě÷ŘĆ˝ÚsCęđz|™iż ő ×¤ë™çÁiäxBĐ#eťďhđ)lş6GzdÝ ¤.WĆ˝ő9 ý·ÍâˇI /Há‘€Â˙›®Đb:N dť_@pDhŞ솎Í™P$HcąŹ6ÝĚ"-M®śÍŞ˘^Î(ЇţăQîŘ>cŠ€–Ő&ĎOĺsŰQçK¶36v–m6ăŤtÄHRŔD6áEGü‘˙Ő1Z[n.Ř–ňŃ'2gn¶5čă¶ş9ů99ş ý{;ʶôSŐHđ.é ŚODdo˛°VőřűĘĂM:HíE€e¦’¶Ź! w¦Ô‘tę Áł¦‘sxWV¬łd öěVL͆]Ă6Ő>ęŚbdšn ¨4YˇţŕgA˝—ďŕťőO'˙Ŕ;§łňťąëŃHP"-Q7Cú#™ËÉTĆńĄnjüP;t¨JĽ1ľ· 9˘B‡ä"~ábH!7â'HËYbrP<3Z"ŘŚTĹ–§Łt†€ŔĂa׳{⋆háĘ˙ç^®”;Ëŕ÷`™ŽhĹÉäć™+ÜłŘďy—ĹvöŰ%e@aMşő ţ»†ßaS’`kim¬8˛–ŚŽĆĄ°Ka%ţ Đ;ł- ĂźE^a6uč›÷©9m_ÉW~ ďÇ[öNFCÄ —˛ů´+Év_ż —öJ…î•"%4ÖűUť, n^Éîť"Yťş‡Z+Ş)çzÔC€mŕHÂöSżW[3ßř,0Jˇî3—’vO—ˇÄ ’çî󮺥ťÍVĹ›bŁřß®zč©®“iýýЏmKD>Öź¶Ťď§ičűĎr‡ţjLýi Űxq¬ĄK©ÂsŹĂäÉÜŤl®Żó>úzĹQ‡<ń—ňĆlRčzéMŇË›hSOc««żP˛Ö×ůę…kĄťiú0.dłBózF\¨2aćÉG‚¨Ď:Ă%ë@EL‘“đĂß'­Ş'řSŇĘž×˙s)$Ą>uBţhňüSŰ©bŠ|ćţ]P•˝u’#~ďŠç4Q\ę+Z·®ŞçÓŁVRĽ[ú_Ŕ\spÎĽF©¬ĎË»WĘp{Š8ęřEč­ŕI^Lą Ń ¬P+qÓ—¬ĽxJp“ţň±eáĹĂČpż[Rwx–ŚÂa0V9F©®%OgQN‪Âď,ŇgçíL —Ëd» YČ"p Đ¦yĚężŐi|úydÍ‚«˙I ř…  bž+;|ŕ;S&Çő´âG¨|Âĺű–M«ÔËô)Ç%9îĹ,¨°"B`Dn»ýł;µ3ÔNź´+oS»mmçRÚí­b·ŰÝŁú÷v»}˝ĽÜ˝w÷jmm)ů1Ŕq U@lł| ăÇ\ěɰ÷Ą}•áĂđa8Š„`‚ČHdŠ îë 6ď;ă'I0Ń’>ă§ßű¤řPK±ĎôJ·uI¸0ˇvęhŻsr\íÝW/ŞE•şóś›‹PŃ˝ô-ŹB%˘(:˝_¸­tčˇ2 ôĐIĚdLé›Ég&˙ĚŮĚ@="¶÷ÚŢýúÖn­=mÚÄtą–Ó'ţ<íšvudŮýĐüŃ$&FąŔE§J¸ý¶Á’ż@.’p€‹ş@ĆGr!Ľ Ó ‘Ŕ‰<:H>ĺ Ľ4’ŁQ$ 2T8™ o‘|Ćk×Oi=& ş;ˇg’>ż2 '4a±ôyúŤÎçmÔc"HĆČÂŽ„LÄb&űúËŇDä”A®^Ĺhxż[şč$‰1łµC™uâŔ˝-‘f<ŻŚË°‘$)<$kĐÉŔµeö›ő R'#+:OظZ‰”YGâq_6,Nٞ•‘Äśq`¦]%€ü‘O[b”„ ”ß_U(š‹SľłÚÉ*X•'‹’|4I¬ł·Ňg†Ä2!‘»ZŔW<«­ VS±›ĺöH” źŰÚIĎzŚ%KťLőÔk’=Î'˘^˛ÇŔÔ:/ _=#9ť\%e $•LOŮ…*…*ľ_đ ™L¤DĎČ@ť™ÁIą=>~bB‘׊KżünšîlŇŚkžĽér,×öő·ĺßŇŔ0§j©“˝¶Ď®SVZ§îyŰ'm€¬R˝{ɦŐ6ZŠŤS5-YĽX^É QWC¶ëŇť"8ë¨7· 0$Äkv1ŇcšwM#xÁÉÍź5ČL0ś¶˵ţ– kËÚqÖ‚ 'îirzAů˛ˇ8->6ň|RŞä,ŇäĚp¦­>ľ˙(ˇΛŮyľŐˆ».ĽYŻ ¬¨ßAH˘Şť‰€kűĆ€ÄĘŘ/)D‘Ňő“7â¨ĐazÚClµUŘ˙<‘ÁÇH$ÉȱĐ;–W%];$a‡®gjžĆeĽkĘ®ă‰ăÉpë)ö&%ď``OĆxXk˘ ’8T˝PEd©/:"^ DAČÄ~ą˝=Ş#ŤKď—bNq”ę9á˙ŮxVů‰đśoHٶk‹á,ů­Xʧ–đgpqyµ®Č3ögáĽ^Ú  3řĽ÷ŃâÂ+ż´ü &/|ňTŚ2nÓ%s_Šĺ-VȇÁŮﺢ IGSŘH:fĚ˙m·pľĹ` d 8qŇŰqš…ÖE%ń6چCRgHŢFÖĐ L{l9)/ZTLľ•uh¸âŤ†óęŮmŇI ׍Ćs¦BtoAđ A+‡ľĐ{ě8§ÇâÚ.D@ďé&<aŇŢl‰ş2ĄÚđ ßĆgŐÔUf6Ä6ţMŠ`doÖŽc.`Λâ’˘Ă&ŞWXăšÓ¶2ăl ˙¦`¶Ü˙Ť¸LŚűٰÉ2žôŚÚ0ŠiQg×ioĚ·>ŘůŤu‘•çcY.Dl3Űiť”ż™ŕz8ęŰMŔÄŃqß8ĂϤůdĚp'×W¸ŐnŘ=úY¤6Äš÷o—üŐ‹)-7±zůž„!Wţ­K ~ć*ű5cżI١裧ßđż¶äËżoLĺЧ‰3NČŤĺ5Gż“ú'@^ÝXUf^V˙7–¬ÝhŤ7Żiż1ŤF,"7çŰÔ­ ’›·ăjđMSÜÔ˝¨“Ť.bűĂiw–µD˘ĎĺY7×o'ŞĘ÷ßi«ĽµDR ŞIş.Zó’[¦@]˙řáĺöY‡2ÍX35Ź+đ…^“ŕŐ¨&ÍłÂßsűŠ_^°(HM/„ö"ö٬%>ľ@#ÂŇ©L)|Ö„M1ę_SXÓQçsuQZčcí<[rňřě9ÇQžßUr&ŕNč.ŕ@eĐ{'Řäű;~«m·çOg gěµémű®ŮÍéĺ-ÝN’ęau:©6äX}e‘ľÔQ˝řu÷˝vhŰz6©žc–tsm¤%Ű,Áă¦?NúÄ".nĂnŻQO×Çŕţú†?5ŢwZÓîlö˝Ńî?=űÜhĺž§Çů”ÝtőĆÜn/Ü ¤7[Á^ 6(ńĐŢŔüô-*'§8“ťŰu':'Ń·őÂ=Ŕ±®Şy´FmçUąín®—´¨kgŕčSkéÜ·›ő’ή\O÷väX)ýUËŠVë$ăŢ÷u,ÔĂ®­ďŰ÷$o·ŁŐZŔř߯řBC\¦Ź(%/:&“ďßěůä¶‚‰<čłĹvÜĹÝÁ’/ď–n'µ‚µP,~}O×rrssűĄ‡;î}ř×Áˇ\·[+ßádz·Ĺ+©GŽýŐŮCť xaň-¸Ák˝ü¬Áú>Yoďú깼¸¶ď=÷:zŮ.) “«ă*7˙ĽÍŤĘC-N·7cu)&Ř>Á%üóvZ”-Y*Ń]‡Ň«L¨÷€:0ÇqëĘýŰąĺQ=ŃŽx!îŐת(¶–kÇëîąhtv=Ô+Ţî÷ŢťŘĘ&Î6Á} p s&•—IÂŹ÷MčĹúÜ·©¬ ‰ăDv­îęäGµŘ­_tÎ_*~÷€čö'ggŞąś@r}ZŻÝQ´¸´;ëčf;ëřämö¤J×µ«Ő®ÝPÁOˇ(Ó8çĹŻwxs}××)¸íß*ôNŮUJŁ5L›Űt‡9Dťëć9j‚đ¶ăĹ{ŽŕćDÇ)ł÷ˇ‘aq^R<{…Cťl`ßź)gGśŤŻćŮĘ] ) őΦĺĐJďM;<˛ÂÉ—yZWߣp`ZÝťhť‰uçh´_ÜP ár-×{çÓŽ)  oś[őÝz=ł¤8ů=łľąŻŔÉÇnkóöÎűGî^ĺńî8O°ď'ňN¶UĽúźú`W =ŁŤćq#›lbúCăŮZąč†'ĺѶÝ^Ţ=@riµÓ8gýúňPxÄlŞŇđvrţéŇŁSaÓgw='âͬż\#˙@ǵ~O'Ąz6ň›Óńn®XV={í÷ľ¶ëxç© áů®jÝÁ™vńJn'ˇ©jĽĂ´o_Q©`ö»hď9´¬S7öm_ýđźóčşeOň$éÖůęOďăçŰmçôČRĄ. łíl…ă ĐH•°Xá¬[ô¸.^,¤VX­p\˝o©g ś`+WŰţB*…Ĺ gŘkĹ©ś`+W]۹ؙ¬ć۫–™n“e»Â g—´l”^PŮ‹ĺe»śű^—Ň´l”YPeA”S ™‹Ţ‰ýo–â®í´ěřżŃ·™,·)âc ÝҲS˝•í'eJ@5N64KyR`ó¬•ęg˙¬v¬ůxK*9™&ľť‰Ź9 hÉÂąŔßuYĘĚşMXzL¸ôíR’–Ę‚(  ,t·đ¤o=˝ă®â=ôy˙]gLËb~Ő㸸E–ěÂÝU˙ßâ^D[d\ŹvŢ:v'\ß%š1¸ůĺ_t/N{Ĺ\˛÷çšeĽ_(÷,G!ć"·bËĹx»Ü.Źz̸BŹŠąT µŔŞ€~ˇP lÁF!„Ô){€ľL/Ş‹ Ů ď…äĺÂO>k#ďµarĺvÄ˙Ó>úĚmsö ĽŚ^,u4 äĺ¤âŰkË˝u߆Ł"ď}Ţ»Ćňµ~‡{´•'üŐš^idS9wńĽ˝÷ř?ÎÚpw<küUŞtźëąŰ5ĺ# 9Ü:o#݆rŁwĂÇřňŻĆÉ~q±–ű´o Ŕ ň‡V»)ŁÖ ’¤ňTz}ŕAMŕč©´wC§<§’»ÝFů¨ęÇĎ'zčçČĂşĺ%`D%‰U!†@D(IPóĽˇ{y@Âhň(ä ëU„ٵb©| O@Hwťýé9˘E2,!Zš7­G|"Ňl›Ş˝WsŤÜęđî…ô4‚SRĆ Á©™ä ­R|,RB/^~'Ű;&o‰Űăa-ĽůSťčW•%8‡Ą×íˇS29$ŢĆJÂÍĘ´5ŁłÁďj~ł†˛Kő_Ťš!kŘ&;YMô9Ě`žĆ›iŠ^çK¤«7ČŔG›@ŘĆ–áüAžšÂ´ sÎAIĹŁ,š2tP™Î¶LÍńWăţĚúi@>¶~ź?dÚĄłşńĆ<@8j[Ë[×DÍNż0}*^«ß/sEÖ&"9+Ř–†đĄŢ˙w;ńˇőĽâ‚űV1§cbHÂŘ'ąŢĺ%ůf˝«7®Ő–pRáIçuUąMF„”÷âžČlnĘ$ÖęŻů'íŐŠ$“<§ŢýŹKéčňűí^ű~dŮ,{HNěL×řůŇŘ×Yw5Ď’÷˛% tůzsgb¦ůČń±ŰŠ’Kom—Ó Ż¸ĎyĚNÍÚúFî„ÔëǨGBŔţu@–{ä°&u˛L~pfş÷ćĚL+Ię6Vë:u™śľç×Ë űËýŻŇfKm^¤Ď, Č ˛řrF`śÝ¬Oč™­'~©+›éꕥXäŔ`6Üý˛Í€aY…H87ŰTşú3H|RH\ĺćb…P B´fJv"ŤZ2Ąs‡Ś=ĂdRRfö=Á¦ëתÂţ©e˙CŻ…Ř ˛_‡Á«Â–ú•u_öběeŻľ‰Ć_%†` ˙™Ňlgżžj‹ŠĚ·‹ŔO4{ĹqÍĺŔ@{ÜGĎ"ľ‚(á:çX°źÄ:„NŻŞx«ń-ńť Ôý+p~q•ů™_§ö§%Ęßľ=:ÖLçŻĚl­ÁČ?hŘzPg1ěťüpđ4™Q›ŹHwÁŔyFxýqŐ•ú<ůĚó}벋ŻÉęŞ;mDLŢÉ"-,Aé`˘ůóËcf*Řá• î<čď uŠH'¦6ßIH—ĺ ÷ʶˇěd)öČ „©XcÁ‰Dh?™ Ŕ˘’^F4ĆLżČ/3˙©@TÎ{˘‰9qşbÖfÍRąľaâ<“wĐPĚ×Á9{,ŔĄh'™Ě6¦;Cę/˙6­ćÍÁŚŚŕSM…Ő­“‰Őa+Šć~wkbš¶dÎŰűŇ^%U=&Úâ7~ř\’łVśOQkv…™‰fqhiçbĂJ”Vŕ nX§6đäI«(˘ t‚ßSŹĐ.(ŕg•«Xčp`ép›°śň2ÄŐ{ę9éQ*Uźynk벪—tž[Ç~"tEť+„řV]d˝ć*Ň50 ńÜÎëĺđdŚ3W·¬t„AڎŁ?ůݱüé±-*3‰ëĆĆťŁ<±D)Ć«YJŘ1Qň HŔSłÜtćĹ8]ŕg˙“ŮŁÁßH>–<‰ďjôkĺŹŮ 37YnŁFč·„¸ç$ D;Ť»č& ÔCWłµÄěëȸuŽö–›‡` sç)Ě܉‚čĺN`~˝ 25 Iv@kĄ>@… ,8ž’Őp’R€ĎŘP §K’ő@Fg^ieA°‰µŔŁ%đtz<I7Y«ţ«UćŐW2äŢÁ™;Fs[ ¨ĄŁAüŃýŚÖ!ůHهšŁIŠ# E Yř2’aJ$¬?§źŤ`Ë1CŘ?Üš?Ĺ+@WÎţě,G‡j  †şĄ`5Đ˝X5~.J>–X+É,*§Uöĺ}ŻfrlĂđŐă'ýzţüě˝ĺ% caę壪Ýć:Ţă±:D§rPĹO7X1âWT­1|wÍŘŐßOą«UŤ˙k <üh8†=n'Ô^‡głeÍţX rşÔr€dĹ›qĹ) $Î 9¸FFňAŢS®×Yr 7÷•$®>-Q"B—wÁÜĘ6ţT^ôĺĎ,9!ąb8žú `Šd'\Řćjű9P¡ţa˶ÂŘ0"=ň’{ÄJÉz8ü'ĆÍr\Y#ĺ`s´0([ľőA@ítŮŞDąŠÓíę[‘×KüŚł›e5N RpS7˘ţ4z\ĺ^E°‡2YćEÚ™#4 ř"ď¤~ĚH|pĂPnQꉱ•µ›ČlŻć [†E©W Ůx4äoůÉŠŽĺ´ęNžHąšĐŽrtňUY”Löai‘" ąWŐU—ŞÄ*ůRľyö±Ψձś&ĐQ{q”Ë臖‡Ł ˝â%Ů>aËËgĺ‡Ä żs.;ş.±©[."K9ô+±\`$šÚĽ¦s¦OŤęűňĺq†ÓŮ>©÷ÝóŠVµĘ.JäqÂRčžnhÜP&‡˘śŤE‡śbE€ă GEަăď¸*ţpĐ0˝ sÜȆŞôë8dÖc!EáßETÁPÁč…F19ôy‹`ɮ̗98˛…Ö*.„‘:ŐscN{Y1#(P/çóóąpŐYy,Ň} iOĽÉ8bCÚó`»™ňÝaĂźŮC„ʡ3!;DiťŮš5$fÝ/–éa‡LR$éÍŁ…ľˇŘ#ńp‚ ŤC=ď6ś1&5P5bňÉ…żLĽŇZäYŻű‘Ŕ”†1téRT(˙żÎĹÄŠYÚÁŔDâeJ$Ń‚÷űašbâ]¬é/`ła˘XEůŢQőѢ$B,®Pf2śS˙ŁÁfBÖť Dw9éK#3Îů{ٍKPSHx¦/ÄĐ×~Ěš¤ˇă o†ÓĆŃQ`¨xD˛ů‚@ ´ŤÍ˘áúˇů“§Č=PŤ¦sđl“ź ·žÜHs•«ÖÎŚxćŔ›“y|bbűűB ÇAě€Ř>Äh]@J/ç\˝± ‚` h|€ĐßšŤ+#—břtÜŐ…"y?UIc¤§Ö+ŕU2rE ĄbßKĂ ĆÎş T§ś­$Śe2Cä ©­qEž;Ľ1×Ű(rPl2”gĽlŇčÚgTcdŞňČ„ĺŃ| qa«´@“? č«…Ëłîf  *Ét•Đ´Ŕ„ˇj Gťw&™P˙t™‹‘4ĽÖ:T•ÝĂż„ď\¤ś¸°{Ouďa_#wŐ8ż˘Śřh¨Şü{FŤm.H ń~JçţVŤÔ<ZQg\U>đKÓ‘´ÄC˝/énFěÚ‚)I˛´µ˘@ĄN—k8±úQčoJsk˙ŽĚĎr±ň"%Řf©Čëmz6‚ŐMvN"r˘ĐŇyF÷Đ@˛fąw@a(„ž¶DŰb¤Â×’:C<4ôČ44@ýBë@<4Č€0ľ¤#ÄJ} ™üf1¤ş2`Ś€(íÉU¸˘B!'¶’kłJ+÷îÁ¨#Ĺ)˙¬|S+lĘs˝‡ń-€‘^h”K qÄ’‰J˙•‡`›•Ąężz466iH®+ë&Zݦߍ|1Ź$b«Ć<$KŔŐžJEˇĚ°˝Ř*ůCĚc&­ČZ—óŞqĐÄřĆIÜž‘VÚßĹg¨ČĂ_YU ´ŃöˇĆ$®çÉ]Ęlpż/ éä|ç„­ěMŚÚ:”ťňXΕy=ŕßN‰đąĽŻ Ôsó0'"G—ůýw™ä‘@T<†aÓ6g:?˘¸ŕ0ŤĺIĄÎżpÎó*SŞ+c±ŢáŤ2N€áł"+ŘÚĽŘZ? 6p4&ó#î9` 'Ąŕ9‘áYk>+Š8¸W:¤¸&üW:¨Ę@ĽâP `Ż•…†H<öDóĆ8 'ʬMxe—ˇ¬†×ÍŹÍńrSh“ăˇM#Cä B6A˝~Üb››MhXĽÇŮ憦ŘŮxXC‡2›#Źm0Źŕš4XÇM˝ĺĂ?ś<:ÍÄ %¤'ôĂ`˘Áoöý€Ř@lřˇĚG˙ 7ĘËS颭Ů$6”c2u“Ń5ŹšˇĄż„ߍzMpŘ[ĆiZݎóÉ˙N[ú2®ó›~®FxŹ1€«ţâ}b€úäľy€ä”)Z`îx"éŞ%\*‹7ślb ×sNđ\Mä™ó¸Oś]ÍŐű‹přŇP±Ę‰«+Š@ü/ܡÇŇ@·[ű°íX§|&sÁçČ?j›,Řúśyß ¦ 9mŇĹ/ëN‚zKf©XťÇÖW>qĂAŹÄĐ„™Vt —MypĽ.H4Ń(Á–3臖 N,‡,BŁ,žܔټŐ´+ď Ĺf#˘-C4Ů„›.íPĹ€ ´€ÄoűzĺQZRÔ 7ŐsĐŹ_8'śEšµ@¨ýý&¨‰Łdż'¬l ěnú`÷=Ľö˘ć~† í­Qk]†Ë†ÚŇ~u?]Gxč”-Ίi{¨  3ř{ĽĆ j–0‡Ô|;Ś Ś2Ď=)ýďűŽ5ňÜ6»A7Ôt‹,bôŽv˛žbŕ}ŰżUxSt#ŠĘEµ=¨¬·ś!b&Á5(îbŞ&1PŢ:cĎÓ9¬ăëĚ.÷Ă)žăT»˘Î˙ź¦Ź ׌mš—⎊íyˇí9•H¨~(N§÷@©%gâyôŻńB¦QśĚazűŁ7hdůzܨ—9*â0!ćŐ‹ÝŤ@Ě™ń{+AŞÓţâć}ä)(ĹáÁ%7ě´5„Â[R•Ń{ˇÝˇTÂ8˝ ’E/™c š€—†*Ű`éOĆ•â.uF}ř™®0ˇ\´U2e5ßĹÔNlÇUĆ($ÖŚ7B–ťŚ?T¨Óͱn@‚A…02ž(Ó \É„)ł‡—Żí?ÔmÍUhÔ›qĚ)ť}Kř@#QaÇęLNĹX”++ …Îß$şv€Óo¬Gžy0¨°D7č`:©zň!Io< Đ·ĄÚáz†výÁ[9éMA Ŕ÷D čťĎDÂKšĆáÚ ć@Éęظ=‘í}Žd‘€˘¶¨úyť¬PńVřĂLĂB†·űbşJ¤­d"†´¨P’1Ô©ýAĎďŚŇl3Áeđ( UUP6`ţOÚÖ[“mm·µ$kázĎ#GCjŞ”¶ íÖ­"Ň6…«‚RşWT \BĽUş*¨ťBPp]Ä‹ "33`E÷żł˝o9ď·ŰQ˛‚RĎ$ń:­Ö­Ř$QŤí١nkµM_Ź­˛öí©˛IzÝŽ%Šľ¦ÄÉjd'Kä’ľxŇĹŽ'ľťHŕřÍ †H†Ŕ ¬yÝ÷kó<ŻŐU^ŰÖÖuĆX8vJŚRÓ”BJ„Ě`gϬ?y€i˙ĆüĎxuăřQ"ĽřŇúŇJ¬»•d叏Vă_Ź ,Ń$ý/y6iŤ!)†¬,fĆEś‡ 'b§o(BRĢHÚ#Eµą‚ˇČź§ť0‘ŘŔ‰z=úŕŰQN»UŠČJJââ1ź&Чrx)o·;z'ĽťK—˛ă¤ťžőáĽQŽ â ’Gîŕ@Ź mćPč: DĺĽK¨wJŮ×Brj€\($çÓj0ż§A•S[ĐśÂrTňRuíÂߢs˝ŠX•Ľ˝¨—n/ᣎ§ŕ4,V&Vřú1Ä|Ě(‡ż“ +^q™)M˝ńĆÇ……I(Ů€ŁHž™g:Ó2'ĎU|&q/=–0ĺËep…p X`áAkz ”‰ĺá–Ą5 ÷š5-3*a Ä0ČZP ťc řn ˛_üMR7ÔÝ~łA$^1ÄNŔ¸nú&Pá JÝbiÚŞÁăĹđE#Ŕ[›%ÁRbŽhűl$»R,ąáŤC[†Ërč8tÉM Ń ˙Z ‡rĂęX&B |B1Z†ĺ {ó‡ňb ećýsRçĂś,§" ą6˘_-UY_ťX†ĺ˘G˝5…YăđÁ#GŻ˘´ýZš5ämE ˙©ÁÓJ˛dA‰LŰ¨Š¦p9¸ěŞBHűFcáăM‰‚¤‹h łÎBYNĚJ¨ž‰ei÷çĄX¨)(˝Í)$ČS)­{€>žŇłčłš1o5ŠF Đ•Ŕ ôÔ2Zˇ.:;źíŠ]čcĄ%4n9 C‰#ę— 4•ž^˘ ~kLhŮ ¨Bš#`hÂŰ™¨ŠŇ»AQ…>3;ŁľĆžqŐăů¬¦Đ|?䬟Ą*m8 í°úšŘŁoZ]ăşĺž˘`iH9˙ůŰeçOŃç4~lx]ť˛ }ĽMΤ=ľU75iĽş‚)ęDżK9íXBÚ@.XNá4>µâ>ĽăťGÓ†Đ$˛G0;śěç“R/ŢGvsĹplęâ÷>äÖđ®ÔŢs FÎTł0ó Đ"nZĐđ/Ţ·ă1Ô&KAÓż¦"?!¤Ĺ[ó¦j«â2 %Áj+~HČ2AQĐú8š„.u¨•ʤ)^¶€ ˛ź!»„™l €áÜúé)+ü @ąYŞ7U˛2žíŕtX”ŹŚIý[*3“[N ř’Z`t‚ ”š,ćŞĺćĐjč6x‚‰™ …AMń€ĎÔúř [„áĂA;ü&чKžh«ÖŤí)Ş6óć@Ü´w©Z‹ł7B˙âd\ °żí«p32‡)6˛˝:Y_>Y¦N´ăŕ“ŕl>ó_—R=e\˛/Ď4ĺ:u r1pL««§řrśMń7ĹĚŔ1ŔĘLý¤kÚOý=O®„śÇţF3ˇ~©Á WšT;ăđćÉĂi'ąÖŕ…B1zÁÔ= ÎŽÄa:w®–šĹ tgĽ(S m°>bäEO;ş. ~›qdxŃßčAC«—˛W Ç…UX€ }Né9č!“żb% ¨Š¶˙T3OZ˛Ô¦ÎÁ)OÜÔnt KĂg’C^cźTŰ HćŹŐřÎ@c˙âĘM”ŹńĐýu1(ém€iŠvÚ-/"Ôč2Űó7ŢmZŞ/$Äi§[S”ú ś&>‹ ¬ú°đ4v,űúf•בőăÉ’ÔUU¬‹’$B.ř9jáŐĹčÚŞL ëLl2צ.˘Ń XL (Ř”bŘ U&rmú"Ž(í>:(ĄH€¶nÝyŁ0‹ŘżL@‡B\ś…YúŐ>˝­uZLB[ÚȗęŔ;H  ű`®µŽ °,ŇśČŃźáÎi骯Tqř”…§Jć“ Ľţ öOJh˙˱řĄKŮáÖ_\´Ń÷Ź­ěĎ1Ía;»S#-N#j”Á˘Ă5jđÁˇ"A…&@ĂPť‚|v…:ŽŹc˛DTeűĽęç˛WąF`Ş˛Ĺ˛®‚7?˛)° r™6fňxĽ¬äŐwěfô˙ôG̤Śöáü±3îň$”ÝÔPŔ?=PĺŁR±¦* Še"Ŕ ¬öM¶żëě9 ¨¨Äf‘ ű':zd¶««…đ‚#űŚÔâ }-ľ¤Č×Ořë‚a¬‚ŹĐČ X‰¶Íží€v_J˘Ź¨¦™ďä\Îö…§Ň–—Ő5˙Â<Ľ2hKKlú¶LNţş$˛?ád m Ł••*SjćH ÜhpĐ{&‘ř‡˘u+§©ő…É|Đ*ˇ6©>ť¶Łnđ}aĂ]ćFčVř ĘO×FĂ1‰ň–ż:€ĐµáqŢBmĄleő·µulŽO1erɢÔIăŻxźęĘŰ: Qs>)şhŐ}v•»Ľ&ň˘f)ôzë{+VX ®Ś]ôíř­đUî™gą(LU1EŘx¤řIŹţj=Q-¶4čőtŃBîYd†Ł^ô4L#ŁÂ’ű-ak;ő?J`}ş%ţ»Äósˇ,˝Äź6Žäóu+b6›Y}ŇŃŤö–,kŹGÖOq=†+ł1Ěű5gç¬aÇĐdlúŞíőż»_×A7ßŮ-ůé˘ęXq÷qQíT©ńăř¨ń:ô ‡ m&úů¨¤şâžśu•Xł# Eź^¸1ŕŽR4—|« 7 J<@¬Ńč_SČPqÔ5T†:úŘAMz«ÜŇŕ"xTl–“Řáá ~®-ߪE[ŕĘFľ› §] X ă`ă9cy Ą §ßµ˙ŇĎť®J=+EX“+Ľ@ٰ ˝Ĺě ç‡Öëń¨"í•n@>ÔŤZ‡Ńm2°Q ţ˘ý79Ź÷ňŠÔ<Á&(R}r&µU˛ŠfěMĹÖMUŕî»â‡¤ň‰\ c^ÜÖRɰ'ňÍž2LôAłţĺ]ŻU„– ž9”Ż'Ťź@0ö‰Eă 0˘Ř9Đ$…_ CĚ~­‡‹\ęG‡‹#-níČĎą)IîAć±­.ŚmHś_sŠ Sʦ{á>Y×Ć%7­gjşâ޲[„!뺬/ĄÎ{1“)Sŕbú™çÚĄ™=hĘdíšň°Ň®-!Ó=YÍóŇcíË÷âýĽ‹Ů[}ŠO6)ŇĐ»…Űčĺ @’1°†{m-a:­őµ-·Ž @Źc=µDŁŽCÇôĄŮý¦CÖ‘ĽGٵf,”25’<útµšó¬ ‡ŹJ_-éHµ®Úٵ¦ŢKč[u7ˇÄ6;×w@`ÜŚ"żI)BčRšŞv3 GŐŘRi+)»pđ™2źžńŃĄţŽÇ»ó1ŘĘ®3™ n?ôÇłü= %:Poq®á)ÔJ0+9‡{pÚ˛­ămFHUo%vÓŻmů°ÁSŔ[i˝ŻgF¬ŻrÄŠ®?Dń•ă‘Č řʞú2†Á·Ľţˇb”_ ˛5&Ä‹”Îl3BrŃwzX-2>‰·UݰČç*":©s9ş˝˘Ěĺ÷uଫ©löęďĺ+‹¬1ŘU‰_ů$fÖG@c$TŚÍO<۶^¤Y^Ćmŕ™8)†üŚ-—‡(š4 ód¦Ô*7S®ËĎľ¨ÎŰ6 ´*(ş‹űcąH6ž7ąŽ˝Ô€ŁÂ[ěĎvŔ.Ť }BÝŰ™) RAGě_W°bűä»ĹÔ0_HíAJŔ;¤ÎG=đ:ó˝Ń±ĆNâWáʇPrŔ~¬:c¬—AĆú1ŔHO9=¬2–4~fâ~Ѭ5é˙iC*ârˇ<ř’ô!=˘±şČśd\Řk¨Ž=^R,A÷–fˇśÁáŮŹŘď VuÚ ü–śŐthéĺŹâ—Ř´˛GUĎ>ąˇýžGSŠŔĽçłÝĎ( *‘ é/Ď0<„‹Š›ĂŻű¨<8*ČÔłE„xDş…"®o->äSĽu9ÔZÁüîVę­ßł{ %#ˇm7±ŽWĐ\&0U˛ŕgPčލ˙ş—”äż„˘-žÄ„x[ZŔv…¬Hť’d’2xĐ­5G u7őčŕaßW».QŇ®—Ç슽JłAm¨x›Ąm>´U™˝°W/T̵{9Za#>rEĽj«ţ8Ľ»,Ë5šň+Ŕ\˛FÄĽć˝_őj‰&ŔëW\ ;[Lc· Á ëYf<őˇVŞÍôx®TŹNpćŤJLe˘Ŕc⧠߲nÇ@DI«ĘDh X«…l兀:«!Á jÎ^łdŰ­ŚXL ;łľÔV ş'Ĺśf&ąÚMÖŃÂi^FÁé&žă–ń)2Ťi†Â(Gäs#ÁfËo­Bś SŠn(P†¨’ńT±ÜF6Ú2*É#¸ÂŻĄů©_N°,·ĺĚžU8•S“jzW™ĄWö¨!ö•Žć’;Cmă3c`FňM—bŚčh˘žÂ®TŻ@±EčZę ;KŹ÷in9űšą/Úm—Ć{'Dyś>ÁfLN%Áß01dF'AeulBđ»ý‚u>>q†&NýAÍ€% H»ăľ˘I\:1JÚR«ÝǰĄřŃĐż7oî‚JcŇ] sô:Ť".čć3ęQf¦îáGűäÖdUZ«áă´cö壔3JĐtí<»Ľkxô$Ę–Čć ¦]HK?ŇŇÔ=qďkÚ”°F·˛µ­d§ ¸ő—ÇS/«ËvÇzÇĄmąnŘţ‰hşXôÜ|Ýúcéč‘–—z~}ýůpjµV©rŕô}=?r"U‹qG?y„¦n1’Ďź»Ć,ÚŠóŃ—×Ü…óDBĄáťfÖěE‡ÜDeŘصÜ3亨#™É‰€D:´âľą÷Ő‚č JŽ]´·ä,˙TNCý_ú„ Z®źo6d?Óg«LeĄMqĹ\ĄD×Úú‹Ę¬+I‚5pg\đ˘gĆą†‚ńxÖ«E"dď.1°X0l»BqŮâj«lÜŢĆHą»úÂB,oaîŢ•j2ôĆy‡´îYŔ¸gĆ✊~ćÉ"—Ŕ ކ¤ “©śŽĐC„Ă 3ýx†~I¬’”ú…ĘyUľökQ ĄçŚy$P^E+ X8Dţ đ˝˝Ę%`™! $iá? „®VeK?ĘĐ ď´ďÎÜĺQ!—xµŁ4HJśÜ;··LóÝ@ňŚBL®DŚbJ.r)¸3Zý›©2’š"f+ŻXS5ŕ-„ÚĂčŮŢ$”™są‹j/ß T‚q>Ęx°ÇKź/{Ürń‘6`cÂŔ>ćiůßźŇI‰µĄčLö'NĐĺCąůžĐ·Ĺ q”|;¤DJË­âHü\Ý•Ť‰Ł§f‘d¦í­gÓÄxsYúx1¶ó¨ĽFĎjĂSJ*9'AİŽ2Gë˙űÝ%7™§¤€9ř,j»Ĺ»›xcŐYڏ›ˇnŚxÉä]r×3‹Ś^ŕ€V^Ľd“ʸi@öŚúEŽ:đĚ»“L \@<D "xČlĆ⍳¶ˇ¬2%řqH•xVOt‘e_Nĺ¤ ÜŔŠFş6IićY0GĺŤ]ŮXk4I0}…HN& p?©Ĺ•°eHŁ(I*ł˝DŮŁ«F;¤–pTוd ľg›ď -6hQűS+™v_¸řäÎÍŚÉŰ®ňe´qĄ¶„Šůř3Ń3z)KĆ1“w’Ůć3ÖéĎXYÝhfčĎŃŢÍř^]gőů….ŢĄeňwMřG_ĽVłĆ$rgÍ˙}h‰°±)Ľ(¤Ń}Döp‡HŻţÖŚfo‘ŤŕVIu&=řY-0ÚŞgŮ*śý9éâ„˙Cń'Ľ•łżŘ ôÜŽ!B"DŔüCeř„!B"DB„!D"„!B"DB„!D"„!B˙;¨ub˙§…í ďyɢQoµux»R*ß0…wć6BWsT1ö›ÍóŃQxßć*şřľ€dÄ˙‚ŠGJĐ*cSfM!2ĺę”1S1[ňQľ«ěç˝áVĎ=ĺĎ÷tş:ŠđŚ^b–˙']Íżh…˙ÄÖé‘ CF*5čy¸ÇgŃ×cYyÁç1Řđ…~wÁg2Řř8Ü8čٸÇgé›˝őâĚč1zŚí6¶™ŚzWĎěôĘŰcg11zśí‹łęČwĐávđj |lÇ貶5Î豹Çg "1zFîĆYÉ{Ś–’˛qŁgÎ>™6ůć ÎS6čäŢs†ěס0ůnFŚgt„ý;;#3¸$€ŹeaßĚfĚÔ ĎHČ 9É=#Ę3ڰĚři™ńŹů0nżNĚdˇ0*č˛hÄd%źŕĘŻÁĚĘš„ţ®aúˆ ě˙vĂýEĂĹv„˙µaýµĂĄwýkĂňë Ăâsô. F’Q¤®&iM¦đÝ8Ť|Â,ßý¦âc'M#Ú0ą2Ó­ŽîKâRgđż<—@o–żZAl‚u1…Ů,+dşYfłY 6ś.łY ćhb´Y –ž6µY &PgÝ,˝ÔZ7K`~ÍŁ7K`ŚM¤6‹ÁÚ›Im–ŮpνYr*¬Y:l¤Ţ˛YvŃIčf.¬˛łÔÍ]…§ŕšKĂ–žŁką–©Um™†Şem›†–ŞoNĂ‹ŐĘ6OĂź{YYFąÔBă†÷‹ë}Ćy_×ďřmHůĽŽ?~7qň ;`d;`dÇ8łă4ĚÓ8{Śă01NĂě8ŤłÇ4ă8ĚŚÓ0{Năě1ŤĂÇ8łă4ĚÓ8{Śă01NĂě8Ťvżk§#`0^ŰůB†ŤÔâ€ýýŘ‘6NEơBŕ貨Qśö…w—šĎ=f§"ăS÷řI{ĎĹîóŇö•*ONw“ˇĺUY×®ćMŘH;öŃĄťßd#2Ů{i1ţě˛[·śŻł]}}ęU«žą–dŠ,{5¨U´ŢźŤúg×m´mĽ0´‘7íĽÎ«Ťřjý«×^·oÁ”#{Űl.ŃW»m¶mTÚ6o·EÖmúď~ţŠĆX±wޓљűm®}TÖ­iá[¸ž-Y›ăý¸¤ ·čË-ß~ĽoVšŐ*škćĺ[_yaMçöąÄ’¦[OčzťĚąs›/´µëŮşŽ,$óµ[ÝřAfîś Ţ"‹7ÍťxŢŠkÝ€Y˝ő}}Ep`xA÷ľE›oţţ¬ďß"ĆoŇÓBâ‰tM^ErŻ“\1˝#¶¬uS\ä@éQŔE/đ6拪ŕ‚7Żz—*˛~ý†HíľÚř.Â9űEYpÂĄťqź*żř=}[8~ń(úÜđ,4gp‹á‡ŢůßuE„°aŻŢöNV+ÜÖ.Z#¸â{§(*YZƬHňʰkÓ.B‹/…ů±Ć._¸(6ŢcÇżĘv¬:{';ĐCË‚tĐă­q€ ő9€Ť –D~'ÂGVÎ’ST©˛˛7kŃGäŁćţÍ7K9ص~˘‹ÉĘ­N?ÓŽtҵ€˝t9(›^ʦZŢ[Ű[{Ĺf±wŰŁ»u·@ý-RO… Ň¦Ś bAąËĺ˘hąË'ůee‹9ăĹ—ćŻ.«¬ĎëÄĚv3׼ŇÖţő›ob{YĘ>çśák‘C¤šź±sČčůȇřů(‡»îĚ6‚WŻAÉňvGIÄĐ#G˘č#âč#$"é‘#Ąô飢é#$âę##"ő‘ö%}Ž\P˝»˝vhYČú¨‰ďHüäm}˛fDď®#®ë7~^äá|}ÔD…}¶nĆ’"Ő;¸rĘ5ůě_8ű0—ů^\~Ež‡Ę|vŽóµ®:wlňť]áyÚoÎ™Ö ÇşW/5ĎQ++ŘÝđČúË=˝â§ăĽŹňY\ţ–˝Ő÷_ä…GňcÄ]/g_Żúë(|rŃ]yä˛öňăuRQ™ť9˝7rşH!żËÚká¶˝‘iŐË ZęE¶çzvéî—4-ń—ÝbŁÔµá)¶ţĽ[Íé‘D´%X8&\:Žú$ăZp.o_ĆÄý¶ş©Ý”nc7¨ÜZ[öj 7i7óí÷Śëą…ľµßşpt¸śňěçÖUǨ>J8‰ŰŔe5Ž'<[í«%ř¸żp?–-Ý•ľĄ‚Ä˝ôôźá4á÷f©ß'Hĺşn…—ÓÄűć|[hPʞaËáJ7·qN®Áűá^ÜĚ4® lý ¶^1¶aş(a=ZÎb¶ae‡ÄŘóđaĄáÇ8اźůŕ˙9¦ö_Şs5în cŻ3…2q÷‡3®×Ő· j>ä&Ó­˙OlNŻ·ŞŽ[ß?#ÜŹ5|lÇă řŻ’Łů¶#^×ü‚°c±Äź ęďSđq_ÇhüUůëřű)áŻđċ׳z‹őGzÖ…ý»n)č#O?va¨úB_ č1Ç’Ó!¸^Çoă’đ;ÜĄ ŢÚ \1`$o“ŞŽżm3nÍŘńŢ÷µ˙šá3Ű]E˙ÜJQŚęŰŚfßXłŇťĚ‚qĎ›ŤKk´ =kŃń¤¬Łł¸=Şo¤ęŞ“R‡©ĚŚŤ@Űc˝J›i8ß/žH'f!xÇ÷ ĐľŹĹá´íÇ6<ŔvíąŞl=Žd붇ÉX÷}#ĹÖş‡‘Ô±î¨nlŞÎ%inź”ČŇÎć|"u;SaA¶ťó&,¶4KÉ"†C źX„÷†HŔĘď’=ŤL«Ę.s ¨`¶R˘‡đż/ďß ę"«9,†HÇÜ v¬;Ő“…/ ECVŤHµ ˇ‚,M˛˛e7H° mł_˝'Céąm05#´”:•µV"¨%wë;YÖ‚ßV6ŢAj 9p„Ă?N´d“)É9|˘Ů¦âfó᳎JLÖ%QŞ)˛GŽšÍ§AŐ ·g’n‘tK„Q1—äî±UšB_ŔWÉĄ’0(˘÷=ÎŰÝA ?Î áćŽůř¬zń^ÜÇăĚ+Łřâ ôäËŞ)K˘qiͨüW.5bË AćÂ+=3·¶[ÖŁ=mž¶mËŘŚÂ^rú«±ŰîE¸ä`PW\ŚÉ¶X†[^µHK' łQůF×QŐą:f"2—đ<N :ĂR‡>n[Ď^đ´ĘÖ¸‹cĽŕś#çëV}ůńqN´ę{ź˛pËw/6ě!dyzM«Ź7IKŢĽ7Ă®Úzâ|Ę8OßVŰ,ş'ęzW?;ˇ×ńĽă$ä}S§čŚvcó±lŕpľn >_ŰÂPąmŰѤGę–Ą ˘ýŚé.îŻ9ÇňŘČą:ţHR¶3Eęs’Š«z?˛ zú±ňüěĺaŠv˝sť_ú˘•š ŚXÇÚäVÎgŔ„1l’8ĂOŁë|ĺćĺ‰óäĐYÖĽ/ś†^đ Ţ ŤOTé"7Ňk5Ô?-#Xj´K-¬*)‹‚ö,âŤ8B¦ ܆6]¦´rýwYQašf4EŤWH—sŮişČŮr¶¸áä˝›cĄ«ť!(‰5şrvlâŘiĹdâň¦JůÓ’ ±˘ F5_TÚNśćű6<Ľ%*;p‡»Ş!Ňj¬N»_¬w+6^ °Eżűźhî~­FŮó]N&÷1mYË Ł`ˇGO1xîÜÖ¤§ŐĚft#šĎ™¨ż§3ëX1YűŢŠ.‘Ça-Ók),•+pú5‚Î(§ŢŇYŘŮĎŔ®çM‚ő° ľ Ô|’Ö¶>QNsß †ro+#°ulâÔ11®4V“ŞűYfG ś-Dô1—Űb¦4üdH{9gëç»¨Ź‹áH2dyť¬.GC ÇX’E1TMŢ.Ca`y럀‹N]jAicńe>U¦‹R¨ú(§vŻÄAŔ°Î‡M1™„F¨h‡?p ‡ś`Ťµ:«Áń°ŕâ‚'ň>H-[|ç:ý\JµńFý*5Ô[…¨Î"ŁKc<őÁ–FČ‚÷/ă˙âČQ˛[ÂË­AĎ´c3“Lĺą8čĺ‘2ŚĹűÖTŢĂ™”/Öµô‚ŘHEYĐéÓJďś·oęlĐ"7Ęwü</P«Čć–·Ü3`ó4Z%ÜÖ?±‘ŘÜ€pů«PĐ…Ë B*,ŚűD>„0¶Y 7F›Ç{3J«ţ~”đ1,`ęĽöB©˙Ëo{Ą2qÄjžg˛ÎtńádâŞ{ň$‚vĄJÁĚżeFÎÎ0¬M (q`Â]ei *Â4ŽP$5Á#ĂĐ+`€Ĺ Uő%Í„Öpš [†…Fqp”Ň^JĽs[H ×µ=JĺYÉC®A Ó7P-!QşĂ0DţéCA;źč®¨˛Ý5ö ë–5T”{ĄEo żž1<­Ą·kŃë”J× /0%—wK°îŁä˛ců[ä€z][×ęnIĄóÂ)…^¤Íµ„}ˇźź2_ν g°y7ň •&ó$¬á•Đßý±–™Ŕł$EŚş¤<źfĄ5ÉŹ©Ž!űâ/€58nC­h3ËZĂPyga°ÁRąźÖ Ö ÖµS$˝Ël”Ď[eFRZ\c00|«˛+KŔĆn'\EÂLĘy/¸9ĽYšĂĂ@-çŰťţŔPËľ ˙éř-6[f´Yž™đn¨©Áő˝DKžëĎ1N¸Ž‰­í€±®ŞÖ€(f4"ĚS64Ëjg ńéťÎD¨•Us‚±H<\*4]9đ†Q¦ůJćÖµái-ă!‡:ŤćufűT?ČÎrçGä<Č1Í˝ßY$Ů|ę–Ąnaˇ\Ęo&SŹz—î€&•wÔÔÝ„oˇťO¶¨.3G#kfřC&,Yrň˘F$©Ë®rsĄËÓßMóp—ţÍݱ ţÍÜ ‰…˛ť ­|żLÉ}+;;ĐČë—l7ő`„vôçËěaCÂX¶_ŔhYÔł‚üĘb¸PjŚĆAÂĚŔúP켅OuTDsHáćäÂQÜYb€,IE‚S¤s“ %+mśO-âŤřcHČÄĘVłŻŚiDn‰’b…Zń4H‡{‚4RHâÄ'ĐeŘ RČĐ•–ąŹEaşX‚”™ŚŠ‚}T«2ĚŻ“ŐŠ‚j˘2˝WÝ–F, *Ż+yn8[ €5& 1ú­đSýöŐĽ?Şm¨ŽÁŽ4†ć`řiȰ}ę%Ř“‘Rţě3 9ó`‹Ć»vPѧ-6ázϱ0E,O “”Eśľb®ôEĹé¤]ő(yü´W.ţ X?mÔżRäéţ›··Áyµců{p”“<»·ěśŢ1Ąá!BQ˝YŐ?x~éPŃľ©ÍjC©ăÉŔĺ®NÖVd1pżC]jB‘Ľú4s‡€ĚŮ uµDľ6ćŻzľc¶pů`h™ Š˙ąPCƔݞŮÎť˝Ů2/żýIťČë.%ľřs«ůćOt»4°öI[}ËÍsBÚ€]óřăÄ a)łB Šl0bŁO¶Sž´×AR9bWӞߝШ]!ׄŘá¤Ă…¦)ĺ¤Ř!_ć} IĐYĚüşfjőĽRF§{بPDą„|Ę S— ’c»>–‰칸Ľyů~ŢľŚż[ľ*Aî¨uTuxf>Tß ß6‰!„|Ü Î0~đż,j ·îK8ë7A|ÄÖHL•«@ŤLŻ6 ‰Ć–ozď¶;Ř1<`żčfP«¬ěřŚúÄ·ÇĂi$|临m~$ęgÚ]I}©wă«ňĆő’űş¸ăŔĽÇŻw:íz†ĺÇÄÜ•śźŻŃDŃzđÂixľeżĂŁĽ‰¨é|éÔX–ŤŰ3¨µČuŻlWýęţźWéćĐ ‡$¤zâ(‚f" ´ĺŘĂÝÁ 7Ióč­ů‹Ţ7—ĽçŽŹĎ9Ď@ţ |űz’”˛Ô¸Ď?ć1 Äx‘"^<.K€@ąˇ"%DĹŹPµOE€¬Í_śÎwâ±X™»đ`ě€9ů™X”>M"=ső¶= ŤÁ×K–=ŞĂě˛8=D·fl…ö| U#‹©q×ěűq’Ćďâ2ňůą,łáŽBęľ&5*Txo$ ­" ”$(ĺS «3a»µáŐg*IĐZ„2 ŕŻôŁőâ§“ ‘bîći"‘™×rBa3őÜ4OH¨6@ŽŻžăµ)»`”ř.ŁK:ŃŕÜäâń’G†ž_ý»í˘µ&…”gł/ŚLőŢŔńËĹŐ´EśÝŻLpô3d?‡kíĹŐ†M˙^ůÂŻ`xćLfô2¨a!ĂŠź$€Ńض|dRŽLÄΙ" ×R’y7Ę;D1Bqębě1ł©^Ú@§™ťŢߢ)±…Ů ‚)U†„R‰Q "`,EÎ#¸Í‚gpů¬źAŃčvÔ7",< ‡öpńÂęĆďË@dŢ)U&ŘÚw ´flĄśWw–^¶ ě¶N¤O“G ˝}ń¸ňÍ]w~ŁÔRľřJ»=\2Ĺ'ľ5IĘăĹĺ ąss¸6(ĺbŽé˝ďéĎfuŢË ˇb48Y3ڎ–O|”8¶k®J“Í·ýx—» €?{U‡˙ć…kÁąĂ´d:÷ůÁń̡xTŚ˝ŕ‘Wďí5 }‰ZŻ——SÔlň©+(fČO+D? í‰úöÍB>źýëAYňŐ Ę7ćm—uşWµ„w4Z5?oäł,‹ö}J¦Ś¦ť#¸ăŇ…ÄŠą=»˝8«7»Ű·wVë¨oěÎ;™óFŤ#3ÜÎľ ŤT¬’Z"ąůѬ•J &51®sëŻ_tÔĹB: }VW&„NeAŐâw˛h§U›rb`ÖÜË\$D%XDSOÜ:ôYf|)TżßÎüĘHuo'Ţ8ś«ś˙¶ľ˙Hü >°ç:_$ÝoŠ×Ńčĺ˙_˘_oO’O< ň”/Ég•źóŢč‡uľ+GSý9Űëźż ôŻu¬›ű9ľľ(×…·HËY?ńÇbżĎťOǶö7ź¬nä‰wâ Ë2ô˙{ŢÝéÍôNýĆű‡ňűü˙Qy$úśkxC˙Ď=¶âÖE~úIň\埏ó/ňoor•ţĆo€KŽ}»5 ş@+W¸‚JĘ-8‚ýĐ|I*Wš)µX+%Ż™•ŰU×—kX=U੉şprÜÄíu!V °;¦Ž¸Î»ęŰ‹e‚ĺE{nx©Ń)S7#g˝ăd˙qW›z1· ´ËS9n¤·z üó˛ĐfŁr‰VUyeŃńf–yĂ&šĺ˛źa“ŠůNČ*ÝŔžĺR|ŚÜv¤u>†WÖÓ€˛Y2 .ÜGÉłŔŞhV W8Í,IöcţóE~Ş«Şsj㵺F¨ł¶tZDŐŔ*±˛.­:Ô âÔl9°6eřyĺpnäŘ»–Y Ý´˘ÖÍ¦Ł ĺ„V‡Zj ÁőtFɟ«ü¸´‰Ft˙Ci-›ńÄDY2HĐyvRĺJ9™9{µîŘ|óĎđ?«9bčD™+ŧt5wŘ ű­…„ëhŰ\?łT°łJ}©vRŘEĂ Ľ:|ĎŚÇ(Ö§đuÇAťÝ2äi…¬ĚźHč"ĐIk ™ŕ’"üF¸2ÝŇءŇfČ˝¸C5‘‰ë¶#ěA $ ÚŇWâe«çiS0lFŔg>XHŢ(u€¶ŤĚĄ<ŤXđň ăźdĽ->ľäŹ·Ţ"¤Ű˙ Ř…a-Ř7ß`锺ŤW‹©D™ńŘŽĎ2ŕănĐŔąÂĺOÓ­ P!UFđʬ84ť‰ÍŢ-Ą€$+Ăą»©ćC3®«tRnJ ŐĎ|E«¦mBŔJ‘jĆTwś ]gl(&Đł.Q?ĘÎú•}Ö ś^¨\Q8ÂwŤ¶@—ëď´ćß>Ž1Ţ?PgDE ËpškíÚ*„…Rf•%Ŕ<[ĂEŹÉ2šýŘ{×÷Ť„ĹÇÔ“f¬s] ­# (Đ6â×€đ3M”Ź Űâ±ÉÂg);ú«”&~oľsţ}ňú1haŞ<.Yał5Kk°14vU¤Öěa¤f˘f«6šM4hĐ»É)]¨HO|–!3%#©!5. M±ŠAu#źŔ“úWdĆ2ŔX8¨‘¬*ý•ăŤH쵲ffĐ3 ňٲD)[2[‘pÇ€hĚwtř°˙"m!ŤnI¬WĎ‹˛„őjX·.cJp0oج˘F2Zţ$x´ÉšśCÍ ě#bŞ×ăvűĄ‚Ihkl ögdA˛ŽÇU {rçůµÇúÉÔôĆaÎA;H…M Rßa†B5ŕúµDA‹ ›pśĺíáĆ`“0ťˇ6Q“±Üö\>žśç‹ôp ö­áäCöŘŘi™Ňú‚‘1‚A` XbT*¬3…I'®č¶Xtç™m›ÄęőÎSj’ú$ýucéaN×ÄŘaŃ"-s›Ł¤ĆÔî˛×&¦lP 4100ʦ˙¬Óş¸6­4â ˘ YÇDĄŽ ‚O­cîWSťxîĎö i šđ =-%{łK> Š_ur‡ęP«ŕČíaŁ„ťö HđDűČöđw©ŤćRÇQ±n‘ń˝Ý¤ŽOÔ&cfä*ôş¤™5Á&ę~r†Î‹U¶W„H ¤`%„RŚ,Ę8Hô»$Ę XĽę&D™ŕy#ÔÉeH sE/# r}-o8ŔŮ#_Űľۚ 6ň[Ú|Có˙‘»)aün&.„ŽÎXeĎ UşóĄŁ •×9eVÔË×#Bđ)`ů´.Ń“wŔBŁj °ĺ t$ SU(–ĺKä ›ąNár+Bˬô˛ł7é4ăť5łŞ×ŔgĘ&ç…,•µďdvpeĎj JÚŻgAäkm ů€ N ‹l)ýĺ…ÓĽ¬·Ëän-ď+ŻU? ¦‹—-eő˛ŁĂń·8źýŕČýű‚ű_ Z;ݞ8?(x¦˘BŇŰéÖ¨B•ÚpsŕŞŃ«Č<'7ڎ›ŁČ=4mĚíѢ)ĽčlĐ·ŢOxěJšr¸±ÖAˇY'ŚJ8«źhN¶ŐüÚLđ`ĽlÂÚšl3Ú&TăĂńOŘöMJ“H($¦ Ą™™&É)ĚPšŰ¤)vÉĚ(żŃ!”…Ńcçü5˛wT:Ž]úcŐÄR¦jˇżęÎGέ“ě±çOÜžn“ŁUh䆔MK`>‡)™„fpJć/ľŽ´7_†»i«vúć.ÍŠ©vţŹť‡6‡\‰#ýĹŘXÔ!Ä÷w†ż ő¬łá}e!Ńßü„«1±ýąß‰…ÇŠ›r›ňF[ęÜ•×ć8V· cżôžëěp48%/ĆGŇÁŻbl¨óŕő[ăh¦4É$‘˘ÁŤćŃŐ©i—˛[˘6˝|§Vç•!wÁÖ!ýýßći¬ÁţÖPwłLćÍąT˝6ç4“gĐż5×Irjź:5?´nĎÉ Ež=ąҨËKňĹŰSáź |Ŕ§Çő¬‡‰Ą"=Ç0ý`ŹžgëěťÇ‡“Ëůâ ćËu3‚ăňͱW;ęGLÜ\Tµ )š3zN`78đé‰ü>¬·ÂMFawÂ'z}ś±c`ËÁÚŐ%…Ém,h AŹŔŰÎ(•H®Ą:*gţyj㳤ĘĂ‚/ ÁËÔĎŇUcĐ ! é¶ĚWJćň”LÓĂD´ ńŃć€(VDß‘ÚÇE 8s´Čş5Đ|*/ČŮ®°6Ď' χuąaĺi–=q†6_Ě­Ł]čÍßÉAšăŁÂk-ĘňýŞš”9˙Ë6ÖţŚűmónbÚ}—qďţ;q’lbŐNÍŮł˘Ż’ó?ya¤C› ©üËĚxë‹›9~·Ĺ3]ő8âpEť˝—‰ć3gňĐ;ďoł~±Ĺ?ŐČŕôîĘ㙑-Ř™c¦8Jřľ¨¶Ę$hEP‘Ąű " ŻŠĄe"Âv”Ę4<1RËšH‚CÉJv.MÎőKf4`ĆEjňÝý°Y{d=d“Že0S ëŻŔáDö’|Ö-ĺ6‹B;ąKŘآăGř ޤĽčYD …|ô›°«˙h,>q'NAI?ˇ GĆvN’ÇcĹ*b/ˇ·S ‰fčR«q¨ă´^żC~Ť'7Đ»ť~ü»Áą`ź˘÷“iŐŞ‚*§µš žŚ z:$†ýŇY¶3Cta˛:`O01‚†Nš»ű s·°˘Ô1yřu€Íf˛‹Z i‹A]„ŠŠ&±R\o†a,ă8 AĹÎŚ´dE¤ćK#4ÝóEĚšÜEç[h±§OW|Ş Äz˝ŕőFyÁ+ÎÂ&Qm‰l¬ŹźB¤ŔŐ˝]ÎA-*Ëo"!˛uďJHŔ k~’u¶m–Ł=úž‹ľ˝m˝$a3éňwUú{!ł„ČOçľ"1ĄÝ™ĎmŔf_µłD Q>l*ořߌRJm•O´ ŚłľŕńäUŰŽďVOý¦OË/e©D˛ţ´’:?}N«Â!ź‘š”m @Ł‹ksĆ‹zÎ&uŻšQ·îîxtj§îüľŃ7îjfV´Léjő­—˛9sđ4ădÉy•J9ČhI(Öęĺ)ěěĚL^>™!Ü3@6˝Á‡#×<ě‘őLCyę»^o+JŽ.…§»ű~ő FMť}ň^+ß°ł!)ÝňśŮľ»C„QŮË @䲼›5ťćÖ돶pC†Dcś”µ/,YĚöíVęCQŢůŮ·n´ÄeöB ZóŐ1÷»Ů)űŮG+ "hăť Ú\’Ń˝ýř$Srć[1(@Ľ$ÂřÚµ—…Zçe3‰Q:mŰnÖDşbţţL´»KËír٧…±¶ZÜ”ĂȲ~]/Ł!"ĺ•Cß˝ŞâüěŰEDb“#[čŔ" ż¨á+ý›PdĘ|É ]ŠvżiÝî»*–'°qľq·™8Cž™ĐĎÜč*IB‚Ü·»Í–Żv@w-ŮAďĺ5:Ibz4Ô˙ÉĄ˛çá\‘č^j†ÇjŮäç˙őu/J Ńן?{zDĽ¬‰ťsJbťY]ŕ‚WŘţ˘uŢ0ݤYÓ^?<Ź>›Ś’ŢĂäőrňś4ĂGŃ>eU9ďęá(H®|ËĚďËËÁĐâ ë[Ćřńß5Ҧ]$+• tű"pÁtüäeŤX<1+t>LL:i„¶”XňqCDŰÄčĽăâgŹÂX¦«Ł‘îöQ¸Ć”×řńç:#ń-ôąš5«SĚqâ ő˛‹:ő2šµţţ‡ýžŚ" jXśKžŘ®š'k°3Ń˝ŔŢAłr(Řš‘ÓĄFJ54W˘ •f1ŤXŠXEÔ±•S VŤ*ňh\QÎ µŠťQËĎW®ËŘŔ+Pg °ęQ»=´bi0qű‹×RŹŁăíŐPŻŰrF vĘꊚH|Ú'[5$úÚ7DÜ}šŰY۲kĹXŢ·˝¬U]Iýz÷ę›ůŕqŤÉ®đqRÂCLŘ[1K2Ţ”Ň×rĘäšPJ Żâ!Ŕí*w¸¸Ę2Y@Ä}˙Łí·‡wŃĐ®Ź`š„3ţ»°ŁÖË'i‹ ~~ˇÉşŘüAë+MUÔ*ů5ŽđŠ»­Ńb ć/L[o‹·kX{„ÖJ=đ*"Y(níćě_ ťqGŔŤöb  ”ą»´Ýł^‰,ř-Ë;D-¬ŤĎŃ[?•##K•ÝÎS-BEťÚ…z!íĘŔ-^컦35  ő'¶cU·âŠJSCO˛; řńµ…­6ß\0ë^~6ŹfZ”×l>ĚŁŘdŃ ýŐ«n÷Ü2…“NŢĐ?ŁngxËÖ~t}*Aßúâ|Qúű­ >°ç9˝m~yJ-<ŰĆ˙Âxüôź¸LBÔ°Žu-+64+ZţŽ=ÖV®ů»Á¨÷uhÓ†-­ÉXÍHÁD›˘ô»ˇ MićU/µ` C.ĎO^îI}zQŁwxˇoÂËĄ”˧+÷oŢ·T"ŹAđ§6¬ĺTW/kĘs^9Ş~ÝWloO— ë%„¸Ľ7O×ěUíŃŠţmíoZPơ[[ Lu"(L1Ę{‡)koŠÇëo”?Cď`j}=Ę..A“|»X°ż P˛%“c,Żř0®8dáZü‘¨˝~'˛łŹaJ¸›5@–őbŮmßá!Ú ‹9"‘ q#8®iž:îgŽŤďEěS#!xqŃVË(u’'-ďigÍHB|OŞ4Żn,‘MR 7iüók(÷Ťł}ćÁY¸Ľ`kŮŘ÷]“Tţ|ţ€U–yßĐ<ż…DänĘ˙źI7TPf¸Í‹ÓyŽN –Ő"ľ@í¸‡ô¤$ŐŐ*VqrÉVČ҆ŹPS}źKHMxNH ÷†Bťµ!Ą ÖR|şbž4€ż÷ĎLÁYT#Q(Dţ€ĎP°ŘΖÜäÓ^¸C­UĽ§cÔç_QJbˇ$űꙋźÖŮ›é} ˛2ůń Ň6­@ěNö&Ď@ąsQ#ëJ„“-eW$Ő Ů™ Z×h`ş1Ćsuőú…CÖ»Ř.Ŕŕ´ rÁďIýT? lŇTý đh; zޱ ŇďLJ@›Ă~QzÉú!ੵtuG65. ZcV@ýŐÓ…¤*ů»^(•–¸w×Kł%{–ăáÓ;Š%Ť¬ô€ű1¦,%sz\a7ÓĽ­W/Ľ»Ô\m]ę€ÖÝl –6¶Ľµłę:&qł¬ ô*í€NćyW¨8‚Ë6]n\˝Mý‚bcZÔ·,—{ŕ4šŰvL8†Žz—k‚€ü%¦mş{\CřCňëó* Ô^ÜlEʏ úQëȰع×ěLŤ÷•ťt„_×wçúů_Řßŕźü|O!Ű~řëä/ ľČäÓĽŐ(ö˙ays¸˛ĎđB{.UřŔ6—_”ť”ŐJĐ—f´&ÜŽęĹĺ› žôË–ŰÂL·"—âL˝·éŁ©@Ż’ Ö‚ +~ö<_ďĎ%©ßĐz6w,Ŕ×Ö3Cš[ĹÖÍ›˙«Už4lTëW›m쎲‡văož˙ő–i¸~“Ě[Xnôźţ°`yŁ#°Ú,űĚd´[ekpP|Ľşx»¸¨ęú©8AňęcÔ×a=-mÖ0ë±ÖDvśe®Šćꂜa€PP!aZž°ÉóŮ<Ěţ(iţŇ0Őȱv<|oÍĚÚť=i˝ň÷i›>rm7€ˇÖýj9ĺ~Z@‡ÖĆßÁřëŃ„0劳N·uÜÜ×ó‹lĎőęJU¨”d¸«k¶ o¨Zg4«Î?1Uî7CŰţý)÷·âĂř±şWÇ6ť‡sÖ­&‰k°«‘íěZ‘ë™»V/ Ę/—Ĺýf®óÚ×ĘO¶P‹’,léą3uZ`¨AöŃcg>Óµ­ŮúDpîMö‘ář?Â˙»ď9|ˇŮľĺ‡-ÂĚ4‡?F;oy/EµęÝ,Ć`BŹg?6ó{Cďo㤟lZäxĂ(ŐµÚĎć{–cUA†Ţk®8ÜšEäë*ΩS .!ĐN Ń^‡Çkf44)t”~j4č×»”7âŚ6×]*‰«ehçŮęeZPĐűő4[6Ęmm„´Y0ŰÝŘđĄC]´«‹)…ˇ¬XŻ— H‡jŢk D:Ś8?¸ńţȤ¨(ďsýăÖT»\Ć+fü#Ë*h¶Ů˛Đ8}«Z˘C$ˇ*ş9Ś'Üwvá/‘Ŕ=1Ť¨= ń#(b|ü2[5 ăÄŃ’"XfĂEĄţćő4_Á9k˝ˇ@¶KŚc2v(‰t·uC4Uâ/ŞXkÍSČúG„?şÖ®Ĺ"ŃĽˇÖj$µÚ¸ĺśž„Ű‘ąß\´Ůňo[Ç"UŞ^Ë^ą•¬9[°î8łK]UßSWTŔP‚Ťâ%˛~ü®cyëOzŘv¦ľ;Ű Áľ„ Âoôe+µ†LŽ+Ĺyażü˛4můyd\>źĄ»ŘŢwăqąó>qćců#Ôů’V7eç4˘ŁŘ_€cé Y>cämÂX“|żX…đ·ęM«“)~ěuBčč¦đź-Ƹp”Cn*©}€;,×e:^f_§ËŐ˛ÇÚe±ŘëužsÁs°xk[ˇF(eEÉ"g91)„ŻjAlűú3;zĆ%~Ë…˙ڰlđ«î…{"˝šAfS›äh×Ô:hżâ0ÜŘ Ir’›Ŕ9°»rDqOC&SQZĺ+ĺ!$R‡u™i ę_łóAöŻyűŚĐ{Óq÷Br»U~nÉLÔ–=MĐnÝ3Šj”v;_”>żU7› ű ›#"#ŻiQh!›Őâ*Ý~`[K„±˘¶5JzŰ Ž<¶ľĚÖő ź–W[„t 6”ôÉAËçĂĂüš\‹™xë;fu)Űřţ“cĺę&Őů6ků/čh…ŞŃîú–füMlH+t÷OÂŤ+ţÇ1~ţöks︿?4łÂüßi`?\©8Í4|e´•Ťc˘(ftm©Łx poćP2ô‡Źże÷Ř|7NŘ$«ĺű ća=¸˝ŕ×Ń>‚…Y¤ŮŽĄ©o ˘7cđJş‚OQXO3’O?Ƭ4Ť Úę˘ŔÂé?kÖT”v)KMÜłS^śŮ0‹Vř}ÇRä™/©Ž`áăűBc ŚXݬž·ůŠ‹Đ‘`ĆŘš`BÄF(DZKŁ‘Šo|rLZ}Ú좫ű&FŠşżł´ ďËę#zF^Ń|qꨏş} °×1|“ Á¶4^έxÔŹŰŔ%€Ôk˙Ř՛ÞŁókBFňyrp˘m¨EÖî\T!–-… VŚ’®KÝeIćÔÜ‘2·xW3b ›mq¨IĄB^"P) ĆŔ!`Ř­X8ń¶´"QjJ±}('?H}”>ě°fĂX´)»ŃT %¸ż_ŹŤ…1ë1Q^übFś~ľVę°Ę5މ(YĂýp×—,×رŹ«ţG`MđЅƦ“r(¬¨P©‡ľ«·Ýśú_LďŔĂ̬gd-+Ę~ĘWŃAľýlŇ64¶µ;ő§­wżőÍĐyö”?p9< _Š\ÍúkđqO_A~B_´=”jcÖ/Oް^! µË}îé<Ŕ«T°˘Y|\ž˙©µi·vGďH®b˙ĎčBásÇ~”ÎuŮ öµş@‰ćö?űt8sd|(^eH)AwćjëP7mrż:űň] eÔÖ‡§_ŞĄŃöSĎpń=Ką©ÍEVB?ú‹¤±¸b_ŹŔ¶Ş_o=śéiÄQČÓún4ň0i}.—°ĎH’—¨„{á×ÚŘ15>ű*,ëź‘¨öxYĎ„oŃz1›gĹ,Îé9ęs(g´Á'Ńé»zń%Űrłđ‰Ĺ7ödÜ ŢôµŚ}óődęÎŻ»Óť¸T†p1 47ű­żâ^ˇď€ ¨~řĎ˝ś­ĂO÷ËěÄrcĹ˝FĐ~Ö[›ÜVŞoţ'9`;îćÇĆÖÁŽ‹"˘÷;Ŕż~Öf:ŚIßL¤ş#űťÜÔşő…Ą‡^ΦŁŔšXżďtĘĂHš—çŹuBp¬x®83™?šnôů•ÓN’C˙ŕTŕh©|ęÔŕŢz,ňé8 ëŃ–,ÎÍ!zÍřţ­ťN«f"nďkG¤–úÓ ]z÷cń/äâüvŽýş:“;züWUÖŢc=Ąj†Źşë¨1oŔpąđ˛Ś…˝«Dî°ŐĂ!qžlŹ{€}Ď4˙_ІŁ3Hś©ćX>Ű3Ý?溢±xýž»×*Ćžc$íu’čfŢF˘ Ź´CÇ€;Ő>PŞRŕ·ăVTŻH˘XÚ­Î΀ž¨ O&úfĄĺ$ł°lš5ŃBÓ=š`ĄG6T1s‡đÂz$ËĺÉ×”Ü# T‚;VxaëąĚU'¤Ĺ —˙Z7ć 2íďmŻpÇön‚9¦ő´D’6Ü ÓH µ‚î wîň@ŇŘG÷¤ąŘSë¤QNó•FŚ`*™'úÓô,&Á¶ôŃľxŢ÷ę~ţئG÷ÂJB4BŞi>áćťrîµLL04žË+ŻçeÁl7‘¶ ‘o|ÔŁX˛ŁýžfNŐí„´Ü}vRv AWâXď2 ŤA|Ë8®  Äćú˝=ÓńÁ«h»ˇO.üoťű†Čލ§Ąr–ę7Ćĺß@žĆ7ůx=kWxN=N´żs Î6ş‡E =ôýK÷łťň9€ëlg¨¬ůd ĎUutgĎŰË<Řą:9hęNfóí9ă®|áł"ş˙<˘ ^]1 óbŞ…ŻD¨‘u'L4â~ĎÜ8ߡŐúCŤ†ßMŐw,ëĆąźý?ź:˛±#ň(5ÚšŚHíGžX ?x¦ÎňNŘđ>€Ëč$‘ü˝±˝öH|)H˘ČvIÂ9¸Y;ť+]č’ǻա Aë¨ç\Nąµëę6B[¶ŐďÉEbP!HŇBďV*ošĺá5HuŹ˝)g„ŇL»WIK á©ŕ`„f·-Ą±ďXxôB»[ß ôlőĄ•zŔ.=~ËXŤt?Őmâú2¸Őť"ŇÉ×Ć‹Ş¶ëB8p-±oÍ%‰…Ó¬ Ń´sPĂW‚ó9WµlU PŢşe˘=ĺÝÇÂ>ŕn –%ÉŢ(Ąq_Ä,ş( °ŇłŮkŮUě\"†*¶Ť]))C^<ŐŠÂţŹ]äř\2%-ĹYsv?Ú0ť,„ă§r]öÄŐ ö؆ÜƤÜŘÜć^'ëë÷©ÔrfÓ?­L.J®Â©šR`ĂnÚĹ˝aY]ËjÔ%Cń»4>ăí62?Vkčú0Ć9¤I=Źĺ>w?LXNÝob ŞRT3rĽ †•–*ĘŕďRF 3áëŐbbI*%z±Ţ+L<]ŮMj@%‹;ÉŤçP±h‘EţmŹ˘ ăÂ"\,Ěź2'^Ć B‡žĘ8I¶dň4XrQ¸\†ř[-„ŻÍGQ03ŃŞńUĽ ®„Ę_u™ …§Đęě$Ŕµ ĎPěŠ'aѤ|áÖö÷z,Ý…]Š>—±ű ^! ‰3VĽ“IŔń v¤ QČx‘D…„•<€çÁÝQ„¤Ö$_5 ¨˝ ŕ/ &Djś‹°5>‰[‚é' GşĎÁ°Zň!–á}ţ Ź VyLß[я˧Äc1É&.K›Zť°5g4ĺ5N»ËÁGľjV ărľ;ÄpŠĆqŇ^v˘Y­sXü:ľě•ţ fŮ@Ľ°đz)#˘® É2‚]Đâu˛63[*ń¸2µE˛uČ(8Ř~:!»E‡[d…vmC„î€&‚3S‰!ťmF„4V¨ă$¨¸Đ`˝ä°u,Ú˛şčúÍü5Ć#€±˛…ţZ5/ÇJňĐ]&ÓC7mă­Ař WZüľămŔÉ8Ł,° ¦Đ¶]-č©]Ţ€1R’kĘ:†Ű¦ă1Hżě?Äw v[ĹČOP7ú›-]€ Ee©ŤČ ˇůQnްĺ} ż…†\iX)$ł×ÜJ´&(Żů=ĐlGî¸ŕ¨ ‘}®ŃďPHś=ĂčCźÉÜĹľ'!QŚFDHJjhĐ4˝’î–ŚĐÔ¨óÇ ˙Ë„Yă˘'ăÔĆÚ†×á¬yü…lF$wĄK÷]ע3vČÔ‚ľN©~2Éôۇkµ~VܢĘZĂ·g×°7ÔŹáł óV)Ôl9j˝* Ůž™…ܡóxŞĘ_oţ×®»ŻŮon$¤O8nÝĄ3(ç)ĘŘ&Ü'tŔp7|SWrÍłfĹ °X FŔťôłÄwŁé§+`@(ř‡Ż§Ą{k˝7ôpz3`ďjŇ:>YŐ (X†Ř‡Őę¨wµşr3ćlĆ (`›€ř":=±R™€N©K˛7n¦ŔĄ¦¨(Ú&ŇŽW¨ U= ΢Rt•SlęNű»$ŻŚ¤ŻRŇŻ–W Ý‹čřôňٶÄÝ%Ă•€b}ů’7{G®131]ź‹@®¬’*Ď–f{­»ÎŢßőNľ[J][m R*$Ó"Ů–W/ÖĄÝ;zÝşöÂĚ~»·:ÍĎ®Ô)%ˇ+×üSâŮě.÷ěö…?ź.¬łÍB •”5U÷ÓNČ';×üP!ő@ĂŐ©wń:5Ćđ„ľ†śęÄK Ţ˝ó9Üç_ ]śą”Ô)rňš°Qť#ów–^tţ éŕ|ޤd¦-2ńšŹbú×°Ćv¤äŇ&ĺzZ%›üřx¤XÂËťëÓ A:íÜ@]˝ČQ˝ JQ ĄąUÄdŻ$â 0·ÉÜÓŔ¶jvý4Ź»€F.äźç•@5{NĂ&>ô%Îeűřč-7g†FżÔę/l˙ŕpÁ´ł=Ô E4÷$äZÎ|Ů2ÓŞRZz K‡1w+hId‰ˇľŁŢŘQÚˇ2‘U˛WR útäúň*B·–ś»Ě\w!ż¨7Ľ6ŇßdxDÖ™śT‘\„ď]‚ÇŰť;ńÚSZ§$_éwRĎRŢÚĹóqěgiČÖ)Ş•Ip}ţy4×YüV¨ç[3~ŞÚË7R—Ó€ZŞYţîŁjK?ă&] Íë•p%Ę 9ű§é=Ö´¨ď‘Šž7"ŹŐ©‘bś‡ň‘>űS7T<Š«T…,]˙ś˛ůJ˘ĚřŃvĚ9eüJiŤ žâU)).¤ĚěóşRŽ7·;-ĘŮó´=îs,sM çjj(5ĹwĆGlňgzĆ-Sú$ŰłC“Î'sŮ BJŁ%•ś)˛ŃH–{fŐéŰÓŇó±q‡2ş˘3RŔáy®ź–ň¸ś}ş«w˘Ç‘0ĎĐHŰ¨ŚľőQQęřť çđ7?<ŠwKŰŹÁ”ś#” ťľśCfH^ZNŻ8äôĺ«’íxôľfL1P!ÇTl )÷¬ßy†ęáN®%–ĺäďTÁ˘Mű†÷ş+gťË™FIŃ6$]jBS¨0Í«Ňq€®lë`(Τ4™aŰŽ‚ĚýÓÁĘŃôôŮ´rÖ ˙-HY›ČčŃń‡l2TZŁ\úćRŤŘlTĘŻp"ířżŢŘŹ”†Ô‰_Cč%ÖoU”dF ńé•!‰2/'NrĂAUűËi†×dĺôŮ*Y–űżlYąs«Ç!AJćzŕ_ŁnćŚŔâÁ5f5Ž!űS,öމL~Á6ú ZKkĹJľddbÇĂśeĂ'ĹŐŽâI“*]ô¤˝žŞôŤl͢'A9LRťm×ď†~É—u»ç: Ňi"%":oVDH˝eĹÎR¸ÍEŔí;đÔřKĂƓĥž4b#•ŠH ”;m­@MDćKÂŘ/R“ض7d…`ăëµď‰]ż/e+vÖ{Sy»ŇK¤Ě#=ĎśĄ.9ÄxrŞÂEłJ9Áżzô†ýÔ#˙‹ÖI†rô?)ůÉKĹ:#ŕş6˙Í„ř@‡ MăŹ4 Şg—Ş'¦ô 3Ď·µd`âÝńHnËđCG)—j\#¬Ĺ¶5ĽÔr&çTH?íÉŘeŃŮ/]Ě4®„ô(zÜRż, ő)?+Oďńĺ–¶/«•HSI읯F{`›­«Ď¤/O¶›‚)žo[ۧzć7rYŃ<¤Ä7YqźzLńqŰ*đ†S“k!˘5řpş} ĺi}I{w-{ýfZ°öN§Eý}R;Ľň€ĄŹť-,ŤöPŤúí·;O)’Ň™žNgó))Ę® ˙@ŇŇ“>K§×†Ĺ›Ň$˙7ť>đŢŇ;Ţ gďâ ‡čpĎn~\ŕ4§čÓ5ö*>ź.=ű“É7YĽ«f™Ö$»t­ $Ć»‹Í_¸9dZÝ„díąîŽšňĂ‹č´Ä˛pRÓ÷ŘC‚$ÇuôĘŇţiSŞD™Ä·" ~®”ţŤăqŢŰ)Ţ.ţ3„Á’Ű´Ô<“Ó뮋“¤ÎÔô/éŘg[¸%$Ő˛nŢš¶ĺł;ňłSOóŘÉŻó)ĐHú«­ýśĚ V\U’ұ—ÓýyňĽÍÓXViŕßź&mňUŠ Ą0¦HM&>d9Rh?ĄÎ峲mąń‚-ŰjřTŢK'§©O.˙P+Č·ĎXËFü  ©ő2--ëňö‰ŚČÉF}Rç Ű9)v™ÉôůĎuśŮ¶R´Ó;ńŃĺ«eĺş™|i»UŤb'M&řšôĹą%ÄeS­¤×M-Őó¬WÇd—UŚ_Dó®@vĎĂüK&ČA–äéĺĹ{ŕ_á×JyĎţělŇ›9łMĂ^IÍö[|CßźĽ9±š=ŮTMű×»pět źÍ”•ééŕłô\iů6? o=GƢ~y/ąąóO®˛Ű5µ·-fł“†'ęS!Ú‹˛ű©*Ë­´ťLÝZ«Îg|™›ĽÚR‰§é·XTKˇŢSâ‰é˙é[>;ÝŞdć—0Eo‹sČ˝‹őGfÓ“*źzíy<Fżz<ŹÓĽ=·črZo>Ä´¬ßá˙aLüI[ű•ľďë±'ź¨7síŃŢ`‘<ŽÉf5Ůcĺ*öźS­”«,ŠĹfKśfbÄ{ź "7Ďr4OŁŽíŮŠ…çžJ­Ö8ľĹřI=ĺ°S_¨›­ë_Z&RlŠłíV2ď™fýSë[äćéň>µfHç’Rű¸úč==·»Ŕ÷oË5˙ńnrŕ–¸ńÜju;ů¬Ý©8É)×kă{ú‘ńž€*~ó‚‘÷ő đ˝ÍU_m Tó¤v÷â+˝é8s)­O=·9Â((ŇŐ‘> p=ż 0ć+ńqă[°Ď”#Ů9ĄÉJDvÇôŘ2Mg›]ř¬¤z+N€řĚi‚L×.s$}zɡ@rÍlúľČäôď˛ű,Ôɵ+ÎîŮÍÖâϱŐ%k2)Ůyé4Đ·r™ýoiĂÉÜSÇé@Uëfę7ś-•L&ÍH)ăçPüč^Ďţ€ˇ~Ív|JҰç?.ćâ÷<ŕGĽĽ;~ť947rÖ,uĹY›]ťŽ•kjĆČű%É äS?ĘÍéę27˙ +cTĺk mźY—Îţ´ęqěy/SŘ7¬4/öÉSŇr¬RÎSkľ•©Ş“Ą( EřďáçqUßĎ®*BĆH—nZ|ŘbNXVÔﵿ}H ´.~‚ىQ´"ÍZřX™’}}¬ßí‹#ţ]]cZ0Ć´óëFÁ…r•mź(–Áä(ŕ÷a‹­čř0“ęŢĚ8üex=#Ô–ÎfŽş[­ .¦ ~»Š‰a9|A6¬P+Ú° *'•«ÁaÇ*ÉĐ˙×±ärUÜA8NľŽ0žöQ@[üQšşľSvŞc°yuďŢŰÝ)ńăâ]˘ča{yřŔřŞ`2wÍ.eQ|p6ŹT˘Žş (Î=\y°0«â™ˇĎě®¶ ŐĐ.áĐ •ž¸ožt^; ŔR»đ®#ÇNę™>lĘ2ř  xF}˘Ú`úpG¤ ^ľe(< ,1lt®9éŻS‰ÄKDĂęáďś ?ź')ÄW[%;BÉŕPĂ+ăÚ'‰î“ĎCSÄ P(HÔś%!a@ ěŔKĂš‚šS† <VM7Ŕ^ÝHŔ#ćă,ŹüjAcM¤É"‚‡‰4}@çFP«|śEŞłĹ,[$P+îÉ1Ŕph¨C1% ë˘EŠ„µ®VŇ–„Iß{ëát{˘ĺ ŕjŢëTp°ŢĽ‹·˙şůˇĹľÄ:č|´ĺ=ÉďkSËÁLç¨Î{ ŹŞ×ďóŰt6×sĐâ6PÖ†zŽĄ/húÉ^<÷ÂĘ·x¦¸žŻ©/čŰHF|N]«šëĹ ™Đ6VU;č 0ĐÔ}cUÍPdÚ_ë¤ßäă€ă6쯻A®óFůfR^p{ęËä[ęÔÍĹ85ş^_žĄ^gĆZÔÖŹ°č dof9ć4Ů(¤|ČÍóÍ’nÔ`+Ý” ‡ţC·‰@EŐÓ]HĹž{¨˝5ŕőW<ĄyRš, rňFÖ®c:.Yż(ČĽC>€@+Átleű Ę!¦˝4Ś ţ¨,ą ýjöŻ2”ŁC+˝ň{"€r#ř=ť‰ ĹŰäG”+ŻŞňłGŮťŔÇ\ď÷ˇfŠąí‰Ë©3l·âŇŔYţVŞ—0C•>}Ź7DÁąhK„<±‘ŁFŞ66Tâ=®v;87b¨÷(Ős(4Áŕ)I©xĽ• &Ć\E¨ĺ_H7Ŕé!ťEÇP­§Š–ˇ™¤"/˛E @B­đUĬK)tRE9QÄ L®2×­¸M“©"¦ Š,oi bŁLČ«¬5 íöŁšńO×Ě“°ďŮske-‡áČ Ał˘Xţ*ZţkUä°¸ą›#Q,“hmk7śAP­îxbu—7ͤ“IK0ăh<0đG ‘AFÁá€ę>pţ-C•aM@3Á>kPĘÂ(SH#ŞGąn¸óÄÁ•QCžK)‰ţ5áŕ{(!$R•ŹÔIo™žö]}Ý®n éŤÁ—«‚Ëí÷Ę(©‰Ş<Ü{[$â“‘¶zĺ,5ŁI(¦‡žv ţ1kÓ'!¤<űŻ p˘éŇĂ`V˙÷ {‡XČ ‘ăSÜj!aË`ž˘µűP˛n.śřz6Ú\ćĹp§„ň`›ßÜ1x:CŮteU%-" `q¨·ô‹0ŔfRôŹ»ČîQ¤ťr-őĘ›Â|Gá;ťů·S–łE‹¶®­Áâă&s 1ČXÜëśff ¶:T2r$AÄý6 սɍü ˙ŁhP»‹Ý)ÄŚ¬F^¦\s-n®Ź¨"L»•UGpUË'€hŘL6ĺ°Pů#\‚J÷·2JgáĐÁć~¶¤<@peĘ˙¬_cW|îs]°ř¦$핝â´É?޵Š,´Ďý—˛,ëŘÔ¬Aâ˘L$Í$Ńĺ§ %X›7Q¸v'«@Á«đŰ Ť¨GŇąfz੨¸Đ|Ő ŚÂk\ÝÖ\cÜ󚥭ÝLg[tӧ׬ľápăRýpN<ăÉn¤ÓG]{Ýí¤ţ'3ŇűD닉ŕŔcL.őŚI{CëBT’™@ݵp©ś,zĹÓ:KŃ35Üj0a+)Ukd^ ´&ŁÁµą2Bk«¦É‹‡G¸Ľe:C(HĄ*Ó±/Rn¶zŰ´¶ŐŚ`Š2‚®,÷›Mě‹„÷kYcĐ}RálĆŃ>#÷ttť0i+Ĺ9˙©Ô4±ŤŚ*a»ZŔýŹĂAH1Ŕ8‰ů Sš®™Ú^ NcŢÚŞŘŰń’a4D„‚ «ŚÖa™ ާcÉ›V)#ă‡ó“Ćúź:żzŐ9 ćČŮ„ŠŠßu˝-®E3âÖ™E>†`m$BěF&ş©‰ô®÷§‡ ·-ć]´kŘn!hĽ•¨n ĺ ę*ý«^5?Zż.w»Ŕ‰´ěžÉ›aŻ·îďaŁ`ś ‰ŤŹ¬Ô=«I,dULxułS”ÇąŠnem`·5Gp#ĚđرĘ\Nnŕ=Hd …® Ůa[şŰ,…ż§,›TUJřv¨3e­·¬9ęH–šđ~Ě|•vâH\Hf‚SUĹCą i‘‡‚÷?ĆęóŽŇÁěÄłVziúůŃî¤cţ Üłä/着N s—dděĆÔ<ĎLylhRůľĎ“Č*ĆŕľE3W×N;ŻaĎ«âL†ybůj‘ßń?+­‘üŠĄHT9}Őh6­)Î'7ÓĎ6{„®¡ŞFÇ›»·u˙ę"D«µ&¦/°ř4Űç5ڰX˛¸ŰAĄ_:üůÁP÷>Q·Qň•őj5Č+<Ł0ĐpŮd– ¶QI ýI‹#żđY¨áÇ]…\vĹHŇv&;*ÂCß{gÄ\vN|ëËI”‘ů \I¨q–ŘM ¨˘Ç”ń]ňhId.OÎť¶ŇL[D UŤčGj•ŐÓt¨QD‘„ťÔ4,^«QM 8AĘh‘f" š¨ĚZšŢ4»S%á7>ˇ`úĐSfYć‹OsŠ2‚‚}ókŚ•9NDVŹ)á%.Q׆dP˘w9ëŽâ«2Y˝ż?ËŢĺ{XoÚ_iäq˝±7Ż›†Ş™Óě]Y—qŞi8>oÖÚ«|[؝鬑ş†Ę5.:Ę•1Ś ÚĽ™đKŠl-îŠ÷vřj©SPţř÷Kŕ^¸Ľ8t„NŹf÷±{çâOąęëÜt…îđšVĂűŞB%H]cM^;µ&u%»yc*ę§qi¸çwţ‰1˘îęÂϲ7QĚ7ă‘!Ďi=瀍ŰPZ&R»ox‹şdŹŇX6Ő~Ź#˛i-×>÷˛żs¸§xeM'š˛qü˝Xá~~ ’€ŠVÓăŐcúřö¦» ¸q/ýö’—W^îbÇÖT]~|ź §-Řé«®-ڵĹŢŹqW=Ťkm8VČLÓÜ%7­~o*™ç®_€»G±ŢqC©Kĺm×YdW®«DŠ˙«IcŚöŤ:…Kh÷–@SCg-ŐŞiő®XSa G¦_Z©ů´nŘ–÷ăL˛/×µd ŢŠÓ˛żëŁ4Ţ»h÷#žUĎbőć6n”Yl{/ífâ5[›µϫ_h{»~őŹđQzN,®…QWĎŘűM}[ʉ` lÝǵtŇ’:·ś‘Ŕ,ž\)^,ˇÄýŢe¤®şó…Î6ę±q’.8m#0{ůbIvÇ.v Ľ“ńX'¤$Ë\%Q ˇ «®OÎů˙kW[ HŤWÄćě9e<zX" pż$^$d˘PIš¬ńgy¸ ÉI ‹˛źhŠú‰8NO¶Id-hKÄ•é.6 :ţ,ĐţE˙\éŚăXŔ:^­űUu/Fă !v& Ż …ÍšEą¶-ĄFBAÎ8QN «ž%ŃD* Ôj‚Zľ B5o/€Š8Ť, ›j×H dĹÁ‚Śě2ôUđgĐÎ6Ş wěIQ†ç~ †Ě†@"‹0´űqđadpšo¶ęĄŮ_3B¬ŻBQÔ|Şʲę˙N– ŻFT_3!b('s˙8 R…Ą"n=/XÁłÉÚ?áí5·^8·u"ČłŃU”ź”2ÍŽ?…¦ň˛~7ćŘNżŽ<Äôm®ÉON^§çC[Űń|(ň¤Q~f1ݲśýđÖgËě¬wŔëCK^ă¦ř&$‹Ń…iËE:`áWËŚól¬Ŕ?Őb6ëB’ťâĐV_yś‰M8Hţ:šxhŁăĹë•OM@(`&ë˘]Ř2îNWµÍÖ>\`‡ÄĐĚ5P‘A°|÷doÚŮᎠ¦ç"íadćNľ~~˙źŹŽ#˛"0ĹâĽz â?„šˇlźA>ş‡qQg†ć`?'gÔ K¸ůóí$¦Ľpßę|ܱN{¦Wn`°Ă©?ňşŰć:Ĺ7qbËFpąr´«« ¬ă" ‰<ďĄÁ»—=ęŞý”·|ݵŚÄŻBgvn˝ŞĂű·ÓQK–ݤę`*°u `Ú.M«SŰ”gĽí7a#őë˛? mkśŚË5'µ«‚`R|ş<\‹üśz¤­_9šŐJ [>KkĽĄŤI«=üz°·lË'žř_FinnÂďd…yŇc>ÜőÜ@<›ĎźkQ+›ĽHÚ ńj˝ŕ ˇ`©š¦Ă3lpP—×+˙iç;AžCö'ÝlÚÖ„6,>ÇŐćD(nßŁŹŻ¶ŤiîÖÍ(Ëłk¤.şş\!‘XvŰ=ŘĹŕcíŻÝ0°»Sęř»ôsG¬:§g*%”Îh÷hŤ»©ómëáÝ,[/¸7ÁŤźŘű·F_ %Ö~Vă_ÔŁb-Çdż’ż4ăNÁľi/0‘:×= ü¬#- …6®!RMĎŤÝtľuËoSH$jŐú™đ®ľä ,<:őx(ë1f™ä˛^ᩦ ‡ŁX–-3Ž÷2î¦Y]ńT›Č×Ü+FĐ î¨pxĺ·5śL“łŤýĆłŞˇ%°{)źÄIJ´çëpÔ›ö|^|\ÄŃ|ö‚ík·cą4W„ϧř:ďĽŮjM1ČěĂşFAŤź‚ş”g%ŕ~ ×ĐwhbGAТÁ n’ ŕą/8~N`I/'–PčB®ďőş–Mčäc•Qř7PΞ’§n°ĹěťĎáď_ŻŤH`Ďc‚0ř€·–˘”.(I)‰hĐ7ńg? 5%5 /SŠ!,r•é ÔˇEřčH¬&›(`d˛l?%>ULś Ŕ”,ܰ=k(É`H?1[-Y?{ +Č*]Ý ¸]yc„µň=Ř"Ęë 39mĆň=«˙FűmöŘř"{-}z’ŤĚX|@qĐ–•ĆĂăE*»­k©S”äś[ßšë/ŞĆ–Ě€Jĺ`Vimés{šî°ô—•÷·RíŮko=vř• •»Űç—c¸˙¶:kËr˘©ë~°S騫`Ą:@%6őbkŰQµ]§Yěnţ;»r ¨ĽíęCFR|=\‹ýśjS$(©-ęčMy¨=Kú°ÔC˛‚IŮdK¬Y ěä¨ÄA)4 eFĘgžt&5ŕâ„ +§-ŻtR$ů|ÇÔ^nß >.şpdq¦(e.§żg¦‹€/z!ĐLţ5śGµy|{¸@ěüSĽ8IAw ĺAFçźg ”Jď ű8F«—8$ąIŢ”®ô ľ<ĄíG•‰íÍ}ĺĘé#ж‰$ń]`ę$Ś[:–ćş„jŘcÂÂßm–2xVÓě{rg‡5 ţâš3’ńžs.ńadç˝ŕř·,…+>–ßÇ9W÷âCú˝ü:_¶˙O˘Oo<’ň/ ó”OäďĘŔy )Ö¬řMyRüVóWţŻnëć;ÖĄâ.ôEşÎş‰_ű}>|úěěo6q«[ůčIâÂň }úžŔ˘ůĆ{‡ňű|üP™čÓăWĂ1¦˛nč†đCżIž«<ÓŠŰöVůö/VཛྷáD#2Ö˛VQ?‡đ( ź;0ĽpÖŇf&¸ńťZ¦Ä řŔJQíůxŚÜ2eßĂŔ; —މNRú|ŇW„@ą8ŠO•Ą%ŚĹ†O`˙°Ř{˘ąá…đ’‘Éb°‹%?Đlo€5eĽsßÎY¦6WÓZ%yžÜ5}ʵ/ÖK<ÉŮSîŇ\!Däę—Ř[Ugn1ţśŠÚĄ,ZVĚ·Fý;D=6„š0Ĺĺˇrß÷ú˝ćž ’0e VđćŽGč̈́ꯀZşJ±ĐF}D¶J 0w2řÂ÷§ë¬EÓbä}{’Ą4ŰZěZkX *Š,JžÍľaö`óŠ(jöŇ=_۲łöZµŢüĄüĄŰíÎG”Gë‹÷·5— –…ťQÓőSś)"‡dx<ňO3k8ló#n-‡ žzÄ:dňDŞ‹tĘŞ~±ÁŘ`Ô.› ™ŔyÇŹáFzÔbĘs5"Ú룿ľPř÷˙µţ7vh@ȦĽ4e Ť˘ve× <#s5ĂîR©ł•ŞĐĆx«Ţ¶¤¶‡Ťâ¸«’Ć–~Đ«ú›"AŹ„?hžPˇwŤ;ś^ëł „ËJőžu»QÝ%đ;I‡™ş.ÔWmBJ¬’–Ë2_’±ćť(\KŤ}Ćôč.ľ@iU®|Ŕ1cDĎYÜ„\SĺŻř ÇQĘ{«ô6 @@ÄbiUőEł c^Rٱ˝é±lţśäÖ\5jň6ŮüĺĎîŞŔµ–ĐŇŁE˙{G$jŐMŘśK(Ä˝ Ť>W0üÇ6®[$˘ vůCeÚ< XHđ6 ČŃţ»˝ž:oÓx'°tĄB8ďgťv!€DxôVQ °\–Óc®ŘĚFOź@äüŢő*"FĐlIĚ]‡2FF˛*7áó¬ŤÂµĽ˝řľ)SĹÓăaěcÖQAöÁˇ‰áV&”´uz®důŔç$^ĆĽy“Łő€¦‡şř5VŔ\dT׋Ďp˛1×ţuČl¶+WűxIî;‘;ąüžš9Ň{1˙śfíŽ5ŢERü(r‰ŮR”{iu Y^+î†Čy>ő"üÔĄH8—0_ů+÷O€«=ýîń&oyď+–kzţmAůŞÓpěvŮGę@ł }$u¨ł­öH«ęµdá(ŘźŮĂ×€ÔÓhťxĄ ~-Eܨ”k‡?BE€ ©ĺz"!!-ç7>şž¤–+NxćĹY÷ĂŢĽsŤDa±˘»AčWxΚO Cí–”Ă]°OÖľ_ý ‰ś-ô°=lţ¸ÇXxÔ°ŽJ»ąŔ˝8QQçYe?$nKIÄzća3âű_Ŕ˙™ń%űlŤ.â$kŐĺ7\)ŠęKŕĚń…° ŚCaöKrͦ;ű ŮąsŚÂé;µ9݇°«=H–Ă˙ń łBýŽ™&„EŢ©1§3z[ä{Źá[«áffą=E>ersEHţPÔω%Ť8fa‘Oh…'u«Č…ájŠ+HNŁ3Zł GőcąŢôBéŘCô4”÷ąöďq¶– #‹b\fŔ{]ď›Vđý–Ęŕv˛–WŠ\Ż*ŁrQÖ&#‰čÚ±”R°ń$•ńáÎVQ-/ köl ˝ĂĹ8E<âÇp°µă‘pČýH,+ęć|k»ç˘Z)ŻŠĘxeůěZńçv[]Ć•ÁC» p s¸öVś ˝6Eěó±č*Gvű¨˛Ľt»~ŢźŃ$Ţ|ÄVX’:Ő˘/ ř+Ô·´@v©@Ě75đJX`°áŐÖJ ś•´ ć^ĐRÖ˘* ßÓ1JŻÜ ŤkĚh„śe˝%{…°¸ć»sPÂ'ŔAłr+I,ú}ţŹQĺ‘ţńźHÔ .µÚmTíÜ=ˇLđÝAłZ”‰$É }=¤Č1ꏝĺ(żkęh·Ż÷–qČw"ĽëďsA•#XÍÁ4ŞvzÖę/´YGiP Ö'ÂO6nűW]ëq ‰ŮŢŹT_$˘Ü‡OE“ŁůÚę·I߼[ĽEPü9Sş^żÖü Ľ?˝8ŃüO‘Úę­= ŢJʉµ´$…·V{Š ož*4ć˛^‰Ô ŃČÓbIć2á ńGQŠKß5žmu‚eĽXüvŐ+†…RúĂ ¬×´Ňś˝……ůK+‚7.Ę`ëëNđ7Ť9ś‰&Ä+C˘eN‹5—…TŤĽşö×NŁCőť–âÎdĂëry´gHö TËîřÖĎ}rŐ—»ĐĽÝűv›Y6cŃ2b×ĹżôÔî® ~ĐOµ`íܱ’±Óí`H—%4łé?´Çú—ăŘš ňn˙VLȬM˘Ş¸ĎŁiUwh´ďŢ—˙Ć1vřĘ˙ĚË“őNµďů«öä=WFę™űNkłY5Śď—˝;|ěc۬Ç˙ľ ÔÇHŮ«®qo}Čż8Č.Ýz*»ʼn§Sá/6i QĚ…ţoő§cąt,\Ńfjí”C„W´hÔ/űőeúř„Őěřruř˛O—äĂ*ţş6„„DłôĐŰŰ˝: Ř)g„tÓČóKwo÷©®bËËr@u-Zxj1ÎCÇäńĆŚŽËëk&ŐËŮ@ZXX‚˝UUűµ·pîËŔ ţĹĐi5m`áĂKLO4Ćb0Źî^MËas‡öŐý(Ă[s®. – Č*őYáʸHű]Yeüú r†Ką lĺě‰űT•Ś>ď G—Ëg3Ĺóĺű`+3J ‰´4ź˛a%´;ÖAąĎPßú7qůńŁ2ě#h•ądy‡cNCC7˙tr&XSż3ýשׂĎpp×§*w t* Ď·ť ®ŔĘš‹wöĽ˙‚ňţÇe] ¬€1?ţô^ďX©`v{śěŐşňekĄnŐ0ŤĹmÁţA—HeđÝ»BŹ9¶§ H®.Cç0WÔŕ9%Ŕěx ±^ÎôŚ;»rˇPńŃźÂ×Ŕ.ŐĘu—ÂHÚŁV¬îŮGB×–Z6¬_J !Ń3}%˙FlŐĘcU›[¬b $˝ÂÉ+˛YŔĹŔ·a—çŔ4ť'$›¦ÚíCŁ!§ŤĎ…•äůpdd*5;YEĎ%Ía üsőDʬ0˙G0ŢďÇV‘KöŰ/6ňéżśçÇ0lĽń—»xŰčžúór*o˝‰¬ „SzćÉí¸‰)kő»zuĹŃFňdp\;2±ÍBi­NvđA^ś¬ŧ@Ľă—Ź­é÷Čz÷Ďî*~Ĺşďu(ďjbż u÷l?F"öMł‰aćM˛sóČ轊´őđhJ„jś37˛l™Ň–G˵Ö÷Žg,xÁŁőăŚÚ1eڍIăXćű'“yĆůNŇżú^tµ+ök¸iphĐ0{ÁE™ś†âSŢ-ëČA¤µ®ÎF:FĄ¦„ąbŹÇ”żŠ&¬‘>0p›±ÖI2–1F"Lm6ýżńâ9É]ü~@«žĂŽşčŇtëÉ\Ż~Ň-^hÇ“_§şĽüůŻć_űj0×ZöWńZ’˵rZƆ˛Ł–dfđěÎ$´ ·ţňčˇ=Ń­~ZZ 0¤µwPK™ž/ÎŹ»ÎOç0¸÷ľVɡ`LžÚľ#j­˛S6ŚA­ĚPü"Îź ’čHŕŞdýhTçeŤVż0Ç.§Hrň[ĺÖ¦ !xźV»Vď0u:U_ĽňÜČz°¸\˘3ö} gJ@ď >ýÓ;¤Ą_#©ę˘k0p±Ž§ťJ;›é±<ľ—ěę㲟ŃŐűőlj]ď“ ú/¶Ťţĺyů ZbŤÓę€îvCFˇ v6ńĄ0L?ědeGa’bZpą?íČýmKg]˘\SĚ©˙Ż;vÇĺdt ĺáńÇËkEnDá5ÖŁQ]8P(óna0–„űbM%ĺşL†ŘQŔŁ˝EÜş??0‹cîôÂ?Äą9Űţ3jż›^lyc*ŇĎáĽŰ¬¶,ĹÉF…µßHw[ľöú|ţ‰WŢüă×]“˝ˇžśt{z}˘yÖ…ÁĎĄYF`2€­°‰©uöńv .§ČhĹU}xÇinCCŕűöhŽXhtBě&"Šź"¨ĹY«Tďť_X‹Y„˝¸l-h”vS]ëxT„áŰSÔ© xÔÚ:%đâž{íŐ‡ĺ3Ěź,ELiÂO(NCČ,·m†˙ű±”źřąĄŽ»1×>ĎŁ°(ś!^I >bâE#žŃĎđ{‚ČđÔvř’\&ý; ‰%e¤"¸ýćcÓąńęć®)năúÎýIt8Ćoa~áÉÎ éţ®ŞĚr—†ň09~7rÓ^ŁČ!ÁMzŐ¶}K\“‡©S—'.9Î óä°cD$›32±—'îÔfN´Ńđv‹ř,¤÷—ať2€Ý4{rMţ߉Á1ßS~y€µS*ďĄ3á<çłîÉëŐSŚżšÔ®ŐöNŁMîp)ĹťÎH·†'łüłjú–q‡Ż+qţŐµɢ´G"\†˘'id&uŮf5?ĽŁ!÷oFéRőĐĹ>(Ë!§Ţ—ˇôÖb®!Ł4 Ú• \,ĐřÁá:›ĺRŠű)<ź±bDľMxšęrwËK$Ł@×Çη5ČűlXyˇ˘OAň¦®ä®ě! A”Q~ĎŃ_ФQnH˘3®ë¶Üę«8×…cZž“Ľ(ŽŐFiв@Ţ`€Ţx+ al CÜň`b86rn_>> b稗´ůF]Ç(ÜbÉĘĹ ö;|®á*đ6‘o©Çh0~Ů ˙°Fí_Om;ęŚJţVń<Ř8FgdđŮÔÓäčGąn<äogÔw j0L›A .»áß–Ń3"Oľ¤lfŇ´Â♑•Iu0–¬ďŰ˝Bˇé‡†‰Ň(»Ř®›l5 Uü(Ś2]Ľ€ŕŮşŽµE™APţ7¤Ö ĺr"[TňŰv€Z«žzĄ+zíWp‹uÎăđŞaµ^lĂäíe<»4Ž˛Šžů\ Sş̌/eaYgD­QĺbR)Iç=—”Ŕ.ž{Ç2Ćtc§˘TĹBWs„F˝ű ˘öŹkV–×ţ=`« q›;ŁĂOĹ)›o‰î* ńâ(PëđÜ zńÝ›‡ô¨żJšvÚŢfsYL᯶.D€^'MĚ´<Ô·»sĐ^ °ěˇ@’$¬©ŔČ*Đ#ž(p”ÇëŚü¤^˛XŢýŁŤä0:v\ęŹ~¦11㍔] 1 ůźňŘMyőM\,"÷@廾Á>&j’HQ—Ą(7…Ż=×Ę[/ăPŹ˘P3KĂßVÁó'¶7¨4©„mČ÷+Ć Śé!Çö“{} q•Ť´čm¬ŰYC.髝3.ĘŻ4ˉŐřUŤŢęhšT$ýUD|=33]6Ĺc·Őť[{ÉÍP§¦×´Ą‘(= úó·~|¤kRcQżÄw“+Ęäđꥭ’&ÝĆX`SáďóĄi-rÝ/tC=­ÝčXfÖ.˛šr|d˝ÍóEü ‰ąĺëŻň÷­U%đ·¬; Öë[9č‚&1$c í#B 6mĂV›s=xKĂ”v‘Ř앥0źÇhČfŐ0ľŰ ëç&ÝÓŁ0˙Q¶zUââ účóŇSüPEżgÔb}ß ňű¤r¦< ʤ}Va)¬Ł´j5¦g¬iúQR‡ĹDV„Ěąi8)o˛ÄAěQë)čëV­Yri:ß*jő Öq˝čâcJs-”ĺzÜ$WűżH+Ît7îIż=ąç3­Väľ;źIŞë)ôŁFeä:ŞbŚŞ¤VűăzdUI žQÓ¨_őýň2Hgóńďl )ö=є᮵ Ş–řq׫’ůúŐe'â5µis‹Ín=Ő˝—ď‡âĐŚřCC•Ţżˇ{ŁshM@Čc}Aş©nď›ôÝcŻîc©,ĐŞeľúiÝä×e00o2/)C%Y[Őś/x®ď!ł‚1Łi Ť>éÍ/Ô‹ů+dČMůyE6@´lčŁJŮ„?şÜĆ#b~žű´Ĺńcýr"fsß3ćl·ŤEia’ß Ľ`ydGĽËȉyÜüäD ą"…o.|kLeM|Fëb5Ť˝däLăđşZ-ţ«k-¤9ëŞ,Jâă¬«Ź .@@ÔÖĘŰ+//‹«‰ŇÔŹyć¸B_|'Ń“^\×® N{ă=kĽ€ÂÖ銓ň‹îŠJťqþȸ5YÉNjßłˇŽł Q)Ż?asŰeŠ ž qÉá6®\&÷€É9,Ă#TzqWĄâµ„5xŔ«}qJÖfĂÓöśĂéţöŹźźúËZöHăõܢ/Ŕ±Ý9oy÷˝(®Áű>"*¶ľżŐťV0Ł%™ő“ŔŤ` QÓnűȵ6¦-«0óđj,u ~8gŘĐ?Ký.ö6N\f˛Śś›FÉ3`"Y‚ńeEÍm•‘ďütuŻĹ=wPqjb ăSŞkŻ•ŔÍe|^ÜäIMĄó˙'D˘ńÖüŃÄŘd$,nbDąňaÄq3ĺŽŮÁĂá` ´Hćyă(öprYIh<ő®čtF “Ë!ÂârŕÇÄ3Öă–é žĂtév^ăę#ä–jăČymxŻçś'ü˙¨Mńńü^<°3qřÜý¦~/[*8ĺ·|Ż8ż˙;g”źÉŢ•‡ó ču-ľ”‡ý‘Űëźż˙żş¬›ů9ńA+E]~uKľśic±ßçΧcßß›B>PÝČO7žŹ}ÚĎ }>ĐžhĽńߡô>o%Ź3 O^şĹ ŮÓżđż3˝ę\ĺžRÜ··ĘŻxąä\Äí‹• Ĺ$rT#×ÎŤLßh\QŔÖWa°a›‚@ŠqM{=9ĽD2YŔXż úÉ>ÚjK&(BŔCÚćP‚ˇd4IĽ”˘ŚoŇ0.´´"4†ˇF˛4ZÔ3đ@¨w®ÎŰ¬Ž«ą,ݬ÷ÎDëĚŽţSg ťóX Ě€{ŕm GŞMĆ,D{GżMmäÄÍP­i…źŔfiVS–ú^[|ÁÄ mv‚ĺv†+©› s‹k?‚G…Úd|@cúféţ“kUa¸ryąvŕĐ-ÚO˛Ëľ{ŇŐľ ®¤mĄJ· ŰŰş@ś WɶŹÄž·8‰1ěý.ĺťËJi„´Ń«Ý řĚ-ĺáRdď„ Á¸ußěu“fÇiě”TEĆëĺđÁÚžů`˝zö ¦Tp©’.|8ä^ľŹWj%«Ë&]/– ›ś÷•ĚüëJ»šE÷O ĺáJźţęM¨UÄp—’•€Ž“#ăÖ1÷ŔČ|Ë >;‡á ¦–[˝ě»Ś}fµÜf~báDäźsˇá˘Ąŕ¦%â˘b¦\Vľs—ŘZiŐŽî‹ÎĂTţHءô&%ÇÉ3¶ZŮ”Ö{ś%‚ZŤ9tfoŇËżuY¶ĄÔţżŻ~•újă9M’4•ŇŇ#ř?ö»ćĘŢ”×µ´oÓ.ŘZ{:jmFysĄl8^/Ň+µeuáp‰áôd ýľ„噼•†“©’Eź±ýX·řň]Ůđŕđ¦˝É/,ß+Ħ Ұ7’ĂipĆXŃלU+Đ~ď|‹ű?ë{­ż1šxŘÜ@Š´,ŞIŚ1ú{xí]d¶Ň/ý_“mý“—|Ř)­ÓK“ąY€±ňä }ĐKµůÉFG˛wѰÁÁýĄ9/7pČ ŇŔŁř™‚q敏>S'â2r)˝ŮľŇ{üČ8ű sÚxNÚÓ´Rżnšâ·Sňă]žîôň „g“Äô‚?¬©Â— »Ű˝4Î[LłÁ°‘=ĚÁÖ#5ÍtNfÄ/kڬ'Ě"ž÷ń"\Śşiĺó*ż±aÍ}:­ËĹK6Đlă)†ţ7„řąŢŇ‹űËŮjsLé•©IÄWL©Sľ\ŇáťëÇÉŁŃŢˤë}9ĎJIjCÝŐstnčăO—y±WęKi6J=EßžSq¦ĄłN>_ęŽŕpd¨iíR•¦Ĺ¸ýý;"épkňđ˙ńXŁäĂCw6NŢJĎ“ŤÜ7D/ˇěcÇĄJRĄĄTuQĎ$»–ŹQuľ“š©ç>$&Ň>¨Ř·)ŽC;żť\•jĂÄCáÝçe +ńsTéOäeĺRZ O÷şÎ—ć)m2‡,ÜbóŐ¤ĹFgOʧͦűk7őŹP|Î+dq†rĹƤZ0˙c@Ëi?ŽÎÄ®¸‡ó?˛¸Úţj*(Aű‚#Ă•s.,#чžT3ɢáí­câ$űÎ/ÓYŢń ČÖŻ»3Ő"uĺm.”Í]ś>ôôÍ[•łÇffŢdľÓí¶Y űÚxüČČŘrHźrČ>5Ă6˝âp¦(Ö•p+5ěX/_Ů›KM ťOßş¤†ě¶jµ´ÄëĘüľĎÓŁŁ¸Ąšţ8ˇ–§*ľRëÝčÔť°NŚ˙f)ď ’żg‚#ĚŔĄt¸Â+ř–­Ć}<»L§ĘĽĂVm2oٵ.1×ruŚů•`´«ĎnŠGţ5u’mľůloŇM¨¤ĆßÝš&[¤j%ĘvŇm§MSiGz‰,ZSHéo^¨žyĺnMۆR SŹĂz¤Bś?ń÷?}W0pýÔîUFť¨ţŇY§ëg%«Ě•ąfšł%çJn´cDĽĂ«._•îAţ5N÷Űěßý÷Dßý=¶|ě‘<ž÷Ň%b€Tűľz§oˇÔTäß‹.dâŐčt•ďImJĹŢM'ib N ´đĽÍo=‘$žxřřhaO]l|š1a°:äŞdÖt9–ĎÍ˙¸öł«Ł0ńBÝ]w×I^…(ŤCNř˘fVZآ0¤Äw•ą*"‘LLRć3#a€86˛*€Ă*B€)‚ëŻY;C™­¦ÔRŹô" PůEŞČJAp&tÚž¨ -EE’`@ľŞZS’EY&Ăöeč@őř–™_»2“?Ŕ`ó`ć‚‚ęŘ…„PVMh¨ďßÜßű8÷010ˇ1-‚ý0©˛Š«Ý>ŕy’ĘľBżÉMĐrýýߡzĂŰűşÇ=éß>ďˇ2š"«‘+ń"áq´Ňř…ů4 î~M \-Ľ1Ĺí%ňôńŕ»$ŽŐ1B´wÖ2„F¬ ¨; 6ë±d÷heµ‹ĐŞäő’¶dŘúN¶#€CŤŐh8ŔĆäd»''kď"ř'™ ‚&kČÚÍ8kiIu3aN'01óÜ?dČôĐ„-*Qtô_ „ÇÝq»ŔoZŘk3i=(Ą)ÖŮ‰Śžĺ%ďh$k˘d„ęh‘%•`ăx/ ]IŤd T3Ś« ě ďNBáá ÝuPČć:™‡r…2üĽ=8ËôéŐšgą0o;?%AÍ´Ő(­Ót± !)ÝO•äÖ<€;łű 2´`X žĎ¨̇ń(šARß-‡™ä/'PŞ"ŕťÎg+ęCáGcĺ˛JEcŻmTEÇÂqÎ ›Őó`Ům—T1DÂňzA$. |,Züi¤ycÝ&‹ţŮ{¸ é"Ve[•Š=$Ň3‘é#Ů×?°Ŕ˛2ęţŐqŚ@ź,¦˛4ęôśzm@eń9d‘¬‹“™şbpŁł.'-˘Ţ}l¬Žó,úŠŹęřTjţ7<„g–„âĄ'”n‚Š}*siŘ;ä'_ŻP71VČ(cµî·ęF+ÄĘÁ±=:¸÷SŇH îl°Ô¬€ó7°ŠôŔNK6y«‘íŻl …„öq8bUi¤»Śţ;ÚJuĚç öÝ˝ż·ÉH éýŚő»÷_j^W6ŕĐ@ŢÝj˝¸q»áës›‘źvć`ýŽ}XŻWYÜ!÷aB x`ăŔ?L™g1Řk4şajjŢäü?JĘČ>ýőć@– +ű©‹žnĐKeőBö 2Ę—¦ó~KĹ /ě枎€Ú8[XŮőč‹Ŕ/r7ďĹŔľŢ6X WÖú9H釳V0rš6˙˛owđşF÷ú“ëŞöe<´Űu­źLÜ„ľó)ĚđÔĎ ž®–BÍÝŤRqöČÂ!?ľ;n/;e®9V¬šü˙’ńôlĄp¸–Ľ>Ý Źm(XhşSŹŽ]…VXX@ę›éÁ" 3#äD-5Ť=÷ X"‡©˘va‘{ŤR|.źOp?ŔajŇm¸Ő˙6[dyf°Ob¸ÁŚP÷ Ű_…"¸Ő)Ş*rŚQÄ.îpżÖKéČ&ë4ü‘ůĂ2/śt×^žk^:ę§ßf±D•«‘ęˇÖ˛M>Ćo‹#EŹĐJ?§Ő|#r‘i]‰­dĄ •52\’Ë-a–¤?ç3{Ňä"§|EđňzýüÉ™é• ”óY¬Lg[!TPBÓy1ŇâouPATĹ?G˝ß’ĘLj ŇPÓ ÂB'ÉőL @#ÇZFFó€@«DBň¨<9ąäKl Ďř$FIđ9I2VĆŠ-ŔMż ¶–¶O´pR–sNÉÚtR‘ňTwÓŹ<<ą*çÉŻ¶ËH„‘"U„[˛Ń0Â;‘¶Ő6O¦ަö“éÜÉ|ľFŘJ´źÎŞÂ\˛łDY(ú-JH‡zĽÉM”zČţ( tŰ.˙(„…Í·!Ś•(M’ď¦/™L"BĹči©Â9‰-SůÂĂ…Č”¬ž´ĂŚß1„1„J3«ćŁ:BĘT<âúsŮÉ8d‚/6h*¨o—Ř`“Ô–§®ŽĺfOŢVľ!ýö¶/vÎqI_IŁ "¦Ą1ôh➡a•9¶3O]¶+ݕϳ=UDM¤/+ýĂ’Ń"—qćÓć+F"Uˇň˛üdÂŽrĆőŚńv{«.Ńž®3!x=1Ä&Űř#gŠX#¦Á.ÝÄĂ޶ÓďĹ…j‡żÝîŇ´„ďîňš)Óˇe¶ĄĚČŃű3}äżńK e˙Óáž/V_–_Ýî¦Ő¬ł-÷ĄÇYI|Â7[řä áIÝË#Ŕë5S1—Sb÷Jěűĺ§%ű˙‚Ĺ߆5„S‰,†O#A¬ `#¨Ö1(‘ŹŔj ÁȶŚc00ćců1LŔDž[ő„ ůÂŻ#ĎGE˝‡…hżu6˛m-ţüÓ 0Ń@z°t‘0JAŐ€l4U7”“GżMěéfîâ\›±‘‰Ŕ2(b’>śi¸X̰HyfnDň6ÇLiţ€ľl[ŁcşaW]x(ô+ĘKž#¬Ň_L—l–‹gł>ŔYĹ_¤8FÁ-‹3G$îÚÁ•µ×6â ÇëRSěkş˙‹WQÔîDÉ߯[Öaz¦÷ča㦠?O>LŔ‹ôc»śëη ©(~ç™1K ‹Y&<ďöŹýđňÍŐÜ‘¶°FĘ…‘ĺçýAř·ń»z{ř凸ě 8o ňT÷ä %ŁE^‹°·ýrÜ ÄĘR¸ą×´8*‘,ćL^˛^>˘;etŰâ™ŃĄbĚyű«»’mÔóîŐ¦y÷qOgIÇ4~,„ Úâ|ü%*vPk®›ëžż˝*Ď#b¶•ž«-ÍÎSőç=ĆŃĹ;đńW#Á ÁßáSOm>o~pŰÎ{šĆJ\ú.—”ź.2?ä~Ţň!= [ţFÓÎ5|ł_}„ţÚxŇo[ÍaŇ_z®`ŽÂâ¦Üľ ú„1ÔĆ€ýďbßó{·Ç‡|'{(Ý©źŐýHZ~ĄĐŠóŤVˇŇ_Ę´Ňf÷ľ;í#7—›<Ýd;T 'Mw/2Ďj„ć/[Ł{ľŽVc·:iŕ<'=O¶ďŢ9ÍŻ·x{ß +™Kń\š×mŚçłś5{÷łÇ‚ߝŲi„ń çt=1ĺˇ>ĽJÝ @7Y¤×Nx•2=Ů ţ- á ţąZµo“Ţ8P źT  çş°ŁU‰Đ*źŞ„á}~iÇ\io W–t±Xţ¤ó„/LľËÜĎů–:qŢwĺ÷•žă˛ýßSĽIć@!ÖjĽW#ŻŽ\€xĽČ»B(\ŘŃ5JđX©§€ŐŠ*‡(U“^MŮ?îNk‘îĂŻt}řChPWžc0n·Ňť Ě‘'‚ö8+ęaśś[Ô]E0\QŃtČ­˘GŚ­eŚ\–Ú»b Űięęť«Îb#ŻŰ+Ür^“1ÝŻŰrç|¬Ĺç ç˛F@akű‡ÔÓ=};ż¬ĽIąw+1zB­Č{’SÍý’X¸Bţđ¸Í1ŤGzńŇî8ĹëąTSŁk7ś‚¬äĽ,űpřč$DT/]NÁ°2QµUÇIÍÜøźŁýő‹’9ˇÔ5îřĹ&9lv#·0ˇ_ĽÄU­sHâq)¬m žĂ~>Ŕß ŕňzâ§ÖLýYw¨ăŞRDwăŔ%ÄŰ<ŹŰ\g’ďő˝ş¦Ęa“ž #–<=ű#8xGŮk-M˝ň ‡YOWc‰D`ŁÝ4ŕj_jζv›EĆ\ ­°»ٵ{VÚ+˛´¬m¶“–\÷+†$%î•éŃlFÚ†Ô".¶r5ˇnM´u×ß°cÁ&©Gą“>99±€We4î“|BE»î)ć )Ęr*%YbVÓĐŃB˙×ězńeą$\Ö5«\Ů-Ű–ďéĘ9łąŚŠŻ&ß·ÂÄ_=Ď_“Ô–˛8ż)ßaĆRžúďĐ”¤˙GŤŮľ%!ţ˙ő‘€Ź ÷k u>ńÔîę–jP13ĺ|ž‘&9Ś|ŕ*%ťś$äDŹvGe,Zę’xźdLC]®L5Úk€ď[sMPvj.Ërę˘4‰K–ëŢŘ.[ë¶´ ň0ĺQ_F¤KÄbDłJ”öÇ# Ä$WYúTąöěuÓŢ-î-!b®— ˘lSÚ|™Ć“ú?`łjQo˝ů»:ňLĺ\Y hő&¤J±**˝ ’2]]!  ę=”bqÁ=Ž \”t:Wĺ\WLJZU&ËÂ<ď\®ňINîUâKbyůKŁ€Ě@÷v+ůŚТŽ_n‹Ň•É˝ŃŃŻ/çůĐ“"WXĎň’€Ł_ś¨Nô4„óř˦…ϦťĐ;UşČţ“ňÖżřCSuŕULpA!<Đ…sV?Ć´­)!6 8—űŢMéÔSľ‹|éŃtřŽ´Ů3!Ú1ř®,ß°™îłů¬śŢk{d‘ŃÖđi|{ňÝąEóa+µ«§;ugÍů,“1Ü˙LţFÚŐ>šţCŘ÷Rěsľ6y%“%ßł—RrÍ·ĆŽ>?ô‹ţ ú[÷:ëä{Ç·»RĆ? •Ń9ľŤd—KżţXť8ĎČh§ŽęĐ^ćńÇáMÍş2*!ú Ţ9+ţúŮ›N§í^Ăg}ąŃo3ĚwĘP ÖtCýÂqŮ€5WD,‹(‘÷fîčű°tkOĺŰ…Ś {čĺč~HĹ˙Żef6łA¤i”2Y€%ćµđ~ŰJ‚kÍh]Lľ(ißdŠNOšýă pŕ$x‹łfl–vfđ¶{°×ůî½ň@kŹ]H^Ćký¨ +ę®úÁ;.ógĐ8ŰIÝHĄ_o$‹‹(u¸QëOţ:4Ló6đn&‰Íýç<˛˙âÉ$o±ĺäy#oÝÍúŤ xdÓ h¸}tĚjĚ·-=©`uÍ—őYF#¤ ĘÝMRiY-Ëw4ŔťYŻĐäĄ?]”´_âܨž}ĐĚ„d¤…áei˝X]mË"BZą<ż’l€X$7ň·”‚ĆcˇeĂ­†\Ľ1˘ă­ë’Tç?)Îr&¤Ö„ÔĆę t¬d~ÜĐĐM˘vś˘ĺ 4]· ˛lY‹˛ĺJWëW‚÷îűŰ-eF^ßL?“' “*óŠ;Ą¬.ËQ„ÔŹOKlîٸětĘĘťŠ'HjHÁţVđ{äEĄŇ!¤ŘÉ$űz{voĚÖńĆ›¶ö´ąvČLfçGŃ›TäĎ,;çş‚Ptňë›˙ČŽŽ!ĎŞń#Ť­ [‹‘ą'ÖÝa§$eÖí ŻhŐ@™^Jaý!ßלŤI‹(ąę{ç“yî&V¤9MYrŮ˘źłŠó˘spI`0ąřçËÇ˝ ęYž¸’î)!óx˛ł©ĆÝ’n˛×Y’ošř´Á×'#ţ GX”9Až$4˛…€¤’•Ęj-óń^đ{·™¬j őrÁ›ß+Ű{i»®–,Ţći~ţ¤E‹EłĎQ)ÜăÖެŞ4P—B4hKÂy§ąËoRóŰŠžä˘–lY]c*]ě`ąúˇx]űđŚ!|Sa;ďB®MUߨ<Šü…ˇŐň†ĺ ‰Ň€ltńĆ?˙Č3Ż\yţ 5ă.”ÎĚ —ţĄŁţňżKOe%…őďĘĺx—Ŕˇú™Ć9¦ůK´µx/~rťc;˙IőOłüFÉ•™tĄĂ„¬ôĄß÷ý‘ÖŕSĂ%Ŕú±z:Ą Ń4ě¨ŢHoI´Ń9SüľŽ§čsLž¶čI—jbP{ž!݉éíńiyßA҆P~ľ¦Ś‰‹I6š/ń™e1loNÄq*˘î$Ţ#@vA÷˙vëŠ Z_©@„˘ ·”71ŮMZ—Ĺ]GCüŰĂ>MDĂŕ`Gs+>ţüq‡ {ąVdÇ˙5k†rh\Xę9rŐâţm¶Ó¬o\w7qĘn|®ym˙xPOĎ5>QuŻMßDÄŠąő’L#ë8şřÔ‰HrĆŘŽ}*Ů*jîjŕHü‚ć6ŘEpXµÖ8$ʰQĎ ¦“PO†€ Ş­§)n‘B{×#őĆK¶Ő‹ł±:‡Ă?2 ę6p äÂŕ¤ëfč‹\3Y,†Ô ܢ#ęK}!GA»SH„Žq7Ŕ]şzţÁi®¸ŔP©î, ë±˘ŕŚ07të ‰@ř+ővön}{~#ݧśh±ëý_XˇJEB-”ĎĎ÷Ŕy\0¨ s2„,íÔZX"§˘˛ßšľ —Ĺř6ď?Čwé0lť÷ĄéJč+Ľw>„‰&(ř©Ç áËőä†1{»O•čwŤ#wáťĐu^u(Qb… ń±6ç ě«8;bš‡HnďóîÇ#ŹÉđ­ŰRÚč«süýs—8©‘ěăcŘč<ýŇĄˇŕ©Ţ™ľ®rŻCâz;ĺ ‹K,·& : Žtż¨^°•±h7Ř•złrs8ä<@^špé•˝Âë‹(ćÔ>ĹŞ{9·SŐ6¸5v>©¤Z<ňŚuďö,ŢLđ Öj,öAÎĆíŔ(0Ť•ŘíďŇu'fŐĂĆYű+•”ÇTŔFyMjEĹ{ÎŐÝŤďź’·Ą&¦}Ţnł™°_ߦ úꍞq±ŕG…ÄTębëUőĄ:ňüÖµA‡NŘČÇą˘VĘZZ•ŚxVy“Çt!âľdńÓĐ0ŠcÓ=ĺ9Rúţîş05*tz:ĹśĐrČĚ Ő:ç_đzR­Ő·ë•íu´Átí2 i Áő0ąˇîŇáńýˇď.Đlm€<¦šŞKů°ä}&2ÄlőN{Ô»%î™TŐ,; ş•…†ŮÎ4&uĹ*3ő ´tĄő,XÚxPx…ĘůřvAwĽŇ:DZ_‡F=ĺÄ}ĺňÖ6ěiď(ÔB€WŁŐŁá~±2ux•Ť™ćxAaÖ·mHľçąNţłMúćz~:Ř­Ń×›µĎ ·á˛ .{´/ű(­Ţň«™dóĄJ¸Yľ]ž»€]Â&Ókň¬eef‹á«‹tí}ě‡áYžwŐ¶X/®P[-›[?Îr덿­ˇ·ăNş[ő‡ůůđĹ ĺ(˝ĘË%®lBÖl[nŇĐśqíŃlM†Dv@˛úŤZt”™~8ĺÝÓ"zDźv˝?Í yđĆP¬féÇZ¬^G/ĎÎëNčđ'Ś=űᨠ"üÚúĹŇłrÂ:D­Ŕ¶¬Ě\ŻŽpu°·˛Ż+ęŤfyÉşvůŔtŶM2“[ú}»-’÷,X3Ţ0lÉ Ź’Rt/ö»b”ů­söŤt„0Ĺ­ßv4‡F$”ăă4ÍŚ|uŻ+Ä…›2ÍO/:wĺć°•| δ¶ŠJŐ•4}t©G)fČöńföŚ{\çŠĘań÷aÇ\ě¬őóÖ°všP˛ÉXÖ5[B ¸P†)/5¬Zި<ĘF˛28Wµőu ߣ¤ŞVáGŐB2S?Q¶đ,CfTă™WÜ_*E˘#p~´WöĆ6.ŕëzű·ť'“ł\ĂýŮ:aĺź™č_śÔżÝđe W&ě”Ńí˝jĚM±T{dlâP *R·öĘ@^7#`¦7©R)mg‰ż t=2?ŽÄ†ĐFł°śJ(Xcpjt°tŻöĆëľ µ‚iD7ŕ –ŚµĄţű•«Pˇ—řo2űŚmH8ęMš¦ú‡Ósać>Čî{ů% ”df_9Öőćú1ď3ąÍî+'Öż}[´˝´ä2[ĺüŰ›7ąoĚ?]iU)Ú»ŮĆŰŽEúŻIÝŻŇɧş*Á:öK%onő„b=Ui8Ť?Ş…U°úb- ‡‰nW_µVqH}ťT\Íš&×ú×gşSBź>ŘŮşB»&dRTŘÚ&öÇ`sÓc^Āаďź^t‹žŐĘ+{+†ÚŮÍsÚ? f¦ h›j·‡0µÓ“„ÎZmü/řÎćZ˙2ŇQÂČúłO-ůc@ŐĎŽ ^¤ń´‘vÇ4Źčőë f‹ÇĺZ8ł•Ľ0r†·ćKöóv˝=X×giĄÂgś)Ĺnů,<…†K6‹řÂţČ”§ŚË/~.°Ň ,slť‹}€rYI&ĆAÄ!dGGÇm˝YÍUNö5ţítŠŁWÜq%Ăľ˘ę¦Ăq»őXwŚuF˝®v‘´}Ź1đÄSCk#°÷x“đŁ*ӋÇÁR ©DÄ‚ŔŢBzÔn Ó[‚qlHÚ‹ÇßÍQ‹?‚ô*HŻĺŤ!!¨¸ť=ŕ& ÄšWĐŹ9,S° >¬ţäxäXYĄ{- Č71…Đ@x0dő#_1 ‹,(ŕŞŰZ‹zCIFasé„ԕ墒ňѢUćXę…‘‰™ľHé©‘ţă8ŞOćÝťsX4·­•ÜBÄyÝ7s\’Šŕ\PGžKÄ— ż2!6!µÁ@úG{Ĺ8­A ţĽĹÁ‹·Óű/y3]z ¦mQ%>z,ä"W (ő((§Ü÷íä*“ű‚[2 úq.k÷vŤ§ęÎÁĺ§č·[z†_­Ó*h˝őÜlđµwÝę9kjÝleŕ’„áw›lnYď1ÉÝŇ™lˇŮ*–güŐ}3”RQÜfňB®âŃ–üĂź†cĽm˝ÝˇćĆvj/Ä q&HHî3k( ]ß7ąž#ąĂ`FşŘgŃÂđŰ;őkŐ0Ł•č>Uě…¶Őő0QAťÇĄčäZ|LřÁJLÎ!¸Î_§&«Â`jLË›Xh¦4F‰°m.7HÍżDżxoĹęLCyjđµq†šßv Ä ĆżđŐő66“íÉŽĂí$jŰŞybGw& ž7¸,Üő5Íp·íĚeË„LĽa/m[]txI˝Bl5§ •ÔÚcűő?MGş¸/c¸«‘“Ó„ářöäPPWfî ;·â᲋XoŠ>z*^cµu6r+ţLŮúéžŕ>AĄńCV‰1áÜ÷AěD'ťwç;nŐNÂKÚ‹®¨„¸Ő°VY¤Ľ,†î‘F±, ‘ăűz·ľ p[Ő\A4\şÎŇÜÂŞ¸r!ö6u!$RŢĘ,ñFBéÉ‚ţçÓÁŢTÚµLB"ä%9´xź“'á%˛{$ÍĚ.D›Gź%ţ´HČÔ˛3Ů”ĎůdQiK¶vônÍš5@ä$ĂIv›ą4۱J˘Ý'¦2űŔżÁţŔőý|É˙RśŹRNyrĺi‰ŐýK$űTŘŢk*čˇ×¢‘ČçÓÖLX` a¦×Ń ‚e©eľÜs&0ĄŞ+HRÉŔÝú•G8[BxĄËoŢĎißB~2Ń=Ý…˝=µ¬î!ÓÁ>ß>+O:µdbXŰŕ} ±„đđĹÁóVˇëî˝… sVřĎő×UnwA´C…rµWY©ňĘęčüĐyĆËÁŚb9ÎŘ`aŽŞżbRáVŻ—¬ęatĚ2>t’§¸ŔÇiTqEíwď27VĽ±oĘŽ˝1@'˛8ł˙Ŕćş~Ů9h85Ü9 wľ˛*¶j—ýňű3ŰpľZ"“¤_7GŰÄ˙s"őÚ ˙ĽČÝĽĽś!ĹďOa!ű]x7lZÔ-ünGޢéa—°-™ ’y łŽĺ¦‹Tu‡ţTőrěĚÜfű§Nçý­T|†«~9Š Ő”…Wöđó9F„Ł »ě׽Ͻ,íaćÚaî!ĚÉ~ç3-řş¬N_Ň;TÄ€Diý¬Ú޵"LđŢĂ2A6ůđźáýQ4Ó`éĐâ=I˙źH0˛-uđ~Z»>ZÎݬtlHČn—Ë×#wXó¤*jT.D@ţĚlÂ>&BvĽ6HŹHľĽ2¦ÖG/ v=y…ˮͦ"'Zń†ůE¤vCĄčKńţ&ä=KÍŇű'AźhuŮO±né§Ś¦™i™€€íÉě=ło—auöFE¸ÁgŹćlř·]ç®sýuµäI·vňöe[ë'Őy<;sŽs^dž]˘@€čý’솮˝h./ă™=['T¨xÉéFkŇ[>ÄřQťmWµŘáXĺňšP>’XîgZÍâ± /–U§Ů7t‚A Äź T?⏵–ď˘ÎdÇCĹŮ1} ޤS IĆmQ!‡1E›yŹť.‡„)&oâńˇŢzC¬>1Ü[xóčŁoSŕüm¦čŢŻVL˘vkăę@7Níw0>â¶öQ_ć|^g{ˇąą8łşY­˘×r¶ŚeC#ÔÁŘ·˘¸í ď•ěĹMÁníł“Ľ·Ŕ×xöł< RŚó Ą¦‹ýÄ)·XÄLŃ4Ź,šĺÖůNץ=/g@¨ÉŚ‹GSjö>twčÇtÜÄHOL7énş ˛Ůľ¬Oz¸I\ĺd%ü¦‰¦j޸1ÄŤ éŞŘÓ$!Ŕ׏-ŔdülpÎä0î^:wíćAŚŐĂfuI¦řÂ! EmŇe´ŻĹ‡ŤĺÁĚç./R»×Bš0řźśżţ˝5vTÂô_>ˇ˛cőwŐ#yźIŠr«Ă„4Dý4|Âřą­.©ßŞ ĘEkŮ-$E–^ţŠćţăF2ő?6Żâ‡B›Ç|ŰJ·+ ´S䎑‹ĺó†bż*z:ŔÚ…ÔzłŠbş?IÁPšP"#0“H ‚,ôXČČ«şĄ*íóE‘ŁĆ0oSńŘ1Đß#­ąľ’#ŽťvK(0ŹŽ}÷{U°<¬z­@ĐΙpĄ?ĹÝ?ž#¬ŹE˝Žç>Łßń»p3@‚ʼnŃYąŐnĺwa‚Ťao7n—r5óP ˘IĽĺŘĄÓŰŔ.DVČËoČdob+˛i•ż Ä ä@ő>Ę>Y~}z›Se7›.TŃšG A7ÉžiŸ0׎ii2ÂÍ<ÎKŚ`ŻÔqŘő«F ×wűdL ŇŠ× ŤxîS™™=Ó#Ă' üCvżÚ ź€aÁxÄš3wôö0GŮók” $/® Ë7@ÓżëşVÎÍ6¦+Q]’CaęäyŚâ¶"Ü ŘÂťČes¶‘2jzöjpĆN¶4¸X\ť§>@lBUÝKá`™8Cşg¸™ĺÝ;iť3M2Ó«ú˛¦\Ž P°‚. _¨?đŹ"Ç•Š·z!@÷’·.ň÷’C”4E¶{Ş@ű˘–s^‹yr˘ Ę÷~ć4(¸€\rĺ´Tv?Sd;EL —)¸ĎĽfŽĂä‘éË4Í7áýÓJĘą¨źYĐ Bzů ă2äišÓŃ4­ĺĄD—ńĚs´W‰…/KÝĄA¬üšŢ¤h} D4TÔG·•*Żř¨Ć¬’M@«¦äy­I!IÂ8ťň‘[mnq'2ľ°f?SIŻ9™JP ®ë÷Kßą"„ňs‰’.Zţ?ÎćáČgžčßi^»˙Ś}í´µ şŞŐfXŚL3RٰşLĘH9"x!Ş[|«×K˘VP ~űđfŤ–tJä‰Đ Ö s’A˘ëŁ$Q~‘5q+’AšHBťô¨Îü™eÔÄyO“ÉXh9šśÔMüM¬đ["Iź‚tsë¦#ź@×Ţ I˝Ť˘„>ˇöîč%[’^ä>¦ą(ŘO(ńX–,W) ¶<“”…–U”mɉI ň7ŇOwɸˇi;ŞóX÷-‰Ż ,Ú*"ŽTG´aŠCÇĆ“ŚŠ`ĽŹTĐşÔÄĚ}WmHK…1ŹŐššZgµQ™ËĚŬ^˘9lÔQßb®Á’**žş :%Ěc¤B3¶xĘ«źŔOLy‰S…á÷©đfĐ"©ŃxŞ 5ó Ý´Y?ěĚw—ńJAĺ=LIJ¤ü)śbÝ˙S®Ç©LľĚWŚD:Ş]Íâ'°Ájď´Ůý’U;ßkć6Ő}!źŤóĚ{zŹ>2ťůüÜ=ůî•‚ÝŔ3đ#ů®öŃÔ ňĽVĂ•$źä;ö˛JnlWrĽ–?ŽĆyşí:îŢńí¨”ÄN%c4ĄO÷ŘÖŇŽr'é3:Ú—ˇ<´¸yójS®‚JŽ~żwöŠ~éć—ĹY»îđ[_ú˝x?¬ÜŰ‘,µpńR…]őüQ=P|UütKbqźýę˘ LÁÇŮ%ű Ţţ’BÄî×ç]^ľévŘŤomÍAS]ŕŠ5˙TköG˙ż˛şwěPMé¨ďXk"Ăňá`îXăU°ćëĘĂ˝ż0Oó˙?€ŕ~/‹¸őÁ¤Ö˛»JŰLmhű-V›ÂŕSö·ňfĆö1ˇĆ€8é[”äµĂ.ŕ¨xŃëćĺśf% aŠ~#µö@ÂÔ5äz°Xl0|gf˛ …’´Y ÉnX(©Ą?[ŚIźnC8?_Ĺ÷ł2<,,CYeUóŞ<ÇžŕB˙m¸5ŇWqÓ_‹¦`YÂÁgŇÖ˛!lÓ8Ć©R0ŽŢ‰-1nŮ*¸ěsk'–Ă·ßŕëWG='r/ęé8Ě« üěP+¨”Ł|Ęđ`ŞB1ö‰›bžë¬šh7łÁR/𾩢¤qa–ŚË˙üůÚ“z’qX‘ąkŁ”ěĚu{˝°qÔË‹yÂŰ 3˘&ăĄepĆ*Ťu·“55*é—8"Ô ’ů5ś)L¨ Aý7°Ů‡—‰Ş›6®q^­Y‘ĄíÚkzhŃ˙aŔĺ2qľî›‚h8oxTdĘnČiŤXp PĹi»ÍaBfTY™ŃŃČćANióŁŐ‚Ä´ Ě‹EŹÁş+iŇT ;s‡”G±”üřR„ ¸N,wvŰ+Ű}ŔżíĆ”\ĂŘGĹpřřÜ đ>Š‚#¸Ł3«çZM1¬¸›SŇ.:B®ŽV˘ŮŚ,żzĂq“\'€ł©öÚ?sîAţޞô‰P¨=7˘ęH–•`f„^«?ˇ¸PzęxY]-Ń>9ą,1#`»uěâFLĄVLĽô%ĽňÚGT8Y©Í3°Śü…›éߊŔmĽ€Íűz´.Jǧ—ř3TďČŠőG.]3ńś¦÷xÚKÎמJ z#놀h~-Đ[5Śąč¬Ţ¦§€řażTĂbPńµKrÓfóşx‡YľÍaXŔ-Řç[bˇąĘć«`}·@,ĂbŹ Â]ß4ĂčXr…0/† ÓîK´úîf˝‹EkčÝaH]ÍCŕÇţY)מç•Wrďp™ă2‹U-‘2^ÔűpşÁĽłÉ°zďm'ńBw}úĺĂž„d? L%ęµI˘'ár¶»ÚÍ$_vfm‰4'…ˇvŢĚźF·f«‘®ÂáÜ zžWI‘Ő‡NżA5€ÂÓ–~ !ĺV×Qŕ4‹šö‡*Ş&,ŠŐl»CŢ&}ßţçý®Ňx–±:»FÎ&ăsů |wë)†WWńJß{6M…Ôu–A@2¨¦ĹÁŕ˝Ĺ<ľŔp4»%$Ö@iDů}0}ĚfHzÁëŘá0Ě–@5řŰŕ2ŁĚ11Ďßm±^·%…­Ż_VŻËŔkwIL‰Q@ŕöÔŽWž¨ă­ë±Í5ş„—‰ŃŮŘę¬AűKˇ“˙„Íâ‹6ld©5‹ Sv |ß„„ŚaZÖl˘5iäç°cyČěŰŇ2ă°g Ţ9@t*g%řý\;ŕnšŕI™›Ű.ńÎőź‘kĹ_ëť1őĄAźnyŹźşĐň©¤n–¦meÜ«°>ňg«Bčý_ZoNłfś/^˛,—·sF—v'Ľu'RĄ„VtvčLxŞ-Îu2˛1˛q˛î5O$ Ľ+Ú×Z[¨”V¤źN^l¦}Ă…čşEĎ©Ž]j~Ô˝elŐôßrtz|щŁŇĐoşTaŞč«–ć¦4yËëćşmźŢÝó!űŠńîŞ×>Ĺ™÷q˛8â,±‹uiÍžô힣»µÁ)Ű0|˝Ç'8ßÎJŻ#čcLńä•€›˝zÉX_é oP)Ŕź?ěĺáϡó¶GčUî.Me­m!PĄŞ;|&·ěţĐE•ă‹.Ň ő>Ăźíśx–Á™ç_˘ŹZZá‘HfMήؗ˘ŐŘŔÔŮbĚ[µ­á×Čß’ˇóâ«Őşwjţ/ňVÂ3G›«‚CŽ·vť30ő6 c€öĹěďĹ!ok'dďĐźuÜĚ,›nÔműnÁËŚ_ôÎ0‰ýp×\äĄv¦›Ë™c„8â \ćČ“»¤w„Äľó'÷š›‡9!ě:2¶×Řů‰Č[°–ł®öBEÍAÜrUřŐ*·FŘ<ŹíŐĆ3»‘·W†¤Vů˛^QĽŠaq§źđ;ĽÄ“ߊà  s_A“èy!ânřP,Ä. ¤Ř&] eAYbÍŕF{€Ű†%6& 'Nř!˙\}šĂvż ¬Ó<·QZú¤7ôiőđpBH1WĺPŢŕ‰µ™÷DťŞuvĂt¨ěsGłi$ń»ü-Ô©— [’Wéľx Ŕ_GAŢ©ąHÝÓŐvcÖá"m‚ |ÜÓKYj5Ś›xŮ8âP·Ĺ ›0 ¦•¤OcƤi:ĘĽĽ¦t’"ĺ9¤VE{¸ ľŐ"Ĺ"}ëţ>[çbwWe µń–Qđ–žTĄ_/řAmyČŮß4HËkw Śżçmú 0ö7p˙đĹÍ̇N®a¬1ŹcLz÷Ľ#Q­˙TÉ ‡đĆľ${!ÓFOMRŤł@břSöv…5÷¶H–,^¬î”¶ęÉ+wµNhłŕó¶Öť©Ž68ÎŐîXĘ;s·„‚ 7´µ í„ťč'ęT×G…jŚq¶4ošĆÔąA@`ČlšvßűŁíŁËć̇ ÔÎ"íVg–ś¤ŐÔ0x0tQ‰…zšçÓÁ ϸa´ßřî¸u:ś!•&0«"ŻÉް]>ĚW€ł;‡‚>Âđ—Ä5!ݡl­ÜŇsuŃŞÚ›;&spÍ"©đĹë׾¤úxx7af‹ńv0X˙Î"Óö9üËoęţ88 é‡ ÷ 1Đő0Î>ňzÚ2N0 ö·'°…˝Ë(e_9ŢĆßąý#VěŃꉟzx‚n7rŇŐN Ţú ýk,Ţ Ö·{'´z_\ěÜΕľ…t!ř‚AKöWĎuĂŔÖˇJ ćŔŔzÉ`‰”ýbéd=ŽT‰2Ľ=ÎÚ«>Ń´´ş“>“fUŠbç…mç“ÍJËyK…–ýšťRdZaY“¸sÝLr `Vö٤ĺçzĹ:Éá9m‡-¬ŤPŐY‰Äç›ĺ^¦ÎHjb{|8 "üˇ˙tÝ$žě*ž3RQâü(¬‘ßĐI4˛˙%Ť†“ŠBĚ#‰×r»Ě@<ľ<—KbuA«ę±4—”@ŞZŮyS'äZąÝ js}‘UK2FŹŤé…:M‰XȨzú*t€Ą‡/ĄúŮyxşđţ.ł¬­ićŚw^§mâ#gD·©°%Ӕެ+ŇęZ3=e^—ÝŢ~‘8]3­Ŕ·AIBőiÉÇUqŃÝYL%FÎĐě|FĄ×•Jo0ëţ›])¬G@ˇ‰™/złúä>bbźzÎŤ?㱍 đ[Ę'Bc^Qľˇ\DV*PÁĹPß\RV>Ă«ŢČDâ±Ç4””„éJOô~úPA.«ťÖlZ4śĐžĘ®)¬s8‰”!B•Qul rň-?ަu ĺeżń©tŞ'0r‘6%]?ł˛8sV‚”ć˙bK”D!8śË˛57’Ä’Ą}ÚR!i÷ÝçwF_˛,±ÎDÝ^ä©ç(fľ·Ű$í÷Á8$śUŹű_ÁIIČťŔmZBç×*¦$uiAzéßźPBŹęW˙9‰hß:śůĄĹ45‰ů«IWJís łP0z]ňţĄ‰…éJ>4ő© Uŕ’’rI#3­TËR‘In™„KťTvňů@’Ş•Ž¤ľKâ Rć6IĽÇ—afSeaß‘‹/®’Ľl@S‘s©p÷â•ĺĘťy®ÔÔSeM6ąa'M#łą¤ţŕPqž‘Né~˛žWlfXÓŹ]‹Ů{'ĺT"3SUń–¸,ˇ˙‚V,Í\śţÝÄŻÁúc¶ę–™!‹j‹¦Ŕm°cëUm §€FEůę‰ÜFXş4B޵©Üę8HEě1up$oÝýÉUŚÍř{f/7F…łŰ´=‹gu0ş*©}]u¶ň6łý÷ÖđÔiAąçýŚ•f#»Y$]-tktÍ:uŐ’\PuTę032X4€Ýö:˘?K”~B#¤i锜mĐÖĄł1äĄíâ=HęíG e&ěí)'@ µiĎ_`Ahí_ $Hí¶Čq°(kł X±Z´ČVř¤­ ,h1ţđDjh¦űŰÖS+  ńÝ€9”ĹÄţ&ŕeýiŕÍł OŹćš,Ů˙yÁŚ…Y†˘&2AuŇ(ˇx­–3€cb<1€‚ą´”máP‡'Ó(…tJ9l:ąy pŤe…Mp-•ĐŃlŽŽB)–xÉY˛rŮý2C¤ěŃÔá€fßĚ,{gďdf‹]ł 8!}¶—“áq)Ć­¸ó¦VqWĽ‰xVŚ Zč ÷´7utÍ1Á©ayC]{sĂ_Ţ%űa‚Eüßő¸j-@¦]ÜtôȲt&ŤIěŐ`míl;!ÔT0Mş&Uľt|EÇMm¶‚ůމ_Ů*yYĽllÇáŮn.÷ˇÔÍ_Š>@ˇw1]€ßĽ™ľAŲ“6ăůUhëżK˙°µŞ÷ľ)¬čJR߯Xî°5ÚůłŞ=Ü­yâPZČ `>‹%wîXŞ'Ma·GLThĽíŚ©ŠÔesłb#ŚŽĽ˛§.~Âęš6íëÂS ^AĘzšąđŚßG­ćňşčĐôń»h=óţF/46‚ l®WíęOÍ©‡N𨷢ÚŰ»ľǝ虊zBeßFF†,KRř±ź0Ż+© qĐô‰6ý-| !WÁS[‹;sŁsůmÄť+ď#\’…ČAnŤŠ@I{“[“[›r{éÂ=ű©ŕÎJć–I˝DUlŠKúLˇN.a`·„ Ę”€Ů3čŰŻw ‡ěěţóĐÝ)E‘l¤.P*ťtAq+A(-áý šÇ«$ĄSŮĘEČ‘µ«•ŇßI6=$őçBńĽ?, ‹T*işź¦Š1i ź+Şź“˘Ü ŰČ>˝q‡›MŰVŞÄčţQŞť4aáč32‚ęm@v>}2„ř#¶0Ă˝őf“óŇ⏎;Í•ő3»?a¸Ű9PY‰î˘‡m2őş‚TÔ™µżý#‰G×sI)G&Ş6vk÷<¸9/۟ұŰ/:…¦¤EFűëgLŐ<L¬Ήś­¤Ĺ:’®s¨ÝŰyÉQ+:â%ÔT3D7˛R9➤~ŤşkŽŐŢ©„VSÓb„ćS­Ďaňx˘ÚX—äÖĘÎżEE„…]ĂM{=ŠŹ}Ď,ÓŢëMS2!÷ Í&ôQ” f¦eV’>.C%~™Ş9ąo2G÷UŃŢOJŠeŔŃF%N”NAH‘şŤó¶ç kú¶ŃĆjĽŹţ!•l -®MîíPi ŮĽŞ§8„TۡĂ×Ő¦łŐ Š ±1uŃ ‹E¤ q¬URôÄŰ\šüłOë‚~ÚŐ†Ź ÜŕTűŤFżŻęźÚÇ7k—rgÖ>)€!†ˇŃ‚Ł’˘I0TČĘćäÎĚ{ťJ])^B” Óâ–hFĆng}A¬š}]p$j¤‚°ą±ÉóüÄţĐćţDBą}ŕS ýî„ÄůK(DS?¸eQR.IŽ´łů(„ö9úä#P@‹¦Ł}ď^˙ {¦*ßIT22ń4< €ZNżąé đţş’ď8aoź„fF˙}\ŞňńĚwS·–˝IĐÔçĽ}Cb]Ŕz—/KŞ"jp” éĽü63â$ň^ś~W}Ú‘x «e”ß"Üé3U/¨P?Yĺo“Ťü«#ë÷¸Î\}®’ ['2Řu딹ŰŃéňťUÇ ÔŘjÔÄţ—‚.ÔÂ,Z{ú%T*)h @Ń©éŘü ŽŤű}5ű3ŠżőQy†>ăr¬™şwŤ€BŻí ZUÇ3•}§NGëzţđ{mŐ=ČGž4éTϦfK|gtjňµ9‰otks@‚xTÎŃç CPB˘Ď‡ţ Ś/wĆ„â6ýg\„\¤x÷ěŮń:µľÍ4„J|-Ť+Éáő‰ĎGSćĘ’BTé:T¶¶°~o J[YW ÷ŮÜ·Ż4—&śk¶ťún x4ę3¦~žŔä{}ş#C(jÍç8>ugtB1 ”┺njýĆä˘9±moIń©BąFL?˙|[/ĺkr˙ÝQOERçŠx§:CdâʶŁŐţźFŔíFĐ; Óřęü•&-ŞŕĆ ś'ö:ź”]út„´±3'ěJss†ý©ńŔţ±©ĽŹß…Aµč*ʼn˝ŤčÄRu •´ŻJ'ésµôŢ„ĘčÇ?L˙WHEě@CÖ€•YŰű7múęjb˘ux|îČnHÓĐ#Ž4Goä&ę™N0©ĺˇ(Rľ»Co€ž)`śĹ ˛ěb?#}Ĺ“…Oľ-1ńpňőę3BÄ/hRh ´©ę ,ťCëę?IýÉÔźż+“Ňńm÷Ü©ë Kqu8 ĎÓ5ÔŰ-lŽK9\ÁnżR۰ľŘűfT€6řę8¤˙w1öaÍ᨝—«‡ T±OŘŹŁš „·Č¤Ŕ'O”lYß(śęIEl 7Cb×®ůŐ Çc!Ş_=!šv'!ę"Ź&•sßSbú@Çŕ8:pąÁDyš8JÉžR(DŤ»ÄőO´[O$î(11)(iĹÓăĐUoo·3NZí§śÇŃ›wďx•żaz:ÇöořW#F­n+@ŕ´]!"UƧ2śČůݍ• Ä_Ő¨H ©çK!ĄµI+ ĹÔúćôPéSŇŃa5HJ}cźĂă Ů[Zyi Š.mŹqdĄlDđ§W\|*y lěöŘ;»TEĘZŹ“ęN>ińo6eá~ę!űr­?KY ˙d˝˙ôŞšnÝĽ’©©Đý¸Qń÷úüzß7 |®‘Â[„­.ńŠjÖ{lő]„l7M3n?1&§&EŐ«zź |ŘMŞ»}IĺŘşyľI%¦ŃÁ ®Ď¦7ę,ű2J}¬·H5 öO”MĘńO†¶I•RHŚvě»<‹VT”~\´1¦Őýö„ŔI$¸%ş…ż ¬»s‘Đ ˙Í Ϋ’ ăćyĂŕ¨Ôiů-Î Éřŕ­•xľ˝D®'ăPÍĂÔčæó;ˇ°śýVOŐ€ôa[~'ĆD‡đĚQđłĎę@ Š29q4 ďjzç ŃÖéú’ű‡dU˝E÷vŢŐ×ńS®Ű)ż§ę×-#ď\)ů纍ůŘ_ř™]ëć]۬˝˙ĽCR}ý/oźµ˝ýyĂŮ'H!¸ÔJß­ôĽ$_ěSOGóC‘ťĘ?ÔĂJ é'|@‘Zę*ZŻJ:Ř5µŢűGÜOŞTń{ţ×”mş?j',EzŇtŃ·ĄYx5UśV<ňŽB•ŢbÝheëż„* q?›!”¤hŐç8^{řtÖ¦Du4şŇ7Ű’_ʇ_¤b¦Q#ýGÜkšc„ąÚďúľ•ĄđÝă"Ň–5ŐĹ?U¬2…99´5Ĺď¤Hýł€Ç窪Č9˘7”RĎŞ"’âŰěľÄĚň}Ů`Ĺ·ý’piżiÍQíű×jIET>żoŇ•EPqß;˘®s,Đë?@‚âÇxn€eq2ăŞÖ ˇĐţç)ř°:¦¦0<ĘŚ`€Rŕ—“fšr63Íđ#\ĂÍMRŔĺŃĄÎH \‡ëMJ&.zwŽ47±8ę­pݬ´Éۨ©“Ç`+MMÇ9ť÷4ˇ/™®V:lN…łúŕI$Ó5A’‘iřBë‚ÉsfëR+^@fÔ+eE‰hř|•é%°Ń#@ţÚ-!ËQ@¦kć^§išędY*¦tŐ˝2!4Őł®x–ë|"đ9!/XżpĚđ»&´ŽĐm 8뛀—‹c´w=¶®›´ý¦_i€0>Ĺ`Žnqüő ‹Ú.ŕŠy1nVy€bV3@ü7ő.řo0QŞ´8ňHĆ{×HIJÎŁĐÇ—[ŤŕW‘˘ČĹ  o«ů»Ž4»đí.oö°^ç…ŕ#čş÷/(˙wľ"üPĺÉůő*üB~˘ßiŻŻ .Oý'ןĽ=”ýď9̧ň÷čňÁ`ýřyó~\˘Ó˙őŢŁ?ôÓź?Ďď+ÍÚë꬟ż¬ř7zĐÓ˛íţ É×}^ńĆO»ň’ć|}úžú<ű,řoük?żqúxô8ű˙jłXŁţĽ|âő[ćąö“¬~g‹/Ę{–ů×_7ýéµÍÖ‚;\90É=uUçÜň#,z§aé$†Î˝xmÖÓÔ /ČŇöfqŠĄ×{€†7x‰Ă˛`öŻ[˙YĆδĦŁN ´Y<ŕŤRFHŔäŮ”[ ľjIuy€ˇp¤"f^läR rÍHÔ,˨ËG\ËĘj€ P¶msśŔŠŐĘťjüb;‡/ xĚi2Š4ÝĎďŹ[ŻÚÁ«ÚRhۉj"ď kK^ąpĹ yí˝AhďË>đYoőÓµ;„hAß‚jĽŕXóŽ\ó\Ĺ0Ľ'ąe‡úáz đ„ÁyĹŤ-~šz4йà ®uÉO4ŠŤ†ÔěSE+h%|‰4ř]ZŇ#™đÝm~ˇţPE5®ĚĆOÓ†ÜpĂžjĆçd®Ř:˛jĺ„!«_§vyľ¸€‚řîsO*»ÄŤ>8Ó2äKxś‹F†2Ä2NvaŐŰyË[Ăś€ÍĆ^ľ‚†˙iĄĆG ´H+Śň_UQŃĂóç]ÁŤŐ‰py›¬R·sĽťÝq‚l•ů‘ĄĐŚí,–küĆXڎŚĘĂÜ»€+Č3ŕ_‰Ďz`Îî‹rMË ş"ă tń.gÖ93âq9Ίţ&këBŚř®ÎşŤ™ne»oúp âŘRȱ¦é඲ƑÄPŮĎ)ŃG :ůÖG<"©jťľxˇŹ/i‘Ă˝âÎ>™EÔÉË3Ä‹éi1ŔÜubĐŇP„ „Ëíľí›íCkQ>1 Gd° OľhĘ€?šű€żÁÄfQË~«M‹V1m°;:`“X/vj>¤xL]Čľ»ŇŢF–vUXěęTí5KŤHg îäń |%VifŚ×ç|‡ó}i'÷’  }µ|Ĺ‹ŹARxňîů‘GRæĂqßĺv;ŰÂ%0óKbÇ OÜqKť…’„Vú˝ÍA  #˘—ęLăćÁ®h 5«ąÜŤšŇźĎ6čkËrŔʔ˲7Ă ş$Ě:3˘çř¶‹Ŕe¨x]†Áŕŕ´żĘKLnŚRbx@¬t"’űgť1¸%Ř—fo[Éâ|ËGc˛Âť«cPßFŮ5hÍäyŻ}Nâ'8 Ř» dŽÁ[Ń4@zpý˝/č1aövFĄ 8Y"÷1\9dŰyá÷şĘ? ńs–3Ľle’±é€L@<' 4Í"&Ł˙Űň7V©„‚¨Ć‡1”r±cUZů÷Ď/ÔS‹niJŰn6Ť ¤Đü]ţĽ)ËK«ĽŘHzçŮUä¦NvÔň@ęâ•ij|Ŕ^oxDIďÉľWsü›´˝´ĺ…â“`>›|Ń÷ˇ3\ĺ‰xĐ|¶!óÔŁŔ =Ă[÷ç[˝2ż9­Ů^ŽF§bCŤčޤą»ŁáŃ!›űĹÜěmĐݨ¨č'kÓź‘€Ůp1ÁŚP˘š 4)i˛984˙Ԏ#ÍŮBKá-"…,z]Ě.ś ±łć¦HŤ,E;niv…bWÔh¤ąŤáLGˇxÍđ2ăHR$MKN1ú˘oěµ^”yzÓđĐĺćm‡çFľ€B…ž(mD:˘‚–6m…|žj ­żÎÖÓń<ŕU\’R^ą·áżéŇ?±?o3šAK¨ă™¶Ćm[üiřqűó°ĆâĎvbfËŹ;€¶07~ÜÔ\ZJ†źĚ?–?˛¶1r lgĚ8ý‰ů‰ýcăö´˙Ľ›GĽŤO_a›!ĚWŤiŮ Ň,ú@%pY76Ś?Đ8Äú[:’Ęzí‚{}±.Ň•_Ü~Q*Cnę]Nž%›ä× UEęťËd»żZ08kń5¬µÍŰ*<ťÄ<ÝĹă˛\µRŃŽo&äaĚß/±”ľSÂOu'Ťhŕ˝Ţ€) ÔR‹Ż»›^ÜcS÷v­A´|¶®‰Ő‹ĆvŻ„lđÖ‹äš«EF^BÜƦQŁ6“ďŕKF_ş-âîB˙J&/°oĘ€ŁjmĹEńňKľÍŰ—)…¶l-ÔË,â[8´.ÔŞeJGźî[ˇézá!@Of:Ąţ đänÄhŚx ńéŢçĹv‚bśl§îŹÜ`¦”{űŘ jT÷cˇ(DźŐő © ćĂh‹Ë¶É'ěJNň”µĘG(źˇ|€“(źŃ|Ť´ávč:çWěr bŔ„?íň(ĎjMg.ˇŽŃŠzW`YvÓCAnř Ż/¬Ř”&‹/Ő/ŃđŁ#Ăsťź•_)ýZ;ŕŕ®9ë ZéŃ6 (Pţt†”ÔD©}Úv­Ů]eÝ{‚_Ýąvď6¸6RÇÂsĄÂř\u2´ăě8ě?ĂŮÁ™·ĎŕÇÁ u PWó­–çý Öi)Çť:ď‚ZjĽŔBa[ŹĎŔĆ}ŃĆ*­—a ÚćY¶XŢR “iF?pdÔwz"U4UĄŻ$ŤGgĽČ=@*®m]ĘĽpł»)Ä”M DŇîQhc9Ľ&'ÉŤÜ žvĎ?Âg+ âÁË–Ľ*8m«Q>ľÜ”ăĂ•¦}Ą/$‘a9+łw5»•Ň<ÍąăúŽ eÄľ9k0Îln÷„@«×ľÂ`ŔŠPw<ŕ•FŘqĆškµŐńU¸Q˛),µ±*şNľ#çťWK °*“©Ő ´šZŁňĽť9ŰëŻ7îemnç)XÁŚöş5¤´”đ… O5g®>ůu($ŕ~‡ő(kkÝŃ‘M¤+×?n5 M‘–ޱPm’‘MQŞe3Ý‘bŰÖ߻俪´ýŚ-»ěšŚÉ´hĄf¤]· ĹȲŰeąÚűLŔq¸{ŕ§¶×a¶÷CŔÔWĘ#{•K›—‚_UaS•7"ě1ÁÝá YŘČWq1Ő$ri±%«Î1r”­ô©oäď×U»Y:V!ußďžöâmĄř  7 8ťBŽöŢÖǧ5"l[Ős+´xďb4IĎ9ďľ-ĺ¸ íš×o ŇvÉÜÁB*şäP\»&ŇZEÂăLą rY`NÄfÄŤâ‰9*mÉ5ÉjCó`VuÜQ7«raň;#ąć*Éś Gdĺ5ŁŐý™ì¸Jý÷oç‘Ás Ş0ęÎÖ•Ź˙íe“dÔ!85ŻYghhą!P}˝ťí)аíÉ!Ę"޵jîĂë´şçŽĘ–aý×[ö°rva]ůÄęśťź˝˘»Ňë ńˇÉÝ—Đ+{ «ď ÷÷wjô±qď\đW=ż˘G¶ }ŻČ9—všTĽ6A¬/˝"LJgźOp×T‰CମúvÝ\–‘±ĽwÔ#DÂÇăęČ»-yRUĎbĄwŁkŬǭęí)W{éË­3긊aYąFáUm':m/Éyó-˛jŘ5Ç^-ť]đ©ÉáMŽ;=ËrŰfúOm1dZíČ=¸ÔS@±ă˛&¸Z1<>B…ľŃč›6`]šŁ÷Ę3ý]UÓ‚ŐÝL; żÔ÷sĂ™ ‡K†˝zµbBĐÜ`ţz&˘eĎ —ÂúĽyH#Ôż{R7PnJ—żű‡*·†ÚV9Ř˙đ /T4YŇ+ŹÂőqä úGuďy;Ia6ż8”>nt „Ô†ő8#6(/6lâşłi1Ë,Őš$H´E×lxËËc3“…7ţ†<6łŁÍ•yL&Č|3çKvł˘ź5ŕĹ$ 0o"AŐ}.đ)ľv•±*˛ÝdJű‡Ň7lcO®p$Ćj––'m¨„ż­®‡Yk/UŚ*nö.ř¤jW÷Ocnä˱Ŕnł6w«żpĘD^a×sÎĘ|Žî†µéěÚ/ĂáŘőŚ›®Ĺ©¸ľş“č§:ţ}ř{X¨ZÂć“Çj'LU«¦3ěĐTH<8'ăÜłB.lĹěřë×yt°\\‡őĄ||âpşŚ Wd5%wBtdbt™rîĆÝsP)dO!Šu¶ż€ŮŐ˛•ŚeĐőá­¦*˝,ĺÁů5Ú¦*ɶ{ĚŹt¸âyj‘ČŁĺ;¬ŇÔĽoa™CŁŮsąf;§Ă¨+áëďCpO;8ωŁ#}‹ëÎĹ™ź˘#軞ŐýîTö©3Ŕ˙5A·x°°ťž7+1VÓÚaÔ–^•ô@Wű>]C ˙ÜyĘ—·Đ~čŠô[ÚŔŞ@ď ? Ëşü&L„XÖ%@eßhÉŁě˝-¨-)!»ÂK‰¶zëXŻ^ć±[­waް«X–v'“gĂŔ˛úo‚ö­•Đ|ř9|żź&«… áÂ<» ­ćgČűî…c1Ű©ž¶KlŹŤ0~śŠűĹyµînĐ\HÇ=† „╟Đoćţxí• „ß÷·fÇ“Tíß(—–=P2÷ŕ’ąN5s(q“Íg>ălIéřlpâ–3˙ú"[RŔĂA Łűá"ň$Đ&ŕ:âWËşYg…Ž)ĚĆÂV¶g}ü‹˛Śť çřîÁí:«‡ÍkE*öĹŚÓ¤¸Ĺĺ}*OŔůě¸ÝlP}<Z­©ž°(Ä›R> îłËĘĺPvç*ŹďaeUąnšěé Ú-ZĺômXJ«§¸ĚÁřáŘfŰ„:‰& Ý•L< @gNL!IcוE¸nĹ[§łĂŢńJX÷)‘É3ňŻŚq;Ľ3˘˘­"š™(ĎH nEwž•L™9DÖž6ĺLĚ{YŰ• aĂ1hŽĺ={&č÷ěĄ9 Yż3ö„•n"ŻÉµişRł}8×W*ťŁÍäďŤP‡ämśDŠ-ţz- ×&Y‚ĺĹkG[‚ě5`˝Č1÷š­9ż]i,÷řěy€k šŻÓŕ·ý:ç ą¤ť[$í¨˙Á3Ýȶ|CQî€ëîLn#¦aKą<Ŕnżč㏠@ËuÝC?ł3DÖć;xWcr´"0ą`~°†E ‚Č”‚ólˇ-™ Ł›ëC…D‘s™1QB¶VŚúr!@Ă2Ůt.›±třB ąE©€˛lk5ň•¬ŔI…;lőcČ?ßXs'Žăݲb%«yF‹0‡¦ĘÓî~^°…˛çÍż-ě¶ęµä`‚ּŔnëTU¤(ơJjÝKtNŇXŤ™|ĺşćŃO‰ţVĄ4^mä礓[µčÖŃŚĹw&ýgŠŞöbµµ¶ušűÄkvî@L`m]e‰ĺ‰HzÔ„-v=FŽ×śűî—äRx°=ĺv©ŕ8 ęúÁëgĐŮK§ĺaČ–mÎ…Qő)¤ŕ°šŕđn`,»ăp#ë‘€5ú}3;¶–ÚÇPÄ l§fÉY~4aaßż‘őFNŁŁ!;Z¦2˘ÍÎW4Q­zh Xş]Î×@â}’sĐëť$ČlťŮžŮÚ¨"FÔ*0Gť¸‰Ü[g\éüßĺÍ » Ó|şuä­LäüÄm´ů:ážrYІŞL…|śđˇ{ÝÂ7j&~¶IVú—ře óz,~»óÔĺ®»íUikh˙+”ě7Íő$"”ŹďÄ|˘„ÄŔˇ` mHčtîX W\gŞăرă7şvvňU‚¸ěŁÝ‹ÁzĚY„oL[͂〺˘éφš:â <Ä–«ŚF¦V€¸ ¸‹ÝČ.]u9Éčë†aÎ!s¨Nm–íćÉ,A{~ZBĂÝ7o.Lő†¬©"ą—>{©^€ŕ…gąú˘á·F‘±»(ÚŠĐĚÍ’a 3ÇtËçÉ‘Äň7$w î]7XË&ś,~P\·i¶ČľZ`«q€lĘHĺ„“ jŚ? •#â·3]ŠgLąeʶ ă~ń€®Q2Ż.DW%!ąĚhr ŃYÔNĐoF®µăŮ»ě~^ ďíz/c¨SË m 9ó…,TËjç0ö ·ż˘áíť’aÓůČ“(ˇqÚM—Áą[ł‹÷Ź`ZÁQGľÜ˘ F¨Tpß´ůçÎMŮŹ"Ó¬űýh“7ßÜť…dĄÜýýÉѶ¤ň®i%ěĽ&yŮĄ™˙%Q>x^ýQ‘»t|›Čxjn7†±“ë HJ ͸L$,248b¦¬qĐŁ©J’е‰tLč|¦"%4ą­ŐŻĄ¤Č®ŞňŁá 2RČü—%OÉđQěh“oöfಜ˲Ktł2ŮIäžĐ_Ü[‘µ˙ĎĘȤu¤ăϲ9Ô Źűç˙¸­ČI‡1—+O9a‚RÜóř'eă:ć`@ÔZzJův]PĽKľőc§ZÔŘô‘îŘŻ4žď"NČŢr\řšBóYĹÜ›tňĚ´©.ŞŕÓ 5ˇČdw‡M$xłG“B¶,&5±ŕ×? FT{_ľ’;xëą‹ąćK;[1”őţ DÁö˝ FŻ]±VÁyžčŐ¤™}§őÝő—=`yO+iűµěFˇôŰLĂç‹•·a#n6öŚŔˇ]–äýÚÔ$›ĄéC|XFQጬX- -¤bl¬ź$_—“ĹýNŇŚę¤őAş!¦8e{aĹ9B®h0®łaä8Ö@Őžąg¦ü*„51é™°Edo•ÁJr{e:K˙d“×÷É—‰fK*_3cČ1}ą)•şv+ż °öÍdď0ÇbĺĐS¸D· ,Z[EÝę·€¸/ ÍyúÄĎîîÁĚBÝŹŞĆkAWŐ!°Ô€÷¦p€Y6Ë Şht¬Ę`‘F8cŘpěÂň’Ü˝˛“ďöăf„€ÉąiăáaVd×™¬–V±±IëŐ^fťC™ŮüŠB­R-™% 7–ČX7¨A„— uDČ0Šĺă4şî î%)StĄV¬FáÍŕŘ)–9FżpóTŃŇFnT ± yÚý¬ Îňö°ÖĽRŇ7™Ž L_t’ #0°úëµ@[ś‰ž«KEĆH3/”l`í<:lD‹Y©ho)űŤĂŮâÚÍIŠ­…`¶~ âZNŤ9ŽŁß%P¦zĺgŐŢÇ mÜ!wŠŰ:^寡żř0O^ă’.“ËÖ4żĄxY ţç“ÓČIěÜ®d¬hÇQŻă"ůĄ˙Ŕ—á« ‰'ž)?‚ľ\丒 ĂJk=<»…“Ěń&O×\×,žÜkžۢň0F çI1ੇňźĘX($ŻČč–•A‚Ř_jÔ ăčŽÄL‚—3]j"(MD(%§x.…ňŹó'¤1«™3ÁA¨Ág¤1ž–ŕCl·ZocĂ)‡«îľëň[ĘáNŞçČ»7žĆ<&Më1ńŮ%ç{ęäç@5qÜM­ęÎÇĄi2ĺd«ĂW7Źü«ŢçÎě¬9hGUÝ•«­c0­ăX…’SÜ(¦ ·bZŔ8ˇ29¬u”‡ŘČ>8úű„ń>eÖ„ —$ Âĺ–WÝÓىťU¨Č„^bÇÖőôoË~ô+žęßERß„ý¸c˛sŢq!䋲ýĎíqděďZ†Oś d73đcş^Ą;µŁ1 ” @<¶ )«‘č’#ce fi­»8µ3í"]ç´FGFŮŇh $|O+TJž&VÍY¦7Z1ÍŞqČ,žř€ďMnŠß6ްV^`ä-8“ëZ `˝ŔĄÉ@ ’^{ ¸rŐMC¨Ušw-{ĺŮţęóĺÖxÁÁEx‡ZhBhŇY ^ęĂŞŐ°)–;mÁ×÷Ëa‘Ç=>w±iq˝ňČ@ĶÉ<6‡ĹXťl‡ôηŐ[<÷†-¶|ýa©ŁhoO|+vO´˘X—˘čAü·ź–’7CÔr›c* ęYömÂő{şÂWţ˘n—h‹ĺ!JĺB=h:ŐŐpˇ’©ŠÜě5tÔ„mÍÇ ł:żž­Bî+wfŔě»ëëh±ger}XŢďy¶fĘÂ|†Ě¦ĐW[ë, vD5µŕ°€ë‹ž˘Ř\+ăĐ2›čě#GŘyBćmFÔĄ…od€ž¤BăéPůźÉp8r#´\$Żq}ó;Ů9°uh9÷¶@©°ÍÇGJ#?\¶P>ăř äO丅÷Ô€ďűqśRö6^żJFieWßy×çN_€JázüCU›ţ÷ŕ:|^ńJ0:hV.Ü şbnŻrç ŘTČľká&ĆtnŔúŻťGěřČGL0ů]9ŮČCľ®ÇâĂt±ńŁ2ßHmm‹ćéKţÜćŁeV´B?<Ş[\ÚÉp;»MP"Kű`˛†ę€\a"ďJ;‚Đ€!Úú•&#ď<1–Łz•@ë˝ÉňŻFMuŕÚآ€PqQˇ}ś”®ľ‡›Ůű#ŠGäĹJ Î+l/^†ĽĹéŰr%nĘ9ç©ĆáL^ž›ěj)­ů§-î|lG:„ÜB‡jřŐj4]0ËńWĽ{w(˝ ô)GÜ9$ÇČ:rphc^O¨-ÉÁ}ŃĚ-çKŕ—ź™?ýň¬WO˝âHHéĐG"FŮo^ŞWH0Ăö@ąvĹĹ®żń¸yá)ä’b +ž©îYŞsŇMg…Çwv’Âţ=ňŚ1Š\«’đýÉ·âçŹ-d ně&±ÔXš#E#ŰňŔčšQÔg;ÖGÓ}]^şç”ť &› \|šŁŽ:Ôb«=Ľíë0{DčL#­•— ó>­)N –C*2äćá_ăZlÄ‹ÍĐŹ;ĐUőż˙ü*Î0V†ŻXDŔäÚ1#đŮíŔżZ%‚XĄgćóÇŚĺźH‘ńŁćż±śEž'ącO s‘'ô°â…R‘żůŮž:5ą\©*ĺE ůh^ H”ö6GMősy •Ű&Ý“wĆ ľT0†UÖ`é'”ň„}DĆ”ź„' Â( RÉfř[Č´DżIxrÇĂOÝŢřĐS\1ÎËx!^Awĺgm…Şp&ňř<‚__Lěa'O5˙0r©iűE˝ľŚ)™)XŹ:O}÷ĘŁ«;-śŻ—× c­–ĂwJ|´[—k ©P$#Ď@Ŕ~,ďř¦M¸úŚ×:€ Đ™[C8¬lZz˛3á!ŞÍ ”8)Y¤ M IÓĆ«ŕžý8gv>aéü(ťuvUéĆŞWD öë‘ĹŚëć†ÁSM‚±Űˇ,iŘsję)ş¸QpŐě•Ŕ-Nn&x-ŽąKI˛oĺT´"šť@bé®xńޤ)¬xK[ú˝ {ś2o îÓk A´cžrmd?íÁv-ŹÜ‹űs©müČ_şh®.›_I91›FřZĂ>‚W#ź˛Ş.ćDÖřÁą}ĚŞr2ő÷*ČŚ»\ń‰v&P©(= F•»Úśk©pqµ•ëV{˛¤™Č#Š)éĂ!.ŽH.ä…Ő×gł;Ő‹Ą?6-sŘĘŔgN ®d·Ş}Śĺ˙śť·†X_Ť eşů‹m°zóę&¨üś1Ük»ýöVS:˙Î §ă ¸ /RRřő1đ“ç`Vë+e» :.şy 1Cô`Ń*łňŔ›>ň`Őú 7ąĂgî€ał[ů‡ÎlQ/ń…fÇ÷WćNÉŕ(űĐ€ 8Ŕ¬s3Ý SĘÇ˙HoöQŽü ţ·5!ë ÖësJ•Ő+§_‹'Ç{ÍŇ ľ8ŕ^%ŔŤ•¬ĂÎî.kP9®}E«xöăĐŮoů ŇŤŐĐÇ/_† »ň/F×Ëb»ĆŇýsü•ů8a>Đť ţŹůMę“«_!ťŘ~ŰťŻ2íÓÝąęŰnŻňWmVŰw6¶j$Ú4®ĺx ˘UČÖ@L;Žźv…ŰsŐ/śâĽĽę€¤íL mŁ‹4đ’—ŔŠßt«2čŽjőgůńÝăĉןóÜĽ\˝Űýź¶źµÔÎżá‹üăíIŞÄŠć†hËĽč­Ü˘AMgš®Ń%#Ä(ćęéĚ·î 5ú>(2Ńç1čŹ2r™ßĚŘ˝ˇ­ŃLÇďyŹi÷S˙ŻÔó?ýt–NAźîż;w&Ő ś4·F#YM?‰«ĚkřćĹa;MYú[ÄGíŞť+«C3Ő""î˙ž÷ő‰¦‡ľ6â–e®ÉZnž,Ô0U$ÍÇČîč=1ĐăGrđëŇä÷qMWziofoţ·ĺÖé­őéÄąuö­íŘOŁ5Çikôă]6˝’ҤU őD€üűß‘<%ßĘŐ4XŹ5{D´©ěQpŮy×:˙4ňk¸úU­"?2ŮÔĎňńŐ"5˛*k6˛Wď÷PT,}”Ę$#kJă&÷vgÇAqsUźSł­!3­;Ąg^ ~Ww˝ůQŰ˝Ľ©Mú’Ť—]; üÍÖ(±·‹Ď4ő-ş‚×ĺOßÇ­Żń˙3/â`÷Xv~ťé˛n-ŰšČFĽ ˛Ję‹oi˘Ö¬¸ćMďPZ)}ó6É™Ř\_Ő^\Š‹Ť2|q Ł3kë]kE˘ ľ<™ĐĐŤɢošcäŐ›żč‹ .?ŮÚ×n4Mý©A…~÷ţµ§˙4µş ›‰Ż…ĎGZ%ŕ˙â2—Ej褙]ÄŰÎuâhKţŤ­gúłř‰×ÓźŘďdŢ ×Ďsm•ÓLpśôý¶¨wÔ…î )ŢÇŁk >WO?(đ!1-[#µŰçkŃý% ν´ţ$A}Š_řő¨:QŹßIąÉ䟊©÷éUů/S˙ej)®Čn%\ŮM-oáłsk÷t­W7ńe.j#ÍN8ô˙ÄÖ$ݎWýküôL@ó›UkađÉ–Ő߉ü¦Mr‰mŃŇ:p“•‰kÍ5›ŹÝx&¤5žSęşţĂ9tŃş;>2tŔM «ßŐĽüĂ©µfëÉW;A‹â îoŢřJhëš~­n4ˇŤKşËW®®ÜÜâ4/Śo]ŕzÜ|íí)` Ż đDąiýńlćüő˝óěm<+ŮKÔ Ę§ŘÝşÍćŃ_oöőHŮąÔ+|žLg–őÇןŮ60Ó<čQŠvűuľ¦J@Źąń0ţÉM~u%úCB'h¬“Ěń˝WÉ nOľ3×$6uíńŁtw‘Żş—dDß1ÓĽ›2ťď_MŐ·›l‚ýľ>3-vm ‡Q‘Äă¦Č^âů´ÔQkŮÔŰůŤ|Ť_I»´?Ö4DÖZ›—'LÄ6-Ôú^¶#?ríSŮYŐ)Nî×'?°H^Őü—Ö0VĘ7ŹIqme;óĄyϋ֟ţ×§KŤ˙ąLňiĽčŻĹgîŚw¶‰{kMľ{–(®‡1Đ´oďit®´—˘Őjé3řŐŽÖh‘ď˝,ŃpăÓ‰ż>s@3ąA]=łů’&>»×Ô(Ő)›u¦ö#ĽýŁ9Űf-ý6ęmxZłÝoŚ<ĆT[´í[}Úź«ÜM“˙Ů>űaVś‰źV‹ŮĽÖhř‡6|¨?Ćđ­÷ż™rNMý B›4ě«O0>Ó&˘cB×Sk„żĚŐcĚžt˘fł<ľV§qP2Ż­úGO7©dŚ!]Ą;ť÷˛ĐŮTb—%żWi>÷‰äߣ|)”Osľl´ÇöÄ˙3šť#ľÖ®i‡sý×îa.uâ;mG’W›«;ë~X˝” Ź\_9Í8ŁkµŃqn˙§ľĄi{ł;AöÉ˙µ>ňÍ=# ĺË…ňDÎü;ťËć~sôʇj ©­7m~H„˙ôąúG´ŢtòעM-vşó łú*ŤéD5(©ýć7ˇÖÇ+Á+mPpéşżÖ(ëć>‰µČTý‰uÝ©żúUX%Mä#hő&±ĂɢQ9]‰äą{–*“O-µš)±ŹŻŻŐh©ÉóśćzÔ“đĚŃZ8©µ‹ĺ :SÝÍ+Ç&gď\ĺĐâ겓’ňI.ü5uůy)«K™źÖ"ŮÔTcćĹđ¶ňWGsâžh2üűѧŰ_íĂ4›îé6\®Ą–p»V´7 .Qâł1ÍĆ7/FţřşÝČv,˛"‹ýČaŚQxYŰݧBlýîÝĎ˝·äg_ßîMşĐ˙ÍÚ˙»‘}I}—ů±ö†˙†YíEd‘Y‘EYdEd‘Y‘EfýÖť÷Ş‡Ű¤jśd“š‰J=˘˙;°éYdEd‘Y‘EYdEd‘Y Ĺ„aą|éÁ‘EYdE˛ť‹,Č",˛"‹˛ČÉ?NćÂĘĚ_Ę|+W1ĘŇŔß’/¨®óBe‡Ég€Ňë†661ă’xá)ýw@}0&"WBŕ•S~·źC»,ŃexXüN«ľś˝iÍڎ<ç¬Ôíá`` Ł­x­ ň[đa‡q<˝Â…3CĘ‚B´;ě9€XîaÁ?EôŽÉ‘wDvŕł"Ác:ą1R™“|ňH#©/“ƽߍ+ ęT^´Ô.EĘŽ’7őLÜJ4Ď…‡ŇM N3íÔ:xŽ`âuaÖŢă,żĐĽŚR„¦c.Čç8öŐ)cM™S©Ó°>2fÜëýť¤®HP¤K«Ú7ŚFĎz´]î× bwBalýŮŹÔm(AD ¬ÇÚ%Ji)Ŕ,Š”*S"+D[‹őţ,Ąč*pfMóş$ˇ)XS@f›^ xB› ÔBd§ČÝ#ů±O_@ą;żůşFŞ€=T1UńĎ ,eĎjAáqý2° Ť9畱sc_Ż;>K›+íŹ9â`šîĚý5AÄO(­, č¬!ŁVÁyóˇVôZ“e­6 "Ţ„Řc‚IĽ)ăVÂĎC·ĎŰA笸 }:â°:ŁĚąztQ*uČüFN‡=ĘËgÇŇ… L:ąÝ:‰|.¬SDˇ 5]ąTg5Ú/K:łó)ŻOäÂŕ>E ´äúBŘcŹČ;2}8˛$ë^GțРîCx1ŽwěÂ5ş Ü±GuułżÔvdQ2¶>ˇ4bz2řI! ™5V&'Iż!»´BjÂ]˛?Čş¸ÁY× ö†şcUÝî"Ě‘gű5śWŇ_`źüRč‰ČÓ¤îQ1ě÷  Bu šŁQ0;%ňśy-sgťţ˘ÇpŞdź)3nÎJ6’6iE-(5óĎ/“ţBno…Ő„©dŇŔGLľ#Žę•§ řQÔÁT3Ä q¤Ç¦”@)ki.Ze Ptô¨Ršč„ćŁM8IýęzÖěĄ˙hSWˇ5׹Jđś>oAŔŁŽjˇßał\‚đ:F_R‡jˇu‘°ŘÔJ6Ö'N0ITŁ&ă&™!ßÁUéxĹ*Tl®ąĎćśztOŇ‘ťˇ˙o˙Fę»!g<%Ü @Xçó ˇ`–’W˘ßp)FŠđlĹ%Xb}L6’^fݵŘBxčµWßäßDŹú•%Q¤ý ™)z1>šIN˘á$ś'ÔđÓţkâŢtšµĘ/UČǦ“Ć‚g¤­D–)¬Ď‘j›WuńŔW › nĎ€âŁđ gŤ¶Ăŕś¬çđN%¨~:ťîäd˘čěŃ1@DÄč÷áS ňDÚĹO@źŰ;uź PiU‡A„ žu óÓŘá]vŕBŠ×GHj튤=”Čßč–*g*ĽýDK0DîCč[ š;š©ŕ§˘ţp*G‚©<ç:Uş¸–ü<ž#@UÄÓ˙‚ŞĂŞ 2*Şí°« ńvgŐŁÎs候°Ť~Öá©> Y>¨ŃĚÜ-řóąß*˝Ř˙Fľöż•ŰŻëŔZěEW^gu^C|!vĐWăL×+Îí°by ÄĎ[ńw„ţnŕŹ…XcdIZŹ}˙i‡–Ă´×ivĚÚZ…ÎV´‡Ăđ­Řű?“ßÎ Ŕýóś9pÜáßJgí?ˇÜtń(2çř Ń{ţ>ÄA|D>ć‚<Ăsŕ…{ŚĘŔŁóÁł-Š`¸^v̢Z q†;+"Šw°Ű+Ĺ)|žşj<ŁqżĂqÁ)ČÉë°Î+›ČëĐ„˘T^0'Éz}Ú$¨ŢoaąĂÜEsĽ˛š»{† Ő<ú+ŻóÁć†!óľµ4&u󣢦 ›‡ř墶˘›@˙P!1XÚ‚0wŤFčŕ…A-*CşófŇé~žÄ 5 8݆,l…¨©ńŮá~`:é;Rz(áZ,ÝÄ0PŚcYýa7âŃK'p!kO䀺Ժ[Ŕuô‚XéI”T×é¶ŽŘAT b—ŔËŠeęű AóEŹżYIżůÚŘÎ?GfzA*h=_ łýą)5ŚgŐ{°YR»“>ŁwO©{†PŐf0h°ceÉŕ„ 0 ÍB rŤ]`•µÄ‰˝e¸”uĄÁ"ů!ĹÁß’:1CϨi†@Xb9I‰l›A´7‚|;p!íČŰ‘'ČÖB´0Ë7Ú%§,z…§j}ĆÇîgŕý¤\&ÎĎëE§ĚQÝűý™T$M?Ąi"­R¨Eřb4Y$ĎR4SćqU;}cFĄčĚç7jATŘ f°*(ĆMQXő®š· [’® `‡Ý ee‚¤;°wd 2÷Тđař¸ ‚ůŘ xŕ 2ľŕ•ű‰íHčJ)«ú«xIŽ óÖLäc ‹rćHŰC,Ýc,şY yi‚đ(Ę҆ĺ EÁô–ÖQÔ¤D¸áÚ–ëŃf– Bći‚ŰáČrÇ· ěô/o…ý…*•CT„ż?j=qpŕłŃÂđ›aôţBňˇÂŃRń+x­Ăx Tž­(|‰KĐÓ'Ĺ—+K¦Ŕr ‹7r^\©[F‰ŘIÔ­´[…?YhôÁˇUC3[ř«Ŕúť&ĚU`WÁüa+šÄúhˇXUý·”ć?ęÔöQÇmkěŇę@Ŕyî‚™;ŕ†ZĚ^JŘňĄ-ž2´$Gąd^Áxy‰ë(Í.Ř=uż3_šá0Ü9jŃ‚(1w&s:ńđĐmßě_Ňâáyő»Uj9* Dšö`I.é:`†ZŢvi \ă°tĹCö¶Üg-ˇŽRËňĺ€ „ějsoŕ ‹J#gä>ŘéÂéÄÉĂéâ|Uňě#Č.Ż€AŔĚÁu÷™šNxH‡ä7\WťÎ’6ˇ˙“TH{C˛^›O5ú%“ ˇĐŇ*ôKwŔ&öŔŇVśz–ˇ+6O=Ý=5ݵy“igXfÓg©ÔŤźůšç±ä–¨öz%—Tš‹=ĽďE=ş“ÉŁRŐ™%ňüⵜN2Cň˛,›a´V–%T&•#‰…¤1?)ËYUédk“INnŃÉŇcMňjßÉNÝČĺÄŰuśXv_ń8–%XŤ8«‚±´É,yYY¨Ż¦[ұź˝Ö)¤dłj±†Ř7SxmĄů–ąbX¸žËR.MÄXúăx4,Ëą. đ…ÂRW%…˛pNÂj,˝şË’N.ÁO.ÚuXIÇučÁ“–x;H!2/5ŔWęĺö%ňŻx1›vŇľÜ ĚŹ:ľ2î‹tÖ®śNr˙:ý&˙ÎŢë핵Itžlzĺ9XS^Żä… /-…ĺa]x®,¦ëŰ•‰ş{]+b§sĄděs®¶!:I¶˝ÔFś”„l=®B‘˛Ť¸rč7\+_Ę~ŢĘcŮ„ J‹N“´Ě’ÜJ2łĐpnrÄÝł­…6g| Š(»<'äw›&{ţÓ^Lń™Č’j: 1´BJ“„ ߉q/‰‹•Q˝Ło¦{i+ňI{”ҲRÚ¸gˇA ÖOĘsS“2ÉRI™tj…3Z")ĘžËÇvf^¬ŐÚVö:~“TD6DŠ:…™ŁĆŰ‘R%U âża)BLÜ ŮĐq*(,JO5bŃ • BSŞwe†j˛ÝłÝrnCeä(3¬Ü”™3j”VfĘĚ+1Oô*äŞgÎ…ŰřĽ‹4,da…˛ ™jľ{BÓmé-ĺ ńj°Bl­wŰ„¸AÂ*Ý{sŢU7Ő=·Cq\vFĽ„úŰěNť¦2ĚŐ·Ďč*ě„ĺŕ_LŰ/ĂŤ”9-Ľˇ»®ŞnâVśĐ±ëB™Ž[(3:C‹řşČťŤJŞ=jŻPŠzań¨ś•“2 ˘®¬TZí9{CŰO$ڇňćžĐpüęě„!ŔąÁđâN(|ÜÎ(%{•Ě`rű†Oď}*ě‘Ďôć˝?éęóÄÉÚÜ{AÝ{ź{‡!Ĺ^9Ëî3ŞhďĐźnśĎ¬Ť»ż˙ü/żČ¬÷™9DJ·śŕqc;÷đˇ vt±) TŔ0;Ä>¨!ď ‡5ŰH˙(KĘ#:ʰX/|˛ĎĂ ¦]śö>AÔŮOň™_ä6'–…çę H¦#(Á…T‹‹řĂ/IâwBtTą.4€ź řC9P(ÇC«ĽO$„ő>r € ydR>őíÖy‡ŕČâ%řnJ–’#Ůz0őÎř]W’ŕšč¦ś ˇtÔÁë´đ_°'2:•h ÄĽÄ2ŮĄ˙1÷ŘŁ#a¤†ŮýGeh´C•TeHĘÉp‹f­‚ 1ű;ôRĚŔ„€ú}ţŰ, cé¤íp?Ăfö;`‚Ă4ĂôŹö,n:ąW@8ÖŃg=H;Ň’Ý©±+Ľ(DĎÁŢPÔ eź©n%ř™O zQ€|÷Dth ^ ¦Xă:ŁLż„ő>]2Y!ŃČc̱„Ŕ}R‹Śc͸DĐ$·ËFçIđ‹J ":IłdĐý-őČôD°“ÁiIŹ "Č'/äÉ‚µ"@ĘGQŕáůŔK¤ŕ‡Ů‚q*Ŕ`ž 0•é&öL"ŘJąĄS 3ĬS“JYá·Ř1‰ é=ёڄĆúö6[Ť­Ĺó´‰Öô śôRZ;o€Ćö9K *ăCş&R’‡@ͦޕ#Š˘:Ś×äéy*lz]–qUÍ‹›Ü ˘)śPаŠî"$®§ąŞtěIqTóĂ$ŕ3C5ź&N«t–5üVÂJŠh&s¨ěť"ř¶Ł«˘™ˇ~Ƥ’W(Ťťa†uĘŹŽ"i˙*`*WâJŠxżL>V— Bc+˛˘‘ Ő Ĺbę(+}Ią]~0=\¬ÁIiĺP ^%ş¬Šţófîa(zOXěĂ€ZPŠş‘éą÷@°rPZQLŠh~8=ŚŚ1ŞóEŔKQ6aŞÁ¤ [ €jŢh‹N2דRWÄK(ˇř _(˝¦<_„„Uďµŕ§ö#qôĐÉgíEµôƨn*\~óečďB)úÍ›ť‡y ?Ů©Ň{ěďĆV0+Š5¤$•Ă'‰ddE6Óˇ’ĺĘŤö¸Ľ{JkČŘ,{ť}U‘FWĆ(NĽ¬UtLäYTÂRhŠTŮŠâ—ťüŁx+@nćą>‰é•$şµiS"óŠ &Ş1‚(EŁGhJŻŠqůE$„p(Ľ§Zb„Ô›UMżMŔĹ(îd–±Kô8ŞĆŠĘk5W„ĺ±&|läsEľż$1¬„9ÁšŠ¶+ć%"b>ł’RÄăDRWKzhęVŠ9-8č'żĄ‡J§ôنŕ•|’¦!ńČh‚¤Šé#l^X=€>N}TÔŹWWX±9ÜÇ]^źyP+žë#{č.{l¸qÎÇ„EU9‡žf+¸z•î CúĐÂ~ Hš\ <ŔÓ čvî¶°`f=őNHŠ·†4!\Ę)+BŽŻi)–Ôá´Ë•“8QༀqŚĽĚ:hś§˝9ś¤Ŕpµ€3ćłrˇ˘ ´c>aeC »»KO§‰R§ŠL+ŽP—Ł'ĺTËČ·»Žn™JŕĹ7N&ń"îÄö 9nçŰ`FĽqŇ ĆÂ~熇Ǡ˛KËvBŁDz¸C1©şBDZĐ@ĘK¨•Y3ă¨ăF›ŽlIoéQą”ŹŽ’>ˇ´ .ߡŚÂ †T… C]ÔÚĹ´ÁâŮ@xGwĂ©Ńѱb¶ťqQNNÂr†ŠV3#ŢW`‡AÝÍ<âúě>8$&WŔN&.1pś*Á ]ˇ’ĆŕYÂ`Ćâ4yčĺ`·\ŘVŔ¬dKŁťĺ~€˙%µËł•0,ĎeKĄ/&˝Š‚_TA§>M˝B‘đÓ…Í®Ůú¨Śä^qh0ô‹sÜ„KŘşd|ýŽĹ0€JGésÔЇµC0 0.gŰAľ`::©+¶@•}Ăú+ FN†h wgZÇB%Ů@dßuÁcpx08»%+Î0ť_ş¨ŕ|¨yhşfd‡ XÉČŤę»ůPŐZśÇ1ęC,đś©Spµ”Óž`áă8P‚Ł;.~P ąăp6üjjofŹ.Aě@â`|É:(ś% 3¸ś¤‡Í0ł>|Łű•%_<Ľ|ţ¦ötq€2yŞyŠ÷,pż…+ÎëR€`…Š/ó7Šm&µČ›Ą8OQźÁĺ NŮ.SVZ®…GP90Ŕ<¦,Cřާt-ä4ô $¨q”(ęŞ3ŚőépŚ”SŻÓJÚ®‘ucčUqľ˛öGĘŻ}8sĚńFOĺŮôPĹĹA˘°ĹĎHú!řYó¬ÂöŚ_Gśt©×ý¸’Tźë!ľI÷7?×Nc‚ŠĹQţđŚÜ ÍáŘGě đżč2 vřÓQJŮúĆç)‹ĎÄěq€8{0%čś$źRks…Km y‚śXŃşp)ć/‡˛©Î'ńc śŤ%pŔ…•ň/Q±k‰<ý—$łiŔ T0žŽRřć =| vĺŞ6zHS9\ \ f=_gó6t†Ôřgědx5Buű†‚Áł>:ĄxÄ0ÖR|˛8]J0‡ś‚…Ś3\aQ ŃŢMü\Gvä-….’=ÝB>+nĹŇëa˘ŕÇĺD­ä tůµ acŕě|6ôoD†ş0FŻN-ÝbĘ|qň'ů +CU;8@ąŤ“ěङcńň©IB ÇůŔDa°ăÁt:«¸T“ĄW-#îuĐB±PÂĹĄ«őáŇŤÁˇľt‘Ŕ ľ]:đ“őŹSöÄę@)¦łqŞ>|É><ř3gW:üąŚ–˙2`™÷WĘ€÷üßf¦Äů|(jď«’á äű€:6oĐ€!^öýLf´(5ůUEřI —‚ą ćĂÂozBvPQů¸Ž8ß|L(9eĺÔi„$ĐyxůI0§„Łř;żtc zl‹7¸˙2'zlăR~ ŽŞcĹ`0…’O.rą“Ô0N$f'ÉIů‚Ť“Ý!—ÖML ‘ćĺÎ_M¨8ˇ”݉)ÁN ›¨4CoTnb›M¸tác¶Í2ÚÂ8?\a/čőR.…“JŁVľ—>¨›"=ĆÍH—ÂŘ&hELˇ8ădóĽghÍĺ0ĐZfl©ă[+c+Ś.Č0ź8ř»`7~ꬩyNč˝Ĺ‹ýĹ}Ś$0ég…pHh˙8,rá$žS.…tJ„1ôô(¶p±oĘ%áSho—â1)âĄŐ‹]éIĺľ~@8KČ1¸‹')ăđJʉ‡"DQ}č—ÔÓ(M„'Éđ„úKᔨ•0ˇŃâ@lçíňE€k”úqÂň*®Ć{ŻeâeěN[–÷÷ŮZp†H9%S+0¦%¸IÍ–+j*řa–ď° ę‚ĄXłËx¬ű?'ˇŻMząj‰ŚŠÍ¬\j™żbám–ü(†űŁŚČ<,yt8F_ěfE&e.cť5K™ňŃÓĎá==®*Ńű>źAćëwS "Y@zFŠąĄ˘ EǧŁB†k.d_C%ÂWÍŠzF(űN]b8čüJîĚÄBlĚaR®ÎĆ?P/6ÁZ@`öŕc 4˘„Î~¬‚)ëI[(†;ňWŕ€s”Ús)‘L<ź:ú á ď#ÔŔQp/† äĹĚâÉP{Ką˘Ş Ď9M>©ă„ĺŽčT}‹çXÂ\ľĐ"KćĆJřÓŚ:l[…dÔ 0N  0őBč®vŽé/pVkňO“péŘŮß_%x§ďť$–^i$c¨Pë)8Č;—JŹ€âĎĄEŐĚŕy˘›Wgóťö•aIőöCS[Ť}ś$ 1 '•ôKÁ]śó çOŽ ŔŤb´»)0CÇ“ †ăs0č q¤0¨ĐŔ)˘%tČÚmÁă(fIj‘Č,‘`ddö©ăp}%'yśÜĚ\ŠtăZ‰śđqÍ Md‡őNđíšEˇKšé;&Îߍ.>?†Y…D“¦NÝóő™.(ÇČ@I dçď&ôĽ(UZb‚ăLĂLlőĚ­ÂHRTä‹ćß.‚˙ď%ŽąÂ!Ú‚Ą0‡ŃćS8/<{ă‰î4ĺÜă€QĚĐb}ÉŐ˙©čŐ%D(žo&µĚĐüY¦f|ÝęĎ<~ZčíŐm“̰·ügšŻôźgK ×0Ą–]#×ľŹ”Ý±©Ëť¦¸+bUžŤč t°ÁÖ łňz©Č‡3KÝ„©KYŠńéV5×đ&ď†8í.•Ě(Uz™Ć•Őď”ĆR,čɧٙĺ«]·1U+[ °ŕ±'P!ĹÂS ˙[ÄĽuL- îłQăçV Ó‰·­şóÉÖ†čJťBĂg8Ě]ŐËě†óÁě‹ú† ÔäzIšŰü.ĆŚMÔaß}+ÖÄľU¤âÉű9¶’_ńč wÂŰTżµkpOŻÔ‡ľ®LĂ3 ĂŢΊM%ejĹĎÔ&‹ —öÝ©§™Ýk‰…i&´Á¨ţ¦UQť96•ü‰˛[3éŰęTçÉ$ó®şŮÎő±Jé5Í‹uęëćÍ˝@g!Ű÷ěäĺ°š˘Ńę˘â¬:$tYÝI†»jS¬] Mß±kň95Üč˙Xľ e"ĹÝ˝úm6ÖŘ ©LŐ&ę0×fé=cĺÁŰć<É bŞÓśŞŘÝçsµw›%}á,ëoÉÔţΕgP6 sN†ŘsQ5dŻŞŕ:ĚŔ/zqë,J.„Ô±µÄŰ|îńLk$/ž^¸EXşľÝ{®htĄĆl{l>JcĂŮčňI|±(gr>1}4'lh-[r Yą©Ć Vc`ůÖ˘c˛ću‹şĐí»~-ß©ŔľYW RC··•*‚ťiWOô ‚b‘Q7l» ěAżË-l¶¬ OŹ3N§Âׂîź3d+‚\Ś ĘR=MÚ f¤° ČŤsă™ëăŔdWHľˇG/WýĹ3ÝÍC=BöÝłĚĐüAk7?D˝čAÚs°Ú¤¤%äç5‰â“ÍÉÖ”{ˇxľ.jů°{‹™]®ůĽ’⬽{¸Qb°Ţ0Ě[ÔeŔ%äá“Ôč‚o]Řé‘ÇGó“µÉÉĚUjeßëőĄ»—ôâ9  8T-ËĆ!b)žä©vŇ;Ą*ďŁt´tXŠrw|SĽ*éĂáŤ#Ěj)Ő=vşa<5& ]˘ť ”«ŞŃ°«‹­éäč\k]YC™8ýâž+Á3Sv˘÷§TZcÎ9~Ĺ,×Učá®v)+?H1ťšÓÁú.7Wl Áµ™Ň1_ (/24ňrÄ:zÔ8âLĺľěĆl˙î’ö®Ë zr|©ą»öŻ–őű8>­‹µ t<Í·n´˛ynÔB$WmÓłÄj,đz;ĎjFN—Đč7`IWĄšQŤw©ýtž7ëät›T˝â;ú÷Ś4ă[Bý´űY)-%ç˘Pą–ţŻ#Ô¦Ňw×iTŞI]náus㨋CŚźŹůTłCX¦žźŚZÖ¨COĄ«1Ą ZcéřďGŠĹÇ›źII/…ŻtÚ°Ł[©Odn#Ö7ˇ0şTXň ¤¨3ß뜦 P¤ĘTŞDęăŮÎţ‹úsšŘ±ůqźjÖ$§żÂŃtU7ŞŚV›RŐşýY\ß‘TN6UßĹ\“¨™ńÜŞt5®VgIď`ĄőÉîĐV†NŃWÝVCę[•™Đ˙ęńüş;ϬWMˇëWű^ŰşýʧňÔ=č°×ED4—I®vÇި™u «hô2Öá¶Ďěé-#căe[ą \ĄkV`$ąŰúˇĘŁ4uCŤ]łb…żf¶1ŐěŃd´nýx°b©ŐŠŢŇĽ©ĆóXş[†¤Va°¶MÜŘW~­‘Ĺó›óS ž\“¨ť>+âÓÇíąikŚ®śĂÎżÝća ™QďWĄ‰·–&gńëŢ;ď—MV˝ÎDvGUőşK„˘ŻŐdJ‹«2ř;fظÎ_3€DőR˙!ăŻń™ńäI˛ďvët)Ű Sâ‚eŘ!©˝¬gW׼ŃUâćÖçb2sÝ" ëv9đ,ęÜ”*uÍĂ—ćČÝđ˘ĺAĂ1-g(.»Ă&DmŁ\J–ĚaO´Â HŻĘb#†«„=ţfpĹ2€ŻśŃŘCţîzń´Qc)1[:űžüľ`xÇ4«ái_ÜĽě\¨c–îůfËčwâirV­™j8Ş Ëw›Ő&Źkö®nâŔĎ™U}KŮËűó)BÝÔ'Ą&jÂ[)”F·ŕ­ő´Â8^gÁjÉ -}ŮZáKťÇ©2*\ßÍŐ–ÇuZŃ®="áJF‹wLO5OŘ>~-ä.¤ľv_Ş/­¨ŘęŽË˝ëRbR=Ĺ7¦ZnĄ5[ş®\ŘaÓ-)±ŮĽ˛…¤«Űߡ6qMJânˇĽŤO FŮnÁk“#băNĄŮú±Ý-|ź[cŔ¶­ ÚPżwzŰÓ˛±¤±:7§@nšÔi7Ţ’‘[S ÷(\vS«$zJ9S94ąr»Ohé¬Ő»ő%˘yâÔkV©zÁŤ™=ćNříŻjµJíČ{qm"µŔę˝ÓĽŘ1ń÷ ÄWpž' ĄĘË_sQďĆÍŢM1VNcŔ;çÝ$ Ďáp{ŚťvţqĄk»«ŢgȧX\ľĄÉdŐâR[1ă­Ąó„í{ho;U´ďŞ‹¨älR†Ú`Ű÷Q ft3. ˙ĄďxŞfÜßëŞo@ÁGÓ®ßOá¬qU*¸îo•虥¨!=UýíÚń*áJq–IĺYŢDd^Ż(ŕő#IŤu÷»XŽ/ýÍ©çZ‡Ă«©-“ŇÎŻ:^’oąr ÖÔw'ď‡ÉeyD¬´6j;Bŕ ÓjdaźÇtnlŚ®“´pÚŇT©Ű?Łë\ü Ť›žwX>Vś5ĽíwkaeH]ž„“Ď}jT1®rbmŞ^%~ůÜŃ.úÝÍkř_ •ă¤áyĂź•%C]s‡§'«/˙ńďìD†ÔĹP9AvŇ…ĂçaG\Š8ť›ŤşÇqdFs𛵭’RäWĘťřšđ¸ú÷ÓSţL‰łP;'ÔED;Iúg™®aĹě‰ţcď?Ý.¦ö[#73.^_ž!]śŚ—Úo &#§ ‡gİŚ^2t+S»â‰–˘źűÝĂ­Őäw}]ęŽkm«”G >ëš3Ç>˘Ő?.¸`*ëe)±3Đ>Žú8÷áÚZ% E‹ýG‡Ň[ÍÔßČpëős;d«ë.D‹«ŁV/¨{1h¦GŁfĽF?lEBló†)Č?E}†ň‰ě;nŕ´»4Ĺľć©G·Ęl5'CĎäUÁTÖ ˛ĂÝŞ~ç@' ݆%Ďۆ<»óËëiAIRo`+ŮÎ9UŃUoJŽŔ¨ţąűěĽ$ąt/Ňű)Ú’4W6–W˝ÎI5Tľ=·vG®-_lŰą"yri"ôTüćl¦7š%»ľHŤr[dĽj\t%˘ŤTČĺąeQZK‰'‹épÓ:QŮ…žů÷z˙€Ů¦»m°aľ·^sĚĘŻ”׏ٺ<*BOĚ”ďkRdIťäky×@ÚyŮsëĂ’žZOř‹×S¨ >ľl/íĺĚR Ő,Mń¤žáoŠή€Ň˙ÜÓeu<ń€]˙ŢôL7¨~3ü’ÇůádřĘËőQŢi3Ş M‡9bť[îK†ů]B»˘·7ó­Ű-DěRЏ3%Pś&6˘ľóÖŚ1Ľłsş—HČ&ćÇΔšźE5R®6×ިo¶—`[Lݸíí+”řůUrO»Ń7eJšëŞ7w33ą(pZ÷sK¤—‰üu×ó4ĐŹĘ×)°ä‰ŕ0ăűł0őŤ:EÎśćú*µ¤¤oőĺ—ú˘Xz•ŐŇľd˙K §±\ç-礛fŔ…öVŁpg ‚G\Ŕâ‰ĆUĆ3ąN\Ţj—¸Ç@e6ĄłsîŔ™c†­Ďó \ĚΤÇ1ÜóÇö¨-ĺŐŹ4r;ľ›ŕĆ ‘­uÚ±˘Üáł…ŃŇφÉ>®Ů ?AŕiÝ+fI Ý/`řŢtúmbťš›m˝vĐ «_Q#´+´[bă(f9Ď®`o÷UÚŞ+í{“vc¨Żw—˝E‡í·}°EŹĚ ˙!.WĄ¦őNIďŐ™3  6Ě=hô„©#ą©Ş,tđ+7]ŻŞö>*¬!őh¸·Ä ˛ vYp6ü î™ń×Ȇ“˙WýčŽ[ ôt-j’GE} zíö}§-]€-‹iś ĚŕťnHg ŞtÁ6Ä´ô˝0Cîg1ý.›-žËSżńĺă FfÜc´j5š.ž+/ď=}7śĄčrBő¤ .PV•őą­É(u¬äGZĄí…‚çqęo!Ź[Mr©ß’°ÄŽŤ2WŐŢu×OĂ bą!±Ţ}#ăÝ0%/3úÝ,ŘDÔęVŚÁb™‹ő…k^挅šE?h-ő ĹKăßKÝďłÖtź`ę76_ľmZ Ó¶´?ń?«d†Mşdc§b·áčZç°ěĐ+ď†*;ž UreĽůarŇ=†ô¨P_ť[(Ě2Xy.9#­˝äý,S–™«~M<‚Y–‘US)ď0oR«ű`+¦dÖłŽÓę „gÁŐ¦íńż„cIŔ9ăµ’űÚ~w‡!˝×ő=¨Ň6B^OđŢ=C1^el|Ű["Ů#ëtő@5pÉŠAŤŞá^Lz@’Og€äś¨ć%­«řç©ę:ŤFÇÚ ž»ąéŢE¤¤Kr\ÖźQËłâň[K9)ŇDz˙öâ÷zW’#kf-ý.Ŕ{vY¸ďK×GĂßŮrtsL^ĎOÔ°%ŢÓ¬ ű+q#’Âú›Mé°2vç+^}n$…=µc“pÂ.próV ĺ´˛şµí¦Ńď<– ŰIG|'뺀“ĺŠĂ|¤G –đZRr`ĺĘ–@žęÖ´KčvK3Čîě® çLłŽŽ´ŠÓ&j`Qn/ W„r9Ě$dh5Ę™[eś3ůĺEć‹.?‹ńqŐČĄçÚHKŤ˘î”{^3'-íuË«ť/Â9•ydäĚŮÂ…%Ąş2űgĆűĹ˝˛ŔÉvńD2wv¬ʇÓu»ĺ±i4<ą~uŮ9øµ“;äEc|ŘWřöËÔ¶TMłď>H•dĐ §ÝJE>˛UÇei©UÜjË7|‹nď„§¤.üŠű÷í˛íSĺ[RÖłîjżMídćą°łŃ¤ëĆ´nçéąj2¶wÎd.ÖjíçÎyąčß±*Ś·.ç)OŘ9]9gÎ`7ÓŞĎĆđă×ý &éűý´®fç~ć}:Żg縴XHĄtôľbhçä›é±(,ůÉëR,{;áďŚŃ¦J&Ęľ ¸{—/ ˘*żg;€ş[N?žřg˛Ŕ.ÉëÜF˝}ŢŐ=O•Ú˝Ź†˝d9ĘnĎ˝˝wX ckŹtý+<ő¤8¦á–ľ6Áżž tS„Ö޲¸2h Ă?Š74çNšŰ*C<×=ř˙”őŹ:D÷Đo›ÚMí>f–—˙±'űíćžh×7±Y3\ýâ«^Ů=ľtcŻ_ͧöÍuŰ˝‘۲Ө|ŇĆĎZ{bg ĂřŤěĺůŤ†Çr”˘8™‘oýx±ný6¨56lٸVoŢÄ(Ibý°˙n ¸±łňóeĆ^µá«d®›oŐ ^tńk…Ţź¨ćĆJĺčŃą6¬˙żŇ ű˝hË:lm˙Ť*žŃQ˛{zŢüŁČîF+¶^Tţ}lP^alz‘É^‹ÝýĎŻŚćŢŘ쮑‘ž˝ŁěďÖÂśvÝúoÖës¬{ýŢű‹®ť5­łč{†Î{łŃÝ·ÁťĐ˛iĆ´üI-WĎ^ržWrŻ•ď˝z•Í^Kył3ýÎúÚókn?4lľs«ř&mżŘÉ|ËŁ§?űŮsĺÝÓĺýéyőîľihŰwÖĺąĎZĺYwöâţ·#tcíf’kV^ĆlčÍny­…˙§Řc>˝{ÔÝŢű-űbҨßď÷ęűďx>[Ł˙_k”ö"ň÷ä­nÁüĆŹ˙ěćuŁöGkÝüűTő©nZµ5«µĆEËšÓŰáNkí¸kôFµ~ô˙n—ůvcQí[żŐÜysĺ7F©#ý±eÓłĆdóźËůµ}Őí^gť6űiHÇ˙ßb´Q1r˙/6Ě˙FPćáŰg3ŕ§ź‘ß}ů»úâÓ¶ąßSĆů÷fĎ«˙ůrvĂFłuôş#ŻĐéťí.¦•{7ßظŃLöţß/řŚ?Fü`}\O ńô8i­~Ź.?Ľ@mőľÂÝdŻěâ§nHű7¶'U#{uŤHcĐy˙_"`Ě3cP2d·”žäŞI˙FĄ5ŰÖ·•ńjmc˘(©¶˝đŻűw¤ü@hFÎ ž„ĺ—Ź!|ä “ eďĘ"Y¬ŢofQëőwFČ˙ň 9“Üć%^0łYŢ<27VáÂďßÖh…­čĹËÝŞ!ŽtE+.s0™ŕ[˙@l„ý¬‹ôu$WW’UËOb¬ććáŞY[tĄ\eń…ÎA_%|•p•čWŔáżł‘‡jŢŻ3ç°=Öü­®ŮřAíâďÂR‡­®śůß|CÚiß„Ď_.!Ń…ÄäH9‡ÂŇČtOŹç”=ç ®Ç糏“}Šß=sB´úY:HĂ#ýžˇgkäŽ×ÉË j4T.ś˛(tÖˇv˙fp±Í×JŚčąjşŠL»l-|őAN¬D á—Ďß«őĆU櫥ćQý@čv;sqĎđ“‹qxŕĐu ľŚŮÎďĐ1—0+ĺŻö’¦0…ŁIĽŢň™R-ě“–yÍă'8I.!Ía‹nácĄÁ%:s†oGľ?O4-iŻ4ç[|pw5ŻŘ!đíŹŰ®®Ź0gŤxŚ·m4µ‡ ©Éé/= ¦4!Q¬[YÚţô Ě$<* ĆŠ)@×jĐ_#’@G¤%¤4!ú¨ÖśV¬b ‹:ă¶8©Ţ%”ősA%Ţ<ľ·JMͱÂ@§˛Ł<;ąVxńř šó»ćţŮňÓŰg‡óZßiŁ«RŇÁńUÁiů”Űé}w qRýZzôŐşú o>ŹU^–śőÂî|¤yvŽp­đâń`úŞ˝÷=Ŕą:]¨şú)Dß[¦Šćî.¬Uénöf çťµÓf%ź8˛J˙'J•Ëq*,~äţNś7ďă„.›•ŚîěÁZă€ăádx+†!湬WŕzîŻr{ÚČ.đ'3â& ’őb­XájZjqö&5ńĹ3©R';(öÚťçÜ63;ŮqÜ$gÚz›¨đŇĘw^Rć ďé%n ›ČgÇ)ş‰Ń†űŞ1ąť‹'¤‚Ă3|ń]ű´łŘ÷57?sŤřszü© âjÖ¤ÔźůŘ Žá{­­ÉkŚ2äÎ@I“xsÉ•Jł['©U¬Ź*:Ú˛3Ăń+µÄE§®GôÔmJţžŕCúÁ •·Kľ+ü }ţŃ[óĽµŔMć× <] ¸Ňľí˘ÚŽ©—EéY$G–nf;;l‚•äľVr^n(2ŽIjîo›kĆ›TŁ?ÎJ2önšű‹GG›RŤj<ř˛Z¸©zTÄ7廥őqŃţ 4%‘c_ Ď´ ˘ěÚâöpŕ9G©#ďŽ@Hô¬ď}G,rŐŔ‚e÷٨Ť¦@ptÍË{ű«kĆĎyĹ,=»ą¤äžĂč,P4ȡřŽĄŻíÖzŢá˝ođÁĂ„‹W#c:Ňq\ĐGŇ$ŚR(nŻm>¨/˘ Á q,XoÁ©j†ĂiuÍŕŮŔŰR5č:uąÍÓâeP) â+ř;V©ěEvٰ‹—Q](÷+Ř—Ź»ŠvôŐRöG<±I U.ŐZJ)4׿ŕ[Áyäa‰/•R˘żĽ˙Â)w"kîk¤?E8 DpXÖŢŰżNmgîÄ.„(ŹwĺŤ}L>ÁÉ{†-i,‹Ň×PĐ48*ÜľŃ_|hu'7ťŢŇtp2G]Í€úÂŁ‚őè G¸ůîgŁC3p# ćÄ»ĹúnÍ Őuţ™™Ť@ŤĎ ü˝¨a^#– v0Ůť ňY§°d ¤»I5ÉMp¶Yĺ€,fËŤ7]Čnž¦ [)ą2Ă`Ó™uĂűčĘ/V@-VüËYélŻÇMÜŘ=uń PĐ.:3©EÜh¬ N4m‚ú¸nç÷óőâý—:_ńÚbuă›U[?´jnF, @”LA^ÜşÎ×I$ĺY‰|‰¨QÁăí(łf|ÎŢ ÍťţNŠö’»ë® ĺôŇ“}Y°,"}ʬ—‚’w+$nś+´r„’J¶ĄŁ€…ď.Cs*ďoí#•|ź1U\{čó#1.g†˝Ă;_‚=˘a]·’ŹŹW–pŠŞ#„ËÄy”iĄµ¤úHIw9A_ŽgU~&ě‹iÔŇmĽ¬˘đ?Ě&č[Ű;‹Ávb}=Öy‚…©3ŹWźđŁ x1Á*°,˘@ř´t[óđkďgě×\Ţ9K #ô ®¨ba€1[ś1X·!· űk îĄ{RvbÜBRęÜ áÜ$ô$śÉmAŇŃśÁ­ťŮ·‹ť5bzĂÍůĎŚ?/[×ă,ĂQĄT o˙9†±®gŤÂb÷×jë‹}TŕѱGt‡Ž\Ě;Ö”os9ůs»t«Š4Ýv:©-Ú¬˙{ <׬O˝ő$}·:ú‚Đ:śa‹BT@ÔřýDłR j#m!`Ň·ýgŰÁťE]CmĂŚŃ!ĐlĄÍ5Ç…R Î2<źMăLBĚ*ęőcoĹŘPîŮ8(íťŃ“W-Şźfí=ť˘¦˝bÔ«VµD’ kp™|;%Ř–#dE'…Ě.:9ĄŔ·Ć# 4A ™±˝d;–H-Ţk2+#%Žę ˘Čty_Á„O¦.)kĆýµŽ¶!ĄŤřŰ' »YYöĄ‘Ŕç$RThÜ–†Î‹Q”¸ÔĐ ŚdŹHšÂh!śˇçfr ´â *3· MeB˛N×)1÷éL I6T‘]Ş1ĺ$Î;©ä­ˇĹrĘŽ‰îTǦM]jU’,Ă?ai˝Hľ1c¤aă-$xšĹdu$Q·çłT ߍ)±L’–U©ä)MX~QěXů†'“őĐŃ&˶Ňŕ)tŚŕRJ$y9ŽÝL'Lv‡D»˛x1‹ö0čćĎg. qJĆ®°›Î^çŠz¶Ń(ɡüLgˇÇʶŕ|ĆďŻăz»ĺ©pp˙_¨Śó#Dkáq›zÖ;‰Ç°(m~ř˝§˙ŚńŇW?`ńěHý˙zS¨a·Á|öżF3ăň0ßÖEž—Řô|ŽăaďűŠŐK…Đüäť‹*á~Ž#4¸Ű–üzČ˙*ÓGÄO$” >´p. =këläSNA±G-‹ýÇżS_Y$öÁĺwWp)o¤$ÁŻĽdré(U@5ôé–EĽ ôŻŻH×ü#HĹ&xň&łב/ď!ÍŁ‹¦éŹËäÎ?ť <Źz­°,¦ąŇâv˘_JýÎvÁj‹qęýżVOŚj”ŕ`t]-ˇň}§áuÎđđ'á稖ďDKŐm˙¦F”üäĐ_63qyü čÇĽ4Tžf¬ ~c3än|˛PÚ,ĐíηJŃ|¶â–PL^BłާFhĄD“Ź˝Ţż;˘h«ť’›ü‚`+L`"ú“S´UÄA‰Ę™çBüR ňFA1¦MýOUnk¸Öň~CAA‰čN]}:éöu€ŕ~A!żţts†üŢÎ ks]*ü®ąW&†4č#Ö(ăôć*”řá|6ójtÓđ#j- ’5š¬ťe–ˇBS'ŞŁP¤YP176&<„–*DăŚŕ‚(Ůó‚Ęă Äł<8żFˇ89Ç?‚P,ŹSżj4Ç‘ôđo¶ű:gD•ÝÎŽZü8!éQeڰ ”F±±š™mŞô/jBűşNËŇţÔi*!†ČŚPŇ,’›$ŘW-b‡j [áw>Ś>eI,!ôtROÁj‘?Í Ůž @"=€ÉŃŃb7ĘÍ (¬“,˝'B8~ý«{b:3ÝýľGF:3·ý;»ŐYľ±–7IYzĘějćů†Z/Me Ł|R š?TǸVÚăR¬ ;ťE&q%C ÓżecDj›PżŹ“Č$úT?I4˛ŤsČ0ú4Í;˙˸ ×¶aĎ*JxA\X(şÉ*‚EN/v“F;j2’ÝÉÄ‹¸˝5˙8KdTŇ}”ZE>Dŕ»őÔúwΖŁ#|[… ±ÎĘc®>©H„qľŃIŕô‰ĘúEÁh—?0ňWý“#Ú¶5ÎeC3’a3>S&k?đ)Ä /Ů÷€·âĺAśµŮˇ€"ůJłvu!B/¦ů©Á¬{ëc^AĆ -—H’“ŕş\BúH¨ŞŃí“ü¦ Ú(poó- ­źFɶďIĆŮ€> Ł~/©Ümýć¸2őŹfęý™ ëÎć…d­®h(„ÄAtžž#|„Ű’ňZŹ<Č#<ň#ŹňČŹ<Č#<ň#ŹňČŹ<É#¶˙nini-1.1.0+dfsg.2/Docs/Reference/xml/0000755000175000017500000000000010410342254016404 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/xml/en/0000755000175000017500000000000010410342252017004 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/xml/en/Util/0000755000175000017500000000000010410342252017721 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/xml/en/Util/ArgvParser.xml0000644000175000017500000000130210400654252022520 0ustar meebeymeebey Class for parsing command line options Loads and parses all command line options. All options are parsed upon load. The command line string array to parse. Returns the value of the command line switch. This returns null if the option was not parsed. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Util/OrderedList.xml0000644000175000017500000000740210400654252022673 0ustar meebeymeebey A collection of ordered objects. This class combines the retrieval speed of a Hashtable with the ordered nature of an ArrayList while using just a bit more memory in the process. Returns the number of objects in the collection. Returns true if the list is read only. Always returns false. Returns true if the collection is synchronized. This value is always false. Returns true if the collection is of a fixed size. This value is always false. Returns the object at the given index. Returns the object at the given key. Returns a list of the collection keys. Returns a list of the collection values. Returns the synchronized object. Adds a new obctje to the collection. The key for the object. The value of the object. Clears all object from the collection. Copies the collection to an array. Array to copy the results. Index of the array to start copying. Copies the collection to a strongly-typed array. The DictionaryEntry array to copy the results. Index of the array to start copying. Returns true if the key exists in the collection. The key to search for. Inserts an object into the collection based on an index. Index in which to insert. Key of the object. Value of the object. Removes an item from the collection by key name. Key to search for. Removes a key at the given index. The index from which to remove the key. Returns the enumerator object. Returns the dictionary enumerator object. Returns the IEnumerator object. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Util/OrderedListEnumerator.xml0000644000175000017500000000211610400654252024732 0ustar meebeymeebey Enumerator class for OrderedLists. Returns the current object in the enumeration. Returns the strongly-typed current object in the enumeration. Returns the current DictionaryEntry. Returns the current key. Returns the current value. Moves the enumeration to the next set. Resets the enumerator back to the beginning. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/0000755000175000017500000000000010410342252020211 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/IConfigSource.xml0000644000175000017500000001170310401126224023433 0ustar meebeymeebey Container for IConfig objects. TODO. Returns the collection of IConfig objects. Gets the global for all IConfigs in this source. Gets or sets whether the source will be automatically saved. This save process occurs each time the the IConfig.Set method is called. Take a look at the Save method of each configuration source to determine when this method can be activated. Returns the expanded string value. This method does not replace the other key values in the IConfigSource. Config to load the expanded value. Configuration key. Saves all configuration values. Look at the class that implements this interface to determine when this can be called. An error occurred. Reloads all configuration values. This can only be called if the document can be reloaded from it's source, such as if it was loaded from a file or from the Windows Registry. If other documents were merged (with Merge) then they will be lost. An error occurred. Merges all IConfigs from another IConfigSource into the Configs collection. The IConfigSource to merge. TODO. If the IConfigSource has already been merged. If the IConfigSource is this. If an IConfig of the same name already exists. Adds a new IConfig. This creates a new IConfig and adds it to the collection. The name of the new IConfig. The new IConfig. If an IConfig of the same name already exists. Expands all key values. Calling this method expands all key values with the values of other keys. See the example below for more information. In many cases you will find that your key values are dependent on the values of other keys. For instance you have a root path configuration value and several values for files that use this path like in this example: [File Path] RootPath = C:\Program Files\My Program Logging = MyApp.log WebPage = index.html Without Nini if you wanted to combine the value of "RootPath" with "Logging" and "WebPage" then you would have to perform ugly string concatenations to get "C:\Program Files\My Program\index.html". In Nini you do not need to do this: [File Path] RootPath = C:\Program Files\My Program Logging = ${RootPath}\MyApp.log WebPage = ${RootPath}\index.html This can save you a lot of trouble concatenating them yourself and make your code a lot cleaner. If you want to grab a value from a different section you can do the same above but add the section name followed by a bar ("|") like so: ${section|key}. This method is deprecated. Use from now on. Occurs when the config source is reloaded. This event occurs when the method is called. Occurs when the config soucre is saved. This event occurs when a method is called. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/IniConfigSource.xml0000644000175000017500000001204110401112604023753 0ustar meebeymeebey Class for loading an INI file. Constructor. Loads an empty INI source. This constructor is useful if you want to create an INI source programmatically. You can then call one of the methods to save it to a file or object. Constructor. Loads an INI file source. Loads this up from a file. Path to the file to load. Constructor. Loads an INI file source. This is a non-savable source unless you call one of the overloaded methods. TextReader to load. Constructor. Loads an INI file source. This is a non-savable source unless you call one of the overloaded methods. Stream to load. Constructor. Loads an INI file source. This is a non-savable source unless you call one of the overloaded methods. The IniDocument. Gets or sets whether key values will be accessed ignoring case. The path where the document will be saved. This path is set when the class is loaded with a path or saved with a path (using the Save (string) method). Otherwise the value will be null. If it is null then calling save will cause an exception to be thrown. Loads an INI file source. Loads this up from a file. Path to the file to load. Loads an INI file source. This is a non-savable source unless you call one of the overloaded methods. TextReader to load. Loads an INI file source. This is a non-savable source unless you call one of the overloaded methods. Stream to load. Loads an INI file source. This is a non-savable source unless you call one of the overloaded methods. The IniDocument. Saves all configuration values. If the is null then this will throw an exception. The is null. Saves all configuration values to a path. This sets the to path. Path to save the file. An error has occurred. Saves all configuration values to a TextWriter. This sets the to null. The TextWriter to save the document. An error has occurred. Writes the INI data to a Stream. Stream object Returns all characters in the document. It returns the INI string of the document. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/IConfig.xml0000644000175000017500000001450010400672302022252 0ustar meebeymeebey Configuration data access interface. Gets or sets the IConfig name. If set then it renames this config with the parent source. Returns the parent IConfigSource. Gets the for this instance. Returns true if the configuration key is present. Configuration key. Returns a string key value. Configuration key. Returns a string key value. Configuration key. Default value if the key is not found. Returns the expanded string value. This method does not replace the other key values in the IConfigSource. Configuration key. Returns an integer key value. Configuration key. No key was found. Returns an integer key value. Configuration key. Default value if the key is not found. Returns an integer key value from an alias. Configuration key. If set to true then this returns the alias configuration value. Returns an integer key value from an alias. Configuration key. If set to true then this returns the alias configuration value. Default value if the key is not found. Returns an long key value. Configuration key. No key was found. Returns an integer key value. Configuration key. Default value if the key is not found. Returns a boolean key value. In order to get boolean values you will need to set the property correctly. See the Nini Manual for more information. Configuration key. No key was found. Returns a string key value. In order to get boolean values you will need to set the property correctly. See the Nini Manual for more information. Configuration key. Default value if the key is not found. Returns a float key value. Configuration key. Default value if the key is not found. Returns a float key value. Configuration key. Default value if the key is not found. Returns a double key value. Configuration key. No key was found. Returns a double key value. Configuration key. Default value if the key is not found. Sets a key value. Configuration key. Value to set for the key. The set value will be the result of the object's ToString value. Removes a configuration key. Configuration key. Returns an Array of the key strings. Returns an Array of all key values. Occurs when a key is set. This event occurs when the method is called. Occurs when a key is removed. This event occurs when the method is called. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/ConfigCollection.xml0000644000175000017500000001063110400654252024162 0ustar meebeymeebey A collection of IConfig objects. Returns the number of IConfigs in the collection. Returns the IConfig at the specified index. Returns true if the collection is synchronized. This always returns false. Returns true if the collection is of a fixed size. This aways returns false. Returns true if the collection is read only. This aways returns false. Returns the synchronization object. Returns the IConfig by name. Adds a new IConfig to the collection. The IConfig to add. Adds a new IConfig to the collection. The name of the IConfig to add. Inserts a new IConfig to the collection. The index of the collection to insert the IConfig. The IConfig to insert. Removes an IConfig from the collection. The IConfig to remove. Removes an IConfig from the index. The index of the IConfig. Removes all IConfigs from the collection. Returns true if the collection contains the IConfig. The IConfig to search for. Returns the index of an IConfig in the collection. It returns -1 if the IConfig was not found. The IConfig to search for. Returns the enumerator object. Copies the collection to an array. Array to copy the results. Index of the array to start copying. Copies the collection to a strongly-typed array. The IConfig array to copy the results. Index of the array to start copying. Raises the event. Raising an event invokes the event handler through a delegate. The EventArgs object that contains all event data. Raises the event. Raising an event invokes the event handler through a delegate. The EventArgs object that contains all event data. Occurs when a config is added. Occurs when a config is removed. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/AliasText.xml0000644000175000017500000000354710400654252022647 0ustar meebeymeebey Class for defining alias text values. Class constructor. Adds a new integer alias. Alias key. Alias name. Alias value. Adds a new Boolean alias. Alias name. Alias value. Adds a new alias using the items in an enumeration. Config key. An enum instance. This method is not available for the .NET Compact Framework version of Nini. Returns the alias value for a specified key. Alias key. Returns the int value of a config value. Config key. Config alias. Returns true if the Boolean value exists. Alias key. Returns true if the integer value exists. Config key. Config alias. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/DotNetConfigSource.xml0000644000175000017500000001447610401112604024447 0ustar meebeymeebey Represents a Microsoft XML .NET configuration file. .NET configuration section names are element nodes they cannot contain certain characters such as whitespace. Constructor. Loads an empty .NET config source. This constructor is useful if you want to create a .NET config source programmatically. You can then call one of the methods to save it to a file or object. Creates a new instance of the XML configuration source. This instance type is not read only. It changes the value of the configuration file for the executable. For instance, if the name of the executable is "MyApp.exe" then it will load the data from the "MyApp.exe.config" file. Creates a new instance of the XML configuration source. Instantiating this way does not currently allow for saving configuration changes because the will be null. Use this for configuration ASP.NET web sites that use the Web.config file. This method is not supported by the .NET Compact Framework. Array of sections contained in the XML file. These cannout be determined programmatically so you will have to supply them at load time. Creates a new instance of the XML configuration source. Use this if you either know where the configuration file is located. You can do this with the Page.MapPath method for web.config files. Path to the configuration file. Creates a new instance of the XML configuration source. The XML reader configuration document. The path where the document will be saved. This path is set when the class is loaded with a path or saved with a path (using the Save (string) method). Otherwise the value will be null. If it is null then calling save will cause an exception to be thrown. Loads a new instance of the XML configuration source. This instance type is not read only. It changes the value of the configuration file for the executable. For instance, if the name of the executable is "MyApp.exe" then it will load the data from the "MyApp.exe.config" file. Loads a new instance of the XML configuration source. Use this if you either know where the configuration file is located. You can do this with the Page.MapPath method for web.config files. Path to the configuration file. Loads a new instance of the XML configuration source. The XML reader configuration document. Saves all configuration values. If the is null then this will throw an exception. The is null. Saves all configuration values to a path. This sets the to path. Path to save the file. An error has occurred. Saves all configuration values to a TextWriter. This sets the to null. The TextWriter to save the document. An error has occurred. Writes the XML data to a Stream. Stream object Returns the full path to the configuration file This is a file with the extension of the application: MyApp.exe would be C:\Path_To_Program\MyApp.exe.config. This method is not supported by the .NET Compact Framework. Returns all characters in the document. It returns the XML string of the document. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/ArgvConfigSource.xml0000644000175000017500000001037210400654252024151 0ustar meebeymeebey Configuration class for loading command line arguments. Provides a method to parse command line parameters and collect them into a . The arguments allowed are the Windows style ("/key:value", "-key") or Unix style ("--key=value" and "-key value"). This is an example that sends in Windows arguments: MyApp.exe -debug /file:log.txt This is an example that sends in Unix arguments: MyApp.exe -D --file log.txt --debug=yes Constructor. Loads the command line parameters. See the examples below. The arguments as passed in by the main application. This is an example that sends in Windows arguments: MyApp.exe -debug /file:log.txt This is an example that sends in Unix arguments: MyApp.exe -D --file log.txt --debug=yes Adds a command line switch. Calling this will cause Nini to search the arguments for the matching switch. The configuration (IConfig) name to add the value to if it is found. The long switch name (without the "-", "--", or "/"). public static int Main (string[] args) { ArgvConfigSource source = new ArgvConfigSource (args); source.AddSwitch ("Logging", "file-name", "f"); source.AddSwitch ("Logging", "columns", "c"); source.AddSwitch ("Logging", "max-file-size", "m"); if (args.Length > 0) { string fileName = config.Configs["Logging"].Get ("file-name"); int columns = config.Configs["Logging"].GetInt ("columns"); long fileSize = config.Configs["Logging"].GetLong ("max-file-size"); } } Adds a command line switch including a short switch. Calling this will cause Nini to search the arguments for the matching switch. The configuration (IConfig) name to add the value to if it is found. The short switch name (without the "-", "--", or "/"). The long switch name (without the "-", "--", or "/"). public static int Main (string[] args) { ArgvConfigSource source = new ArgvConfigSource (args); source.AddSwitch ("Logging", "file-name", "f"); source.AddSwitch ("Logging", "columns", "c"); source.AddSwitch ("Logging", "max-file-size", "m"); if (args.Length > 0) { string fileName = config.Configs["Logging"].Get ("file-name"); int columns = config.Configs["Logging"].GetInt ("columns"); long fileSize = config.Configs["Logging"].GetLong ("max-file-size"); } } Returns a copy of the arguments input list. Saves all configuration values. This method will always throw an exception because you will never be able to save it. This will always throw an exception. Reloads all configuration values. This class cannot be reloaded so it will always throw an exception. This will always throw an exception. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/ConfigBase.xml0000644000175000017500000000230010400654252022733 0ustar meebeymeebey The base class for all IConfig objects. Constructor. Config name. Config parent IConfigSource. Adds a new IConfig. The IConfig key. The IConfig value. Raises the KeySet event. Raising an event invokes the event handler through a delegate. The EventArgs object that contains all event data. Raises the KeyRemoved event. Raising an event invokes the event handler through a delegate. The EventArgs object that contains all event data. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/RegistryConfigSource.xml0000644000175000017500000000572110400654252025064 0ustar meebeymeebey Class for loading Windows Registry data. This class allows users to read and write Windows Registry configurations. Be careful writing code with this program that writes to the registry. If coded incorrectly you can corrupt your Registry. This class is not available for the .NET Compact Framework version of Nini. Enumeration of Registry recursion types. Does not specify an recursion. Indicates that Registry namespacing should be removed. If the base key is "Software\MyApp" then the keys recieved should be "Software" and "MyApp". Indicatates that Registry namespacing should not be removed. If the base key is "Software\MyApp" then the keys recieved should be "Software" and "Software\MyApp". Gets or sets the default RegistryKey to use if the AddConfig method is called. Adds a config and will map itself to the DefaultKey property. Name of the config. Adds a config and will map itself to the given registry key. Name of the config. RegistryKey to map to. Maps a single registry key to an IConfig. TODO. The root Registry key to load (e.g. Registry.LocalMachine). The registry path to load off of the the registryKey. Maps a single registry key to an IConfig. If recurse is set to Namespacing or Flattened then it will recursively load all Registry subkeys into IConfigs as well. The root Registry key to load (e.g. Registry.LocalMachine). The registry path to load off of the the registryKey. The registry path to load off of the the registryKey. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/IniConfig.xml0000644000175000017500000000241410400654252022606 0ustar meebeymeebey IConfig class for IniConfigSource sections. Constructor. Config name. Config parent IConfigSource. Returns a key value. If the parent IniConfigSource has CaseSensitive turned on then this will return the value ignoring the case of the key name. The key name. Sets a key value. If the parent IniConfigSource has CaseSensitive turned on then this will set the value ignoring the case of the key name. The key name. The key value Removes a key. If the parent IniConfigSource has CaseSensitive turned on then this will remove the key ignoring the case of the key name. The key name. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Config/XmlConfigSource.xml0000644000175000017500000001050210401112604023774 0ustar meebeymeebey Class for configuring an XML source. Provides users with the ability to load more than one XML configuration file. Unlike DotNetConfigSource which forces users to use on file and have the name the same as the application. The following is an example of an XML document for this type: <Nini> <Section Name="MySection"> <Key Name="SomeName" Value="Some Value" /> <Key Name="SomeInteger" Value="5652" /> </Section> <Section Name="AnotherSection"> <Key Name="Another Name" Value="Another Value" /> </Section> </Nini> Constructor. Loads an empty XML source. This constructor is useful if you want to create an XML source programmatically. You can then call one of the methods to save it to a file or object. Creates a new object from the specified XML file. This instance type is not read only. Path to the XML file. Creates a new instance of the XML configuration source. This instance type is read only. An XmlReader instance. The path where the document will be saved. This path is set when the class is loaded with a path or saved with a path (using the Save (string) method). Otherwise the value will be null. If it is null then calling save will cause an exception to be thrown. Loads a new object from the specified XML file. This instance type is not read only. Path to the XML file. Loads a new instance of the XML configuration source. This instance type is read only. An XmlReader instance. Saves all configuration values. If the is null then this will throw an exception. The is null. Saves all configuration values to a path. This sets the to path. Path to save the file. An error has occurred. Saves all configuration values to a TextWriter. This sets the to null. The TextWriter to save the document. An error has occurred. Writes the XML data to a Stream. Stream object Returns all characters in the document. It returns the XML string of the document. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/0000755000175000017500000000000010410342252017523 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/IniSectionCollection.xml0000644000175000017500000000353010400654250024331 0ustar meebeymeebey A collection of section objects. Returns the number of sections in the collection. Returns the section at the specified index. Returns true if the collection is synchronized. This always returns false. Returns the synchronization object. Returns the section by name. Adds a new section to the collection. The section to add. Removes a section from the collection. Section name. Returns the enumerator object. Copies the collection to an array. Array to copy the results. Index of the array to start copying. Copies the collection to a strongly-typed array. The IniSection array to copy the results. Index of the array to start copying. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/IniItem.xml0000644000175000017500000000150110400654250021603 0ustar meebeymeebey INI item class. Item comment. Item type. Item value. Item name. Creates a new item. Item name. Item value. Item type. Item comment. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/IniReader.xml0000644000175000017500000001731610400702104022112 0ustar meebeymeebey Fast forward only INI parser class. An INI is a file is a simple file format for storing configuration information. These files are line based. Each line can be one of three types: empty, section, or key/value pair. All of these formats allow for comments. Comments are delimited by hash mark ('#') or a semi-colon (';'). IniReader reader = new IniReader ("test.ini"); string comment; while (reader.Read ()) { comment = (reader.Comment.Length > 0) ? " ; " + reader.Comment : ""; switch (reader.IniType) { case IniType.Empty: Console.WriteLine (comment); break; case IniType.Section: Console.WriteLine ("[" + reader.Name + "]") + comment; break; case IniType.Key: Console.WriteLine (reader.Name + " = " + reader.Value + comment); break; } } reader.Close (); The System.Math class The state of the reader. The reader is closed. The reader has reached the end of the file. An error has occurred while parsing. The reader has not yet begun parsing. No root was found. The function may not cross the y-axis in a continous manner. The INI line type. INI section (e.g. [My Section]) An INI key value pair (e.g. my_key = value) No INI data. Comments may be present. Initializes a new instance of the class with the supplied file. The path to the INI file. Initializes a new instance of the class using a TextReader. The TextReader. Initializes a new instance of the class using a Stream. The Stream. Gets the name of the current INI line. For sections this is the name of the section.
For keys this is the name of the key.
For emtpy lines this is an empty string.
Gets the value of the current INI line. For sections this is an empty string.
For keys this is the key value.
For emtpy lines this is an empty string.
Gets the type of the current INI line. Gets the comment text for the current INI line. All types may contain comments. Gets the current line number. Gets the current line position (column). Gets or sets whether comments should be collected while parsing. Gets the state of the reader. Gets or sets whether to accept line continuations. Line continuations are triggered by a slash ('\') character at the end of a key value line. Gets or sets whether accept comments after keys. Gets or sets whether to accept no assignment operator after a key. Gets or sets whether or not all key text should be consumed. This means that even double quotes (") and commments (;) will be consumed from keys. This was added to similate the behavior of the Win32 API GetProfileString method. Returns the comment delimiters. The default value is a semicolon (';'). Sets the comment delimiters. The array of comment delimiters. The default value is a semicolon (';'). Returns the assign delimiters. The default value is an equals operator ('='). Sets the assign delimiters. The array of assign delimiters. The default value is an equals operator ('='). Moves the reader to the next line. true if the reader successfully read another line. An error occurred while parsing. Moves the reader to the next section. true if the reader successfully found another section. Moves the reader to the next line. true if the reader successfully read another key. It returns false if it is at the end of the file or it found a section before the next key. Closes the current reader and frees the resources. Cleans up all managed and unmanaged resources for the instance. Cleans up all unmanaged resources for the instance and optionally the managed resouces as well. If true then this will clean up managed resources as well.
nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/IniWriter.xml0000644000175000017500000001274710400654250022177 0ustar meebeymeebey INI writer class. IniWriter writer = new IniWriter ("test.ini"); writer.WriteEmpty ("This is a comment"); writer.WriteSection ("My Section"); writer.Indentation = 2; writer.WriteKey ("key 1", "value 1", "Comment 1"); writer.WriteKey ("key 2", "value 2"); writer.Close (); The output of test.ini would be this: ; This is a comment [My Section] key 1 = value 1 ; Comment 1 key 2 = value 2 The state of the writer. The writer has not started writing. An empty line has been written but no sections. A section has been written. The writer is closed. Initializes a new instance of the class with the supplied file. The path to the INI file. Initializes a new instance of the class using a TextWriter. The TextWriter. Initializes a new instance of the class using a Stream. The Stream. Number of spaces in front of each line. The default value is zero (0). Whether or not quotes should surround each entry. The default value is false. Gets the state of the reader. What type of comment type is used. The default value is a semicolon (';'). Returns the writer base stream. Assign delimiter to search for when parsing. The default value is an equals sign ('='). Returns the string version of the current written text. Writes an INI section. Section name. A WriteState error occurred or the document was closed. Writes a section with a comment. Section name. Comment text. A WriteState error occurred or the document was closed. Writes a key to a section. Key name. Key value. A WriteState error occurred or the document was closed. Writes a key to a section with a comment. Key name Key value. Comment text. A WriteState error occurred or the document was closed. Writes an empty line. Writes an empty line with a comment. Comment text. A WriteState error occurred or the document was closed. Closes the current writer and frees the resources. Flushes the current writer and frees the resources. Cleans up all managed and unmanaged resources for the instance. Cleans up all unmanaged resources for the instance and optionally the managed resouces as well. If true then this will clean up managed resources as well. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/IniSection.xml0000644000175000017500000000520310400654250022314 0ustar meebeymeebey INI section class. Creates a new section. Section name. Creates a new section with a comment. Section name. Comment text. Gets the name of the section. Gets the section comment. Returns null if there is no comment. Returns the number of items in the section. This includes keys, comments, and empty lines. Returns the value of the given key. Returns null if the key does not exist Section key. Returns the IniItem at the given index. Key index. Returns the list of section keys. Returns true if the key exists; false if it does not. Section key. Sets a key value and a comment. Key name. Key value. Comment text. Sets a key and value. Key name. Key value. Sets a section comment. Comment text. Creates an empty line in the section. Removes the supplied key. Key name. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/IniException.xml0000644000175000017500000000415310400654250022651 0ustar meebeymeebey Returns information about the last INI exception. Returns the line position where the exception occurred. Returns the line number where the exception occurred. Returns the exception message. Initializes an INI exception instance Initializes an INI exception instance The exception message. The Exception that threw this exception Initializes an INI exception instance The serialization information for this exception. The object containing the context information for this exception. Initializes an INI exception instance The exception message. Initializes a new instance of the class with the IniReader. The IniReader. The exception message. ISerializable GetObjectData method. The serialized object data. The context of the source or destination. nini-1.1.0+dfsg.2/Docs/Reference/xml/en/Ini/IniDocument.xml0000644000175000017500000002232310401122514022462 0ustar meebeymeebey Represents a type of INI file. INI files are not officially a standard. Thus there are several different types of INI files floating around. Standard INI type (Windows) This refers to the Windows INI type which has the following properties:
  • Accepts only ';' as a comment delimiter.
  • Allows for comments after key values
Python language INI type This refers to the Python programming language configuration file type. It has the following properties:
  • Accepts ';' and '#' as comment delimiters.
  • The assign operator is ':' rather than '='
Samba program INI type. This refers to the Samba programming language configuration file type. It has the following properties:
  • Accepts ';' and '#' as comment delimiters.
  • Accepts line continuation with the use of a slash ('\') at the end of a line.
MySQL program INI type. This refers to the MySQL server configuration file type. It has the following properties:
  • Accepts '#' as comment delimiters.
  • Accepts ';' and '=' as assign operators.
  • Accepts keys with no values.
  • Does not accept comments after keys.
Windows INI type. This refers to the Windows INI format like that used by the GetPrivateProfileString Win32 API function.
  • Accepts ';' as comment delimiter.
  • Accepts '=' as assign operator.
  • Reads quotes and comments in key values as normal text.
High level INI document access class. Here's an example of accessing the following document, test.ini. ; This is a comment [My Section] key 1 = value 1 ; Comment 1 key 2 = value 2 [Pets] dog = rover cat = muffy Here is code for accessing it. IniDocument doc = new IniDocument ("test.ini"); Console.WriteLine ("Key: " + doc.Get ("My Section", "key 1")); Console.WriteLine ("Key: " + doc.Get ("Pets", "dog")); doc.SetSection ("Movies"); doc.SetKey ("Movies", "horror", "Scream"); doc.SetKey ("Movies", "comedy", "Dumb and Dumber"); doc.RemoveSection ("My Section"); doc.RemoveKey ("Pets", "dog"); StringWriter writer = new StringWriter (); doc.Save (writer); Console.WriteLine ("New INI document:"); Console.WriteLine (writer.ToString ()); This prints out the following response: Key: value 1 Key: rover New INI document: [Pets] cat = muffy [Movies] horror = Scream comedy = Dumb and Dumber Gets or sets the INI file type Initializes an empty INI class instance. Initializes a new instance of the class with the supplied file. The path to the INI file. Initializes a new instance of the class with the supplied file and the INI type. The path to the INI file. The INI file type. Initializes a new instance of the class using a TextReader. The TextReader. Initializes a new instance of the class using a TextReader and the INI type. The TextReader. The INI file type. Initializes a new instance of the class using a Stream. The Stream. Initializes a new instance of the class using a Stream and the INI type. The Stream. The INI file type. Initializes a new instance of the class using an IniReader. The IniReader. Returns the string version of the section key. Returns null if the key does not exist Section name. Section key. Returns a list of sections. Does not return the sections necessarily in the order that they were loaded. Returns a list of keys. Does not return the keys necessarily in the order that they were loaded. Section name. Returns true if the section exists; false if it does not. Section name. Returns true if the key exists; false if it does not. Section name. Key value. Sets a section if that section does not already exist. Section name. Adds a new key if the key does not exist. Sets a new value to an existing key if the key does exist. Section name. Key value. Key value. The section does not exist. Removes a given section. Section name. The section does not exist. Flushes the current writer and frees the resources. Section name. Key name. The section or key does not exist. Loads the instance with the supplied file. The path to the INI file. Loads the instance using a TextReader. The TextReader. Loads the instance using a Stream. The Stream. Loads the instance using an IniReader. The IniReader. Writes the INI data to a file. File path. Writes the INI data to a writer. TextWriter object Writes the INI data to a Stream. Stream object
nini-1.1.0+dfsg.2/Docs/Reference/html/0000755000175000017500000000000010410343334016550 5ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.IsSynchronized.html0000644000175000017500000000422110410343262030101 0ustar meebeymeebey IsSynchronized Property
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.IsSynchronized Property

Returns true if the collection is synchronized. This always returns false.

public bool IsSynchronized {get;}

Implements

ICollection.IsSynchronized

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReaderConstructor1.html0000644000175000017500000000330210410343262025237 0ustar meebeymeebey IniReader Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Constructor (String)

Initializes a new instance of the class with the supplied file.

public IniReader(
   string filePath
);

Parameters

filePath
The path to the INI file.

See Also

IniReader Class | Nini.Ini Namespace | IniReader Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Save_overload_3.html0000644000175000017500000000571110410343260027600 0ustar meebeymeebey IniConfigSource.Save Method (TextWriter)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Save Method (TextWriter)

Saves all configuration values to a TextWriter.

public void Save(
   TextWriter writer
);

Parameters

writer
The TextWriter to save the document.

Remarks

This sets the SavePath to

null
.

Exceptions

Exception Type Condition
Exception An error has occurred.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReaderMembers.html0000644000175000017500000002266010410343262024233 0ustar meebeymeebey IniReader Members
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Members

IniReader overview

Public Instance Constructors

IniReader Overloaded. Initializes a new instance of the IniReader class.

Public Instance Properties

AcceptCommentAfterKeyGets or sets whether accept comments after keys.
AcceptNoAssignmentOperator Gets or sets whether to accept no assignment operator after a key.
CommentGets the comment text for the current INI line.
ConsumeAllKeyText Gets or sets whether or not all key text should be consumed. This means that even double quotes (") and commments (;) will be consumed from keys.
IgnoreComments Gets or sets whether comments should be collected while parsing.
LineContinuationGets or sets whether to accept line continuations.
LineNumberGets the current line number.
LinePositionGets the current line position (column).
NameGets the name of the current INI line.
ReadStateGets the state of the reader.
TypeGets the type of the current INI line.
ValueGets the value of the current INI line.

Public Instance Methods

CloseCloses the current reader and frees the resources.
DisposeOverloaded. Cleans up all managed and unmanaged resources for the instance.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetAssignDelimitersReturns the assign delimiters.
GetCommentDelimitersReturns the comment delimiters.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
MoveToNextKeyMoves the reader to the next line.
MoveToNextSectionMoves the reader to the next section.
ReadMoves the reader to the next line.
SetAssignDelimitersSets the assign delimiters.
SetCommentDelimitersSets the comment delimiters.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

DisposeOverloaded. Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.
Finalize Destructor.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniReader Class | Nini.Ini Namespace | The System.Math class


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.OnConfigAdded.html0000644000175000017500000000444410410343260027406 0ustar meebeymeebey ConfigCollection.OnConfigAdded Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.OnConfigAdded Method 

Raises the ConfigAdded event.

protected void OnConfigAdded(
   ConfigEventArgs e
);

Parameters

e
The EventArgs object that contains all event data.

Remarks

Raising an event invokes the event handler through a delegate.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.DefaultKey.html0000644000175000017500000000372410410343262027717 0ustar meebeymeebey DefaultKey Property
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.DefaultKey Property

Gets or sets the default RegistryKey to use if the AddConfig method is called.

public Microsoft.Win32.RegistryKey DefaultKey {get; set;}

Remarks

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.ContainsInt.html0000644000175000017500000000442310410343256025672 0ustar meebeymeebey AliasText.ContainsInt Method
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.ContainsInt Method 

Returns true if the integer value exists.

public bool ContainsInt(
   string key,
   string alias
);

Parameters

key
Config key.
alias
Config alias.

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Save_overload_2.html0000644000175000017500000000563010410343262027622 0ustar meebeymeebey XmlConfigSource.Save Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Save Method (String)

Saves all configuration values to a path.

public void Save(
   string path
);

Parameters

path
Path to save the file.

Remarks

This sets the SavePath to

path
.

Exceptions

Exception Type Condition
Exception An error has occurred.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetBoolean_overload_2.html0000644000175000017500000000546510410343256027705 0ustar meebeymeebey ConfigBase.GetBoolean Method (String, Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetBoolean Method (String, Boolean)

Returns a string key value.

public bool GetBoolean(
   string key,
   bool defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Implements

IConfig.GetBoolean

Remarks

In order to get boolean values you will need to set the Alias property correctly. See the Nini Manual for more information.

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetBoolean Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteEmpty_overloads.html0000644000175000017500000000322010410343264027151 0ustar meebeymeebey WriteEmpty Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteEmpty Method

Writes an empty line.

Overload List

Writes an empty line.

public void WriteEmpty();

Writes an empty line with a comment.

public void WriteEmpty(string);

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigMethods.html0000644000175000017500000001046310410343260024402 0ustar meebeymeebey IConfig Methods
Nini Library API Reference - http://nini.sourceforge.net/

IConfig Methods

The methods of the IConfig interface are listed below. For a complete list of IConfig interface members, see the IConfig Members topic.

Public Instance Methods

Contains Returns true if the configuration key is present.
GetOverloaded. Returns a string key value.
GetBooleanOverloaded. Returns a boolean key value.
GetDoubleOverloaded. Returns a double key value.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetFloatOverloaded. Returns a float key value.
GetIntOverloaded. Returns an integer key value.
GetKeysReturns an Array of the key strings.
GetLongOverloaded. Returns an long key value.
GetStringOverloaded. Returns a string key value.
GetValuesReturns an Array of all key values.
Remove Removes a configuration key.
Set Sets a key value.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.BaseStream.html0000644000175000017500000000350710410343262025016 0ustar meebeymeebey BaseStream Property
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.BaseStream Property

Returns the writer base stream.

public System.IO.Stream BaseStream {get;}

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSource.GetArguments.html0000644000175000017500000000356010410343256027357 0ustar meebeymeebey ArgvConfigSource.GetArguments Method
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource.GetArguments Method 

Returns a copy of the arguments input list.

public string[] GetArguments();

See Also

ArgvConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSource.Reload.html0000644000175000017500000000523710410343256026163 0ustar meebeymeebey ArgvConfigSource.Reload Method
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource.Reload Method 

Reloads all configuration values.

public override void Reload();

Implements

IConfigSource.Reload

Remarks

This class cannot be reloaded so it will always throw an exception.

Exceptions

Exception Type Condition
ArgumentException This will always throw an exception.

See Also

ArgvConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.GetBoolean.html0000644000175000017500000000410210410343256025452 0ustar meebeymeebey AliasText.GetBoolean Method
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.GetBoolean Method 

Returns the alias value for a specified key.

public bool GetBoolean(
   string key
);

Parameters

key
Alias key.

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceProperties.html0000644000175000017500000000555210410343260027324 0ustar meebeymeebey DotNetConfigSource Properties
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Properties

The properties of the DotNetConfigSource class are listed below. For a complete list of DotNetConfigSource class members, see the DotNetConfigSource Members topic.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
SavePath The path where the document will be saved.

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor8.html0000644000175000017500000000261110410343262025624 0ustar meebeymeebey IniDocument Constructor ()
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor ()

Initializes an empty INI class instance.

public IniDocument();

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasTextConstructor.html0000644000175000017500000000300710410343256025705 0ustar meebeymeebey AliasText Constructor
Nini Library API Reference - http://nini.sourceforge.net/

AliasText Constructor 

Class constructor.

public AliasText();

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListProperties.html0000644000175000017500000000666110410343264025556 0ustar meebeymeebey OrderedList Properties
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList Properties

The properties of the OrderedList class are listed below. For a complete list of OrderedList class members, see the OrderedList Members topic.

Public Instance Properties

CountReturns the number of objects in the collection.
IsFixedSize Returns true if the collection is of a fixed size. This value is always false.
IsReadOnly Returns true if the list is read only. Always returns false.
IsSynchronized Returns true if the collection is synchronized. This value is always false.
ItemOverloaded. Returns the object at the given index.
Keys Returns a list of the collection keys.
SyncRootReturns the synchronized object.
ValuesReturns a list of the collection values.

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Save_overloads.html0000644000175000017500000000416110410343262027562 0ustar meebeymeebey Save Method
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Save Method

Saves all configuration values.

Overload List

Saves all configuration values.

public override void Save();

Writes the XML data to a Stream.

public void Save(Stream);

Saves all configuration values to a TextWriter.

public void Save(TextWriter);

Saves all configuration values to a path.

public void Save(string);

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniException.html0000644000175000017500000000527710410343262023461 0ustar meebeymeebey IniException Class
Nini Library API Reference - http://nini.sourceforge.net/

IniException Class

Returns information about the last INI exception.

For a list of all members of this type, see IniException Members.

System.Object
   System.Exception
      System.SystemException
         Nini.Ini.IniException

public class IniException : SystemException

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

IniException Members | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSource.AddSwitch_overload_2.html0000644000175000017500000000710310410343256030735 0ustar meebeymeebey ArgvConfigSource.AddSwitch Method (String, String, String)
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource.AddSwitch Method (String, String, String)

Adds a command line switch including a short switch.

public void AddSwitch(
   string configName,
   string longName,
   string shortName
);

Parameters

configName
The configuration (IConfig) name to add the value to if it is found.
longName
The long switch name (without the "-", "--", or "/").
shortName
The short switch name (without the "-", "--", or "/").

Remarks

Calling this will cause Nini to search the arguments for the matching switch.

Example

public static int Main (string[] args)
{
   ArgvConfigSource source = new ArgvConfigSource (args);

   source.AddSwitch ("Logging", "file-name", "f");
   source.AddSwitch ("Logging", "columns", "c");
   source.AddSwitch ("Logging", "max-file-size", "m");

   if (args.Length > 0)
   {
      string fileName = config.Configs["Logging"].Get ("file-name");
      int columns = config.Configs["Logging"].GetInt ("columns");
      long fileSize = config.Configs["Logging"].GetLong ("max-file-size");
   }
}
                

See Also

ArgvConfigSource Class | Nini.Config Namespace | ArgvConfigSource.AddSwitch Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSourceConstructor1.html0000644000175000017500000000327710410343262027145 0ustar meebeymeebey XmlConfigSource Constructor ()
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Constructor ()

Constructor. Loads an empty XML source.

public XmlConfigSource();

Remarks

This constructor is useful if you want to create an XML source programmatically. You can then call one of the Save methods to save it to a file or object.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.html0000644000175000017500000000531710410343260024763 0ustar meebeymeebey ConfigCollection Class
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection Class

A collection of IConfig objects.

For a list of all members of this type, see ConfigCollection Members.

System.Object
   Nini.Config.ConfigCollection

public class ConfigCollection : IList, ICollection, IEnumerable

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

ConfigCollection Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetString_overloads.html0000644000175000017500000000323710410343260027042 0ustar meebeymeebey GetString Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetString Method

Returns a string key value.

Overload List

Returns a string key value.

string GetString(string);

Returns a string key value.

string GetString(string,string);

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.Reload.html0000644000175000017500000000515110410343260025442 0ustar meebeymeebey IConfigSource.Reload Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.Reload Method 

Reloads all configuration values.

void Reload();

Remarks

This can only be called if the document can be reloaded from it's source, such as if it was loaded from a file or from the Windows Registry. If other documents were merged (with Merge) then they will be lost.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.IniHierarchy.html0000644000175000017500000001023610410343262022712 0ustar meebeymeebey Nini.IniHierarchy
Nini Library API Reference - http://nini.sourceforge.net/

Nini.Ini Hierarchy

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.Reloaded.html0000644000175000017500000000426210410343260026437 0ustar meebeymeebey ConfigSourceBase.Reloaded Event
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.Reloaded Event

Occurs when the config source is reloaded.

public event EventHandler Reloaded;

Implements

IConfigSource.Reloaded

Remarks

This event occurs when the Reload method is called.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteEmpty_overload_1.html0000644000175000017500000000357010410343264027216 0ustar meebeymeebey IniWriter.WriteEmpty Method ()
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteEmpty Method ()

nini-1.1.0+dfsg.2/Docs/Reference/html/static.gif0000644000175000017500000000161510410343244020531 0ustar meebeymeebeyGIF89a÷0+qg‘„îîŞDDDőŕÓÂOI4-fffĚĚĚ˙˙˙˙˙!ů,@j%H°`A"(Ś@‚A.`€D…<ÜČ‚B 8`H D@ €ŁË—.@ ŔK*`ňA‡:W€@’c`4 “N "Yđ5‡6€É1 ;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.Item2.html0000644000175000017500000000402010410343262026103 0ustar meebeymeebey Item Property (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.Item Property (String)

Returns the section by name.

public IniSection this[
   string configName
] {get;}

See Also

IniSectionCollection Class | Nini.Ini Namespace | IniSectionCollection.Item Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Load_overload_2.html0000644000175000017500000000460710410343260027563 0ustar meebeymeebey IniConfigSource.Load Method (TextReader)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Load Method (TextReader)

Loads an INI file source.

public void Load(
   TextReader reader
);

Parameters

reader
TextReader to load.

Remarks

This is a non-savable source unless you call one of the overloaded Save methods.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigKeyEventArgsConstructor.html0000644000175000017500000000345310410343260027504 0ustar meebeymeebey ConfigKeyEventArgs Constructor
Nini Library API Reference - http://nini.sourceforge.net/

ConfigKeyEventArgs Constructor 

public ConfigKeyEventArgs(
   string keyName,
   string keyValue
);

See Also

ConfigKeyEventArgs Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Remove_overloads.html0000644000175000017500000000333010410343260030266 0ustar meebeymeebey Remove Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Remove Method

Removes an IConfig from the collection.

Overload List

Removes an IConfig from the collection.

public void Remove(IConfig);

Removes an IConfig from the collection.

public void Remove(object);

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentMembers.html0000644000175000017500000001365310410343262024611 0ustar meebeymeebey IniDocument Members
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Members

IniDocument overview

Public Instance Constructors

IniDocument Overloaded. Initializes a new instance of the IniDocument class.

Public Instance Properties

FileType Gets or sets the INI file type
SectionsGets the section comment.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads the instance with the supplied file.
SaveOverloaded. Writes the INI data to a writer.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.ReadState.html0000644000175000017500000000341010410343262024563 0ustar meebeymeebey ReadState Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.ReadState Property

Gets the state of the reader.

public IniReadState ReadState {get;}

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Save_overload_4.html0000644000175000017500000000426110410343260027600 0ustar meebeymeebey IniConfigSource.Save Method (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Save Method (Stream)

Writes the INI data to a Stream.

public void Save(
   Stream stream
);

Parameters

stream
Stream object

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetString_overload_2.html0000644000175000017500000000511210410343256027561 0ustar meebeymeebey ConfigBase.GetString Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetString Method (String, String)

Returns a string key value.

public string GetString(
   string key,
   string defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Implements

IConfig.GetString

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetString Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor2.html0000644000175000017500000000363710410343262025627 0ustar meebeymeebey IniDocument Constructor (String, IniFileType)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor (String, IniFileType)

Initializes a new instance of the class with the supplied file and the INI type.

public IniDocument(
   string filePath,
   IniFileType type
);

Parameters

filePath
The path to the INI file.
type
The INI file type.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryRecurse.html0000644000175000017500000000622610410343262024705 0ustar meebeymeebey RegistryRecurse Enumeration
Nini Library API Reference - http://nini.sourceforge.net/

RegistryRecurse Enumeration

Enumeration of Registry recursion types.

public enum RegistryRecurse

Members

Member Name Description
NoneDoes not specify an recursion.
Flattened Indicates that Registry namespacing should be removed. If the base key is "Software\MyApp" then the keys recieved should be "Software" and "MyApp".
Namespacing Indicatates that Registry namespacing should not be removed. If the base key is "Software\MyApp" then the keys recieved should be "Software" and "Software\MyApp".

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/intoperator.gif0000644000175000017500000000156410410343244021613 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@Q˙  ° Á$HPá?|řFÄ×đ_ņ-:´ ŁÇŹ%ţŰ7’bÁ‹ =n̨QáĹ 7Ęś ±&Ĺ—ń틸sĂŹy $‰“ĺĚ€;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceProperties.html0000644000175000017500000000607110410343260026643 0ustar meebeymeebey IniConfigSource Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Properties

The properties of the IniConfigSource class are listed below. For a complete list of IniConfigSource class members, see the IniConfigSource Members topic.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
CaseSensitive Gets or sets whether key values will be accessed ignoring case.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
SavePath The path where the document will be saved.

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor7.html0000644000175000017500000000322410410343262025624 0ustar meebeymeebey IniDocument Constructor (IniReader)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor (IniReader)

Initializes a new instance of the class using an IniReader.

public IniDocument(
   IniReader reader
);

Parameters

reader
The IniReader.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionProperties.html0000644000175000017500000000456410410343262025202 0ustar meebeymeebey IniSection Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniSection Properties

The properties of the IniSection class are listed below. For a complete list of IniSection class members, see the IniSection Members topic.

Public Instance Properties

CommentGets the section comment.
ItemCount Returns the number of items in the section. This includes keys, comments, and empty lines.
NameGets the name of the section.

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/pubmethod.gif0000644000175000017500000000157110410343244021232 0ustar meebeymeebeyGIF89a÷˙˙˙˙˙€€ČČČ/// ˙˙˙!ů,@VH° @p`€08đ€‡)̨‘ G†x˘Cچ\Čp‰cĘśÉPŔGŠOÚěhŃäĂ›ľ`@ćŁ4“j ;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteState.html0000644000175000017500000000342010410343262025055 0ustar meebeymeebey WriteState Property
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteState Property

Gets the state of the reader.

public IniWriteState WriteState {get;}

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/privmethod.gif0000644000175000017500000000161410410343244021422 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@i˙ H°ŕ@| (ĐoačÇ!D|˙h<1˘Ç;~ I±!€Sb©Q Ć09~ś™‘¦Ä’"˙aLqbņ:Q˘Ä¸°aÇAaŕą°©Î‚9kşüÇQéG|łF%;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigKeyEventArgs.KeyValue.html0000644000175000017500000000351610410343260026762 0ustar meebeymeebey KeyValue Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigKeyEventArgs.KeyValue Property

nini-1.1.0+dfsg.2/Docs/Reference/html/pubproperty.gif0000644000175000017500000000157510410343244021642 0ustar meebeymeebeyGIF89a÷˙˙˙€ČČČŔŔŔ€€€ ˙˙˙!ů,@ZH° @€ŔB„hH "ŘȱăĆ=Ŕ¨Q`Ă“ 0@ˇÂ„ _BIł¦M‰W¶ě81ĄĹ– =‰¨ÁCÖśyłiÄ€;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.Configs.html0000644000175000017500000000347410410343260025632 0ustar meebeymeebey Configs Property
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.Configs Property

Returns the collection of IConfig objects.

ConfigCollection Configs {get;}

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Save_overload_1.html0000644000175000017500000000554710410343260027605 0ustar meebeymeebey IniConfigSource.Save Method ()
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Save Method ()

Saves all configuration values.

public override void Save();

Implements

IConfigSource.Save

Remarks

If the SavePath is

null
then this will throw an exception.

Exceptions

Exception Type Condition
Exception The SavePath is
null
.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.Close.html0000644000175000017500000000342210410343262024031 0ustar meebeymeebey IniWriter.Close Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.Close Method 

Closes the current writer and frees the resources.

public void Close();

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.KeyRemoved.html0000644000175000017500000000561010410343260025125 0ustar meebeymeebey IConfig.KeyRemoved Event
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.KeyRemoved Event

Occurs when a key is removed.

event ConfigKeyEventHandler KeyRemoved;

Event Data

The event handler receives an argument of type ConfigKeyEventArgs containing data related to this event. The following ConfigKeyEventArgs properties provide information specific to this event.

Property Description
KeyName  
KeyValue  

Remarks

This event occurs when the Remove method is called.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItem.Type.html0000644000175000017500000000331010410343262023323 0ustar meebeymeebey Type Property
Nini Library API Reference - http://nini.sourceforge.net/

IniItem.Type Property

Item type.

public IniType Type {get; set;}

See Also

IniItem Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriterMembers.html0000644000175000017500000001622210410343262024302 0ustar meebeymeebey IniWriter Members
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Members

IniWriter overview

Public Instance Constructors

IniWriter Overloaded. Initializes a new instance of the IniWriter class.

Public Instance Properties

AssignDelimiterAssign delimiter to search for when parsing.
BaseStreamReturns the writer base stream.
CommentDelimiterWhat type of comment type is used.
IndentationNumber of spaces in front of each line.
UseValueQuotesWhether or not quotes should surround each entry.
WriteStateGets the state of the reader.

Public Instance Methods

CloseCloses the current writer and frees the resources.
DisposeOverloaded. Cleans up all managed and unmanaged resources for the instance.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
FlushFlushes the current writer and frees the resources.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
ToStringReturns the string version of the current written text.
WriteEmptyOverloaded. Writes an empty line.
WriteKeyOverloaded. Writes a key to a section.
WriteSectionOverloaded. Writes an INI section.

Protected Instance Methods

DisposeOverloaded. Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.
Finalize Destructor.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Clear.html0000644000175000017500000000377110410343260026012 0ustar meebeymeebey ConfigCollection.Clear Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Clear Method 

Removes all IConfigs from the collection.

public void Clear();

Implements

IList.Clear

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.CopyTo_overloads.html0000644000175000017500000000330510410343264026763 0ustar meebeymeebey CopyTo Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.CopyTo Method

Copies the collection to an array.

Overload List

Copies the collection to an array.

public void CopyTo(Array,int);

Copies the collection to a strongly-typed array.

public void CopyTo(DictionaryEntry[],int);

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceConstructor1.html0000644000175000017500000000327710410343260027122 0ustar meebeymeebey IniConfigSource Constructor ()
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Constructor ()

Constructor. Loads an empty INI source.

public IniConfigSource();

Remarks

This constructor is useful if you want to create an INI source programmatically. You can then call one of the Save methods to save it to a file or object.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigMembers.html0000644000175000017500000002562110410343260024722 0ustar meebeymeebey IniConfig Members
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig Members

IniConfig overview

Public Instance Constructors

IniConfig Constructor Constructor.

Public Instance Properties

Alias (inherited from ConfigBase) Gets the AliasText for this instance.
ConfigSource (inherited from ConfigBase)Returns the parent IConfigSource.
Name (inherited from ConfigBase) Gets or sets the IConfig name. If set then it renames this config with the parent source.

Public Instance Methods

Add (inherited from ConfigBase)Adds a new IConfig.
Contains (inherited from ConfigBase) Returns true if the configuration key is present.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetOverloaded. Returns a key value. If the parent IniConfigSource has CaseSensitive turned on then this will return the value ignoring the case of the key name.
Get (inherited from ConfigBase)Overloaded. Returns a string key value.
GetBoolean (inherited from ConfigBase)Overloaded. Returns a boolean key value.
GetDouble (inherited from ConfigBase)Overloaded. Returns a double key value.
GetExpanded (inherited from ConfigBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetFloat (inherited from ConfigBase)Overloaded. Returns a float key value.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetInt (inherited from ConfigBase)Overloaded. Returns an integer key value.
GetKeys (inherited from ConfigBase)Returns an Array of the key strings.
GetLong (inherited from ConfigBase)Overloaded. Returns an long key value.
GetString (inherited from ConfigBase)Overloaded. Returns a string key value.
GetType (inherited from Object)Gets the Type of the current instance.
GetValues (inherited from ConfigBase)Returns an Array of all key values.
Remove Removes a key. If the parent IniConfigSource has CaseSensitive turned on then this will remove the key ignoring the case of the key name.
Set Sets a key value. If the parent IniConfigSource has CaseSensitive turned on then this will set the value ignoring the case of the key name.
ToString (inherited from Object)Returns a String that represents the current Object.

Public Instance Events

KeyRemoved (inherited from ConfigBase) Occurs when a key is removed.
KeySet (inherited from ConfigBase) Occurs when a key is set.

Protected Instance Fields

keys (inherited from ConfigBase) 

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnKeyRemoved (inherited from ConfigBase) Raises the KeyRemoved event.
OnKeySet (inherited from ConfigBase) Raises the KeySet event.

See Also

IniConfig Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Get_overloads.html0000644000175000017500000000317310410343260025652 0ustar meebeymeebey Get Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Get Method

Returns a string key value.

Overload List

Returns a string key value.

string Get(string);

Returns a string key value.

string Get(string,string);

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Load_overloads.html0000644000175000017500000000341010410343260030172 0ustar meebeymeebey Load Method
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Load Method

Loads a new instance of the XML configuration source.

Overload List

Loads a new instance of the XML configuration source.

public void Load(string);

Loads a new instance of the XML configuration source.

public void Load(XmlReader);

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfig.Get_overload_1.html0000644000175000017500000000434710410343260026242 0ustar meebeymeebey IniConfig.Get Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig.Get Method (String)

Returns a key value. If the parent IniConfigSource has CaseSensitive turned on then this will return the value ignoring the case of the key name.

public override string Get(
   string key
);

Implements

IConfig.Get

See Also

IniConfig Class | Nini.Config Namespace | IniConfig.Get Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetInt_overload_4.html0000644000175000017500000000525610410343260026371 0ustar meebeymeebey IConfig.GetInt Method (String, Int32, Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetInt Method (String, Int32, Boolean)

Returns an integer key value from an alias.

int GetInt(
   string key,
   int defaultValue,
   bool fromAlias
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.
fromAlias
If set to true then this returns the alias configuration value.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Load_overload_2.html0000644000175000017500000000423710410343262026266 0ustar meebeymeebey IniDocument.Load Method (TextReader)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Load Method (TextReader)

Loads the instance using a TextReader.

public void Load(
   TextReader reader
);

Parameters

reader
The TextReader.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetLong_overload_1.html0000644000175000017500000000527310410343260026532 0ustar meebeymeebey IConfig.GetLong Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetLong Method (String)

Returns an long key value.

long GetLong(
   string key
);

Parameters

key
Configuration key.

Exceptions

Exception Type Condition
Exception No key was found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetLong Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/MSDN.css0000644000175000017500000002020410410343244020021 0ustar meebeymeebeybody /* This body tag requires the use of one of the sets of banner and/or text div ids */ { margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; background: #ffffff; color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 70%; width: 100%; /*overflow: expression('hidden');*/ } div#scrollyes /* Allows topic to scroll with correct margins. Cannot be used with running head banner */ { /* Must immediately follow . */ padding: 2px 15px 2px 22px; width: 100%; } div#nsbanner /* Creates Nonscrolling banner region */ { position: relative; left: 0px; padding: 0px 0px 0px 0px; border-bottom: 1px solid #999999; /*width: expression(document.body.clientWidth);*/ background-color: #99ccff; } div#nstext /* Creates the scrolling text area for Nonscrolling region topic */ { top: 0px; padding: 5px 20px 0px 22px; /*overflow: expression('auto'); width: expression(document.body.clientWidth); height: expression(document.body.clientHeight - nsbanner.offsetHeight);*/ } div#scrbanner /* Creates the running head bar in a full-scroll topic */ { /* Allows topic to scroll. */ margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; border-bottom: 1px solid #999999; } div#scrtext /* Creates the text area in a full-scroll topic */ { /* Allows topic to scroll. */ padding: 0px 10px 0px 22px; } div#bannerrow1 /* provides full-width color to top row in running head (requires script) */ { } div#titlerow /* provides non-scroll topic title area (requires script) */ { padding: 0px 10px 0px 22px; } h1, h2, h3, h4 { font-family: Verdana, Arial, Helvetica, sans-serif; margin-bottom: .4em; margin-top: 1em; font-weight: bold; } h1 { font-size: 120%; margin-top: 0em; } div#scrollyes h1 /* Changes font size for full-scrolling topic */ { font-size: 150%; } h2 { font-size: 130%; } h3 { font-size: 115%; } h4 { font-size: 100%; } .dtH1, .dtH2, .dtH3, .dtH4 { margin-left: -18px; } div#titlerow h1 { margin-bottom: .2em } table.bannerparthead, table.bannertitle /* General values for the Running Head tables */ { position: relative; left: 0px; top: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; width: 100%; height: 21px; border-collapse: collapse; border-style: solid; border-width: 0px; background-color: #99ccff; font-size: 100%; } table.bannerparthead td /* General Values for cells in the top row of running head */ { margin: 0px 0px 0px 0px; padding: 2px 0px 0px 4px; vertical-align: middle; border-width: 0px; border-style: solid; border-color: #999999; background: transparent; font-style: italic; font-weight: normal; } table.bannerparthead td.product /* Values for top right cell in running head */ { /* Allows for a second text block in the running head */ text-align: right; padding: 2px 5px 0px 5px; } table.bannertitle td /* General Values for cells in the bottom row of running head */ { margin: 0px 0px 0px 0px; padding: 0px 0px 0px 3px; vertical-align: middle; border-width: 0px 0px 1px 0px; border-style: solid; border-color: #999999; background: transparent; font-weight: bold; } td.button1 /* Values for button cells */ { width: 14px; cursor: hand; } p { margin: .5em 0em .5em 0em; } blockquote.dtBlock { margin: .5em 1.5em .5em 1.5em; } div#dtHoverText { color: #000066; } .normal { margin: .5em 0em .5em 0em; } .fineprint { font-size: 90%; /* 90% of 70% */ } .indent { margin: .5em 1.5em .5em 1.5em; } .topicstatus /* Topic Status Boilerplate class */ { display: block; color: red; } p.label { margin-top: 1em; } p.labelproc { margin-top: 1em; color: #000066; } div.tablediv { width: 100%; /* Forces tables to have correct right margins and top spacing */ margin-top: -.4em; } ol div.tablediv, ul div.tablediv, ol div.HxLinkTable, ul div.HxLinkTable { margin-top: 0em; /* Forces tables to have correct right margins and top spacing */ } table.dtTABLE { width: 100%; /* Forces tables to have correct right margin */ margin-top: .6em; margin-bottom: .3em; border-width: 1px 1px 0px 0px; border-style: solid; border-color: #999999; background-color: #999999; font-size: 100%; /* Text in Table is same size as text outside table */ } table.dtTABLE th, table.dtTABLE td { border-style: solid; /* Creates the cell border and color */ border-width: 0px 0px 1px 1px; border-style: solid; border-color: #999999; padding: 4px 6px; text-align: left; } table.dtTABLE th { background: #cccccc; /* Creates the shaded table header row */ vertical-align: bottom; } table.dtTABLE td { background: #ffffff; vertical-align: top; } MSHelp\:ktable { disambiguator: span; separator:  | prefix: | postfix:   filterString: ; } div.HxLinkTable { width: auto; /* Forces tables to have correct right margins and top spacing */ margin-top: -.4em; visibility: visible; } ol div.HxLinkTable, ul div.HxLinkTable { margin-top: 0em; /* Forces tables to have correct right margins and top spacing */ } table.HxLinkTable /* Keep in sync with general table settings below */ { width: auto; margin-top: 1.5em; margin-bottom: .3em; margin-left: -1em; border-width: 1px 1px 0px 0px; border-style: solid; border-color: #999999; background-color: #999999; font-size: 100%; /* Text in Table is same size as text outside table */ behavior:url(hxlinktable.htc); /* Attach the behavior to link elements. */ } table.HxLinkTable th, table.HxLinkTable td /* Keep in sync with general table settings below */ { border-style: solid; /* Creates the cell border and color */ border-width: 0px 0px 1px 1px; border-style: solid; border-color: #999999; padding: 4px 6px; text-align: left; } table.HxLinkTable th /* Keep in sync with general table settings below */ { background: #cccccc; /* Creates the shaded table header row */ vertical-align: bottom; } table.HxLinkTable td /* Keep in sync with general table settings below */ { background: #ffffff; vertical-align: top; } pre.code { background-color: #eeeeee; padding: 4px 6px 4px 6px; } pre, div.syntax { margin-top: .5em; margin-bottom: .5em; } pre, code, .code, div.syntax { font: 100% Monospace, Courier New, Courier; /* This is 100% of 70% */ color: #000066; } pre b, code b { letter-spacing: .1em; /* opens kerning on bold in Syntax/Code */ } pre.syntax, div.syntax { background: #cccccc; padding: 4px 8px; cursor: text; margin-top: 1em; margin-bottom: 1em; color: #000000; border-width: 1px; border-style: solid; border-color: #999999; /* ------------------------------------- */ /* BEGIN changes to dtue.css conventions */ font-weight: bolder; letter-spacing: .1em; } .syntax span.lang { margin: 0; font-weight: normal; } .syntax span.meta { margin: 0; font-weight: normal; font-style: italic; } .syntax a { margin: 0; font-weight: normal; } /* END changes to dtue.css conventions */ /* ----------------------------------- */ .syntax div { padding-left: 24px; text-indent: -24px; } .syntax .attribute { font-weight: normal; } div.footer { font-style: italic; } div.footer hr { color: #999999; height: 1px; } ol, ul { margin: .5em 0em 0em 4em; } li { margin-bottom: .5em; } ul p, ol p, dl p { margin-left: 0em; } ul p.label, ol p.label { margin-top: .5em; } dl { margin-top: 0em; padding-left: 1px; /* Prevents italic-letter descenders from being cut off */ } dd { margin-bottom: 0em; margin-left: 1.5em; } dt { margin-top: .5em; } a:link { color: #0000ff; } a:visited { color: #0000ff; } a:hover { color: #3366ff; } img { border: none; } table.dtTABLE td img { border: none; vertical-align: top; margin-right: 2px; } /* Not in dtue.css. Used by NDoc's "ShowMissing..." options. */ .missing { color: Red; font-weight: bold; } div.Hierarchy { margin: 0.5em,0.0em,0.5em,1.0em; }nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceMethods.html0000644000175000017500000001613110410343260026566 0ustar meebeymeebey DotNetConfigSource Methods
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Methods

The methods of the DotNetConfigSource class are listed below. For a complete list of DotNetConfigSource class members, see the DotNetConfigSource Members topic.

Public Static Methods

GetFullConfigPath Returns the full path to the configuration file

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads a new instance of the XML configuration source.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
SaveOverloaded. Saves all configuration values.
ToString Returns all characters in the document.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor5.html0000644000175000017500000000327210410343262025625 0ustar meebeymeebey IniDocument Constructor (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor (Stream)

Initializes a new instance of the class using a Stream.

public IniDocument(
   Stream stream
);

Parameters

stream
The Stream.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfig.Remove.html0000644000175000017500000000442610410343260024643 0ustar meebeymeebey IniConfig.Remove Method
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig.Remove Method 

Removes a key. If the parent IniConfigSource has CaseSensitive turned on then this will remove the key ignoring the case of the key name.

public override void Remove(
   string key
);

Parameters

key
The key name.

Implements

IConfig.Remove

See Also

IniConfig Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Contains.html0000644000175000017500000000432310410343256025320 0ustar meebeymeebey ConfigBase.Contains Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Contains Method 

Returns true if the configuration key is present.

public bool Contains(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.Contains

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/NiniReference.hhc0000644000175000017500000026465710410343264021776 0ustar meebeymeebey
nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Load_overload_1.html0000644000175000017500000000441210410343260027554 0ustar meebeymeebey IniConfigSource.Load Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Load Method (String)

Loads an INI file source.

public void Load(
   string filePath
);

Parameters

filePath
Path to the file to load.

Remarks

Loads this up from a file.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.AddConfig.html0000644000175000017500000000602610410343260026536 0ustar meebeymeebey ConfigSourceBase.AddConfig Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.AddConfig Method 

Adds a new IConfig.

public virtual IConfig AddConfig(
   string name
);

Parameters

name
The name of the new IConfig.

Return Value

The new IConfig.

Implements

IConfigSource.AddConfig

Remarks

This creates a new IConfig and adds it to the Configs collection.

Exceptions

Exception Type Condition
Exception If an IConfig of the same name already exists.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceConstructor3.html0000644000175000017500000000365610410343260027125 0ustar meebeymeebey IniConfigSource Constructor (TextReader)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Constructor (TextReader)

Constructor. Loads an INI file source.

public IniConfigSource(
   TextReader reader
);

Parameters

reader
TextReader to load.

Remarks

This is a non-savable source unless you call one of the overloaded Save methods.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.ConsumeAllKeyText.html0000644000175000017500000000414410410343262026274 0ustar meebeymeebey ConsumeAllKeyText Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.ConsumeAllKeyText Property

Gets or sets whether or not all key text should be consumed. This means that even double quotes (") and commments (;) will be consumed from keys.

public bool ConsumeAllKeyText {get; set;}

Remarks

This was added to similate the behavior of the Win32 API GetProfileString method.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Comment.html0000644000175000017500000000361410410343262024317 0ustar meebeymeebey Comment Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Comment Property

Gets the comment text for the current INI line.

public string Comment {get;}

Remarks

All types may contain comments.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.ToString.html0000644000175000017500000000366510410343262026367 0ustar meebeymeebey XmlConfigSource.ToString Method
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.ToString Method 

Returns all characters in the document.

public override string ToString();

Remarks

It returns the XML string of the document.

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceMembers.html0000644000175000017500000002263310410343260026561 0ustar meebeymeebey DotNetConfigSource Members
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Members

DotNetConfigSource overview

Public Static Methods

GetFullConfigPath Returns the full path to the configuration file

Public Instance Constructors

DotNetConfigSource Overloaded. Initializes a new instance of the DotNetConfigSource class.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
SavePath The path where the document will be saved.

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads a new instance of the XML configuration source.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
SaveOverloaded. Saves all configuration values.
ToString Returns all characters in the document.

Public Instance Events

Reloaded (inherited from ConfigSourceBase) Occurs when the config source is reloaded.
Saved (inherited from ConfigSourceBase) Occurs when the config soucre is saved.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.SetCommentDelimiters.html0000644000175000017500000000434210410343262027014 0ustar meebeymeebey IniReader.SetCommentDelimiters Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.SetCommentDelimiters Method 

Sets the comment delimiters.

public void SetCommentDelimiters(
   char[] delimiters
);

Parameters

delimiters
The array of comment delimiters.

Remarks

The default value is a semicolon (';').

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceConstructor5.html0000644000175000017500000000363210410343260027121 0ustar meebeymeebey IniConfigSource Constructor (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Constructor (Stream)

Constructor. Loads an INI file source.

public IniConfigSource(
   Stream stream
);

Parameters

stream
Stream to load.

Remarks

This is a non-savable source unless you call one of the overloaded Save methods.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItem.Name.html0000644000175000017500000000337010410343262023270 0ustar meebeymeebey Name Property
Nini Library API Reference - http://nini.sourceforge.net/

IniItem.Name Property

Item name.

public string Name {get;}

See Also

IniItem Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/privproperty.gif0000644000175000017500000000161410410343244022026 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@i˙ ř€A˙(XźĂŚXđ‹-*Ż A‹CĽxń€É#"HR"Ëcâ˛ăI"s–< %DŚ;Q.T ’¤Ĺ)svtÉĎ‘5CRTú/ăT‘3!^%;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItem.Comment.html0000644000175000017500000000342210410343262024010 0ustar meebeymeebey Comment Property
Nini Library API Reference - http://nini.sourceforge.net/

IniItem.Comment Property

Item comment.

public string Comment {get; set;}

See Also

IniItem Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSourceProperties.html0000644000175000017500000000551410410343262026667 0ustar meebeymeebey XmlConfigSource Properties
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Properties

The properties of the XmlConfigSource class are listed below. For a complete list of XmlConfigSource class members, see the XmlConfigSource Members topic.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
SavePath The path where the document will be saved.

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriteState.html0000644000175000017500000000623010410343264023606 0ustar meebeymeebey IniWriteState Enumeration
Nini Library API Reference - http://nini.sourceforge.net/

IniWriteState Enumeration

The state of the writer.

public enum IniWriteState

Members

Member Name Description
Start The writer has not started writing.
BeforeFirstSection An empty line has been written but no sections.
Section A section has been written.
Closed The writer is closed.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.Dispose_overload_2.html0000644000175000017500000000441510410343264026513 0ustar meebeymeebey IniWriter.Dispose Method (Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.Dispose Method (Boolean)

Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.

protected virtual void Dispose(
   bool disposing
);

Parameters

disposing
If true then this will clean up managed resources as well.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter.Dispose Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.html0000644000175000017500000000525610410343260023062 0ustar meebeymeebey IConfig Interface
Nini Library API Reference - http://nini.sourceforge.net/

IConfig Interface

Configuration data access interface.

For a list of all members of this type, see IConfig Members.

public interface IConfig

Types that implement IConfig

Type Description
ConfigBase Configuration data access interface.
IniConfig IConfig class for IniConfigSource sections.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

IConfig Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.KeyRemoved.html0000644000175000017500000000605510410343260025613 0ustar meebeymeebey ConfigBase.KeyRemoved Event
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.KeyRemoved Event

Occurs when a key is removed.

public event ConfigKeyEventHandler KeyRemoved;

Event Data

The event handler receives an argument of type ConfigKeyEventArgs containing data related to this event. The following ConfigKeyEventArgs properties provide information specific to this event.

Property Description
KeyName  
KeyValue  

Implements

IConfig.KeyRemoved

Remarks

This event occurs when the Remove method is called.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/tree.js0000644000175000017500000001306510410343264020054 0ustar meebeymeebey/* Copyright © 2002 Jean-Claude Manoli [jc@manoli.net] * * This software is provided 'as-is', without any express or implied warranty. * In no event will the author(s) be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source distribution. */ var treeSelected = null; //last treeNode clicked //pre-load tree nodes images var imgPlus = new Image(); imgPlus.src="treenodeplus.gif"; var imgMinus = new Image(); imgMinus.src="treenodeminus.gif"; var imgDot = new Image(); imgPlus.src="treenodedot.gif"; function findNode(el) { // Takes element and determines if it is a treeNode. // If not, seeks a treeNode in its parents. while (el != null) { if (el.className == "treeNode") { break; } else { el = el.parentNode; } } return el; } function clickAnchor(el) { // handles click on a TOC link // expandNode(el.parentNode); selectNode(el.parentNode); el.blur(); } function selectNode(el) { // Un-selects currently selected node, if any, and selects the specified node // if (treeSelected != null) { setSubNodeClass(treeSelected, 'A', 'treeUnselected'); } setSubNodeClass(el, 'A', 'treeSelected'); treeSelected = el; } function setSubNodeClass(el, nodeName, className) { // Sets the specified class name on el's first child that is a nodeName element // var child; for (var i=0; i < el.childNodes.length; i++) { child = el.childNodes[i]; if (child.nodeName == nodeName) { child.className = className; break; } } } function expandCollapse(el) { // If source treeNode has child nodes, expand or collapse view of treeNode // if (el == null) return; //Do nothing if it isn't a treeNode var child; var imgEl; for(var i=0; i < el.childNodes.length; i++) { child = el.childNodes[i]; if (child.src) { imgEl = child; } else if (child.className == "treeSubnodesHidden") { child.className = "treeSubnodes"; imgEl.src = "treenodeminus.gif"; break; } else if (child.className == "treeSubnodes") { child.className = "treeSubnodesHidden"; imgEl.src = "treenodeplus.gif"; break; } } } function expandNode(el) { // If source treeNode has child nodes, expand it // var child; var imgEl; for(var i=0; i < el.childNodes.length; i++) { child = el.childNodes[i]; if (child.src) { imgEl = child; } if (child.className == "treeSubnodesHidden") { child.className = "treeSubnodes"; imgEl.src = "treenodeminus.gif"; break; } } } function syncTree(href) { // Selects and scrolls into view the node that references the specified URL // var loc = new String(); loc = href; if (loc.substring(0, 7) == 'file://') { loc = 'file:///' + loc.substring(7, loc.length); loc = loc.replace(/\\/g, '/'); } var base = loc.substr(0, loc.lastIndexOf('/') + 1); var tocEl = findHref(document.getElementById('treeRoot'), loc, base); if (tocEl != null) { selectAndShowNode(tocEl); } } function findHref(node, href, base) { // find the element with the specified href value // var el; var anchors = node.getElementsByTagName('A'); for (var i = 0; i < anchors.length; i++) { el = anchors[i]; var aref = new String(); aref = el.getAttribute('href'); if ((aref.substring(0, 7) != 'http://') && (aref.substring(0, 8) != 'https://') && (aref.substring(0, 7) != 'file://')) { aref = base + aref; } if (aref == href) { return el; } } return null; } function selectAndShowNode(node) { // Selects and scrolls into view the specified node // var el = findNode(node); if (el != null) { selectNode(el); do { expandNode(el); el = findNode(el.parentNode); } while ((el != null)) //vertical scroll element into view var windowTop; var windowBottom; var treeDiv = document.getElementById('tree'); var ua = window.navigator.userAgent.toLowerCase(); if ((i = ua.indexOf('msie')) != -1) { windowTop = node.offsetTop - treeDiv.scrollTop; windowBottom = treeDiv.clientHeight - windowTop - node.offsetHeight; } else if (ua.indexOf('gecko') != -1) { windowTop = node.offsetTop - treeDiv.offsetTop - treeDiv.scrollTop; windowBottom = treeDiv.clientHeight - windowTop - node.offsetHeight; } else { return; } if (windowTop < 0) { treeDiv.scrollTop += windowTop - 18; return; } if (windowBottom < 0) { treeDiv.scrollTop -= windowBottom - 18; return; } } } function resizeTree() { var treeDiv = document.getElementById('tree'); //treeDiv.setAttribute('style', 'width: ' + document.body.offsetWidth + 'px; height: ' + (document.body.offsetHeight - 27) + 'px;'); treeDiv.style.width = document.documentElement.offsetWidth; treeDiv.style.height = document.documentElement.offsetHeight - 27; } nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.AutoSave.html0000644000175000017500000000422410410343260025763 0ustar meebeymeebey AutoSave Property
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.AutoSave Property

Gets or sets whether the source will be automatically saved.

bool AutoSave {get; set;}

Remarks

This save process occurs each time the the

IConfig.Set
method is called. Take a look at the
Save
method of each configuration source to determine when this method can be activated.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Keys.html0000644000175000017500000000403410410343264024403 0ustar meebeymeebey Keys Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Keys Property

Returns a list of the collection keys.

public System.Collections.ICollection Keys {get;}

Implements

IDictionary.Keys

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Load_overload_2.html0000644000175000017500000000450110410343260030232 0ustar meebeymeebey DotNetConfigSource.Load Method (XmlReader)
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Load Method (XmlReader)

Loads a new instance of the XML configuration source.

public void Load(
   XmlReader reader
);

Parameters

reader
The XML reader configuration document.

Remarks

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Load_overload_1.html0000644000175000017500000000444010410343262027600 0ustar meebeymeebey XmlConfigSource.Load Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Load Method (String)

Loads a new object from the specified XML file.

public void Load(
   string path
);

Parameters

path
Path to the XML file.

Remarks

This instance type is not read only.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Save_overload_2.html0000644000175000017500000000566310410343260030263 0ustar meebeymeebey DotNetConfigSource.Save Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Save Method (String)

Saves all configuration values to a path.

public void Save(
   string path
);

Parameters

path
Path to save the file.

Remarks

This sets the SavePath to

path
.

Exceptions

Exception Type Condition
Exception An error has occurred.

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.html0000644000175000017500000000561110410343260025656 0ustar meebeymeebey RegistryConfigSource Class
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource Class

Class for loading Windows Registry data.

For a list of all members of this type, see RegistryConfigSource Members.

System.Object
   Nini.Config.ConfigSourceBase
      Nini.Config.RegistryConfigSource

public class RegistryConfigSource : ConfigSourceBase

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

This class allows users to read and write Windows Registry configurations. Be careful writing code with this program that writes to the registry. If coded incorrectly you can corrupt your Registry. This class is not available for the .NET Compact Framework version of Nini.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

RegistryConfigSource Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Type.html0000644000175000017500000000335110410343262023634 0ustar meebeymeebey Type Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Type Property

Gets the type of the current INI line.

public IniType Type {get;}

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.ConfigHierarchy.html0000644000175000017500000001245310410343256023406 0ustar meebeymeebey Nini.ConfigHierarchy
Nini Library API Reference - http://nini.sourceforge.net/

Nini.Config Hierarchy

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.Flush.html0000644000175000017500000000342310410343264024050 0ustar meebeymeebey IniWriter.Flush Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.Flush Method 

Flushes the current writer and frees the resources.

public void Flush();

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetString_overload_1.html0000644000175000017500000000450510410343256027565 0ustar meebeymeebey ConfigBase.GetString Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetString Method (String)

Returns a string key value.

public string GetString(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.GetString

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetString Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Set.html0000644000175000017500000000465310410343256024303 0ustar meebeymeebey ConfigBase.Set Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Set Method 

Sets a key value.

public virtual void Set(
   string key,
   object value
);

Parameters

key
Configuration key.
value
Value to set for the key. The set value will be the result of the object's ToString value.

Implements

IConfig.Set

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumeratorProperties.html0000644000175000017500000000523010410343264027607 0ustar meebeymeebey OrderedListEnumerator Properties
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator Properties

The properties of the OrderedListEnumerator class are listed below. For a complete list of OrderedListEnumerator class members, see the OrderedListEnumerator Members topic.

Public Instance Properties

Current Returns the strongly-typed current object in the enumeration.
EntryReturns the current DictionaryEntry.
KeyReturns the current key.
ValueReturns the current value.

See Also

OrderedListEnumerator Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/index.html0000644000175000017500000000125410410343264020551 0ustar meebeymeebey NiniReference <p>This page requires frames, but your browser does not support them.</p> nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Get_overload_2.html0000644000175000017500000000456710410343260025720 0ustar meebeymeebey IConfig.Get Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Get Method (String, String)

Returns a string key value.

string Get(
   string key,
   string defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.Get Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.ReplaceKeyValues.html0000644000175000017500000000371010410343260027437 0ustar meebeymeebey IConfigSource.ReplaceKeyValues Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.ReplaceKeyValues Method 

This method is deprecated. Use ExpandKeyValues from now on.

void ReplaceKeyValues();

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetBoolean_overloads.html0000644000175000017500000000324110410343260027146 0ustar meebeymeebey GetBoolean Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetBoolean Method

Returns a boolean key value.

Overload List

Returns a boolean key value.

bool GetBoolean(string);

Returns a string key value.

bool GetBoolean(string,bool);

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.SyncRoot.html0000644000175000017500000000405610410343260026541 0ustar meebeymeebey SyncRoot Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.SyncRoot Property

Returns the synchronization object.

public object SyncRoot {get;}

Implements

ICollection.SyncRoot

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Count.html0000644000175000017500000000404010410343260026042 0ustar meebeymeebey Count Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Count Property

Returns the number of IConfigs in the collection.

public int Count {get;}

Implements

ICollection.Count

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetInt_overloads.html0000644000175000017500000000405610410343260026326 0ustar meebeymeebey GetInt Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetInt Method

Returns an integer key value.

Overload List

Returns an integer key value.

int GetInt(string);

Returns an integer key value from an alias.

int GetInt(string,bool);

Returns an integer key value.

int GetInt(string,int);

Returns an integer key value from an alias.

int GetInt(string,int,bool);

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.GetAssignDelimiters.html0000644000175000017500000000367010410343262026625 0ustar meebeymeebey IniReader.GetAssignDelimiters Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.GetAssignDelimiters Method 

Returns the assign delimiters.

public char[] GetAssignDelimiters();

Remarks

The default value is an equals operator ('=').

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor.html0000644000175000017500000000654010410343262025541 0ustar meebeymeebey IniDocument Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor

Initializes a new instance of the class with the supplied file.

Overload List

Initializes an empty INI class instance.

public IniDocument();

Initializes a new instance of the class using an IniReader.

public IniDocument(IniReader);

Initializes a new instance of the class using a Stream.

public IniDocument(Stream);

Initializes a new instance of the class using a Stream and the INI type.

public IniDocument(Stream,IniFileType);

Initializes a new instance of the class using a TextReader.

public IniDocument(TextReader);

Initializes a new instance of the class using a TextReader and the INI type.

public IniDocument(TextReader,IniFileType);

Initializes a new instance of the class with the supplied file.

public IniDocument(string);

Initializes a new instance of the class with the supplied file and the INI type.

public IniDocument(string,IniFileType);

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetDouble_overload_2.html0000644000175000017500000000464710410343260027052 0ustar meebeymeebey IConfig.GetDouble Method (String, Double)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetDouble Method (String, Double)

Returns a double key value.

double GetDouble(
   string key,
   double defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetDouble Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetBoolean_overloads.html0000644000175000017500000000327210410343256027641 0ustar meebeymeebey GetBoolean Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetBoolean Method

Returns a boolean key value.

Overload List

Returns a boolean key value.

public bool GetBoolean(string);

Returns a string key value.

public bool GetBoolean(string,bool);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.KeySet.html0000644000175000017500000000600310410343260024736 0ustar meebeymeebey ConfigBase.KeySet Event
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.KeySet Event

Occurs when a key is set.

public event ConfigKeyEventHandler KeySet;

Event Data

The event handler receives an argument of type ConfigKeyEventArgs containing data related to this event. The following ConfigKeyEventArgs properties provide information specific to this event.

Property Description
KeyName  
KeyValue  

Implements

IConfig.KeySet

Remarks

This event occurs when the Set method is called.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBaseProperties.html0000644000175000017500000000470610410343256025625 0ustar meebeymeebey ConfigBase Properties
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase Properties

The properties of the ConfigBase class are listed below. For a complete list of ConfigBase class members, see the ConfigBase Members topic.

Public Instance Properties

Alias Gets the AliasText for this instance.
ConfigSourceReturns the parent IConfigSource.
Name Gets or sets the IConfig name. If set then it renames this config with the parent source.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.Indentation.html0000644000175000017500000000363610410343262025247 0ustar meebeymeebey Indentation Property
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.Indentation Property

Number of spaces in front of each line.

public int Indentation {get; set;}

Remarks

The default value is zero (0).

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigEventHandler.html0000644000175000017500000000401410410343260025240 0ustar meebeymeebey ConfigEventHandler Delegate
Nini Library API Reference - http://nini.sourceforge.net/

ConfigEventHandler Delegate

public delegate void ConfigEventHandler(
   object sender,
   ConfigEventArgs e
);

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollectionMembers.html0000644000175000017500000002253210410343260026274 0ustar meebeymeebey ConfigCollection Members
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection Members

ConfigCollection overview

Public Instance Constructors

Public Instance Properties

CountReturns the number of IConfigs in the collection.
IsFixedSize Returns true if the collection is of a fixed size.
IsReadOnly Returns true if the collection is read only.
IsSynchronized Returns true if the collection is synchronized. This always returns false.
ItemOverloaded. Returns the IConfig at the specified index.
SyncRootReturns the synchronization object.

Public Instance Methods

AddOverloaded. Adds a new IConfig to the collection.
ClearRemoves all IConfigs from the collection.
Contains Returns true if the collection contains the IConfig.
CopyToOverloaded. Copies the collection to an array.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetEnumeratorReturns the enumerator object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
IndexOf Returns the index of an IConfig in the collection.
InsertInserts a new IConfig to the collection.
RemoveOverloaded. Removes an IConfig from the collection.
RemoveAtRemoves an IConfig from the index.
ToString (inherited from Object)Returns a String that represents the current Object.

Public Instance Events

ConfigAdded Occurs when a config is added.
ConfigRemoved Occurs when a config is removed.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnConfigAdded Raises the ConfigAdded event.
OnConfigRemoved Raises the ConfigRemoved event.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.html0000644000175000017500000000441710410343262023122 0ustar meebeymeebey IniSection Class
Nini Library API Reference - http://nini.sourceforge.net/

IniSection Class

INI section class.

For a list of all members of this type, see IniSection Members.

System.Object
   Nini.Ini.IniSection

public class IniSection

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

IniSection Members | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.AddConfig_overload_2.html0000644000175000017500000000467010410343262031615 0ustar meebeymeebey RegistryConfigSource.AddConfig Method (String, RegistryKey)
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.AddConfig Method (String, RegistryKey)

Adds a config and will map itself to the given registry key.

public IConfig AddConfig(
   string name,
   RegistryKey key
);

Parameters

name
Name of the config.
key
RegistryKey to map to.

See Also

RegistryConfigSource Class | Nini.Config Namespace | RegistryConfigSource.AddConfig Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Reload.html0000644000175000017500000000542610410343260026454 0ustar meebeymeebey DotNetConfigSource.Reload Method
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Reload Method 

Reloads all configuration values.

public override void Reload();

Implements

IConfigSource.Reload

Remarks

This can only be called if the document can be reloaded from it's source, such as if it was loaded from a file or from the Windows Registry. If other documents were merged (with Merge) then they will be lost.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBaseMethods.html0000644000175000017500000001713410410343256025073 0ustar meebeymeebey ConfigBase Methods
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase Methods

The methods of the ConfigBase class are listed below. For a complete list of ConfigBase class members, see the ConfigBase Members topic.

Public Instance Methods

AddAdds a new IConfig.
Contains Returns true if the configuration key is present.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetOverloaded. Returns a string key value.
GetBooleanOverloaded. Returns a boolean key value.
GetDoubleOverloaded. Returns a double key value.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetFloatOverloaded. Returns a float key value.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetIntOverloaded. Returns an integer key value.
GetKeysReturns an Array of the key strings.
GetLongOverloaded. Returns an long key value.
GetStringOverloaded. Returns a string key value.
GetType (inherited from Object)Gets the Type of the current instance.
GetValuesReturns an Array of all key values.
Remove Removes a configuration key.
Set Sets a key value.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnKeyRemoved Raises the KeyRemoved event.
OnKeySet Raises the KeySet event.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceConstructor3.html0000644000175000017500000000412010410343260027566 0ustar meebeymeebey DotNetConfigSource Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Constructor (String)

Creates a new instance of the XML configuration source.

public DotNetConfigSource(
   string path
);

Parameters

path
Path to the configuration file.

Remarks

Use this if you either know where the configuration file is located. You can do this with the Page.MapPath method for web.config files.

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Remove.html0000644000175000017500000000426310410343256025002 0ustar meebeymeebey ConfigBase.Remove Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Remove Method 

Removes a configuration key.

public virtual void Remove(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.Remove

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetFloat_overload_1.html0000644000175000017500000000533210410343260026674 0ustar meebeymeebey IConfig.GetFloat Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetFloat Method (String)

Returns a float key value.

float GetFloat(
   string key
);

Parameters

key
Configuration key.

Exceptions

Exception Type Condition
Exception Default value if the key is not found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetFloat Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Item2.html0000644000175000017500000000432110410343264024447 0ustar meebeymeebey Item Property (Object)
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Item Property (Object)

Returns the object at the given key.

public object this[
   object key
] {get; set;}

Implements

IDictionary.Item

See Also

OrderedList Class | Nini.Util Namespace | OrderedList.Item Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.OnReloaded.html0000644000175000017500000000367210410343260026740 0ustar meebeymeebey ConfigSourceBase.OnReloaded Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.OnReloaded Method 

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigEventArgs.html0000644000175000017500000000506510410343260024566 0ustar meebeymeebey ConfigEventArgs Class
Nini Library API Reference - http://nini.sourceforge.net/

ConfigEventArgs Class

For a list of all members of this type, see ConfigEventArgs Members.

System.Object
   System.EventArgs
      Nini.Config.ConfigEventArgs

public class ConfigEventArgs : EventArgs

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

ConfigEventArgs Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.IsSynchronized.html0000644000175000017500000000415010410343264026442 0ustar meebeymeebey IsSynchronized Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.IsSynchronized Property

Returns true if the collection is synchronized. This value is always false.

public bool IsSynchronized {get;}

Implements

ICollection.IsSynchronized

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetDouble_overload_1.html0000644000175000017500000000531710410343260027044 0ustar meebeymeebey IConfig.GetDouble Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetDouble Method (String)

Returns a double key value.

double GetDouble(
   string key
);

Parameters

key
Configuration key.

Exceptions

Exception Type Condition
Exception No key was found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetDouble Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigEventArgs.Config.html0000644000175000017500000000340110410343260025762 0ustar meebeymeebey Config Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigEventArgs.Config Property

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSource.AddSwitch_overload_1.html0000644000175000017500000000643310410343256030741 0ustar meebeymeebey ArgvConfigSource.AddSwitch Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource.AddSwitch Method (String, String)

Adds a command line switch.

public void AddSwitch(
   string configName,
   string longName
);

Parameters

configName
The configuration (IConfig) name to add the value to if it is found.
longName
The long switch name (without the "-", "--", or "/").

Remarks

Calling this will cause Nini to search the arguments for the matching switch.

Example

public static int Main (string[] args)
{
   ArgvConfigSource source = new ArgvConfigSource (args);

   source.AddSwitch ("Logging", "file-name", "f");
   source.AddSwitch ("Logging", "columns", "c");
   source.AddSwitch ("Logging", "max-file-size", "m");

   if (args.Length > 0)
   {
      string fileName = config.Configs["Logging"].Get ("file-name");
      int columns = config.Configs["Logging"].GetInt ("columns");
      long fileSize = config.Configs["Logging"].GetLong ("max-file-size");
   }
}
                

See Also

ArgvConfigSource Class | Nini.Config Namespace | ArgvConfigSource.AddSwitch Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollectionMethods.html0000644000175000017500000001254310410343262026461 0ustar meebeymeebey IniSectionCollection Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection Methods

The methods of the IniSectionCollection class are listed below. For a complete list of IniSectionCollection class members, see the IniSectionCollection Members topic.

Public Instance Methods

AddAdds a new section to the collection.
CopyToOverloaded. Copies the collection to an array.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetEnumeratorReturns the enumerator object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
RemoveRemoves a section from the collection.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.Remove.html0000644000175000017500000000414210410343262026365 0ustar meebeymeebey IniSectionCollection.Remove Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.Remove Method 

Removes a section from the collection.

public void Remove(
   string config
);

Parameters

config
Section name.

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/protoperator.gif0000644000175000017500000000156710410343244022010 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@T˙  ° Aě#x°á?‚ °€Ĺ‰"”8ТǏîۧpáĆDä¨ń¤Ă A®dyp€4PxeË›$a~üô`L—;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.AcceptCommentAfterKey.html0000644000175000017500000000371310410343262027072 0ustar meebeymeebey AcceptCommentAfterKey Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.AcceptCommentAfterKey Property

Gets or sets whether accept comments after keys.

public bool AcceptCommentAfterKey {get; set;}

Remarks

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentProperties.html0000644000175000017500000000422410410343262025345 0ustar meebeymeebey IniDocument Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Properties

The properties of the IniDocument class are listed below. For a complete list of IniDocument class members, see the IniDocument Members topic.

Public Instance Properties

FileType Gets or sets the INI file type
SectionsGets the section comment.

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.CopyTo_overload_1.html0000644000175000017500000000513010410343264027016 0ustar meebeymeebey OrderedList.CopyTo Method (Array, Int32)
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.CopyTo Method (Array, Int32)

Copies the collection to an array.

public void CopyTo(
   Array array,
   int index
);

Parameters

array
Array to copy the results.
index
Index of the array to start copying.

Implements

ICollection.CopyTo

See Also

OrderedList Class | Nini.Util Namespace | OrderedList.CopyTo Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Add.html0000644000175000017500000000374710410343256024243 0ustar meebeymeebey ConfigBase.Add Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Add Method 

Adds a new IConfig.

public void Add(
   string key,
   string value
);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.OnKeySet.html0000644000175000017500000000424710410343256025250 0ustar meebeymeebey ConfigBase.OnKeySet Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.OnKeySet Method 

Raises the KeySet event.

protected void OnKeySet(
   ConfigKeyEventArgs e
);

Parameters

e
The EventArgs object that contains all event data.

Remarks

Raising an event invokes the event handler through a delegate.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/README.txt0000644000175000017500000000074510410341420020246 0ustar meebeymeebey------------------ HTML DOCUMENTATION ------------------ This directory is where all NDoc (http://ndoc.sourceforge.net/) generated HTML files are located. These files are only viewable with any recent web browser (Firefox, IE, Opera). If you would like to help write this documentation for the Nini project then please these look at the following file: Nini\Docs\Reference\xml\README.txt Download the excellent Mozilla Firefox browser: http://www.mozilla.org/ nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.IsFixedSize.html0000644000175000017500000000423110410343260027142 0ustar meebeymeebey IsFixedSize Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.IsFixedSize Property

Returns true if the collection is of a fixed size.

public bool IsFixedSize {get;}

Implements

IList.IsFixedSize

Remarks

This aways returns false.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Add_overload_1.html0000644000175000017500000000421210410343260027556 0ustar meebeymeebey ConfigCollection.Add Method (IConfig)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Add Method (IConfig)

Adds a new IConfig to the collection.

public void Add(
   IConfig config
);

Parameters

config
The IConfig to add.

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.Add Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Load_overload_4.html0000644000175000017500000000456310410343260027566 0ustar meebeymeebey IniConfigSource.Load Method (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Load Method (Stream)

Loads an INI file source.

public void Load(
   Stream stream
);

Parameters

stream
Stream to load.

Remarks

This is a non-savable source unless you call one of the overloaded Save methods.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/protmethod.gif0000644000175000017500000000161410410343244021426 0ustar meebeymeebeyGIF89a÷˙˙˙˙˙€€˙˙˙˙ ĎĎĎČČČŔŔŔžžž<<< ˙˙˙!ů,@iH° Á`€€† Đ@€C‡Č8±cEŽ+°ř0c@Ř eČ ;Ś’$Çŕ¤8ň˘„ 5Đ€¨Ă‘ M& °ĺ€¤‹@ 4äTšČ ;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.Count.html0000644000175000017500000000405310410343262026221 0ustar meebeymeebey Count Property
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.Count Property

Returns the number of sections in the collection.

public int Count {get;}

Implements

ICollection.Count

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItemMembers.html0000644000175000017500000001332310410343262023723 0ustar meebeymeebey IniItem Members
Nini Library API Reference - http://nini.sourceforge.net/

IniItem Members

IniItem overview

Public Instance Properties

CommentItem comment.
NameItem name.
TypeItem type.
ValueItem value.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

Protected Internal Instance Constructors

IniItem Constructor Creates a new item.

See Also

IniItem Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionConstructor2.html0000644000175000017500000000321410410343262025444 0ustar meebeymeebey IniSection Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniSection Constructor (String)

Creates a new section.

public IniSection(
   string name
);

Parameters

name
Section name.

See Also

IniSection Class | Nini.Ini Namespace | IniSection Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetExpanded.html0000644000175000017500000000444510410343256025737 0ustar meebeymeebey ConfigBase.GetExpanded Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetExpanded Method 

Returns the expanded string value. This method does not replace the other key values in the IConfigSource.

public string GetExpanded(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.GetExpanded

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumerator.Key.html0000644000175000017500000000404210410343264026261 0ustar meebeymeebey Key Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator.Key Property

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListConstructor.html0000644000175000017500000000313010410343264025733 0ustar meebeymeebey OrderedList Constructor
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList Constructor 

Initializes a new instance of the OrderedList class.

public OrderedList();

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceConstructor2.html0000644000175000017500000000346110410343260027116 0ustar meebeymeebey IniConfigSource Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Constructor (String)

Constructor. Loads an INI file source.

public IniConfigSource(
   string filePath
);

Parameters

filePath
Path to the file to load.

Remarks

Loads this up from a file.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Item1.html0000644000175000017500000000400110410343260025726 0ustar meebeymeebey Item Property (Int32)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Item Property (Int32)

Returns the IConfig at the specified index.

public IConfig this[
   int index
] {get;}

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.Item Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Name.html0000644000175000017500000000354210410343260023735 0ustar meebeymeebey Name Property
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Name Property

Gets or sets the IConfig name. If set then it renames this config with the parent source.

string Name {get; set;}

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetExpanded.html0000644000175000017500000000421710410343260025245 0ustar meebeymeebey IConfig.GetExpanded Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetExpanded Method 

Returns the expanded string value. This method does not replace the other key values in the IConfigSource.

string GetExpanded(
   string key
);

Parameters

key
Configuration key.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.html0000644000175000017500000000467010410343256023550 0ustar meebeymeebey ConfigBase Class
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase Class

Configuration data access interface.

For a list of all members of this type, see ConfigBase Members.

System.Object
   Nini.Config.ConfigBase
      Nini.Config.IniConfig

public class ConfigBase : IConfig

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

ConfigBase Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.Finalize.html0000644000175000017500000000341310410343264024527 0ustar meebeymeebey IniWriter.Finalize Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.Finalize Method 

Destructor.

protected override void Finalize();

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriterConstructor3.html0000644000175000017500000000325410410343262025321 0ustar meebeymeebey IniWriter Constructor (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Constructor (Stream)

Initializes a new instance of the class using a Stream.

public IniWriter(
   Stream stream
);

Parameters

stream
The Stream.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.OnConfigRemoved.html0000644000175000017500000000446410410343260030010 0ustar meebeymeebey ConfigCollection.OnConfigRemoved Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.OnConfigRemoved Method 

Raises the ConfigRemoved event.

protected void OnConfigRemoved(
   ConfigEventArgs e
);

Parameters

e
The EventArgs object that contains all event data.

Remarks

Raising an event invokes the event handler through a delegate.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/NiniReference.hhp0000644000175000017500000004717210410343264022002 0ustar meebeymeebey[FILES] Nini.Config.html Nini.ConfigHierarchy.html Nini.Config.AliasText.html Nini.Config.AliasTextMembers.html Nini.Config.AliasTextConstructor.html Nini.Config.AliasTextMethods.html Nini.Config.AliasText.AddAlias_overloads.html Nini.Config.AliasText.AddAlias_overload_2.html Nini.Config.AliasText.AddAlias_overload_3.html Nini.Config.AliasText.AddAlias_overload_1.html Nini.Config.AliasText.ContainsBoolean.html Nini.Config.AliasText.ContainsInt.html Nini.Config.AliasText.GetBoolean.html Nini.Config.AliasText.GetInt.html Nini.Config.ArgvConfigSource.html Nini.Config.ArgvConfigSourceMembers.html Nini.Config.ArgvConfigSourceConstructor.html Nini.Config.ArgvConfigSourceMethods.html Nini.Config.ArgvConfigSource.AddSwitch_overloads.html Nini.Config.ArgvConfigSource.AddSwitch_overload_1.html Nini.Config.ArgvConfigSource.AddSwitch_overload_2.html Nini.Config.ArgvConfigSource.GetArguments.html Nini.Config.ArgvConfigSource.Reload.html Nini.Config.ArgvConfigSource.Save.html Nini.Config.ConfigBase.html Nini.Config.ConfigBaseMembers.html Nini.Config.ConfigBaseConstructor.html Nini.Config.ConfigBaseFields.html Nini.Config.ConfigBase.keys.html Nini.Config.ConfigBaseProperties.html Nini.Config.ConfigBase.Alias.html Nini.Config.ConfigBase.ConfigSource.html Nini.Config.ConfigBase.Name.html Nini.Config.ConfigBaseMethods.html Nini.Config.ConfigBase.Add.html Nini.Config.ConfigBase.Contains.html Nini.Config.ConfigBase.Get_overloads.html Nini.Config.ConfigBase.Get_overload_1.html Nini.Config.ConfigBase.Get_overload_2.html Nini.Config.ConfigBase.GetBoolean_overloads.html Nini.Config.ConfigBase.GetBoolean_overload_1.html Nini.Config.ConfigBase.GetBoolean_overload_2.html Nini.Config.ConfigBase.GetDouble_overloads.html Nini.Config.ConfigBase.GetDouble_overload_1.html Nini.Config.ConfigBase.GetDouble_overload_2.html Nini.Config.ConfigBase.GetExpanded.html Nini.Config.ConfigBase.GetFloat_overloads.html Nini.Config.ConfigBase.GetFloat_overload_1.html Nini.Config.ConfigBase.GetFloat_overload_2.html Nini.Config.ConfigBase.GetInt_overloads.html Nini.Config.ConfigBase.GetInt_overload_1.html Nini.Config.ConfigBase.GetInt_overload_2.html Nini.Config.ConfigBase.GetInt_overload_3.html Nini.Config.ConfigBase.GetInt_overload_4.html Nini.Config.ConfigBase.GetKeys.html Nini.Config.ConfigBase.GetLong_overloads.html Nini.Config.ConfigBase.GetLong_overload_1.html Nini.Config.ConfigBase.GetLong_overload_2.html Nini.Config.ConfigBase.GetString_overloads.html Nini.Config.ConfigBase.GetString_overload_1.html Nini.Config.ConfigBase.GetString_overload_2.html Nini.Config.ConfigBase.GetValues.html Nini.Config.ConfigBase.OnKeyRemoved.html Nini.Config.ConfigBase.OnKeySet.html Nini.Config.ConfigBase.Remove.html Nini.Config.ConfigBase.Set.html Nini.Config.ConfigBaseEvents.html Nini.Config.ConfigBase.KeyRemoved.html Nini.Config.ConfigBase.KeySet.html Nini.Config.ConfigCollection.html Nini.Config.ConfigCollectionMembers.html Nini.Config.ConfigCollectionConstructor.html Nini.Config.ConfigCollectionProperties.html Nini.Config.ConfigCollection.Count.html Nini.Config.ConfigCollection.IsFixedSize.html Nini.Config.ConfigCollection.IsReadOnly.html Nini.Config.ConfigCollection.IsSynchronized.html Nini.Config.ConfigCollectionItem.html Nini.Config.ConfigCollection.Item1.html Nini.Config.ConfigCollection.Item2.html Nini.Config.ConfigCollection.SyncRoot.html Nini.Config.ConfigCollectionMethods.html Nini.Config.ConfigCollection.Add_overloads.html Nini.Config.ConfigCollection.Add_overload_1.html Nini.Config.ConfigCollection.Add_overload_2.html Nini.Config.ConfigCollection.Clear.html Nini.Config.ConfigCollection.Contains.html Nini.Config.ConfigCollection.CopyTo_overloads.html Nini.Config.ConfigCollection.CopyTo_overload_2.html Nini.Config.ConfigCollection.CopyTo_overload_1.html Nini.Config.ConfigCollection.GetEnumerator.html Nini.Config.ConfigCollection.IndexOf.html Nini.Config.ConfigCollection.Insert.html Nini.Config.ConfigCollection.OnConfigAdded.html Nini.Config.ConfigCollection.OnConfigRemoved.html Nini.Config.ConfigCollection.Remove_overloads.html Nini.Config.ConfigCollection.Remove_overload_1.html Nini.Config.ConfigCollection.Remove_overload_2.html Nini.Config.ConfigCollection.RemoveAt.html Nini.Config.ConfigCollectionEvents.html Nini.Config.ConfigCollection.ConfigAdded.html Nini.Config.ConfigCollection.ConfigRemoved.html Nini.Config.ConfigEventArgs.html Nini.Config.ConfigEventArgsMembers.html Nini.Config.ConfigEventArgsConstructor.html Nini.Config.ConfigEventArgsProperties.html Nini.Config.ConfigEventArgs.Config.html Nini.Config.ConfigEventHandler.html Nini.Config.ConfigKeyEventArgs.html Nini.Config.ConfigKeyEventArgsMembers.html Nini.Config.ConfigKeyEventArgsConstructor.html Nini.Config.ConfigKeyEventArgsProperties.html Nini.Config.ConfigKeyEventArgs.KeyName.html Nini.Config.ConfigKeyEventArgs.KeyValue.html Nini.Config.ConfigKeyEventHandler.html Nini.Config.ConfigSourceBase.html Nini.Config.ConfigSourceBaseMembers.html Nini.Config.ConfigSourceBaseConstructor.html Nini.Config.ConfigSourceBaseProperties.html Nini.Config.ConfigSourceBase.Alias.html Nini.Config.ConfigSourceBase.AutoSave.html Nini.Config.ConfigSourceBase.Configs.html Nini.Config.ConfigSourceBaseMethods.html Nini.Config.ConfigSourceBase.AddConfig.html Nini.Config.ConfigSourceBase.ExpandKeyValues.html Nini.Config.ConfigSourceBase.GetExpanded.html Nini.Config.ConfigSourceBase.Merge.html Nini.Config.ConfigSourceBase.OnReloaded.html Nini.Config.ConfigSourceBase.OnSaved.html Nini.Config.ConfigSourceBase.Reload.html Nini.Config.ConfigSourceBase.ReplaceKeyValues.html Nini.Config.ConfigSourceBase.Save.html Nini.Config.ConfigSourceBaseEvents.html Nini.Config.ConfigSourceBase.Reloaded.html Nini.Config.ConfigSourceBase.Saved.html Nini.Config.DotNetConfigSource.html Nini.Config.DotNetConfigSourceMembers.html Nini.Config.DotNetConfigSourceConstructor.html Nini.Config.DotNetConfigSourceConstructor1.html Nini.Config.DotNetConfigSourceConstructor2.html Nini.Config.DotNetConfigSourceConstructor3.html Nini.Config.DotNetConfigSourceConstructor4.html Nini.Config.DotNetConfigSourceProperties.html Nini.Config.DotNetConfigSource.SavePath.html Nini.Config.DotNetConfigSourceMethods.html Nini.Config.DotNetConfigSource.GetFullConfigPath.html Nini.Config.DotNetConfigSource.Load_overloads.html Nini.Config.DotNetConfigSource.Load_overload_1.html Nini.Config.DotNetConfigSource.Load_overload_2.html Nini.Config.DotNetConfigSource.Reload.html Nini.Config.DotNetConfigSource.Save_overloads.html Nini.Config.DotNetConfigSource.Save_overload_1.html Nini.Config.DotNetConfigSource.Save_overload_4.html Nini.Config.DotNetConfigSource.Save_overload_3.html Nini.Config.DotNetConfigSource.Save_overload_2.html Nini.Config.DotNetConfigSource.ToString.html Nini.Config.IConfig.html Nini.Config.IConfigMembers.html Nini.Config.IConfigProperties.html Nini.Config.IConfig.Alias.html Nini.Config.IConfig.ConfigSource.html Nini.Config.IConfig.Name.html Nini.Config.IConfigMethods.html Nini.Config.IConfig.Contains.html Nini.Config.IConfig.Get_overloads.html Nini.Config.IConfig.Get_overload_1.html Nini.Config.IConfig.Get_overload_2.html Nini.Config.IConfig.GetBoolean_overloads.html Nini.Config.IConfig.GetBoolean_overload_1.html Nini.Config.IConfig.GetBoolean_overload_2.html Nini.Config.IConfig.GetDouble_overloads.html Nini.Config.IConfig.GetDouble_overload_1.html Nini.Config.IConfig.GetDouble_overload_2.html Nini.Config.IConfig.GetExpanded.html Nini.Config.IConfig.GetFloat_overloads.html Nini.Config.IConfig.GetFloat_overload_1.html Nini.Config.IConfig.GetFloat_overload_2.html Nini.Config.IConfig.GetInt_overloads.html Nini.Config.IConfig.GetInt_overload_1.html Nini.Config.IConfig.GetInt_overload_2.html Nini.Config.IConfig.GetInt_overload_3.html Nini.Config.IConfig.GetInt_overload_4.html Nini.Config.IConfig.GetKeys.html Nini.Config.IConfig.GetLong_overloads.html Nini.Config.IConfig.GetLong_overload_1.html Nini.Config.IConfig.GetLong_overload_2.html Nini.Config.IConfig.GetString_overloads.html Nini.Config.IConfig.GetString_overload_1.html Nini.Config.IConfig.GetString_overload_2.html Nini.Config.IConfig.GetValues.html Nini.Config.IConfig.Remove.html Nini.Config.IConfig.Set.html Nini.Config.IConfigEvents.html Nini.Config.IConfig.KeyRemoved.html Nini.Config.IConfig.KeySet.html Nini.Config.IConfigSource.html Nini.Config.IConfigSourceMembers.html Nini.Config.IConfigSourceProperties.html Nini.Config.IConfigSource.Alias.html Nini.Config.IConfigSource.AutoSave.html Nini.Config.IConfigSource.Configs.html Nini.Config.IConfigSourceMethods.html Nini.Config.IConfigSource.AddConfig.html Nini.Config.IConfigSource.ExpandKeyValues.html Nini.Config.IConfigSource.GetExpanded.html Nini.Config.IConfigSource.Merge.html Nini.Config.IConfigSource.Reload.html Nini.Config.IConfigSource.ReplaceKeyValues.html Nini.Config.IConfigSource.Save.html Nini.Config.IConfigSourceEvents.html Nini.Config.IConfigSource.Reloaded.html Nini.Config.IConfigSource.Saved.html Nini.Config.IniConfig.html Nini.Config.IniConfigMembers.html Nini.Config.IniConfigConstructor.html Nini.Config.IniConfigMethods.html Nini.Config.IniConfig.Get_overloads.html Nini.Config.IniConfig.Get_overload_1.html Nini.Config.IniConfig.Remove.html Nini.Config.IniConfig.Set.html Nini.Config.IniConfigSource.html Nini.Config.IniConfigSourceMembers.html Nini.Config.IniConfigSourceConstructor.html Nini.Config.IniConfigSourceConstructor1.html Nini.Config.IniConfigSourceConstructor2.html Nini.Config.IniConfigSourceConstructor3.html Nini.Config.IniConfigSourceConstructor4.html Nini.Config.IniConfigSourceConstructor5.html Nini.Config.IniConfigSourceProperties.html Nini.Config.IniConfigSource.CaseSensitive.html Nini.Config.IniConfigSource.SavePath.html Nini.Config.IniConfigSourceMethods.html Nini.Config.IniConfigSource.Load_overloads.html Nini.Config.IniConfigSource.Load_overload_3.html Nini.Config.IniConfigSource.Load_overload_4.html Nini.Config.IniConfigSource.Load_overload_2.html Nini.Config.IniConfigSource.Load_overload_1.html Nini.Config.IniConfigSource.Reload.html Nini.Config.IniConfigSource.Save_overloads.html Nini.Config.IniConfigSource.Save_overload_1.html Nini.Config.IniConfigSource.Save_overload_4.html Nini.Config.IniConfigSource.Save_overload_3.html Nini.Config.IniConfigSource.Save_overload_2.html Nini.Config.IniConfigSource.ToString.html Nini.Config.RegistryConfigSource.html Nini.Config.RegistryConfigSourceMembers.html Nini.Config.RegistryConfigSourceConstructor.html Nini.Config.RegistryConfigSourceProperties.html Nini.Config.RegistryConfigSource.DefaultKey.html Nini.Config.RegistryConfigSourceMethods.html Nini.Config.RegistryConfigSource.AddConfig_overloads.html Nini.Config.RegistryConfigSource.AddConfig_overload_1.html Nini.Config.RegistryConfigSource.AddConfig_overload_2.html Nini.Config.RegistryConfigSource.AddMapping_overloads.html Nini.Config.RegistryConfigSource.AddMapping_overload_1.html Nini.Config.RegistryConfigSource.AddMapping_overload_2.html Nini.Config.RegistryConfigSource.Reload.html Nini.Config.RegistryConfigSource.Save.html Nini.Config.RegistryRecurse.html Nini.Config.XmlConfigSource.html Nini.Config.XmlConfigSourceMembers.html Nini.Config.XmlConfigSourceConstructor.html Nini.Config.XmlConfigSourceConstructor1.html Nini.Config.XmlConfigSourceConstructor2.html Nini.Config.XmlConfigSourceConstructor3.html Nini.Config.XmlConfigSourceProperties.html Nini.Config.XmlConfigSource.SavePath.html Nini.Config.XmlConfigSourceMethods.html Nini.Config.XmlConfigSource.Load_overloads.html Nini.Config.XmlConfigSource.Load_overload_1.html Nini.Config.XmlConfigSource.Load_overload_2.html Nini.Config.XmlConfigSource.Reload.html Nini.Config.XmlConfigSource.Save_overloads.html Nini.Config.XmlConfigSource.Save_overload_1.html Nini.Config.XmlConfigSource.Save_overload_4.html Nini.Config.XmlConfigSource.Save_overload_3.html Nini.Config.XmlConfigSource.Save_overload_2.html Nini.Config.XmlConfigSource.ToString.html Nini.Ini.html Nini.IniHierarchy.html Nini.Ini.IniDocument.html Nini.Ini.IniDocumentMembers.html Nini.Ini.IniDocumentConstructor.html Nini.Ini.IniDocumentConstructor1.html Nini.Ini.IniDocumentConstructor2.html Nini.Ini.IniDocumentConstructor3.html Nini.Ini.IniDocumentConstructor4.html Nini.Ini.IniDocumentConstructor5.html Nini.Ini.IniDocumentConstructor6.html Nini.Ini.IniDocumentConstructor7.html Nini.Ini.IniDocumentConstructor8.html Nini.Ini.IniDocumentProperties.html Nini.Ini.IniDocument.FileType.html Nini.Ini.IniDocument.Sections.html Nini.Ini.IniDocumentMethods.html Nini.Ini.IniDocument.Load_overloads.html Nini.Ini.IniDocument.Load_overload_4.html Nini.Ini.IniDocument.Load_overload_3.html Nini.Ini.IniDocument.Load_overload_2.html Nini.Ini.IniDocument.Load_overload_1.html Nini.Ini.IniDocument.Save_overloads.html Nini.Ini.IniDocument.Save_overload_3.html Nini.Ini.IniDocument.Save_overload_1.html Nini.Ini.IniDocument.Save_overload_2.html Nini.Ini.IniException.html Nini.Ini.IniExceptionMembers.html Nini.Ini.IniExceptionConstructor.html Nini.Ini.IniExceptionConstructor1.html Nini.Ini.IniExceptionConstructor2.html Nini.Ini.IniExceptionConstructor3.html Nini.Ini.IniExceptionConstructor4.html Nini.Ini.IniExceptionProperties.html Nini.Ini.IniException.LineNumber.html Nini.Ini.IniException.LinePosition.html Nini.Ini.IniException.Message.html Nini.Ini.IniExceptionMethods.html Nini.Ini.IniException.GetObjectData.html Nini.Ini.IniFileType.html Nini.Ini.IniItem.html Nini.Ini.IniItemMembers.html Nini.Ini.IniItemConstructor.html Nini.Ini.IniItemProperties.html Nini.Ini.IniItem.Comment.html Nini.Ini.IniItem.Name.html Nini.Ini.IniItem.Type.html Nini.Ini.IniItem.Value.html Nini.Ini.IniReader.html Nini.Ini.IniReaderMembers.html Nini.Ini.IniReaderConstructor.html Nini.Ini.IniReaderConstructor1.html Nini.Ini.IniReaderConstructor2.html Nini.Ini.IniReaderConstructor3.html Nini.Ini.IniReaderProperties.html Nini.Ini.IniReader.AcceptCommentAfterKey.html Nini.Ini.IniReader.AcceptNoAssignmentOperator.html Nini.Ini.IniReader.Comment.html Nini.Ini.IniReader.ConsumeAllKeyText.html Nini.Ini.IniReader.IgnoreComments.html Nini.Ini.IniReader.LineContinuation.html Nini.Ini.IniReader.LineNumber.html Nini.Ini.IniReader.LinePosition.html Nini.Ini.IniReader.Name.html Nini.Ini.IniReader.ReadState.html Nini.Ini.IniReader.Type.html Nini.Ini.IniReader.Value.html Nini.Ini.IniReaderMethods.html Nini.Ini.IniReader.Close.html Nini.Ini.IniReader.Dispose_overloads.html Nini.Ini.IniReader.Dispose_overload_1.html Nini.Ini.IniReader.Dispose_overload_2.html Nini.Ini.IniReader.Finalize.html Nini.Ini.IniReader.GetAssignDelimiters.html Nini.Ini.IniReader.GetCommentDelimiters.html Nini.Ini.IniReader.MoveToNextKey.html Nini.Ini.IniReader.MoveToNextSection.html Nini.Ini.IniReader.Read.html Nini.Ini.IniReader.SetAssignDelimiters.html Nini.Ini.IniReader.SetCommentDelimiters.html Nini.Ini.IniReadState.html Nini.Ini.IniSection.html Nini.Ini.IniSectionMembers.html Nini.Ini.IniSectionConstructor.html Nini.Ini.IniSectionConstructor1.html Nini.Ini.IniSectionConstructor2.html Nini.Ini.IniSectionProperties.html Nini.Ini.IniSection.Comment.html Nini.Ini.IniSection.ItemCount.html Nini.Ini.IniSection.Name.html Nini.Ini.IniSectionMethods.html Nini.Ini.IniSection.Contains.html Nini.Ini.IniSection.GetItem.html Nini.Ini.IniSection.GetKeys.html Nini.Ini.IniSection.GetValue.html Nini.Ini.IniSection.Remove.html Nini.Ini.IniSection.Set_overloads.html Nini.Ini.IniSection.Set_overload_4.html Nini.Ini.IniSection.Set_overload_3.html Nini.Ini.IniSection.Set_overload_2.html Nini.Ini.IniSection.Set_overload_1.html Nini.Ini.IniSectionCollection.html Nini.Ini.IniSectionCollectionMembers.html Nini.Ini.IniSectionCollectionConstructor.html Nini.Ini.IniSectionCollectionProperties.html Nini.Ini.IniSectionCollection.Count.html Nini.Ini.IniSectionCollection.IsSynchronized.html Nini.Ini.IniSectionCollectionItem.html Nini.Ini.IniSectionCollection.Item1.html Nini.Ini.IniSectionCollection.Item2.html Nini.Ini.IniSectionCollection.SyncRoot.html Nini.Ini.IniSectionCollectionMethods.html Nini.Ini.IniSectionCollection.Add.html Nini.Ini.IniSectionCollection.CopyTo_overloads.html Nini.Ini.IniSectionCollection.CopyTo_overload_2.html Nini.Ini.IniSectionCollection.CopyTo_overload_1.html Nini.Ini.IniSectionCollection.GetEnumerator.html Nini.Ini.IniSectionCollection.Remove.html Nini.Ini.IniType.html Nini.Ini.IniWriter.html Nini.Ini.IniWriterMembers.html Nini.Ini.IniWriterConstructor.html Nini.Ini.IniWriterConstructor1.html Nini.Ini.IniWriterConstructor2.html Nini.Ini.IniWriterConstructor3.html Nini.Ini.IniWriterProperties.html Nini.Ini.IniWriter.AssignDelimiter.html Nini.Ini.IniWriter.BaseStream.html Nini.Ini.IniWriter.CommentDelimiter.html Nini.Ini.IniWriter.Indentation.html Nini.Ini.IniWriter.UseValueQuotes.html Nini.Ini.IniWriter.WriteState.html Nini.Ini.IniWriterMethods.html Nini.Ini.IniWriter.Close.html Nini.Ini.IniWriter.Dispose_overloads.html Nini.Ini.IniWriter.Dispose_overload_1.html Nini.Ini.IniWriter.Dispose_overload_2.html Nini.Ini.IniWriter.Finalize.html Nini.Ini.IniWriter.Flush.html Nini.Ini.IniWriter.ToString.html Nini.Ini.IniWriter.WriteEmpty_overloads.html Nini.Ini.IniWriter.WriteEmpty_overload_1.html Nini.Ini.IniWriter.WriteEmpty_overload_2.html Nini.Ini.IniWriter.WriteKey_overloads.html Nini.Ini.IniWriter.WriteKey_overload_1.html Nini.Ini.IniWriter.WriteKey_overload_2.html Nini.Ini.IniWriter.WriteSection_overloads.html Nini.Ini.IniWriter.WriteSection_overload_1.html Nini.Ini.IniWriter.WriteSection_overload_2.html Nini.Ini.IniWriteState.html Nini.Util.html Nini.UtilHierarchy.html Nini.Util.ArgvParser.html Nini.Util.ArgvParserMembers.html Nini.Util.ArgvParserConstructor.html Nini.Util.ArgvParserConstructor1.html Nini.Util.ArgvParserConstructor2.html Nini.Util.ArgvParserProperties.html Nini.Util.ArgvParser.Item.html Nini.Util.OrderedList.html Nini.Util.OrderedListMembers.html Nini.Util.OrderedListConstructor.html Nini.Util.OrderedListProperties.html Nini.Util.OrderedList.Count.html Nini.Util.OrderedList.IsFixedSize.html Nini.Util.OrderedList.IsReadOnly.html Nini.Util.OrderedList.IsSynchronized.html Nini.Util.OrderedListItem.html Nini.Util.OrderedList.Item1.html Nini.Util.OrderedList.Item2.html Nini.Util.OrderedList.Keys.html Nini.Util.OrderedList.SyncRoot.html Nini.Util.OrderedList.Values.html Nini.Util.OrderedListMethods.html Nini.Util.OrderedList.Add.html Nini.Util.OrderedList.Clear.html Nini.Util.OrderedList.Contains.html Nini.Util.OrderedList.CopyTo_overloads.html Nini.Util.OrderedList.CopyTo_overload_1.html Nini.Util.OrderedList.CopyTo_overload_2.html Nini.Util.OrderedList.GetEnumerator.html Nini.Util.OrderedList.Insert.html Nini.Util.OrderedList.Remove.html Nini.Util.OrderedList.RemoveAt.html Nini.Util.OrderedListEnumerator.html Nini.Util.OrderedListEnumeratorMembers.html Nini.Util.OrderedListEnumeratorProperties.html Nini.Util.OrderedListEnumerator.Current.html Nini.Util.OrderedListEnumerator.Entry.html Nini.Util.OrderedListEnumerator.Key.html Nini.Util.OrderedListEnumerator.Value.html Nini.Util.OrderedListEnumeratorMethods.html Nini.Util.OrderedListEnumerator.MoveNext.html Nini.Util.OrderedListEnumerator.Reset.html [OPTIONS] Title=NiniReference Auto Index=Yes Binary TOC=Yes Compatibility=1.1 or later Compiled file=NiniReference.chm Default Window=MsdnHelp Default topic=Nini.Config.html Display compile progress=No Error log file=NiniReference.log Full-text search=Yes Index file=NiniReference.hhk Language=0x409 English (United States) Contents file=NiniReference.hhc [WINDOWS] MsdnHelp="NiniReference Help","NiniReference.hhc","NiniReference.hhk","Nini.Config.html","Nini.Config.html",,,,,0x62520,220,0x387e,[86,51,872,558],,,,,,,0 [INFOTYPES] nini-1.1.0+dfsg.2/Docs/Reference/html/NiniReference.hhk0000644000175000017500000000007710410343264021766 0ustar meebeymeebeynini-1.1.0+dfsg.2/Docs/Reference/html/pubfield.gif0000644000175000017500000000156110410343244021034 0ustar meebeymeebeyGIF89a÷˙˙˙˙˙€€ ˙˙€€€ ˙˙˙!ů,@NH° Á ` Ŕ @ Ä‚/B´¨1€Ä@ȸ‘‡SŞT)‘ŁĆŹ! ,X@ˇH3#XŘ0çÁ>W -;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.AddMapping_overload_1.html0000644000175000017500000000515710410343262032003 0ustar meebeymeebey RegistryConfigSource.AddMapping Method (RegistryKey, String)
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.AddMapping Method (RegistryKey, String)

Maps a single registry key to an IConfig.

public void AddMapping(
   RegistryKey registryKey,
   string path
);

Parameters

registryKey
The root Registry key to load (e.g. Registry.LocalMachine).
path
The registry path to load off of the the registryKey.

Remarks

TODO.

See Also

RegistryConfigSource Class | Nini.Config Namespace | RegistryConfigSource.AddMapping Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Finalize.html0000644000175000017500000000341310410343262024453 0ustar meebeymeebey IniReader.Finalize Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Finalize Method 

Destructor.

protected override void Finalize();

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBaseMembers.html0000644000175000017500000002330010410343256025052 0ustar meebeymeebey ConfigBase Members
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase Members

ConfigBase overview

Public Instance Constructors

ConfigBase Constructor Constructor.

Public Instance Properties

Alias Gets the AliasText for this instance.
ConfigSourceReturns the parent IConfigSource.
Name Gets or sets the IConfig name. If set then it renames this config with the parent source.

Public Instance Methods

AddAdds a new IConfig.
Contains Returns true if the configuration key is present.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetOverloaded. Returns a string key value.
GetBooleanOverloaded. Returns a boolean key value.
GetDoubleOverloaded. Returns a double key value.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetFloatOverloaded. Returns a float key value.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetIntOverloaded. Returns an integer key value.
GetKeysReturns an Array of the key strings.
GetLongOverloaded. Returns an long key value.
GetStringOverloaded. Returns a string key value.
GetType (inherited from Object)Gets the Type of the current instance.
GetValuesReturns an Array of all key values.
Remove Removes a configuration key.
Set Sets a key value.
ToString (inherited from Object)Returns a String that represents the current Object.

Public Instance Events

KeyRemoved Occurs when a key is removed.
KeySet Occurs when a key is set.

Protected Instance Fields

keys 

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnKeyRemoved Raises the KeyRemoved event.
OnKeySet Raises the KeySet event.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumerator.Current.html0000644000175000017500000000367010410343264027161 0ustar meebeymeebey Current Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator.Current Property

Returns the strongly-typed current object in the enumeration.

public System.Collections.DictionaryEntry Current {get;}

See Also

OrderedListEnumerator Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollectionProperties.html0000644000175000017500000000616010410343260027035 0ustar meebeymeebey ConfigCollection Properties
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection Properties

The properties of the ConfigCollection class are listed below. For a complete list of ConfigCollection class members, see the ConfigCollection Members topic.

Public Instance Properties

CountReturns the number of IConfigs in the collection.
IsFixedSize Returns true if the collection is of a fixed size.
IsReadOnly Returns true if the collection is read only.
IsSynchronized Returns true if the collection is synchronized. This always returns false.
ItemOverloaded. Returns the IConfig at the specified index.
SyncRootReturns the synchronization object.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniType.html0000644000175000017500000000551010410343262022432 0ustar meebeymeebey IniType Enumeration
Nini Library API Reference - http://nini.sourceforge.net/

IniType Enumeration

The INI line type.

public enum IniType

Members

Member Name Description
SectionINI section (e.g. [My Section])
KeyAn INI key value pair (e.g. my_key = value)
EmptyNo INI data. Comments may be present.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetKeys.html0000644000175000017500000000365410410343256025123 0ustar meebeymeebey ConfigBase.GetKeys Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetKeys Method 

Returns an Array of the key strings.

public string[] GetKeys();

Implements

IConfig.GetKeys

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBaseEvents.html0000644000175000017500000000420210410343260024717 0ustar meebeymeebey ConfigBase Events
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase Events

The events of the ConfigBase class are listed below. For a complete list of ConfigBase class members, see the ConfigBase Members topic.

Public Instance Events

KeyRemoved Occurs when a key is removed.
KeySet Occurs when a key is set.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.GetEnumerator.html0000644000175000017500000000352610410343264026256 0ustar meebeymeebey OrderedList.GetEnumerator Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.GetEnumerator Method 

Returns the enumerator object.

public IEnumerator GetEnumerator();

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/treenodedot.gif0000644000175000017500000000147510410343264021564 0ustar meebeymeebeyGIF89a ÷˙˙˙‚‚‚!ů, @H° A\ ˇB†FLQ`@;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionMembers.html0000644000175000017500000002217510410343262024770 0ustar meebeymeebey IniException Members
Nini Library API Reference - http://nini.sourceforge.net/

IniException Members

IniException overview

Public Instance Constructors

IniException Overloaded. Initializes a new instance of the IniException class.

Public Instance Properties

Data (inherited from Exception)Gets a collection of key/value pairs that provide additional, user-defined information about the exception.
HelpLink (inherited from Exception)Gets or sets a link to the help file associated with this exception.
InnerException (inherited from Exception)Gets the Exception instance that caused the current exception.
LineNumberReturns the line number where the exception occurred.
LinePositionReturns the line position where the exception occurred.
MessageReturns the exception message.
Source (inherited from Exception)Gets or sets the name of the application or the object that causes the error.
StackTrace (inherited from Exception)Gets a string representation of the frames on the call stack at the time the current exception was thrown.
TargetSite (inherited from Exception)Gets the method that throws the current exception.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetBaseException (inherited from Exception)When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetObjectDataISerializable GetObjectData method.
GetType (inherited from Exception)Gets the runtime type of the current instance.
ToString (inherited from Exception)Creates and returns a string representation of the current exception.

Protected Instance Constructors

IniException Overloaded. Initializes a new instance of the IniException class.

Protected Instance Properties

HResult (inherited from Exception)Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetLong_overload_2.html0000644000175000017500000000506010410343256027214 0ustar meebeymeebey ConfigBase.GetLong Method (String, Int64)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetLong Method (String, Int64)

Returns an integer key value.

public long GetLong(
   string key,
   long defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Implements

IConfig.GetLong

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetLong Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetInt_overload_2.html0000644000175000017500000000465710410343260026373 0ustar meebeymeebey IConfig.GetInt Method (String, Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetInt Method (String, Boolean)

Returns an integer key value from an alias.

int GetInt(
   string key,
   bool fromAlias
);

Parameters

key
Configuration key.
fromAlias
If set to true then this returns the alias configuration value.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetDouble_overloads.html0000644000175000017500000000323710410343260027006 0ustar meebeymeebey GetDouble Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetDouble Method

Returns a double key value.

Overload List

Returns a double key value.

double GetDouble(string);

Returns a double key value.

double GetDouble(string,double);

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriterConstructor2.html0000644000175000017500000000330410410343262025314 0ustar meebeymeebey IniWriter Constructor (TextWriter)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Constructor (TextWriter)

Initializes a new instance of the class using a TextWriter.

public IniWriter(
   TextWriter writer
);

Parameters

writer
The TextWriter.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Name.html0000644000175000017500000000373510410343262023601 0ustar meebeymeebey Name Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Name Property

Gets the name of the current INI line.

public string Name {get;}

Remarks

For sections this is the name of the section.
For keys this is the name of the key.
For emtpy lines this is an empty string.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteKey_overload_2.html0000644000175000017500000000615410410343264026652 0ustar meebeymeebey IniWriter.WriteKey Method (String, String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteKey Method (String, String, String)

Writes a key to a section with a comment.

public void WriteKey(
   string key,
   string value,
   string comment
);

Parameters

key
Key name
value
Key value.
comment
Comment text.

Exceptions

Exception Type Condition
IniException A WriteState error occurred or the document was closed.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter.WriteKey Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Save_overload_3.html0000644000175000017500000000571110410343262027623 0ustar meebeymeebey XmlConfigSource.Save Method (TextWriter)
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Save Method (TextWriter)

Saves all configuration values to a TextWriter.

public void Save(
   TextWriter writer
);

Parameters

writer
The TextWriter to save the document.

Remarks

This sets the SavePath to

null
.

Exceptions

Exception Type Condition
Exception An error has occurred.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetInt_overload_1.html0000644000175000017500000000526510410343260026366 0ustar meebeymeebey IConfig.GetInt Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetInt Method (String)

Returns an integer key value.

int GetInt(
   string key
);

Parameters

key
Configuration key.

Exceptions

Exception Type Condition
Exception No key was found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.keys.html0000644000175000017500000000334210410343256024515 0ustar meebeymeebey ConfigBase.keys Field
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.keys Field

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetInt_overload_3.html0000644000175000017500000000504410410343256027052 0ustar meebeymeebey ConfigBase.GetInt Method (String, Int32)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetInt Method (String, Int32)

Returns an integer key value.

public int GetInt(
   string key,
   int defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Implements

IConfig.GetInt

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBaseMethods.html0000644000175000017500000001462510410343260026251 0ustar meebeymeebey ConfigSourceBase Methods
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase Methods

The methods of the ConfigSourceBase class are listed below. For a complete list of ConfigSourceBase class members, see the ConfigSourceBase Members topic.

Public Instance Methods

AddConfig Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues Expands all key values.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Merge Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded 
OnSaved 

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.IsReadOnly.html0000644000175000017500000000407110410343264025502 0ustar meebeymeebey IsReadOnly Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.IsReadOnly Property

Returns true if the list is read only. Always returns false.

public bool IsReadOnly {get;}

Implements

IDictionary.IsReadOnly

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Load_overload_2.html0000644000175000017500000000446610410343262027611 0ustar meebeymeebey XmlConfigSource.Load Method (XmlReader)
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Load Method (XmlReader)

Loads a new instance of the XML configuration source.

public void Load(
   XmlReader reader
);

Parameters

reader
An XmlReader instance.

Remarks

This instance type is read only.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceMethods.html0000644000175000017500000001517610410343260026120 0ustar meebeymeebey IniConfigSource Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Methods

The methods of the IniConfigSource class are listed below. For a complete list of IniConfigSource class members, see the IniConfigSource Members topic.

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads an INI file source.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
SaveOverloaded. Saves all configuration values.
ToString Returns all characters in the document.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Reload.html0000644000175000017500000000540410410343262026015 0ustar meebeymeebey XmlConfigSource.Reload Method
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Reload Method 

Reloads all configuration values.

public override void Reload();

Implements

IConfigSource.Reload

Remarks

This can only be called if the document can be reloaded from it's source, such as if it was loaded from a file or from the Windows Registry. If other documents were merged (with Merge) then they will be lost.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.UseValueQuotes.html0000644000175000017500000000370110410343262025716 0ustar meebeymeebey UseValueQuotes Property
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.UseValueQuotes Property

Whether or not quotes should surround each entry.

public bool UseValueQuotes {get; set;}

Remarks

The default value is false.

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/treenodeplus.gif0000644000175000017500000000007310410343264021752 0ustar meebeymeebeyGIF89a ‘ţţţ‚‚‚, ŚŹ  ¶˛ś‚ʉ{[xqĎÎtR;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBaseConstructor.html0000644000175000017500000000371510410343256026015 0ustar meebeymeebey ConfigBase Constructor
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase Constructor 

Constructor.

public ConfigBase(
   string name,
   IConfigSource source
);

Parameters

name
Config name.
source
Config parent IConfigSource.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSource.AddSwitch_overloads.html0000644000175000017500000000337110410343256030702 0ustar meebeymeebey AddSwitch Method
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource.AddSwitch Method

Adds a command line switch.

Overload List

Adds a command line switch.

public void AddSwitch(string,string);

Adds a command line switch including a short switch.

public void AddSwitch(string,string,string);

See Also

ArgvConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSourceConstructor.html0000644000175000017500000000325010410343260030121 0ustar meebeymeebey RegistryConfigSource Constructor
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource Constructor 

Initializes a new instance of the RegistryConfigSource class.

public RegistryConfigSource();

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetInt_overload_1.html0000644000175000017500000000552210410343256027051 0ustar meebeymeebey ConfigBase.GetInt Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetInt Method (String)

Returns an integer key value.

public int GetInt(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.GetInt

Exceptions

Exception Type Condition
Exception No key was found.

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.ConfigSource.html0000644000175000017500000000345610410343260025447 0ustar meebeymeebey ConfigSource Property
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.ConfigSource Property

Returns the parent IConfigSource.

IConfigSource ConfigSource {get;}

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Save_overload_1.html0000644000175000017500000000560510410343260030256 0ustar meebeymeebey DotNetConfigSource.Save Method ()
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Save Method ()

Saves all configuration values.

public override void Save();

Implements

IConfigSource.Save

Remarks

If the SavePath is

null
then this will throw an exception.

Exceptions

Exception Type Condition
Exception The SavePath is
null
.

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.AddMapping_overload_2.html0000644000175000017500000000573310410343262032004 0ustar meebeymeebey RegistryConfigSource.AddMapping Method (RegistryKey, String, RegistryRecurse)
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.AddMapping Method (RegistryKey, String, RegistryRecurse)

Maps a single registry key to an IConfig.

public void AddMapping(
   RegistryKey registryKey,
   string path,
   RegistryRecurse recurse
);

Parameters

registryKey
The root Registry key to load (e.g. Registry.LocalMachine).
path
The registry path to load off of the the registryKey.
recurse
The registry path to load off of the the registryKey.

Remarks

If recurse is set to Namespacing or Flattened then it will recursively load all Registry subkeys into IConfigs as well.

See Also

RegistryConfigSource Class | Nini.Config Namespace | RegistryConfigSource.AddMapping Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumerator.Value.html0000644000175000017500000000406410410343264026611 0ustar meebeymeebey Value Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator.Value Property

Returns the current value.

public object Value {get;}

Implements

IDictionaryEnumerator.Value

See Also

OrderedListEnumerator Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Load_overload_3.html0000644000175000017500000000420710410343262026264 0ustar meebeymeebey IniDocument.Load Method (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Load Method (Stream)

Loads the instance using a Stream.

public void Load(
   Stream stream
);

Parameters

stream
The Stream.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.html0000644000175000017500000000636310410343262022722 0ustar meebeymeebey IniReader Class
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Class

Fast forward only INI parser class.

For a list of all members of this type, see IniReader Members.

System.Object
   Nini.Ini.IniReader

public class IniReader : IDisposable

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

An INI is a file is a simple file format for storing configuration information. These files are line based. Each line can be one of three types: empty, section, or key/value pair. All of these formats allow for comments. Comments are delimited by hash mark ('#') or a semi-colon (';').

Example

IniReader reader = new IniReader ("test.ini");
string comment;
while (reader.Read ())
{
    comment = (reader.Comment.Length > 0) ? " ; " + reader.Comment : "";

    switch (reader.IniType)
    {
    case IniType.Empty:
        Console.WriteLine (comment);
        break;
    case IniType.Section:
        Console.WriteLine ("[" + reader.Name + "]") + comment;
        break;
    case IniType.Key:
        Console.WriteLine (reader.Name + " = " + reader.Value + comment);
        break;
    }
}
reader.Close ();
        

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

IniReader Members | Nini.Ini Namespace | The System.Math class


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.OnSaved.html0000644000175000017500000000365010410343260026257 0ustar meebeymeebey ConfigSourceBase.OnSaved Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.OnSaved Method 

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.Dispose_overload_1.html0000644000175000017500000000411610410343264026510 0ustar meebeymeebey IniWriter.Dispose Method ()
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.Dispose Method ()

Cleans up all managed and unmanaged resources for the instance.

public void Dispose();

Implements

IDisposable.Dispose

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter.Dispose Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Alias.html0000644000175000017500000000366110410343256024577 0ustar meebeymeebey Alias Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Alias Property

Gets the AliasText for this instance.

public AliasText Alias {get;}

Implements

IConfig.Alias

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetString_overload_2.html0000644000175000017500000000464710410343260027106 0ustar meebeymeebey IConfig.GetString Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetString Method (String, String)

Returns a string key value.

string GetString(
   string key,
   string defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetString Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItem.html0000644000175000017500000000435610410343262022416 0ustar meebeymeebey IniItem Class
Nini Library API Reference - http://nini.sourceforge.net/

IniItem Class

INI item class.

For a list of all members of this type, see IniItem Members.

System.Object
   Nini.Ini.IniItem

public class IniItem

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

IniItem Members | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigEvents.html0000644000175000017500000000416110410343260024241 0ustar meebeymeebey IConfig Events
Nini Library API Reference - http://nini.sourceforge.net/

IConfig Events

The events of the IConfig interface are listed below. For a complete list of IConfig interface members, see the IConfig Members topic.

Public Instance Events

KeyRemoved Occurs when a key is removed.
KeySet Occurs when a key is set.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Load_overloads.html0000644000175000017500000000335510410343262027547 0ustar meebeymeebey Load Method
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Load Method

Loads a new object from the specified XML file.

Overload List

Loads a new object from the specified XML file.

public void Load(string);

Loads a new instance of the XML configuration source.

public void Load(XmlReader);

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfig.html0000644000175000017500000000467510410343260023415 0ustar meebeymeebey IniConfig Class
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig Class

IConfig class for IniConfigSource sections.

For a list of all members of this type, see IniConfig Members.

System.Object
   Nini.Config.ConfigBase
      Nini.Config.IniConfig

public class IniConfig : ConfigBase

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

IniConfig Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.LineContinuation.html0000644000175000017500000000400710410343262026174 0ustar meebeymeebey LineContinuation Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.LineContinuation Property

Gets or sets whether to accept line continuations.

public bool LineContinuation {get; set;}

Remarks

Line continuations are triggered by a slash ('\') character at the end of a key value line.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetFloat_overload_1.html0000644000175000017500000000557310410343256027372 0ustar meebeymeebey ConfigBase.GetFloat Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetFloat Method (String)

Returns a float key value.

public float GetFloat(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.GetFloat

Exceptions

Exception Type Condition
Exception Default value if the key is not found.

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetFloat Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.Saved.html0000644000175000017500000000422110410343260025755 0ustar meebeymeebey ConfigSourceBase.Saved Event
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.Saved Event

Occurs when the config soucre is saved.

public event EventHandler Saved;

Implements

IConfigSource.Saved

Remarks

This event occurs when a Save method is called.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetFloat_overload_2.html0000644000175000017500000000463410410343260026701 0ustar meebeymeebey IConfig.GetFloat Method (String, Single)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetFloat Method (String, Single)

Returns a float key value.

float GetFloat(
   string key,
   float defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetFloat Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.AddConfig_overload_1.html0000644000175000017500000000462410410343262031613 0ustar meebeymeebey RegistryConfigSource.AddConfig Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.AddConfig Method (String)

Adds a config and will map itself to the DefaultKey property.

public override IConfig AddConfig(
   string name
);

Parameters

name
Name of the config.

Implements

IConfigSource.AddConfig

See Also

RegistryConfigSource Class | Nini.Config Namespace | RegistryConfigSource.AddConfig Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Set_overload_4.html0000644000175000017500000000353010410343262025765 0ustar meebeymeebey IniSection.Set Method ()
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Set Method ()

Creates an empty line in the section.

public void Set();

See Also

IniSection Class | Nini.Ini Namespace | IniSection.Set Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.ItemCount.html0000644000175000017500000000356310410343262025031 0ustar meebeymeebey ItemCount Property
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.ItemCount Property

Returns the number of items in the section. This includes keys, comments, and empty lines.

public int ItemCount {get;}

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Sections.html0000644000175000017500000000356210410343262025062 0ustar meebeymeebey Sections Property
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Sections Property

Gets the section comment.

public IniSectionCollection Sections {get;}

Remarks

Returns null if there is no comment.

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Value.html0000644000175000017500000000372610410343262023775 0ustar meebeymeebey Value Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Value Property

Gets the value of the current INI line.

public string Value {get;}

Remarks

For sections this is an empty string.
For keys this is the key value.
For emtpy lines this is an empty string.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.ArgvParserConstructor2.html0000644000175000017500000000276310410343264025664 0ustar meebeymeebey ArgvParser Constructor (String[])
Nini Library API Reference - http://nini.sourceforge.net/

ArgvParser Constructor (String[])

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Save_overload_4.html0000644000175000017500000000426110410343262027623 0ustar meebeymeebey XmlConfigSource.Save Method (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Save Method (Stream)

Writes the XML data to a Stream.

public void Save(
   Stream stream
);

Parameters

stream
Stream object

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSource.Save.html0000644000175000017500000000523710410343256025653 0ustar meebeymeebey ArgvConfigSource.Save Method
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource.Save Method 

Saves all configuration values.

public override void Save();

Implements

IConfigSource.Save

Remarks

This method will always throw an exception because you will never be able to save it.

Exceptions

Exception Type Condition
ArgumentException This will always throw an exception.

See Also

ArgvConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Dispose_overloads.html0000644000175000017500000000343410410343262026401 0ustar meebeymeebey Dispose Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Dispose Method

Cleans up all managed and unmanaged resources for the instance.

Overload List

Cleans up all managed and unmanaged resources for the instance.

public void Dispose();

Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.

protected virtual void Dispose(bool);

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.LineNumber.html0000644000175000017500000000346510410343262024761 0ustar meebeymeebey LineNumber Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.LineNumber Property

Gets the current line number.

public int LineNumber {get;}

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.Alias.html0000644000175000017500000000353510410343260025271 0ustar meebeymeebey Alias Property
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.Alias Property

Gets the global AliasText for all IConfigs in this source.

AliasText Alias {get;}

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.IgnoreComments.html0000644000175000017500000000357210410343262025651 0ustar meebeymeebey IgnoreComments Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.IgnoreComments Property

Gets or sets whether comments should be collected while parsing.

public bool IgnoreComments {get; set;}

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSourceProperties.html0000644000175000017500000000477010410343260026320 0ustar meebeymeebey IConfigSource Properties
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource Properties

The properties of the IConfigSource interface are listed below. For a complete list of IConfigSource interface members, see the IConfigSource Members topic.

Public Instance Properties

Alias Gets the global AliasText for all IConfigs in this source.
AutoSave Gets or sets whether the source will be automatically saved.
ConfigsReturns the collection of IConfig objects.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Dispose_overload_1.html0000644000175000017500000000411610410343262026434 0ustar meebeymeebey IniReader.Dispose Method ()
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Dispose Method ()

Cleans up all managed and unmanaged resources for the instance.

public void Dispose();

Implements

IDisposable.Dispose

See Also

IniReader Class | Nini.Ini Namespace | IniReader.Dispose Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumerator.html0000644000175000017500000000523610410343264025540 0ustar meebeymeebey OrderedListEnumerator Class
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator Class

Enumerator class for OrderedLists.

For a list of all members of this type, see OrderedListEnumerator Members.

System.Object
   Nini.Util.OrderedListEnumerator

public class OrderedListEnumerator : IDictionaryEnumerator, IEnumerator

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Util

Assembly: Nini (in Nini.dll)

See Also

OrderedListEnumerator Members | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.SyncRoot.html0000644000175000017500000000401410410343264025246 0ustar meebeymeebey SyncRoot Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.SyncRoot Property

Returns the synchronized object.

public object SyncRoot {get;}

Implements

ICollection.SyncRoot

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.CopyTo_overloads.html0000644000175000017500000000335610410343260030256 0ustar meebeymeebey CopyTo Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.CopyTo Method

Copies the collection to a strongly-typed array.

Overload List

Copies the collection to a strongly-typed array.

public void CopyTo(IConfig[],int);

Copies the collection to an array.

public void CopyTo(Array,int);

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollectionItem.html0000644000175000017500000000330710410343260025577 0ustar meebeymeebey Item Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Item Property

Returns the IConfig at the specified index.

Overload List

Returns the IConfig at the specified index.

public IConfig this[int] {get;}

Returns the IConfig by name.

public IConfig this[string] {get;}

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.ReplaceKeyValues.html0000644000175000017500000000416710410343260030130 0ustar meebeymeebey ConfigSourceBase.ReplaceKeyValues Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.ReplaceKeyValues Method 

This method is deprecated. Use ExpandKeyValues from now on.

public void ReplaceKeyValues();

Implements

IConfigSource.ReplaceKeyValues

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollectionConstructor.html0000644000175000017500000000323410410343262027400 0ustar meebeymeebey IniSectionCollection Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection Constructor 

Initializes a new instance of the IniSectionCollection class.

public IniSectionCollection();

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetDouble_overload_2.html0000644000175000017500000000511210410343256027525 0ustar meebeymeebey ConfigBase.GetDouble Method (String, Double)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetDouble Method (String, Double)

Returns a double key value.

public double GetDouble(
   string key,
   double defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Implements

IConfig.GetDouble

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetDouble Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Set_overload_2.html0000644000175000017500000000447110410343262025770 0ustar meebeymeebey IniSection.Set Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Set Method (String, String)

Sets a key and value.

public void Set(
   string key,
   string value
);

Parameters

key
Key name.
value
Key value.

See Also

IniSection Class | Nini.Ini Namespace | IniSection.Set Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor3.html0000644000175000017500000000332210410343262025617 0ustar meebeymeebey IniDocument Constructor (TextReader)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor (TextReader)

Initializes a new instance of the class using a TextReader.

public IniDocument(
   TextReader reader
);

Parameters

reader
The TextReader.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.SavePath.html0000644000175000017500000000425410410343260026757 0ustar meebeymeebey SavePath Property
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.SavePath Property

The path where the document will be saved.

public string SavePath {get;}

Remarks

This path is set when the class is loaded with a path or saved with a path (using the Save (string) method). Otherwise the value will be

null
. If it is
null
then calling save will cause an exception to be thrown.

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Clear.html0000644000175000017500000000373610410343264024526 0ustar meebeymeebey OrderedList.Clear Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Clear Method 

Clears all object from the collection.

public void Clear();

Implements

IDictionary.Clear

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.ArgvParserConstructor1.html0000644000175000017500000000342710410343264025661 0ustar meebeymeebey ArgvParser Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

ArgvParser Constructor (String)

Loads and parses all command line options.

public ArgvParser(
   string args
);

Parameters

args
The command line string array to parse.

Remarks

All options are parsed upon load.

See Also

ArgvParser Class | Nini.Util Namespace | ArgvParser Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReaderMethods.html0000644000175000017500000001436610410343262024250 0ustar meebeymeebey IniReader Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Methods

The methods of the IniReader class are listed below. For a complete list of IniReader class members, see the IniReader Members topic.

Public Instance Methods

CloseCloses the current reader and frees the resources.
DisposeOverloaded. Cleans up all managed and unmanaged resources for the instance.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetAssignDelimitersReturns the assign delimiters.
GetCommentDelimitersReturns the comment delimiters.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
MoveToNextKeyMoves the reader to the next line.
MoveToNextSectionMoves the reader to the next section.
ReadMoves the reader to the next line.
SetAssignDelimitersSets the assign delimiters.
SetCommentDelimitersSets the comment delimiters.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

DisposeOverloaded. Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.
Finalize Destructor.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniReader Class | Nini.Ini Namespace | The System.Math class


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.GetInt.html0000644000175000017500000000435710410343256024641 0ustar meebeymeebey AliasText.GetInt Method
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.GetInt Method 

Returns the int value of a config value.

public int GetInt(
   string key,
   string alias
);

Parameters

key
Config key.
alias
Config alias.

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Set.html0000644000175000017500000000443510410343260023612 0ustar meebeymeebey IConfig.Set Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Set Method 

Sets a key value.

void Set(
   string key,
   object value
);

Parameters

key
Configuration key.
value
Value to set for the key. The set value will be the result of the object's ToString value.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSourceConstructor.html0000644000175000017500000000430410410343262027054 0ustar meebeymeebey XmlConfigSource Constructor
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Constructor

Constructor. Loads an empty XML source.

Overload List

Constructor. Loads an empty XML source.

public XmlConfigSource();

Creates a new object from the specified XML file.

public XmlConfigSource(string);

Creates a new instance of the XML configuration source.

public XmlConfigSource(XmlReader);

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetDouble_overloads.html0000644000175000017500000000327010410343256027472 0ustar meebeymeebey GetDouble Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetDouble Method

Returns a double key value.

Overload List

Returns a double key value.

public double GetDouble(string);

Returns a double key value.

public double GetDouble(string,double);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteKey_overloads.html0000644000175000017500000000325610410343264026614 0ustar meebeymeebey WriteKey Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteKey Method

Writes a key to a section.

Overload List

Writes a key to a section.

public void WriteKey(string,string);

Writes a key to a section with a comment.

public void WriteKey(string,string,string);

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Dispose_overload_2.html0000644000175000017500000000441510410343262026437 0ustar meebeymeebey IniReader.Dispose Method (Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Dispose Method (Boolean)

Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.

protected virtual void Dispose(
   bool disposing
);

Parameters

disposing
If true then this will clean up managed resources as well.

See Also

IniReader Class | Nini.Ini Namespace | IniReader.Dispose Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Add_overloads.html0000644000175000017500000000330310410343260027521 0ustar meebeymeebey Add Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Add Method

Adds a new IConfig to the collection.

Overload List

Adds a new IConfig to the collection.

public void Add(IConfig);

Adds a new IConfig to the collection.

public IConfig Add(string);

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReaderProperties.html0000644000175000017500000001061410410343262024771 0ustar meebeymeebey IniReader Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Properties

The properties of the IniReader class are listed below. For a complete list of IniReader class members, see the IniReader Members topic.

Public Instance Properties

AcceptCommentAfterKeyGets or sets whether accept comments after keys.
AcceptNoAssignmentOperator Gets or sets whether to accept no assignment operator after a key.
CommentGets the comment text for the current INI line.
ConsumeAllKeyText Gets or sets whether or not all key text should be consumed. This means that even double quotes (") and commments (;) will be consumed from keys.
IgnoreComments Gets or sets whether comments should be collected while parsing.
LineContinuationGets or sets whether to accept line continuations.
LineNumberGets the current line number.
LinePositionGets the current line position (column).
NameGets the name of the current INI line.
ReadStateGets the state of the reader.
TypeGets the type of the current INI line.
ValueGets the value of the current INI line.

See Also

IniReader Class | Nini.Ini Namespace | The System.Math class


nini-1.1.0+dfsg.2/Docs/Reference/html/intmethod.gif0000644000175000017500000000161010410343244021230 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@e˙ H° A‚ ôKXŔÁú)Tčß>|˙.îsř°cDŽJ\źÉ“@¦äqź@— ;Ś’"AŚ&¦ißź9ŠLhN ţËéňb̢8qҸ˛ęT;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSourceMembers.html0000644000175000017500000002261310410343260027172 0ustar meebeymeebey RegistryConfigSource Members
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource Members

RegistryConfigSource overview

Public Instance Constructors

RegistryConfigSource Constructor Initializes a new instance of the RegistryConfigSource class.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
DefaultKey Gets or sets the default RegistryKey to use if the AddConfig method is called.

Public Instance Methods

AddConfigOverloaded. Adds a config and will map itself to the DefaultKey property.
AddMappingOverloaded. Maps a single registry key to an IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.
ToString (inherited from Object)Returns a String that represents the current Object.

Public Instance Events

Reloaded (inherited from ConfigSourceBase) Occurs when the config source is reloaded.
Saved (inherited from ConfigSourceBase) Occurs when the config soucre is saved.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.AcceptNoAssignmentOperator.html0000644000175000017500000000377510410343262030166 0ustar meebeymeebey AcceptNoAssignmentOperator Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.AcceptNoAssignmentOperator Property

Gets or sets whether to accept no assignment operator after a key.

public bool AcceptNoAssignmentOperator {get; set;}

Remarks

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.AssignDelimiter.html0000644000175000017500000000370710410343262026055 0ustar meebeymeebey AssignDelimiter Property
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.AssignDelimiter Property

Assign delimiter to search for when parsing.

public char AssignDelimiter {get; set;}

Remarks

The default value is an equals sign ('=').

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.ContainsBoolean.html0000644000175000017500000000413610410343256026520 0ustar meebeymeebey AliasText.ContainsBoolean Method
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.ContainsBoolean Method 

Returns true if the Boolean value exists.

public bool ContainsBoolean(
   string key
);

Parameters

key
Alias key.

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetFloat_overload_2.html0000644000175000017500000000507510410343256027370 0ustar meebeymeebey ConfigBase.GetFloat Method (String, Single)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetFloat Method (String, Single)

Returns a float key value.

public float GetFloat(
   string key,
   float defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Implements

IConfig.GetFloat

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetFloat Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetInt_overload_4.html0000644000175000017500000000551310410343256027054 0ustar meebeymeebey ConfigBase.GetInt Method (String, Int32, Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetInt Method (String, Int32, Boolean)

Returns an integer key value from an alias.

public int GetInt(
   string key,
   int defaultValue,
   bool fromAlias
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.
fromAlias
If set to true then this returns the alias configuration value.

Implements

IConfig.GetInt

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceConstructor.html0000644000175000017500000000476210410343260027517 0ustar meebeymeebey DotNetConfigSource Constructor
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Constructor

Creates a new instance of the XML configuration source.

Overload List

Constructor. Loads an empty .NET config source.

public DotNetConfigSource();

Creates a new instance of the XML configuration source.

public DotNetConfigSource(string);

Creates a new instance of the XML configuration source.

public DotNetConfigSource(string[]);

Creates a new instance of the XML configuration source.

public DotNetConfigSource(XmlReader);

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.Add.html0000644000175000017500000000405010410343262025616 0ustar meebeymeebey IniSectionCollection.Add Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.Add Method 

Adds a new section to the collection.

public void Add(
   IniSection section
);

Parameters

section
The section to add.

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Item1.html0000644000175000017500000000401010410343264024441 0ustar meebeymeebey Item Property (Int32)
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Item Property (Int32)

Returns the object at the given index.

public object this[
   int index
] {get; set;}

See Also

OrderedList Class | Nini.Util Namespace | OrderedList.Item Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.ArgvParser.html0000644000175000017500000000445210410343264023331 0ustar meebeymeebey ArgvParser Class
Nini Library API Reference - http://nini.sourceforge.net/

ArgvParser Class

Class for parsing command line options

For a list of all members of this type, see ArgvParser Members.

System.Object
   Nini.Util.ArgvParser

public class ArgvParser

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Util

Assembly: Nini (in Nini.dll)

See Also

ArgvParser Members | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.RemoveAt.html0000644000175000017500000000411210410343264025207 0ustar meebeymeebey OrderedList.RemoveAt Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.RemoveAt Method 

Removes a key at the given index.

public void RemoveAt(
   int index
);

Parameters

index
The index from which to remove the key.

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBaseMembers.html0000644000175000017500000002054310410343260026234 0ustar meebeymeebey ConfigSourceBase Members
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase Members

ConfigSourceBase overview

Public Instance Constructors

ConfigSourceBase Constructor Initializes a new instance of the ConfigSourceBase class.

Public Instance Properties

Alias Gets the global AliasText for all IConfigs in this source.
AutoSave Gets or sets whether the source will be automatically saved.
ConfigsReturns the collection of IConfig objects.

Public Instance Methods

AddConfig Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues Expands all key values.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Merge Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.
ToString (inherited from Object)Returns a String that represents the current Object.

Public Instance Events

Reloaded Occurs when the config source is reloaded.
Saved Occurs when the config soucre is saved.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded 
OnSaved 

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.ToString.html0000644000175000017500000000366510410343260026344 0ustar meebeymeebey IniConfigSource.ToString Method
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.ToString Method 

Returns all characters in the document.

public override string ToString();

Remarks

It returns the INI string of the document.

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.html0000644000175000017500000001006310410343262021051 0ustar meebeymeebey Nini.Ini
Nini Library API Reference - http://nini.sourceforge.net/

Nini.Ini Namespace

Namespace hierarchy

Classes

Class Description
IniDocument High level INI document access class.
IniException Returns information about the last INI exception.
IniItem INI item class.
IniReader Fast forward only INI parser class.
IniSection INI section class.
IniSectionCollection A collection of section objects.
IniWriter INI writer class.

Enumerations

Enumeration Description
IniFileType Represents a type of INI file.
IniReadState The state of the reader.
IniType The INI line type.
IniWriteState The state of the writer.

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Load_overload_1.html0000644000175000017500000000506710410343260030241 0ustar meebeymeebey DotNetConfigSource.Load Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Load Method (String)

Loads a new instance of the XML configuration source.

public void Load(
   string path
);

Parameters

path
Path to the configuration file.

Remarks

Use this if you either know where the configuration file is located. You can do this with the Page.MapPath method for web.config files.

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.ArgvParserMembers.html0000644000175000017500000001254010410343264024641 0ustar meebeymeebey ArgvParser Members
Nini Library API Reference - http://nini.sourceforge.net/

ArgvParser Members

ArgvParser overview

Public Instance Constructors

ArgvParser Overloaded. Initializes a new instance of the ArgvParser class.

Public Instance Properties

Item Returns the value of the command line switch.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

ArgvParser Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.Configs.html0000644000175000017500000000372310410343260026311 0ustar meebeymeebey Configs Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.Configs Property

Returns the collection of IConfig objects.

public ConfigCollection Configs {get;}

Implements

IConfigSource.Configs

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.KeySet.html0000644000175000017500000000554610410343260024267 0ustar meebeymeebey IConfig.KeySet Event
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.KeySet Event

Occurs when a key is set.

event ConfigKeyEventHandler KeySet;

Event Data

The event handler receives an argument of type ConfigKeyEventArgs containing data related to this event. The following ConfigKeyEventArgs properties provide information specific to this event.

Property Description
KeyName  
KeyValue  

Remarks

This event occurs when the Set method is called.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSourceMethods.html0000644000175000017500000001574510410343262027215 0ustar meebeymeebey RegistryConfigSource Methods
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource Methods

The methods of the RegistryConfigSource class are listed below. For a complete list of RegistryConfigSource class members, see the RegistryConfigSource Members topic.

Public Instance Methods

AddConfigOverloaded. Adds a config and will map itself to the DefaultKey property.
AddMappingOverloaded. Maps a single registry key to an IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Item2.html0000644000175000017500000000377510410343260025750 0ustar meebeymeebey Item Property (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Item Property (String)

Returns the IConfig by name.

public IConfig this[
   string configName
] {get;}

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.Item Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollectionProperties.html0000644000175000017500000000533210410343262027210 0ustar meebeymeebey IniSectionCollection Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection Properties

The properties of the IniSectionCollection class are listed below. For a complete list of IniSectionCollection class members, see the IniSectionCollection Members topic.

Public Instance Properties

CountReturns the number of sections in the collection.
IsSynchronized Returns true if the collection is synchronized. This always returns false.
ItemOverloaded. Returns the section at the specified index.
SyncRootReturns the synchronization object.

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.html0000644000175000017500000000566610410343260024732 0ustar meebeymeebey ConfigSourceBase Class
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase Class

Container for IConfig objects.

For a list of all members of this type, see ConfigSourceBase Members.

System.Object
   Nini.Config.ConfigSourceBase
      Nini.Config.ArgvConfigSource
      Nini.Config.DotNetConfigSource
      Nini.Config.IniConfigSource
      Nini.Config.RegistryConfigSource
      Nini.Config.XmlConfigSource

public abstract class ConfigSourceBase : IConfigSource

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

TODO.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

ConfigSourceBase Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.IsFixedSize.html0000644000175000017500000000412310410343264025655 0ustar meebeymeebey IsFixedSize Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.IsFixedSize Property

Returns true if the collection is of a fixed size. This value is always false.

public bool IsFixedSize {get;}

Implements

IDictionary.IsFixedSize

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/intevent.gif0000644000175000017500000000156710410343244021104 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@T˙ H° ÁöípĐ`Â…ńáű'‘"ÆBlŔĂ‹÷ýŰ×q#AŹ(QbĚrĄĆ‹ _ÂŚ©¦Ä›=šŹäČžN9ňßĚ•+;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Remove.html0000644000175000017500000000401710410343262024352 0ustar meebeymeebey IniSection.Remove Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Remove Method 

Removes the supplied key.

public void Remove(
   string key
);

Parameters

key
Key name.

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.CopyTo_overload_2.html0000644000175000017500000000472310410343262030466 0ustar meebeymeebey IniSectionCollection.CopyTo Method (IniSection[], Int32)
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.CopyTo Method (IniSection[], Int32)

Copies the collection to a strongly-typed array.

public void CopyTo(
   IniSection[] array,
   int index
);

Parameters

array
The IniSection array to copy the results.
index
Index of the array to start copying.

See Also

IniSectionCollection Class | Nini.Ini Namespace | IniSectionCollection.CopyTo Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.Merge.html0000644000175000017500000000570510410343260025762 0ustar meebeymeebey ConfigSourceBase.Merge Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.Merge Method 

Merges all IConfigs from another IConfigSource into the Configs collection.

public void Merge(
   IConfigSource source
);

Parameters

source
The IConfigSource to merge.

Implements

IConfigSource.Merge

Remarks

TODO.

Exceptions

Exception Type Condition
Exception If the IConfigSource has already been merged. If the IConfigSource is this. If an IConfig of the same name already exists.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListMethods.html0000644000175000017500000001401710410343264025017 0ustar meebeymeebey OrderedList Methods
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList Methods

The methods of the OrderedList class are listed below. For a complete list of OrderedList class members, see the OrderedList Members topic.

Public Instance Methods

AddAdds a new obctje to the collection.
ClearClears all object from the collection.
ContainsReturns true if the key exists in the collection.
CopyToOverloaded. Copies the collection to an array.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetEnumeratorReturns the enumerator object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Insert Inserts an object into the collection based on an index.
RemoveRemoves an item from the collection by key name.
RemoveAtRemoves a key at the given index.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.RemoveAt.html0000644000175000017500000000444410410343260026504 0ustar meebeymeebey ConfigCollection.RemoveAt Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.RemoveAt Method 

Removes an IConfig from the index.

public void RemoveAt(
   int index
);

Parameters

index
The index of the IConfig.

Implements

IList.RemoveAt

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Remove_overload_2.html0000644000175000017500000000462610410343260030335 0ustar meebeymeebey ConfigCollection.Remove Method (Object)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Remove Method (Object)

Removes an IConfig from the collection.

public void Remove(
   object config
);

Parameters

config
The IConfig to remove.

Implements

IList.Remove

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.Remove Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Remove_overload_1.html0000644000175000017500000000424710410343260030333 0ustar meebeymeebey ConfigCollection.Remove Method (IConfig)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Remove Method (IConfig)

Removes an IConfig from the collection.

public void Remove(
   IConfig config
);

Parameters

config
The IConfig to remove.

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.Remove Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/treenodeminus.gif0000644000175000017500000000007010410343264022117 0ustar meebeymeebeyGIF89a ‘ţţţ‚‚‚, ŚŹ  Ćë^ @X;e–ńˇ;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.ExpandKeyValues.html0000644000175000017500000000632110410343260027766 0ustar meebeymeebey ConfigSourceBase.ExpandKeyValues Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.ExpandKeyValues Method 

Expands all key values.

public void ExpandKeyValues();

Implements

IConfigSource.ExpandKeyValues

Remarks

Calling this method expands all key values with the values of other keys. See the example below for more information.

Example

In many cases you will find that your key values are dependent on the values of other keys. For instance you have a root path configuration value and several values for files that use this path like in this example:

[File Path]
RootPath = C:\Program Files\My Program
Logging = MyApp.log
WebPage = index.html
                
Without Nini if you wanted to combine the value of "RootPath" with "Logging" and "WebPage" then you would have to perform ugly string concatenations to get "C:\Program Files\My Program\index.html". In Nini you do not need to do this:
[File Path]
RootPath = C:\Program Files\My Program
Logging = ${RootPath}\MyApp.log
WebPage = ${RootPath}\index.html
                
This can save you a lot of trouble concatenating them yourself and make your code a lot cleaner. If you want to grab a value from a different section you can do the same above but add the section name followed by a bar ("|") like so: ${section|key}.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/protevent.gif0000644000175000017500000000160310410343244021265 0ustar meebeymeebeyGIF89a÷˙˙˙˙˙€€ ˙˙˙˙˙˙ ĎĎĎČČČŔŔŔ€€€<<< ˙˙˙!ů,@`H° @@xĐŔB(Ŕđ E#N|q:0P@AH„#+t€@eĆŚpYpäÉ—6)V<ŕŕ@Í›* aĘš $0JÓâŇ—@ ;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollectionMembers.html0000644000175000017500000001570610410343262026454 0ustar meebeymeebey IniSectionCollection Members
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection Members

IniSectionCollection overview

Public Instance Constructors

IniSectionCollection Constructor Initializes a new instance of the IniSectionCollection class.

Public Instance Properties

CountReturns the number of sections in the collection.
IsSynchronized Returns true if the collection is synchronized. This always returns false.
ItemOverloaded. Returns the section at the specified index.
SyncRootReturns the synchronization object.

Public Instance Methods

AddAdds a new section to the collection.
CopyToOverloaded. Copies the collection to an array.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetEnumeratorReturns the enumerator object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
RemoveRemoves a section from the collection.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/NiniReference.log0000644000175000017500000000056310410343300021764 0ustar meebeymeebeyMicrosoft HTML Help Compiler 4.74.8702 Compiling c:\dev\Nini\Nini\Docs\Reference\html\ndoc_msdn_temp\NiniReference.chm Compile time: 0 minutes, 10 seconds 474 Topics 3,168 Local links 3 Internet links 8 Graphics Created c:\dev\Nini\Nini\Docs\Reference\html\ndoc_msdn_temp\NiniReference.chm, 208,410 bytes Compression decreased file by 1,288,294 bytes. nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.html0000644000175000017500000001423610410343256021550 0ustar meebeymeebey Nini.Config
Nini Library API Reference - http://nini.sourceforge.net/

Nini.Config Namespace

Namespace hierarchy

Classes

Class Description
AliasText Class for defining alias text values.
ArgvConfigSource Configuration class for loading command line arguments.
ConfigBase Configuration data access interface.
ConfigCollection A collection of IConfig objects.
ConfigEventArgs  
ConfigKeyEventArgs  
ConfigSourceBase Container for IConfig objects.
DotNetConfigSource Represents a Microsoft XML .NET configuration file.
IniConfig IConfig class for IniConfigSource sections.
IniConfigSource Class for loading an INI file.
RegistryConfigSource Class for loading Windows Registry data.
XmlConfigSource Class for configuring an XML source.

Interfaces

Interface Description
IConfig Configuration data access interface.
IConfigSource Container for IConfig objects.

Delegates

Delegate Description
ConfigEventHandler  
ConfigKeyEventHandler  

Enumerations

Enumeration Description
RegistryRecurse Enumeration of Registry recursion types.

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceConstructor4.html0000644000175000017500000000353210410343260027575 0ustar meebeymeebey DotNetConfigSource Constructor (XmlReader)
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Constructor (XmlReader)

Creates a new instance of the XML configuration source.

public DotNetConfigSource(
   XmlReader reader
);

Parameters

reader
The XML reader configuration document.

Remarks

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Insert.html0000644000175000017500000000501410410343260026220 0ustar meebeymeebey ConfigCollection.Insert Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Insert Method 

Inserts a new IConfig to the collection.

public void Insert(
   int index,
   object config
);

Parameters

index
The index of the collection to insert the IConfig.
config
The IConfig to insert.

Implements

IList.Insert

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/protfield.gif0000644000175000017500000000162210410343244021230 0ustar meebeymeebeyGIF89a÷˙˙˙˙˙€€ ˙˙˙˙˙˙ ĎĎĎČČČŔŔŔ€€€<<< ˙˙˙!ů,@oH° @@¸€€  48°áL ŕ ŔFŠ +X2Ŕ2@čŔ@ ”řń ‚š%)’Ěi’@Ćť:}¦°ń€3 „(‘cB ĐtŕŃ >âäu«Á<;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetInt_overloads.html0000644000175000017500000000413310410343256027011 0ustar meebeymeebey GetInt Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetInt Method

Returns an integer key value.

Overload List

Returns an integer key value.

public int GetInt(string);

Returns an integer key value from an alias.

public int GetInt(string,bool);

Returns an integer key value.

public int GetInt(string,int);

Returns an integer key value from an alias.

public int GetInt(string,int,bool);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceConstructor2.html0000644000175000017500000000334610410343260027576 0ustar meebeymeebey DotNetConfigSource Constructor ()
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Constructor ()

Constructor. Loads an empty .NET config source.

public DotNetConfigSource();

Remarks

This constructor is useful if you want to create a .NET config source programmatically. You can then call one of the Save methods to save it to a file or object.

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/puboperator.gif0000644000175000017500000000154010410343244021601 0ustar meebeymeebeyGIF89a÷˙˙˙ ˙˙˙!ů,@=H° Á T@€Ă‡>tŘPb N¤h±bF† ;fô(ˇÂ7Şä8˛%IĘt)0 ;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetBoolean_overload_1.html0000644000175000017500000000566510410343260027217 0ustar meebeymeebey IConfig.GetBoolean Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetBoolean Method (String)

Returns a boolean key value.

bool GetBoolean(
   string key
);

Parameters

key
Configuration key.

Remarks

In order to get boolean values you will need to set the Alias property correctly. See the Nini Manual for more information.

Exceptions

Exception Type Condition
Exception No key was found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetBoolean Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Save_overload_2.html0000644000175000017500000000563010410343260027577 0ustar meebeymeebey IniConfigSource.Save Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Save Method (String)

Saves all configuration values to a path.

public void Save(
   string path
);

Parameters

path
Path to save the file.

Remarks

This sets the SavePath to

path
.

Exceptions

Exception Type Condition
Exception An error has occurred.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.CopyTo_overload_1.html0000644000175000017500000000523410410343262030463 0ustar meebeymeebey IniSectionCollection.CopyTo Method (Array, Int32)
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.CopyTo Method (Array, Int32)

Copies the collection to an array.

public void CopyTo(
   Array array,
   int index
);

Parameters

array
Array to copy the results.
index
Index of the array to start copying.

Implements

ICollection.CopyTo

See Also

IniSectionCollection Class | Nini.Ini Namespace | IniSectionCollection.CopyTo Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetString_overloads.html0000644000175000017500000000327010410343256027526 0ustar meebeymeebey GetString Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetString Method

Returns a string key value.

Overload List

Returns a string key value.

public string GetString(string);

Returns a string key value.

public string GetString(string,string);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.ArgvParser.Item.html0000644000175000017500000000405410410343264024224 0ustar meebeymeebey Item Property
Nini Library API Reference - http://nini.sourceforge.net/

ArgvParser.Item Property

Returns the value of the command line switch.

public string this[
   string param
] {get;}

Remarks

This returns

null
if the option was not parsed.

See Also

ArgvParser Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.FileType.html0000644000175000017500000000351310410343262025010 0ustar meebeymeebey FileType Property
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.FileType Property

Gets or sets the INI file type

public IniFileType FileType {get; set;}

Remarks

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.Save.html0000644000175000017500000000517510410343260025622 0ustar meebeymeebey ConfigSourceBase.Save Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.Save Method 

Saves all configuration values.

public virtual void Save();

Implements

IConfigSource.Save

Remarks

Look at the class that implements this interface to determine when this can be called.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigEventArgsProperties.html0000644000175000017500000000376410410343260026647 0ustar meebeymeebey ConfigEventArgs Properties
Nini Library API Reference - http://nini.sourceforge.net/

ConfigEventArgs Properties

The properties of the ConfigEventArgs class are listed below. For a complete list of ConfigEventArgs class members, see the ConfigEventArgs Members topic.

Public Instance Properties

Config 

See Also

ConfigEventArgs Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigProperties.html0000644000175000017500000000466210410343260025137 0ustar meebeymeebey IConfig Properties
Nini Library API Reference - http://nini.sourceforge.net/

IConfig Properties

The properties of the IConfig interface are listed below. For a complete list of IConfig interface members, see the IConfig Members topic.

Public Instance Properties

Alias Gets the AliasText for this instance.
ConfigSourceReturns the parent IConfigSource.
Name Gets or sets the IConfig name. If set then it renames this config with the parent source.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniException.GetObjectData.html0000644000175000017500000000531110410343262026105 0ustar meebeymeebey IniException.GetObjectData Method
Nini Library API Reference - http://nini.sourceforge.net/

IniException.GetObjectData Method 

ISerializable GetObjectData method.

public override void GetObjectData(
   SerializationInfo info,
   StreamingContext context
);

Parameters

info
The serialized object data.
context
The context of the source or destination.

Implements

ISerializable.GetObjectData

Remarks

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasTextMethods.html0000644000175000017500000001273310410343256024771 0ustar meebeymeebey AliasText Methods
Nini Library API Reference - http://nini.sourceforge.net/

AliasText Methods

The methods of the AliasText class are listed below. For a complete list of AliasText class members, see the AliasText Members topic.

Public Instance Methods

AddAliasOverloaded. Adds a new integer alias.
ContainsBoolean Returns true if the Boolean value exists.
ContainsInt Returns true if the integer value exists.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetBooleanReturns the alias value for a specified key.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetIntReturns the int value of a config value.
GetType (inherited from Object)Gets the Type of the current instance.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.html0000644000175000017500000000634310410343262024613 0ustar meebeymeebey XmlConfigSource Class
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Class

Class for configuring an XML source.

For a list of all members of this type, see XmlConfigSource Members.

System.Object
   Nini.Config.ConfigSourceBase
      Nini.Config.XmlConfigSource

public class XmlConfigSource : ConfigSourceBase

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

Provides users with the ability to load more than one XML configuration file. Unlike DotNetConfigSource which forces users to use on file and have the name the same as the application.

Example

The following is an example of an XML document for this type:

<Nini>
    <Section Name="MySection">
        <Key Name="SomeName" Value="Some Value" />
        <Key Name="SomeInteger" Value="5652" />
    </Section>

    <Section Name="AnotherSection">
        <Key Name="Another Name" Value="Another Value" />
    </Section>
</Nini>
            

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

XmlConfigSource Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetBoolean_overload_1.html0000644000175000017500000000613510410343256027677 0ustar meebeymeebey ConfigBase.GetBoolean Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetBoolean Method (String)

Returns a boolean key value.

public bool GetBoolean(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.GetBoolean

Remarks

In order to get boolean values you will need to set the Alias property correctly. See the Nini Manual for more information.

Exceptions

Exception Type Condition
Exception No key was found.

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetBoolean Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.Merge.html0000644000175000017500000000545710410343260025304 0ustar meebeymeebey IConfigSource.Merge Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.Merge Method 

Merges all IConfigs from another IConfigSource into the Configs collection.

void Merge(
   IConfigSource source
);

Parameters

source
The IConfigSource to merge.

Remarks

TODO.

Exceptions

Exception Type Condition
Exception If the IConfigSource has already been merged. If the IConfigSource is this. If an IConfig of the same name already exists.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniFileType.html0000644000175000017500000000703410410343262023235 0ustar meebeymeebey IniFileType Enumeration
Nini Library API Reference - http://nini.sourceforge.net/

IniFileType Enumeration

Represents a type of INI file.

public enum IniFileType

Remarks

INI files are not officially a standard. Thus there are several different types of INI files floating around.

Members

Member Name Description
StandardStandard INI type (Windows)
PythonStylePython language INI type
SambaStyleSamba program INI type.
MysqlStyleMySQL program INI type.
WindowsStyleWindows INI type.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItemConstructor.html0000644000175000017500000000447010410343262024661 0ustar meebeymeebey IniItem Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniItem Constructor 

Creates a new item.

protected internal IniItem(
   string name,
   string value,
   IniType type,
   string comment
);

Parameters

name
Item name.
value
Item value.
type
Item type.
comment
Item comment.

See Also

IniItem Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.Saved.html0000644000175000017500000000375210410343260025303 0ustar meebeymeebey IConfigSource.Saved Event
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.Saved Event

Occurs when the config soucre is saved.

event EventHandler Saved;

Remarks

This event occurs when a Save method is called.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriterConstructor.html0000644000175000017500000000426110410343262025235 0ustar meebeymeebey IniWriter Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Constructor

Initializes a new instance of the class with the supplied file.

Overload List

Initializes a new instance of the class using a Stream.

public IniWriter(Stream);

Initializes a new instance of the class using a TextWriter.

public IniWriter(TextWriter);

Initializes a new instance of the class with the supplied file.

public IniWriter(string);

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.GetEnumerator.html0000644000175000017500000000412310410343260027535 0ustar meebeymeebey ConfigCollection.GetEnumerator Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.GetEnumerator Method 

Returns the enumerator object.

public IEnumerator GetEnumerator();

Implements

IEnumerable.GetEnumerator

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.IsSynchronized.html0000644000175000017500000000420610410343260027731 0ustar meebeymeebey IsSynchronized Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.IsSynchronized Property

Returns true if the collection is synchronized. This always returns false.

public bool IsSynchronized {get;}

Implements

ICollection.IsSynchronized

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Load_overloads.html0000644000175000017500000000405310410343260027520 0ustar meebeymeebey Load Method
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Load Method

Loads an INI file source.

Overload List

Loads an INI file source.

public void Load(IniDocument);

Loads an INI file source.

public void Load(Stream);

Loads an INI file source.

public void Load(TextReader);

Loads an INI file source.

public void Load(string);

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.CopyTo_overload_1.html0000644000175000017500000000521010410343260030302 0ustar meebeymeebey ConfigCollection.CopyTo Method (Array, Int32)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.CopyTo Method (Array, Int32)

Copies the collection to an array.

public void CopyTo(
   Array array,
   int index
);

Parameters

array
Array to copy the results.
index
Index of the array to start copying.

Implements

ICollection.CopyTo

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.CopyTo Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBaseProperties.html0000644000175000017500000000501410410343260026772 0ustar meebeymeebey ConfigSourceBase Properties
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase Properties

The properties of the ConfigSourceBase class are listed below. For a complete list of ConfigSourceBase class members, see the ConfigSourceBase Members topic.

Public Instance Properties

Alias Gets the global AliasText for all IConfigs in this source.
AutoSave Gets or sets whether the source will be automatically saved.
ConfigsReturns the collection of IConfig objects.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.AddAlias_overloads.html0000644000175000017500000000361210410343256027160 0ustar meebeymeebey AddAlias Method
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.AddAlias Method

Adds a new Boolean alias.

Overload List

Adds a new Boolean alias.

public void AddAlias(string,bool);

Adds a new alias using the items in an enumeration.

public void AddAlias(string,Enum);

Adds a new integer alias.

public void AddAlias(string,string,int);

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.html0000644000175000017500000000445510410343256023447 0ustar meebeymeebey AliasText Class
Nini Library API Reference - http://nini.sourceforge.net/

AliasText Class

Class for defining alias text values.

For a list of all members of this type, see AliasText Members.

System.Object
   Nini.Config.AliasText

public class AliasText

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

AliasText Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionConstructor.html0000644000175000017500000000361410410343262025366 0ustar meebeymeebey IniSection Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniSection Constructor

Creates a new section with a comment.

Overload List

Creates a new section.

public IniSection(string);

Creates a new section with a comment.

public IniSection(string,string);

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Set_overload_1.html0000644000175000017500000000504310410343262025763 0ustar meebeymeebey IniSection.Set Method (String, String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Set Method (String, String, String)

Sets a key value and a comment.

public void Set(
   string key,
   string value,
   string comment
);

Parameters

key
Key name.
value
Key value.
comment
Comment text.

See Also

IniSection Class | Nini.Ini Namespace | IniSection.Set Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetInt_overload_2.html0000644000175000017500000000511410410343256027047 0ustar meebeymeebey ConfigBase.GetInt Method (String, Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetInt Method (String, Boolean)

Returns an integer key value from an alias.

public int GetInt(
   string key,
   bool fromAlias
);

Parameters

key
Configuration key.
fromAlias
If set to true then this returns the alias configuration value.

Implements

IConfig.GetInt

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetBoolean_overload_2.html0000644000175000017500000000521510410343260027207 0ustar meebeymeebey IConfig.GetBoolean Method (String, Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetBoolean Method (String, Boolean)

Returns a string key value.

bool GetBoolean(
   string key,
   bool defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Remarks

In order to get boolean values you will need to set the Alias property correctly. See the Nini Manual for more information.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetBoolean Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.CaseSensitive.html0000644000175000017500000000363210410343260027332 0ustar meebeymeebey CaseSensitive Property
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.CaseSensitive Property

Gets or sets whether key values will be accessed ignoring case.

public bool CaseSensitive {get; set;}

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionConstructor1.html0000644000175000017500000000261610410343262026002 0ustar meebeymeebey IniException Constructor ()
Nini Library API Reference - http://nini.sourceforge.net/

IniException Constructor ()

Initializes an INI exception instance

public IniException();

See Also

IniException Class | Nini.Ini Namespace | IniException Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.AddConfig.html0000644000175000017500000000555510410343260026062 0ustar meebeymeebey IConfigSource.AddConfig Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.AddConfig Method 

Adds a new IConfig.

IConfig AddConfig(
   string name
);

Parameters

name
The name of the new IConfig.

Return Value

The new IConfig.

Remarks

This creates a new IConfig and adds it to the Configs collection.

Exceptions

Exception Type Condition
Exception If an IConfig of the same name already exists.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.AddMapping_overloads.html0000644000175000017500000000346710410343262031750 0ustar meebeymeebey AddMapping Method
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.AddMapping Method

Maps a single registry key to an IConfig.

Overload List

Maps a single registry key to an IConfig.

public void AddMapping(RegistryKey,string);

Maps a single registry key to an IConfig.

public void AddMapping(RegistryKey,string,RegistryRecurse);

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigKeyEventHandler.html0000644000175000017500000000404110410343260025711 0ustar meebeymeebey ConfigKeyEventHandler Delegate
Nini Library API Reference - http://nini.sourceforge.net/

ConfigKeyEventHandler Delegate

public delegate void ConfigKeyEventHandler(
   object sender,
   ConfigKeyEventArgs e
);

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.AutoSave.html0000644000175000017500000000445510410343260026453 0ustar meebeymeebey AutoSave Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.AutoSave Property

Gets or sets whether the source will be automatically saved.

public bool AutoSave {get; set;}

Implements

IConfigSource.AutoSave

Remarks

This save process occurs each time the the

IConfig.Set
method is called. Take a look at the
Save
method of each configuration source to determine when this method can be activated.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.CopyTo_overload_2.html0000644000175000017500000000466310410343260030316 0ustar meebeymeebey ConfigCollection.CopyTo Method (IConfig[], Int32)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.CopyTo Method (IConfig[], Int32)

Copies the collection to a strongly-typed array.

public void CopyTo(
   IConfig[] array,
   int index
);

Parameters

array
The IConfig array to copy the results.
index
Index of the array to start copying.

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.CopyTo Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionConstructor.html0000644000175000017500000000453610410343262025724 0ustar meebeymeebey IniException Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniException Constructor

Initializes an INI exception instance

Overload List

Initializes an INI exception instance

public IniException();

Initializes an INI exception instance

protected IniException(SerializationInfo,StreamingContext);

Initializes an INI exception instance

public IniException(string);

Initializes an INI exception instance

public IniException(string,Exception);

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Load_overload_1.html0000644000175000017500000000423510410343262026263 0ustar meebeymeebey IniDocument.Load Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Load Method (String)

Loads the instance with the supplied file.

public void Load(
   string filePath
);

Parameters

filePath
The path to the INI file.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.html0000644000175000017500000000500410410343260024561 0ustar meebeymeebey IniConfigSource Class
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Class

Class for loading an INI file.

For a list of all members of this type, see IniConfigSource Members.

System.Object
   Nini.Config.ConfigSourceBase
      Nini.Config.IniConfigSource

public class IniConfigSource : ConfigSourceBase

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

IniConfigSource Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.GetItem.html0000644000175000017500000000376310410343262024462 0ustar meebeymeebey IniSection.GetItem Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.GetItem Method 

Returns the IniItem at the given index.

public IniItem GetItem(
   int index
);

Parameters

index
Key index.

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniException.LineNumber.html0000644000175000017500000000353410410343262025512 0ustar meebeymeebey LineNumber Property
Nini Library API Reference - http://nini.sourceforge.net/

IniException.LineNumber Property

Returns the line number where the exception occurred.

public int LineNumber {get;}

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.SavePath.html0000644000175000017500000000423510410343262026323 0ustar meebeymeebey SavePath Property
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.SavePath Property

The path where the document will be saved.

public string SavePath {get;}

Remarks

This path is set when the class is loaded with a path or saved with a path (using the Save (string) method). Otherwise the value will be

null
. If it is
null
then calling save will cause an exception to be thrown.

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteEmpty_overload_2.html0000644000175000017500000000531310410343264027214 0ustar meebeymeebey IniWriter.WriteEmpty Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteEmpty Method (String)

Writes an empty line with a comment.

public void WriteEmpty(
   string comment
);

Parameters

comment
Comment text.

Exceptions

Exception Type Condition
IniException A WriteState error occurred or the document was closed.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter.WriteEmpty Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSourceProperties.html0000644000175000017500000000564610410343260027743 0ustar meebeymeebey RegistryConfigSource Properties
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource Properties

The properties of the RegistryConfigSource class are listed below. For a complete list of RegistryConfigSource class members, see the RegistryConfigSource Members topic.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
DefaultKey Gets or sets the default RegistryKey to use if the AddConfig method is called.

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.GetCommentDelimiters.html0000644000175000017500000000367010410343262027003 0ustar meebeymeebey IniReader.GetCommentDelimiters Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.GetCommentDelimiters Method 

Returns the comment delimiters.

public char[] GetCommentDelimiters();

Remarks

The default value is a semicolon (';').

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.html0000644000175000017500000000407710410343264021261 0ustar meebeymeebey Nini.Util
Nini Library API Reference - http://nini.sourceforge.net/

Nini.Util Namespace

Namespace hierarchy

Classes

Class Description
ArgvParser Class for parsing command line options
OrderedList A collection of ordered objects.
OrderedListEnumerator Enumerator class for OrderedLists.

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSourceConstructor3.html0000644000175000017500000000352210410343262027140 0ustar meebeymeebey XmlConfigSource Constructor (XmlReader)
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Constructor (XmlReader)

Creates a new instance of the XML configuration source.

public XmlConfigSource(
   XmlReader reader
);

Parameters

reader
An XmlReader instance.

Remarks

This instance type is read only.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItem.Value.html0000644000175000017500000000340410410343262023462 0ustar meebeymeebey Value Property
Nini Library API Reference - http://nini.sourceforge.net/

IniItem.Value Property

Item value.

public string Value {get; set;}

See Also

IniItem Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Read.html0000644000175000017500000000460410410343262023570 0ustar meebeymeebey IniReader.Read Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Read Method 

Moves the reader to the next line.

public bool Read();

Return Value

true if the reader successfully read another line.

Exceptions

Exception Type Condition
IniException An error occurred while parsing.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Contains.html0000644000175000017500000000443310410343264025251 0ustar meebeymeebey OrderedList.Contains Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Contains Method 

Returns true if the key exists in the collection.

public bool Contains(
   object key
);

Parameters

key
The key to search for.

Implements

IDictionary.Contains

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/pubevent.gif0000644000175000017500000000154510410343244021074 0ustar meebeymeebeyGIF89a÷˙˙˙˙˙€€ ˙˙˙˙˙˙ ĎĎĎČČČŔŔŔ€€€<<< ˙˙˙!ů,@BH° Á pp°  6t ±áA2V4ř°@Š. I˛¤I„GZLř‘äŚC>Tą’ćÉ›;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Reload.html0000644000175000017500000000540410410343260025772 0ustar meebeymeebey IniConfigSource.Reload Method
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Reload Method 

Reloads all configuration values.

public override void Reload();

Implements

IConfigSource.Reload

Remarks

This can only be called if the document can be reloaded from it's source, such as if it was loaded from a file or from the Windows Registry. If other documents were merged (with Merge) then they will be lost.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetLong_overloads.html0000644000175000017500000000321510410343260026467 0ustar meebeymeebey GetLong Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetLong Method

Returns an long key value.

Overload List

Returns an long key value.

long GetLong(string);

Returns an integer key value.

long GetLong(string,long);

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReaderConstructor3.html0000644000175000017500000000325410410343262025247 0ustar meebeymeebey IniReader Constructor (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Constructor (Stream)

Initializes a new instance of the class using a Stream.

public IniReader(
   Stream stream
);

Parameters

stream
The Stream.

See Also

IniReader Class | Nini.Ini Namespace | IniReader Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetValues.html0000644000175000017500000000367310410343256025450 0ustar meebeymeebey ConfigBase.GetValues Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetValues Method 

Returns an Array of all key values.

public string[] GetValues();

Implements

IConfig.GetValues

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetFloat_overloads.html0000644000175000017500000000325410410343256027327 0ustar meebeymeebey GetFloat Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetFloat Method

Returns a float key value.

Overload List

Returns a float key value.

public float GetFloat(string);

Returns a float key value.

public float GetFloat(string,float);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Get_overloads.html0000644000175000017500000000323410410343256026337 0ustar meebeymeebey Get Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Get Method

Returns a string key value.

Overload List

Returns a string key value.

public virtual string Get(string);

Returns a string key value.

public string Get(string,string);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigMembers.html0000644000175000017500000001323310410343260024367 0ustar meebeymeebey IConfig Members
Nini Library API Reference - http://nini.sourceforge.net/

IConfig Members

IConfig overview

Public Instance Properties

Alias Gets the AliasText for this instance.
ConfigSourceReturns the parent IConfigSource.
Name Gets or sets the IConfig name. If set then it renames this config with the parent source.

Public Instance Methods

Contains Returns true if the configuration key is present.
GetOverloaded. Returns a string key value.
GetBooleanOverloaded. Returns a boolean key value.
GetDoubleOverloaded. Returns a double key value.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetFloatOverloaded. Returns a float key value.
GetIntOverloaded. Returns an integer key value.
GetKeysReturns an Array of the key strings.
GetLongOverloaded. Returns an long key value.
GetStringOverloaded. Returns a string key value.
GetValuesReturns an Array of all key values.
Remove Removes a configuration key.
Set Sets a key value.

Public Instance Events

KeyRemoved Occurs when a key is removed.
KeySet Occurs when a key is set.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListItem.html0000644000175000017500000000325210410343264024311 0ustar meebeymeebey Item Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Item Property

Returns the object at the given index.

Overload List

Returns the object at the given index.

public object this[int] {get; set;}

Returns the object at the given key.

public object this[object] {get; set;}

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReaderConstructor2.html0000644000175000017500000000330410410343262025242 0ustar meebeymeebey IniReader Constructor (TextReader)
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Constructor (TextReader)

Initializes a new instance of the class using a TextReader.

public IniReader(
   TextReader reader
);

Parameters

reader
The TextReader.

See Also

IniReader Class | Nini.Ini Namespace | IniReader Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Insert.html0000644000175000017500000000475110410343264024742 0ustar meebeymeebey OrderedList.Insert Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Insert Method 

Inserts an object into the collection based on an index.

public void Insert(
   int index,
   object key,
   object value
);

Parameters

index
Index in which to insert.
key
Key of the object.
value
Value of the object.

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.CopyTo_overloads.html0000644000175000017500000000336610410343262030432 0ustar meebeymeebey CopyTo Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.CopyTo Method

Copies the collection to a strongly-typed array.

Overload List

Copies the collection to a strongly-typed array.

public void CopyTo(IniSection[],int);

Copies the collection to an array.

public void CopyTo(Array,int);

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.Reload.html0000644000175000017500000000541110410343260026123 0ustar meebeymeebey ConfigSourceBase.Reload Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.Reload Method 

Reloads all configuration values.

public virtual void Reload();

Implements

IConfigSource.Reload

Remarks

This can only be called if the document can be reloaded from it's source, such as if it was loaded from a file or from the Windows Registry. If other documents were merged (with Merge) then they will be lost.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigConstructor.html0000644000175000017500000000370710410343260025656 0ustar meebeymeebey IniConfig Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig Constructor 

Constructor.

public IniConfig(
   string name,
   IConfigSource source
);

Parameters

name
Config name.
source
Config parent IConfigSource.

See Also

IniConfig Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetDouble_overload_1.html0000644000175000017500000000556210410343256027535 0ustar meebeymeebey ConfigBase.GetDouble Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetDouble Method (String)

Returns a double key value.

public double GetDouble(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.GetDouble

Exceptions

Exception Type Condition
Exception No key was found.

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetDouble Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Set_overloads.html0000644000175000017500000000401510410343262025724 0ustar meebeymeebey Set Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Set Method

Creates an empty line in the section.

Overload List

Creates an empty line in the section.

public void Set();

Sets a section comment.

public void Set(string);

Sets a key and value.

public void Set(string,string);

Sets a key value and a comment.

public void Set(string,string,string);

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Add.html0000644000175000017500000000467310410343264024171 0ustar meebeymeebey OrderedList.Add Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Add Method 

Adds a new obctje to the collection.

public void Add(
   object key,
   object value
);

Parameters

key
The key for the object.
value
The value of the object.

Implements

IDictionary.Add

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetLong_overload_2.html0000644000175000017500000000462110410343260026527 0ustar meebeymeebey IConfig.GetLong Method (String, Int64)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetLong Method (String, Int64)

Returns an integer key value.

long GetLong(
   string key,
   long defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetLong Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.html0000644000175000017500000000561510410343262022773 0ustar meebeymeebey IniWriter Class
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Class

INI writer class.

For a list of all members of this type, see IniWriter Members.

System.Object
   Nini.Ini.IniWriter

public class IniWriter : IDisposable

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Example

IniWriter writer = new IniWriter ("test.ini");

writer.WriteEmpty ("This is a comment");
writer.WriteSection ("My Section");
writer.Indentation = 2;
writer.WriteKey ("key 1", "value 1", "Comment 1");
writer.WriteKey ("key 2", "value 2");
writer.Close ();
            
The output of test.ini would be this:
; This is a comment
[My Section]
  key 1 = value 1 ; Comment 1
  key 2 = value 2
            

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

IniWriter Members | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor6.html0000644000175000017500000000360710410343262025630 0ustar meebeymeebey IniDocument Constructor (Stream, IniFileType)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor (Stream, IniFileType)

Initializes a new instance of the class using a Stream and the INI type.

public IniDocument(
   Stream stream,
   IniFileType type
);

Parameters

stream
The Stream.
type
The INI file type.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.html0000644000175000017500000000652410410343262023275 0ustar meebeymeebey IniDocument Class
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Class

High level INI document access class.

For a list of all members of this type, see IniDocument Members.

System.Object
   Nini.Ini.IniDocument

public class IniDocument

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Example

Here's an example of accessing the following document, test.ini.

; This is a comment
[My Section]
  key 1 = value 1 ; Comment 1
  key 2 = value 2
[Pets]
  dog = rover
  cat = muffy
            
Here is code for accessing it.
IniDocument doc = new IniDocument ("test.ini");
Console.WriteLine ("Key: " + doc.Get ("My Section", "key 1"));
Console.WriteLine ("Key: " + doc.Get ("Pets", "dog"));
doc.SetSection ("Movies");
doc.SetKey ("Movies", "horror", "Scream");
doc.SetKey ("Movies", "comedy", "Dumb and Dumber");
doc.RemoveSection ("My Section");
doc.RemoveKey ("Pets", "dog");

StringWriter writer = new StringWriter ();
doc.Save (writer);
Console.WriteLine ("New INI document:");
Console.WriteLine (writer.ToString ());
            
This prints out the following response:
Key: value 1
Key: rover
New INI document:
[Pets]
cat = muffy
[Movies]
horror = Scream
comedy = Dumb and Dumber
        

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

IniDocument Members | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.Reload.html0000644000175000017500000000544210410343262027067 0ustar meebeymeebey RegistryConfigSource.Reload Method
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.Reload Method 

Reloads all configuration values.

public override void Reload();

Implements

IConfigSource.Reload

Remarks

This can only be called if the document can be reloaded from it's source, such as if it was loaded from a file or from the Windows Registry. If other documents were merged (with Merge) then they will be lost.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.UtilHierarchy.html0000644000175000017500000000474410410343264023121 0ustar meebeymeebey Nini.UtilHierarchy
Nini Library API Reference - http://nini.sourceforge.net/

Nini.Util Hierarchy

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniException.LinePosition.html0000644000175000017500000000355210410343262026066 0ustar meebeymeebey LinePosition Property
Nini Library API Reference - http://nini.sourceforge.net/

IniException.LinePosition Property

Returns the line position where the exception occurred.

public int LinePosition {get;}

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.CopyTo_overload_2.html0000644000175000017500000000475210410343264027030 0ustar meebeymeebey OrderedList.CopyTo Method (DictionaryEntry[], Int32)
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.CopyTo Method (DictionaryEntry[], Int32)

Copies the collection to a strongly-typed array.

public void CopyTo(
   DictionaryEntry[] array,
   int index
);

Parameters

array
The DictionaryEntry array to copy the results.
index
Index of the array to start copying.

See Also

OrderedList Class | Nini.Util Namespace | OrderedList.CopyTo Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceMembers.html0000644000175000017500000002224110410343260026076 0ustar meebeymeebey IniConfigSource Members
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Members

IniConfigSource overview

Public Instance Constructors

IniConfigSource Overloaded. Initializes a new instance of the IniConfigSource class.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
CaseSensitive Gets or sets whether key values will be accessed ignoring case.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
SavePath The path where the document will be saved.

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads an INI file source.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
SaveOverloaded. Saves all configuration values.
ToString Returns all characters in the document.

Public Instance Events

Reloaded (inherited from ConfigSourceBase) Occurs when the config source is reloaded.
Saved (inherited from ConfigSourceBase) Occurs when the config soucre is saved.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Save_overload_2.html0000644000175000017500000000420210410343262026275 0ustar meebeymeebey IniDocument.Save Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Save Method (String)

Writes the INI data to a file.

public void Save(
   string filePath
);

Parameters

filePath
File path.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Save_overload_3.html0000644000175000017500000000420510410343262026301 0ustar meebeymeebey IniDocument.Save Method (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Save Method (Stream)

Writes the INI data to a Stream.

public void Save(
   Stream stream
);

Parameters

stream
Stream object

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriterMethods.html0000644000175000017500000001246510410343262024320 0ustar meebeymeebey IniWriter Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Methods

The methods of the IniWriter class are listed below. For a complete list of IniWriter class members, see the IniWriter Members topic.

Public Instance Methods

CloseCloses the current writer and frees the resources.
DisposeOverloaded. Cleans up all managed and unmanaged resources for the instance.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
FlushFlushes the current writer and frees the resources.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
ToStringReturns the string version of the current written text.
WriteEmptyOverloaded. Writes an empty line.
WriteKeyOverloaded. Writes a key to a section.
WriteSectionOverloaded. Writes an INI section.

Protected Instance Methods

DisposeOverloaded. Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.
Finalize Destructor.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.ExpandKeyValues.html0000644000175000017500000000604710410343260027311 0ustar meebeymeebey IConfigSource.ExpandKeyValues Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.ExpandKeyValues Method 

Expands all key values.

void ExpandKeyValues();

Remarks

Calling this method expands all key values with the values of other keys. See the example below for more information.

Example

In many cases you will find that your key values are dependent on the values of other keys. For instance you have a root path configuration value and several values for files that use this path like in this example:

[File Path]
RootPath = C:\Program Files\My Program
Logging = MyApp.log
WebPage = index.html
                
Without Nini if you wanted to combine the value of "RootPath" with "Logging" and "WebPage" then you would have to perform ugly string concatenations to get "C:\Program Files\My Program\index.html". In Nini you do not need to do this:
[File Path]
RootPath = C:\Program Files\My Program
Logging = ${RootPath}\MyApp.log
WebPage = ${RootPath}\index.html
                
This can save you a lot of trouble concatenating them yourself and make your code a lot cleaner. If you want to grab a value from a different section you can do the same above but add the section name followed by a bar ("|") like so: ${section|key}.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Add_overload_2.html0000644000175000017500000000422410410343260027562 0ustar meebeymeebey ConfigCollection.Add Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Add Method (String)

Adds a new IConfig to the collection.

public IConfig Add(
   string name
);

Parameters

name
The name of the IConfig to add.

See Also

ConfigCollection Class | Nini.Config Namespace | ConfigCollection.Add Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteSection_overload_2.html0000644000175000017500000000566710410343264027536 0ustar meebeymeebey IniWriter.WriteSection Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteSection Method (String, String)

Writes a section with a comment.

public void WriteSection(
   string section,
   string comment
);

Parameters

section
Section name.
comment
Comment text.

Exceptions

Exception Type Condition
IniException A WriteState error occurred or the document was closed.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter.WriteSection Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumeratorMembers.html0000644000175000017500000001371410410343264027053 0ustar meebeymeebey OrderedListEnumerator Members
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator Members

OrderedListEnumerator overview

Public Instance Properties

Current Returns the strongly-typed current object in the enumeration.
EntryReturns the current DictionaryEntry.
KeyReturns the current key.
ValueReturns the current value.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
MoveNext Moves the enumeration to the next set.
Reset Resets the enumerator back to the beginning.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

OrderedListEnumerator Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetInt_overload_3.html0000644000175000017500000000460710410343260026367 0ustar meebeymeebey IConfig.GetInt Method (String, Int32)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetInt Method (String, Int32)

Returns an integer key value.

int GetInt(
   string key,
   int defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetInt Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteKey_overload_1.html0000644000175000017500000000557610410343264026660 0ustar meebeymeebey IniWriter.WriteKey Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteKey Method (String, String)

Writes a key to a section.

public void WriteKey(
   string key,
   string value
);

Parameters

key
Key name.
value
Key value.

Exceptions

Exception Type Condition
IniException A WriteState error occurred or the document was closed.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter.WriteKey Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBaseFields.html0000644000175000017500000000365310410343256024677 0ustar meebeymeebey ConfigBase Fields
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase Fields

The fields of the ConfigBase class are listed below. For a complete list of ConfigBase class members, see the ConfigBase Members topic.

Protected Instance Fields

keys 

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Load_overload_3.html0000644000175000017500000000452310410343260027561 0ustar meebeymeebey IniConfigSource.Load Method (IniDocument)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Load Method (IniDocument)

Loads an INI file source.

public void Load(
   IniDocument document
);

Parameters

document
The IniDocument.

Remarks

This is a non-savable source unless you call one of the overloaded Save methods.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriterProperties.html0000644000175000017500000000570310410343262025046 0ustar meebeymeebey IniWriter Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Properties

The properties of the IniWriter class are listed below. For a complete list of IniWriter class members, see the IniWriter Members topic.

Public Instance Properties

AssignDelimiterAssign delimiter to search for when parsing.
BaseStreamReturns the writer base stream.
CommentDelimiterWhat type of comment type is used.
IndentationNumber of spaces in front of each line.
UseValueQuotesWhether or not quotes should surround each entry.
WriteStateGets the state of the reader.

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigKeyEventArgsProperties.html0000644000175000017500000000427210410343260027313 0ustar meebeymeebey ConfigKeyEventArgs Properties
Nini Library API Reference - http://nini.sourceforge.net/

ConfigKeyEventArgs Properties

The properties of the ConfigKeyEventArgs class are listed below. For a complete list of ConfigKeyEventArgs class members, see the ConfigKeyEventArgs Members topic.

Public Instance Properties

See Also

ConfigKeyEventArgs Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSourceConstructor1.html0000644000175000017500000000435010410343260027571 0ustar meebeymeebey DotNetConfigSource Constructor (String[])
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Constructor (String[])

Creates a new instance of the XML configuration source.

public DotNetConfigSource(
   string[] sections
);

Parameters

sections
Array of sections contained in the XML file. These cannout be determined programmatically so you will have to supply them at load time.

Remarks

Instantiating this way does not currently allow for saving configuration changes because the SavePath will be null. Use this for configuration ASP.NET web sites that use the Web.config file. This method is not supported by the .NET Compact Framework.

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Alias.html0000644000175000017500000000345210410343260024106 0ustar meebeymeebey Alias Property
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Alias Property

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReadState.html0000644000175000017500000000667410410343262023401 0ustar meebeymeebey IniReadState Enumeration
Nini Library API Reference - http://nini.sourceforge.net/

IniReadState Enumeration

The state of the reader.

public enum IniReadState

Members

Member Name Description
ClosedThe reader is closed.
EndOfFileThe reader has reached the end of the file.
ErrorAn error has occurred while parsing.
InitialThe reader has not yet begun parsing.
InteractiveNo root was found. The function may not cross the y-axis in a continous manner.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSourceMembers.html0000644000175000017500000002230310410343256026262 0ustar meebeymeebey ArgvConfigSource Members
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource Members

ArgvConfigSource overview

Public Instance Constructors

ArgvConfigSource Constructor Constructor. Loads the command line parameters.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
AddSwitchOverloaded. Adds a command line switch.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetArguments Returns a copy of the arguments input list.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.
ToString (inherited from Object)Returns a String that represents the current Object.

Public Instance Events

Reloaded (inherited from ConfigSourceBase) Occurs when the config source is reloaded.
Saved (inherited from ConfigSourceBase) Occurs when the config soucre is saved.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

ArgvConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.GetExpanded.html0000644000175000017500000000500610410343260027105 0ustar meebeymeebey ConfigSourceBase.GetExpanded Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.GetExpanded Method 

Returns the expanded string value. This method does not replace the other key values in the IConfigSource.

public string GetExpanded(
   IConfig config,
   string key
);

Parameters

config
Config to load the expanded value.
key
Configuration key.

Implements

IConfigSource.GetExpanded

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceConstructor4.html0000644000175000017500000000357210410343260027123 0ustar meebeymeebey IniConfigSource Constructor (IniDocument)
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Constructor (IniDocument)

Constructor. Loads an INI file source.

public IniConfigSource(
   IniDocument document
);

Parameters

document
The IniDocument.

Remarks

This is a non-savable source unless you call one of the overloaded Save methods.

See Also

IniConfigSource Class | Nini.Config Namespace | IniConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.CommentDelimiter.html0000644000175000017500000000370010410343262026224 0ustar meebeymeebey CommentDelimiter Property
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.CommentDelimiter Property

What type of comment type is used.

public char CommentDelimiter {get; set;}

Remarks

The default value is a semicolon (';').

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigKeyEventArgsMembers.html0000644000175000017500000001304710410343260026551 0ustar meebeymeebey ConfigKeyEventArgs Members
Nini Library API Reference - http://nini.sourceforge.net/

ConfigKeyEventArgs Members

ConfigKeyEventArgs overview

Public Instance Constructors

Public Instance Properties

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

ConfigKeyEventArgs Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.GetEnumerator.html0000644000175000017500000000414210410343262027711 0ustar meebeymeebey IniSectionCollection.GetEnumerator Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.GetEnumerator Method 

Returns the enumerator object.

public IEnumerator GetEnumerator();

Implements

IEnumerable.GetEnumerator

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollectionMethods.html0000644000175000017500000001560010410343260026303 0ustar meebeymeebey ConfigCollection Methods
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection Methods

The methods of the ConfigCollection class are listed below. For a complete list of ConfigCollection class members, see the ConfigCollection Members topic.

Public Instance Methods

AddOverloaded. Adds a new IConfig to the collection.
ClearRemoves all IConfigs from the collection.
Contains Returns true if the collection contains the IConfig.
CopyToOverloaded. Copies the collection to an array.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetEnumeratorReturns the enumerator object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
IndexOf Returns the index of an IConfig in the collection.
InsertInserts a new IConfig to the collection.
RemoveOverloaded. Removes an IConfig from the collection.
RemoveAtRemoves an IConfig from the index.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnConfigAdded Raises the ConfigAdded event.
OnConfigRemoved Raises the ConfigRemoved event.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/tree.css0000644000175000017500000000205210410343264020222 0ustar meebeymeebey.treeDiv { font-family: verdana; font-size: 70.5%; font-weight: normal; background-color: #f1f1f1; color: Black; overflow: auto; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; } .treeNode { white-space: nowrap; text-indent: -14px; margin: 5px 2px 5px 14px; } A.treeUnselected:hover, A.treeSelected:hover { text-decoration: underline; background-color: #cccccc; border: solid 1px #999999; text-decoration: none; } A.treeUnselected, A.treeSelected { color: Black; padding: 1px 3px 1px 3px; text-decoration: none; } A.treeSelected { background-color: #ffffff; border: solid 1px #999999; } A.treeUnselected { border: solid 1px f0f0f0; background-color: transparent; } .treeSubnodes { display: block; } .treeSubnodesHidden { display: none; } .treeNode IMG.treeNoLinkImage, .treeNode IMG.treeLinkImage { width: 9px; height: 9px; margin-left: 5px; margin-right: 0px; } .treeNode IMG.treeLinkImage { cursor: pointer; } nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionConstructor4.html0000644000175000017500000000414510410343262026004 0ustar meebeymeebey IniException Constructor (SerializationInfo, StreamingContext)
Nini Library API Reference - http://nini.sourceforge.net/

IniException Constructor (SerializationInfo, StreamingContext)

Initializes an INI exception instance

protected IniException(
   SerializationInfo info,
   StreamingContext context
);

Parameters

info
The serialization information for this exception.
context
The object containing the context information for this exception.

See Also

IniException Class | Nini.Ini Namespace | IniException Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.Reloaded.html0000644000175000017500000000400510410343260025750 0ustar meebeymeebey IConfigSource.Reloaded Event
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.Reloaded Event

Occurs when the config source is reloaded.

event EventHandler Reloaded;

Remarks

This event occurs when the Reload method is called.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumeratorMethods.html0000644000175000017500000001174710410343264027070 0ustar meebeymeebey OrderedListEnumerator Methods
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator Methods

The methods of the OrderedListEnumerator class are listed below. For a complete list of OrderedListEnumerator class members, see the OrderedListEnumerator Members topic.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
MoveNext Moves the enumeration to the next set.
Reset Resets the enumerator back to the beginning.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

OrderedListEnumerator Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSourceMethods.html0000644000175000017500000000651710410343260025570 0ustar meebeymeebey IConfigSource Methods
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource Methods

The methods of the IConfigSource interface are listed below. For a complete list of IConfigSource interface members, see the IConfigSource Members topic.

Public Instance Methods

AddConfig Adds a new IConfig.
ExpandKeyValues Expands all key values.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
Merge Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetLong_overload_1.html0000644000175000017500000000553210410343256027217 0ustar meebeymeebey ConfigBase.GetLong Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetLong Method (String)

Returns an long key value.

public long GetLong(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.GetLong

Exceptions

Exception Type Condition
Exception No key was found.

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.GetLong Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionMethods.html0000644000175000017500000001314610410343262024445 0ustar meebeymeebey IniSection Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniSection Methods

The methods of the IniSection class are listed below. For a complete list of IniSection class members, see the IniSection Members topic.

Public Instance Methods

Contains Returns true if the key exists; false if it does not.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetItemReturns the IniItem at the given index.
GetKeysReturns the list of section keys.
GetType (inherited from Object)Gets the Type of the current instance.
GetValueReturns the value of the given key.
RemoveRemoves the supplied key.
SetOverloaded. Sets a key value and a comment.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.SavePath.html0000644000175000017500000000423510410343260026300 0ustar meebeymeebey SavePath Property
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.SavePath Property

The path where the document will be saved.

public string SavePath {get;}

Remarks

This path is set when the class is loaded with a path or saved with a path (using the Save (string) method). Otherwise the value will be

null
. If it is
null
then calling save will cause an exception to be thrown.

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Contains.html0000644000175000017500000000411510410343262024672 0ustar meebeymeebey IniSection.Contains Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Contains Method 

Returns true if the key exists; false if it does not.

public bool Contains(
   string key
);

Parameters

key
Section key.

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfig.Get_overloads.html0000644000175000017500000000365310410343260026204 0ustar meebeymeebey Get Method
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig.Get Method

Returns a key value. If the parent IniConfigSource has CaseSensitive turned on then this will return the value ignoring the case of the key name.

Overload List

Returns a key value. If the parent IniConfigSource has CaseSensitive turned on then this will return the value ignoring the case of the key name.

public override string Get(string);

Inherited from ConfigBase.

public string Get(string,string);

See Also

IniConfig Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBase.Alias.html0000644000175000017500000000376010410343260025753 0ustar meebeymeebey Alias Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase.Alias Property

Gets the global AliasText for all IConfigs in this source.

public AliasText Alias {get;}

Implements

IConfigSource.Alias

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.MoveToNextKey.html0000644000175000017500000000402010410343262025426 0ustar meebeymeebey IniReader.MoveToNextKey Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.MoveToNextKey Method 

Moves the reader to the next line.

public bool MoveToNextKey();

Return Value

true if the reader successfully read another key. It returns false if it is at the end of the file or it found a section before the next key.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumerator.Reset.html0000644000175000017500000000404210410343264026613 0ustar meebeymeebey OrderedListEnumerator.Reset Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator.Reset Method 

Resets the enumerator back to the beginning.

public void Reset();

Implements

IEnumerator.Reset

See Also

OrderedListEnumerator Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSourceMethods.html0000644000175000017500000001614010410343256026275 0ustar meebeymeebey ArgvConfigSource Methods
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource Methods

The methods of the ArgvConfigSource class are listed below. For a complete list of ArgvConfigSource class members, see the ArgvConfigSource Members topic.

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
AddSwitchOverloaded. Adds a command line switch.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetArguments Returns a copy of the arguments input list.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

ArgvConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSourceConstructor.html0000644000175000017500000000443210410343256027220 0ustar meebeymeebey ArgvConfigSource Constructor
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource Constructor 

Constructor. Loads the command line parameters.

public ArgvConfigSource(
   string[] arguments
);

Parameters

arguments
The arguments as passed in by the main application.

Remarks

See the examples below.

Example

This is an example that sends in Windows arguments:

MyApp.exe -debug /file:log.txt
                
This is an example that sends in Unix arguments:
MyApp.exe -D --file log.txt --debug=yes
                

See Also

ArgvConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetFloat_overloads.html0000644000175000017500000000322310410343260026634 0ustar meebeymeebey GetFloat Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetFloat Method

Returns a float key value.

Overload List

Returns a float key value.

float GetFloat(string);

Returns a float key value.

float GetFloat(string,float);

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetKeys.html0000644000175000017500000000343610410343260024432 0ustar meebeymeebey IConfig.GetKeys Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetKeys Method 

Returns an Array of the key strings.

string[] GetKeys();

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollectionConstructor.html0000644000175000017500000000320310410343260027221 0ustar meebeymeebey ConfigCollection Constructor
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection Constructor 

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Save_overload_3.html0000644000175000017500000000574410410343260030264 0ustar meebeymeebey DotNetConfigSource.Save Method (TextWriter)
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Save Method (TextWriter)

Saves all configuration values to a TextWriter.

public void Save(
   TextWriter writer
);

Parameters

writer
The TextWriter to save the document.

Remarks

This sets the SavePath to

null
.

Exceptions

Exception Type Condition
Exception An error has occurred.

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.GetFullConfigPath.html0000644000175000017500000000420210410343260030542 0ustar meebeymeebey DotNetConfigSource.GetFullConfigPath Method
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.GetFullConfigPath Method 

Returns the full path to the configuration file

public static string GetFullConfigPath();

Remarks

This is a file with the extension of the application: MyApp.exe would be C:\Path_To_Program\MyApp.exe.config. This method is not supported by the .NET Compact Framework.

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.SetAssignDelimiters.html0000644000175000017500000000434110410343262026635 0ustar meebeymeebey IniReader.SetAssignDelimiters Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.SetAssignDelimiters Method 

Sets the assign delimiters.

public void SetAssignDelimiters(
   char[] delimiters
);

Parameters

delimiters
The array of assign delimiters.

Remarks

The default value is an equals operator ('=').

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentMethods.html0000644000175000017500000001161110410343262024612 0ustar meebeymeebey IniDocument Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Methods

The methods of the IniDocument class are listed below. For a complete list of IniDocument class members, see the IniDocument Members topic.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads the instance with the supplied file.
SaveOverloaded. Writes the INI data to a writer.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionMembers.html0000644000175000017500000001555610410343262024443 0ustar meebeymeebey IniSection Members
Nini Library API Reference - http://nini.sourceforge.net/

IniSection Members

IniSection overview

Public Instance Constructors

IniSection Overloaded. Initializes a new instance of the IniSection class.

Public Instance Properties

CommentGets the section comment.
ItemCount Returns the number of items in the section. This includes keys, comments, and empty lines.
NameGets the name of the section.

Public Instance Methods

Contains Returns true if the key exists; false if it does not.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetItemReturns the IniItem at the given index.
GetKeysReturns the list of section keys.
GetType (inherited from Object)Gets the Type of the current instance.
GetValueReturns the value of the given key.
RemoveRemoves the supplied key.
SetOverloaded. Sets a key value and a comment.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasTextMembers.html0000644000175000017500000001372110410343256024756 0ustar meebeymeebey AliasText Members
Nini Library API Reference - http://nini.sourceforge.net/

AliasText Members

AliasText overview

Public Instance Constructors

AliasText Constructor Class constructor.

Public Instance Methods

AddAliasOverloaded. Adds a new integer alias.
ContainsBoolean Returns true if the Boolean value exists.
ContainsInt Returns true if the integer value exists.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetBooleanReturns the alias value for a specified key.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetIntReturns the int value of a config value.
GetType (inherited from Object)Gets the Type of the current instance.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

AliasText Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionMethods.html0000644000175000017500000001165410410343262025001 0ustar meebeymeebey IniException Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniException Methods

The methods of the IniException class are listed below. For a complete list of IniException class members, see the IniException Members topic.

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetBaseException (inherited from Exception)When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetObjectDataISerializable GetObjectData method.
GetType (inherited from Exception)Gets the runtime type of the current instance.
ToString (inherited from Exception)Creates and returns a string representation of the current exception.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Get_overload_1.html0000644000175000017500000000442110410343256026373 0ustar meebeymeebey ConfigBase.Get Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Get Method (String)

Returns a string key value.

public virtual string Get(
   string key
);

Parameters

key
Configuration key.

Implements

IConfig.Get

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.Get Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReaderConstructor.html0000644000175000017500000000426110410343262025163 0ustar meebeymeebey IniReader Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniReader Constructor

Initializes a new instance of the class with the supplied file.

Overload List

Initializes a new instance of the class using a Stream.

public IniReader(Stream);

Initializes a new instance of the class using a TextReader.

public IniReader(TextReader);

Initializes a new instance of the class with the supplied file.

public IniReader(string);

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.GetValue.html0000644000175000017500000000420610410343262024631 0ustar meebeymeebey IniSection.GetValue Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.GetValue Method 

Returns the value of the given key.

public string GetValue(
   string key
);

Parameters

key
Section key.

Remarks

Returns null if the key does not exist

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.ArgvParserConstructor.html0000644000175000017500000000360110410343264025572 0ustar meebeymeebey ArgvParser Constructor
Nini Library API Reference - http://nini.sourceforge.net/

ArgvParser Constructor

Loads and parses all command line options.

Overload List

Loads and parses all command line options.

public ArgvParser(string);

 

public ArgvParser(string[]);

See Also

ArgvParser Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Save_overload_4.html0000644000175000017500000000431110410343260030252 0ustar meebeymeebey DotNetConfigSource.Save Method (Stream)
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Save Method (Stream)

Writes the XML data to a Stream.

public void Save(
   Stream stream
);

Parameters

stream
Stream object

See Also

DotNetConfigSource Class | Nini.Config Namespace | DotNetConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Set_overload_3.html0000644000175000017500000000415610410343262025771 0ustar meebeymeebey IniSection.Set Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Set Method (String)

Sets a section comment.

public void Set(
   string comment
);

Parameters

comment
Comment text.

See Also

IniSection Class | Nini.Ini Namespace | IniSection.Set Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumerator.Entry.html0000644000175000017500000000415610410343264026640 0ustar meebeymeebey Entry Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator.Entry Property

nini-1.1.0+dfsg.2/Docs/Reference/html/privevent.gif0000644000175000017500000000160110410343244021257 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@^˙ H° @|`ßľ… 6|xđß.FÜXp"ĹřBÄ`âB|˙5„8dÉ—cŞ|É2˘Çš>„0cM“„ŠRĺÇŠ/5–42ŁO™P;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.ToString.html0000644000175000017500000000346610410343264024547 0ustar meebeymeebey IniWriter.ToString Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.ToString Method 

Returns the string version of the current written text.

public override string ToString();

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Contains.html0000644000175000017500000000410310410343260024625 0ustar meebeymeebey IConfig.Contains Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Contains Method 

Returns true if the configuration key is present.

bool Contains(
   string key
);

Parameters

key
Configuration key.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.AddAlias_overload_2.html0000644000175000017500000000456010410343256027221 0ustar meebeymeebey AliasText.AddAlias Method (String, Boolean)
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.AddAlias Method (String, Boolean)

Adds a new Boolean alias.

public void AddAlias(
   string alias,
   bool value
);

Parameters

alias
Alias name.
value
Alias value.

See Also

AliasText Class | Nini.Config Namespace | AliasText.AddAlias Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor1.html0000644000175000017500000000332010410343262025613 0ustar meebeymeebey IniDocument Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor (String)

Initializes a new instance of the class with the supplied file.

public IniDocument(
   string filePath
);

Parameters

filePath
The path to the INI file.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocumentConstructor4.html0000644000175000017500000000363710410343262025631 0ustar meebeymeebey IniDocument Constructor (TextReader, IniFileType)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument Constructor (TextReader, IniFileType)

Initializes a new instance of the class using a TextReader and the INI type.

public IniDocument(
   TextReader reader,
   IniFileType type
);

Parameters

reader
The TextReader.
type
The INI file type.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteSection_overloads.html0000644000175000017500000000324710410343264027470 0ustar meebeymeebey WriteSection Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteSection Method

Writes an INI section.

Overload List

Writes an INI section.

public void WriteSection(string);

Writes a section with a comment.

public void WriteSection(string,string);

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.IsReadOnly.html0000644000175000017500000000421310410343260026765 0ustar meebeymeebey IsReadOnly Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.IsReadOnly Property

Returns true if the collection is read only.

public bool IsReadOnly {get;}

Implements

IList.IsReadOnly

Remarks

This aways returns false.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Save_overload_1.html0000644000175000017500000000424110410343262026277 0ustar meebeymeebey IniDocument.Save Method (TextWriter)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Save Method (TextWriter)

Writes the INI data to a writer.

public void Save(
   TextWriter textWriter
);

Parameters

textWriter
TextWriter object

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionConstructor3.html0000644000175000017500000000327110410343262026002 0ustar meebeymeebey IniException Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniException Constructor (String)

Initializes an INI exception instance

public IniException(
   string message
);

Parameters

message
The exception message.

See Also

IniException Class | Nini.Ini Namespace | IniException Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniException.Message.html0000644000175000017500000000350010410343262025027 0ustar meebeymeebey Message Property
Nini Library API Reference - http://nini.sourceforge.net/

IniException.Message Property

Returns the exception message.

public override string Message {get;}

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBaseEvents.html0000644000175000017500000000433110410343260026103 0ustar meebeymeebey ConfigSourceBase Events
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase Events

The events of the ConfigSourceBase class are listed below. For a complete list of ConfigSourceBase class members, see the ConfigSourceBase Members topic.

Public Instance Events

Reloaded Occurs when the config source is reloaded.
Saved Occurs when the config soucre is saved.

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.Save.html0000644000175000017500000000522610410343262026557 0ustar meebeymeebey RegistryConfigSource.Save Method
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.Save Method 

Saves all configuration values.

public override void Save();

Implements

IConfigSource.Save

Remarks

Look at the class that implements this interface to determine when this can be called.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/intfield.gif0000644000175000017500000000160110410343244021033 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@^˙ H° Ářüů€€ý¸ß>|˙.î{±ăż„;6¤ČaĂ“8:äř1ŁŔ}˙Xz<rf‰5 Ţ$)“ ČŠEVT‰ćE–2~Äô`ʧO!;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigKeyEventArgs.KeyName.html0000644000175000017500000000351010410343260026560 0ustar meebeymeebey KeyName Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigKeyEventArgs.KeyName Property

nini-1.1.0+dfsg.2/Docs/Reference/html/intproperty.gif0000644000175000017500000000161510410343244021641 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@j˙ (€A˙ř€aĂ”ŕ@Ĺ‹,*Ä·ßżŽű$9ŃbĆ“ :,ůp ľ—0!tůQŕ>•$s2<™@J™&+˘\řĐâ΋ ćôł N§_Öě(r¤Ô«U Ęś™3 ;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Name.html0000644000175000017500000000343210410343262023775 0ustar meebeymeebey Name Property
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Name Property

Gets the name of the section.

public string Name {get;}

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Load_overloads.html0000644000175000017500000000410110410343262026216 0ustar meebeymeebey Load Method
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Load Method

Loads the instance using an IniReader.

Overload List

Loads the instance using an IniReader.

public void Load(IniReader);

Loads the instance using a Stream.

public void Load(Stream);

Loads the instance using a TextReader.

public void Load(TextReader);

Loads the instance with the supplied file.

public void Load(string);

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSourceEvents.html0000644000175000017500000000431010410343260025416 0ustar meebeymeebey IConfigSource Events
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource Events

The events of the IConfigSource interface are listed below. For a complete list of IConfigSource interface members, see the IConfigSource Members topic.

Public Instance Events

Reloaded Occurs when the config source is reloaded.
Saved Occurs when the config soucre is saved.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ArgvConfigSource.html0000644000175000017500000000621610410343256024754 0ustar meebeymeebey ArgvConfigSource Class
Nini Library API Reference - http://nini.sourceforge.net/

ArgvConfigSource Class

Configuration class for loading command line arguments.

For a list of all members of this type, see ArgvConfigSource Members.

System.Object
   Nini.Config.ConfigSourceBase
      Nini.Config.ArgvConfigSource

public class ArgvConfigSource : ConfigSourceBase

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

Provides a method to parse command line parameters and collect them into a ConfigCollection. The arguments allowed are the Windows style ("/key:value", "-key") or Unix style ("--key=value" and "-key value").

Example

This is an example that sends in Windows arguments:

MyApp.exe -debug /file:log.txt
            
This is an example that sends in Unix arguments:
MyApp.exe -D --file log.txt --debug=yes
            

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

ArgvConfigSource Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSource.Save_overloads.html0000644000175000017500000000416110410343260027537 0ustar meebeymeebey Save Method
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource.Save Method

Saves all configuration values.

Overload List

Saves all configuration values.

public override void Save();

Writes the INI data to a Stream.

public void Save(Stream);

Saves all configuration values to a TextWriter.

public void Save(TextWriter);

Saves all configuration values to a path.

public void Save(string);

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSourceConstructor2.html0000644000175000017500000000347410410343262027145 0ustar meebeymeebey XmlConfigSource Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Constructor (String)

Creates a new object from the specified XML file.

public XmlConfigSource(
   string path
);

Parameters

path
Path to the XML file.

Remarks

This instance type is not read only.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigMethods.html0000644000175000017500000002113510410343260024727 0ustar meebeymeebey IniConfig Methods
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig Methods

The methods of the IniConfig class are listed below. For a complete list of IniConfig class members, see the IniConfig Members topic.

Public Instance Methods

Add (inherited from ConfigBase)Adds a new IConfig.
Contains (inherited from ConfigBase) Returns true if the configuration key is present.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetOverloaded. Returns a key value. If the parent IniConfigSource has CaseSensitive turned on then this will return the value ignoring the case of the key name.
Get (inherited from ConfigBase)Overloaded. Returns a string key value.
GetBoolean (inherited from ConfigBase)Overloaded. Returns a boolean key value.
GetDouble (inherited from ConfigBase)Overloaded. Returns a double key value.
GetExpanded (inherited from ConfigBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetFloat (inherited from ConfigBase)Overloaded. Returns a float key value.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetInt (inherited from ConfigBase)Overloaded. Returns an integer key value.
GetKeys (inherited from ConfigBase)Returns an Array of the key strings.
GetLong (inherited from ConfigBase)Overloaded. Returns an long key value.
GetString (inherited from ConfigBase)Overloaded. Returns a string key value.
GetType (inherited from Object)Gets the Type of the current instance.
GetValues (inherited from ConfigBase)Returns an Array of all key values.
Remove Removes a key. If the parent IniConfigSource has CaseSensitive turned on then this will remove the key ignoring the case of the key name.
Set Sets a key value. If the parent IniConfigSource has CaseSensitive turned on then this will set the value ignoring the case of the key name.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnKeyRemoved (inherited from ConfigBase) Raises the KeyRemoved event.
OnKeySet (inherited from ConfigBase) Raises the KeySet event.

See Also

IniConfig Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListEnumerator.MoveNext.html0000644000175000017500000000406710410343264027305 0ustar meebeymeebey OrderedListEnumerator.MoveNext Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedListEnumerator.MoveNext Method 

Moves the enumeration to the next set.

public bool MoveNext();

Implements

IEnumerator.MoveNext

See Also

OrderedListEnumerator Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.Item1.html0000644000175000017500000000402410410343262026106 0ustar meebeymeebey Item Property (Int32)
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.Item Property (Int32)

Returns the section at the specified index.

public IniSection this[
   int index
] {get;}

See Also

IniSectionCollection Class | Nini.Ini Namespace | IniSectionCollection.Item Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollectionItem.html0000644000175000017500000000332210410343262025747 0ustar meebeymeebey Item Property
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.Item Property

Returns the section at the specified index.

Overload List

Returns the section at the specified index.

public IniSection this[int] {get;}

Returns the section by name.

public IniSection this[string] {get;}

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Save_overloads.html0000644000175000017500000000352310410343262026244 0ustar meebeymeebey Save Method
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Save Method

Writes the INI data to a Stream.

Overload List

Writes the INI data to a Stream.

public void Save(Stream);

Writes the INI data to a writer.

public void Save(TextWriter);

Writes the INI data to a file.

public void Save(string);

See Also

IniDocument Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetValues.html0000644000175000017500000000345110410343260024753 0ustar meebeymeebey IConfig.GetValues Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetValues Method 

Returns an Array of all key values.

string[] GetValues();

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Remove.html0000644000175000017500000000440310410343264024725 0ustar meebeymeebey OrderedList.Remove Method
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Remove Method 

Removes an item from the collection by key name.

public void Remove(
   object key
);

Parameters

key
Key to search for.

Implements

IDictionary.Remove

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Name.html0000644000175000017500000000374710410343256024433 0ustar meebeymeebey Name Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Name Property

Gets or sets the IConfig name. If set then it renames this config with the parent source.

public string Name {get; set;}

Implements

IConfig.Name

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniDocument.Load_overload_4.html0000644000175000017500000000414110410343262026262 0ustar meebeymeebey IniDocument.Load Method (IniReader)
Nini Library API Reference - http://nini.sourceforge.net/

IniDocument.Load Method (IniReader)

Loads the instance using an IniReader.

public void Load(
   IniReader reader
);

Parameters

reader
The IniReader.

See Also

IniDocument Class | Nini.Ini Namespace | IniDocument.Load Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.Comment.html0000644000175000017500000000360210410343262024516 0ustar meebeymeebey Comment Property
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.Comment Property

Gets the section comment.

public string Comment {get;}

Remarks

Returns null if there is no comment.

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.ConfigSource.html0000644000175000017500000000370310410343256026131 0ustar meebeymeebey ConfigSource Property
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.ConfigSource Property

Returns the parent IConfigSource.

public IConfigSource ConfigSource {get;}

Implements

IConfig.ConfigSource

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.html0000644000175000017500000000747010410343260024243 0ustar meebeymeebey IConfigSource Interface
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource Interface

Container for IConfig objects.

For a list of all members of this type, see IConfigSource Members.

public interface IConfigSource

Types that implement IConfigSource

Type Description
ArgvConfigSource Configuration class for loading command line arguments.
ConfigSourceBase Container for IConfig objects.
DotNetConfigSource Represents a Microsoft XML .NET configuration file.
IniConfigSource Class for loading an INI file.
RegistryConfigSource Class for loading Windows Registry data.
XmlConfigSource Class for configuring an XML source.

Remarks

TODO.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

IConfigSource Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.AddAlias_overload_1.html0000644000175000017500000000507610410343256027223 0ustar meebeymeebey AliasText.AddAlias Method (String, String, Int32)
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.AddAlias Method (String, String, Int32)

Adds a new integer alias.

public void AddAlias(
   string key,
   string alias,
   int value
);

Parameters

key
Alias key.
alias
Alias name.
value
Alias value.

See Also

AliasText Class | Nini.Config Namespace | AliasText.AddAlias Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniItemProperties.html0000644000175000017500000000456110410343262024471 0ustar meebeymeebey IniItem Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniItem Properties

The properties of the IniItem class are listed below. For a complete list of IniItem class members, see the IniItem Members topic.

Public Instance Properties

CommentItem comment.
NameItem name.
TypeItem type.
ValueItem value.

See Also

IniItem Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigSourceBaseConstructor.html0000644000175000017500000000321010410343260027157 0ustar meebeymeebey ConfigSourceBase Constructor
Nini Library API Reference - http://nini.sourceforge.net/

ConfigSourceBase Constructor 

Initializes a new instance of the ConfigSourceBase class.

public ConfigSourceBase();

See Also

ConfigSourceBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.GetExpanded.html0000644000175000017500000000454410410343260026431 0ustar meebeymeebey IConfigSource.GetExpanded Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.GetExpanded Method 

Returns the expanded string value. This method does not replace the other key values in the IConfigSource.

string GetExpanded(
   IConfig config,
   string key
);

Parameters

config
Config to load the expanded value.
key
Configuration key.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.ArgvParserProperties.html0000644000175000017500000000374210410343264025407 0ustar meebeymeebey ArgvParser Properties
Nini Library API Reference - http://nini.sourceforge.net/

ArgvParser Properties

The properties of the ArgvParser class are listed below. For a complete list of ArgvParser class members, see the ArgvParser Members topic.

Public Instance Properties

Item Returns the value of the command line switch.

See Also

ArgvParser Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfigSourceConstructor.html0000644000175000017500000000511610410343260027033 0ustar meebeymeebey IniConfigSource Constructor
Nini Library API Reference - http://nini.sourceforge.net/

IniConfigSource Constructor

Constructor. Loads an empty INI source.

Overload List

Constructor. Loads an empty INI source.

public IniConfigSource();

Constructor. Loads an INI file source.

public IniConfigSource(IniDocument);

Constructor. Loads an INI file source.

public IniConfigSource(Stream);

Constructor. Loads an INI file source.

public IniConfigSource(TextReader);

Constructor. Loads an INI file source.

public IniConfigSource(string);

See Also

IniConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionProperties.html0000644000175000017500000001153610410343262025531 0ustar meebeymeebey IniException Properties
Nini Library API Reference - http://nini.sourceforge.net/

IniException Properties

The properties of the IniException class are listed below. For a complete list of IniException class members, see the IniException Members topic.

Public Instance Properties

Data (inherited from Exception)Gets a collection of key/value pairs that provide additional, user-defined information about the exception.
HelpLink (inherited from Exception)Gets or sets a link to the help file associated with this exception.
InnerException (inherited from Exception)Gets the Exception instance that caused the current exception.
LineNumberReturns the line number where the exception occurred.
LinePositionReturns the line position where the exception occurred.
MessageReturns the exception message.
Source (inherited from Exception)Gets or sets the name of the application or the object that causes the error.
StackTrace (inherited from Exception)Gets a string representation of the frames on the call stack at the time the current exception was thrown.
TargetSite (inherited from Exception)Gets the method that throws the current exception.

Protected Instance Properties

HResult (inherited from Exception)Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

See Also

IniException Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriterConstructor1.html0000644000175000017500000000330210410343262025311 0ustar meebeymeebey IniWriter Constructor (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter Constructor (String)

Initializes a new instance of the class with the supplied file.

public IniWriter(
   string filePath
);

Parameters

filePath
The path to the INI file.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSource.Save.html0000644000175000017500000000474110410343260025136 0ustar meebeymeebey IConfigSource.Save Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource.Save Method 

Saves all configuration values.

void Save();

Remarks

Look at the class that implements this interface to determine when this can be called.

Exceptions

Exception Type Condition
Exception An error occurred.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.Contains.html0000644000175000017500000000450210410343260026533 0ustar meebeymeebey ConfigCollection.Contains Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.Contains Method 

Returns true if the collection contains the IConfig.

public bool Contains(
   object config
);

Parameters

config
The IConfig to search for.

Implements

IList.Contains

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSection.GetKeys.html0000644000175000017500000000343110410343262024467 0ustar meebeymeebey IniSection.GetKeys Method
Nini Library API Reference - http://nini.sourceforge.net/

IniSection.GetKeys Method 

Returns the list of section keys.

public string[] GetKeys();

See Also

IniSection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.ConfigRemoved.html0000644000175000017500000000512410410343260027505 0ustar meebeymeebey ConfigCollection.ConfigRemoved Event
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.ConfigRemoved Event

Occurs when a config is removed.

public event ConfigEventHandler ConfigRemoved;

Event Data

The event handler receives an argument of type ConfigEventArgs containing data related to this event. The following ConfigEventArgs property provides information specific to this event.

Property Description
Config  

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionConstructor1.html0000644000175000017500000000357310410343262025453 0ustar meebeymeebey IniSection Constructor (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

IniSection Constructor (String, String)

Creates a new section with a comment.

public IniSection(
   string name,
   string comment
);

Parameters

name
Section name.
comment
Comment text.

See Also

IniSection Class | Nini.Ini Namespace | IniSection Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSourceMethods.html0000644000175000017500000001522610410343262026137 0ustar meebeymeebey XmlConfigSource Methods
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Methods

The methods of the XmlConfigSource class are listed below. For a complete list of XmlConfigSource class members, see the XmlConfigSource Members topic.

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads a new object from the specified XML file.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
SaveOverloaded. Saves all configuration values.
ToString Returns all characters in the document.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Remove.html0000644000175000017500000000403710410343260024312 0ustar meebeymeebey IConfig.Remove Method
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Remove Method 

Removes a configuration key.

void Remove(
   string key
);

Parameters

key
Configuration key.

See Also

IConfig Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedListMembers.html0000644000175000017500000002056510410343264025013 0ustar meebeymeebey OrderedList Members
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList Members

OrderedList overview

Public Instance Constructors

OrderedList Constructor Initializes a new instance of the OrderedList class.

Public Instance Properties

CountReturns the number of objects in the collection.
IsFixedSize Returns true if the collection is of a fixed size. This value is always false.
IsReadOnly Returns true if the list is read only. Always returns false.
IsSynchronized Returns true if the collection is synchronized. This value is always false.
ItemOverloaded. Returns the object at the given index.
Keys Returns a list of the collection keys.
SyncRootReturns the synchronized object.
ValuesReturns a list of the collection values.

Public Instance Methods

AddAdds a new obctje to the collection.
ClearClears all object from the collection.
ContainsReturns true if the key exists in the collection.
CopyToOverloaded. Copies the collection to an array.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetEnumeratorReturns the enumerator object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
Insert Inserts an object into the collection based on an index.
RemoveRemoves an item from the collection by key name.
RemoveAtRemoves a key at the given index.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.Close.html0000644000175000017500000000342210410343262023757 0ustar meebeymeebey IniReader.Close Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.Close Method 

Closes the current reader and frees the resources.

public void Close();

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.GetLong_overloads.html0000644000175000017500000000324610410343256027162 0ustar meebeymeebey GetLong Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.GetLong Method

Returns an long key value.

Overload List

Returns an long key value.

public long GetLong(string);

Returns an integer key value.

public long GetLong(string,long);

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.ToString.html0000644000175000017500000000370710410343260027017 0ustar meebeymeebey DotNetConfigSource.ToString Method
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.ToString Method 

Returns all characters in the document.

public override string ToString();

Remarks

It returns the XML string of the document.

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/privfield.gif0000644000175000017500000000161010410343244021221 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@e˙ H° @|ř‡Ďź?řđ-48°ˇâű ă‰Cô·QdDŚ%ţ;±eI‰ ®LřQ¤M™7˘,IŃ"ĘŽ#ŽlQ%Ă'5Šs Č2?*4ٱ*T‚;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfigSourceMembers.html0000644000175000017500000001135010410343260025546 0ustar meebeymeebey IConfigSource Members
Nini Library API Reference - http://nini.sourceforge.net/

IConfigSource Members

IConfigSource overview

Public Instance Properties

Alias Gets the global AliasText for all IConfigs in this source.
AutoSave Gets or sets whether the source will be automatically saved.
ConfigsReturns the collection of IConfig objects.

Public Instance Methods

AddConfig Adds a new IConfig.
ExpandKeyValues Expands all key values.
GetExpanded Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
Merge Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues This method is deprecated. Use ExpandKeyValues from now on.
Save Saves all configuration values.

Public Instance Events

Reloaded Occurs when the config source is reloaded.
Saved Occurs when the config soucre is saved.

See Also

IConfigSource Interface | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSourceMembers.html0000644000175000017500000002171410410343262026125 0ustar meebeymeebey XmlConfigSource Members
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource Members

XmlConfigSource overview

Public Instance Constructors

XmlConfigSource Overloaded. Initializes a new instance of the XmlConfigSource class.

Public Instance Properties

Alias (inherited from ConfigSourceBase) Gets the global AliasText for all IConfigs in this source.
AutoSave (inherited from ConfigSourceBase) Gets or sets whether the source will be automatically saved.
Configs (inherited from ConfigSourceBase)Returns the collection of IConfig objects.
SavePath The path where the document will be saved.

Public Instance Methods

AddConfig (inherited from ConfigSourceBase) Adds a new IConfig.
Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
ExpandKeyValues (inherited from ConfigSourceBase) Expands all key values.
GetExpanded (inherited from ConfigSourceBase) Returns the expanded string value. This method does not replace the other key values in the IConfigSource.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
LoadOverloaded. Loads a new object from the specified XML file.
Merge (inherited from ConfigSourceBase) Merges all IConfigs from another IConfigSource into the Configs collection.
Reload Reloads all configuration values.
ReplaceKeyValues (inherited from ConfigSourceBase) This method is deprecated. Use ExpandKeyValues from now on.
SaveOverloaded. Saves all configuration values.
ToString Returns all characters in the document.

Public Instance Events

Reloaded (inherited from ConfigSourceBase) Occurs when the config source is reloaded.
Saved (inherited from ConfigSourceBase) Occurs when the config soucre is saved.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.
OnReloaded (inherited from ConfigSourceBase) 
OnSaved (inherited from ConfigSourceBase) 

See Also

XmlConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.html0000644000175000017500000000554410410343264023500 0ustar meebeymeebey OrderedList Class
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList Class

A collection of ordered objects.

For a list of all members of this type, see OrderedList Members.

System.Object
   Nini.Util.OrderedList

public class OrderedList : IDictionary, ICollection, IEnumerable

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

This class combines the retrieval speed of a Hashtable with the ordered nature of an ArrayList while using just a bit more memory in the process.

Requirements

Namespace: Nini.Util

Assembly: Nini (in Nini.dll)

See Also

OrderedList Members | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.Save_overloads.html0000644000175000017500000000420610410343260030215 0ustar meebeymeebey Save Method
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource.Save Method

Saves all configuration values.

Overload List

Saves all configuration values.

public override void Save();

Writes the XML data to a Stream.

public void Save(Stream);

Saves all configuration values to a TextWriter.

public void Save(TextWriter);

Saves all configuration values to a path.

public void Save(string);

See Also

DotNetConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/privoperator.gif0000644000175000017500000000156710410343244022004 0ustar meebeymeebeyGIF89a÷€€€€€€€€€ŔŔŔŔÜŔ¦Ęđ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔ****U**Ş*Ô*******U****Ş**Ô*U*U**UU*U*UŞ*UÔ****U**Ş*Ô*Ş*Ş**ŞU*Ş*ŞŞ*ŞÔ*Ô*Ô**ÔU*Ô*ÔŞ*ÔÔUU*UUUUŞUÔU*U**U*UU*U*ŞU*ÔUUUU*UUUUUUUŞUUÔUU*UUUUŞUÔUŞUŞ*UŞUUŞUŞŞUŞÔUÔUÔ*UÔUUÔUÔŞUÔÔ*UŞÔ****U**Ş*ÔUU*UUUUŞUÔ*UŞÔŞŞ*ŞUŞŞŞŞÔÔÔ*ÔUÔÔŞÔÔŞŞ*ŞUŞŞŞŞÔŞ*Ş**Ş*UŞ*Ş*ŞŞ*ÔŞUŞU*ŞUUŞUŞUŞŞUÔŞŞ*ŞUŞŞŞŞÔŞŞŞŞ*ŞŞUŞŞŞŞŞŞŞÔŞÔŞÔ*ŞÔUŞÔŞÔŞŞÔÔÔÔ*ÔUÔÔŞÔÔÔ*Ô**Ô*UÔ*Ô*ŞÔ*ÔÔUÔU*ÔUUÔUÔUŞÔUÔÔÔ*ÔUÔÔŞÔÔÔŞÔŞ*ÔŞUÔŞÔŞŞÔŞÔÔÔÔÔ*ÔÔUÔÔÔÔŞÔÔÔ &&&333???LLLYYYfffrrrŚŚŚ™™™ĄĄĄ˛˛˛żżżĚĚĚŘŘŘĺĺĺňňň˙űđ  ¤€€€˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,@T˙  ° Ář\X A†ńý@ńņ'|‘˘ÇŹ˙HHRbƉ¨´ńäŔ–‚äز¦ÍřVzĚHĐ$ĎRPIS&Ι-;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.MoveToNextSection.html0000644000175000017500000000372010410343262026310 0ustar meebeymeebey IniReader.MoveToNextSection Method
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.MoveToNextSection Method 

Moves the reader to the next section.

public bool MoveToNextSection();

Return Value

true if the reader successfully found another section.

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.Dispose_overloads.html0000644000175000017500000000343410410343264026455 0ustar meebeymeebey Dispose Method
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.Dispose Method

Cleans up all managed and unmanaged resources for the instance.

Overload List

Cleans up all managed and unmanaged resources for the instance.

public void Dispose();

Cleans up all unmanaged resources for the instance and optionally the managed resouces as well.

protected virtual void Dispose(bool);

See Also

IniWriter Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/protproperty.gif0000644000175000017500000000163310410343244022033 0ustar meebeymeebeyGIF89a÷˙˙˙€˙˙€€˙˙ ĎĎĎČČČŔŔŔ€€€<<< ˙˙˙!ů,@x(€  a‚#hH0a 0jL€€Á‚,I’Ś R&řđŕ@Ť đ°›8E< “¤Ď†Tvd™ódF•+¶Ěxń(€„, @PAÁ1B©“VŰóç±;nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigEventArgsMembers.html0000644000175000017500000001253310410343260026077 0ustar meebeymeebey ConfigEventArgs Members
Nini Library API Reference - http://nini.sourceforge.net/

ConfigEventArgs Members

ConfigEventArgs overview

Public Instance Constructors

Public Instance Properties

Config 

Public Instance Methods

Equals (inherited from Object)Determines whether the specified Object is equal to the current Object.
GetHashCode (inherited from Object)Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.
GetType (inherited from Object)Gets the Type of the current instance.
ToString (inherited from Object)Returns a String that represents the current Object.

Protected Instance Methods

Finalize (inherited from Object)Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
MemberwiseClone (inherited from Object)Creates a shallow copy of the current Object.

See Also

ConfigEventArgs Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigEventArgsConstructor.html0000644000175000017500000000315410410343260027031 0ustar meebeymeebey ConfigEventArgs Constructor
Nini Library API Reference - http://nini.sourceforge.net/

ConfigEventArgs Constructor 

nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.DotNetConfigSource.html0000644000175000017500000000555410410343260025251 0ustar meebeymeebey DotNetConfigSource Class
Nini Library API Reference - http://nini.sourceforge.net/

DotNetConfigSource Class

Represents a Microsoft XML .NET configuration file.

For a list of all members of this type, see DotNetConfigSource Members.

System.Object
   Nini.Config.ConfigSourceBase
      Nini.Config.DotNetConfigSource

public class DotNetConfigSource : ConfigSourceBase

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

.NET configuration section names are element nodes they cannot contain certain characters such as whitespace.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

DotNetConfigSource Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.SyncRoot.html0000644000175000017500000000407110410343262026711 0ustar meebeymeebey SyncRoot Property
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection.SyncRoot Property

Returns the synchronization object.

public object SyncRoot {get;}

Implements

ICollection.SyncRoot

See Also

IniSectionCollection Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IniConfig.Set.html0000644000175000017500000000471410410343260024141 0ustar meebeymeebey IniConfig.Set Method
Nini Library API Reference - http://nini.sourceforge.net/

IniConfig.Set Method 

Sets a key value. If the parent IniConfigSource has CaseSensitive turned on then this will set the value ignoring the case of the key name.

public override void Set(
   string key,
   object value
);

Parameters

key
The key name.
value
The key value

Implements

IConfig.Set

See Also

IniConfig Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollectionEvents.html0000644000175000017500000000433410410343260026146 0ustar meebeymeebey ConfigCollection Events
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection Events

The events of the ConfigCollection class are listed below. For a complete list of ConfigCollection class members, see the ConfigCollection Members topic.

Public Instance Events

ConfigAdded Occurs when a config is added.
ConfigRemoved Occurs when a config is removed.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.RegistryConfigSource.AddConfig_overloads.html0000644000175000017500000000353710410343262031560 0ustar meebeymeebey AddConfig Method
Nini Library API Reference - http://nini.sourceforge.net/

RegistryConfigSource.AddConfig Method

Adds a config and will map itself to the DefaultKey property.

Overload List

Adds a config and will map itself to the DefaultKey property.

public override IConfig AddConfig(string);

Adds a config and will map itself to the given registry key.

public IConfig AddConfig(string,RegistryKey);

See Also

RegistryConfigSource Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.Get_overload_2.html0000644000175000017500000000501610410343256026375 0ustar meebeymeebey ConfigBase.Get Method (String, String)
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.Get Method (String, String)

Returns a string key value.

public string Get(
   string key,
   string defaultValue
);

Parameters

key
Configuration key.
defaultValue
Default value if the key is not found.

Implements

IConfig.Get

See Also

ConfigBase Class | Nini.Config Namespace | ConfigBase.Get Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniWriter.WriteSection_overload_1.html0000644000175000017500000000531510410343264027523 0ustar meebeymeebey IniWriter.WriteSection Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IniWriter.WriteSection Method (String)

Writes an INI section.

public void WriteSection(
   string section
);

Parameters

section
Section name.

Exceptions

Exception Type Condition
IniException A WriteState error occurred or the document was closed.

See Also

IniWriter Class | Nini.Ini Namespace | IniWriter.WriteSection Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Count.html0000644000175000017500000000400010410343264024551 0ustar meebeymeebey Count Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Count Property

Returns the number of objects in the collection.

public int Count {get;}

Implements

ICollection.Count

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniExceptionConstructor2.html0000644000175000017500000000370710410343262026005 0ustar meebeymeebey IniException Constructor (String, Exception)
Nini Library API Reference - http://nini.sourceforge.net/

IniException Constructor (String, Exception)

Initializes an INI exception instance

public IniException(
   string message,
   Exception exception
);

Parameters

message
The exception message.
exception
The Exception that threw this exception

See Also

IniException Class | Nini.Ini Namespace | IniException Constructor Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniReader.LinePosition.html0000644000175000017500000000351410410343262025330 0ustar meebeymeebey LinePosition Property
Nini Library API Reference - http://nini.sourceforge.net/

IniReader.LinePosition Property

Gets the current line position (column).

public int LinePosition {get;}

See Also

IniReader Class | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/contents.html0000644000175000017500000047272710410343264021320 0ustar meebeymeebey Contents
sync toc
Nini.Config
Nini.Ini
nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Ini.IniSectionCollection.html0000644000175000017500000000516710410343262025141 0ustar meebeymeebey IniSectionCollection Class
Nini Library API Reference - http://nini.sourceforge.net/

IniSectionCollection Class

A collection of section objects.

For a list of all members of this type, see IniSectionCollection Members.

System.Object
   Nini.Ini.IniSectionCollection

public class IniSectionCollection : ICollection, IEnumerable

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Ini

Assembly: Nini (in Nini.dll)

See Also

IniSectionCollection Members | Nini.Ini Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Util.OrderedList.Values.html0000644000175000017500000000405410410343264024731 0ustar meebeymeebey Values Property
Nini Library API Reference - http://nini.sourceforge.net/

OrderedList.Values Property

Returns a list of the collection values.

public System.Collections.ICollection Values {get;}

Implements

IDictionary.Values

See Also

OrderedList Class | Nini.Util Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.XmlConfigSource.Save_overload_1.html0000644000175000017500000000554710410343262027630 0ustar meebeymeebey XmlConfigSource.Save Method ()
Nini Library API Reference - http://nini.sourceforge.net/

XmlConfigSource.Save Method ()

Saves all configuration values.

public override void Save();

Implements

IConfigSource.Save

Remarks

If the SavePath is

null
then this will throw an exception.

Exceptions

Exception Type Condition
Exception The SavePath is
null
.

See Also

XmlConfigSource Class | Nini.Config Namespace | XmlConfigSource.Save Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.ConfigAdded.html0000644000175000017500000000510610410343260027105 0ustar meebeymeebey ConfigCollection.ConfigAdded Event
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.ConfigAdded Event

Occurs when a config is added.

public event ConfigEventHandler ConfigAdded;

Event Data

The event handler receives an argument of type ConfigEventArgs containing data related to this event. The following ConfigEventArgs property provides information specific to this event.

Property Description
Config  

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigCollection.IndexOf.html0000644000175000017500000000462610410343260026320 0ustar meebeymeebey ConfigCollection.IndexOf Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigCollection.IndexOf Method 

Returns the index of an IConfig in the collection.

public int IndexOf(
   object config
);

Parameters

config
The IConfig to search for.

Implements

IList.IndexOf

Remarks

It returns -1 if the IConfig was not found.

See Also

ConfigCollection Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.GetString_overload_1.html0000644000175000017500000000424210410343260027074 0ustar meebeymeebey IConfig.GetString Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.GetString Method (String)

Returns a string key value.

string GetString(
   string key
);

Parameters

key
Configuration key.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.GetString Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.IConfig.Get_overload_1.html0000644000175000017500000000416210410343260025706 0ustar meebeymeebey IConfig.Get Method (String)
Nini Library API Reference - http://nini.sourceforge.net/

IConfig.Get Method (String)

Returns a string key value.

string Get(
   string key
);

Parameters

key
Configuration key.

See Also

IConfig Interface | Nini.Config Namespace | IConfig.Get Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.AliasText.AddAlias_overload_3.html0000644000175000017500000000501410410343256027215 0ustar meebeymeebey AliasText.AddAlias Method (String, Enum)
Nini Library API Reference - http://nini.sourceforge.net/

AliasText.AddAlias Method (String, Enum)

Adds a new alias using the items in an enumeration.

public void AddAlias(
   string key,
   Enum enumAlias
);

Parameters

key
Config key.
enumAlias
An enum instance.

Remarks

This method is not available for the .NET Compact Framework version of Nini.

See Also

AliasText Class | Nini.Config Namespace | AliasText.AddAlias Overload List


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigBase.OnKeyRemoved.html0000644000175000017500000000430310410343256026107 0ustar meebeymeebey ConfigBase.OnKeyRemoved Method
Nini Library API Reference - http://nini.sourceforge.net/

ConfigBase.OnKeyRemoved Method 

Raises the KeyRemoved event.

protected void OnKeyRemoved(
   ConfigKeyEventArgs e
);

Parameters

e
The EventArgs object that contains all event data.

Remarks

Raising an event invokes the event handler through a delegate.

See Also

ConfigBase Class | Nini.Config Namespace


nini-1.1.0+dfsg.2/Docs/Reference/html/Nini.Config.ConfigKeyEventArgs.html0000644000175000017500000000512310410343260025232 0ustar meebeymeebey ConfigKeyEventArgs Class
Nini Library API Reference - http://nini.sourceforge.net/

ConfigKeyEventArgs Class

For a list of all members of this type, see ConfigKeyEventArgs Members.

System.Object
   System.EventArgs
      Nini.Config.ConfigKeyEventArgs

public class ConfigKeyEventArgs : EventArgs

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Requirements

Namespace: Nini.Config

Assembly: Nini (in Nini.dll)

See Also

ConfigKeyEventArgs Members | Nini.Config Namespace


nini-1.1.0+dfsg.2/CHANGELOG.txt0000644000175000017500000000625310410340204015045 0ustar meebeymeebey---------------------- Nini Project ChangeLog ---------------------- This contains a listing of all changes between versions of Nini. Version 1.1.0 (Wed, Mar 22 2006) -------------------------------- * Very much improved INI load and save support * Added Load methods to all INI and XML based classes * Added MySQL INI support * Added Windows INI (Win32 API GetPrivateProfileString) support * Added GetExpanded method to expand key values without replacing * Added Registry config saving and key remove support * Added a CaseSensitive property for the IniConfigSource class * Fixed multiple long-standing bugs * Split up the manual into a table of contents and 5 chapters * Updated build with .NET 2.0 support * Updated all projects files to Visual Studio 2003 Version 1.0.0 (Mon, Jul 25 2005) -------------------------------- * Added event delegates for Saved, Reloaded, KeySet, KeyRemoved, etc * Added a signed Mono build * Added IConfig.Contains method * Added Save to Stream to all IConfigSource classes * Added rename IConfig support * Added much improved error messages * Fixed a couple elusive crashing bugs Version 0.9.2 (Mon, Mar 14 2005) -------------------------------- * .NET Compact Framework support * Improved INI compatibility (Bug 1105692) * VB.NET examples added to manual * Fixed a few small bugs Version 0.9.1 (Sun, Jan 09 2005) -------------------------------- * Added ToString override to Xml, Ini, and DotNet sources * Added Reload method to all IConfigSource classes * Added GetValues method to IConfig * ConfigCollection class now implements IList (RemoveAt, Contains, etc) * Added Tips/Tricks section to the manual * Added empty constructor for creating configs in memory to all sources * Added verbose switch (-v) to Nini Editor * Added create new file switch (-n) to Nini Editor * Added "Using Nini Effectively" section to the manual * Fixed several Save method bugs among others Version 0.9.0 (Sun, Nov 14 2004) -------------------------------- * Made engine faster and more CLS compliant (FxCop). * Enhanced INI support for loading Samba smb.conf and Python files * Several bug fixes and documentation additions * The IConfigSource GlobalAlias property has been changed to Alias * The '#' comment is no longer valid for the default INI file type Version 0.8.0 (Sat, Oct 02 2004) -------------------------------- * Added key value replacement, add, remove, and command line configuration * Enhanced merging support * Added a new Examples directory * Added the Nini Editor, which is a command-line configuration file editor Version 0.7.1 (Thu, Jul 15 2004) -------------------------------- * Fixed a major bug with the IniReader that caused an infinite loop Version 0.7.0 (Tue, Jul 13 2004) -------------------------------- * Added XML and Windows Registry configuration sources. * Added new Merge method has been added Version 0.6.0 (Tue, Jun 22 2004) -------------------------------- * Added setting and saving of configuration values * The INI classes have been optimized for speedy retrieval * Several bugs have been fixed Version 0.5.0 (Sun, Jun 06 2004) --------------------------------- * First public release. nini-1.1.0+dfsg.2/Source/0000755000175000017500000000000010410343152014254 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/AssemblyInfo.cs0000644000175000017500000000364310410335220017201 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Reflection; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; #if (NET_1_0) [assembly: AssemblyTitle("Nini for .NET Framework 1.0")] #elif (NET_1_1) [assembly: AssemblyTitle("Nini for .NET Framework 1.1")] #elif (NET_2_0) [assembly: AssemblyTitle("Nini for .NET Framework 2.0")] #elif (MONO_1_1) [assembly: AssemblyTitle("Nini for Mono 1.1")] #elif (NET_COMPACT_1_0) [assembly: AssemblyTitle("Nini for .NET Compact Framework 1.0")] #else [assembly: AssemblyTitle("Nini")] #endif [assembly: AssemblyDescription(".NET Configuration Library - http://nini.sourceforge.net/")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Brent R. Matzelle")] [assembly: AssemblyProduct("Nini")] [assembly: AssemblyCopyright("Copyright (c) 2006 Brent R. Matzelle. All Rights Reserved.")] [assembly: AssemblyTrademark("Copyright (c) 2006 Brent R. Matzelle. All Rights Reserved.")] [assembly: AssemblyDefaultAlias("Nini")] [assembly: AssemblyCulture("")] #if STRONG [assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile(@"..\..\Nini.key")] #endif [assembly: System.Reflection.AssemblyVersion("1.1.0.0")] [assembly:CLSCompliant(true)] // Required for CLS compliance // Mark as false by default and explicity set others as true [assembly:ComVisible(false)] // Permview attributes #if (NET_COMPACT_1_0) #else [assembly:IsolatedStorageFilePermission(SecurityAction.RequestMinimum)] [assembly:SecurityPermission(SecurityAction.RequestRefuse)] [assembly:FileIOPermission(SecurityAction.RequestMinimum)] #endif nini-1.1.0+dfsg.2/Source/Test/0000755000175000017500000000000010410343714015177 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/Test/NiniTest.csproj0000644000175000017500000001451210400654246020165 0ustar meebeymeebey nini-1.1.0+dfsg.2/Source/Test/Util/0000755000175000017500000000000010410342252016110 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/Test/Util/OrderedListTests.cs0000644000175000017500000000154410401132166021707 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using NUnit.Framework; using Nini.Util; namespace Nini.Test.Util { [TestFixture] public class OrderedListTests { [Test] public void BasicOrder () { OrderedList list = new OrderedList (); list.Add ("One", 1); list.Add ("Two", 2); list.Add ("Three", 3); Assert.AreEqual (1, list[0]); Assert.AreEqual (2, list[1]); Assert.AreEqual (3, list[2]); Assert.AreEqual (1, list["One"]); Assert.AreEqual (2, list["Two"]); Assert.AreEqual (3, list["Three"]); } } }nini-1.1.0+dfsg.2/Source/Test/Config/0000755000175000017500000000000010410342252016400 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/Test/Config/RegistryConfigSourceTests.cs0000644000175000017500000002620310401132164024073 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Xml; using Nini.Config; using NUnit.Framework; using Microsoft.Win32; namespace Nini.Test.Config { [TestFixture] public class RegistryConfigSourceTests { #region Tests [Test] public void GetSingleLevel () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); Assert.AreEqual ("Chi-chi", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual (5, config.GetInt ("count")); } [Test] [ExpectedException (typeof (ArgumentException))] public void NonExistantKey () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\Does\\NotExist"); } [Test] public void SetAndSaveNormal () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Chi-chi", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual (5, config.GetInt ("count")); config.Set ("cat", "Muffy"); config.Set ("dog", "Spots"); config.Set ("DoesNotExist", "SomeValue"); config.Set ("count", 4); source.Save (); source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); config = source.Configs["Pets"]; Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("SomeValue", config.Get ("DoesNotExist")); Assert.AreEqual (4, config.GetInt ("count")); } [Test] public void Flattened () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp", RegistryRecurse.Flattened); IConfig config = source.Configs["NiniTestApp"]; Assert.AreEqual ("Configuration Library", config.Get ("Description")); config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); Assert.AreEqual ("Chi-chi", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual (5, config.GetInt ("count")); config.Set ("cat", "Muffy"); config.Set ("dog", "Spots"); config.Set ("count", 4); source.Save (); source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); config = source.Configs["Pets"]; Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual (4, config.GetInt ("count")); } [Test] public void Namespacing () { RegistryConfigSource source = new RegistryConfigSource (); RegistryKey key = Registry.LocalMachine.OpenSubKey ("Software"); source.AddMapping (key, "NiniTestApp", RegistryRecurse.Namespacing); IConfig config = source.Configs["NiniTestApp"]; Assert.AreEqual ("Configuration Library", config.Get ("Description")); config = source.Configs["NiniTestApp\\Pets"]; Assert.AreEqual ("NiniTestApp\\Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); Assert.AreEqual ("Chi-chi", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual (5, config.GetInt ("count")); config.Set ("cat", "Muffy"); config.Set ("dog", "Spots"); config.Set ("count", 4); source.Save (); source = new RegistryConfigSource (); key = Registry.LocalMachine.OpenSubKey ("Software"); source.AddMapping (key, "NiniTestApp", RegistryRecurse.Namespacing); config = source.Configs["NiniTestApp\\Pets"]; Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual (4, config.GetInt ("count")); } [Test] public void MergeAndSave () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Chi-chi", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual (5, config.GetInt ("count")); StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine ("cat = Becky"); // overwrite writer.WriteLine ("lizard = Saurus"); // new writer.WriteLine ("[People]"); writer.WriteLine (" woman = Jane"); writer.WriteLine (" man = John"); IniConfigSource iniSource = new IniConfigSource (new StringReader (writer.ToString ())); source.Merge (iniSource); config = source.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = source.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Jane", config.Get ("woman")); Assert.AreEqual ("John", config.Get ("man")); config.Set ("woman", "Tara"); config.Set ("man", "Quentin"); source.Save (); source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); config = source.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = source.Configs["People"]; Assert.IsNull (config); // you cannot merge new sections /* Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Tara", config.Get ("woman")); Assert.AreEqual ("Quentin", config.Get ("man")); */ } [Test] public void Reload () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); source.Configs["Pets"].Set ("cat", "Muffy"); source.Save (); Assert.AreEqual (3, source.Configs["Pets"].GetKeys ().Length); Assert.AreEqual ("Muffy", source.Configs["Pets"].Get ("cat")); RegistryConfigSource newSource = new RegistryConfigSource (); newSource.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); Assert.AreEqual (3, newSource.Configs["Pets"].GetKeys ().Length); Assert.AreEqual ("Muffy", newSource.Configs["Pets"].Get ("cat")); source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); source.Configs["Pets"].Set ("cat", "Misha"); source.Save (); // saves new value newSource.Reload (); Assert.AreEqual (3, newSource.Configs["Pets"].GetKeys ().Length); Assert.AreEqual ("Misha", newSource.Configs["Pets"].Get ("cat")); } [Test] public void AddConfig () { RegistryConfigSource source = new RegistryConfigSource (); RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\NiniTestApp", true); IConfig config = source.AddConfig ("People", key); config.Set ("woman", "Tara"); config.Set ("man", "Quentin"); source.Save (); source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\People"); Assert.AreEqual (1, source.Configs.Count); config = source.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Tara", config.Get ("woman")); Assert.AreEqual ("Quentin", config.Get ("man")); } [Test] public void AddConfigDefaultKey () { RegistryConfigSource source = new RegistryConfigSource (); source.DefaultKey = Registry.LocalMachine.OpenSubKey("Software\\NiniTestApp", true); IConfig config = source.AddConfig ("People"); config.Set ("woman", "Tara"); config.Set ("man", "Quentin"); source.Save (); source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\People"); Assert.AreEqual (1, source.Configs.Count); config = source.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Tara", config.Get ("woman")); Assert.AreEqual ("Quentin", config.Get ("man")); } [Test] [ExpectedException (typeof (ApplicationException))] public void AddConfigNoDefaultKey () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); IConfig config = source.AddConfig ("People"); } [Test] public void RemoveKey () { RegistryConfigSource source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); Assert.AreEqual ("Chi-chi", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual (5, config.GetInt ("count")); config.Remove ("dog"); source.Save (); source = new RegistryConfigSource (); source.AddMapping (Registry.LocalMachine, "Software\\NiniTestApp\\Pets"); config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); Assert.AreEqual ("Chi-chi", config.Get ("cat")); Assert.IsNull (config.Get ("dog")); Assert.AreEqual (5, config.GetInt ("count")); } #endregion #region Setup/tearDown [SetUp] public void Setup () { RegistryKey software = Registry.LocalMachine.OpenSubKey ("Software", true); RegistryKey nini = software.CreateSubKey ("NiniTestApp"); nini.SetValue ("Description", "Configuration Library"); nini.Flush (); RegistryKey pets = nini.CreateSubKey ("Pets"); pets.SetValue ("dog", "Rover"); pets.SetValue ("cat", "Chi-chi"); pets.SetValue ("count", 5); // set DWORD pets.Flush (); } [TearDown] public void TearDown () { RegistryKey software = Registry.LocalMachine.OpenSubKey ("Software", true); software.DeleteSubKeyTree ("NiniTestApp"); } #endregion #region Private methods #endregion } } nini-1.1.0+dfsg.2/Source/Test/Config/ConfigCollectionTests.cs0000644000175000017500000001006010401132164023167 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using Nini.Config; using NUnit.Framework; namespace Nini.Test.Config { [TestFixture] public class ConfigCollectionTests { #region Private variables IConfig eventConfig = null; ConfigCollection eventCollection = null; int configAddedCount = 0; int configRemovedCount = 0; #endregion #region Unit tests [Test] public void GetConfig () { ConfigBase config1 = new ConfigBase ("Test1", null); ConfigBase config2 = new ConfigBase ("Test2", null); ConfigBase config3 = new ConfigBase ("Test3", null); ConfigCollection collection = new ConfigCollection (null); collection.Add (config1); Assert.AreEqual (1, collection.Count); Assert.AreEqual (config1, collection[0]); collection.Add (config2); collection.Add (config3); Assert.AreEqual (3, collection.Count); Assert.AreEqual (config2, collection["Test2"]); Assert.AreEqual (config3, collection["Test3"]); Assert.AreEqual (config3, collection[2]); } [Test] [ExpectedException (typeof (ArgumentException))] public void AlreadyExistsException () { ConfigBase config = new ConfigBase ("Test", null); ConfigCollection collection = new ConfigCollection (null); collection.Add (config); collection.Add (config); // exception } [Test] public void NameAlreadyExists () { ConfigBase config1 = new ConfigBase ("Test", null); ConfigBase config2 = new ConfigBase ("Test", null); ConfigCollection collection = new ConfigCollection (null); collection.Add (config1); collection.Add (config2); // merges, no exception } [Test] public void AddAndRemove () { ConfigBase config1 = new ConfigBase ("Test", null); ConfigBase config2 = new ConfigBase ("Another", null); ConfigCollection collection = new ConfigCollection (null); collection.Add (config1); collection.Add (config2); Assert.AreEqual (2, collection.Count); Assert.IsNotNull (collection["Test"]); Assert.IsNotNull (collection["Another"]); collection.Remove (config2); Assert.AreEqual (1, collection.Count); Assert.IsNotNull (collection["Test"]); Assert.IsNull (collection["Another"]); } [Test] public void ConfigCollectionEvents () { IniConfigSource source = new IniConfigSource (); source.Configs.ConfigAdded += new ConfigEventHandler (this.source_configAdded); source.Configs.ConfigRemoved += new ConfigEventHandler (this.source_configRemoved); Assert.AreEqual (configAddedCount, 0); eventCollection = null; IConfig config = source.AddConfig ("Test"); Assert.IsTrue (source.Configs == eventCollection); Assert.AreEqual (configAddedCount, 1); Assert.AreEqual ("Test", eventConfig.Name); eventCollection = null; config = source.Configs.Add ("Test 2"); Assert.IsTrue (source.Configs == eventCollection); Assert.AreEqual (configAddedCount, 2); Assert.AreEqual ("Test 2", eventConfig.Name); eventCollection = null; source.Configs.RemoveAt (0); Assert.IsTrue (source.Configs == eventCollection); Assert.AreEqual (configAddedCount, 2); Assert.AreEqual ("Test", eventConfig.Name); } [SetUp] public void Setup () { eventConfig = null; eventCollection = null; configAddedCount = 0; configRemovedCount = 0; } #endregion #region Private methods private void source_configAdded (object sender, ConfigEventArgs e) { configAddedCount++; eventConfig = e.Config; eventCollection = (ConfigCollection)sender; } private void source_configRemoved (object sender, ConfigEventArgs e) { configRemovedCount++; eventConfig = e.Config; eventCollection = (ConfigCollection)sender; } #endregion } }nini-1.1.0+dfsg.2/Source/Test/Config/ArgvConfigSourceTests.cs0000644000175000017500000000531710404110236023164 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Xml; using System.Text; using Nini.Config; using NUnit.Framework; namespace Nini.Test.Config { [TestFixture] public class ArgvConfigSourceTests { #region Tests [Test] public void AddSwitch () { string[] arguments = new string[] { "--help", "-d", "doc.xml", "/pet:cat"}; ArgvConfigSource source = new ArgvConfigSource (arguments); source.AddSwitch ("Base", "help", "h"); source.AddSwitch ("Base", "doc", "d"); IConfig config = source.Configs["Base"]; Assert.IsNotNull (config.Get ("help")); Assert.IsNull (config.Get ("h")); Assert.IsNull (config.Get ("not here")); Assert.IsNull (config.Get ("pets")); Assert.AreEqual ("doc.xml", config.Get ("doc")); source.AddSwitch ("Pets", "pet"); config = source.Configs["Pets"]; Assert.IsNotNull (config.Get ("pet")); Assert.AreEqual ("cat", config.Get ("pet")); } [Test] public void AddSwitchCase () { string[] arguments = new string[] { "-H" }; ArgvConfigSource source = new ArgvConfigSource (arguments); source.AddSwitch ("Base", "help", "h"); source.AddSwitch ("Base", "heat", "H"); IConfig config = source.Configs["Base"]; Assert.IsNull (config.Get ("nothere")); Assert.AreEqual ("", config.Get ("help")); Assert.IsNotNull (config.Get ("heat")); } [Test] public void GetArguments () { string[] arguments = new string[] { "--help", "-d", "doc.xml", "/pet:cat"}; ArgvConfigSource source = new ArgvConfigSource (arguments); source.AddSwitch ("Base", "help", "h"); source.AddSwitch ("Base", "doc", "d"); source.AddSwitch ("Base", "short"); string[] args = source.GetArguments (); Assert.IsTrue (args != arguments); // must be a different instance Assert.AreEqual (4, args.Length); Assert.AreEqual ("--help", args[0]); Assert.AreEqual ("-d", args[1]); Assert.AreEqual ("doc.xml", args[2]); Assert.AreEqual ("/pet:cat", args[3]); } [Test] public void GetStringWithColon() { string[] arguments = new string[] {"-c", "\"D:\\test directory\""}; ArgvConfigSource source = new ArgvConfigSource (arguments); source.AddSwitch ("Base", "colon", "c"); Assert.AreEqual ("D:\\test directory", source.Configs["Base"].GetString("colon")); } #endregion #region Private methods #endregion } }nini-1.1.0+dfsg.2/Source/Test/Config/IniConfigSourceTests.cs0000644000175000017500000003311410401132164023001 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using Nini.Config; using NUnit.Framework; namespace Nini.Test.Config { [TestFixture] public class IniConfigSourceTests { [Test] public void SetAndSave () { string filePath = "Test.ini"; StreamWriter writer = new StreamWriter (filePath); writer.WriteLine ("; some comment"); writer.WriteLine ("[new section]"); writer.WriteLine (" dog = Rover"); writer.WriteLine (""); // empty line writer.WriteLine ("; a comment"); writer.WriteLine (" cat = Muffy"); writer.Close (); IniConfigSource source = new IniConfigSource (filePath); IConfig config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); config.Set ("dog", "Spots"); config.Set ("cat", "Misha"); config.Set ("DoesNotExist", "SomeValue"); Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); Assert.AreEqual ("SomeValue", config.Get ("DoesNotExist")); source.Save (); source = new IniConfigSource (filePath); config = source.Configs["new section"]; Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); Assert.AreEqual ("SomeValue", config.Get ("DoesNotExist")); File.Delete (filePath); } [Test] public void MergeAndSave () { string fileName = "NiniConfig.ini"; StreamWriter fileWriter = new StreamWriter (fileName); fileWriter.WriteLine ("[Pets]"); fileWriter.WriteLine ("cat = Muffy"); // overwrite fileWriter.WriteLine ("dog = Rover"); // new fileWriter.WriteLine ("bird = Tweety"); fileWriter.Close (); StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine ("cat = Becky"); // overwrite writer.WriteLine ("lizard = Saurus"); // new writer.WriteLine ("[People]"); writer.WriteLine (" woman = Jane"); writer.WriteLine (" man = John"); IniConfigSource iniSource = new IniConfigSource (new StringReader (writer.ToString ())); IniConfigSource source = new IniConfigSource (fileName); source.Merge (iniSource); IConfig config = source.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = source.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Jane", config.Get ("woman")); Assert.AreEqual ("John", config.Get ("man")); config.Set ("woman", "Tara"); config.Set ("man", "Quentin"); source.Save (); source = new IniConfigSource (fileName); config = source.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = source.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Tara", config.Get ("woman")); Assert.AreEqual ("Quentin", config.Get ("man")); File.Delete (fileName); } [Test] public void SaveToNewPath () { string filePath = "Test.ini"; string newPath = "TestNew.ini"; StreamWriter writer = new StreamWriter (filePath); writer.WriteLine ("; some comment"); writer.WriteLine ("[new section]"); writer.WriteLine (" dog = Rover"); writer.WriteLine (" cat = Muffy"); writer.Close (); IniConfigSource source = new IniConfigSource (filePath); IConfig config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); source.Save (newPath); source = new IniConfigSource (newPath); config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); File.Delete (filePath); File.Delete (newPath); } [Test] public void SaveToWriter () { string newPath = "TestNew.ini"; StringWriter writer = new StringWriter (); writer.WriteLine ("; some comment"); writer.WriteLine ("[new section]"); writer.WriteLine (" dog = Rover"); writer.WriteLine (" cat = Muffy"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); Assert.IsNull (source.SavePath); IConfig config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); StreamWriter textWriter = new StreamWriter (newPath); source.Save (textWriter); textWriter.Close (); // save to disk source = new IniConfigSource (newPath); Assert.AreEqual (newPath, source.SavePath); config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); File.Delete (newPath); } [Test] public void SaveAfterTextWriter () { string filePath = "Test.ini"; StreamWriter writer = new StreamWriter (filePath); writer.WriteLine ("[new section]"); writer.WriteLine (" dog = Rover"); writer.Close (); IniConfigSource source = new IniConfigSource (filePath); Assert.AreEqual (filePath, source.SavePath); StringWriter textWriter = new StringWriter (); source.Save (textWriter); Assert.IsNull (source.SavePath); File.Delete (filePath); } [Test] public void SaveNewSection () { string filePath = "Test.xml"; StringWriter writer = new StringWriter (); writer.WriteLine ("; some comment"); writer.WriteLine ("[new section]"); writer.WriteLine (" dog = Rover"); writer.WriteLine (" cat = Muffy"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.AddConfig ("test"); Assert.IsNotNull (source.Configs["test"]); source.Save (filePath); source = new IniConfigSource (filePath); config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.IsNotNull (source.Configs["test"]); File.Delete (filePath); } [Test] public void RemoveConfigAndKeyFromFile () { string filePath = "Test.ini"; StreamWriter writer = new StreamWriter (filePath); writer.WriteLine ("[test 1]"); writer.WriteLine (" dog = Rover"); writer.WriteLine ("[test 2]"); writer.WriteLine (" cat = Muffy"); writer.WriteLine (" lizard = Lizzy"); writer.Close (); IniConfigSource source = new IniConfigSource (filePath); Assert.IsNotNull (source.Configs["test 1"]); Assert.IsNotNull (source.Configs["test 2"]); Assert.IsNotNull (source.Configs["test 2"].Get ("cat")); source.Configs.Remove (source.Configs["test 1"]); source.Configs["test 2"].Remove ("cat"); source.AddConfig ("cause error"); source.Save (); source = new IniConfigSource (filePath); Assert.IsNull (source.Configs["test 1"]); Assert.IsNotNull (source.Configs["test 2"]); Assert.IsNull (source.Configs["test 2"].Get ("cat")); File.Delete (filePath); } [Test] public void ToStringTest () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" cat = muffy"); writer.WriteLine (" dog = rover"); writer.WriteLine (" bird = tweety"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); string eol = Environment.NewLine; string compare = "[Test]" + eol + "cat = muffy" + eol + "dog = rover" + eol + "bird = tweety" + eol; Assert.AreEqual (compare, source.ToString ()); } [Test] public void EmptyConstructor () { string filePath = "EmptyConstructor.ini"; IniConfigSource source = new IniConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("cat", "Muffy"); config.Set ("dog", "Rover"); config.Set ("bird", "Tweety"); source.Save (filePath); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Tweety", config.Get ("bird")); source = new IniConfigSource (filePath); config = source.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Tweety", config.Get ("bird")); File.Delete (filePath); } [Test] public void Reload () { string filePath = "Reload.ini"; // Create the original source file IniConfigSource source = new IniConfigSource (); IConfig petConfig = source.AddConfig ("Pets"); petConfig.Set ("cat", "Muffy"); petConfig.Set ("dog", "Rover"); IConfig weatherConfig = source.AddConfig ("Weather"); weatherConfig.Set ("skies", "cloudy"); weatherConfig.Set ("precipitation", "rain"); source.Save (filePath); Assert.AreEqual (2, petConfig.GetKeys ().Length); Assert.AreEqual ("Muffy", petConfig.Get ("cat")); Assert.AreEqual (2, source.Configs.Count); // Create another source file to set values and reload IniConfigSource newSource = new IniConfigSource (filePath); IConfig compareConfig = newSource.Configs["Pets"]; Assert.AreEqual (2, compareConfig.GetKeys ().Length); Assert.AreEqual ("Muffy", compareConfig.Get ("cat")); Assert.IsTrue (compareConfig == newSource.Configs["Pets"], "References before are not equal"); // Set the new values to source source.Configs["Pets"].Set ("cat", "Misha"); source.Configs["Pets"].Set ("lizard", "Lizzy"); source.Configs["Pets"].Set ("hampster", "Surly"); source.Configs["Pets"].Remove ("dog"); source.Configs.Remove (weatherConfig); source.Save (); // saves new value // Reload the new source and check for changes newSource.Reload (); Assert.IsTrue (compareConfig == newSource.Configs["Pets"], "References after are not equal"); Assert.AreEqual (1, newSource.Configs.Count); Assert.AreEqual (3, newSource.Configs["Pets"].GetKeys ().Length); Assert.AreEqual ("Lizzy", newSource.Configs["Pets"].Get ("lizard")); Assert.AreEqual ("Misha", newSource.Configs["Pets"].Get ("cat")); Assert.IsNull (newSource.Configs["Pets"].Get ("dog")); File.Delete (filePath); } [Test] public void FileClosedOnParseError () { string filePath = "Reload.ini"; StreamWriter writer = new StreamWriter (filePath); writer.WriteLine (" no section = boom!"); writer.Close (); try { IniConfigSource source = new IniConfigSource (filePath); } catch { // The file was still opened on a parse error File.Delete (filePath); } } [Test] public void SaveToStream () { string filePath = "SaveToStream.ini"; FileStream stream = new FileStream (filePath, FileMode.Create); // Create a new document and save to stream IniConfigSource source = new IniConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("dog", "rover"); config.Set ("cat", "muffy"); source.Save (stream); stream.Close (); IniConfigSource newSource = new IniConfigSource (filePath); config = newSource.Configs["Pets"]; Assert.IsNotNull (config); Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("rover", config.GetString ("dog")); Assert.AreEqual ("muffy", config.GetString ("cat")); stream.Close (); File.Delete (filePath); } [Test] public void CaseInsensitive() { StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine ("cat = Becky"); // overwrite IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); source.CaseSensitive = false; Assert.AreEqual("Becky", source.Configs["Pets"].Get("CAT")); source.Configs["Pets"].Set("cAT", "New Name"); Assert.AreEqual("New Name", source.Configs["Pets"].Get("CAt")); source.Configs["Pets"].Remove("CAT"); Assert.IsNull(source.Configs["Pets"].Get("CaT")); } [Test] public void LoadPath () { string filePath = "Test.ini"; StreamWriter writer = new StreamWriter (filePath); writer.WriteLine ("; some comment"); writer.WriteLine ("[new section]"); writer.WriteLine (" dog = Rover"); writer.WriteLine (""); // empty line writer.WriteLine ("; a comment"); writer.WriteLine (" cat = Muffy"); writer.Close (); IniConfigSource source = new IniConfigSource (filePath); IConfig config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); config.Set ("dog", "Spots"); config.Set ("cat", "Misha"); config.Set ("DoesNotExist", "SomeValue"); source.Load (filePath); config = config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); File.Delete (filePath); } } }nini-1.1.0+dfsg.2/Source/Test/Config/DotNetConfigSourceTests.cs0000644000175000017500000004011510401132164023456 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Xml; using NUnit.Framework; using Nini.Config; namespace Nini.Test.Config { [TestFixture] public class DotNetConfigSourceTests { #region Tests [Test] public void GetConfig () { XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "cat", "muffy"); AddKey (doc, "Pets", "dog", "rover"); AddKey (doc, "Pets", "bird", "tweety"); DotNetConfigSource source = new DotNetConfigSource (DocumentToReader (doc)); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); } [Test] public void GetString () { XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "cat", "muffy"); AddKey (doc, "Pets", "dog", "rover"); AddKey (doc, "Pets", "bird", "tweety"); DotNetConfigSource source = new DotNetConfigSource (DocumentToReader (doc)); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("muffy", config.Get ("cat")); Assert.AreEqual ("rover", config.Get ("dog")); Assert.AreEqual ("muffy", config.GetString ("cat")); Assert.AreEqual ("rover", config.GetString ("dog")); Assert.AreEqual ("my default", config.Get ("Not Here", "my default")); Assert.IsNull (config.Get ("Not Here 2")); } [Test] public void GetInt () { XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "value 1", "49588"); DotNetConfigSource source = new DotNetConfigSource (DocumentToReader (doc)); IConfig config = source.Configs["Pets"]; Assert.AreEqual (49588, config.GetInt ("value 1")); Assert.AreEqual (12345, config.GetInt ("Not Here", 12345)); try { config.GetInt ("Not Here Also"); Assert.Fail (); } catch { } } [Test] public void SetAndSave () { string filePath = "Test.xml"; XmlDocument doc = NiniDoc (); AddSection (doc, "NewSection"); AddKey (doc, "NewSection", "dog", "Rover"); AddKey (doc, "NewSection", "cat", "Muffy"); doc.Save (filePath); DotNetConfigSource source = new DotNetConfigSource (filePath); IConfig config = source.Configs["NewSection"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); config.Set ("dog", "Spots"); config.Set ("cat", "Misha"); config.Set ("DoesNotExist", "SomeValue"); Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); Assert.AreEqual ("SomeValue", config.Get ("DoesNotExist")); source.Save (); source = new DotNetConfigSource (filePath); config = source.Configs["NewSection"]; Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); Assert.AreEqual ("SomeValue", config.Get ("DoesNotExist")); File.Delete (filePath); } [Test] public void MergeAndSave () { string xmlFileName = "NiniConfig.xml"; XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "cat", "Muffy"); AddKey (doc, "Pets", "dog", "Rover"); AddKey (doc, "Pets", "bird", "Tweety"); doc.Save (xmlFileName); StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine ("cat = Becky"); // overwrite writer.WriteLine ("lizard = Saurus"); // new writer.WriteLine ("[People]"); writer.WriteLine (" woman = Jane"); writer.WriteLine (" man = John"); IniConfigSource iniSource = new IniConfigSource (new StringReader (writer.ToString ())); DotNetConfigSource xmlSource = new DotNetConfigSource (xmlFileName); xmlSource.Merge (iniSource); IConfig config = xmlSource.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = xmlSource.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Jane", config.Get ("woman")); Assert.AreEqual ("John", config.Get ("man")); config.Set ("woman", "Tara"); config.Set ("man", "Quentin"); xmlSource.Save (); xmlSource = new DotNetConfigSource (xmlFileName); config = xmlSource.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = xmlSource.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Tara", config.Get ("woman")); Assert.AreEqual ("Quentin", config.Get ("man")); File.Delete (xmlFileName); } [Test] public void SaveToNewPath () { string filePath = "Test.xml"; string newPath = "TestNew.xml"; XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "cat", "Muffy"); AddKey (doc, "Pets", "dog", "Rover"); doc.Save (filePath); DotNetConfigSource source = new DotNetConfigSource (filePath); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); source.Save (newPath); source = new DotNetConfigSource (newPath); config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); File.Delete (filePath); File.Delete (newPath); } [Test] public void SaveToWriter () { string newPath = "TestNew.xml"; XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "cat", "Muffy"); AddKey (doc, "Pets","dog", "Rover"); DotNetConfigSource source = new DotNetConfigSource (DocumentToReader (doc)); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); StreamWriter textWriter = new StreamWriter (newPath); source.Save (textWriter); textWriter.Close (); // save to disk source = new DotNetConfigSource (newPath); config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); File.Delete (newPath); } [Test] public void ReplaceText () { XmlDocument doc = NiniDoc (); AddSection (doc, "Test"); AddKey (doc, "Test", "author", "Brent"); AddKey (doc, "Test", "domain", "${protocol}://nini.sf.net/"); AddKey (doc, "Test", "apache", "Apache implements ${protocol}"); AddKey (doc, "Test", "developer", "author of Nini: ${author} !"); AddKey (doc, "Test", "love", "We love the ${protocol} protocol"); AddKey (doc, "Test", "combination", "${author} likes ${protocol}"); AddKey (doc, "Test", "fact", "fact: ${apache}"); AddKey (doc, "Test", "protocol", "http"); DotNetConfigSource source = new DotNetConfigSource (DocumentToReader (doc)); source.ReplaceKeyValues (); IConfig config = source.Configs["Test"]; Assert.AreEqual ("http", config.Get ("protocol")); Assert.AreEqual ("fact: Apache implements http", config.Get ("fact")); Assert.AreEqual ("http://nini.sf.net/", config.Get ("domain")); Assert.AreEqual ("Apache implements http", config.Get ("apache")); Assert.AreEqual ("We love the http protocol", config.Get ("love")); Assert.AreEqual ("author of Nini: Brent !", config.Get ("developer")); Assert.AreEqual ("Brent likes http", config.Get ("combination")); } [Test] public void SaveNewSection () { string filePath = "Test.xml"; XmlDocument doc = NiniDoc (); AddSection (doc, "NewSection"); AddKey (doc, "NewSection", "dog", "Rover"); AddKey (doc, "NewSection", "cat", "Muffy"); doc.Save (filePath); DotNetConfigSource source = new DotNetConfigSource (filePath); IConfig config = source.AddConfig ("test"); Assert.IsNotNull (source.Configs["test"]); source.Save (); source = new DotNetConfigSource (filePath); config = source.Configs["NewSection"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.IsNotNull (source.Configs["test"]); File.Delete (filePath); } [Test] public void ToStringTest () { XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "cat", "Muffy"); AddKey (doc, "Pets", "dog", "Rover"); DotNetConfigSource source = new DotNetConfigSource (DocumentToReader (doc)); string eol = Environment.NewLine; string compare = "" + eol + "" + eol + " " + eol + "
" + eol + " " + eol + " " + eol + " " + eol + " " + eol + " " + eol + ""; Assert.AreEqual (compare, source.ToString ()); } [Test] public void EmptyConstructor () { string filePath = "EmptyConstructor.xml"; DotNetConfigSource source = new DotNetConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("cat", "Muffy"); config.Set ("dog", "Rover"); config.Set ("bird", "Tweety"); source.Save (filePath); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Tweety", config.Get ("bird")); source = new DotNetConfigSource (filePath); config = source.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Tweety", config.Get ("bird")); File.Delete (filePath); } [Test] public void Reload () { string filePath = "ReloadDot.xml"; DotNetConfigSource source = new DotNetConfigSource (); IConfig petConfig = source.AddConfig ("Pets"); petConfig.Set ("cat", "Muffy"); petConfig.Set ("dog", "Rover"); IConfig weatherConfig = source.AddConfig ("Weather"); weatherConfig.Set ("skies", "cloudy"); weatherConfig.Set ("precipitation", "rain"); source.Save (filePath); Assert.AreEqual (2, petConfig.GetKeys ().Length); Assert.AreEqual ("Muffy", petConfig.Get ("cat")); Assert.AreEqual (2, source.Configs.Count); DotNetConfigSource newSource = new DotNetConfigSource (filePath); IConfig compareConfig = newSource.Configs["Pets"]; Assert.AreEqual (2, compareConfig.GetKeys ().Length); Assert.AreEqual ("Muffy", compareConfig.Get ("cat")); Assert.IsTrue (compareConfig == newSource.Configs["Pets"], "References before are not equal"); // Set the new values to source source.Configs["Pets"].Set ("cat", "Misha"); source.Configs["Pets"].Set ("lizard", "Lizzy"); source.Configs["Pets"].Set ("hampster", "Surly"); source.Configs["Pets"].Remove ("dog"); source.Configs.Remove (weatherConfig); source.Save (); // saves new value // Reload the new source and check for changes newSource.Reload (); Assert.IsTrue (compareConfig == newSource.Configs["Pets"], "References after are not equal"); Assert.AreEqual (1, newSource.Configs.Count); Assert.AreEqual (3, newSource.Configs["Pets"].GetKeys ().Length); Assert.AreEqual ("Lizzy", newSource.Configs["Pets"].Get ("lizard")); Assert.AreEqual ("Misha", newSource.Configs["Pets"].Get ("cat")); Assert.IsNull (newSource.Configs["Pets"].Get ("dog")); File.Delete (filePath); } [Test] public void SaveToStream () { string filePath = "SaveToStream.ini"; FileStream stream = new FileStream (filePath, FileMode.Create); // Create a new document and save to stream DotNetConfigSource source = new DotNetConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("dog", "rover"); config.Set ("cat", "muffy"); source.Save (stream); stream.Close (); DotNetConfigSource newSource = new DotNetConfigSource (filePath); config = newSource.Configs["Pets"]; Assert.IsNotNull (config); Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("rover", config.GetString ("dog")); Assert.AreEqual ("muffy", config.GetString ("cat")); stream.Close (); File.Delete (filePath); } [Test] public void NoConfigSectionsNode () { string filePath = "AppSettings.xml"; // Create an XML document with no configSections node XmlDocument doc = new XmlDocument (); doc.LoadXml (""); XmlNode node = doc.CreateElement ("appSettings"); doc.DocumentElement.AppendChild (node); AddKey (doc, "appSettings", "Test", "Hello"); doc.Save (filePath); DotNetConfigSource source = new DotNetConfigSource (filePath); IConfig config = source.Configs["appSettings"]; Assert.AreEqual ("Hello", config.GetString ("Test")); File.Delete (filePath); } [Test] public void LoadReader () { XmlDocument doc = NiniDoc (); AddSection (doc, "Pets"); AddKey (doc, "Pets", "cat", "muffy"); AddKey (doc, "Pets", "dog", "rover"); AddKey (doc, "Pets", "bird", "tweety"); DotNetConfigSource source = new DotNetConfigSource (DocumentToReader (doc)); IConfig config = source.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("rover", config.Get ("dog")); config.Set ("dog", "new name"); config.Remove ("bird"); source.Load (DocumentToReader (doc)); config = source.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("rover", config.Get ("dog")); } #endregion #region Private methods private XmlDocument NiniDoc () { XmlDocument doc = new XmlDocument (); doc.LoadXml (""); return doc; } private void AddSection (XmlDocument doc, string sectionName) { XmlNode node = doc.SelectSingleNode ("/configuration/configSections"); XmlNode sectionNode = doc.CreateElement ("section"); node.AppendChild (sectionNode); XmlNode attrNode = doc.CreateAttribute ("name"); attrNode.Value = sectionName; sectionNode.Attributes.SetNamedItem (attrNode); attrNode = doc.CreateAttribute ("type"); attrNode.Value = "System.Configuration.NameValueSectionHandler"; sectionNode.Attributes.SetNamedItem (attrNode); if (sectionName.IndexOf (' ') != -1) { Console.WriteLine (sectionName); } sectionNode = doc.CreateElement (sectionName); doc.DocumentElement.AppendChild (sectionNode); } private void AddKey (XmlDocument doc, string section, string key, string value) { XmlNode sectionNode = doc.SelectSingleNode ("/configuration/" + section); XmlNode keyNode = doc.CreateElement ("add"); XmlNode attrNode = doc.CreateAttribute ("key"); attrNode.Value = key; keyNode.Attributes.SetNamedItem (attrNode); attrNode = doc.CreateAttribute ("value"); attrNode.Value = value; keyNode.Attributes.SetNamedItem (attrNode); sectionNode.AppendChild (keyNode); } private XmlTextReader DocumentToReader (XmlDocument doc) { StringReader reader = new StringReader (doc.OuterXml); return new XmlTextReader (reader); } #endregion } } nini-1.1.0+dfsg.2/Source/Test/Config/ConfigBaseTests.cs0000644000175000017500000002565410401132174021766 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using Nini.Config; using NUnit.Framework; namespace Nini.Test.Config { [TestFixture] public class ConfigBaseTests { [Test] public void GetConfig () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine (" cat = muffy"); writer.WriteLine (" dog = rover"); writer.WriteLine (" bird = tweety"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); } [Test] public void GetString () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" cat = muffy"); writer.WriteLine (" dog = rover"); writer.WriteLine (" bird = tweety"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; Assert.AreEqual ("muffy", config.Get ("cat")); Assert.AreEqual ("rover", config.Get ("dog")); Assert.AreEqual ("muffy", config.GetString ("cat")); Assert.AreEqual ("rover", config.GetString ("dog")); Assert.AreEqual ("my default", config.Get ("Not Here", "my default")); Assert.IsNull (config.Get ("Not Here 2")); } [Test] public void GetInt () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" value 1 = 49588"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; Assert.AreEqual (49588, config.GetInt ("value 1")); Assert.AreEqual (12345, config.GetInt ("Not Here", 12345)); try { config.GetInt ("Not Here Also"); Assert.Fail (); } catch { } } [Test] public void GetLong () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" value 1 = 4000000000"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; Assert.AreEqual (4000000000, config.GetLong ("value 1")); Assert.AreEqual (5000000000, config.GetLong ("Not Here", 5000000000)); try { config.GetLong ("Not Here Also"); Assert.Fail (); } catch { } } [Test] public void GetFloat () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" value 1 = 494.59"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; Assert.AreEqual (494.59, config.GetFloat ("value 1")); Assert.AreEqual ((float)5656.2853, config.GetFloat ("Not Here", (float)5656.2853)); } [Test] public void BooleanAlias () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" bool 1 = TrUe"); writer.WriteLine (" bool 2 = FalSe"); writer.WriteLine (" bool 3 = ON"); writer.WriteLine (" bool 4 = OfF"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; config.Alias.AddAlias ("true", true); config.Alias.AddAlias ("false", false); config.Alias.AddAlias ("on", true); config.Alias.AddAlias ("off", false); Assert.IsTrue (config.GetBoolean ("bool 1")); Assert.IsFalse (config.GetBoolean ("bool 2")); Assert.IsTrue (config.GetBoolean ("bool 3")); Assert.IsFalse (config.GetBoolean ("bool 4")); Assert.IsTrue (config.GetBoolean ("Not Here", true)); } [Test] [ExpectedException (typeof (ArgumentException))] public void BooleanAliasNoDefault () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" bool 1 = TrUe"); writer.WriteLine (" bool 2 = FalSe"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; config.Alias.AddAlias ("true", true); config.Alias.AddAlias ("false", false); Assert.IsTrue (config.GetBoolean ("Not Here", true)); Assert.IsFalse (config.GetBoolean ("Not Here Also")); } [Test] [ExpectedException (typeof (ArgumentException))] public void NonBooleanParameter () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" bool 1 = not boolean"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; config.Alias.AddAlias ("true", true); config.Alias.AddAlias ("false", false); Assert.IsTrue (config.GetBoolean ("bool 1")); } [Test] public void GetIntAlias () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" node type = TEXT"); writer.WriteLine (" error code = WARN"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); const int WARN = 100, ERROR = 200; IConfig config = source.Configs["Test"]; config.Alias.AddAlias ("error code", "waRn", WARN); config.Alias.AddAlias ("error code", "eRRor", ERROR); config.Alias.AddAlias ("node type", new System.Xml.XmlNodeType ()); config.Alias.AddAlias ("default", "age", 31); Assert.AreEqual (WARN, config.GetInt ("error code", true)); Assert.AreEqual ((int)System.Xml.XmlNodeType.Text, config.GetInt ("node type", true)); Assert.AreEqual (31, config.GetInt ("default", 31, true)); } [Test] public void GetKeys () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" bool 1 = TrUe"); writer.WriteLine (" bool 2 = FalSe"); writer.WriteLine (" bool 3 = ON"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("bool 1", config.GetKeys ()[0]); Assert.AreEqual ("bool 2", config.GetKeys ()[1]); Assert.AreEqual ("bool 3", config.GetKeys ()[2]); } [Test] public void GetValues () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" key 1 = value 1"); writer.WriteLine (" key 2 = value 2"); writer.WriteLine (" key 3 = value 3"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Test"]; Assert.AreEqual (3, config.GetValues ().Length); Assert.AreEqual ("value 1", config.GetValues ()[0]); Assert.AreEqual ("value 2", config.GetValues ()[1]); Assert.AreEqual ("value 3", config.GetValues ()[2]); } [Test] public void SetAndRemove () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine (" cat = muffy"); writer.WriteLine (" dog = rover"); writer.WriteLine (" bird = tweety"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); config.Set ("snake", "cobra"); Assert.AreEqual (4, config.GetKeys ().Length); // Test removing Assert.IsNotNull (config.Get ("dog")); config.Remove ("dog"); Assert.AreEqual (3, config.GetKeys ().Length); Assert.IsNull (config.Get ("dog")); Assert.IsNotNull (config.Get ("snake")); } [Test] public void Rename () { IniConfigSource source = new IniConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("cat", "Muffy"); config.Set ("dog", "Rover"); config.Name = "MyPets"; Assert.AreEqual ("MyPets", config.Name); Assert.IsNull (source.Configs["Pets"]); IConfig newConfig = source.Configs["MyPets"]; Assert.AreEqual (config, newConfig); Assert.AreEqual (2, newConfig.GetKeys ().Length); } [Test] public void Contains () { IniConfigSource source = new IniConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("cat", "Muffy"); config.Set ("dog", "Rover"); Assert.IsTrue (config.Contains ("cat")); Assert.IsTrue (config.Contains ("dog")); config.Remove ("cat"); Assert.IsFalse (config.Contains ("cat")); Assert.IsTrue (config.Contains ("dog")); } [Test] public void ExpandString () { StringWriter writer = new StringWriter (); writer.WriteLine ("[web]"); writer.WriteLine (" apache = Apache implements ${protocol}"); writer.WriteLine (" protocol = http"); writer.WriteLine ("[server]"); writer.WriteLine (" domain = ${web|protocol}://nini.sf.net/"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["web"]; Assert.AreEqual ("http", config.Get ("protocol")); Assert.AreEqual ("Apache implements ${protocol}", config.Get ("apache")); Assert.AreEqual ("Apache implements http", config.GetExpanded ("apache")); Assert.AreEqual ("Apache implements ${protocol}", config.Get ("apache")); config = source.Configs["server"]; Assert.AreEqual ("http://nini.sf.net/", config.GetExpanded ("domain")); Assert.AreEqual ("${web|protocol}://nini.sf.net/", config.Get ("domain")); } [Test] public void ExpandWithEndBracket () { StringWriter writer = new StringWriter (); writer.WriteLine ("[web]"); writer.WriteLine (" apache = } Apache implements ${protocol}"); writer.WriteLine (" protocol = http"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["web"]; Assert.AreEqual ("} Apache implements http", config.GetExpanded ("apache")); } [Test] public void ExpandBackToBack () { StringWriter writer = new StringWriter (); writer.WriteLine ("[web]"); writer.WriteLine (" apache = Protocol: ${protocol}${version}"); writer.WriteLine (" protocol = http"); writer.WriteLine (" version = 1.1"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["web"]; Assert.AreEqual ("Protocol: http1.1", config.GetExpanded ("apache")); } } }nini-1.1.0+dfsg.2/Source/Test/Config/XmlConfigSourceTests.cs0000644000175000017500000004412410401132166023027 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Xml; using Nini.Config; using NUnit.Framework; namespace Nini.Test.Config { [TestFixture] public class XmlConfigSourceTests { #region Tests [Test] public void GetConfig () { StringWriter textWriter = new StringWriter (); XmlTextWriter writer = NiniWriter (textWriter); WriteSection (writer, "Pets"); WriteKey (writer, "cat", "muffy"); WriteKey (writer, "dog", "rover"); WriteKey (writer, "bird", "tweety"); writer.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); } [Test] public void GetConfigNotXmlDocument () { StringWriter textWriter = new StringWriter (); XmlTextWriter writer = NiniWriter (textWriter); WriteSection (writer, "Pets"); WriteKey (writer, "cat", "muffy"); WriteKey (writer, "dog", "rover"); WriteKey (writer, "bird", "tweety"); writer.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual (source, config.ConfigSource); } [Test] public void GetString () { StringWriter textWriter = new StringWriter (); XmlTextWriter writer = NiniWriter (textWriter); WriteSection (writer, "Pets"); WriteKey (writer, "cat", "muffy"); WriteKey (writer, "dog", "rover"); WriteKey (writer, "bird", "tweety"); writer.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("muffy", config.Get ("cat")); Assert.AreEqual ("rover", config.Get ("dog")); Assert.AreEqual ("muffy", config.GetString ("cat")); Assert.AreEqual ("rover", config.GetString ("dog")); Assert.AreEqual ("my default", config.Get ("Not Here", "my default")); Assert.IsNull (config.Get ("Not Here 2")); } [Test] public void GetInt () { StringWriter textWriter = new StringWriter (); XmlTextWriter writer = NiniWriter (textWriter); WriteSection (writer, "Pets"); WriteKey (writer, "value 1", "49588"); writer.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); IConfig config = source.Configs["Pets"]; Assert.AreEqual (49588, config.GetInt ("value 1")); Assert.AreEqual (12345, config.GetInt ("Not Here", 12345)); try { config.GetInt ("Not Here Also"); Assert.Fail (); } catch { } } [Test] public void SetAndSave () { string filePath = "Test.xml"; StreamWriter textWriter = File.CreateText (filePath); XmlTextWriter writer = NiniWriter (textWriter); WriteSection (writer, "new section"); WriteKey (writer, "dog", "Rover"); WriteKey (writer, "cat", "Muffy"); writer.WriteEndDocument (); textWriter.Close (); XmlConfigSource source = new XmlConfigSource (filePath); IConfig config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); config.Set ("dog", "Spots"); config.Set ("cat", "Misha"); config.Set ("DoesNotExist", "SomeValue"); Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); Assert.AreEqual ("SomeValue", config.Get ("DoesNotExist")); source.Save (); source = new XmlConfigSource (filePath); config = source.Configs["new section"]; Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); Assert.AreEqual ("SomeValue", config.Get ("DoesNotExist")); File.Delete (filePath); } [Test] public void MergeAndSave () { string xmlFileName = "NiniConfig.xml"; StreamWriter textWriter = new StreamWriter (xmlFileName); XmlTextWriter xmlWriter = NiniWriter (textWriter); WriteSection (xmlWriter, "Pets"); WriteKey (xmlWriter, "cat", "Muffy"); WriteKey (xmlWriter, "dog", "Rover"); WriteKey (xmlWriter, "bird", "Tweety"); xmlWriter.WriteEndDocument (); xmlWriter.Close (); StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine ("cat = Becky"); // overwrite writer.WriteLine ("lizard = Saurus"); // new writer.WriteLine ("[People]"); writer.WriteLine (" woman = Jane"); writer.WriteLine (" man = John"); IniConfigSource iniSource = new IniConfigSource (new StringReader (writer.ToString ())); XmlConfigSource xmlSource = new XmlConfigSource (xmlFileName); xmlSource.Merge (iniSource); IConfig config = xmlSource.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = xmlSource.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Jane", config.Get ("woman")); Assert.AreEqual ("John", config.Get ("man")); config.Set ("woman", "Tara"); config.Set ("man", "Quentin"); xmlSource.Save (); xmlSource = new XmlConfigSource (xmlFileName); config = xmlSource.Configs["Pets"]; Assert.AreEqual (4, config.GetKeys ().Length); Assert.AreEqual ("Becky", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Saurus", config.Get ("lizard")); config = xmlSource.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Tara", config.Get ("woman")); Assert.AreEqual ("Quentin", config.Get ("man")); File.Delete (xmlFileName); } [Test] public void SaveToNewPath () { string filePath = "Test.xml"; string newPath = "TestNew.xml"; StreamWriter textWriter = new StreamWriter (filePath); XmlTextWriter xmlWriter = NiniWriter (textWriter); WriteSection (xmlWriter, "Pets"); WriteKey (xmlWriter, "cat", "Muffy"); WriteKey (xmlWriter, "dog", "Rover"); xmlWriter.WriteEndDocument (); xmlWriter.Close (); XmlConfigSource source = new XmlConfigSource (filePath); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); source.Save (newPath); source = new XmlConfigSource (newPath); config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); File.Delete (filePath); File.Delete (newPath); } [Test] public void SaveToWriter () { string newPath = "TestNew.xml"; StringWriter writer = new StringWriter (); XmlTextWriter xmlWriter = NiniWriter (writer); WriteSection (xmlWriter, "Pets"); WriteKey (xmlWriter, "cat", "Muffy"); WriteKey (xmlWriter, "dog", "Rover"); xmlWriter.WriteEndDocument (); xmlWriter.Close (); StringReader reader = new StringReader (writer.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); StreamWriter textWriter = new StreamWriter (newPath); source.Save (textWriter); textWriter.Close (); // save to disk source = new XmlConfigSource (newPath); config = source.Configs["Pets"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); File.Delete (newPath); } [Test] public void ReplaceText () { StringWriter textWriter = new StringWriter (); XmlTextWriter xmlWriter = NiniWriter (textWriter); WriteSection (xmlWriter, "Test"); WriteKey (xmlWriter, "author", "Brent"); WriteKey (xmlWriter, "domain", "${protocol}://nini.sf.net/"); WriteKey (xmlWriter, "apache", "Apache implements ${protocol}"); WriteKey (xmlWriter, "developer", "author of Nini: ${author} !"); WriteKey (xmlWriter, "love", "We love the ${protocol} protocol"); WriteKey (xmlWriter, "combination", "${author} likes ${protocol}"); WriteKey (xmlWriter, "fact", "fact: ${apache}"); WriteKey (xmlWriter, "protocol", "http"); xmlWriter.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); source.ReplaceKeyValues (); IConfig config = source.Configs["Test"]; Assert.AreEqual ("http", config.Get ("protocol")); Assert.AreEqual ("fact: Apache implements http", config.Get ("fact")); Assert.AreEqual ("http://nini.sf.net/", config.Get ("domain")); Assert.AreEqual ("Apache implements http", config.Get ("apache")); Assert.AreEqual ("We love the http protocol", config.Get ("love")); Assert.AreEqual ("author of Nini: Brent !", config.Get ("developer")); Assert.AreEqual ("Brent likes http", config.Get ("combination")); } [Test] public void SaveNewSection () { string filePath = "Test.xml"; StringWriter textWriter = new StringWriter (); XmlTextWriter writer = NiniWriter (textWriter); WriteSection (writer, "new section"); WriteKey (writer, "dog", "Rover"); WriteKey (writer, "cat", "Muffy"); writer.WriteEndDocument (); XmlDocument doc = new XmlDocument (); doc.LoadXml (textWriter.ToString ()); doc.Save (filePath); XmlConfigSource source = new XmlConfigSource (filePath); IConfig config = source.AddConfig ("test"); Assert.IsNotNull (source.Configs["test"]); source.Save (); source = new XmlConfigSource (filePath); config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.IsNotNull (source.Configs["test"]); File.Delete (filePath); } [Test] public void RemoveConfigAndKeyFromFile () { string filePath = "Test.xml"; StreamWriter xmlWriter = new StreamWriter (filePath); XmlTextWriter writer = NiniWriter (xmlWriter); WriteSection (writer, "test 1"); WriteKey (writer, "dog", "Rover"); writer.WriteEndElement (); WriteSection (writer, "test 2"); WriteKey (writer, "cat", "Muffy"); WriteKey (writer, "lizard", "Lizzy"); writer.WriteEndDocument (); xmlWriter.Close (); XmlConfigSource source = new XmlConfigSource (filePath); Assert.IsNotNull (source.Configs["test 1"]); Assert.IsNotNull (source.Configs["test 2"]); Assert.IsNotNull (source.Configs["test 2"].Get ("cat")); source.Configs.Remove (source.Configs["test 1"]); source.Configs["test 2"].Remove ("cat"); source.AddConfig ("cause error"); source.Save (); source = new XmlConfigSource (filePath); Assert.IsNull (source.Configs["test 1"]); Assert.IsNotNull (source.Configs["test 2"]); Assert.IsNull (source.Configs["test 2"].Get ("cat")); File.Delete (filePath); } [Test] public void ToStringTest () { StringWriter writer = new StringWriter (); XmlTextWriter xmlWriter = NiniWriter (writer); WriteSection (xmlWriter, "Pets"); WriteKey (xmlWriter, "cat", "Muffy"); WriteKey (xmlWriter, "dog", "Rover"); xmlWriter.WriteEndDocument (); xmlWriter.Close (); StringReader reader = new StringReader (writer.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); string eol = Environment.NewLine; string compare = "" + eol + "" + eol + "
" + eol + " " + eol + " " + eol + "
" + eol + "
"; Assert.AreEqual (compare, source.ToString ()); } [Test] public void EmptyConstructor () { string filePath = "EmptyConstructor.xml"; XmlConfigSource source = new XmlConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("cat", "Muffy"); config.Set ("dog", "Rover"); config.Set ("bird", "Tweety"); source.Save (filePath); Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Tweety", config.Get ("bird")); source = new XmlConfigSource (filePath); config = source.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("Muffy", config.Get ("cat")); Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Tweety", config.Get ("bird")); File.Delete (filePath); } [Test] public void Reload () { string filePath = "Reload.xml"; XmlConfigSource source = new XmlConfigSource (); IConfig petConfig = source.AddConfig ("Pets"); petConfig.Set ("cat", "Muffy"); petConfig.Set ("dog", "Rover"); IConfig weatherConfig = source.AddConfig ("Weather"); weatherConfig.Set ("skies", "cloudy"); weatherConfig.Set ("precipitation", "rain"); source.Save (filePath); Assert.AreEqual (2, petConfig.GetKeys ().Length); Assert.AreEqual ("Muffy", petConfig.Get ("cat")); Assert.AreEqual (2, source.Configs.Count); XmlConfigSource newSource = new XmlConfigSource (filePath); IConfig compareConfig = newSource.Configs["Pets"]; Assert.AreEqual (2, compareConfig.GetKeys ().Length); Assert.AreEqual ("Muffy", compareConfig.Get ("cat")); Assert.IsTrue (compareConfig == newSource.Configs["Pets"], "References before are not equal"); // Set the new values to source source.Configs["Pets"].Set ("cat", "Misha"); source.Configs["Pets"].Set ("lizard", "Lizzy"); source.Configs["Pets"].Set ("hampster", "Surly"); source.Configs["Pets"].Remove ("dog"); source.Configs.Remove (weatherConfig); source.Save (); // saves new value // Reload the new source and check for changes newSource.Reload (); Assert.IsTrue (compareConfig == newSource.Configs["Pets"], "References after are not equal"); Assert.AreEqual (1, newSource.Configs.Count); Assert.AreEqual (3, newSource.Configs["Pets"].GetKeys ().Length); Assert.AreEqual ("Lizzy", newSource.Configs["Pets"].Get ("lizard")); Assert.AreEqual ("Misha", newSource.Configs["Pets"].Get ("cat")); Assert.IsNull (newSource.Configs["Pets"].Get ("dog")); File.Delete (filePath); } [Test] public void SaveToStream () { string filePath = "SaveToStream.ini"; FileStream stream = new FileStream (filePath, FileMode.Create); // Create a new document and save to stream XmlConfigSource source = new XmlConfigSource (); IConfig config = source.AddConfig ("Pets"); config.Set ("dog", "rover"); config.Set ("cat", "muffy"); source.Save (stream); stream.Close (); XmlConfigSource newSource = new XmlConfigSource (filePath); config = newSource.Configs["Pets"]; Assert.IsNotNull (config); Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("rover", config.GetString ("dog")); Assert.AreEqual ("muffy", config.GetString ("cat")); stream.Close (); File.Delete (filePath); } [Test] public void LoadReader () { StringWriter textWriter = new StringWriter (); XmlTextWriter writer = NiniWriter (textWriter); WriteSection (writer, "Pets"); WriteKey (writer, "cat", "muffy"); WriteKey (writer, "dog", "rover"); WriteKey (writer, "bird", "tweety"); writer.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); IConfig config = source.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("rover", config.Get ("dog")); config.Set ("dog", "new name"); config.Remove ("bird"); reader = new StringReader (textWriter.ToString ()); xmlReader = new XmlTextReader (reader); source.Load (xmlReader); config = source.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("rover", config.Get ("dog")); } #endregion #region Private methods private XmlTextWriter NiniWriter (TextWriter writer) { XmlTextWriter result = new XmlTextWriter (writer); result.Indentation = 0; result.WriteStartDocument (); result.WriteStartElement ("Nini"); return result; } private void WriteSection (XmlWriter writer, string sectionName) { writer.WriteStartElement ("Section"); writer.WriteAttributeString ("Name", sectionName); } private void WriteKey (XmlWriter writer, string key, string value) { writer.WriteStartElement ("Key"); writer.WriteAttributeString ("Name", key); writer.WriteAttributeString ("Value", value); writer.WriteEndElement (); } #endregion } }nini-1.1.0+dfsg.2/Source/Test/Config/DotNetConsoleTests.exe.config0000644000175000017500000000050110400654246024116 0ustar meebeymeebey
nini-1.1.0+dfsg.2/Source/Test/Config/DotNetConsoleTests.cs0000644000175000017500000000727510401132672022510 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using Nini.Config; namespace Nini.Test.Config { public class DotNetConsoleTests { static int assertCount = 0; public static int Main () { SetMessage ("Running tests..."); try { WebTest (); FileTest (); FileAndSaveTest (); } catch (Exception e) { SetMessage ("Exception occurred: " + e.Message + "\r\n" + "Stack trace: " + e.StackTrace); Failure (); } DisplayResults (); SetMessage ("All tests passed successfully"); return 0; } private static void WebTest () { string[] sections = new string[] { "appSettings", "Pets" }; DotNetConfigSource source = new DotNetConfigSource (sections); IConfig config = source.Configs["appSettings"]; Assert (config != null, "IConfig is null"); AssertEquals ("My App", config.Get ("App Name")); config = source.Configs["Pets"]; AssertEquals ("rover", config.Get ("dog")); AssertEquals ("muffy", config.Get ("cat")); Assert (config.Get("not here") == null, "Should not be present"); } private static void FileTest () { DotNetConfigSource source = new DotNetConfigSource (DotNetConfigSource.GetFullConfigPath ()); IConfig config = source.Configs["appSettings"]; Assert (config != null, "IConfig is null"); AssertEquals ("My App", config.Get ("App Name")); config = source.Configs["Pets"]; AssertEquals ("rover", config.Get ("dog")); AssertEquals ("muffy", config.Get ("cat")); Assert (config.Get("not here") == null, "Should not be present"); } private static void FileAndSaveTest () { DotNetConfigSource source = new DotNetConfigSource (DotNetConfigSource.GetFullConfigPath ()); IConfig config = source.Configs["appSettings"]; config = source.Configs["Pets"]; AssertEquals ("rover", config.Get ("dog")); AssertEquals ("muffy", config.Get ("cat")); Assert (config.Get("not here") == null, "Should not be present"); config.Set ("dog", "Spots"); config.Set ("cat", "Misha"); AssertEquals ("Spots", config.Get ("dog")); AssertEquals ("Misha", config.Get ("cat")); // Cannot perform save yet until technical issues resolved /* string fileName = "DotNetConfigSourceTests.exe.config"; source.Save (); source = new DotNetConfigSource (); config = source.Configs["Pets"]; AssertEquals ("Spots", config.Get ("dog")); AssertEquals ("Misha", config.Get ("cat")); File.Delete (fileName); */ } #region Test methods private static void DisplayResults () { SetMessage (""); SetMessage ("Total asserts: " + assertCount); } private static void Assert (bool value, string message) { assertCount++; if (!value) { SetMessage ("Assert failed: " + message); Failure (); } } private static void AssertEquals (string searchValue, string actualValue) { assertCount++; if (searchValue != actualValue) { SetMessage (String.Format ("Expected: [{0}], Actual: [{1}]. ", searchValue, actualValue)); Failure (); } } private static void Failure () { DisplayResults (); SetMessage ("Failure stopped operation"); Environment.Exit (1); } private static void SetMessage (string message) { Console.WriteLine (message); } #endregion } } nini-1.1.0+dfsg.2/Source/Test/Config/AliasTextTests.cs0000644000175000017500000000753410404110236021657 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using Nini.Config; using NUnit.Framework; namespace Nini.Test.Config { [TestFixture] public class AliasTextTests { [Test] public void GetBoolean () { AliasText alias = new AliasText (); Assert.IsFalse (alias.ContainsBoolean ("on")); Assert.IsFalse (alias.ContainsBoolean ("off")); alias.AddAlias ("oN", true); alias.AddAlias ("oFF", false); Assert.IsTrue (alias.ContainsBoolean ("oN")); Assert.IsTrue (alias.ContainsBoolean ("off")); Assert.IsTrue (alias.GetBoolean ("oN")); Assert.IsFalse (alias.GetBoolean ("OfF")); } [Test] public void GetDefaultAliases () { AliasText alias = new AliasText (); Assert.IsTrue (alias.ContainsBoolean ("true")); Assert.IsTrue (alias.ContainsBoolean ("false")); Assert.IsTrue (alias.GetBoolean ("tRUe")); Assert.IsFalse (alias.GetBoolean ("FaLse")); } [Test] [ExpectedException (typeof (ArgumentException))] public void NonExistantBooleanText () { AliasText alias = new AliasText (); alias.AddAlias ("true", true); alias.AddAlias ("faLSe", false); Assert.IsTrue (alias.GetBoolean ("Not present")); } [Test] public void GetInt () { AliasText alias = new AliasText (); Assert.IsFalse (alias.ContainsInt ("error code", "warn")); Assert.IsFalse (alias.ContainsInt ("error code", "error")); alias.AddAlias ("error code", "WaRn", 100); alias.AddAlias ("error code", "ErroR", 200); Assert.IsTrue (alias.ContainsInt ("error code", "warn")); Assert.IsTrue (alias.ContainsInt ("error code", "error")); Assert.AreEqual (100, alias.GetInt ("error code", "warn")); Assert.AreEqual (200, alias.GetInt ("error code", "ErroR")); } [Test] [ExpectedException (typeof (ArgumentException))] public void GetIntNonExistantText () { AliasText alias = new AliasText (); alias.AddAlias ("error code", "WaRn", 100); Assert.AreEqual (100, alias.GetInt ("error code", "not here")); } [Test] [ExpectedException (typeof (ArgumentException))] public void GetIntNonExistantKey () { AliasText alias = new AliasText (); alias.AddAlias ("error code", "WaRn", 100); Assert.AreEqual (100, alias.GetInt ("not exist", "warn")); } [Test] public void GetIntEnum () { AliasText alias = new AliasText (); alias.AddAlias ("node type", new System.Xml.XmlNodeType ()); Assert.AreEqual ((int)System.Xml.XmlNodeType.Text, alias.GetInt ("node type", "teXt")); Assert.AreEqual ((int)System.Xml.XmlNodeType.Attribute, alias.GetInt ("node type", "aTTribute")); try { alias.GetInt ("node type", "not here"); } catch { } } [Test] public void GlobalAlias () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" TurnOff = true"); writer.WriteLine (" ErrorCode = WARN"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); source.Alias.AddAlias ("true", true); source.Alias.AddAlias ("ErrorCode", "warn", 35); IConfig config = source.Configs["Test"]; Assert.AreEqual (35, config.GetInt ("ErrorCode", true)); Assert.IsTrue (config.GetBoolean ("TurnOff")); config.Alias.AddAlias ("true", false); config.Alias.AddAlias ("ErrorCode", "warn", 45); Assert.AreEqual (45, config.GetInt ("ErrorCode", true)); Assert.IsFalse (config.GetBoolean ("TurnOff")); } } } nini-1.1.0+dfsg.2/Source/Test/Config/ConfigSourceBaseTests.cs0000644000175000017500000004072610401132164023143 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Xml; using Nini.Config; using NUnit.Framework; namespace Nini.Test.Config { [TestFixture] public class ConfigSourceBaseTests { #region Private variables IConfig eventConfig = null; IConfigSource eventSource = null; int reloadedCount = 0; int savedCount = 0; string keyName = null; string keyValue = null; int keySetCount = 0; int keyRemovedCount = 0; #endregion #region Unit tests [Test] public void Merge () { StringWriter textWriter = new StringWriter (); XmlTextWriter xmlWriter = NiniWriter (textWriter); WriteSection (xmlWriter, "Pets"); WriteKey (xmlWriter, "cat", "muffy"); WriteKey (xmlWriter, "dog", "rover"); WriteKey (xmlWriter, "bird", "tweety"); xmlWriter.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource xmlSource = new XmlConfigSource (xmlReader); StringWriter writer = new StringWriter (); writer.WriteLine ("[People]"); writer.WriteLine (" woman = Jane"); writer.WriteLine (" man = John"); IniConfigSource iniSource = new IniConfigSource (new StringReader (writer.ToString ())); xmlSource.Merge (iniSource); IConfig config = xmlSource.Configs["Pets"]; Assert.AreEqual (3, config.GetKeys ().Length); Assert.AreEqual ("muffy", config.Get ("cat")); Assert.AreEqual ("rover", config.Get ("dog")); config = xmlSource.Configs["People"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("Jane", config.Get ("woman")); Assert.AreEqual ("John", config.Get ("man")); } [ExpectedException (typeof (ArgumentException))] public void MergeItself () { StringWriter writer = new StringWriter (); writer.WriteLine ("[People]"); writer.WriteLine (" woman = Jane"); writer.WriteLine (" man = John"); IniConfigSource iniSource = new IniConfigSource (new StringReader (writer.ToString ())); iniSource.Merge (iniSource); // exception } [ExpectedException (typeof (ArgumentException))] public void MergeExisting () { StringWriter textWriter = new StringWriter (); XmlTextWriter xmlWriter = NiniWriter (textWriter); WriteSection (xmlWriter, "Pets"); WriteKey (xmlWriter, "cat", "muffy"); xmlWriter.WriteEndDocument (); StringReader reader = new StringReader (xmlWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource xmlSource = new XmlConfigSource (xmlReader); StringWriter writer = new StringWriter (); writer.WriteLine ("[People]"); writer.WriteLine (" woman = Jane"); IniConfigSource iniSource = new IniConfigSource (new StringReader (writer.ToString ())); xmlSource.Merge (iniSource); xmlSource.Merge (iniSource); // exception } [Test] public void AutoSave () { string filePath = "AutoSaveTest.ini"; StreamWriter writer = new StreamWriter (filePath); writer.WriteLine ("; some comment"); writer.WriteLine ("[new section]"); writer.WriteLine (" dog = Rover"); writer.WriteLine (""); // empty line writer.WriteLine ("; a comment"); writer.WriteLine (" cat = Muffy"); writer.Close (); IniConfigSource source = new IniConfigSource (filePath); source.AutoSave = true; IConfig config = source.Configs["new section"]; Assert.AreEqual ("Rover", config.Get ("dog")); Assert.AreEqual ("Muffy", config.Get ("cat")); config.Set ("dog", "Spots"); config.Set ("cat", "Misha"); Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); source = new IniConfigSource (filePath); config = source.Configs["new section"]; Assert.AreEqual ("Spots", config.Get ("dog")); Assert.AreEqual ("Misha", config.Get ("cat")); File.Delete (filePath); } [Test] public void AddConfig () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" bool 1 = TrUe"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig newConfig = source.AddConfig ("NewConfig"); newConfig.Set ("NewKey", "NewValue"); newConfig.Set ("AnotherKey", "AnotherValue"); IConfig config = source.Configs["NewConfig"]; Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("NewValue", config.Get ("NewKey")); Assert.AreEqual ("AnotherValue", config.Get ("AnotherKey")); } [Test] public void ExpandText () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" author = Brent"); writer.WriteLine (" domain = ${protocol}://nini.sf.net/"); writer.WriteLine (" apache = Apache implements ${protocol}"); writer.WriteLine (" developer = author of Nini: ${author} !"); writer.WriteLine (" love = We love the ${protocol} protocol"); writer.WriteLine (" combination = ${author} likes ${protocol}"); writer.WriteLine (" fact = fact: ${apache}"); writer.WriteLine (" protocol = http"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); source.ExpandKeyValues (); IConfig config = source.Configs["Test"]; Assert.AreEqual ("http", config.Get ("protocol")); Assert.AreEqual ("fact: Apache implements http", config.Get ("fact")); Assert.AreEqual ("http://nini.sf.net/", config.Get ("domain")); Assert.AreEqual ("Apache implements http", config.Get ("apache")); Assert.AreEqual ("We love the http protocol", config.Get ("love")); Assert.AreEqual ("author of Nini: Brent !", config.Get ("developer")); Assert.AreEqual ("Brent likes http", config.Get ("combination")); } [Test] public void ExpandTextOtherSection () { StringWriter writer = new StringWriter (); writer.WriteLine ("[web]"); writer.WriteLine (" apache = Apache implements ${protocol}"); writer.WriteLine (" protocol = http"); writer.WriteLine ("[server]"); writer.WriteLine (" domain = ${web|protocol}://nini.sf.net/"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); source.ExpandKeyValues (); IConfig config = source.Configs["web"]; Assert.AreEqual ("http", config.Get ("protocol")); Assert.AreEqual ("Apache implements http", config.Get ("apache")); config = source.Configs["server"]; Assert.AreEqual ("http://nini.sf.net/", config.Get ("domain")); } [Test] public void ExpandKeyValuesMerge () { StringWriter writer = new StringWriter (); writer.WriteLine ("[web]"); writer.WriteLine (" protocol = http"); writer.WriteLine ("[server]"); writer.WriteLine (" domain1 = ${web|protocol}://nini.sf.net/"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); StringWriter newWriter = new StringWriter (); newWriter.WriteLine ("[web]"); newWriter.WriteLine (" apache = Apache implements ${protocol}"); newWriter.WriteLine ("[server]"); newWriter.WriteLine (" domain2 = ${web|protocol}://nini.sf.net/"); IniConfigSource newSource = new IniConfigSource (new StringReader (newWriter.ToString ())); source.Merge (newSource); source.ExpandKeyValues (); IConfig config = source.Configs["web"]; Assert.AreEqual ("http", config.Get ("protocol")); Assert.AreEqual ("Apache implements http", config.Get ("apache")); config = source.Configs["server"]; Assert.AreEqual ("http://nini.sf.net/", config.Get ("domain1")); Assert.AreEqual ("http://nini.sf.net/", config.Get ("domain2")); } [Test] public void AddNewConfigsAndKeys () { // Add some new configs and keys here and test. StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine (" cat = muffy"); writer.WriteLine (" dog = rover"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); Assert.AreEqual (2, config.GetKeys ().Length); IConfig newConfig = source.AddConfig ("NewTest"); newConfig.Set ("Author", "Brent"); newConfig.Set ("Birthday", "February 8th"); newConfig = source.AddConfig ("AnotherNew"); Assert.AreEqual (3, source.Configs.Count); config = source.Configs["NewTest"]; Assert.IsNotNull (config); Assert.AreEqual (2, config.GetKeys ().Length); Assert.AreEqual ("February 8th", config.Get ("Birthday")); Assert.AreEqual ("Brent", config.Get ("Author")); } [Test] public void GetBooleanSpace () { StringWriter textWriter = new StringWriter (); XmlTextWriter xmlWriter = NiniWriter (textWriter); WriteSection (xmlWriter, "Pets"); WriteKey (xmlWriter, "cat", "muffy"); WriteKey (xmlWriter, "dog", "rover"); WriteKey (xmlWriter, "Is Mammal", "False"); xmlWriter.WriteEndDocument (); StringReader reader = new StringReader (textWriter.ToString ()); XmlTextReader xmlReader = new XmlTextReader (reader); XmlConfigSource source = new XmlConfigSource (xmlReader); source.Alias.AddAlias ("true", true); source.Alias.AddAlias ("false", false); Assert.IsFalse (source.Configs["Pets"].GetBoolean ("Is Mammal", false)); } [Test] public void RemoveNonExistingKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine (" cat = muffy"); writer.WriteLine (" dog = rover"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); // This should not throw an exception source.Configs["Pets"].Remove ("Not here"); } [Test] public void SavingWithNonStrings () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine (" cat = muffy"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); StringWriter newWriter = new StringWriter (); IConfig config = source.Configs["Pets"]; Assert.AreEqual ("Pets", config.Name); config.Set ("count", 1); source.Save (newWriter); } [Test] public void ConfigSourceEvents () { string filePath = "EventTest.ini"; IniConfigSource source = new IniConfigSource (); source.Saved += new EventHandler (this.source_saved); source.Reloaded += new EventHandler (this.source_reloaded); Assert.IsNull (eventConfig); Assert.IsNull (eventSource); IConfig config = source.AddConfig ("Test"); eventSource = null; Assert.AreEqual (savedCount, 0); source.Save (filePath); Assert.AreEqual (savedCount, 1); Assert.IsTrue (source == eventSource); eventSource = null; source.Save (); Assert.AreEqual (savedCount, 2); Assert.IsTrue (source == eventSource); eventSource = null; Assert.AreEqual (reloadedCount, 0); source.Reload (); Assert.AreEqual (reloadedCount, 1); Assert.IsTrue (source == eventSource); File.Delete (filePath); } [Test] public void ConfigEvents () { IConfigSource source = new IniConfigSource (); IConfig config = source.AddConfig ("Test"); config.KeySet += new ConfigKeyEventHandler (this.config_keySet); config.KeyRemoved += new ConfigKeyEventHandler (this.config_keyRemoved); // Set key events Assert.AreEqual (keySetCount, 0); config.Set ("Test 1", "Value 1"); Assert.AreEqual (keySetCount, 1); Assert.AreEqual ("Test 1", keyName); Assert.AreEqual ("Value 1", keyValue); config.Set ("Test 2", "Value 2"); Assert.AreEqual (keySetCount, 2); Assert.AreEqual ("Test 2", keyName); Assert.AreEqual ("Value 2", keyValue); // Remove key events Assert.AreEqual (keyRemovedCount, 0); config.Remove ("Test 1"); Assert.AreEqual (keyRemovedCount, 1); Assert.AreEqual ("Test 1", keyName); Assert.AreEqual ("Value 1", keyValue); config.Remove ("Test 2"); Assert.AreEqual (keyRemovedCount, 2); Assert.AreEqual ("Test 2", keyName); Assert.AreEqual ("Value 2", keyValue); } [Test] public void ExpandKeyValuesConfigError () { StringWriter writer = new StringWriter (); writer.WriteLine ("[server]"); writer.WriteLine (" domain1 = ${web|protocol}://nini.sf.net/"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); try { source.ExpandKeyValues (); } catch (Exception ex) { Assert.AreEqual ("Expand config not found: web", ex.Message); } } [Test] public void ExpandKeyValuesKeyError () { StringWriter writer = new StringWriter (); writer.WriteLine ("[web]"); writer.WriteLine ("not-protocol = hah!"); writer.WriteLine ("[server]"); writer.WriteLine (" domain1 = ${web|protocol}://nini.sf.net/"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); try { source.ExpandKeyValues (); } catch (Exception ex) { Assert.AreEqual ("Expand key not found: protocol", ex.Message); } } [Test] public void ExpandKeyInfiniteRecursion () { StringWriter writer = new StringWriter (); writer.WriteLine ("[replace]"); writer.WriteLine ("test = ${test} broken"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); try { source.ExpandKeyValues (); } catch (ArgumentException ex) { Assert.AreEqual ("Key cannot have a expand value of itself: test", ex.Message); } } [Test] public void ConfigBaseGetErrors () { StringWriter writer = new StringWriter (); writer.WriteLine ("[web]"); writer.WriteLine ("; No keys"); IniConfigSource source = new IniConfigSource (new StringReader (writer.ToString ())); IConfig config = source.Configs["web"]; try { config.GetInt ("not_there"); } catch (Exception ex) { Assert.AreEqual ("Value not found: not_there", ex.Message); } try { config.GetFloat ("not_there"); } catch (Exception ex) { Assert.AreEqual ("Value not found: not_there", ex.Message); } try { config.GetDouble ("not_there"); } catch (Exception ex) { Assert.AreEqual ("Value not found: not_there", ex.Message); } try { config.GetLong ("not_there"); } catch (Exception ex) { Assert.AreEqual ("Value not found: not_there", ex.Message); } try { config.GetBoolean ("not_there"); } catch (Exception ex) { Assert.AreEqual ("Value not found: not_there", ex.Message); } } [SetUp] public void Setup () { eventConfig = null; eventSource = null; savedCount = 0; keySetCount = 0; keyRemovedCount = 0; } #endregion #region Private methods private void source_saved (object sender, EventArgs e) { savedCount++; eventSource = (IConfigSource)sender; } private void source_reloaded (object sender, EventArgs e) { reloadedCount++; eventSource = (IConfigSource)sender; } private void config_keySet (object sender, ConfigKeyEventArgs e) { keySetCount++; keyName = e.KeyName; keyValue = e.KeyValue; eventConfig = (IConfig)sender; } private void config_keyRemoved (object sender, ConfigKeyEventArgs e) { keyRemovedCount++; keyName = e.KeyName; keyValue = e.KeyValue; eventConfig = (IConfig)sender; } private XmlTextWriter NiniWriter (TextWriter writer) { XmlTextWriter result = new XmlTextWriter (writer); result.WriteStartDocument (); result.WriteStartElement ("Nini"); return result; } private void WriteSection (XmlWriter writer, string sectionName) { writer.WriteStartElement ("Section"); writer.WriteAttributeString ("Name", sectionName); } private void WriteKey (XmlWriter writer, string key, string value) { writer.WriteStartElement ("Key"); writer.WriteAttributeString ("Name", key); writer.WriteAttributeString ("Value", value); writer.WriteEndElement (); } #endregion } } nini-1.1.0+dfsg.2/Source/Test/Ini/0000755000175000017500000000000010410342252015712 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/Test/Ini/IniReaderTests.cs0000644000175000017500000003725310401132174021140 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using Nini.Ini; using NUnit.Framework; namespace Nini.Test.Ini { [TestFixture] public class IniReaderTests { #region General Tests [Test] public void NormalComment () { StringWriter writer = new StringWriter (); writer.WriteLine (""); writer.WriteLine (" ; Something"); writer.WriteLine (" ; Some comment "); writer.WriteLine (" ;"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.AreEqual (IniReadState.Initial, reader.ReadState); Assert.IsTrue (reader.Read ()); Assert.AreEqual (IniReadState.Interactive, reader.ReadState); Assert.AreEqual (IniType.Empty, reader.Type); Assert.AreEqual ("", reader.Name); Assert.AreEqual (null, reader.Comment); Assert.IsTrue (reader.Read ()); Assert.AreEqual (IniType.Empty, reader.Type); Assert.AreEqual ("Something", reader.Comment); Assert.IsTrue (reader.Read ()); Assert.AreEqual (IniType.Empty, reader.Type); Assert.AreEqual ("Some comment", reader.Comment); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("", reader.Comment); Assert.IsFalse (reader.Read ()); } [Test] public void NormalSectionAndKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Logging]"); writer.WriteLine (" great logger = log4net "); writer.WriteLine (" [Pets] ; pets comment "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.AreEqual (IniReadState.Initial, reader.ReadState); Assert.IsTrue (reader.Read ()); Assert.AreEqual (IniReadState.Interactive, reader.ReadState); Assert.AreEqual (IniType.Section, reader.Type); Assert.AreEqual ("Logging", reader.Name); Assert.AreEqual ("", reader.Value); Assert.IsNull (reader.Comment); Assert.IsTrue (reader.Read ()); Assert.AreEqual (IniType.Key, reader.Type); Assert.AreEqual ("great logger", reader.Name); Assert.AreEqual ("log4net", reader.Value); Assert.AreEqual (null, reader.Comment); Assert.IsTrue (reader.Read ()); Assert.AreEqual (IniType.Section, reader.Type); Assert.AreEqual ("Pets", reader.Name); Assert.AreEqual ("", reader.Value); Assert.IsNull (reader.Comment); } [Test] public void KeyWithQuotes () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" whitespace = \" remove thing\" "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual (IniType.Key, reader.Type); Assert.AreEqual ("whitespace", reader.Name); Assert.AreEqual (" remove thing", reader.Value); Assert.AreEqual (null, reader.Comment); Assert.IsFalse (reader.Read ()); } [Test] [ExpectedException (typeof (IniException))] public void SectionWithNoEndBracket () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini"); writer.WriteLine (""); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); } [Test] //[ExpectedException (typeof (IniException))] public void LinePositionAndNumber () { StringWriter writer = new StringWriter (); writer.WriteLine ("; Test"); writer.WriteLine ("; Test 1"); writer.WriteLine ("[Nini Thing"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); try { reader.Read (); } catch(IniException e) { Assert.AreEqual (3, e.LineNumber); Assert.AreEqual (13, e.LinePosition); } } [Test] public void KeysWithSameName () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" superkey = legal "); writer.WriteLine ("[Pets]"); writer.WriteLine (" superkey = legal "); writer.WriteLine (" superkey = overrides original "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); reader.Read (); } [Test] public void SectionsWithSameName () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" some key = something"); writer.WriteLine ("[Nini]"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); try { reader.Read (); } catch(IniException e) { Assert.AreEqual (3, e.LineNumber); Assert.AreEqual (6, e.LinePosition); } } [Test] public void IgnoreComments () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" some key = something ; my comment 1"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); reader.IgnoreComments = true; Assert.IsTrue (reader.Read ()); Assert.AreEqual (null, reader.Comment); } [Test] [ExpectedException (typeof (IniException))] public void NoEndingQuote () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" some key = \" something "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); } [Test] [ExpectedException (typeof (IniException))] public void KeyWithNoEquals () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" some key "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); } [Test] public void MoveToNextSection () { StringWriter writer = new StringWriter (); writer.WriteLine ("; Test"); writer.WriteLine ("; Test 1"); writer.WriteLine ("[Nini Thing]"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.MoveToNextSection ()); Assert.AreEqual (4, reader.LineNumber); Assert.AreEqual (IniType.Section, reader.Type); Assert.IsFalse (reader.MoveToNextSection ()); } [Test] public void MoveToNextKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("; Test"); writer.WriteLine ("; Test 1"); writer.WriteLine ("[Nini Thing]"); writer.WriteLine ("; Test"); writer.WriteLine (" my key = new key"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsFalse (reader.MoveToNextKey ()); Assert.AreEqual (4, reader.LineNumber); Assert.IsTrue (reader.MoveToNextKey ()); Assert.AreEqual (6, reader.LineNumber); Assert.AreEqual (IniType.Key, reader.Type); Assert.AreEqual ("my key", reader.Name); } [Test] public void NoSectionsOrKeys () { StringWriter writer = new StringWriter (); writer.WriteLine (""); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.Read (); Assert.IsTrue (true); } [Test] public void CommentCharInString () { StringWriter writer = new StringWriter (); writer.WriteLine ("Value = \"WEB;www.google.com|WEB;www.yahoo.com\""); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("Value", reader.Name); Assert.AreEqual ("WEB;www.google.com|WEB;www.yahoo.com", reader.Value); } [Test] public void ConsumeAllKeyText () { StringWriter writer = new StringWriter (); writer.WriteLine ("email = \"John Smith\"; "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.ConsumeAllKeyText = true; Assert.IsTrue (reader.Read ()); Assert.AreEqual ("email", reader.Name); Assert.AreEqual ("\"John Smith\"; ", reader.Value); } [Test] public void AcceptNoKeyEndings () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Mysql]"); writer.WriteLine ("quick"); writer.WriteLine (" my key = new key"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.AcceptNoAssignmentOperator = true; Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("quick", reader.Name); Assert.AreEqual ("", reader.Value); } #endregion #region No end of line tests [Test] public void NoEndOfLineComment () { StringWriter writer = new StringWriter (); writer.Write (" ; Some comment "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.Read (); Assert.IsTrue (true); } [Test] public void NoEndOfLineKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini Thing]"); writer.Write (" somekey = key "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.Read (); Assert.IsTrue (true); } [Test] public void NoEndOfLineKeyNoValue () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini Thing]"); writer.Write (" somekey = "); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.Read (); Assert.IsTrue (true); } [Test] public void NoEndOfLineSection () { StringWriter writer = new StringWriter (); writer.Write ("[Nini Thing]"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.Read (); Assert.IsTrue (true); } [Test] public void EndCommentUnix () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine ("; Test"); writer.WriteLine (" float1 = 1.0 ;"); // no space after comment writer.WriteLine (" float2 = 2.0"); IniReader reader = new IniReader (new StringReader (ConvertToUnix (writer.ToString ()))); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("float1", reader.Name, "float1 not found"); Assert.AreEqual ("1.0", reader.Value, "float1 value not found"); Assert.IsTrue (reader.Read (), "Could not find last float"); Assert.AreEqual ("float2", reader.Name); Assert.AreEqual ("2.0", reader.Value); } [Test] [ExpectedException (typeof (IniException))] public void NoLineContinuation () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option = this will be \\ "); writer.WriteLine ("continued later"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); } [Test] public void LineContinuation () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option = this will be \\ "); writer.WriteLine ("continued later"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.LineContinuation = true; Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("this will be continued later", reader.Value); Assert.IsFalse (reader.Read ()); } [Test] public void LineContinuationMoreSpace () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option = this will be \\ "); writer.WriteLine (" continued later"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.LineContinuation = true; Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("this will be continued later", reader.Value); Assert.IsFalse (reader.Read ()); } [Test] public void LineContinuationAnotherChar () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option1 = this will be \\ continued"); writer.WriteLine (" option2 = this will be continued"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.LineContinuation = true; Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("this will be \\ continued", reader.Value); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("this will be continued", reader.Value); Assert.IsFalse (reader.Read ()); } [Test] public void LineContinuationNoSpace () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option = this will be \\"); writer.WriteLine ("continued later"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.LineContinuation = true; Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("this will be continued later", reader.Value); Assert.IsFalse (reader.Read ()); } [Test] public void CommentAfterKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option = someValue ; some comment"); writer.WriteLine (""); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.AcceptCommentAfterKey = true; Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("someValue", reader.Value); Assert.AreEqual ("some comment", reader.Comment); Assert.IsTrue (reader.Read ()); } [Test] public void NoCommentAfterKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option = someValue ; some comment"); writer.WriteLine (""); IniReader reader = new IniReader (new StringReader (writer.ToString ())); reader.AcceptCommentAfterKey = false; Assert.IsTrue (reader.Read ()); Assert.IsTrue (reader.Read ()); Assert.AreEqual ("someValue ; some comment", reader.Value); Assert.IsTrue (reader.Read ()); } [Test] public void GetAndSetDelimiters () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" option = someValue ; some comment"); IniReader reader = new IniReader (new StringReader (writer.ToString ())); Assert.AreEqual ('=', reader.GetAssignDelimiters ()[0]); reader.SetAssignDelimiters (new char[] {':', '='}); Assert.AreEqual (':', reader.GetAssignDelimiters ()[0]); Assert.AreEqual ('=', reader.GetAssignDelimiters ()[1]); Assert.AreEqual (';', reader.GetCommentDelimiters ()[0]); reader.SetCommentDelimiters (new char[] {'#', ';'}); Assert.AreEqual ('#', reader.GetCommentDelimiters ()[0]); Assert.AreEqual (';', reader.GetCommentDelimiters ()[1]); } #endregion #region Private methods private string ConvertToUnix (string text) { return text.Replace ("\r\n", "\n"); } #endregion } }nini-1.1.0+dfsg.2/Source/Test/Ini/IniDocumentTests.cs0000644000175000017500000003051410401132166021506 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using Nini.Ini; using NUnit.Framework; namespace Nini.Test.Ini { [TestFixture] public class IniDocumentTests { [Test] public void GetSection () { StringWriter writer = new StringWriter (); writer.WriteLine ("; Test"); writer.WriteLine ("[Nini Thing]"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); Assert.AreEqual (1, doc.Sections.Count); Assert.AreEqual ("Nini Thing", doc.Sections["Nini Thing"].Name); Assert.AreEqual ("Nini Thing", doc.Sections[0].Name); Assert.IsNull (doc.Sections["Non Existant"]); } [Test] public void GetKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" my key = something"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); IniSection section = doc.Sections["Nini"]; Assert.IsTrue (section.Contains ("my key")); Assert.AreEqual ("something", section.GetValue ("my key")); Assert.IsFalse (section.Contains ("not here")); } [Test] public void SetSection () { IniDocument doc = new IniDocument (); IniSection section = new IniSection ("new section"); doc.Sections.Add (section); Assert.AreEqual ("new section", doc.Sections[0].Name); Assert.AreEqual ("new section", doc.Sections["new section"].Name); section = new IniSection ("a section", "a comment"); doc.Sections.Add (section); Assert.AreEqual ("a comment", doc.Sections[1].Comment); } [Test] public void SetKey () { IniDocument doc = new IniDocument (); IniSection section = new IniSection ("new section"); doc.Sections.Add (section); section.Set ("new key", "some value"); Assert.IsTrue (section.Contains ("new key")); Assert.AreEqual ("some value", section.GetValue ("new key")); } [Test] [ExpectedException (typeof (IniException))] public void ParserError () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini Thing"); writer.WriteLine (" my key = something"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); } [Test] public void RemoveSection () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini Thing]"); writer.WriteLine (" my key = something"); writer.WriteLine ("[Parser]"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); Assert.IsNotNull (doc.Sections["Nini Thing"]); doc.Sections.Remove ("Nini Thing"); Assert.IsNull (doc.Sections["Nini Thing"]); } [Test] public void RemoveKey () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" my key = something"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); Assert.IsTrue (doc.Sections["Nini"].Contains ("my key")); doc.Sections["Nini"].Remove ("my key"); Assert.IsFalse (doc.Sections["Nini"].Contains ("my key")); } [Test] public void GetAllKeys () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Nini]"); writer.WriteLine (" ; a comment"); writer.WriteLine (" my key = something"); writer.WriteLine (" dog = rover"); writer.WriteLine (" cat = muffy"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); IniSection section = doc.Sections["Nini"]; Assert.AreEqual (4, section.ItemCount); Assert.AreEqual (3, section.GetKeys ().Length); Assert.AreEqual ("my key", section.GetKeys ()[0]); Assert.AreEqual ("dog", section.GetKeys ()[1]); Assert.AreEqual ("cat", section.GetKeys ()[2]); } [Test] public void SaveDocumentWithComments () { StringWriter writer = new StringWriter (); writer.WriteLine ("; some comment"); writer.WriteLine (""); // empty line writer.WriteLine ("[new section]"); writer.WriteLine (" dog = rover"); writer.WriteLine (""); // Empty line writer.WriteLine ("; a comment"); writer.WriteLine (" cat = muffy"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); StringWriter newWriter = new StringWriter (); doc.Save (newWriter); StringReader reader = new StringReader (newWriter.ToString ()); Assert.AreEqual ("; some comment", reader.ReadLine ()); Assert.AreEqual ("", reader.ReadLine ()); Assert.AreEqual ("[new section]", reader.ReadLine ()); Assert.AreEqual ("dog = rover", reader.ReadLine ()); Assert.AreEqual ("", reader.ReadLine ()); Assert.AreEqual ("; a comment", reader.ReadLine ()); Assert.AreEqual ("cat = muffy", reader.ReadLine ()); writer.Close (); } [Test] public void SaveToStream () { string filePath = "SaveToStream.ini"; FileStream stream = new FileStream (filePath, FileMode.Create); // Create a new document and save to stream IniDocument doc = new IniDocument (); IniSection section = new IniSection ("Pets"); section.Set ("dog", "rover"); section.Set ("cat", "muffy"); doc.Sections.Add (section); doc.Save (stream); stream.Close (); IniDocument newDoc = new IniDocument (new FileStream (filePath, FileMode.Open)); section = newDoc.Sections["Pets"]; Assert.IsNotNull (section); Assert.AreEqual (2, section.GetKeys ().Length); Assert.AreEqual ("rover", section.GetValue ("dog")); Assert.AreEqual ("muffy", section.GetValue ("cat")); stream.Close (); File.Delete (filePath); } [Test] public void SambaStyleDocument () { StringWriter writer = new StringWriter (); writer.WriteLine ("; some comment"); writer.WriteLine ("# another comment"); // empty line writer.WriteLine ("[test]"); writer.WriteLine (" cat = cats are not tall\\ "); writer.WriteLine (" animals "); writer.WriteLine (" dog = dogs \\ "); writer.WriteLine (" do not eat cats "); IniDocument doc = new IniDocument (new StringReader (writer.ToString ()), IniFileType.SambaStyle); Assert.AreEqual ("cats are not tall animals", doc.Sections["test"].GetValue ("cat")); Assert.AreEqual ("dogs do not eat cats", doc.Sections["test"].GetValue ("dog")); } [Test] public void PythonStyleDocument () { StringWriter writer = new StringWriter (); writer.WriteLine ("; some comment"); writer.WriteLine ("# another comment"); // empty line writer.WriteLine ("[test]"); writer.WriteLine (" cat: cats are not tall animals "); writer.WriteLine (" dog : dogs bark"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ()), IniFileType.PythonStyle); Assert.AreEqual ("cats are not tall animals", doc.Sections["test"].GetValue ("cat")); Assert.AreEqual ("dogs bark", doc.Sections["test"].GetValue ("dog")); } [Test] public void DuplicateSections () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" my key = something"); writer.WriteLine ("[Test]"); writer.WriteLine (" another key = something else"); writer.WriteLine ("[Test]"); writer.WriteLine (" value 0 = something 0"); writer.WriteLine (" value 1 = something 1"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); Assert.IsNotNull (doc.Sections["Test"]); Assert.AreEqual (1, doc.Sections.Count); Assert.AreEqual (2, doc.Sections["Test"].ItemCount); Assert.IsNull (doc.Sections["Test"].GetValue ("my key")); Assert.IsNotNull (doc.Sections["Test"].GetValue ("value 0")); Assert.IsNotNull (doc.Sections["Test"].GetValue ("value 1")); } [Test] public void DuplicateKeys () { StringWriter writer = new StringWriter (); writer.WriteLine ("[Test]"); writer.WriteLine (" a value = something 0"); writer.WriteLine (" a value = something 1"); writer.WriteLine (" a value = something 2"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ())); Assert.IsNotNull (doc.Sections["Test"]); Assert.AreEqual (1, doc.Sections.Count); Assert.AreEqual (1, doc.Sections["Test"].ItemCount); Assert.IsNotNull (doc.Sections["Test"].GetValue ("a value")); Assert.AreEqual ("something 0", doc.Sections["Test"].GetValue ("a value")); } [Test] public void MysqlStyleDocument () { StringWriter writer = new StringWriter (); writer.WriteLine ("# another comment"); // empty line writer.WriteLine ("[test]"); writer.WriteLine (" quick "); writer.WriteLine (" cat = cats are not tall animals "); writer.WriteLine (" dog : dogs bark"); IniDocument doc = new IniDocument (new StringReader (writer.ToString ()), IniFileType.MysqlStyle); Assert.IsTrue (doc.Sections["test"].Contains ("quick")); Assert.AreEqual ("", doc.Sections["test"].GetValue ("quick")); Assert.AreEqual ("cats are not tall animals", doc.Sections["test"].GetValue ("cat")); Assert.AreEqual ("dogs bark", doc.Sections["test"].GetValue ("dog")); } [Test] public void WindowsStyleDocument () { StringWriter writer = new StringWriter (); writer.WriteLine ("; another comment"); // empty line writer.WriteLine ("[test]"); writer.WriteLine (" cat = cats are not ; tall "); writer.WriteLine (" dog = dogs \"bark\""); IniDocument doc = new IniDocument (new StringReader (writer.ToString ()), IniFileType.WindowsStyle); IniSection section = doc.Sections["test"]; Assert.AreEqual ("cats are not ; tall", section.GetValue ("cat")); Assert.AreEqual ("dogs \"bark\"", section.GetValue ("dog")); } [Test] public void SaveAsPythonStyle () { string filePath = "Save.ini"; FileStream stream = new FileStream (filePath, FileMode.Create); // Create a new document and save to stream IniDocument doc = new IniDocument (); doc.FileType = IniFileType.PythonStyle; IniSection section = new IniSection ("Pets"); section.Set ("my comment"); section.Set ("dog", "rover"); doc.Sections.Add (section); doc.Save (stream); stream.Close (); StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine ("# my comment"); writer.WriteLine ("dog : rover"); StreamReader reader = new StreamReader (filePath); Assert.AreEqual (writer.ToString (), reader.ReadToEnd ()); reader.Close (); File.Delete (filePath); } [Test] public void SaveAsMysqlStyle () { string filePath = "Save.ini"; FileStream stream = new FileStream (filePath, FileMode.Create); // Create a new document and save to stream IniDocument doc = new IniDocument (); doc.FileType = IniFileType.MysqlStyle; IniSection section = new IniSection ("Pets"); section.Set ("my comment"); section.Set ("dog", "rover"); doc.Sections.Add (section); doc.Save (stream); stream.Close (); StringWriter writer = new StringWriter (); writer.WriteLine ("[Pets]"); writer.WriteLine ("# my comment"); writer.WriteLine ("dog = rover"); StreamReader reader = new StreamReader (filePath); Assert.AreEqual (writer.ToString (), reader.ReadToEnd ()); reader.Close (); IniDocument iniDoc = new IniDocument (); iniDoc.FileType = IniFileType.MysqlStyle; iniDoc.Load (filePath); File.Delete (filePath); } [Test] [ExpectedException (typeof (IniException))] public void SambaLoadAsStandard () { string filePath = "Save.ini"; FileStream stream = new FileStream (filePath, FileMode.Create); // Create a new document and save to stream IniDocument doc = new IniDocument (); doc.FileType = IniFileType.SambaStyle; IniSection section = new IniSection ("Pets"); section.Set ("my comment"); section.Set ("dog", "rover"); doc.Sections.Add (section); doc.Save (stream); stream.Close (); IniDocument iniDoc = new IniDocument (); iniDoc.FileType = IniFileType.Standard; iniDoc.Load (filePath); File.Delete (filePath); } } }nini-1.1.0+dfsg.2/Source/Test/Ini/IniWriterTests.cs0000644000175000017500000001027510401132166021206 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using Nini.Ini; using NUnit.Framework; using System.IO; namespace Nini.Test.Ini { [TestFixture] public class IniWriterTests { [Test] public void EmptyWithComment () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); Assert.AreEqual (IniWriteState.Start, iniWriter.WriteState); iniWriter.WriteEmpty ("First INI file"); Assert.AreEqual ("; First INI file", ReadLine (writer, 1)); Assert.AreEqual (IniWriteState.BeforeFirstSection, iniWriter.WriteState); } [Test] public void EmptyWithoutComment () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); Assert.AreEqual (IniWriteState.Start, iniWriter.WriteState); iniWriter.WriteEmpty (); Assert.AreEqual ("", ReadLine (writer, 1)); Assert.AreEqual (IniWriteState.BeforeFirstSection, iniWriter.WriteState); } [Test] public void SectionWithComment () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); Assert.AreEqual (IniWriteState.Start, iniWriter.WriteState); iniWriter.WriteSection ("Test Section", "My comment"); Assert.AreEqual ("[Test Section] ; My comment", ReadLine (writer, 1)); Assert.AreEqual (IniWriteState.Section, iniWriter.WriteState); } [Test] public void SectionWithoutComment () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); Assert.AreEqual (IniWriteState.Start, iniWriter.WriteState); iniWriter.WriteSection ("Test Section"); Assert.AreEqual ("[Test Section]", ReadLine (writer, 1)); Assert.AreEqual (IniWriteState.Section, iniWriter.WriteState); } [Test] public void KeyWithIndentation () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); iniWriter.Indentation = 2; iniWriter.WriteSection ("Required"); iniWriter.WriteKey ("independence day", "july"); Assert.AreEqual (" independence day = july", ReadLine (writer, 2)); iniWriter.Indentation = 0; } [Test] public void KeyWithQuotesAndComment () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); iniWriter.UseValueQuotes = true; iniWriter.WriteSection ("Required"); iniWriter.WriteKey ("thanksgiving", "November 25th", "Football!"); iniWriter.UseValueQuotes = false; Assert.AreEqual ("thanksgiving = \"November 25th\" ; Football!", ReadLine (writer, 2)); } [Test] public void FlushAndClose () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); iniWriter.WriteSection ("Required"); iniWriter.WriteKey ("thanksgiving", "november 25th", "Football!"); iniWriter.Close (); Assert.AreEqual (IniWriteState.Closed, iniWriter.WriteState); } [Test] [ExpectedException (typeof (InvalidOperationException))] public void NotOrderedWriteState () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); iniWriter.WriteKey ("state", "Out of order"); } [Test] public void ReplaceEndOfLine () { StringWriter writer = new StringWriter (); IniWriter iniWriter = new IniWriter (writer); iniWriter.WriteSection ("Required"); iniWriter.WriteKey ("thanksgiving", "November\n 25th"); Assert.AreEqual ("thanksgiving = November 25th", ReadLine (writer, 2)); } private string ReadLine (StringWriter writer, int line) { string result = ""; StringReader reader = new StringReader (writer.ToString ()); for (int i = 1; i < line + 1; i++) { if (i == line) { result = reader.ReadLine (); break; } reader.ReadLine (); } return result; } } }nini-1.1.0+dfsg.2/Source/NiniCompact.csdproj0000644000175000017500000002045710400654250020061 0ustar meebeymeebey nini-1.1.0+dfsg.2/Source/Util/0000755000175000017500000000000010410342254015173 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/Util/OrderedListEnumerator.cs0000644000175000017500000000401710400654250022007 0ustar meebeymeebeyusing System; using System.Collections; namespace Nini.Util { /// public class OrderedListEnumerator : IDictionaryEnumerator { #region Private variables int index = -1; ArrayList list; #endregion #region Constructors /// /// Instantiates an ordered list enumerator with an ArrayList. /// internal OrderedListEnumerator (ArrayList arrayList) { list = arrayList; } #endregion #region Public properties /// object IEnumerator.Current { get { if (index < 0 || index >= list.Count) throw new InvalidOperationException (); return list[index]; } } /// public DictionaryEntry Current { get { if (index < 0 || index >= list.Count) throw new InvalidOperationException (); return (DictionaryEntry)list[index]; } } /// public DictionaryEntry Entry { get { return (DictionaryEntry) Current; } } /// public object Key { get { return Entry.Key; } } /// public object Value { get { return Entry.Value; } } #endregion #region Public methods /// public bool MoveNext () { index++; if (index >= list.Count) return false; return true; } /// public void Reset () { index = -1; } #endregion } }nini-1.1.0+dfsg.2/Source/Util/OrderedList.cs0000644000175000017500000001206510400654250017747 0ustar meebeymeebeyusing System; using System.Collections; namespace Nini.Util { //[Serializable] /// public class OrderedList : ICollection, IDictionary, IEnumerable { #region Private variables Hashtable table = new Hashtable (); ArrayList list = new ArrayList (); #endregion #region Public properties /// public int Count { get { return list.Count; } } /// public bool IsFixedSize { get { return false; } } /// public bool IsReadOnly { get { return false; } } /// public bool IsSynchronized { get { return false; } } /// public object this[int index] { get { return ((DictionaryEntry) list[index]).Value; } set { if (index < 0 || index >= Count) throw new ArgumentOutOfRangeException ("index"); object key = ((DictionaryEntry) list[index]).Key; list[index] = new DictionaryEntry (key, value); table[key] = value; } } /// public object this[object key] { get { return table[key]; } set { if (table.Contains (key)) { table[key] = value; table[IndexOf (key)] = new DictionaryEntry (key, value); return; } Add (key, value); } } /// public ICollection Keys { get { ArrayList retList = new ArrayList (); for (int i = 0; i < list.Count; i++) { retList.Add ( ((DictionaryEntry)list[i]).Key ); } return retList; } } /// public ICollection Values { get { ArrayList retList = new ArrayList (); for (int i = 0; i < list.Count; i++) { retList.Add ( ((DictionaryEntry)list[i]).Value ); } return retList; } } /// public object SyncRoot { get { return this; } } #endregion #region Public methods /// public void Add (object key, object value) { table.Add (key, value); list.Add (new DictionaryEntry (key, value)); } /// public void Clear () { table.Clear (); list.Clear (); } /// public bool Contains (object key) { return table.Contains (key); } /// public void CopyTo (Array array, int index) { table.CopyTo (array, index); } /// public void CopyTo (DictionaryEntry[] array, int index) { table.CopyTo (array, index); } /// public void Insert (int index, object key, object value) { if (index > Count) throw new ArgumentOutOfRangeException ("index"); table.Add (key, value); list.Insert (index, new DictionaryEntry (key, value)); } /// public void Remove (object key) { table.Remove (key); list.RemoveAt (IndexOf (key)); } /// public void RemoveAt (int index) { if (index >= Count) throw new ArgumentOutOfRangeException ("index"); table.Remove ( ((DictionaryEntry)list[index]).Key ); list.RemoveAt (index); } /// public IEnumerator GetEnumerator () { return new OrderedListEnumerator (list); } /// IDictionaryEnumerator IDictionary.GetEnumerator () { return new OrderedListEnumerator (list); } /// IEnumerator IEnumerable.GetEnumerator () { return new OrderedListEnumerator (list); } #endregion #region Private variables private int IndexOf (object key) { for (int i = 0; i < list.Count; i++) { if (((DictionaryEntry) list[i]).Key.Equals (key)) { return i; } } return -1; } #endregion } } nini-1.1.0+dfsg.2/Source/Util/ArgvParser.cs0000644000175000017500000000543110404110236017575 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // // Original code written by: R. LOPES (GriffonRL) // Article: http://thecodeproject.com/csharp/command_line.asp #endregion using System; using System.Collections; using System.Collections.Specialized; using System.Text.RegularExpressions; namespace Nini.Util { /// public class ArgvParser { #region Private variables StringDictionary parameters; #endregion #region Constructors /// public ArgvParser(string args) { Regex Extractor = new Regex(@"(['""][^""]+['""])\s*|([^\s]+)\s*", RegexOptions.Compiled); MatchCollection matches; string[] parts; // Get matches (first string ignored because // Environment.CommandLine starts with program filename) matches = Extractor.Matches (args); parts = new string[matches.Count - 1]; for (int i = 1; i < matches.Count; i++) { parts[i-1] = matches[i].Value.Trim (); } } /// public ArgvParser (string[] args) { Extract (args); } #endregion #region Public properties /// public string this [string param] { get { return parameters[param]; } } #endregion #region Private methods // Extract command line parameters and values stored in a string array private void Extract(string[] args) { parameters = new StringDictionary(); Regex splitter = new Regex (@"^([/-]|--){1}(?\w+)([:=])?(?.+)?$", RegexOptions.Compiled); char[] trimChars = {'"','\''}; string parameter = null; Match part; // Valid parameters forms: {-,/,--}param{ , = ,:}((",')value(",')) // Examples: -param1 value1 --param2 /param3:"Test-:-work" // /param4 = happy -param5 '-- = nice = --' foreach(string arg in args) { part = splitter.Match(arg); if (!part.Success) { // Found a value (for the last parameter found (space separator)) if (parameter != null) { parameters[parameter] = arg.Trim (trimChars); } } else { // Matched a name, optionally with inline value parameter = part.Groups["name"].Value; parameters.Add (parameter, part.Groups["value"].Value.Trim (trimChars)); } } } #endregion } } nini-1.1.0+dfsg.2/Source/Nini.csproj0000644000175000017500000001710310400654250016400 0ustar meebeymeebey nini-1.1.0+dfsg.2/Source/Config/0000755000175000017500000000000010410342254015463 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/Config/ConfigSourceBase.cs0000644000175000017500000001307210401132150021166 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Text; using System.Collections; namespace Nini.Config { /// public abstract class ConfigSourceBase : IConfigSource { #region Private variables ArrayList sourceList = new ArrayList (); ConfigCollection configList = null; bool autoSave = false; AliasText alias = new AliasText (); #endregion #region Constructors /// public ConfigSourceBase () { configList = new ConfigCollection (this); } #endregion #region Public properties /// public ConfigCollection Configs { get { return configList; } } /// public bool AutoSave { get { return autoSave; } set { autoSave = value; } } /// public AliasText Alias { get { return alias; } } #endregion #region Public methods /// public void Merge (IConfigSource source) { if (!sourceList.Contains (source)) { sourceList.Add (source); } foreach (IConfig config in source.Configs) { this.Configs.Add (config); } } /// public virtual IConfig AddConfig (string name) { return configList.Add (name); } /// public string GetExpanded (IConfig config, string key) { return Expand (config, key, false); } /// public virtual void Save () { OnSaved (new EventArgs ()); } /// public virtual void Reload () { OnReloaded (new EventArgs ()); } /// public void ExpandKeyValues () { string[] keys = null; foreach (IConfig config in configList) { keys = config.GetKeys (); for (int i = 0; i < keys.Length; i++) { Expand (config, keys[i], true); } } } /// public void ReplaceKeyValues () { ExpandKeyValues (); } #endregion #region Public events /// public event EventHandler Reloaded; /// public event EventHandler Saved; #endregion #region Protected methods /// protected void OnReloaded (EventArgs e) { if (Reloaded != null) { Reloaded (this, e); } } /// protected void OnSaved (EventArgs e) { if (Saved != null) { Saved (this, e); } } #endregion #region Private methods /// /// Expands key values from the given IConfig. /// private string Expand (IConfig config, string key, bool setValue) { string result = config.Get (key); if (result == null) { throw new ArgumentException (String.Format ("[{0}] not found in [{1}]", key, config.Name)); } while (true) { int startIndex = result.IndexOf ("${", 0); if (startIndex == -1) { break; } int endIndex = result.IndexOf ("}", startIndex + 2); if (endIndex == -1) { break; } string search = result.Substring (startIndex + 2, endIndex - (startIndex + 2)); if (search == key) { // Prevent infinite recursion throw new ArgumentException ("Key cannot have a expand value of itself: " + key); } string replace = ExpandValue (config, search); result = result.Replace("${" + search + "}", replace); } if (setValue) { config.Set(key, result); } return result; } /// /// Returns the replacement value of a config. /// private string ExpandValue (IConfig config, string search) { string result = null; string[] replaces = search.Split ('|'); if (replaces.Length > 1) { IConfig newConfig = this.Configs[replaces[0]]; if (newConfig == null) { throw new ArgumentException ("Expand config not found: " + replaces[0]); } result = newConfig.Get (replaces[1]); if (result == null) { throw new ArgumentException ("Expand key not found: " + replaces[1]); } } else { result = config.Get (search); if (result == null) { throw new ArgumentException ("Key not found: " + search); } } return result; } #endregion } } nini-1.1.0+dfsg.2/Source/Config/XmlConfigSource.cs0000644000175000017500000002574610401132142021070 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Xml; using System.Collections; namespace Nini.Config { /// public class XmlConfigSource : ConfigSourceBase { #region Private variables XmlDocument configDoc = null; string savePath = null; #endregion #region Constructors /// public XmlConfigSource () { configDoc = new XmlDocument (); configDoc.LoadXml (""); PerformLoad (configDoc); } /// public XmlConfigSource (string path) { Load (path); } /// public XmlConfigSource (XmlReader reader) { Load (reader); } #endregion #region Public properties /// public string SavePath { get { return savePath; } } #endregion #region Public methods /// public void Load (string path) { savePath = path; configDoc = new XmlDocument (); configDoc.Load (path); PerformLoad (configDoc); } /// public void Load (XmlReader reader) { configDoc = new XmlDocument (); configDoc.Load (reader); PerformLoad (configDoc); } /// public override void Save () { if (!IsSavable ()) { throw new ArgumentException ("Source cannot be saved in this state"); } MergeConfigsIntoDocument (); configDoc.Save (savePath); base.Save (); } /// public void Save (string path) { this.savePath = path; this.Save (); } /// public void Save (TextWriter writer) { MergeConfigsIntoDocument (); configDoc.Save (writer); savePath = null; OnSaved (new EventArgs ()); } /// public void Save (Stream stream) { MergeConfigsIntoDocument (); configDoc.Save (stream); savePath = null; OnSaved (new EventArgs ()); } /// public override void Reload () { if (savePath == null) { throw new ArgumentException ("Error reloading: You must have " + "the loaded the source from a file"); } configDoc = new XmlDocument (); configDoc.Load (savePath); MergeDocumentIntoConfigs (); base.Reload (); } /// public override string ToString () { MergeConfigsIntoDocument (); StringWriter writer = new StringWriter (); configDoc.Save (writer); return writer.ToString (); } #endregion #region Private methods /// /// Merges all of the configs from the config collection into the /// XmlDocument. /// private void MergeConfigsIntoDocument () { RemoveSections (); foreach (IConfig config in this.Configs) { string[] keys = config.GetKeys (); XmlNode node = GetSectionByName (config.Name); if (node == null) { node = SectionNode (config.Name); configDoc.DocumentElement.AppendChild (node); } RemoveKeys (config.Name); for (int i = 0; i < keys.Length; i++) { SetKey (node, keys[i], config.Get (keys[i])); } } } /// /// Removes all XML sections that were removed as configs. /// private void RemoveSections () { XmlAttribute attr = null; foreach (XmlNode node in configDoc.DocumentElement.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "Section") { attr = node.Attributes["Name"]; if (attr != null) { if (this.Configs[attr.Value] == null) { configDoc.DocumentElement.RemoveChild (node); } } else { throw new ArgumentException ("Section name attribute not found"); } } } } /// /// Removes all XML keys that were removed as config keys. /// private void RemoveKeys (string sectionName) { XmlNode sectionNode = GetSectionByName (sectionName); XmlAttribute keyName = null; if (sectionNode != null) { foreach (XmlNode node in sectionNode.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "Key") { keyName = node.Attributes["Name"]; if (keyName != null) { if (this.Configs[sectionName].Get (keyName.Value) == null) { sectionNode.RemoveChild (node); } } else { throw new ArgumentException ("Name attribute not found in key"); } } } } } /// /// Loads all sections and keys. /// private void PerformLoad (XmlDocument document) { this.Configs.Clear (); this.Merge (this); // required for SaveAll if (document.DocumentElement.Name != "Nini") { throw new ArgumentException ("Did not find Nini XML root node"); } LoadSections (document.DocumentElement); } /// /// Loads all configuration sections. /// private void LoadSections (XmlNode rootNode) { ConfigBase config = null; foreach (XmlNode child in rootNode.ChildNodes) { if (child.NodeType == XmlNodeType.Element && child.Name == "Section") { config = new ConfigBase (child.Attributes["Name"].Value, this); this.Configs.Add (config); LoadKeys (child, config); } } } /// /// Loads all keys for a config. /// private void LoadKeys (XmlNode node, ConfigBase config) { foreach (XmlNode child in node.ChildNodes) { if (child.NodeType == XmlNodeType.Element && child.Name == "Key") { config.Add (child.Attributes["Name"].Value, child.Attributes["Value"].Value); } } } /// /// Sets an XML key. If it does not exist then it is created. /// private void SetKey (XmlNode sectionNode, string key, string value) { XmlNode node = GetKeyByName (sectionNode, key); if (node == null) { CreateKey (sectionNode, key, value); } else { node.Attributes["Value"].Value = value; } } /// /// Creates a key node and adds it to the collection at the end. /// private void CreateKey (XmlNode sectionNode, string key, string value) { XmlNode node = configDoc.CreateElement ("Key"); XmlAttribute keyAttr = configDoc.CreateAttribute ("Name"); XmlAttribute valueAttr = configDoc.CreateAttribute ("Value"); keyAttr.Value = key; valueAttr.Value = value; node.Attributes.Append (keyAttr); node.Attributes.Append (valueAttr); sectionNode.AppendChild (node); } /// /// Returns a new section node. /// private XmlNode SectionNode (string name) { XmlNode result = configDoc.CreateElement ("Section"); XmlAttribute nameAttr = configDoc.CreateAttribute ("Name"); nameAttr.Value = name; result.Attributes.Append (nameAttr); return result; } /// /// Returns a section node by name. /// private XmlNode GetSectionByName (string name) { XmlNode result = null; foreach (XmlNode node in configDoc.DocumentElement.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "Section" && node.Attributes["Name"].Value == name) { result = node; break; } } return result; } /// /// Returns a key node by name. /// private XmlNode GetKeyByName (XmlNode sectionNode, string name) { XmlNode result = null; foreach (XmlNode node in sectionNode.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "Key" && node.Attributes["Name"].Value == name) { result = node; break; } } return result; } /// /// Returns true if this instance is savable. /// private bool IsSavable () { return (this.savePath != null && configDoc != null); } /// /// Merges the XmlDocument into the Configs when the document is /// reloaded. /// private void MergeDocumentIntoConfigs () { // Remove all missing configs first RemoveConfigs (); foreach (XmlNode node in configDoc.DocumentElement.ChildNodes) { // If node is a section node if (node.NodeType == XmlNodeType.Element && node.Name == "Section") { string sectionName = node.Attributes["Name"].Value; IConfig config = this.Configs[sectionName]; if (config == null) { // The section is new so add it config = new ConfigBase (sectionName, this); this.Configs.Add (config); } RemoveConfigKeys (config); } } } /// /// Removes all configs that are not in the newly loaded XmlDocument. /// private void RemoveConfigs () { IConfig config = null; for (int i = this.Configs.Count - 1; i > -1; i--) { config = this.Configs[i]; // If the section is not present in the XmlDocument if (GetSectionByName (config.Name) == null) { this.Configs.Remove (config); } } } /// /// Removes all XML keys that were removed as config keys. /// private void RemoveConfigKeys (IConfig config) { XmlNode section = GetSectionByName (config.Name); // Remove old keys string[] configKeys = config.GetKeys (); foreach (string configKey in configKeys) { if (GetKeyByName (section, configKey) == null) { // Key doesn't exist, remove config.Remove (configKey); } } // Add or set all new keys foreach (XmlNode node in section.ChildNodes) { // Loop through all key nodes and add to config if (node.NodeType == XmlNodeType.Element && node.Name == "Key") { config.Set (node.Attributes["Name"].Value, node.Attributes["Value"].Value); } } } #endregion } }nini-1.1.0+dfsg.2/Source/Config/IConfigSource.cs0000644000175000017500000000361410401132140020504 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; namespace Nini.Config { /// public interface IConfigSource { /// ConfigCollection Configs { get; } /// bool AutoSave { get; set; } /// AliasText Alias { get; } /// void Merge (IConfigSource source); /// void Save (); /// void Reload (); /// IConfig AddConfig (string name); /// string GetExpanded (IConfig config, string key); /// void ExpandKeyValues (); /// void ReplaceKeyValues (); /// event EventHandler Reloaded; /// event EventHandler Saved; } }nini-1.1.0+dfsg.2/Source/Config/ArgvConfigSource.cs0000644000175000017500000000566010401132140021216 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Text; using System.Collections; using Nini.Util; namespace Nini.Config { /// public class ArgvConfigSource : ConfigSourceBase { #region Private variables ArgvParser parser = null; string[] arguments = null; #endregion #region Constructors /// public ArgvConfigSource (string[] arguments) { parser = new ArgvParser (arguments); this.arguments = arguments; } #endregion #region Public properties #endregion #region Public methods /// public override void Save () { throw new ArgumentException ("Source is read only"); } /// public override void Reload () { throw new ArgumentException ("Source cannot be reloaded"); } /// public void AddSwitch (string configName, string longName) { AddSwitch (configName, longName, null); } /// public void AddSwitch (string configName, string longName, string shortName) { IConfig config = GetConfig (configName); if (shortName != null && (shortName.Length < 1 || shortName.Length > 2)) { throw new ArgumentException ("Short name may only be 1 or 2 characters"); } // Look for the long name first if (parser[longName] != null) { config.Set (longName, parser[longName]); } else if (shortName != null && parser[shortName] != null) { config.Set (longName, parser[shortName]); } } /// public string[] GetArguments () { string[] result = new string[this.arguments.Length]; Array.Copy (this.arguments, 0, result, 0, this.arguments.Length); return result; } #endregion #region Private methods /// /// Returns an IConfig. If it does not exist then it is added. /// private IConfig GetConfig (string name) { IConfig result = null; if (this.Configs[name] == null) { result = new ConfigBase (name, this); this.Configs.Add (result); } else { result = this.Configs[name]; } return result; } #endregion } }nini-1.1.0+dfsg.2/Source/Config/AliasText.cs0000644000175000017500000000747510404110236017721 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Collections; namespace Nini.Config { /// public class AliasText { #region Private variables Hashtable intAlias = null; Hashtable booleanAlias = null; #endregion #region Constructors /// public AliasText () { intAlias = InsensitiveHashtable (); booleanAlias = InsensitiveHashtable (); DefaultAliasLoad (); } #endregion #region Public methods /// public void AddAlias (string key, string alias, int value) { if (intAlias.Contains (key)) { Hashtable keys = (Hashtable)intAlias[key]; keys[alias] = value; } else { Hashtable keys = InsensitiveHashtable (); keys[alias] = value; intAlias.Add (key, keys); } } /// public void AddAlias (string alias, bool value) { booleanAlias[alias] = value; } #if (NET_COMPACT_1_0) #else /// public void AddAlias (string key, Enum enumAlias) { SetAliasTypes (key, enumAlias); } #endif /// public bool ContainsBoolean (string key) { return booleanAlias.Contains (key); } /// public bool ContainsInt (string key, string alias) { bool result = false; if (intAlias.Contains (key)) { Hashtable keys = (Hashtable)intAlias[key]; result = (keys.Contains (alias)); } return result; } /// public bool GetBoolean (string key) { if (!booleanAlias.Contains (key)) { throw new ArgumentException ("Alias does not exist for text"); } return (bool)booleanAlias[key]; } /// public int GetInt (string key, string alias) { if (!intAlias.Contains (key)) { throw new ArgumentException ("Alias does not exist for key"); } Hashtable keys = (Hashtable)intAlias[key]; if (!keys.Contains (alias)) { throw new ArgumentException ("Config value does not match a " + "supplied alias"); } return (int)keys[alias]; } #endregion #region Private methods /// /// Loads the default alias values. /// private void DefaultAliasLoad () { AddAlias("true", true); AddAlias("false", false); } #if (NET_COMPACT_1_0) #else /// /// Extracts and sets the alias types from an enumeration. /// private void SetAliasTypes (string key, Enum enumAlias) { string[] names = Enum.GetNames (enumAlias.GetType ()); int[] values = (int[])Enum.GetValues (enumAlias.GetType ()); for (int i = 0; i < names.Length; i++) { AddAlias (key, names[i], values[i]); } } #endif /// /// Returns a case insensitive hashtable. /// private Hashtable InsensitiveHashtable () { return new Hashtable (CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default); } #endregion } }nini-1.1.0+dfsg.2/Source/Config/IniConfig.cs0000644000175000017500000000417610401132142017660 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Collections; using System.Globalization; using Nini.Util; namespace Nini.Config { /// public class IniConfig : ConfigBase { #region Private variables IniConfigSource parent = null; #endregion #region Constructors /// public IniConfig (string name, IConfigSource source) : base(name, source) { parent = (IniConfigSource)source; } #endregion #region Public properties #endregion #region Public methods /// public override string Get (string key) { if (!parent.CaseSensitive) { key = CaseInsensitiveKeyName (key); } return base.Get (key); } /// public override void Set (string key, object value) { if (!parent.CaseSensitive) { key = CaseInsensitiveKeyName (key); } base.Set (key, value); } /// public override void Remove (string key) { if (!parent.CaseSensitive) { key = CaseInsensitiveKeyName (key); } base.Remove (key); } #endregion #region Private methods /// /// Returns the key name if the case insensitivity is turned on. /// private string CaseInsensitiveKeyName (string key) { string result = null; string lowerKey = key.ToLower (); foreach (string currentKey in keys.Keys) { if (currentKey.ToLower () == lowerKey) { result = currentKey; break; } } return (result == null) ? key : result; } #endregion } }nini-1.1.0+dfsg.2/Source/Config/DotNetConfigSource.cs0000644000175000017500000003525610401132140021520 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Xml; using System.Reflection; using System.Collections; using System.Configuration; using System.Collections.Specialized; namespace Nini.Config { /// public class DotNetConfigSource : ConfigSourceBase { #region Private variables string[] sections = null; XmlDocument configDoc = null; string savePath = null; #endregion #region Constructors /// public DotNetConfigSource (string[] sections) { this.sections = sections; Load (); } /// public DotNetConfigSource () { configDoc = new XmlDocument (); configDoc.LoadXml (""); PerformLoad (configDoc); } /// public DotNetConfigSource (string path) { Load (path); } /// public DotNetConfigSource (XmlReader reader) { Load (reader); } #endregion #region Public properties /// public string SavePath { get { return savePath; } } #endregion #region Public methods /// public void Load (string path) { savePath = path; configDoc = new XmlDocument (); configDoc.Load (savePath); PerformLoad (configDoc); } /// public void Load (XmlReader reader) { configDoc = new XmlDocument (); configDoc.Load (reader); PerformLoad (configDoc); } /// public override void Save () { if (!IsSavable ()) { throw new ArgumentException ("Source cannot be saved in this state"); } MergeConfigsIntoDocument (); configDoc.Save (savePath); base.Save (); } /// public void Save (string path) { if (!IsSavable ()) { throw new ArgumentException ("Source cannot be saved in this state"); } savePath = path; this.Save (); } /// public void Save (TextWriter writer) { if (!IsSavable ()) { throw new ArgumentException ("Source cannot be saved in this state"); } MergeConfigsIntoDocument (); configDoc.Save (writer); savePath = null; OnSaved (new EventArgs ()); } /// public void Save (Stream stream) { if (!IsSavable ()) { throw new ArgumentException ("Source cannot be saved in this state"); } MergeConfigsIntoDocument (); configDoc.Save (stream); savePath = null; OnSaved (new EventArgs ()); } /// public override void Reload () { if (savePath == null) { throw new ArgumentException ("Error reloading: You must have " + "the loaded the source from a file"); } configDoc = new XmlDocument (); configDoc.Load (savePath); MergeDocumentIntoConfigs (); base.Reload (); } /// public override string ToString () { MergeConfigsIntoDocument (); StringWriter writer = new StringWriter (); configDoc.Save (writer); return writer.ToString (); } #if (NET_COMPACT_1_0) #else /// public static string GetFullConfigPath () { return (Assembly.GetCallingAssembly().Location + ".config"); } #endif #endregion #region Private methods /// /// Merges all of the configs from the config collection into the /// XmlDocument. /// private void MergeConfigsIntoDocument () { RemoveSections (); foreach (IConfig config in this.Configs) { string[] keys = config.GetKeys (); RemoveKeys (config.Name); XmlNode node = GetChildElement (config.Name); if (node == null) { node = SectionNode (config.Name); } for (int i = 0; i < keys.Length; i++) { SetKey (node, keys[i], config.Get (keys[i])); } } } /// /// Loads all collection classes. /// private void Load () { #if (NET_COMPACT_1_0) throw new NotSupportedException ("This loading method is not supported"); #else this.Merge (this); // required for SaveAll for (int i = 0; i < sections.Length; i++) { LoadCollection (sections[i], (NameValueCollection)ConfigurationSettings .GetConfig (sections[i])); } #endif } /// /// Loads all sections and keys. /// private void PerformLoad (XmlDocument document) { this.Configs.Clear (); this.Merge (this); // required for SaveAll if (document.DocumentElement.Name != "configuration") { throw new ArgumentException ("Did not find configuration node"); } LoadSections (document.DocumentElement); } /// /// Loads all configuration sections. /// private void LoadSections (XmlNode rootNode) { LoadOtherSection (rootNode, "appSettings"); XmlNode sections = GetChildElement (rootNode, "configSections"); if (sections == null) { // There is no configSections node so exit return; } ConfigBase config = null; foreach (XmlNode node in sections.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "section") { config = new ConfigBase (node.Attributes["name"].Value, this); this.Configs.Add (config); LoadKeys (rootNode, config); } } } /// /// Loads special sections that are not loaded in the configSections /// node. This includes such sections such as appSettings. /// private void LoadOtherSection (XmlNode rootNode, string nodeName) { XmlNode section = GetChildElement (rootNode, nodeName); ConfigBase config = null; if (section != null) { config = new ConfigBase (section.Name, this); this.Configs.Add (config); LoadKeys (rootNode, config); } } /// /// Loads all keys for a config. /// private void LoadKeys (XmlNode rootNode, ConfigBase config) { XmlNode section = GetChildElement (rootNode, config.Name); foreach (XmlNode node in section.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "add") { config.Add (node.Attributes["key"].Value, node.Attributes["value"].Value); } } } /// /// Removes all XML sections that were removed as configs. /// private void RemoveSections () { XmlAttribute attr = null; XmlNode sections = GetChildElement ("configSections"); if (sections == null) { // There is no configSections node so exit return; } foreach (XmlNode node in sections.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "section") { attr = node.Attributes["name"]; if (attr != null) { if (this.Configs[attr.Value] == null) { // Removes the configSections section node.ParentNode.RemoveChild (node); // Removes the section XmlNode dataNode = GetChildElement (attr.Value); if (dataNode != null) { configDoc.DocumentElement.RemoveChild (dataNode); } } } else { throw new ArgumentException ("Section name attribute not found"); } } } } /// /// Removes all XML keys that were removed as config keys. /// private void RemoveKeys (string sectionName) { XmlNode node = GetChildElement (sectionName); XmlAttribute keyName = null; if (node != null) { foreach (XmlNode key in node.ChildNodes) { if (key.NodeType == XmlNodeType.Element && key.Name == "add") { keyName = key.Attributes["key"]; if (keyName != null) { if (this.Configs[sectionName].Get (keyName.Value) == null) { node.RemoveChild (key); } } else { throw new ArgumentException ("Key attribute not found in node"); } } } } } /// /// Sets an XML key. If it does not exist then it is created. /// private void SetKey (XmlNode sectionNode, string key, string value) { XmlNode keyNode = GetKey (sectionNode, key); if (keyNode == null) { CreateKey (sectionNode, key, value); } else { keyNode.Attributes["value"].Value = value; } } /// /// Gets an XML key by it's name. Returns null if it does not exist. /// private XmlNode GetKey (XmlNode sectionNode, string keyName) { XmlNode result = null; foreach (XmlNode node in sectionNode.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "add" && node.Attributes["key"].Value == keyName) { result = node; break; } } return result; } /// /// Creates a key node and adds it to the collection at the end. /// private void CreateKey (XmlNode sectionNode, string key, string value) { XmlNode node = configDoc.CreateElement ("add"); XmlAttribute keyAttr = configDoc.CreateAttribute ("key"); XmlAttribute valueAttr = configDoc.CreateAttribute ("value"); keyAttr.Value = key; valueAttr.Value = value; node.Attributes.Append (keyAttr); node.Attributes.Append (valueAttr); sectionNode.AppendChild (node); } /// /// Loads a collection class. /// private void LoadCollection (string name, NameValueCollection collection) { ConfigBase config = new ConfigBase (name, this); if (collection == null) { throw new ArgumentException ("Section was not found"); } if (collection != null) { for (int i = 0; i < collection.Count; i++) { config.Add (collection.Keys[i], collection[i]); } this.Configs.Add (config); } } /// /// Returns a new section node. /// private XmlNode SectionNode (string name) { // Add node for configSections node XmlNode node = configDoc.CreateElement ("section"); XmlAttribute attr = configDoc.CreateAttribute ("name"); attr.Value = name; node.Attributes.Append (attr); attr = configDoc.CreateAttribute ("type"); attr.Value = "System.Configuration.NameValueSectionHandler"; node.Attributes.Append (attr); XmlNode section = GetChildElement ("configSections"); section.AppendChild (node); // Add node for configuration node XmlNode result = configDoc.CreateElement (name); configDoc.DocumentElement.AppendChild (result); return result; } /// /// Returns true if this instance is savable. /// private bool IsSavable () { return (this.savePath != null || configDoc != null); } /// /// Returns the single named child element. /// private XmlNode GetChildElement (XmlNode parentNode, string name) { XmlNode result = null; foreach (XmlNode node in parentNode.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == name) { result = node; break; } } return result; } /// /// Returns a child element from the XmlDocument.DocumentElement. /// private XmlNode GetChildElement (string name) { return GetChildElement (configDoc.DocumentElement, name); } /// /// Merges the XmlDocument into the Configs when the document is /// reloaded. /// private void MergeDocumentIntoConfigs () { // Remove all missing configs first RemoveConfigs (); XmlNode sections = GetChildElement ("configSections"); if (sections == null) { // There is no configSections node so exit return; } foreach (XmlNode node in sections.ChildNodes) { // Find all section nodes if (node.NodeType == XmlNodeType.Element && node.Name == "section") { string sectionName = node.Attributes["name"].Value; IConfig config = this.Configs[sectionName]; if (config == null) { // The section is new so add it config = new ConfigBase (sectionName, this); this.Configs.Add (config); } RemoveConfigKeys (config); } } } /// /// Removes all configs that are not in the newly loaded XmlDocument. /// private void RemoveConfigs () { IConfig config = null; for (int i = this.Configs.Count - 1; i > -1; i--) { config = this.Configs[i]; // If the section is not present in the XmlDocument if (GetChildElement (config.Name) == null) { this.Configs.Remove (config); } } } /// /// Removes all XML keys that were removed as config keys. /// private void RemoveConfigKeys (IConfig config) { XmlNode section = GetChildElement (config.Name); // Remove old keys string[] configKeys = config.GetKeys (); foreach (string configKey in configKeys) { if (GetKey (section, configKey) == null) { // Key doesn't exist, remove config.Remove (configKey); } } // Add or set all new keys foreach (XmlNode node in section.ChildNodes) { if (node.NodeType == XmlNodeType.Element && node.Name == "add") { config.Set (node.Attributes["key"].Value, node.Attributes["value"].Value); } } } #endregion } }nini-1.1.0+dfsg.2/Source/Config/IConfig.cs0000644000175000017500000000726410401132140017330 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; namespace Nini.Config { /// public interface IConfig { /// IConfigSource ConfigSource { get; } /// string Name { get; set; } /// AliasText Alias { get; } /// bool Contains (string key); /// string Get (string key); /// string Get (string key, string defaultValue); /// string GetExpanded (string key); /// string GetString (string key); /// string GetString (string key, string defaultValue); /// int GetInt (string key); /// int GetInt (string key, bool fromAlias); /// int GetInt (string key, int defaultValue); /// int GetInt (string key, int defaultValue, bool fromAlias); /// long GetLong (string key); /// long GetLong (string key, long defaultValue); /// bool GetBoolean (string key); /// bool GetBoolean (string key, bool defaultValue); /// float GetFloat (string key); /// float GetFloat (string key, float defaultValue); /// double GetDouble (string key); /// double GetDouble (string key, double defaultValue); /// string[] GetKeys (); /// string[] GetValues (); /// void Set (string key, object value); /// void Remove (string key); /// event ConfigKeyEventHandler KeySet; /// event ConfigKeyEventHandler KeyRemoved; } }nini-1.1.0+dfsg.2/Source/Config/RegistryConfigSource.cs0000644000175000017500000001640710401132142022132 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Collections; using Microsoft.Win32; using Nini.Ini; namespace Nini.Config { #region RegistryRecurse enumeration /// public enum RegistryRecurse { /// None, /// Flattened, /// Namespacing } #endregion /// public class RegistryConfigSource : ConfigSourceBase { #region Private variables RegistryKey defaultKey = null; #endregion #region Public properties /// public RegistryKey DefaultKey { get { return defaultKey; } set { defaultKey = value; } } #endregion #region Constructors #endregion #region Public methods /// public override IConfig AddConfig (string name) { if (this.DefaultKey == null) { throw new ApplicationException ("You must set DefaultKey"); } return AddConfig (name, this.DefaultKey); } /// public IConfig AddConfig (string name, RegistryKey key) { RegistryConfig result = new RegistryConfig (name, this); result.Key = key; result.ParentKey = true; this.Configs.Add (result); return result; } /// public void AddMapping (RegistryKey registryKey, string path) { RegistryKey key = registryKey.OpenSubKey (path, true); if (key == null) { throw new ArgumentException ("The specified key does not exist"); } LoadKeyValues (key, ShortKeyName (key)); } /// public void AddMapping (RegistryKey registryKey, string path, RegistryRecurse recurse) { RegistryKey key = registryKey.OpenSubKey (path, true); if (key == null) { throw new ArgumentException ("The specified key does not exist"); } if (recurse == RegistryRecurse.Namespacing) { LoadKeyValues (key, path); } else { LoadKeyValues (key, ShortKeyName (key)); } string[] subKeys = key.GetSubKeyNames (); for (int i = 0; i < subKeys.Length; i++) { switch (recurse) { case RegistryRecurse.None: // no recursion break; case RegistryRecurse.Namespacing: AddMapping (registryKey, path + "\\" + subKeys[i], recurse); break; case RegistryRecurse.Flattened: AddMapping (key, subKeys[i], recurse); break; } } } /// public override void Save () { MergeConfigsIntoDocument (); for (int i = 0; i < this.Configs.Count; i++) { // New merged configs are not RegistryConfigs if (this.Configs[i] is RegistryConfig) { RegistryConfig config = (RegistryConfig)this.Configs[i]; string[] keys = config.GetKeys (); for (int j = 0; j < keys.Length; j++) { config.Key.SetValue (keys[j], config.Get (keys[j])); } } } } /// public override void Reload () { ReloadKeys (); } #endregion #region Private methods /// /// Loads all values from the registry key. /// private void LoadKeyValues (RegistryKey key, string keyName) { RegistryConfig config = new RegistryConfig (keyName, this); config.Key = key; string[] values = key.GetValueNames (); foreach (string value in values) { config.Add (value, key.GetValue (value).ToString ()); } this.Configs.Add (config); } /// /// Merges all of the configs from the config collection into the /// registry. /// private void MergeConfigsIntoDocument () { foreach (IConfig config in this.Configs) { if (config is RegistryConfig) { RegistryConfig registryConfig = (RegistryConfig)config; if (registryConfig.ParentKey) { registryConfig.Key = registryConfig.Key.CreateSubKey (registryConfig.Name); } RemoveKeys (registryConfig); string[] keys = config.GetKeys (); for (int i = 0; i < keys.Length; i++) { registryConfig.Key.SetValue (keys[i], config.Get (keys[i])); } registryConfig.Key.Flush (); } } } /// /// Reloads all keys. /// private void ReloadKeys () { RegistryKey[] keys = new RegistryKey[this.Configs.Count]; for (int i = 0; i < keys.Length; i++) { keys[i] = ((RegistryConfig)this.Configs[i]).Key; } this.Configs.Clear (); for (int i = 0; i < keys.Length; i++) { LoadKeyValues (keys[i], ShortKeyName (keys[i])); } } /// /// Removes all keys not present in the current config. /// private void RemoveKeys (RegistryConfig config) { foreach (string valueName in config.Key.GetValueNames ()) { if (!config.Contains (valueName)) { config.Key.DeleteValue (valueName); } } } /// /// Returns the key name without the fully qualified path. /// e.g. no HKEY_LOCAL_MACHINE\\MyKey, just MyKey /// private string ShortKeyName (RegistryKey key) { int index = key.Name.LastIndexOf ("\\"); return (index == -1) ? key.Name : key.Name.Substring (index + 1); } #region RegistryConfig class /// /// Registry Config class. /// private class RegistryConfig : ConfigBase { #region Private variables RegistryKey key = null; bool parentKey = false; #endregion #region Constructor /// /// Constructor. /// public RegistryConfig (string name, IConfigSource source) : base (name, source) { } #endregion #region Public properties /// /// Gets or sets whether the key is a parent key. /// public bool ParentKey { get { return parentKey; } set { parentKey = value; } } /// /// Registry key for the Config. /// public RegistryKey Key { get { return key; } set { key = value; } } #endregion } #endregion #endregion } } nini-1.1.0+dfsg.2/Source/Config/ConfigBase.cs0000644000175000017500000002562510401132150020014 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Collections; using System.Globalization; using Nini.Util; namespace Nini.Config { #region ConfigKeyEventArgs class /// public delegate void ConfigKeyEventHandler (object sender, ConfigKeyEventArgs e); /// public class ConfigKeyEventArgs : EventArgs { string keyName = null; string keyValue = null; /// public ConfigKeyEventArgs (string keyName, string keyValue) { this.keyName = keyName; this.keyValue = keyValue; } /// public string KeyName { get { return keyName; } } /// public string KeyValue { get { return keyValue; } } } #endregion /// public class ConfigBase : IConfig { #region Private variables string configName = null; IConfigSource configSource = null; AliasText aliasText = null; IFormatProvider format = NumberFormatInfo.CurrentInfo; #endregion #region Protected variables protected OrderedList keys = new OrderedList (); #endregion #region Constructors /// public ConfigBase (string name, IConfigSource source) { configName = name; configSource = source; aliasText = new AliasText (); } #endregion #region Public properties /// public string Name { get { return configName; } set { if (configName != value) { Rename (value); } } } /// public IConfigSource ConfigSource { get { return configSource; } } /// public AliasText Alias { get { return aliasText; } } #endregion #region Public methods /// public bool Contains (string key) { return (Get (key) != null); } /// public virtual string Get (string key) { string result = null; if (keys.Contains (key)) { result = keys[key].ToString (); } return result; } /// public string Get (string key, string defaultValue) { string result = Get (key); return (result == null) ? defaultValue : result; } /// public string GetExpanded (string key) { return this.ConfigSource.GetExpanded(this, key); } /// public string GetString (string key) { return Get (key); } /// public string GetString (string key, string defaultValue) { return Get (key, defaultValue); } /// public int GetInt (string key) { string text = Get (key); if (text == null) { throw new ArgumentException ("Value not found: " + key); } return Convert.ToInt32 (text, format); } /// public int GetInt (string key, bool fromAlias) { if (!fromAlias) { return GetInt (key); } string result = Get (key); if (result == null) { throw new ArgumentException ("Value not found: " + key); } return GetIntAlias (key, result); } /// public int GetInt (string key, int defaultValue) { string result = Get (key); return (result == null) ? defaultValue : Convert.ToInt32 (result, format); } /// public int GetInt (string key, int defaultValue, bool fromAlias) { if (!fromAlias) { return GetInt (key, defaultValue); } string result = Get (key); return (result == null) ? defaultValue : GetIntAlias (key, result); } /// public long GetLong (string key) { string text = Get (key); if (text == null) { throw new ArgumentException ("Value not found: " + key); } return Convert.ToInt64 (text, format); } /// public long GetLong (string key, long defaultValue) { string result = Get (key); return (result == null) ? defaultValue : Convert.ToInt64 (result, format); } /// public bool GetBoolean (string key) { string text = Get (key); if (text == null) { throw new ArgumentException ("Value not found: " + key); } return GetBooleanAlias (text); } /// public bool GetBoolean (string key, bool defaultValue) { string text = Get (key); return (text == null) ? defaultValue : GetBooleanAlias (text); } /// public float GetFloat (string key) { string text = Get (key); if (text == null) { throw new ArgumentException ("Value not found: " + key); } return Convert.ToSingle (text, format); } /// public float GetFloat (string key, float defaultValue) { string result = Get (key); return (result == null) ? defaultValue : Convert.ToSingle (result, format); } /// public double GetDouble (string key) { string text = Get (key); if (text == null) { throw new ArgumentException ("Value not found: " + key); } return Convert.ToDouble (text, format); } /// public double GetDouble (string key, double defaultValue) { string result = Get (key); return (result == null) ? defaultValue : Convert.ToDouble (result, format); } /// public string[] GetKeys () { string[] result = new string[keys.Keys.Count]; keys.Keys.CopyTo (result, 0); return result; } /// public string[] GetValues () { string[] result = new string[keys.Values.Count]; keys.Values.CopyTo (result, 0); return result; } /// public void Add (string key, string value) { keys.Add (key, value); } /// public virtual void Set (string key, object value) { if (value == null) { throw new ArgumentNullException ("Value cannot be null"); } if (Get (key) == null) { this.Add (key, value.ToString ()); } else { keys[key] = value.ToString (); } if (ConfigSource.AutoSave) { ConfigSource.Save (); } OnKeySet (new ConfigKeyEventArgs (key, value.ToString ())); } /// public virtual void Remove (string key) { if (key == null) { throw new ArgumentNullException ("Key cannot be null"); } if (Get (key) != null) { string keyValue = null; if (KeySet != null) { keyValue = Get (key); } keys.Remove (key); OnKeyRemoved (new ConfigKeyEventArgs (key, keyValue)); } } #endregion #region Public events /// public event ConfigKeyEventHandler KeySet; /// public event ConfigKeyEventHandler KeyRemoved; #endregion #region Protected methods /// protected void OnKeySet (ConfigKeyEventArgs e) { if (KeySet != null) { KeySet (this, e); } } /// protected void OnKeyRemoved (ConfigKeyEventArgs e) { if (KeyRemoved != null) { KeyRemoved (this, e); } } #endregion #region Private methods /// /// Renames the config to the new name. /// private void Rename (string name) { this.ConfigSource.Configs.Remove (this); configName = name; this.ConfigSource.Configs.Add (this); } /// /// Returns the integer alias first from this IConfig then /// the parent if there is none. /// private int GetIntAlias (string key, string alias) { int result = -1; if (aliasText.ContainsInt (key, alias)) { result = aliasText.GetInt (key, alias); } else { result = ConfigSource.Alias.GetInt (key, alias); } return result; } /// /// Returns the boolean alias first from this IConfig then /// the parent if there is none. /// private bool GetBooleanAlias (string key) { bool result = false; if (aliasText.ContainsBoolean (key)) { result = aliasText.GetBoolean (key); } else { if (ConfigSource.Alias.ContainsBoolean (key)) { result = ConfigSource.Alias.GetBoolean (key); } else { throw new ArgumentException ("Alias value not found: " + key + ". Add it to the Alias property."); } } return result; } #endregion } }nini-1.1.0+dfsg.2/Source/Config/ConfigCollection.cs0000644000175000017500000001644010401132140021227 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Collections; namespace Nini.Config { #region ConfigEventHandler class /// public delegate void ConfigEventHandler (object sender, ConfigEventArgs e); /// public class ConfigEventArgs : EventArgs { IConfig config = null; /// public ConfigEventArgs (IConfig config) { this.config = config; } /// public IConfig Config { get { return config; } } } #endregion /// public class ConfigCollection : ICollection, IEnumerable, IList { #region Private variables ArrayList configList = new ArrayList (); ConfigSourceBase owner = null; #endregion #region Constructors /// public ConfigCollection (ConfigSourceBase owner) { this.owner = owner; } #endregion #region Public properties /// public int Count { get { return configList.Count; } } /// public bool IsSynchronized { get { return false; } } /// public object SyncRoot { get { return this; } } /// public IConfig this[int index] { get { return (IConfig)configList[index]; } } /// object IList.this[int index] { get { return configList[index]; } set { } } /// public IConfig this[string configName] { get { IConfig result = null; foreach (IConfig config in configList) { if (config.Name == configName) { result = config; break; } } return result; } } /// public bool IsFixedSize { get { return false; } } /// public bool IsReadOnly { get { return false; } } #endregion #region Public methods /// public void Add (IConfig config) { if (configList.Contains (config)) { throw new ArgumentException ("IConfig already exists"); } IConfig existingConfig = this[config.Name]; if (existingConfig != null) { // Set all new keys string[] keys = config.GetKeys (); for (int i = 0; i < keys.Length; i++) { existingConfig.Set (keys[i], config.Get (keys[i])); } } else { configList.Add (config); OnConfigAdded (new ConfigEventArgs (config)); } } /// int IList.Add (object config) { IConfig newConfig = config as IConfig; if (newConfig == null) { throw new Exception ("Must be an IConfig"); } else { this.Add (newConfig); return IndexOf (newConfig); } } /// public IConfig Add (string name) { ConfigBase result = null; if (this[name] == null) { result = new ConfigBase (name, owner); configList.Add (result); OnConfigAdded (new ConfigEventArgs (result)); } else { throw new ArgumentException ("An IConfig of that name already exists"); } return result; } /// public void Remove (IConfig config) { configList.Remove (config); OnConfigRemoved (new ConfigEventArgs (config)); } /// public void Remove (object config) { configList.Remove (config); OnConfigRemoved (new ConfigEventArgs ((IConfig)config)); } /// public void RemoveAt (int index) { IConfig config = (IConfig)configList[index]; configList.RemoveAt (index); OnConfigRemoved (new ConfigEventArgs (config)); } /// public void Clear () { configList.Clear (); } /// public IEnumerator GetEnumerator () { return configList.GetEnumerator (); } /// public void CopyTo (Array array, int index) { configList.CopyTo (array, index); } /// public void CopyTo (IConfig[] array, int index) { ((ICollection)configList).CopyTo (array, index); } /// public bool Contains (object config) { return configList.Contains (config); } /// public int IndexOf (object config) { return configList.IndexOf (config); } /// public void Insert (int index, object config) { configList.Insert (index, config); } #endregion #region Public events /// public event ConfigEventHandler ConfigAdded; /// public event ConfigEventHandler ConfigRemoved; #endregion #region Protected methods /// protected void OnConfigAdded (ConfigEventArgs e) { if (ConfigAdded != null) { ConfigAdded (this, e); } } /// protected void OnConfigRemoved (ConfigEventArgs e) { if (ConfigRemoved != null) { ConfigRemoved (this, e); } } #endregion #region Private methods #endregion } }nini-1.1.0+dfsg.2/Source/Config/IniConfigSource.cs0000644000175000017500000002071210401132142021033 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Collections; using Nini.Ini; namespace Nini.Config { /// public class IniConfigSource : ConfigSourceBase { #region Private variables IniDocument iniDocument = null; string savePath = null; bool caseSensitive = true; #endregion #region Public properties #endregion #region Constructors /// public IniConfigSource () { iniDocument = new IniDocument (); } /// public IniConfigSource (string filePath) { Load (filePath); } /// public IniConfigSource (TextReader reader) { Load (reader); } /// public IniConfigSource (IniDocument document) { Load (document); } /// public IniConfigSource (Stream stream) { Load (stream); } #endregion #region Public properties /// public bool CaseSensitive { get { return caseSensitive; } set { caseSensitive = value; } } /// public string SavePath { get { return savePath; } } #endregion #region Public methods /// public void Load (string filePath) { Load (new StreamReader (filePath)); this.savePath = filePath; } /// public void Load (TextReader reader) { Load (new IniDocument (reader)); } /// public void Load (IniDocument document) { this.Configs.Clear (); this.Merge (this); // required for SaveAll iniDocument = document; Load (); } /// public void Load (Stream stream) { Load (new StreamReader (stream)); } /// public override void Save () { if (!IsSavable ()) { throw new ArgumentException ("Source cannot be saved in this state"); } MergeConfigsIntoDocument (); iniDocument.Save (this.savePath); base.Save (); } /// public void Save (string path) { this.savePath = path; this.Save (); } /// public void Save (TextWriter writer) { MergeConfigsIntoDocument (); iniDocument.Save (writer); savePath = null; OnSaved (new EventArgs ()); } /// public void Save (Stream stream) { MergeConfigsIntoDocument (); iniDocument.Save (stream); savePath = null; OnSaved (new EventArgs ()); } /// public override void Reload () { if (savePath == null) { throw new ArgumentException ("Error reloading: You must have " + "the loaded the source from a file"); } iniDocument = new IniDocument (savePath); MergeDocumentIntoConfigs (); base.Reload (); } /// public override string ToString () { MergeConfigsIntoDocument (); StringWriter writer = new StringWriter (); iniDocument.Save (writer); return writer.ToString (); } #endregion #region Private methods /// /// Merges all of the configs from the config collection into the /// IniDocument before it is saved. /// private void MergeConfigsIntoDocument () { RemoveSections (); foreach (IConfig config in this.Configs) { string[] keys = config.GetKeys (); // Create a new section if one doesn't exist if (iniDocument.Sections[config.Name] == null) { IniSection section = new IniSection (config.Name); iniDocument.Sections.Add (section); } RemoveKeys (config.Name); for (int i = 0; i < keys.Length; i++) { iniDocument.Sections[config.Name].Set (keys[i], config.Get (keys[i])); } } } /// /// Removes all INI sections that were removed as configs. /// private void RemoveSections () { IniSection section = null; for (int i = 0; i < iniDocument.Sections.Count; i++) { section = iniDocument.Sections[i]; if (this.Configs[section.Name] == null) { iniDocument.Sections.Remove (section.Name); } } } /// /// Removes all INI keys that were removed as config keys. /// private void RemoveKeys (string sectionName) { IniSection section = iniDocument.Sections[sectionName]; if (section != null) { foreach (string key in section.GetKeys ()) { if (this.Configs[sectionName].Get (key) == null) { section.Remove (key); } } } } /// /// Loads the configuration file. /// private void Load () { IniConfig config = null; IniSection section = null; IniItem item = null; for (int j = 0; j < iniDocument.Sections.Count; j++) { section = iniDocument.Sections[j]; config = new IniConfig (section.Name, this); for (int i = 0; i < section.ItemCount; i++) { item = section.GetItem (i); if (item.Type == IniType.Key) { config.Add (item.Name, item.Value); } } this.Configs.Add (config); } } /// /// Merges the IniDocument into the Configs when the document is /// reloaded. /// private void MergeDocumentIntoConfigs () { // Remove all missing configs first RemoveConfigs (); IniSection section = null; for (int i = 0; i < iniDocument.Sections.Count; i++) { section = iniDocument.Sections[i]; IConfig config = this.Configs[section.Name]; if (config == null) { // The section is new so add it config = new ConfigBase (section.Name, this); this.Configs.Add (config); } RemoveConfigKeys (config); } } /// /// Removes all configs that are not in the newly loaded INI doc. /// private void RemoveConfigs () { IConfig config = null; for (int i = this.Configs.Count - 1; i > -1; i--) { config = this.Configs[i]; // If the section is not present in the INI doc if (iniDocument.Sections[config.Name] == null) { this.Configs.Remove (config); } } } /// /// Removes all INI keys that were removed as config keys. /// private void RemoveConfigKeys (IConfig config) { IniSection section = iniDocument.Sections[config.Name]; // Remove old keys string[] configKeys = config.GetKeys (); foreach (string configKey in configKeys) { if (!section.Contains (configKey)) { // Key doesn't exist, remove config.Remove (configKey); } } // Add or set all new keys string[] keys = section.GetKeys (); for (int i = 0; i < keys.Length; i++) { string key = keys[i]; config.Set (key, section.GetItem (i).Value); } } /// /// Returns true if this instance is savable. /// private bool IsSavable () { return (this.savePath != null); } #endregion } }nini-1.1.0+dfsg.2/Source/Ini/0000755000175000017500000000000010410342254014775 5ustar meebeymeebeynini-1.1.0+dfsg.2/Source/Ini/IniReader.cs0000644000175000017500000003624110401132142017165 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Text; using System.Collections; namespace Nini.Ini { #region IniReadState enumeration /// public enum IniReadState : int { /// Closed, /// EndOfFile, /// Error, /// Initial, /// Interactive }; #endregion #region IniType enumeration /// public enum IniType : int { /// Section, /// Key, /// Empty } #endregion /// public class IniReader : IDisposable { #region Private variables int lineNumber = 1; int column = 1; IniType iniType = IniType.Empty; TextReader textReader = null; bool ignoreComments = false; StringBuilder name = new StringBuilder (); StringBuilder value = new StringBuilder (); StringBuilder comment = new StringBuilder (); IniReadState readState = IniReadState.Initial; bool hasComment = false; bool disposed = false; bool lineContinuation = false; bool acceptCommentAfterKey = true; bool acceptNoAssignmentOperator = false; bool consumeAllKeyText = false; char[] commentDelimiters = new char[] { ';' }; char[] assignDelimiters = new char[] { '=' }; #endregion #region Public properties /// public string Name { get { return this.name.ToString (); } } /// public string Value { get { return this.value.ToString (); } } /// public IniType Type { get { return iniType; } } /// public string Comment { get { return (hasComment) ? this.comment.ToString () : null; } } /// public int LineNumber { get { return lineNumber; } } /// public int LinePosition { get { return column; } } /// public bool IgnoreComments { get { return ignoreComments; } set { ignoreComments = value; } } /// public IniReadState ReadState { get { return readState; } } /// public bool LineContinuation { get { return lineContinuation; } set { lineContinuation = value; } } /// public bool AcceptCommentAfterKey { get { return acceptCommentAfterKey; } set { acceptCommentAfterKey = value; } } /// public bool AcceptNoAssignmentOperator { get { return acceptNoAssignmentOperator; } set { acceptNoAssignmentOperator = value; } } /// public bool ConsumeAllKeyText { get { return consumeAllKeyText; } set { consumeAllKeyText = value; } } #endregion #region Constructors /// public IniReader (string filePath) { textReader = new StreamReader (filePath); } /// public IniReader (TextReader reader) { textReader = reader; } /// public IniReader (Stream stream) : this (new StreamReader (stream)) { } #endregion #region Public methods /// public bool Read () { bool result = false; if (readState != IniReadState.EndOfFile || readState != IniReadState.Closed) { readState = IniReadState.Interactive; result = ReadNext (); } return result; } /// public bool MoveToNextSection () { bool result = false; while (true) { result = Read (); if (iniType == IniType.Section || !result) { break; } } return result; } /// public bool MoveToNextKey () { bool result = false; while (true) { result = Read (); if (iniType == IniType.Section) { result = false; break; } if (iniType == IniType.Key || !result) { break; } } return result; } /// public void Close () { Reset (); readState = IniReadState.Closed; if (textReader != null) { textReader.Close (); } } /// public void Dispose () { Dispose (true); } /// public char[] GetCommentDelimiters () { char[] result = new char[commentDelimiters.Length]; Array.Copy (commentDelimiters, 0, result, 0, commentDelimiters.Length); return result; } /// public void SetCommentDelimiters (char[] delimiters) { if (delimiters.Length < 1) { throw new ArgumentException ("Must supply at least one delimiter"); } commentDelimiters = delimiters; } /// public char[] GetAssignDelimiters () { char[] result = new char[assignDelimiters.Length]; Array.Copy (assignDelimiters, 0, result, 0, assignDelimiters.Length); return result; } /// public void SetAssignDelimiters (char[] delimiters) { if (delimiters.Length < 1) { throw new ArgumentException ("Must supply at least one delimiter"); } assignDelimiters = delimiters; } #endregion #region Protected methods /// protected virtual void Dispose (bool disposing) { if (!disposed) { textReader.Close (); disposed = true; if (disposing) { GC.SuppressFinalize (this); } } } #endregion #region Private methods /// /// Destructor. /// ~IniReader () { Dispose (false); } /// /// Resets all of the current INI line data. /// private void Reset () { this.name.Remove (0, this.name.Length); this.value.Remove (0, this.value.Length); this.comment.Remove (0, this.comment.Length); iniType = IniType.Empty; hasComment = false; } /// /// Reads the next INI line item. /// private bool ReadNext () { bool result = true; int ch = PeekChar (); Reset (); if (IsComment (ch)) { iniType = IniType.Empty; ReadChar (); // consume comment character ReadComment (); return result; } switch (ch) { case ' ': case '\t': case '\r': SkipWhitespace (); ReadNext (); break; case '\n': ReadChar (); break; case '[': ReadSection (); break; case -1: readState = IniReadState.EndOfFile; result = false; break; default: ReadKey (); break; } return result; } /// /// Reads a comment. Must start after the comment delimiter. /// private void ReadComment () { int ch = -1; SkipWhitespace (); hasComment = true; do { ch = ReadChar (); this.comment.Append ((char)ch); } while (!EndOfLine (ch)); RemoveTrailingWhitespace (this.comment); } /// /// Removes trailing whitespace from a StringBuilder. /// private void RemoveTrailingWhitespace (StringBuilder builder) { string temp = builder.ToString (); builder.Remove (0, builder.Length); builder.Append (temp.TrimEnd (null)); } /// /// Reads a key. /// private void ReadKey () { int ch = -1; iniType = IniType.Key; while (true) { ch = PeekChar (); if (IsAssign (ch)) { ReadChar (); break; } if (EndOfLine (ch)) { if (acceptNoAssignmentOperator) { break; } throw new IniException (this, String.Format ("Expected assignment operator ({0})", assignDelimiters[0])); } this.name.Append ((char)ReadChar ()); } ReadKeyValue (); SearchForComment (); RemoveTrailingWhitespace (this.name); } /// /// Reads the value of a key. /// private void ReadKeyValue () { int ch = -1; bool foundQuote = false; int characters = 0; SkipWhitespace (); while (true) { ch = PeekChar (); if (!IsWhitespace (ch)) { characters++; } if (!this.ConsumeAllKeyText && ch == '"') { ReadChar (); if (!foundQuote && characters == 1) { foundQuote = true; continue; } else { break; } } if (foundQuote && EndOfLine (ch)) { throw new IniException (this, "Expected closing quote (\")"); } // Handle line continuation if (lineContinuation && ch == '\\') { StringBuilder buffer = new StringBuilder (); buffer.Append ((char)ReadChar ()); // append '\' while (PeekChar () != '\n' && IsWhitespace (PeekChar ())) { if (PeekChar () != '\r') { buffer.Append ((char)ReadChar ()); } else { ReadChar (); // consume '\r' } } if (PeekChar () == '\n') { // continue reading key value on next line ReadChar (); continue; } else { // Replace consumed characters this.value.Append (buffer.ToString ()); } } if (!this.ConsumeAllKeyText) { // If accepting comments then don't consume as key value if (acceptCommentAfterKey && IsComment (ch) && !foundQuote) { break; } } // Always break at end of line if (EndOfLine (ch)) { break; } this.value.Append ((char)ReadChar ()); } if (!foundQuote) { RemoveTrailingWhitespace (this.value); } } /// /// Reads an INI section. /// private void ReadSection () { int ch = -1; iniType = IniType.Section; ch = ReadChar (); // consume "[" while (true) { ch = PeekChar (); if (ch == ']') { break; } if (EndOfLine (ch)) { throw new IniException (this, "Expected section end (])"); } this.name.Append ((char)ReadChar ()); } ConsumeToEnd (); // all after '[' is garbage RemoveTrailingWhitespace (this.name); } /// /// Looks for a comment. /// private void SearchForComment () { int ch = ReadChar (); while (!EndOfLine (ch)) { if (IsComment (ch)) { if (ignoreComments) { ConsumeToEnd (); } else { ReadComment (); } break; } ch = ReadChar (); } } /// /// Consumes all data until the end of a line. /// private void ConsumeToEnd () { int ch = -1; do { ch = ReadChar (); } while (!EndOfLine (ch)); } /// /// Returns and consumes the next character from the stream. /// private int ReadChar () { int result = textReader.Read (); if (result == '\n') { lineNumber++; column = 1; } else { column++; } return result; } /// /// Returns the next upcoming character from the stream. /// private int PeekChar () { return textReader.Peek (); } /// /// Returns true if a comment character is found. /// private bool IsComment (int ch) { return HasCharacter (commentDelimiters, ch); } /// /// Returns true if character is an assign character. /// private bool IsAssign (int ch) { return HasCharacter (assignDelimiters, ch); } /// /// Returns true if the character is found in the given array. /// private bool HasCharacter (char[] characters, int ch) { bool result = false; for (int i = 0; i < characters.Length; i++) { if (ch == characters[i]) { result = true; break; } } return result; } /// /// Returns true if a value is whitespace. /// private bool IsWhitespace (int ch) { return ch == 0x20 || ch == 0x9 || ch == 0xD || ch == 0xA; } /// /// Skips all whitespace. /// private void SkipWhitespace () { while (IsWhitespace (PeekChar ())) { if (EndOfLine (PeekChar ())) { break; } ReadChar (); } } /// /// Returns true if an end of line is found. End of line /// includes both an end of line or end of file. /// private bool EndOfLine (int ch) { return (ch == '\n' || ch == -1); } #endregion } }nini-1.1.0+dfsg.2/Source/Ini/IniWriter.cs0000644000175000017500000002036410401132142017236 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Text; namespace Nini.Ini { #region IniWriteState enumeration /// public enum IniWriteState : int { /// Start, /// BeforeFirstSection, /// Section, /// Closed }; #endregion /// public class IniWriter : IDisposable { #region Private variables int indentation = 0; bool useValueQuotes = false; IniWriteState writeState = IniWriteState.Start; char commentDelimiter = ';'; char assignDelimiter = '='; TextWriter textWriter = null; string eol = "\r\n"; StringBuilder indentationBuffer = new StringBuilder (); Stream baseStream = null; bool disposed = false; #endregion #region Public properties /// public int Indentation { get { return indentation; } set { if (value < 0) throw new ArgumentException ("Negative values are illegal"); indentation = value; indentationBuffer.Remove(0, indentationBuffer.Length); for (int i = 0; i < value; i++) indentationBuffer.Append (' '); } } /// public bool UseValueQuotes { get { return useValueQuotes; } set { useValueQuotes = value; } } /// public IniWriteState WriteState { get { return writeState; } } /// public char CommentDelimiter { get { return commentDelimiter; } set { commentDelimiter = value; } } /// public char AssignDelimiter { get { return assignDelimiter; } set { assignDelimiter = value; } } /// public Stream BaseStream { get { return baseStream; } } #endregion #region Constructors /// public IniWriter(string filePath) : this (new FileStream (filePath, FileMode.Create, FileAccess.Write, FileShare.None)) { } /// public IniWriter (TextWriter writer) { textWriter = writer; StreamWriter streamWriter = writer as StreamWriter; if (streamWriter != null) { baseStream = streamWriter.BaseStream; } } /// public IniWriter (Stream stream) : this (new StreamWriter (stream)) { } #endregion #region Public methods /// public void Close () { textWriter.Close (); writeState = IniWriteState.Closed; } /// public void Flush () { textWriter.Flush (); } /// public override string ToString () { return textWriter.ToString (); } /// public void WriteSection (string section) { ValidateState (); writeState = IniWriteState.Section; WriteLine ("[" + section + "]"); } /// public void WriteSection (string section, string comment) { ValidateState (); writeState = IniWriteState.Section; WriteLine ("[" + section + "]" + Comment(comment)); } /// public void WriteKey (string key, string value) { ValidateStateKey (); WriteLine (key + " " + assignDelimiter + " " + GetKeyValue (value)); } /// public void WriteKey (string key, string value, string comment) { ValidateStateKey (); WriteLine (key + " " + assignDelimiter + " " + GetKeyValue (value) + Comment (comment)); } /// public void WriteEmpty () { ValidateState (); if (writeState == IniWriteState.Start) { writeState = IniWriteState.BeforeFirstSection; } WriteLine (""); } /// public void WriteEmpty (string comment) { ValidateState (); if (writeState == IniWriteState.Start) { writeState = IniWriteState.BeforeFirstSection; } if (comment == null) { WriteLine (""); } else { WriteLine (commentDelimiter + " " + comment); } } /// public void Dispose () { Dispose (true); } #endregion #region Protected methods /// protected virtual void Dispose (bool disposing) { if (!disposed) { textWriter.Close (); baseStream.Close (); disposed = true; if (disposing) { GC.SuppressFinalize (this); } } } #endregion #region Private methods /// /// Destructor. /// ~IniWriter () { Dispose (false); } /// /// Returns the value of a key. /// private string GetKeyValue (string text) { string result; if (useValueQuotes) { result = MassageValue ('"' + text + '"'); } else { result = MassageValue (text); } return result; } /// /// Validates whether a key can be written. /// private void ValidateStateKey () { ValidateState (); switch (writeState) { case IniWriteState.BeforeFirstSection: case IniWriteState.Start: throw new InvalidOperationException ("The WriteState is not Section"); case IniWriteState.Closed: throw new InvalidOperationException ("The writer is closed"); } } /// /// Validates the state to determine if the item can be written. /// private void ValidateState () { if (writeState == IniWriteState.Closed) { throw new InvalidOperationException ("The writer is closed"); } } /// /// Returns a formatted comment. /// private string Comment (string text) { return (text == null) ? "" : (" " + commentDelimiter + " " + text); } /// /// Writes data to the writer. /// private void Write (string value) { textWriter.Write (indentationBuffer.ToString () + value); } /// /// Writes a full line to the writer. /// private void WriteLine (string value) { Write (value + eol); } /// /// Fixes the incoming value to prevent illegal characters from /// hurting the integrity of the INI file. /// private string MassageValue (string text) { return text.Replace ("\n", ""); } #endregion } }nini-1.1.0+dfsg.2/Source/Ini/IniItem.cs0000644000175000017500000000250110400701010016644 0ustar meebeymeebeyusing System; namespace Nini.Ini { /// public class IniItem { #region Private variables IniType iniType = IniType.Empty; string iniName = ""; string iniValue = ""; string iniComment = null; #endregion #region Public properties /// public IniType Type { get { return iniType; } set { iniType = value; } } /// public string Value { get { return iniValue; } set { iniValue = value; } } /// public string Name { get { return iniName; } } /// public string Comment { get { return iniComment; } set { iniComment = value; } } #endregion /// internal protected IniItem (string name, string value, IniType type, string comment) { iniName = name; iniValue = value; iniType = type; iniComment = comment; } } } nini-1.1.0+dfsg.2/Source/Ini/IniDocument.cs0000644000175000017500000002033210401132150017532 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Collections; using Nini.Util; namespace Nini.Ini { #region IniFileType enumeration /// public enum IniFileType { /// Standard, /// PythonStyle, /// SambaStyle, /// MysqlStyle, /// WindowsStyle } #endregion /// public class IniDocument { #region Private variables IniSectionCollection sections = new IniSectionCollection (); ArrayList initialComment = new ArrayList (); IniFileType fileType = IniFileType.Standard; #endregion #region Public properties /// public IniFileType FileType { get { return fileType; } set { fileType = value; } } #endregion #region Constructors /// public IniDocument (string filePath) { fileType = IniFileType.Standard; Load (filePath); } /// public IniDocument (string filePath, IniFileType type) { fileType = type; Load (filePath); } /// public IniDocument (TextReader reader) { fileType = IniFileType.Standard; Load (reader); } /// public IniDocument (TextReader reader, IniFileType type) { fileType = type; Load (reader); } /// public IniDocument (Stream stream) { fileType = IniFileType.Standard; Load (stream); } /// public IniDocument (Stream stream, IniFileType type) { fileType = type; Load (stream); } /// public IniDocument (IniReader reader) { fileType = IniFileType.Standard; Load (reader); } /// public IniDocument () { } #endregion #region Public methods /// public void Load (string filePath) { Load (new StreamReader (filePath)); } /// public void Load (TextReader reader) { Load (GetIniReader (reader, fileType)); } /// public void Load (Stream stream) { Load (new StreamReader (stream)); } /// public void Load (IniReader reader) { LoadReader (reader); } /// public IniSectionCollection Sections { get { return sections; } } /// public void Save (TextWriter textWriter) { IniWriter writer = GetIniWriter (textWriter, fileType); IniItem item = null; IniSection section = null; foreach (string comment in initialComment) { writer.WriteEmpty (comment); } for (int j = 0; j < sections.Count; j++) { section = sections[j]; writer.WriteSection (section.Name, section.Comment); for (int i = 0; i < section.ItemCount; i++) { item = section.GetItem (i); switch (item.Type) { case IniType.Key: writer.WriteKey (item.Name, item.Value, item.Comment); break; case IniType.Empty: writer.WriteEmpty (item.Comment); break; } } } writer.Close (); } /// public void Save (string filePath) { StreamWriter writer = new StreamWriter (filePath); Save (writer); writer.Close (); } /// public void Save (Stream stream) { Save (new StreamWriter (stream)); } #endregion #region Private methods /// /// Loads the file not saving comments. /// private void LoadReader (IniReader reader) { reader.IgnoreComments = false; bool sectionFound = false; IniSection section = null; try { while (reader.Read ()) { switch (reader.Type) { case IniType.Empty: if (!sectionFound) { initialComment.Add (reader.Comment); } else { section.Set (reader.Comment); } break; case IniType.Section: sectionFound = true; // If section already exists then overwrite it if (sections[reader.Name] != null) { sections.Remove (reader.Name); } section = new IniSection (reader.Name, reader.Comment); sections.Add (section); break; case IniType.Key: if (section.GetValue (reader.Name) == null) { section.Set (reader.Name, reader.Value, reader.Comment); } break; } } } catch (Exception ex) { throw ex; } finally { // Always close the file reader.Close (); } } /// /// Returns a proper INI reader depending upon the type parameter. /// private IniReader GetIniReader (TextReader reader, IniFileType type) { IniReader result = new IniReader (reader); switch (type) { case IniFileType.Standard: // do nothing break; case IniFileType.PythonStyle: result.AcceptCommentAfterKey = false; result.SetCommentDelimiters (new char[] { ';', '#' }); result.SetAssignDelimiters (new char[] { ':' }); break; case IniFileType.SambaStyle: result.AcceptCommentAfterKey = false; result.SetCommentDelimiters (new char[] { ';', '#' }); result.LineContinuation = true; break; case IniFileType.MysqlStyle: result.AcceptCommentAfterKey = false; result.AcceptNoAssignmentOperator = true; result.SetCommentDelimiters (new char[] { '#' }); result.SetAssignDelimiters (new char[] { ':', '=' }); break; case IniFileType.WindowsStyle: result.ConsumeAllKeyText = true; break; } return result; } /// /// Returns a proper IniWriter depending upon the type parameter. /// private IniWriter GetIniWriter (TextWriter reader, IniFileType type) { IniWriter result = new IniWriter (reader); switch (type) { case IniFileType.Standard: case IniFileType.WindowsStyle: // do nothing break; case IniFileType.PythonStyle: result.AssignDelimiter = ':'; result.CommentDelimiter = '#'; break; case IniFileType.SambaStyle: case IniFileType.MysqlStyle: result.AssignDelimiter = '='; result.CommentDelimiter = '#'; break; } return result; } #endregion } } nini-1.1.0+dfsg.2/Source/Ini/IniSectionCollection.cs0000644000175000017500000000521610401132142021401 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Collections; using Nini.Util; namespace Nini.Ini { /// public class IniSectionCollection : ICollection, IEnumerable { #region Private variables OrderedList list = new OrderedList (); #endregion #region Public properties /// public IniSection this[int index] { get { return (IniSection)list[index]; } } /// public IniSection this[string configName] { get { return (IniSection)list[configName]; } } /// public int Count { get { return list.Count; } } /// public object SyncRoot { get { return list.SyncRoot; } } /// public bool IsSynchronized { get { return list.IsSynchronized; } } #endregion #region Public methods /// public void Add (IniSection section) { if (list.Contains (section)) { throw new ArgumentException ("IniSection already exists"); } list.Add (section.Name, section); } /// public void Remove (string config) { list.Remove (config); } /// public void CopyTo (Array array, int index) { list.CopyTo (array, index); } /// public void CopyTo (IniSection[] array, int index) { ((ICollection)list).CopyTo (array, index); } /// public IEnumerator GetEnumerator () { return list.GetEnumerator (); } #endregion #region Private methods #endregion } }nini-1.1.0+dfsg.2/Source/Ini/IniException.cs0000644000175000017500000000643510401132142017723 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Security; using System.Globalization; using System.Security.Permissions; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace Nini.Ini { /// #if (NET_COMPACT_1_0) #else [Serializable] #endif public class IniException : SystemException /*, ISerializable */ { #region Private variables IniReader iniReader = null; string message = ""; #endregion #region Public properties /// public int LinePosition { get { return (iniReader == null) ? 0 : iniReader.LinePosition; } } /// public int LineNumber { get { return (iniReader == null) ? 0 : iniReader.LineNumber; } } /// public override string Message { get { if (iniReader == null) { return base.Message; } return String.Format (CultureInfo.InvariantCulture, "{0} - Line: {1}, Position: {2}.", message, this.LineNumber, this.LinePosition); } } #endregion #region Constructors /// public IniException () : base () { this.message = "An error has occurred"; } /// public IniException (string message, Exception exception) : base (message, exception) { } /// public IniException (string message) : base (message) { this.message = message; } /// internal IniException (IniReader reader, string message) : this (message) { iniReader = reader; this.message = message; } #if (NET_COMPACT_1_0) #else /// protected IniException (SerializationInfo info, StreamingContext context) : base (info, context) { } #endif #endregion #region Public methods #if (NET_COMPACT_1_0) #else /// [SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)] public override void GetObjectData (SerializationInfo info, StreamingContext context) { base.GetObjectData (info, context); if (iniReader != null) { info.AddValue ("lineNumber", iniReader.LineNumber); info.AddValue ("linePosition", iniReader.LinePosition); } } #endif #endregion } }nini-1.1.0+dfsg.2/Source/Ini/IniSection.cs0000644000175000017500000000754210401132142017371 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.Collections; using Nini.Util; namespace Nini.Ini { /// public class IniSection { #region Private variables OrderedList configList = new OrderedList (); string name = ""; string comment = null; int commentCount = 0; #endregion #region Constructors /// public IniSection (string name, string comment) { this.name = name; this.comment = comment; } /// public IniSection (string name) : this (name, null) { } #endregion #region Public properties /// public string Name { get { return name; } } /// public string Comment { get { return comment; } } /// public int ItemCount { get { return configList.Count; } } #endregion #region Public methods /// public string GetValue (string key) { string result = null; if (Contains (key)) { IniItem item = (IniItem)configList[key]; result = item.Value; } return result; } /// public IniItem GetItem (int index) { return (IniItem)configList[index]; } /// public string[] GetKeys () { ArrayList list = new ArrayList (); IniItem item = null; for (int i = 0; i < configList.Count; i++) { item = (IniItem)configList[i]; if (item.Type == IniType.Key) { list.Add (item.Name); } } string[] result = new string[list.Count]; list.CopyTo (result, 0); return result; } /// public bool Contains (string key) { return (configList[key] != null); } /// public void Set (string key, string value, string comment) { IniItem item = null; if (Contains (key)) { item = (IniItem)configList[key]; item.Value = value; item.Comment = comment; } else { item = new IniItem (key, value, IniType.Key, comment); configList.Add (key, item); } } /// public void Set (string key, string value) { Set (key, value, null); } /// public void Set (string comment) { string name = "#comment" + commentCount; IniItem item = new IniItem (name, null, IniType.Empty, comment); configList.Add (name, item); commentCount++; } /// public void Set () { Set (null); } /// public void Remove (string key) { if (Contains (key)) { configList.Remove (key); } } #endregion } }nini-1.1.0+dfsg.2/Source/Nini.sln0000644000175000017500000000256310400654250015700 0ustar meebeymeebeyMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nini", "Nini.csproj", "{9B920C90-08EF-4123-A6B7-5F25CF0F94EC}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NiniTest", "Test\NiniTest.csproj", "{BF80879B-3F0D-44A8-87FF-00143FDD3D16}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {9B920C90-08EF-4123-A6B7-5F25CF0F94EC}.Debug.ActiveCfg = Debug|.NET {9B920C90-08EF-4123-A6B7-5F25CF0F94EC}.Debug.Build.0 = Debug|.NET {9B920C90-08EF-4123-A6B7-5F25CF0F94EC}.Release.ActiveCfg = Release|.NET {9B920C90-08EF-4123-A6B7-5F25CF0F94EC}.Release.Build.0 = Release|.NET {BF80879B-3F0D-44A8-87FF-00143FDD3D16}.Debug.ActiveCfg = Debug|.NET {BF80879B-3F0D-44A8-87FF-00143FDD3D16}.Debug.Build.0 = Debug|.NET {BF80879B-3F0D-44A8-87FF-00143FDD3D16}.Release.ActiveCfg = Release|.NET {BF80879B-3F0D-44A8-87FF-00143FDD3D16}.Release.Build.0 = Release|.NET EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal nini-1.1.0+dfsg.2/Source/Nini.build0000644000175000017500000002024510410341066016177 0ustar meebeymeebey Nini project build script nini-1.1.0+dfsg.2/Examples/0000755000175000017500000000000010410342254014574 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/CsExamples/0000755000175000017500000000000010410343540016637 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/0000755000175000017500000000000011047574030020330 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/AssemblyInfo.cs0000644000175000017500000000457210400654254023261 0ustar meebeymeebeyusing System.Reflection; using System.Runtime.CompilerServices; // // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. // [assembly: AssemblyTitle("")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("1.0.*")] // // In order to sign your assembly you must specify a key to use. Refer to the // Microsoft .NET Framework documentation for more information on assembly signing. // // Use the attributes below to control which key is used for signing. // // Notes: // (*) If no key is specified, the assembly is not signed. // (*) KeyName refers to a key that has been installed in the Crypto Service // Provider (CSP) on your machine. KeyFile refers to a file which contains // a key. // (*) If the KeyFile and the KeyName values are both specified, the // following processing occurs: // (1) If the KeyName can be found in the CSP, that key is used. // (2) If the KeyName does not exist and the KeyFile does exist, the key // in the KeyFile is installed into the CSP and used. // (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. // When specifying the KeyFile, the location of the KeyFile should be // relative to the project output directory which is // %Project Directory%\obj\. For example, if your KeyFile is // located in the project directory, you would specify the AssemblyKeyFile // attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] // (*) Delay Signing is an advanced option - see the Microsoft .NET Framework // documentation for more information on this. // [assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile("")] [assembly: AssemblyKeyName("")] nini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/obj/0000755000175000017500000000000010410342170021071 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/obj/Debug/0000755000175000017500000000000010410342170022117 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/obj/Debug/temp/0000755000175000017500000000000010410342170023064 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/obj/Debug/TempPE/0000755000175000017500000000000010410342170023251 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/obj/Debug/BasicApp.projdata0000644000175000017500000001061010401132532025324 0ustar meebeymeebey™€˙˙˙˙<\Contents\MainFormtC:\dev\Nini\Nini\Examples\CsExamples\BasicApp\MainForm.csBasicApp|C:\dev\Nini\Nini\Examples\CsExamples\BasicApp\AssemblyInfo.csÎ H˙˙˙˙€X˙˙˙˙"¬66<˝ <ĆŔŔe1˝ <Ć Ţ ˙˙˙˙ components@System.ComponentModel.Container,+„<doc> <summary> Required designer variable. </summary> </doc>loggingGroup<System.Windows.Forms.GroupBox,+"logFileNameLabel6System.Windows.Forms.Label,+p logFileNameText:System.Windows.Forms.TextBox,+Ň maxFileSizeTextlabel1viewIniButton8System.Windows.Forms.Button,+fsaveIniButtonuserEmailTextuserEmailLabeluserNameTextuserNameLabelcloseButtonsourceIConfigSource,+hMainForm#ctor()-LoadConfigsLoadConfigs()¶<doc> <summary> Loads all configuration values into the UI controls. </summary> </doc> MainMain() <doc> <summary> The main entry point for the application. </summary> </doc>DisposeDispose(8)-’<doc> <summary> Clean up any resources being used. </summary> </doc>(InitializeComponent,InitializeComponent()<doc> <summary> Required method for Designer support - do not modify the contents of this method with the code editor. </summary> </doc>(saveIniButton_ClickPsaveIniButton_Click(d,System.EventArgs)"System.EventArgs -+~<doc> <summary> Handles saving the file. </summary> </doc>(viewIniButton_ClickPviewIniButton_Click(d,System.EventArgs)ľ<doc> <summary> Loads up the INI file in whatever editor is the default. </summary> </doc>$closeButton_ClickLcloseButton_Click(d,System.EventArgs)Ś<doc> <summary> Handles the close button event. </summary> </doc>2\dę2DęL2¨L°2°282¨8H2 H¨2 ¨Ć2Ćä2¨ä2 2¨ >2 >X2†XŽ´˘ş ´ÔňŞ ´¶Ćh ’z, ´V„˘ BĚNÎ BřJ B0 ~ nini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/BasicApp.csproj.user0000644000175000017500000000346210401132532024204 0ustar meebeymeebey nini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/App.ico0000644000175000017500000000206610400654254021547 0ustar meebeymeebey č&(( @€€€€€€€€€€€€€ŔŔŔ˙˙˙˙˙˙˙˙˙˙˙˙wwwwwwwwwwwwwwpDDDDDDDDDDDDDDp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp˙˙˙˙˙˙˙˙˙˙˙˙˙ôp„pDDDDDDDDDDDDDDpLLLLLLLLLNÎÎItpĚĚĚĚĚĚĚĚĚĚĚĚĚÄDDDDDDDDDDDDD@˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Ŕ€€€€€€€€€€€€€€€€€€€€€€€Ŕ˙˙˙˙˙˙˙˙˙˙˙˙( Ŕ€€€€€€€€€€€€ŔŔŔ˙˙˙˙˙˙˙˙˙˙˙˙wwwwwwwDDDDDDDGO˙˙˙˙˙řGO˙˙˙˙˙řGO˙˙˙˙˙řGO˙˙˙˙˙řGO˙˙˙˙˙řGO˙˙˙˙˙řGO˙˙˙˙˙řGO˙˙˙˙˙řGHGLĚĚĚĚĚĚGÄDDDDDDŔ˙˙€˙˙˙˙nini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/MainForm.resx0000644000175000017500000001230610400654254022744 0ustar meebeymeebey text/microsoft-resx 1.3 System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MainForm nini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/BasicApp.ini0000644000175000017500000000045610400654254022517 0ustar meebeymeebey; BasicApp.ini ; This file is used to run the BasicApp example Nini application ; This is a basic section (the IConfig) [Logging] ; These key/value pairs are accessed via the Get* methods File Name = MyApp.log MaxFileSize = 40000000000000 [User] Email = jane@mail.com Name = Jane Andrews nini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/BasicApp.csproj0000644000175000017500000001157310401132516023233 0ustar meebeymeebey nini-1.1.0+dfsg.2/Examples/CsExamples/BasicApp/MainForm.cs0000644000175000017500000002212610400654254022371 0ustar meebeymeebeyusing System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Diagnostics; // Includes Nini namespace (don't forget to add the reference in your project) using Nini.Config; namespace BasicApp { /// /// Windows forms application that demonstrates some of Nini's /// core features. /// public class MainForm : System.Windows.Forms.Form { /// /// Required designer variable. /// private System.ComponentModel.Container components = null; private System.Windows.Forms.GroupBox loggingGroup; private System.Windows.Forms.Label logFileNameLabel; private System.Windows.Forms.TextBox logFileNameText; private System.Windows.Forms.TextBox maxFileSizeText; private System.Windows.Forms.Label label1; private System.Windows.Forms.Button viewIniButton; private System.Windows.Forms.Button saveIniButton; private System.Windows.Forms.TextBox userEmailText; private System.Windows.Forms.Label userEmailLabel; private System.Windows.Forms.TextBox userNameText; private System.Windows.Forms.Label userNameLabel; private System.Windows.Forms.Button closeButton; private IConfigSource source = null; public MainForm () { // // Required for Windows Form Designer support // InitializeComponent (); LoadConfigs (); } /// /// Loads all configuration values into the UI controls. /// private void LoadConfigs () { // Load the configuration source file source = new IniConfigSource (@"..\..\BasicApp.ini"); // Set the config to the Logging section of the INI file. IConfig config = source.Configs["Logging"]; // Load up some normal configuration values logFileNameText.Text = config.Get ("File Name"); maxFileSizeText.Text = config.Get ("MaxFileSize"); userNameText.Text = source.Configs["User"].Get ("Name"); userEmailText.Text = source.Configs["User"].Get ("Email"); } #region Required methods /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.Run (new MainForm ()); } /// /// Clean up any resources being used. /// protected override void Dispose (bool disposing) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #endregion #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.logFileNameLabel = new System.Windows.Forms.Label(); this.loggingGroup = new System.Windows.Forms.GroupBox(); this.userNameText = new System.Windows.Forms.TextBox(); this.userNameLabel = new System.Windows.Forms.Label(); this.saveIniButton = new System.Windows.Forms.Button(); this.viewIniButton = new System.Windows.Forms.Button(); this.maxFileSizeText = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.logFileNameText = new System.Windows.Forms.TextBox(); this.userEmailText = new System.Windows.Forms.TextBox(); this.userEmailLabel = new System.Windows.Forms.Label(); this.closeButton = new System.Windows.Forms.Button(); this.loggingGroup.SuspendLayout(); this.SuspendLayout(); // // logFileNameLabel // this.logFileNameLabel.Location = new System.Drawing.Point(16, 32); this.logFileNameLabel.Name = "logFileNameLabel"; this.logFileNameLabel.Size = new System.Drawing.Size(88, 16); this.logFileNameLabel.TabIndex = 1; this.logFileNameLabel.Text = "Log File Name:"; // // loggingGroup // this.loggingGroup.Controls.AddRange(new System.Windows.Forms.Control[] { this.closeButton, this.userNameText, this.userNameLabel, this.saveIniButton, this.viewIniButton, this.maxFileSizeText, this.label1, this.logFileNameText, this.logFileNameLabel, this.userEmailText, this.userEmailLabel}); this.loggingGroup.Location = new System.Drawing.Point(16, 24); this.loggingGroup.Name = "loggingGroup"; this.loggingGroup.Size = new System.Drawing.Size(440, 200); this.loggingGroup.TabIndex = 2; this.loggingGroup.TabStop = false; this.loggingGroup.Text = "IConfigs (Sections) in INI file"; // // userNameText // this.userNameText.Location = new System.Drawing.Point(128, 120); this.userNameText.Name = "userNameText"; this.userNameText.Size = new System.Drawing.Size(152, 20); this.userNameText.TabIndex = 12; this.userNameText.Text = ""; // // userNameLabel // this.userNameLabel.Location = new System.Drawing.Point(16, 120); this.userNameLabel.Name = "userNameLabel"; this.userNameLabel.Size = new System.Drawing.Size(88, 16); this.userNameLabel.TabIndex = 11; this.userNameLabel.Text = "User Name"; // // saveIniButton // this.saveIniButton.Location = new System.Drawing.Point(312, 32); this.saveIniButton.Name = "saveIniButton"; this.saveIniButton.Size = new System.Drawing.Size(112, 23); this.saveIniButton.TabIndex = 8; this.saveIniButton.Text = "Save Changes"; this.saveIniButton.Click += new System.EventHandler(this.saveIniButton_Click); // // viewIniButton // this.viewIniButton.Location = new System.Drawing.Point(312, 72); this.viewIniButton.Name = "viewIniButton"; this.viewIniButton.Size = new System.Drawing.Size(112, 23); this.viewIniButton.TabIndex = 7; this.viewIniButton.Text = "View INI File"; this.viewIniButton.Click += new System.EventHandler(this.viewIniButton_Click); // // maxFileSizeText // this.maxFileSizeText.Location = new System.Drawing.Point(128, 72); this.maxFileSizeText.Name = "maxFileSizeText"; this.maxFileSizeText.Size = new System.Drawing.Size(152, 20); this.maxFileSizeText.TabIndex = 4; this.maxFileSizeText.Text = ""; // // label1 // this.label1.Location = new System.Drawing.Point(16, 72); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(104, 16); this.label1.TabIndex = 3; this.label1.Text = "Log File Max Size:"; // // logFileNameText // this.logFileNameText.Location = new System.Drawing.Point(128, 32); this.logFileNameText.Name = "logFileNameText"; this.logFileNameText.Size = new System.Drawing.Size(152, 20); this.logFileNameText.TabIndex = 2; this.logFileNameText.Text = ""; // // userEmailText // this.userEmailText.Location = new System.Drawing.Point(128, 160); this.userEmailText.Name = "userEmailText"; this.userEmailText.Size = new System.Drawing.Size(152, 20); this.userEmailText.TabIndex = 10; this.userEmailText.Text = ""; // // userEmailLabel // this.userEmailLabel.Location = new System.Drawing.Point(16, 160); this.userEmailLabel.Name = "userEmailLabel"; this.userEmailLabel.Size = new System.Drawing.Size(88, 16); this.userEmailLabel.TabIndex = 9; this.userEmailLabel.Text = "User Email"; // // closeButton // this.closeButton.Location = new System.Drawing.Point(312, 120); this.closeButton.Name = "closeButton"; this.closeButton.Size = new System.Drawing.Size(112, 23); this.closeButton.TabIndex = 13; this.closeButton.Text = "Close"; this.closeButton.Click += new System.EventHandler(this.closeButton_Click); // // MainForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(472, 245); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.loggingGroup}); this.Name = "MainForm"; this.Text = "Nini C# BasicApp"; this.loggingGroup.ResumeLayout(false); this.ResumeLayout(false); } #endregion /// /// Handles saving the file. /// private void saveIniButton_Click (object sender, System.EventArgs e) { source.Configs["Logging"].Set ("File Name", logFileNameText.Text); source.Configs["Logging"].Set ("MaxFileSize", maxFileSizeText.Text); source.Configs["User"].Set ("Name", userNameText.Text); source.Configs["User"].Set ("Email", userEmailText.Text); // Save the INI file source.Save (); } /// /// Loads up the INI file in whatever editor is the default. /// private void viewIniButton_Click (object sender, System.EventArgs e) { Process.Start("notepad.exe", @"..\..\BasicApp.ini"); } /// /// Handles the close button event. /// private void closeButton_Click (object sender, System.EventArgs e) { this.Close (); } } } nini-1.1.0+dfsg.2/Examples/CsExamples/CsExamples.sln0000644000175000017500000000161610401132516021424 0ustar meebeymeebeyMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicApp", "BasicApp\BasicApp.csproj", "{B76BBE40-B00B-455E-A2A3-C5DAA47006AF}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {B76BBE40-B00B-455E-A2A3-C5DAA47006AF}.Debug.ActiveCfg = Debug|.NET {B76BBE40-B00B-455E-A2A3-C5DAA47006AF}.Debug.Build.0 = Debug|.NET {B76BBE40-B00B-455E-A2A3-C5DAA47006AF}.Release.ActiveCfg = Release|.NET {B76BBE40-B00B-455E-A2A3-C5DAA47006AF}.Release.Build.0 = Release|.NET EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal nini-1.1.0+dfsg.2/Examples/VbExamples/0000755000175000017500000000000010410343550016642 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/0000755000175000017500000000000011047574012020332 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/obj/0000755000175000017500000000000010410342170021073 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/obj/Debug/0000755000175000017500000000000010410342170022121 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/obj/Debug/temp/0000755000175000017500000000000010410342170023066 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/obj/Debug/TempPE/0000755000175000017500000000000010410342170023253 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/AssemblyInfo.vb0000644000175000017500000000200410400654254023251 0ustar meebeymeebeyImports System.Reflection Imports System.Runtime.InteropServices ' General Information about an assembly is controlled through the following ' set of attributes. Change these attribute values to modify the information ' associated with an assembly. ' Review the values of the assembly attributes 'The following GUID is for the ID of the typelib if this project is exposed to COM ' Version information for an assembly consists of the following four values: ' ' Major Version ' Minor Version ' Build Number ' Revision ' ' You can specify all the values or you can default the Build and Revision Numbers ' by using the '*' as shown below: nini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/MainForm.resx0000644000175000017500000001701310400654254022746 0ustar meebeymeebey text/microsoft-resx 1.3 System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Assembly Assembly Assembly Assembly Assembly Assembly Assembly Assembly Assembly Assembly Assembly Assembly MainForm nini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/BasicApp.vbproj.user0000644000175000017500000000342610401132552024212 0ustar meebeymeebey nini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/BasicApp.ini0000644000175000017500000000045610400654254022521 0ustar meebeymeebey; BasicApp.ini ; This file is used to run the BasicApp example Nini application ; This is a basic section (the IConfig) [Logging] ; These key/value pairs are accessed via the Get* methods File Name = MyApp.log MaxFileSize = 40000000000000 [User] Email = jane@mail.com Name = Jane Andrews nini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/MainForm.vb0000644000175000017500000001667310400654254022407 0ustar meebeymeebeyImports System.Diagnostics Imports Nini.Config Public Class MainForm Inherits System.Windows.Forms.Form #Region " Windows Form Designer generated code " 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents loggingGroup As System.Windows.Forms.GroupBox Friend WithEvents userNameText As System.Windows.Forms.TextBox Friend WithEvents userNameLabel As System.Windows.Forms.Label Friend WithEvents saveIniButton As System.Windows.Forms.Button Friend WithEvents viewIniButton As System.Windows.Forms.Button Friend WithEvents maxFileSizeText As System.Windows.Forms.TextBox Friend WithEvents label1 As System.Windows.Forms.Label Friend WithEvents logFileNameText As System.Windows.Forms.TextBox Friend WithEvents logFileNameLabel As System.Windows.Forms.Label Friend WithEvents userEmailText As System.Windows.Forms.TextBox Friend WithEvents userEmailLabel As System.Windows.Forms.Label Friend WithEvents closeButton As System.Windows.Forms.Button Private Sub InitializeComponent() Me.loggingGroup = New System.Windows.Forms.GroupBox() Me.userNameText = New System.Windows.Forms.TextBox() Me.userNameLabel = New System.Windows.Forms.Label() Me.saveIniButton = New System.Windows.Forms.Button() Me.viewIniButton = New System.Windows.Forms.Button() Me.maxFileSizeText = New System.Windows.Forms.TextBox() Me.label1 = New System.Windows.Forms.Label() Me.logFileNameText = New System.Windows.Forms.TextBox() Me.logFileNameLabel = New System.Windows.Forms.Label() Me.userEmailText = New System.Windows.Forms.TextBox() Me.userEmailLabel = New System.Windows.Forms.Label() Me.closeButton = New System.Windows.Forms.Button() Me.loggingGroup.SuspendLayout() Me.SuspendLayout() ' 'loggingGroup ' Me.loggingGroup.Controls.AddRange(New System.Windows.Forms.Control() {Me.closeButton, Me.userNameText, Me.userNameLabel, Me.saveIniButton, Me.viewIniButton, Me.maxFileSizeText, Me.label1, Me.logFileNameText, Me.logFileNameLabel, Me.userEmailText, Me.userEmailLabel}) Me.loggingGroup.Location = New System.Drawing.Point(8, 16) Me.loggingGroup.Name = "loggingGroup" Me.loggingGroup.Size = New System.Drawing.Size(440, 200) Me.loggingGroup.TabIndex = 3 Me.loggingGroup.TabStop = False Me.loggingGroup.Text = "IConfigs (Sections) in INI file" ' 'userNameText ' Me.userNameText.Location = New System.Drawing.Point(128, 120) Me.userNameText.Name = "userNameText" Me.userNameText.Size = New System.Drawing.Size(152, 20) Me.userNameText.TabIndex = 12 Me.userNameText.Text = "" ' 'userNameLabel ' Me.userNameLabel.Location = New System.Drawing.Point(16, 120) Me.userNameLabel.Name = "userNameLabel" Me.userNameLabel.Size = New System.Drawing.Size(88, 16) Me.userNameLabel.TabIndex = 11 Me.userNameLabel.Text = "User Name" ' 'saveIniButton ' Me.saveIniButton.Location = New System.Drawing.Point(312, 32) Me.saveIniButton.Name = "saveIniButton" Me.saveIniButton.Size = New System.Drawing.Size(112, 23) Me.saveIniButton.TabIndex = 8 Me.saveIniButton.Text = "Save Changes" ' 'viewIniButton ' Me.viewIniButton.Location = New System.Drawing.Point(312, 72) Me.viewIniButton.Name = "viewIniButton" Me.viewIniButton.Size = New System.Drawing.Size(112, 23) Me.viewIniButton.TabIndex = 7 Me.viewIniButton.Text = "View INI File" ' 'maxFileSizeText ' Me.maxFileSizeText.Location = New System.Drawing.Point(128, 72) Me.maxFileSizeText.Name = "maxFileSizeText" Me.maxFileSizeText.Size = New System.Drawing.Size(152, 20) Me.maxFileSizeText.TabIndex = 4 Me.maxFileSizeText.Text = "" ' 'label1 ' Me.label1.Location = New System.Drawing.Point(16, 72) Me.label1.Name = "label1" Me.label1.Size = New System.Drawing.Size(104, 16) Me.label1.TabIndex = 3 Me.label1.Text = "Log File Max Size:" ' 'logFileNameText ' Me.logFileNameText.Location = New System.Drawing.Point(128, 32) Me.logFileNameText.Name = "logFileNameText" Me.logFileNameText.Size = New System.Drawing.Size(152, 20) Me.logFileNameText.TabIndex = 2 Me.logFileNameText.Text = "" ' 'logFileNameLabel ' Me.logFileNameLabel.Location = New System.Drawing.Point(16, 32) Me.logFileNameLabel.Name = "logFileNameLabel" Me.logFileNameLabel.Size = New System.Drawing.Size(88, 16) Me.logFileNameLabel.TabIndex = 1 Me.logFileNameLabel.Text = "Log File Name:" ' 'userEmailText ' Me.userEmailText.Location = New System.Drawing.Point(128, 160) Me.userEmailText.Name = "userEmailText" Me.userEmailText.Size = New System.Drawing.Size(152, 20) Me.userEmailText.TabIndex = 10 Me.userEmailText.Text = "" ' 'userEmailLabel ' Me.userEmailLabel.Location = New System.Drawing.Point(16, 160) Me.userEmailLabel.Name = "userEmailLabel" Me.userEmailLabel.Size = New System.Drawing.Size(88, 16) Me.userEmailLabel.TabIndex = 9 Me.userEmailLabel.Text = "User Email" ' 'closeButton ' Me.closeButton.Location = New System.Drawing.Point(312, 120) Me.closeButton.Name = "closeButton" Me.closeButton.Size = New System.Drawing.Size(112, 23) Me.closeButton.TabIndex = 13 Me.closeButton.Text = "Close" ' 'MainForm ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(456, 237) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.loggingGroup}) Me.Name = "MainForm" Me.Text = "Nini VB.NET BasicApp" Me.loggingGroup.ResumeLayout(False) Me.ResumeLayout(False) End Sub #End Region Private source As IniConfigSource ' Constructor Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() LoadConfigs() End Sub ' Loads all configuration values into the UI controls. Public Sub LoadConfigs() ' Load the configuration source file source = New IniConfigSource("..\BasicApp.ini") ' Set the config to the Logging section of the INI file. Dim config As IConfig config = source.Configs("Logging") ' Load up some normal configuration values logFileNameText.Text = config.Get("File Name") maxFileSizeText.Text = config.Get("MaxFileSize") userNameText.Text = source.Configs("User").Get("Name") userEmailText.Text = source.Configs("User").Get("Email") End Sub ' Handles saving the file. Private Sub saveIniButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles saveIniButton.Click source.Configs("Logging").Set("File Name", logFileNameText.Text) source.Configs("Logging").Set("MaxFileSize", maxFileSizeText.Text) source.Configs("User").Set("Name", userNameText.Text) source.Configs("User").Set("Email", userEmailText.Text) ' Save the INI file source.Save() End Sub ' Loads up the INI file in whatever editor is the default. Private Sub viewIniButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles viewIniButton.Click Process.Start("notepad.exe", "..\BasicApp.ini") End Sub ' Handles the close button event. Private Sub closeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles closeButton.Click Me.Close() End Sub End Class nini-1.1.0+dfsg.2/Examples/VbExamples/BasicApp/BasicApp.vbproj0000644000175000017500000001050010401132540023221 0ustar meebeymeebey nini-1.1.0+dfsg.2/Examples/VbExamples/VbExamples.sln0000644000175000017500000000161610401132540021425 0ustar meebeymeebeyMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "BasicApp", "BasicApp\BasicApp.vbproj", "{60A5AF14-26E5-4E55-BF8F-DB1DFA276353}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {60A5AF14-26E5-4E55-BF8F-DB1DFA276353}.Debug.ActiveCfg = Debug|.NET {60A5AF14-26E5-4E55-BF8F-DB1DFA276353}.Debug.Build.0 = Debug|.NET {60A5AF14-26E5-4E55-BF8F-DB1DFA276353}.Release.ActiveCfg = Release|.NET {60A5AF14-26E5-4E55-BF8F-DB1DFA276353}.Release.Build.0 = Release|.NET EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal nini-1.1.0+dfsg.2/Examples/NiniEdit/0000755000175000017500000000000011047574030016305 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/NiniEdit/README.txt0000644000175000017500000000437410401132420017775 0ustar meebeymeebey---------------------------------------------------- Nini Editor - Command-line configuration file editor ---------------------------------------------------- ABOUT ----- This program is a configuration file editor that utilizes the Nini library. It edits any file-based configuration types including INI, XML, and .NET configuration files. It can list, add, and remove configs as well as list, set, add, and remove config keys. The Nini Editor determines from the file extension of the input file how to load it. If the extension is ".ini" for instance it knows to load it up as an INI file. This application serves as a good example for how you can use Nini in your own projects. It makes heavy use of the ArgvConfigSource library to parse command line options. It is licensed under the same license as everything in the Nini project so feel free to use it for your own purposes. BUILDING -------- * Visual Studio .NET At this time only a Visual Studio .NET 2002 solution file and project file are supplied (NiniEdit.sln). To load this file simply open the solutions file and click Build -> Build Solution. * NAnt (http://nant.sourceforge.net) In the Source directory there is a Cyrus.build NAnt file. Here is how to build for each runtime: To build with the MS .NET Framework 1.0 > nant build-dotnet-1.0 To build with the MS .NET Framework 1.1 > nant build-dotnet-1.1 To build with Mono > nant build-mono INSTALL ------- Just place "niniedit.exe" and "Nini.dll" somewhere in your path and run it via the console for your operating system (cmd.exe on Windows). USING THE PROGRAM ----------------- Here are a couple common options to get you started. Run these in a console (cmd.exe on Windows): Get the usage options: > niniedit --help List all configs in a file: > niniedit --list Example.ini Add a new config to the file: > niniedit --add NewConfig Example.ini List all keys for a chosen config: > niniedit --list-keys --config SomeConfig Example.ini Set or add a key in a chosen config: > niniedit --set-key NewKey,NewValue --config SomeConfig Example.ini ------------------------------------- Copyright (c) 2006 Brent R. Matzelle ------------------------------------- nini-1.1.0+dfsg.2/Examples/NiniEdit/Source/0000755000175000017500000000000010410343462017541 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/NiniEdit/Source/AssemblyInfo.cs0000644000175000017500000000557310401132472022472 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System.Reflection; using System.Runtime.CompilerServices; // // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. // [assembly: AssemblyDescription("Nini Editor, command-line configuration file editor")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Brent R. Matzelle")] [assembly: AssemblyProduct("Nini Editor")] [assembly: AssemblyCopyright("Copyright (c) 2006 Brent R. Matzelle. All Rights Reserved.")] [assembly: AssemblyTrademark("Copyright (c) 2006 Brent R. Matzelle. All Rights Reserved.")] [assembly: AssemblyDefaultAlias("Nini Editor")] [assembly: AssemblyCulture("")] // // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("0.2.0.0")] // // In order to sign your assembly you must specify a key to use. Refer to the // Microsoft .NET Framework documentation for more information on assembly signing. // // Use the attributes below to control which key is used for signing. // // Notes: // (*) If no key is specified, the assembly is not signed. // (*) KeyName refers to a key that has been installed in the Crypto Service // Provider (CSP) on your machine. KeyFile refers to a file which contains // a key. // (*) If the KeyFile and the KeyName values are both specified, the // following processing occurs: // (1) If the KeyName can be found in the CSP, that key is used. // (2) If the KeyName does not exist and the KeyFile does exist, the key // in the KeyFile is installed into the CSP and used. // (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. // When specifying the KeyFile, the location of the KeyFile should be // relative to the project output directory which is // %Project Directory%\obj\. For example, if your KeyFile is // located in the project directory, you would specify the AssemblyKeyFile // attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] // (*) Delay Signing is an advanced option - see the Microsoft .NET Framework // documentation for more information on this. // [assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile("")] [assembly: AssemblyKeyName("")] nini-1.1.0+dfsg.2/Examples/NiniEdit/Source/NiniEdit.build0000644000175000017500000000574210400654252022276 0ustar meebeymeebey Nini Editor project build script nini-1.1.0+dfsg.2/Examples/NiniEdit/Source/NiniEdit.sln0000644000175000017500000000160510401132450021755 0ustar meebeymeebeyMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NiniEdit", "NiniEdit.csproj", "{1CE7A5AC-ED79-4F01-AE8E-6E832B9B329B}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug Release = Release EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {1CE7A5AC-ED79-4F01-AE8E-6E832B9B329B}.Debug.ActiveCfg = Debug|.NET {1CE7A5AC-ED79-4F01-AE8E-6E832B9B329B}.Debug.Build.0 = Debug|.NET {1CE7A5AC-ED79-4F01-AE8E-6E832B9B329B}.Release.ActiveCfg = Release|.NET {1CE7A5AC-ED79-4F01-AE8E-6E832B9B329B}.Release.Build.0 = Release|.NET EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal nini-1.1.0+dfsg.2/Examples/NiniEdit/Source/Editor.cs0000644000175000017500000002726310401132472021325 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; using System.IO; using System.Text; using Nini.Config; namespace NiniEdit { /// /// Summary description for Config. /// public class Editor { #region Private variables ArgvConfigSource argvSource = null; const string configName = "ConfigList"; string configPath = null; bool verbose = false; #endregion #region Constructors /// /// Constructor. Accepts the command line arguments. /// public Editor (string[] arguments) { argvSource = new ArgvConfigSource (arguments); SetSwitches (); } #endregion #region Private utility methods /// /// Processes all arguments. /// public void ProcessArgs () { if (argvSource.GetArguments ().Length < 1 || IsArg ("help")) { PrintUsage (); return; } verbose = IsArg ("verbose"); if (IsArg ("version")) { PrintVersion (); return; } configPath = ConfigFilePath (); if (IsArg ("new")) { try { CreateNewFile (); } catch (Exception ex) { ThrowError ("Could not create file: " + ex.Message); } } if (!File.Exists (configPath)) { ThrowError ("Config file does not exist"); } if (IsArg ("list")) { ListConfigs (); } if (IsArg ("add")) { AddConfig (); } if (IsArg ("remove")) { RemoveConfig (); } if (IsArg ("list-keys")) { ListKeys (); } if (IsArg ("set-key")) { SetKey (); } if (IsArg ("remove-key")) { RemoveKey (); } if (IsArg ("get-key")) { GetKey (); } } /// /// Returns the config file (input) path. /// private string ConfigFilePath () { int length = argvSource.GetArguments ().Length; return argvSource.GetArguments ()[length - 1]; } /// /// Prints a message to the console. /// private void PrintLine (string message) { Console.WriteLine (message); } /// /// Throws an exception with the specified message. /// private void ThrowError (string message) { throw new ApplicationException (message); } /// /// Returns the value of an argv argument. /// private string GetArg (string key) { return argvSource.Configs[configName].Get (key); } /// /// Returns true if an argv argument is present. /// private bool IsArg (string key) { return (GetArg (key) != null); } /// /// Returns the named config or throws an exception if it /// is not found. /// private IConfig GetConfig (IConfigSource source, string configName) { IConfig result = source.Configs[configName]; if (result == null) { ThrowError ("A config of that name does not exist"); } return result; } /// /// Loads a sourc from file. /// private IConfigSource LoadSource (string path) { IConfigSource result = null; string extension = null; if (IsArg ("set-type")) { extension = "." + GetArg ("set-type").ToLower (); } else { FileInfo info = new FileInfo (path); extension = info.Extension; } switch (extension) { case ".ini": result = new IniConfigSource (path); break; case ".config": result = new DotNetConfigSource (path); break; case ".xml": result = new XmlConfigSource (path); break; default: ThrowError ("Unknown config file type"); break; } if (verbose) { PrintLine ("Loaded config: " + result.GetType ().Name); } return result; } #endregion #region Config switch methods /// /// Lists all configs in the file. /// private void ListConfigs () { IConfigSource source = LoadSource (configPath); int configCount = 0; if (verbose) { PrintLine ("Listing configs:"); } foreach (IConfig config in source.Configs) { PrintLine (config.Name); configCount++; } if (verbose) { PrintLine ("Total configs: " + configCount); } } /// /// Removes a config. /// private void RemoveConfig () { string configName = GetArg ("remove"); if (configName == null) { ThrowError ("You must supply a config switch"); } IConfigSource source = LoadSource (configPath); IConfig config = GetConfig (source, configName); source.Configs.Remove (config); source.Save (); if (verbose) { PrintLine ("Config was removed: " + configName); } } /// /// Adds a new config. /// private void AddConfig () { IConfigSource source = LoadSource (configPath); source.AddConfig (GetArg ("add")); source.Save (); if (verbose) { PrintLine ("Config was added: " + GetArg ("add")); } } #endregion #region Key switch methods /// /// Lists the keys in a specified config. /// private void ListKeys () { string configName = GetArg ("config"); if (configName == null) { ThrowError ("You must supply a config switch"); } int keyCount = 0; IConfigSource source = LoadSource (configPath); string[] keys = GetConfig (source, configName).GetKeys (); if (verbose) { PrintLine ("Listing keys:"); } foreach (string key in keys) { PrintLine (key); keyCount++; } if (verbose) { PrintLine ("Total keys: " + keyCount); } } /// /// Sets a new key and value. /// private void SetKey () { string configName = GetArg ("config"); if (configName == null) { ThrowError ("You must supply a config switch"); } IConfigSource source = LoadSource (configPath); IConfig config = GetConfig (source, configName); string[] keyValue = GetArg ("set-key").Split (','); if (keyValue.Length < 2) { throw new Exception ("Must supply KEY,VALUE"); } config.Set (keyValue[0], keyValue[1]); source.Save (); if (verbose) { PrintLine ("Key " + keyValue[0] + " was saved as " + keyValue[1]); } } /// /// Prints out the value of a given key. /// private void GetKey () { string configName = GetArg ("config"); if (configName == null) { ThrowError ("You must supply a config switch"); } IConfigSource source = LoadSource (configPath); IConfig config = GetConfig (source, configName); string text = config.Get (GetArg ("get-key")); if (text != null) { PrintLine (text); } else { PrintLine ("Key not found"); } } /// /// Removes a key. /// private void RemoveKey () { string configName = GetArg ("config"); if (configName == null) { ThrowError ("You must supply a config switch"); } IConfigSource source = LoadSource (configPath); IConfig config = GetConfig (source, configName); config.Remove (GetArg ("remove-key")); source.Save (); if (verbose) { PrintLine ("Key removed: " + GetArg ("remove-key")); } } /// /// Creates a new config file. /// private void CreateNewFile () { string type = null;; if (IsArg ("set-type")) { type = GetArg ("set-type").ToLower (); } else { ThrowError ("You must supply a type (--set-type)"); } switch (type) { case "ini": IniConfigSource iniSource = new IniConfigSource (); iniSource.Save (configPath); break; case "xml": XmlConfigSource xmlSource = new XmlConfigSource (); xmlSource.Save (configPath); break; case "config": DotNetConfigSource dotnetSource = new DotNetConfigSource (); dotnetSource.Save (configPath); break; default: ThrowError ("Unknown type"); break; } } #endregion #region Application switch methods /// /// Sets the switches for the application. /// private void SetSwitches () { // Application switches argvSource.AddSwitch (configName, "help", "h"); argvSource.AddSwitch (configName, "version", "V"); argvSource.AddSwitch (configName, "verbose", "v"); argvSource.AddSwitch (configName, "set-type", "s"); argvSource.AddSwitch (configName, "new", "n"); // Config switches argvSource.AddSwitch (configName, "list", "l"); argvSource.AddSwitch (configName, "remove", "r"); argvSource.AddSwitch (configName, "add", "a"); // Key switches argvSource.AddSwitch (configName, "config", "c"); argvSource.AddSwitch (configName, "list-keys", "L"); argvSource.AddSwitch (configName, "remove-key", "R"); argvSource.AddSwitch (configName, "set-key", "k"); argvSource.AddSwitch (configName, "get-key", "g"); } /// /// Prints out the usage for the program. /// private void PrintUsage () { StringWriter writer = new StringWriter (); writer.WriteLine ("Nini Editor " + GetProductVersion () + ", command-line configuration file editor"); writer.WriteLine ("Usage: niniedit [OPTION] [FILE]"); writer.WriteLine (""); writer.WriteLine ("General Options:"); writer.WriteLine (" -h, --help Shows this help"); writer.WriteLine (" -V, --version Displays the application version"); writer.WriteLine (" -s, --set-type=TYPE Specifies file type (ini, xml, or config)"); writer.WriteLine (" -v, --verbose Be verbose with messages"); writer.WriteLine (" -n, --new Create a new config file (use --set-type)"); writer.WriteLine (""); writer.WriteLine ("Config Options:"); writer.WriteLine (" -l, --list Lists all configs"); writer.WriteLine (" -r, --remove=CONFIG Removes a config"); writer.WriteLine (" -a, --add=CONFIG Adds a config"); writer.WriteLine (""); writer.WriteLine ("Key Options:"); writer.WriteLine (" -c, --config=CONFIG Selects a config"); writer.WriteLine (" -L, --list-keys Lists all keys (needs -c switch)"); writer.WriteLine (" -R, --remove-key=KEY Removes a key (needs -c switch)"); writer.WriteLine (" -k, --set-key=KEY,VALUE Sets/adds a key and value (needs -c switch)"); writer.WriteLine (" -g, --get-key=KEY Gets a key value (needs -c switch)"); writer.WriteLine (""); writer.WriteLine ("Nini homepage: http://nini.sourceforge.net/"); PrintLine (writer.ToString ()); } /// /// Prints out the version of this application. /// private void PrintVersion () { StringWriter writer = new StringWriter (); writer.WriteLine ("Nini Editor " + GetProductVersion ()); writer.WriteLine (""); writer.WriteLine ("Copyright 2006 Brent R. Matzelle"); writer.WriteLine ("This program is distributed under the MIT/X11 license:"); writer.WriteLine ("http://www.opensource.org/licenses/mit-license.php"); PrintLine (writer.ToString ()); } /// /// Returns the product version. /// private string GetProductVersion () { return "0.2.0"; } #endregion } } nini-1.1.0+dfsg.2/Examples/NiniEdit/Source/MainApp.cs0000644000175000017500000000142610401132472021415 0ustar meebeymeebey#region Copyright // // Nini Configuration Project. // Copyright (C) 2006 Brent R. Matzelle. All rights reserved. // // This software is published under the terms of the MIT X11 license, a copy of // which has been included with this distribution in the LICENSE.txt file. // #endregion using System; namespace NiniEdit { /// /// Summary description for Class1. /// class MainApp { /// /// The main entry point for the application. /// [STAThread] static int Main (string[] args) { Editor config = new Editor (args); try { config.ProcessArgs (); return 0; } catch (Exception ex) { Console.WriteLine ("ERROR: " + ex.Message); return 1; } } } } nini-1.1.0+dfsg.2/Examples/NiniEdit/Source/NiniEdit.csproj0000644000175000017500000001025610401132450022463 0ustar meebeymeebey nini-1.1.0+dfsg.2/Examples/NiniEdit/Tests/0000755000175000017500000000000010410342254017401 5ustar meebeymeebeynini-1.1.0+dfsg.2/Examples/NiniEdit/Tests/Test.xml0000644000175000017500000000044510400654252021050 0ustar meebeymeebey
nini-1.1.0+dfsg.2/Examples/NiniEdit/Tests/Test.config0000644000175000017500000000074010400654252021513 0ustar meebeymeebey
nini-1.1.0+dfsg.2/Examples/NiniEdit/Tests/Test.ini0000644000175000017500000000033110400654252021021 0ustar meebeymeebey; This file is used to test the NiniEdit application ; This is a basic section (the IConfig) [Logging] File Name = MyApp.log MaxFileSize = 40000000000000 [User] Email = jane@mail.com Name = Jane Andrews nini-1.1.0+dfsg.2/Examples/NiniEdit/RunTests.bat0000644000175000017500000000320410400654254020562 0ustar meebeymeebey@ECHO off REM Runs all the tests for the NiniEdit program. REM Usage: RunTests.bat Tests\[CONFIG FILE] REM The test files are in the Test directory REM All tests are run in verbose mode SET PROGRAM=Bin\DotNet\Release\NiniEdit.exe --verbose REM SET PROGRAM=mono Bin\Mono\Release\NiniEdit.exe --verbose SET TESTFILE=%1 ECHO ------ ECHO TEST: Lists usage %PROGRAM% --help ECHO ------ ECHO TEST: Prints version %PROGRAM% -V %TESTFILE% ECHO ------ ECHO TEST: Lists configs %PROGRAM% -l %TESTFILE% ECHO ------ ECHO TEST: Adds config "TestConfig" %PROGRAM% --add TestConfig %TESTFILE% %PROGRAM% -l %TESTFILE% ECHO ------ ECHO TEST: Removes config "TestConfig" %PROGRAM% --remove TestConfig %TESTFILE% %PROGRAM% -l %TESTFILE% ECHO ------ ECHO TEST: Lists keys in "Logging" %PROGRAM% --config Logging --list-keys %TESTFILE% ECHO ------ ECHO TEST: Sets key "TestKey" %PROGRAM% --config Logging --set-key TestKey,TestValue %TESTFILE% %PROGRAM% --config Logging --list-keys %TESTFILE% ECHO ------ ECHO TEST: Prints "TestKey" value: "TestValue" %PROGRAM% --config Logging --get-key TestKey %TESTFILE% ECHO ------ ECHO TEST: Removes key "TestKey" %PROGRAM% --config Logging --remove-key TestKey %TESTFILE% %PROGRAM% --config Logging --list-keys %TESTFILE% ECHO ------ SET NEWFILE=Tests\NewTest.ini ECHO TEST: Create file with two keys: %NEWFILE% %PROGRAM% --new --set-type ini %NEWFILE% %PROGRAM% --add Test %NEWFILE% %PROGRAM% --config Test --set-key TestKey1,TestValue1 %NEWFILE% %PROGRAM% --config Test --set-key TestKey2,TestValue2 %NEWFILE% %PROGRAM% --config Test --list-keys %NEWFILE% DEL %NEWFILE%