-- HHL Xg(HHdh - - $Normal 6<  BHHHH$$~0 Z$p*h>JPKMMMMMMM]H ^, $ SQL XOP 0SQL XOP provides access to relational databases from IGOR procedures. It uses ODBC (Open Database Connectivity) libraries and drivers on Mac OS X and Windows to provide this access. g$0Accessing databases requires IGOR programming. We assume that you have at least intermediate-level IGOR programming experience. If not you should read at least the first half of the Programming help file, starting from see Programming Overview, or the first three chapters of the Programming volume of the Igor Pro manual which contains the same information.  ?$0You can get started with SQL XOP by reading this help file and doing the tutorial below. If you are not familiar with relational databases you will probably need to consult other material as well. See the SQL and ODBC References topic for pointers to other sources of information on SQL, ODBC and related technologies.  0Before you can use SQL XOP, you need to install an ODBC driver for your specific database as explained in the tutorial section below. Activating SQL XOP )0To activate SQL XOP for use with IGOR32: @\1. Open the "Igor Pro Folder/More Extensions/Utilities" folder. $\2. Make an alias (Macintosh) or shortcut (Windows) for the SQL.xop file and put the alias or shortcut in "Igor Pro User Files/Igor Extensions" (see Igor Pro User Files for details).  \3. Restart Igor. \ )0To activate SQL XOP for use with IGOR64: I\1. Open the "Igor Pro Folder/More Extensions (64-bit)/Utilities" folder. $\2. Make an alias (Macintosh) or shortcut (Windows) for the SQL64.xop file and put the alias or shortcut in "Igor Pro User Files/Igor Extensions (64-bit)" (see Igor Pro User Files for details).  \3. Restart Igor. \ $ SQL XOP Overview w0SQL (Structured Query Language) is a system for interacting with and controlling a relational database. It was developed in the 1970's by IBM. It is now the predominant standardized system for relational database management. k0ODBC (Open Database Connectivity), first released by Microsoft in 1992, is a standard that defines a set of functions for the interaction between a client program and a SQL-compatible database server. Most widely-used database servers, including Microsoft SQL Server, Microsoft Access, FileMaker, Oracle, the MySQL database system, and many others, support ODBC. 0An ODBC driver, obtained from the database management system (DBMS) supplier, mediates between the ODBC-compliant client program and the database server. 0If you have access to an ODBC-compliant database server and have installed an ODBC driver for that database server, you can write an Igor program to query and manipulate databases on the server using the routines added to Igor by SQL XOP. A0SQL XOP provides a high-level and a low-level interface to ODBC. $0For most users, the high-level interface, which consists of a single operation named SQLHighLevelOp, will be sufficient. Using the high-level interface requires familiarity with SQL and basic database concepts but does not require any familiarity with ODBC. U cp0The low-level interface consists of dozens of functions that implement most of the ODBC library functions. A few of the low-level functions (SQLAllocHandle, SQLFreeHandle, SQLConnect, SQLDriverConnect and SQLDisconnect) are used in conjunction with SQLHighLevelOp when doing more sophisticated applications. The vast majority of them are not used with SQLHighLevelOp. 0Using the low-level functions requires a thorough understanding of ODBC. It is very complex and not as thoroughly tested as the high level interface. Z0Do not use the low-level interface except as directed in conjunction with SQLHighLevelOp. S$0The low-level interface is documented in a separate help file: SQL Low-Level Help. ? Q$ Configuring ODBC C 0General support for ODBC is pre-installed on both Mac OS X and Windows in the form of an ODBC "driver manager". Client programs, like Igor using SQL XOP, communicate with the driver manager which communicates with ODBC drivers which communicate with database servers. 0Each type of database server (e.g., Microsoft SQL Server or MySQL) has an associated ODBC driver. In order to connect to any database, you must have the ODBC driver for that database server type on your machine. Windows comes with a number of ODBC drivers pre-installed but not the driver for the widely-used MySQL. Mac OS X currently comes with no drivers installed. ODBC drivers can be obtained from the database supplier. 0To connect to a database, you need to know the name of the ODBC driver, the URL of the database server, the name of the database you want to access, and a username and password for authentication. V0You can provide this information to the SQLHighLevelOp operation directly, like this: 8String connectionStr = "" 68connectionStr += "DRIVER=MySQL ODBC 5.3 ANSI Driver;" !8connectionStr += "SERVER=;" -8connectionStr += "DATABASE=;" $8connectionStr += "UID=;" #8connectionStr += "PWD=;" 88connectionStr += "CHARSET=UTF8;" // For Igor7 or later E8SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} 8 0You would replace , , and with actual parameters for your database, as illustrated in the tutorial below. N$0The use of the CHARSET keyword is explained under Text Encodings and SQL XOP. 2 L0Alternatively, you can create a "data source". A data source is a named collection of settings like the ones shown above. The name of a data source is called a "DSN" (Data Source Name). "DSN" is often used synonymously with "data source". 0On Windows, data source information is stored in the Windows registry. The Data Sources program (Control Panel -> System and Security -> Administrative Tools folder -> ODBC Data Sources) provides a user interface for creating data sources. $0On Macintosh, data source information is stored in ~/Library/ODBC/ODBC.ini. Prior to OS X 10.6, Apple shipped the ODBC Administrator program (/Applications/Utilities/ODBC Administrator). This program is no longer shipped with the OS. You can install an equivalent program, called ODBC Manager, from . Alternatively, you can edit the ~/Library/ODBC/ODBC.ini file directly using TextEdit. + G0Assuming that you have created a DSN named IgorDemo1 that encapsulates the connection information shown above, you can use it with SQLHighLevelOp like this: (8String connectionStr = "DSN=IgorDemo1;" E<SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} 0However there is a bug in the MySQL Mac OS X driver that requires that you provide the user name and password directly, like this: (8String connectionStr = "DSN=IgorDemo1;" $8connectionStr += "UID=;" #8connectionStr += "PWD=;" E<SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} 0In the following SQL XOP Tutorial we will go through the steps of installing a MySQL ODBC driver, creating a DSN, and connecting to a database at ensembldb.ensembl.org. $ SQL XOP Tutorial l0In this tutorial we will establish a connection to the MySQL database hosted at ensembldb.ensembl.org, execute a simple query and retrieve data for display in Igor. 0To do this you need to have the MySQL ODBC driver, called "MySQL Connector/ODBC", installed on your system. Instructions for downloading and installing the driver are provided below. 0The MySQL ODBC driver does not allow you to host databases on your computer. That requires the MySQL server package. But in this tutorial we will concern ourselves only with accessing databases on other computers and thus we need only the driver. Activating the SQL XOP B0If you have not already done so, activate the SQL XOP as follows: )0To activate SQL XOP for use with IGOR32: @\1. Open the "Igor Pro Folder/More Extensions/Utilities" folder. $\2. Make an alias (Macintosh) or shortcut (Windows) for the SQL.xop file and put the alias or shortcut in "Igor Pro User Files/Igor Extensions" (see Igor Pro User Files for details).  \3. Restart Igor. \ )0To activate SQL XOP for use with IGOR64: I\1. Open the "Igor Pro Folder/More Extensions (64-bit)/Utilities" folder. $\2. Make an alias (Macintosh) or shortcut (Windows) for the SQL64.xop file and put the alias or shortcut in "Igor Pro User Files/Igor Extensions (64-bit)" (see Igor Pro User Files for details).  \3. Restart Igor. \ )Installing MySQL ODBC Driver On Mac OS X )0To download the MySQL ODBC driver, go to 10  }0If you are running IGOR32, download the 32-bit x86 (Intel) DMG format installer and run it to install the MySQL ODBC driver. }0If you are running IGOR64, download the 64-bit x86 (Intel) DMG format installer and run it to install the MySQL ODBC driver. 0Unfortunatetly, installing both the 32-bit driver and the 64-bit driver on Macintosh is problematic. This is because both drivers use the same file names so the installers overwrite each other. If you IGOR32 only, install the 32-bit driver. If you use IGOR64 only, install the 64-bit driver. If you want to use both with SQL XOP, send a note to support@wavemetrics.com asking for instructions. 0If you previously installed an earlier version, download and install the latest version. As of this writing the current version is 5.3.4 and that is what we are using at WaveMetrics. (Installing MySQL ODBC Driver On Windows )0To download the MySQL ODBC driver, go to 10  f0Download the "Windows Installer (x86, 32-bit) MSI Installer" and run it to install the 32-bit driver. f0Download the "Windows Installer (x86, 64-bit) MSI Installer" and run it to install the 64-bit driver. 0If you previously installed an earlier version, download and install the latest version. As of this writing the current version is 5.3.4 and that is what we are using at WaveMetrics. !Collecting Connection Parameters 0To connect to a database, you need to specify the URL of the database server, the name of the database you want to connect to, and your user ID and password for accessing the database server. 20In this tutorial we use ensembldb.ensembl.org - a publically-accessible MySQL database that hosts genome information. This database requires that we connect as user 'anonymous' with no password. In real-life, you would use a real user name and password which you would get from the database administrator. 0Because the real databases hosted by ensembldb.ensembl.org are too complex for demonstration purposes, in this tutorial we use the information_schema database - a database that is created during the MySQL server installation process. !Creating a MySQL DSN on Mac OS X 0A DSN ("Data Source Name") encapsulates all of the information needed to connect to a database. We will create a DSN named "IgorDemo1" that encapsulates the information needed to access the database at ensembldb.ensembl.org. V0The following steps show how to create the DSN by editing the ODBC.ini file directly. O\1. In the Finder, choose Go->Go to Folder, enter ~/Library/ODBC, and click Go. '\2. Open the ODBC.ini file in TextEdit. *@3. Add a section at the bottom like this: 8 [IgorDemo1] +8 Driver = MySQL ODBC 5.3 ANSI Driver ;8 Description = Ensemble Genome Database for Igor SQL Demo &8 SERVER = ensembldb.ensembl.org #8 DATABASE = information_schema 8 USER = anonymous 8 PWD = < CHARSET = UTF8 $\ NOTE: If you have a different version of the MySQL ODBC driver you will need to enter a different name for the driver. The driver name should appear elsewhere in the ODBC.ini file, under "[myodbca]". Do not use the Unicode driver. U\4. Near the top of the file, add this to the end of the [ODBC Data Sources] section: +< IgorDemo1 = MySQL ODBC 5.3 ANSI Driver \5. Save the ODBC.ini file. Creating a MySQL DSN on Windows 0A DSN ("Data Source Name") encapsulates all of the information needed to connect to a database. We will create a DSN named "IgorDemo1" that encapsulates the information about our test database at ensembldb.ensembl.org. \1. Open Control Panel -> System and Security -> Administrative Tools -> Data Sources (ODBC) to run the ODBC Data Sources program. \ If you see both 32-bit and 64-bit ODBC Data Sources programs, you can run either. If you have both the 32-bit and 64-bit MySQL ODBC drivers installed, the DSN you create here will work with both. r\2. Click the User DSN tab (or click System DNS if you want all users on your machine to be able to use this DSN). \3. Click the Add button. \5. Choose the "MySQL ODBC 5.3 ANSI Driver" (change this if necessary depending on your driver version) and click Finish. A new dialog, titled "MySQL Connector/ODBC Data Source Configuration", is displayed. S\6. In the Connector/ODBC dialog, enter the following values exactly as shown here: \ Data Source Name: IgorDemo1 :\ Description: Ensemble Genome Database for Igor SQL Demo '\ TCP/IP Server: ensembldb.ensembl.org \ Port: 3306 \ User: anonymous \ Password: \ Database: information_schema \ Character Set: UTF8 W\ To see the Character Set setting, you need to click the Details button in the dialog. \7. Click the Test button. You should get an alert saying that the connection was successful. Click OK to dismiss the alert. If the test fails, carefully check all of the settings. Also make sure that port 3306 is open on your computer. >\8. Click OK in the Connector/ODBC dialog to complete the DSN. @\9. Click OK to quit the ODBC Data Source Administrator program. , Running the SQL Demo D0In IGOR, choose File->Example Experiments->Feature Demos->SQL Demo. ,0Follow the instructions in that experiment. !$ SQL XOP High-Level Programming g $0SQL XOP provides easy access to ODBC-compatible databases through its high-level interface which consists of a single operation named SQLHighLevelOp. For most applications, you can use this high-level interface and do not need to learn the details of ODBC programming.  0The high-level interface provides two ways to connect to the database. These are called "one-command-per-connection" and "multiple-commands-per-connection". 0SQLHighLevelOp allows you to connect to a database, execute an SQL statement, fetch results, if any, and close the connection, all in one easy step. For simple applications this one-command-per-connection method is sufficient. W0For more complex applications, it is also possible, though not required, to open a connection to a database in a separate step, make multiple calls to SQLHighLevelOp using that connection, and then close the connection in another step. This multiple-commands-per-connection method provides better throughput at the cost of greater complexity. &The One-Command-Per-Connection Method 0Using the one-command-per-connection method, you provide a connection string that specifies the name of the ODBC driver to use, the URL of the host computer on which the SQL database server is running, a user name, a password, and other information needed to connect to the database. The connection string may specify the required information directly or may refer to a DSN (data source name) that you have previously created which indirectly specifies some or all of the information required to connect. 0In this example, the connection string specifies all of the information directly. A SELECT statement is then executed. SQLHighLevelOp automatically loads any results from the SQL SELECT statement into waves and displays them in a table: 8#include 8Function Test() 8 String connectionStr = "" 78 connectionStr += "DRIVER=MySQL ODBC 5.3 ANSI Driver;" 28 connectionStr += "SERVER=ensembldb.ensembl.org;" 18 connectionStr += "DATABASE=information_schema;" #8 connectionStr += "UID=anonymous;" 8 connectionStr += "PWD=;" 98 connectionStr += "CHARSET=UTF8;" // For Igor7 or later 38 String statement = "Select * from CHARACTER_SETS" L8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} /O /E=1 statement <End 0The SQL_DRIVER_COMPLETE flag tells SQLHighLevelOp to ask the ODBC driver to display a dialog in which the user can enter any additional required information but no dialog is necessary in this case because the information provided is sufficient to open the connection. Furthermore, not all ODBC drivers implement the dialog. For example, the Macintosh MySQL ODBC 5.3 driver does not implement it and therefore returns an error if the connection string does not specify all required information. 0In the next example, the connection string references a DSN named IgorDemo1. Normally, "DSN=IgorDemo1;" would be all that is required. However, due to a bug in the Macintosh MySQL ODBC driver, we must add the user name and password: 8#include 8Function Test() <8 String connectionStr = "DSN=IgorDemo1;UID=anonymous;PWD=;" 38 String statement = "Select * from CHARACTER_SETS" L8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} /O /E=1 statement <End (0In order to connect to a database, ODBC needs to know the name of the ODBC driver to use for the connection, the URL or IP address of the host computer running a database server, the name of a database served by that server, and the user name and password of a user with access to that database. =0Here are four representative examples of connection strings: 8"DSN=IgorDemo1;" $8"DSN=IgorDemo1;UID=anonymous;PWD=;" 8"DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=ensembldb.ensembl.org;DATABASE=information_schema;UID=anonymous;PWD=;CHARSET=UTF8;" G<"DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=anonymous;PWD=;CHARSET=UTF8;" }0With the "MySQL ODBC 5.3 ANSI Driver", all of these methods work on Windows but only the second and third work on Macintosh. 0The first two connection strings provide the necessary information by reference to a previously-created DSN. With most ODBC drivers, you can include the user name and password information in the DSN so that does not need to be specified in the connection string. However the "MySQL ODBC 5.3 ANSI Driver" requires that the user name and password appear directly in the connection string, so the first method fails while the second works. e0The third connection string provides all necessary information directly, without reference to a DSN. 0The fourth connection string does not provide the necessary information because it does not identify the host computer or the name of the database. In this case the ODBC driver manager will call the ODBC driver which may display a dialog in which the user can enter the rest of the information. Some ODBC drivers do not support this feature and will return an error if the connection string does not contain sufficient information to make the connection. An example is the "MySQL ODBC 5.3 ANSI Driver" on Macintosh. 0At a bare minimum, ODBC needs to know which ODBC driver to talk to because it is the ODBC driver that displays the dialog soliciting additional information if needed. E0The third and fourth methods, which use the driver name, have the advantage of not requiring the user to create a DSN but they will fail if the actual driver name does not match the supplied string. For example, if the MySQL installer changes the name of the driver to "MySQL ODBC 5.4 ANSI Driver", these examples will fail. F$0For additional discussion of connection strings see SQLDriverConnect. 4 D,The Multiple-Commands-Per-Connection Method 0Using the multiple-commands-per-connection method, you provide a connection reference number returned by the SQLConnect or SQLDriverConnect functions. After executing all of your statements, you explicitly disconnect by calling the SQLDisconnect function. An example using the multiple-commands-per-connection method is provided below, under High-Level Fetching Multiple Rows Into Variables Example. m w{  V ]0The following low-level functions are used with the multiple-commands-per-connection method: 60SQLAllocHandle, SQLFreeHandle   ,Z0SQLConnect, SQLDriverConnect, SQLDisconnect    SQL Statement Processing U0Using SQLHighLevelOp you can execute most SQL commands, including these common ones: ;< CREATE TABLE, ALTER TABLE, DELETE, INSERT, SELECT, UPDATE Z0SQLHighLevelOp does not examine the statement but merely passes it to ODBC for execution. 60When executing a statement that contains parameter markers (represented by the '?' symbol), you need to provide parameter data via parameter waves or variables. SQLHighLevelOp binds your parameter data to the parameter markers before executing the statement. Most but not all DBMS's support parameter markers. 0SQLHighLevelOp automatically fetches any results generated by the statement's execution and stores them in output waves or variables. Results are generated by SELECT statements and some other less-common SQL statements. l0SQLHighLevelOp automatically prints diagnostic information in Igor's history area in the event of an error. ,High-Level Fetching Data Into Waves Example $0Here is an example that fetches data from the sample MySQL database at ensembldb.ensembl.org and displays the data in a table. To run this example, you need to have the MySQL driver installed on your machine and to create the DSN as explained under SQL XOP Tutorial.  8#include "8Function SQLHighLevelFetchTest1() Y8 // This connection string references the previously-created data source name IgorDemo1. <8 String connectionStr = "DSN=IgorDemo1;UID=anonymous;PWD=;" 8 38 String statement = "Select * from CHARACTER_SETS" L8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} /O /E=1 statement 8 8 // Print output variables w8 Printf "V_flag=%d, V_SQLResult=%d, V_numWaves=%d, S_waveNames=\"%s\"\r", V_flag, V_SQLResult, V_numWaves, S_waveNames 8 if (strlen(S_Diagnostics) > 0) ,8 Printf "Diagnostics: %s\r", S_Diagnostics 8 endif <End 0SQLHighLevelOp automatically creates output waves for the results from the select command. The /E=1 flag tells SQLHighLevelOp to display the output waves in an Igor table. 3High-Level Fetching One Row Into Variables Example 0In the preceding example, we fetched multiple rows of data into Igor waves. Sometimes you want to fetch just a single row. In that case it may be more convenient to fetch the data into variables using the /VARS flag. For example: 8#include "8Function SQLHighLevelFetchTest1() Y8 // This connection string references the previously-created data source name IgorDemo1. <8 String connectionStr = "DSN=IgorDemo1;UID=anonymous;PWD=;" 8 &8 String characterSetName, description r8 String statement = "Select CHARACTER_SET_NAME,DESCRIPTION from CHARACTER_SETS where CHARACTER_SET_NAME='latin1'" j8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} /VARS={characterSetName, description} statement 68 Printf "%s: \"%s\"\r", characterSetName, description 8 8 // Print output variables ;8 Printf "V_flag=%d, V_SQLResult=%d\r", V_flag, V_SQLResult 8 if (strlen(S_Diagnostics) > 0) ,8 Printf "Diagnostics: %s\r", S_Diagnostics 8 endif <End 0If you omit the /VARS flag, SQLHighLevelOp returns fetched data in Igor waves. If you provide the /VARS flag, fetched data is returned in the specified variables. In this example, we used local variables. You can also use global variables by passing the names of NVARs or SVARs to the /VARS flag. Your variables must be numeric or string depending on the data type of the columns you are fetching. SQLHighLevelOp Error Handling 0A fatal error is an error that prevents SQLHighLevelOp from completing what you asked it to do. When a fatal error occurs, SQLHighLevelOp, by default, returns a non-zero result code to Igor. When Igor receives this non-zero result code it stops procedure execution and displays an error message. Attempting to access a database for which you don't have sufficient privileges, attempting to access a non-existent field, and a syntax error in your SQL statement are all examples of errors that by default are fatal. f0There are some cases where you can not allow SQLHighLevelOp to return a fatal error to Igor because you need to do cleanup, for example, closing a database connection that you previously opened. To guarantee that you do the required cleanup, you have to detect and gracefully handle errors instead of allowing SQLHighLevelOp to return a fatal error to Igor. 0You prevent a fatal error by using the /Z=1 flag when calling SQLHighLevelOp. With /Z=1, you are telling SQLHighLevelOp not to return an error to Igor. Instead, SQLHighLevelOp puts any error code into the variable V_flag, which you check after each call, and returns 0 to Igor signifying no error. If V_flag is non-zero, you know an error has occurred and you can proceed accordingly. An example of gracefully handling errors is shown in the next section. 0In addition to V_flag, SQLHighLevelOp sets another variable, V_SQLResult, which sometimes may be of use in error handling. V_SQLResult contains the ODBC result code from the last ODBC call that SQLHighLevelOp made. In most cases V_SQLResult is of little consequence. 0The following example shows a case where we do need to check V_SQLResult. In that example, we read one row after another from a result set until there are no more rows to read. We detect that there are no more rows to read by comparing V_SQLResult to SQL_NO_DATA. 9High-Level Fetching Multiple Rows Into Variables Example ,0In the preceding example, we fetched one row of data into Igor variables using the /VARS flag. This is perfect for situations where your query will return just one row. Usually for queries that you expect to return multiple rows, you will omit /VARS and SQLHighLevelOp will return the data in waves. 0There may be cases where you prefer to receive the data in variables but expect the query to return more than one row. This can be done using /VARS and the /STMT flag, although it is considerably more complex and not needed for most applications. A0To do this, you must allocate the environment handle, the connection handle and the statement handle yourself and you must free them when you are finished instead of relying on SQLHighLevelOp to do it. To guarantee that you free any allocated handles, you must use a try-catch structure, as demonstrated in this example: 8#include `8Function FetchRowsIntoVariables() // Fetches multiple rows from database into local variables. Z8 // GetConnectionString is a function that you would define to return a connection string .8 String connectionStr = GetConnectionString() 8 N8 Variable environmentRefNum = -1, connectionRefNum = -1, statementRefNum = -1 8 Variable needToDisconnect = 0 8 Variable rc 8 8 Variable result = 0 8 8 try 18 // Obtain an ODBC environment reference number <8 rc = SQLAllocHandle(SQL_HANDLE_ENV, 0, environmentRefNum) 8 if (rc != SQL_SUCCESS) 48 Print "Error while creating environment refnum." 8 AbortOnValue 1, 1 8 endif 8 ]8 SQLSetEnvAttrNum(environmentRefNum, SQL_ATTR_ODBC_VERSION, 3) // Specifies ODBC version 3. 8 08 // Obtain an ODBC connection reference number K8 rc = SQLAllocHandle(SQL_HANDLE_DBC, environmentRefNum, connectionRefNum) 8 if (rc != SQL_SUCCESS) 38 Print "Error while creating connection refnum." 8 AbortOnValue 1, 2 8 endif 8 $8 // Connect to the database server 8 String outConnectionStr *8 Variable outConnectionStrRequiredLength 8 rc = SQLDriverConnect(connectionRefNum, connectionStr, outConnectionStr, outConnectionStrRequiredLength, SQL_DRIVER_COMPLETE) 48 if (rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO) /8 Print "Error while connecting to database." 8 AbortOnValue 1, 3 8 endif 8 needToDisconnect = 1 8 /8 // Obtain an ODBC statement reference number J8 rc = SQLAllocHandle(SQL_HANDLE_STMT, connectionRefNum, statementRefNum) 8 if (rc != SQL_SUCCESS) 28 Print "Error while creating statement refnum." 8 AbortOnValue 1, 4 8 endif 8 A8 // Database values will be fetched into these local variables. 8 Variable partID, price 8 String description, moddt 8 8 Variable row = 1 8 do 8 String statement 8 if (row == 1) P8 statement = "Select * from parts" // This statement creates the result set. 8 else Y8 statement = "" // Execute no statement. We will just do a fetch of the next row. 8 endif |8 SQLHighLevelOp /Z=1 /CONN=(connectionRefNum) /STMT=(statementRefNum) /VARS={partID, description, price, moddt} statement 8 .8 if (V_flag==0 && V_SQLResult==SQL_NO_DATA) +8 break // No more rows to fetch. 8 endif 8 M8 if (V_flag!=0 || (V_SQLResult!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO)) :8 Print "Error while fetching rows from table 'parts'." 8 AbortOnValue 1, 5 8 endif 8 r8 Printf "Row=%d, partID=%d, description=\"%s\", price=%.2f, moddt=%s\r", row, partID, description, price, moddt 8 8 row += 1 8 while(1) 8 8 catch 8 result = V_abortCode 8 Printf "FetchRowsIntoVariables: V_flag=%d, V_SQLResult=%d, V_numColumns=%d, V_numVars=%d\r", V_flag, V_SQLResult, V_numColumns, V_numVars !8 if (strlen(S_Diagnostics) > 0) -8 Printf "Diagnostics: %s\r", S_Diagnostics 8 endif 8 endtry 8 8 if (statementRefNum >= 0) 8 // Close the statement "8 SQLCloseCursor(statementRefNum) 28 SQLFreeHandle(SQL_HANDLE_STMT, statementRefNum) 8 endif 8 8 if (needToDisconnect) "8 SQLDisconnect(connectionRefNum) 8 endif 8 8 if (connectionRefNum >= 0) 8 // Close the connection 28 SQLFreeHandle(SQL_HANDLE_DBC, connectionRefNum) 8 endif 8 8 if (environmentRefNum >= 0) !8 // Free the environment handle 38 SQLFreeHandle(SQL_HANDLE_ENV, environmentRefNum) 8 endif 8 !8 return result // 0 if no error. <End 0The first time though the loop we execute "Select * from parts" which produces a result set with multiple rows. Also on this first pass, we receive the first row of results via our local variables. 0On subsequent passes of the loop, we do not execute any query by virtue of passing "" as the SQL statement text. SQLHighLevelOp still does a fetch, returning subsequent rows of the result set, one row per iteration of the loop. 0We test V_SQLResult set each time through the loop. When it is equal to SQL_NO_DATA, we know that there are no more rows to fetch. High-Level Parts Table Examples 0The remaining high-level examples interact with a 'parts' table in a database named SQLHighLevelTestDB. If you have administrator privileges for a database server you can run these examples. Here is the setup information. 0This setup assumes that you have a MySQL server running on your local machine or on another machine and that you have administrator-level privileges for the MySQL server. If you are running a different database server you will need to translate these instructions. X0To start the MySQL monitor, execute this command from the Unix or Windows command line: #Hmysql -u -p u0Execute these commands in MySQL monitor to create the test database and to create a user with sufficient privileges: $HCREATE DATABASE SQLHighLevelTestDB; 60If the MySQL server is running on your local machine: fHGRANT ALL on SQLHighLevelTestDB.* to 'SQLHighLevelUser'@'localhost' IDENTIFIED BY 'SQLHighLevelTest'; ^0If the MySQL server is running on a remote machine, use your IP number in place of localhost: fHGRANT ALL on SQLHighLevelTestDB.* to 'SQLHighLevelUser'@'localhost' IDENTIFIED BY 'SQLHighLevelTest'; b$0Now you must create a DSN (see SQL XOP Tutorial for instructions) with the following information:  /&, Data Source Name: SQLHighLevelTestDB 9, Description: Test database for SQLHighLevelOp operation C4 Server: localhost (or the IP address of the remote MySQL server) , User: SQLHighLevelUser , Password: SQLHighLevelTest , Database: SQLHighLevelTestDB 0 Character Set: UTF8 General Utility Routines 0A WaveMetrics-provided procedure file, SQLConstants.ipf, defines symbolic constants that are used in all SQL programming. Thus you need to have this statement in your main procedure window or in some other procedure window. <<#include // Include SQL symbolic constants. w0Another WaveMetrics-provided procedure file, SQLUtils.ipf, provides some utility routines. You will rarely need these. $High-Level Example Utility Routines a0These additional utility routines are used by all of the parts table examples in this help file. f8Function/S GetPartsDBConnectionString() // This connection string is used to connect to the database. 28 String connectionStr = "DSN=SQLHighLevelTestDB;" k8 connectionStr += "UID=SQLHighLevelUser;PWD=SQLHighLevelTest;" // Needed by MySQL ODBC driver on Macintosh 8 return connectionStr 8End 8 g8Function FetchPartsTable() // Called to display parts table after we do an insert, update or delete. 58 String connectionStr = GetPartsDBConnectionString() *8 String statement = "Select * from parts" L8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} /O /E=3 statement 8End 8 K8Function StorePartsTable() // Overwrites database table from Igor waves. 58 String connectionStr = GetPartsDBConnectionString() 8 String statement 8 !8 statement = "Delete from parts" L8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} /O /E=3 statement }8 PrintSQLHighLevelDiagnostics("Delete all rows", V_flag, V_SQLResult, V_SQLRowCount, V_numWaves, S_waveNames, S_diagnostics) 8 28 statement = "INSERT INTO parts VALUES (?,?,?,?)" 8 Wave partID, price, moddt 8 Wave/T description w8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} /PWAV={partID, description, price, moddt} statement 8 PrintSQLHighLevelDiagnostics("Insert from waves", V_flag, V_SQLResult, V_SQLRowCount, V_numWaves, S_waveNames, S_diagnostics) 8End 8 n8Function PrintSQLHighLevelDiagnostics(testTitle, flag, SQLResult, rowCount, numWaves, waveNames, diagnostics) 8 String testTitle .8 Variable flag, SQLResult, rowCount, numWaves 8 String waveNames, diagnostics 8 8 // Print output variables 8 Printf "%s: V_flag=%d, V_SQLResult=%d, V_SQLRowCount=%d, V_numWaves=%d, S_waveNames=\"%s\"\r", testTitle, flag, SQLResult, rowCount, numWaves, waveNames 8 if (strlen(diagnostics) > 0) *8 Printf "Diagnostics: %s\r", diagnostics 8 endif <End -High-Level Inserting Data From Waves Example r0Here is an example that creates a table in an existing database and inserts multiple rows of data into the table. ?0An SQL INSERT statement can contain literal values, like this: N<INSERT INTO parts VALUES (1,'Cam shaft',250.00,now()),(2,'Valve',45.25,now()) ,0or it can use parameter markers, like this: #<INSERT INTO parts VALUES (?,?,?,?) ?0or it can mix literal values and parameter markers, like this: '<INSERT INTO parts VALUES (1,?,?,now()) !0This example shows both methods. 0now() is a MySQL function that returns the current timestamp. On other database systems, notably Microsoft SQL Server, the now() function does not exist and the getdate() function does the same thing. 0"DROP TABLE IF EXISTS" is a MySQL extension that is not supported by other databases. Instead you must use "DROP TABLE" and ignore any error which would be returned if the database did not already exist. 8Function CreatePartsTable1() // Creates 'parts' table in existing SQLHighLevelTestDB database using the one-command-per-connection method. 58 String connectionStr = GetPartsDBConnectionString() 8 8 String statement 8 Z8 // "DROP TABLE IF EXISTS" is a MySQL extension that is not supported by other databases. *8 statement = "DROP TABLE IF EXISTS parts" M8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} statement 8 if (V_flag != 0) .8 Print "Error while dropping table 'parts'." 8 return -1 8 endif 8 8 statement = "CREATE TABLE parts (partID int NOT NULL, description varchar(100) default NULL, price float default NULL, moddt datetime default NULL, PRIMARY KEY (partID))" M8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} statement 8 if (V_flag != 0) .8 Print "Error while creating table 'parts'." 8 return -1 8 endif 8 8 if (0) M8 // This is a simple but slower way to insert values using literal strings. X8 // now() is a MySQL function. On other systems you may need to use getdate() instead. 8 statement = "INSERT INTO parts VALUES (1,'Cam shaft',250.00,now()),(2,'Valve',45.25,now()),(3,'Throttle',125.30,now()),(4,'Windshield',398.00,now()),(5,'Fender',202.00,now()),(6,'Motor',1395.00,now())" N8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} statement 8 else G8 // This is a faster way to insert many values using parameter waves. +8 Make/O tempPartNums = {1, 2, 3, 4, 5, 6} b8 Make/O/T tempDescriptions = {"Cam shaft", "Valve", "Throttle", "Windshield", "Fender", "Motor"} G8 Make/O tempPrices = {250.00, 45.25, 125.30, 398.00, 202.00, 1395.00} X8 // now() is a MySQL function. On other systems you may need to use getdate() instead. 78 statement = "INSERT INTO parts VALUES (?,?,?,now())" 8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} /PWAV={tempPartNums, tempDescriptions, tempPrices} statement 98 KillWaves/Z tempPartNums, tempDescriptions, tempPrices 8 endif 8 PrintSQLHighLevelDiagnostics("Insert, one-command-per-connection method.", V_flag, V_SQLResult, V_SQLRowCount, V_numWaves, S_waveNames, S_diagnostics) 8 if (V_flag != 0) 98 Print "Error while inserting data into table 'parts'." 8 return -1 8 endif 8 8 FetchPartsTable() 8 8 return 0 <End 0As shown in this example, if your statement uses parameter markers, you must supply parameter waves using the /PWAV or /PLST flag (or you can use parameter variables with the /PVAR flag as explained below). 0If you omit /PWAV and /PLST, SQLHighLevelOp assumes the statement contains no parameter markers and executes the INSERT statement once. 0If you specify /PWAV or /PLST, SQLHighLevelOp executes the INSERT statement once for each row of the parameter waves. In this example, we are passing parameter waves with six rows so SQLHighLevelOp will execute the INSERT statement six times, once for each row in the parameter waves. Z0By default, the number of rows in the first parameter wave determines the number of times the INSERT statement is executed. Normally all parameter waves should have the same number of rows. In the event that some parameter waves have fewer rows than the first parameter wave, SQLHighLevelOp sets the corresponding values in the database to NULL. b0To insert a null value for an entire column you can pass NULL in the list of values. For example: K<INSERT INTO parts VALUES (1,'Cam shaft',NULL,now()),(2,'Valve',NULL,now()) !0or if you use parameter markers: *<INSERT INTO parts VALUES (?,?,NULL,now()) 0You can insert a default value using the same syntax but DEFAULT instead of NULL. This would be appropriate for a column that is set to be auto-incrementing. 1High-Level Inserting Data From Variables Example 0In the preceding example, we inserted multiple rows into the database, passing parameter data via waves. To insert a single row, it may be more convenient to pass parameter data using variables. In this example, we insert a single row into an existing table. 0This technique uses the /PVAR flag which requires Igor Pro 6.10 or later. With earlier versions of Igor Pro, SQLHighLevelOp with /PVAR will return an error. >8Function InsertOneRowInPartsTable(partID, description, price) 8 Variable partID 8 String description 8 Variable price 8 58 String connectionStr = GetPartsDBConnectionString() 8 8 String statement 8 W8 // now() is a MySQL function. On other systems you may need to use getdate() instead. 68 statement = "INSERT INTO parts VALUES (?,?,?,now())" n8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} /PVAR={partID,description,price} statement 8 8 PrintSQLHighLevelDiagnostics("Insert a row using variables.", V_flag, V_SQLResult, V_SQLRowCount, V_numWaves, S_waveNames, S_diagnostics) 8 if (V_flag != 0) 98 Print "Error while inserting data into table 'parts'." 8 return -1 8 endif 8 8 FetchPartsTable() 8 8 return 0 <End 0When you use the /PVAR flag, SQLHighLevelOp takes parameter data from the listed variables which may be local variables or global variables referenced by NVAR or SVAR references. In this case we are using function parameters which behave like local variables whose values are set by the calling function. You can not pass literal values (e.g., 123 or "Hello") as parameters to /PVAR - you must pass the names of variables. 0To insert a null or default value, specify NULL or DEFAULT in the statement instead of a parameter marker and omit the corresponding variable in the /PVAR flag. ;High-Level Multiple-Commands-Per-Connection Method Example 0This example does the same thing as the CreatePartsTable1 example - it creates a table in an existing database and inserts data into the table. 0In the previous example, we used the one-command-per-connection method meaning that we provided a connection string to SQLHighLevelOp using the /CSTR flag. It connected, executed the statement, and disconnected from the database. vH0In this example we use the multiple-commands-per-connection method. We use the low-level SQLAllocHandle and SQLDriverConnect functions to connect to the database and obtain a connection reference number. We pass the connection reference number to SQLHighLevelOp using the /CONN flag. Rather than opening a new connection, SQLHighLevelOp uses the connection already created. Y gl |0Whereas the preceding example opens and closes the connection once for every SQLHighLevelOp call, this example opens and closes the connection only once. This will result in faster execution, but it is considerably more complex. In most cases, the difference will be significant only if when doing a large number of SQLHighLevelOp calls. The simpler one-command-per-connection method is usually sufficient and the multiple-commands-per-connection method is not needed. 0In ODBC, opening a connection requires first creating an "environment handle", then creating a "connection handle" and finally creating the connection. When a program is finished with the connection, it must free these handles. When we used the one-command-per-connection method, SQLHighLevelOp took care of these details for us. Since we are now using the multiple-command-per-connection method, we are responsible for allocating and freeing the handles, as shown below. s0To guarantee that we do do the required cleanup when we are finished with the connection, we have to detect and gracefully handle errors instead of allowing Igor's normal behavior which is to abort procedure execution when an error occurs. We do this by checking the result code returned by each function call and also by using the /Z=1 flag when calling SQLHighLevelOp. :0Most errors returned by SQLHighLevelOp are fatal. A fatal error is a programming error such as passing a null (uninitialized) string or an SQL error that prevents completing the task, such as trying to access a table for which you do not have sufficient privileges or trying to access a field that does not exist. 0Without /Z=1, if a fatal error occurs, SQLHighLevelOp returns an error to Igor and this causes procedure execution to stop. In that case, we would have no opportunity to close the connection. With /Z=1, we are telling SQLHighLevelOp not to return an error to Igor. Instead, SQLHighLevelOp puts any error code into the variable V_flag, which we check after each call, and returns 0 to Igor signifying no error. /0In this example, if a fatal error (V_flag != 0) occurs, we skip the rest of the function and just clean up what we've started by disconnecting from the database and freeing handles allocated by SQLAllocHandle. This response to errors is implemented using Igor's try-catch-endtry flow control structure. 8Function CreatePartsTable2() // Creates 'parts' table in existing SQLHighLevelTestDB database using the multiple-commands-per-connection method. 58 String connectionStr = GetPartsDBConnectionString() 8 88 Variable environmentRefNum = -1, connectionRefNum = -1 8 Variable needToDisconnect = 0 8 String statement 8 Variable rc 8 8 Variable result = 0 8 8 try 18 // Obtain an ODBC environment reference number <8 rc = SQLAllocHandle(SQL_HANDLE_ENV, 0, environmentRefNum) 8 if (rc != SQL_SUCCESS) 48 Print "Error while creating environment refnum." 8 AbortOnValue 1, 1 8 endif 8 ]8 SQLSetEnvAttrNum(environmentRefNum, SQL_ATTR_ODBC_VERSION, 3) // Specifies ODBC version 3. 8 08 // Obtain an ODBC connection reference number K8 rc = SQLAllocHandle(SQL_HANDLE_DBC, environmentRefNum, connectionRefNum) 8 if (rc != SQL_SUCCESS) 38 Print "Error while creating connection refnum." 8 AbortOnValue 1, 2 8 endif 8 $8 // Connect to the database server 8 String outConnectionStr *8 Variable outConnectionStrRequiredLength 8 rc = SQLDriverConnect(connectionRefNum, connectionStr, outConnectionStr, outConnectionStrRequiredLength, SQL_DRIVER_COMPLETE) 48 if (rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO) /8 Print "Error while connecting to database." 8 AbortOnValue 1, 3 8 endif 8 needToDisconnect = 1 8 ,8 // If the table already exists, delete it [8 // "DROP TABLE IF EXISTS" is a MySQL extension that is not supported by other databases. +8 statement = "DROP TABLE IF EXISTS parts" 98 SQLHighLevelOp /Z=1 /CONN=(connectionRefNum) statement L8 if (V_flag!=0 || (V_SQLResult!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO)) /8 Print "Error while dropping table 'parts'." 8 AbortOnValue 1, 4 8 endif 8 8 // Create the table 8 statement = "CREATE TABLE parts (partID int NOT NULL, description varchar(100) default NULL, price float default NULL, moddt datetime default NULL, PRIMARY KEY (partID))" 98 SQLHighLevelOp /Z=1 /CONN=(connectionRefNum) statement L8 if (V_flag!=0 || (V_SQLResult!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO)) /8 Print "Error while creating table 'parts'." 8 AbortOnValue 1, 5 8 endif 8 8 // Insert data into the table +8 Make/O tempPartNums = {1, 2, 3, 4, 5, 6} b8 Make/O/T tempDescriptions = {"Cam shaft", "Valve", "Throttle", "Windshield", "Fender", "Motor"} G8 Make/O tempPrices = {250.00, 45.25, 125.30, 398.00, 202.00, 1395.00} X8 // now() is a MySQL function. On other systems you may need to use getdate() instead. 78 statement = "INSERT INTO parts VALUES (?,?,?,now())" l8 SQLHighLevelOp /Z=1 /CONN=(connectionRefNum) /PWAV={tempPartNums, tempDescriptions, tempPrices} statement 98 KillWaves/Z tempPartNums, tempDescriptions, tempPrices 8 PrintSQLHighLevelDiagnostics("Insert, multiple commands per connection method.", V_flag, V_SQLResult, V_SQLRowCount, V_numWaves, S_waveNames, S_diagnostics) L8 if (V_flag!=0 || (V_SQLResult!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO)) :8 Print "Error while inserting data into table 'parts'." 8 AbortOnValue 1, 7 8 endif 8 catch 8 result = V_abortCode 8 endtry 8 8 if (needToDisconnect) "8 SQLDisconnect(connectionRefNum) 8 endif 8 8 if (connectionRefNum >= 0) 8 // Close the connection 28 SQLFreeHandle(SQL_HANDLE_DBC, connectionRefNum) 8 endif 8 8 if (environmentRefNum >= 0) !8 // Free the environment handle 38 SQLFreeHandle(SQL_HANDLE_ENV, environmentRefNum) 8 endif 8 8 FetchPartsTable() 8 !8 return result // 0 if no error. <End ,High-Level Updating Data From Waves Example _0This example illustrates updating multiple rows of the database in one call to SQLHighLevelOp. 0Here we use parameter waves. As in the INSERT example, SQLHighLevelOp executes the statement once for each row in the parameter waves. 8Function UpdatePartsTable1() // Updates 'parts' table in existing SQLHighLevelTestDB database using the one-command-per-connection method. 58 String connectionStr = GetPartsDBConnectionString() 8 8 String statement 8 8 if (0) M8 // This is a simple but slower way to update values using literal strings. X8 // now() is a MySQL function. On other systems you may need to use getdate() instead. g8 statement = "UPDATE parts SET price = 300.00, moddt=now() WHERE partID=1" // Change Cam Shaft price. N8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} statement 8 else G8 // This is a faster way to update many values using parameter waves. +8 Make/O tempPartNums = {1, 2, 3, 4, 5, 6} G8 Make/O tempPrices = {260.00, 55.25, 225.30, 498.00, 302.00, 2395.00} X8 // now() is a MySQL function. On other systems you may need to use getdate() instead. E8 statement = "UPDATE parts SET price=?, moddt=now() WHERE partID=?" n8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} /PWAV={tempPrices,tempPartNums} statement 8 PrintSQLHighLevelDiagnostics("Update, one-command-per-connection method.", V_flag, V_SQLResult, V_SQLRowCount, V_numWaves, S_waveNames, S_diagnostics) '8 KillWaves/Z tempPartNums, tempPrices 8 endif 8 if (V_flag != 0) 68 Print "Error while updating data in table 'parts'." 8 return -1 8 endif 8 8 FetchPartsTable() 8 8 return 0 <End 6High-Level Updating Data Example With Indicator Waves 0When a value is missing the usual procedure is to set the corresponding database value to NULL. In order to do this, you need to pass length/indicator waves to SQLHighLevelOp in addition to the parameter waves. 0A length/indicator wave contains either a non-negative number of characters to be stored for the corresponding parameter or a special negative indicator value, such as SQL_NULL_DATA (-1). 0With SQL XOP there is usually no need to use a length/indicator wave for character parameters because, in the absence of a length/indicator wave, SQL XOP will determine the length from the text parameter wave passed into SQLHighLevelOp. Therefore length/indicator waves are needed only when you want to set a database element to NULL to distinguish an empty string (value is "") from a NULL value (value is missing). For brevity, we will refer to length/indicator waves as "indicator waves". 0This example is the same as UpdatePartsTable1 except that it uses indicator waves to set one of the database elements to NULL. G0ODBC ignores length values (non-negative numbers) in indicator waves for numeric columns. They are used only to indicate the length of elements of character and binary columns. That is why, in this example, we set all length/indicator values to zero except for the one corresponding to the element that we want to set to NULL. v8Function UpdatePartsTable3() // Updates 'parts' table in existing SQLHighLevelTestDB database using indicator waves. 58 String connectionStr = GetPartsDBConnectionString() 8 8 String statement 8 58 Make/O/I tempPartNumIndicators = {0, 0, 0, 0, 0, 0} Y8 Make/O/I tempPriceIndicators = {0, SQL_NULL_DATA, 0, 0, 0, 0} // Valve price is NULL. 8 *8 Make/O tempPartNums = {1, 2, 3, 4, 5, 6} F8 Make/O tempPrices = {240.00, 35.25, 115.30, 388.00, 192.00, 1295.00} 8 W8 // now() is a MySQL function. On other systems you may need to use getdate() instead. D8 statement = "UPDATE parts SET price=?, moddt=now() WHERE partID=?" 8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE_REQUIRED} /IWAV={tempPriceIndicators, tempPartNumIndicators} /PWAV={tempPrices,tempPartNums} statement 8 PrintSQLHighLevelDiagnostics("Update using indicator waves", V_flag, V_SQLResult, V_SQLRowCount, V_numWaves, S_waveNames, S_diagnostics) 8 88 KillWaves/Z tempPartNumIndicators, tempPriceIndicators &8 KillWaves/Z tempPartNums, tempPrices 8 8 if (V_flag != 0) 68 Print "Error while updating data in table 'parts'." 8 return -1 8 endif 8 8 FetchPartsTable() 8 8 return 0 <End -High-Level Treatment of NaN Parameter Values a0NaN means "not-a-number" and is the representation of a blank or undefined floating point value. 0Some SQL servers do not handle NaN values well when used as parameters. For example, if you try to use NaN as a parameter in an INSERT or UPDATE statement, MySQL converts NaN to zero and Microsoft SQL Server returns an error. Some SQL servers may accept NaN as a legitimate value. <0Since it appears that most servers have trouble with NaNs, the default behavior of SQLHighLevelOp is to treat a NaN parameter value, specified using the /PWAV or /PVAR flags, as a NULL value. This is what you need if your server does not support NaN parameters and your parameter waves or variables may contain NaN. 0You can override the default to make SQLHighLevelOp pass NaN parameters as NaNs using the /OPTS=2 flag. Use this if your server accepts NaN parameters and you want to store NaN in a field. aDate/Time Data ;0Date/time data includes date, time and date-and-time data. 0Different database systems represent date/time data in different ways. The ODBC library and drivers convert database data as necessary to fit into one of three ODBC types: date, time, and timestamp (a combination of date and time plus fractional seconds). 0In Igor, date/time data is stored in double-precision waves in Igor date/time format - namely as the number of seconds since January 1, 1904. Igor date/time waves are marked as date/time waves by setting the data units to "dat". When a date/time wave is displayed in an Igor table, the table automatically uses the date/time format. When a date/time wave is displayed in a graph, the graph displays a date/time axis. Other than that, date/time waves are just like any other double-precision numeric waves. J0An Igor date/time value can also be stored in a local or global variable. %High-Level Loading of Date/Time Data 0By default, when SQLHighLevelOp loads date, time or timestamp data from a database, as a result of a SELECT statement returning date/time values, it creates Igor date/time waves to hold the date/time data. NULL values result in NaN being stored in the corresponding wave element. 0In rare cases, you may prefer to load date/time data into text waves. You can tell SQLHighLevelOp to do this by using the /OPTS=1 flag when calling SQLHighLevelOp. 0You can use the /VARS flag to load data into variables rather than waves. If you load a date/time column into a numeric variable, the numeric variable will store the date/time value in Igor date/time format or NaN if the date/time value is NULL. If you load a date/time column into a string variable, the database converts the date/time value into text which is then stored in the string variable. %High-Level Storing of Date/Time Data ,0If you use a date/time wave as a parameter, for example in an INSERT, DELETE or UPDATE statement, SQLHighLevelOp transparently passes strings containing corresponding date/time values to ODBC for that parameter. For example, this deletes all rows whose modification date is prior to January 1, 2007: %8Variable year=2007, month=01, day=01 38Make/O/D/N=1 tempModDT = date2secs(year,month,day) ?8SetScale d 0, 0, "dat", tempModDT // Make it a date/time wave .8statement = "Delete from parts where moddt "8Function SQLHighLevelFetchTest1() Y8 // This connection string references the previously-created data source name IgorDemo1. <8 String connectionStr = "DSN=IgorDemo1;UID=anonymous;PWD=;" 8 &8 String characterSetName, description r8 String statement = "Select CHARACTER_SET_NAME,DESCRIPTION from CHARACTER_SETS where CHARACTER_SET_NAME='latin1'" j8 SQLHighLevelOp /CSTR={connectionStr,SQL_DRIVER_COMPLETE} /VARS={characterSetName, description} statement 68 Printf "%s: \"%s\"\r", characterSetName, description <End 0In this example, we pass local numeric variables to /VARS. You can pass numeric or string variables as appropriate for the corresponding column in the result set. 0For most types of columns, SQLHighLevelOp relies on the ODBC driver to convert from the data type of the column being fetched into double-precision floating point for numeric variables or into text for string variables. The only exception is for a date/time column being fetched into a numeric variable. In this case, SQLHighLevelOp converts the ODBC date/time value into an Igor date/time value represented as seconds since January 1, 1904. 0ODBC can convert any type of column into text. For example, if you fetch a float column into an Igor string variable, the string variable will contain a textual represenation of the value of the float column. 0ODBC can convert some types of columns into double-precision floating point for storage in Igor numeric variables. Any numeric column can be converted properly except that for 64-bit integer columns some loss of precision will occur. For non-numeric columns, such as text and binary, the value stored in the Igor numeric variable is undefined. Thus non-numeric columns should be fetched into string variables, not numeric variables. 0If a value that you are fetching into a numeric variable is NULL, SQLHighLevelOp sets the numeric variable to NaN. There is no way for you to distinguish a non-NULL numeric value that is NaN from a NULL value using /VARS. 0If a value that you are fetching into a string variable is NULL, SQLHighLevelOp sets the string variable to empty (""). There is no way for you to distinguish a non-NULL string value that is empty from a NULL string value using /VARS. 0(To determine if database values are NULL you must fetch the data into waves and include the /LIND flag to create length/indicator waves.) 0If the number of variables that you pass to /VARS is less than the number of columns fetched, data for extra columns is not returned by SQLHighLevelOp. 0If the number of variables variables that you pass to /VARS is greater than the number of columns fetched, the extra variables are left unchanged. zH0See also High-Level Fetching One Row Into Variables Example and High-Level Fetching Multiple Rows Into Variables Example.  ;@ xText Encodings and SQL XOP 0A text encoding defines the numeric codes used to represent non-ASCII characters, such as accented characters and math symbols. This section explains how text encoding issues affect SQL XOP. It is critical only if you store non-ASCII characters in your database. $0If you are running Igor7 or later, you can find background information on text encodings under Text Encodings. This section assumes that you understand the basic concepts of text encodings. _ m0Igor6 uses "system text encoding". This is typically MacRoman on Macintosh, Windows-1252 on Windows, or Shift-JIS for Japanese users on either system. 0Igor7 uses UTF-8, a Unicode byte-oriented encoding form. The rest of this section, as well as the rest of this help file, assume that you are running Igor7 or later and thus using UTF-8. e0By default in Igor, text data stored in waves or string variables is assumed to be encoded as UTF-8. L0In database work, the term "character set" used instead of "text encoding". 0The character set used by a database is determined when the database is created. It is possible to use a different character set for a specific table or field, but this is rarely done. 0Nowadays UTF-8 is most-commonly used for databases but in olden times Latin1, a subset of the Windows western text encoding, was often used. n0If you are using SQL XOP to communicate with a database that does not use UTF-8, and if you want to be able to store and retrieve non-ASCII characters, you must ensure that data transmitted from Igor to the database is converted from UTF-8 to the database's character set. Also, you must ensure that data transmitted from the database to Igor is converted to UTF-8. m0With a MySQL server, you can achieve this by including the following in your connection string: CHARSET=UTF8 }0If you are using a DSN to provide connection information, you can include a CHARSET keyword with the value UTF8 in the DSN. This setting causes the MySQL driver to convert text from the database character set to UTF-8 or vice-versa, as needed. On Windows, in the MySQL Connector/ODBC Data Source Configuration dialog, you need to click the Details button to set the character set. F0Other DBMS systems most-likely provide similar character set support. I0UTF-8 can represent almost any character in any language. This is not true of other text encodings. Consequently, if your database is not using UTF-8, it is possible for you to send a character to your database that it can not represent. If you do this, the character may be converted to a question-mark or you may get an error. 0 $ SQL XOP Operations s@ The following high-level operations are implemented by SQL XOP: SQLHighLevelOp  , #HLSQLHighLevelOp [ flags ] statement   SQLHighLevelOp is a high-level, one-stop operation for executing a statement on a database and storing any results in Igor waves or variables. It is intended as an easy-to-use alternative to learning the details of ODBC and should be sufficient for most applications.  SQLHighLevelOp can connect to a database, execute the statement, fetch the results, if any, and disconnect from the database, all in one call. Alternately, it can use an existing connection, in which case it just executes the statement and fetches the results, if any. H If /CONN is present, SQLHighLevelOp uses an existing connection reference number that you created using SQLConnect or SQLDriverConnect. In this case, SQLHighLevelOp uses the existing connection and does not create or close a connection. h rv l If /CONN is not present or if connectionRefNum is -1, SQLHighLevelOp opens a connection by passing the connection string specified by /CSTR={connectionStr, driverCompletion} to SQLDriverConnect and closes the connection after the statement is complete. .- In either case, SQLHighLevelOp fetches results if any are generated by the statement. It creates waves to hold the results and stores the result data in the waves unless you use the /VARS flag in which case it stores result data in variables. If the /E flag is used, it displays the waves in a table. Y Either /CONN or /CSTR is required. If both are omitted, SQLHighLevelOp returns an error. L$ In addition to this documentation, see also SQL XOP High-Level Programming. , J Parameters $ statement is the SQL statement sent by SQLHighLevelOp to the database via the SQLExecDirect ODBC function. This may be any valid SQL statement, such as a SELECT, UPDATE, INSERT or DELETE statement.  $ If statement uses parameters, such as in an UPDATE or INSERT command containing parameter markers ("?"), you must supply either parameter waves or parameter variables.  $ If you supply parameter waves using the /PWAV flag or the /PLST flag, SQLHighLevelOp executes the statement once for each row in the parameter waves. See High-Level Updating Data From Waves Example for an example.  If you supply parameter variables using the /PVAR flag, SQLHighLevelOp uses parameter variables instead of parameter waves and executes the statement one time. The /PVAR flag requires Igor Pro 6.10 or later. Flags (/CONN=connectionRefNum ( connectionRefNum is a connection reference number that you obtained by calling SQLAllocHandle and which you have set up for use by calling SQLConnect or SQLDriverConnect. It identifies the database to be used for the statement. P ^  $( If /CONN is specified and connectionRefNum is non-negative, SQLHighLevelOp uses the specified connection and does not create or close a connection. +G$( If connectionRefNum is -1, it acts as if the /CONN flag were omitted. (H(/CSTR={connectionStr, driverCompletion} &ZH( connectionStr is a connection string as you would specify when calling SQLDriverConnect. H XH( driverCompletion is an SQLDriverConnect mode, namely, SQL_DRIVER_NOPROMPT, SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT, or SQL_DRIVER_COMPLETE_REQUIRED.  ($( This parameter determines what SQLDriverConnect does if the information provided by inConnectionStr is not sufficient to make the connection. If in doubt, use SQL_DRIVER_PROMPT. Udl( If /CSTR is present and /CONN is not present or connectionRefNum as specified with /CONN is -1, SQLHighLevelOp passes connectionStr and driverCompletion, to SQLDriverConnect to open a connection. 1Awol(/E=editCmd editCmd = 0: As if /E had not been specified (the created waves, if any, aren't put in any table).  E$( editCmd = 1: Make a new table containing the waves created, if any. n$( editCmd = 2: Append the created waves, if any, to the top table. If no table exists, a new table is created. $( editCmd = 3: Make a new table containing the waves created, if any, if the waves did not exist before SQLHighLevelOp was executed. $( editCmd = 4: Append the created waves, if any, to the top table if the waves did not exist before SQLHighLevelOp was executed. If no table exists, a new table is created. ( The test for "if the waves did not exist before SQLHighLevelOp was executed" is really based solely on the first wave loaded. If it did exist, it is assumed that the remaining waves also did exist. If it did not exist, it is assumed that the remaining waves also did not exist. Z(/IWAV={wave, wave, . . .}  ~( If the statement uses parameter markers, the waves listed using the /IWAV flag hold the length/indicator values for the corresponding parameter markers. Length/indicator values are used to specify the length of character or binary data or to specify null or default as a parameter value. SQLHighLevelOp calls the ODBC SQLBindParameter function to bind the indicator waves during the execution of the statement. !/96( You need to use /IWAV only if you want to specify that null (SQL_NULL_DATA) or default (SQL_DEFAULT_PARAM) is to be used as the parameter for a particular row instead of the value in the corresponding row of the parameter wave. If /IWAV is omitted, SQLHighLevelOp automatically passes the correct length values. 3( If /IWAV is used, the indicator waves must be 32-bit signed integer (Make/I) and each point of each wave must contain either a non-negative length, SQL_NULL_DATA or SQL_DEFAULT_PARAM. The non-negative length is used only for character and binary data. It is ignored for numeric data and you can specify 0. 6( You can pass $"" for any of the waves in the list to indicate that there is no indicator wave for the corresponding parameter. In this case, SQLHighLevelOp will act as if /IWAV were omitted for that parameter. ( Note that this flag has nothing to do with the /LIND flags. /LIND controls whether indicator waves are created when fetching results whereas /IWAV and /ILST specify whether you are providing indicator waves when executing a statement that contains parameter markers. $(/ILST=indicatorWaveList ( /ILST serves the same function as /IWAV except that the waves are specified in a string containing a semicolon-separated list of wave names with a semicolon after each name. ( When there are a large number of indicator waves, /ILST will be more convenient than /IWAV. Each item in the list is the simple name of a wave in the current data folder, not a path to a wave. Liberal names must not be quoted. ( If there is no indicator wave for a particular parameter, pass zero characters for the corresponding list item. For example, this specifies an indicator wave for parameters 1 and 3 but not for parameter 2: "ind1;;ind3;". ( Note that this flag has nothing to do with the /LIND flags. /LIND controls whether indicator waves are created when fetching results whereas /IWAV and /ILST specify whether you are providing indicator waves when executing a statement that contains parameter markers. $(/LIND=loadIndicators H( loadIndicators = 0: Do not load indicator waves when fetching results. This is the default setting in effect if /LIND is omitted. A$( loadIndicators = 1: Load indicator waves when fetching results. ]( You would use /LIND=1 if you want to check for NULL values in one or more database columns. ( When a result set is generated after a SELECT or other statement that produces results, ODBC produces a result array and a length/indicator array for each column in the result set. The length/indicator array contains the length of each element in the result array or a special negative value such as SQL_NULL_DATA (-1) indicating that the corresponding result value is NULL (missing). ( When /LIND=1 is specified, in addition to creating a result wave for each column in the result set, SQLHighLevelOp produces a corresponding indicator wave for each column. The name of the indicator wave will be the same as the name of the result wave with the suffix "Ind" except that this rule will be violated if the resulting name would be too long or would conflict with the name of another wave. ( Note that this flag has nothing to do with the /IWAV and /ILST flags. /LIND controls whether indicator waves are created when fetching results whereas /IWAV and /ILST specify whether you are providing indicator waves when executing a statement that contains parameter markers. (/MFL=maxFieldLength $( maxFieldLength tells SQLHighLevelOp the maximum size in bytes of any field fetched by a SELECT statement. It is used to improve memory allocation in certain situations when loading binary data. B$( See Improving Memory Management With SQLHighLevelOp for details.  4$(/NAME=nameList 5( If /NAME is omitted, SQLHighLevelOp automatically generates output wave names based on the database result set columns. If /NAME is present, it specifies the names that SQLHighLevelOp will use when creating output waves. nameList is a semicolon-separated list of wave names with a semicolon after each name. $3@$( If nameList contains empty names, the corresponding output wave's name is determined by the corresponding column in the result set. For example /NAME="wave0;;wave2;" will create output waves named wave0 and wave2 but the name of the middle output wave will be determined by the corresponding column in the result set.  ?$( See Fetching Data Into Waves With SQLHighLevelOp for details.  1$(/O=[overwrite] If /O or /O=1 is used, SQLHighLevelOp overwrites existing waves when creating waves to contain output from the statement.  ( If /O is omitted or /O=0 is used, SQLHighLevelOp generates unique wave names when creating waves to contain output from the statement. Cl(/OPTS=options options is a bitwise parameter, defined as follows:  $` Bit 0: If set, fetched date, time and date/time data is loaded into text waves. If cleared (default), it is loaded into Igor double-precision date/time waves. See High-Level Loading of Date/Time Data for additional information.  /$` Bit 1: If cleared (default), a NaN value in a parameter wave specified via /PWAV or in a parameter variable specified by /PVAR causes the parameter to be passed to ODBC as a NULL value. If set, NaN values are passed as NaNs. See High-Level Treatment of NaN Parameter Values for additional information.  6` All other bits are reserved and must be set to zero. =$` See Setting Bit Parameters for details about bit settings.  Z(/PVAR={var, var, . . .}  $( The /PVAR flag requires Igor Pro 6.10 or later. With earlier versions of Igor Pro, SQLHighLevelOp with /PVAR will return an error. ~( If the statement uses parameter markers, the variables listed using the /PVAR flag hold the parameter values for the corresponding parameter markers. SQLHighLevelOp calls the ODBC SQLBindParameter function to bind the parameter variables during the execution of the statement.  $( A parameter variable may be a local variable or global variable referenced by an NVAR or SVAR reference. You can also use function parameters, which behave like local variables whose values are set by the calling function. g( It is an error to pass a nonexistent variable (e.g., $"" or an uninitialized NVAR or SVAR reference). b( You can pass either a numeric or string variable for any given parameter so long as ODBC is capable of doing the conversion to the parameter's type. ODBC can do the conversions that make sense, such as converting from a double (an Igor numeric variable) to an SQL integer. If you pass a numeric variable for a parameter of type binary, on the other hand, ODBC may either do nothing, return an error or misbehave completely, depending on the ODBC implementation. To be safe, use a numeric variable when dealing with a numeric parameter and a string variable for other types such as char, date/time and binary. .( There is one exception to the preceding caveat. If you pass a numeric variable when the corresponding SQL parameter is of type date, time or date/time, SQLHighLevelOp assumes that the numeric variable contains a value in Igor date/time format (seconds since January 1, 1904). It transparently converts the Igor date/time value to a text string containing a representation of the date/time which it passes to ODBC. However, this feature does not work with MySQL as of MyODBC version 3.51 because the MyODBC driver does not properly identify the type of the parameter so SQLHighLevelOp has no way to know that it is dealing with a date/time value. Consequently, if you want your code to work with MySQL, you must do the date/time to text conversion yourself and use a string variable instead of a numeric variable. F6( See High-Level Inserting Data From Variables Example for an example.  5Z(/PWAV={wave, wave, . . .}  $( SQLHighLevelOp executes the statement once for each row in the first parameter wave. Typically all parameter waves will have the same number of rows. ( For each row in the parameter waves, each parameter marker in the statement is bound to the corresponding parameter wave. Thus each row of the parameter waves supplies a set of parameter values each time the statement is executed. [( It is an error to pass a nonexistent wave (e.g., $"" or an uninitialized WAVE reference). ( By default, the number of rows in the first parameter wave determines the number of times the INSERT statement is executed. You can override this using the /ROWS flag. ( Normally all parameter waves should have the same number of rows. In the event that some parameter waves have fewer rows than the first parameter wave, SQLHighLevelOp sets the corresponding values in the database to NULL. ( /PWAV is mainly of use when inserting or updating multiple rows of an SQL table. It is not much use when fetching data because the result set is overwritten each time the statement is executed so you receive only the result set from the last iteration. A6( See High-Level Updating Data From Waves Example for an example.  0$(/PLST=parameterWaveList ( /PLST serves the same function as /PWAV except that the waves are specified in a string containing a semicolon-separated list of wave names with a semicolon after each name. ( When there are a large number of parameter waves, /PLST will be more convenient than /PWAV. Each item in the list is the simple name of a wave in the current data folder, not a path to a wave. Liberal names must not be quoted. $(/Q=[quiet] If /Q is omitted or /Q=0 is used, SQLHighLevelOp prints diagnostic information in Igor's history area in the event of an error.  Y( If /Q is present or /Q=1 is used, SQLHighLevelOp does not print diagnostic information. F( A general diagnostic is returned via S_Diagnostics regardless of /Q. a( For most purposes, you should omit /Q so that you will get full diagnostics if an error occurs. H(/ROWS={startRow, endRow } $( Determines which rows of the parameter waves specified by /PWAV or /PLST are used. By default, if you specify parameter waves with n rows, statement is executed n times for rows 0 to n-1. $( Using /ROWS, you can control which rows are used. For example, if you specify /ROWS={1,2} then statement will be executed two times, once using the values from row 1 of the parameter waves and once using the values from row 2 of the parameter waves. `iH( Passing -1 for startRow causes the startRow to be the first row of the parameter waves (row 0). Passing -1 for endRow causes the endRow to be the last row of the parameter waves (row n-1). pvl( Other than using -1 as described, it is an error to specify rows that do not exist in the parameter waves. (/STMT=statementRefNum l( statementRefNum is a statement reference number that you obtained by calling SQLAllocHandle. This is intended for use with the /VARS flag to fetch multiple rows of a result set into variables as illustrated under High-Level Fetching Multiple Rows Into Variables Example. N \ $( If /STMT is specified and statementRefNum is non-negative, SQLHighLevelOp uses the specified statment and does not create or free a statement. *G$( If statementRefNum is -1, it acts as if the /STMT flag were omitted. Z(/VARS={var, var, . . .}  $( SQLHighLevelOp normally fetches data into waves. This is convenient when you are fetching multi-row data. For fetching a single row of data, you may prefer to use local or global variables. To do this you must use the /VARS flag. N6( See Fetching Data Into Variables With SQLHighLevelOp for further discussion.  536(/Z=mode mode specifies how to handle fatal errors.  f( A fatal error is a programming error such as passing a parameter that is out-of-bounds or passing a null (uninitialized) string or a runtime error such as out-of-memory. This is in contrast to an SQL error, which is not fatal, such as trying to access a table for which you do not have sufficient privileges or trying to access a field that does not exist. &$( mode can take the following values: $( mode = 0: Any fatal error is returned to Igor, causing procedure execution to halt. This is the default value used if /Z is omitted. $( mode = 1: Fatal errors are not returned to Igor so procedure execution continues. Check the value of V_flag to see if a fatal error occurred. H$( For a discussion of error handling, see SQLHighLevelOp Error Handling. ) FDetails - SQLHighLevelOp sets the following variables: i$(V_flag Set to 0 if no fatal error occurred or to a non-zero value if a fatal error occurred. If V_flag is non-zero then a fatal error that would normally stop procedure execution occurred. However, procedure execution is not stopped if you use /Z=1 in which case your code can perform error checking and handling. See SQLHighLevelOp Error Handling for details. > [(V_numWaves Set to the number of output waves created. This includes result waves and also indicator waves if /LIND=1 is specified. (S_waveNames Semicolon-separated list of the names of waves created. This includes result waves and also indicator waves if /LIND=1 is specified in which case the name of the indicator wave follows the name of the corresponding result wave in the list. s(V_numColumns The number of columns of data in the result set or 0 if no result set was generated by the statement. X(V_numVars The number of output variables set when using /VARS. Zero if not using /VARS. (V_SQLRowCount @( Contains the number of database rows affected by the statement if it was an INSERT, UPDATE or DELETE statement. This value is not valid for any other type of statement. Note that a database row is considered affected by an UPDATE statement only if the the UDPATE statement causes a value in the database row to change. (V_SQLResult Contains the last return code returned by ODBC to SQL XOP before SQLHighLevelOp returned to Igor. If V_SQLResult is SQL_SUCCESS then the operation succeeded fully. Otherwise some warning (SQL_SUCCESS_WITH_INFO) or error (e.g., SQL_ERROR) was returned by ODBC. If V_flag is zero then this is a non-fatal error. If V_flag is non-zero then this is a fatal error that would normally stop procedure execution but did not because you used the /Z=1 flag. H(S_Diagnostics If an error occurred, this contains a clue as to what went wrong, if applicable. If no error occurred or no diagnostics are available, it is set to "". S_Diagnostics contains just a general diagnostic from the SQL XOP, not the more details diagnostics from the ODBC driver printed in the history if /Q is omitted.  Depending on the parameters you use with it, the /CSTR flag may cause ODBC to display a dialog asking the user to provide information needed to complete the connection. It is possible for the user to cancel out of that dialog. You can detect this by testing V_flag. If it is 10039 then the user cancelled out of a connection dialog. However this may not work with some drivers that do not follow the rules. According to Microsoft's documentation, the driver is supposed to return SQL_NO_DATA if the user cancels from a dialog displayed by the driver. However, the MyODBC 3.51.19 driver returns SQL_ERROR, not SQL_NO_DATA in this event and this prevents SQLHighLevelOp from detecting that the user cancelled from the dialog. Examples  SQL XOP High-Level Programming  , High-Level Fetching Data Into Waves Example  3 High-Level Fetching One Row Into Variables Example  9 High-Level Fetching Multiple Rows Into Variables Example  - High-Level Inserting Data From Waves Example  1 High-Level Inserting Data From Variables Example  1 High-Level Inserting Data From Variables Example  ; High-Level Multiple-Commands-Per-Connection Method Example  , High-Level Updating Data From Waves Example  See Also  SQLDriverConnect  ( $ SQL and ODBC References ,Wikipedia entry for SQL $0  !,A good, concise tutorial on SQL: %0  ,Wikipedia entry for ODBC ;0  ,Microsoft ODBC Reference :0  ,IBM ODBC Guide and Reference a  ,MySQL Reference Manual 0  ,MySQL ODBC Reference Manual <0  30"Inside ODBC", Microsoft Press, ISBN 1-55615-815-7 c,This book was written by Kyle Geiger, the chief architect of ODBC. It contains a lot of useful information for the serious ODBC programmer, as well as some impenetrable sections. Chapters 2 and 3 are rather abstract and are not essential for the ODBC programmer. This book is a supplement to the Microsoft documentation on ODBC, not a replacement for it. , $ SQL XOP Revision Notes s(1.00B01 Initial release. K(1.00B02 Changed the default behavior of /PWAV and /PVAR to treat a NaN value as a NULL value. This was done because neither MySQL or MS SQL Server handle NaNs well. MySQL treats NaN as zero. MS SQL Server returns an error: "not a valid instance of data type". You can override this, to treat a NaN as a NaN, by specifying /OPTS=2. ( Fixed a crash that occurred if the server returned SQL_SUCCESS_ WITH_INFO instead of SQL_SUCCESS when fetching data into waves. Y( Fixed SQLHighLevelOp to treat SQL_SUCCESS_WITH_INFO as a success rather than a failure. ( Added a workaround for Actual Technologies driver which does not support SQL_ATTR_ROWS_FETCHED_PTR. However Actual Technologies says they will add support for it in the near future. (1.00B03 Fixed problem where partial name match in names of fetched columns caused an unneeded and incorrect output wave name change. $(1.00B04 The value "", when passed for any parameter to SQLTables, causes SQL XOP to pass NULL to ODBC for the corresponding parameter. = Fq( Replaced the SQLGetConnectAttr low-level function with SQLGetConnectAttrStr and SQLGetConnectAttrNum functions. i(1.00B05 Added workaround for MS Access and other DBMSes not supporting ODBC's SQLDescribeParam function. (1.00B06 Added workaround for bug in SQLite3ODBC driver which caused integer and floating point data returned from SQLHighLevelOp to be scrambled. (1.00B07 Added workaround for report of old Oracle client not supporting attributes that allow SQL XOP to determine the maximum number of bytes returned by a fetch. R(1.00 Low-level routines SQLGetDataNum and SQLGetDataStr now handle NULL properly. f(1.10 This version requires Igor Pro 6.20 or later. It is the first that supports IGOR64 on Macintosh. ( .$ Connecting to an Oracle Database on Windows 0This section describes how we connected to an Oracle database on a Windows system that previously had no Oracle software installed. Also, we were starting with no knowledge of Oracle. The process was rather painful. To spare you some of the pain, we are documenting what we did here. Keep in mind that we are still complete Oracle novices so you may need to enlist the help of a local expert. $0NOTE: If you have the full Oracle client software on your system, this does not apply to you. Consult your database administrator. $0If you are not already familiar with the basics of ODBC and especially with the idea of a DSN (data source name), go through the SQL XOP Tutorial which will explain these concepts.  0We installed Oracle's "Instant Client Basic Lite" package and its "Instant Client ODBC" package. We then had to do some configuration and finally we created an ODBC DSN. N0As of this writing, the current version of Oracle Instant Client is 11.1.0.7. 0We installed the 32-bit package on Windows XP. This works on 32-bit and 64-bit systems. However, if you have a 64-bit processor, you may prefer to install the 64-bit package. 0To carry out this procedure, you need the following pieces of information, which you can obtain from the database administrator for the database you are trying to access: 90 The TCP/IP address or network name of the Oracle server B0 The "system ID" (SID) for the database of interest on the server -0 Your database server user name and password 0Here are the steps we followed. d\1. Download the Oracle Windows "Instant Client Basic Lite" and "Instant Client ODBC" packages from: X  1\2. Create a folder at "C:\Program Files\Oracle". \3. Unzip the "Instant Client Basic Lite" archive into "C:\Program Files\Oracle". This creates "C:\Program Files\Oracle\instantclient_11_1". 3\4. Rename "instantclient_11_1" as "instantclient". y\5. Unzip the "Instant Client ODBC" archive. This creates another folder at "C:\Program Files\Oracle\instantclient_11_1". Y\6. Move the contents of the new instantclient_11_1 folder into the instantclient folder. 7\7. Delete the now empty new instantclient_11_1 folder. \ The next step is a workaround for a bug in the Oracle ODBC driver installer. This workaround is necessary to get the Oracle ODBC driver installer to work properly. v\8. Open the instantclient folder, right-click and choose New->Text Document. Rename the document as "oraociei11.dll". x\9. Open a DOS command window by clicking the Windows Start menu and choosing All Programs->Accessories->Command Prompt. 3$10. In the command window, execute these commands: -8 cd "C:\Program Files\Oracle\instantclient" 8 odbc_install R\ You should get a message saying that the ODBC driver was successfully installed. "\11. Close the DOS command window. \ The next four steps create a "tnsnames.ora" file. This is a file that Oracle uses to determine how to connect to a database. "TNS" stands for "Transport Network Substrate" - Oracle's networking API. \12. Open the "C:\Program Files\Oracle" folder. Right-click and choose New->Text Document. Change the new file's name to tnsnames.ora. \13. Double-click the tnsnames.ora file. Windows will ask you how you want to open the file. Specify that you want to open it using Notepad. \14. In Notepad, you now need to create a "service name" entry that tells Oracle how to connect to the database. You may need to contact the database administrator for the database you are trying to access to get the required information, but here is an example. r\ In this example, the items red are values that you will or may need to replace to connect to your Oracle server: $8 MyOracle =  8 (DESCRIPTION = DH8 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.123)(PORT = 1521)) '4=A#$8 (CONNECT_DATA = (SID = MySID))  8 ) g$\ MyOracle is the "service name" - a short name that references this entry in tnsnames.ora. Later, when you create an ODBC DSN, you will specify just the service name and the Oracle ODBC driver will look for the corresponding entry in tnsnames.ora to get the information it needs to connect to the database. You can use any name you want in place of MyOracle.  $\ 192.168.1.123 is the TCP/IP address of the computer hosting the database. You will need to replace the IP address with either the IP address or the name (e.g. oracle.somewhere.com) of the server hosting the Oracle database. $\ 1521 is the TCP/IP port number for communicating with the Oracle server. In most cases, 1521 will be the correct port number. $\ MySID is the Oracle "system ID". A system ID is a name which identifies a particular database on an Oracle server. If you don't know your SID, you will need to get it from the database administrator for the database you are trying to access. \ There are many other ways to create a service name in tnsnames.ora. If the approach above does not work for you, consult the database administrator. ,\15. In Notepad, save the tnsnames.ora file. \ Now we must create a system environment variable, TNS_ADMIN, which tells the Oracle software where the tnsnames.ora file is located. \16. Open the System control panel by clicking the Windows Start button, choosing Control Panels, and then double-clicking the System control panel. C\ Click the Advanced tab and then the Environment Variables button. 5\ You should now be in a dialog that looks like this: \  \ In the screenshot above, the TNS_ADMIN environment variable is already created. The next step tells you how to create it on your system. e\17. Click the New button to summon the New System Variable dialog and fill the dialog out like this: \  \ Now click OK. \ The Oracle documentation does not say exactly when the Oracle software reads the TNS_ADMIN environment variable. Our experience was that we had to restart the computer to get Oracle to notice changes to TNS_ADMIN. Therefore, to avoid possible confusion . . . \ Restart your computer now. )\ Now we are ready to create an ODBC DSN. l\18. Run the Windows Data Sources program (Control Panels folder->Administrator Tools folder->Data Sources). \19. Click the User DSN tab to create a DSN available to the current user only or click the System DSN tab to create a DSN available to any user on your machine: \  e\20. Click the Add button. From the resulting list of ODBC drivers, choose "Oracle in instantclient". |\ If you don't see "Oracle in instantclient" or something like that, then the Oracle ODBC driver was not properly installed. \ Click Finish. C\ You should now see the "Oracle ODBC Driver Configuration" dialog. \   \ Note the TNS Service Name box and the triangle at the right end of it. Click the triangle to display a popup menu containing service names that the Oracle ODBC driver knows about. The service name (MyOracle in the example) that you created in the tnsnames.ora file, should appear in the popup menu. If it does not, then either the TNS_ADMIN environment variable is not right or the tnsnames.ora file is not right or you need to restart Windows to get the Oracle ODBC driver to recognize the TNS_ADMIN environment variable. g\21. Enter a data source name (e.g., MyOracle or any other name you want to represent this connection). @\ Choose your service name from the TNS Service Name popup menu. T\ Enter your user ID which you should have received from the database administrator. V\ You can leave all of the settings in the tabs at the bottom on their default values. \ Click Test Connection. 2\ After a short delay, you should see this dialog: \  ?\ Enter your service name, user name and password and click OK. \ You should then see a dialog that says "Success". If you get an error, you will need to check the tnsnames.ora file and your user name and password for accuracy and make sure you have the required permission to access the database. _\ If you did get "Success", you are now ready to connect to your Oracle database using SQL XOP. \ And it was just that easy! , W0Here are some web sites where we found useful information while working on this issue: .0The Oracle FAQ web site, run by Oracle users: < -0The Oracle FAQ wiki, especially these pages: +< (< "0The Instant Client release notes: b< 10The discussion of the Oracle ODBC installer bug: A< +0The Oracle documentation on service names: P< 0The Oracle ODBC FAQ: R< 0The Oracle 8 ODBC help: R< 0$ Connecting to an Oracle Database on Macintosh 0This section describes how we connected to an Oracle database on a Macintosh system that previously had no Oracle software installed. Also, we were starting with no knowledge of Oracle. $0If you are not already familiar with the basics of ODBC and especially with the idea of a DSN (data source name), go through the SQL XOP Tutorial which will explain these concepts.  0As of this writing, Oracle does not supply an ODBC driver for Macintosh. We used the Oracle ODBC driver from Actual Technologies. You can buy and download it from their web site. For most applications, you will need only a single license which supports 5 simultaneous connections. 0After downloading and installing and activating the Actual Technologies Oracle driver, you create a DSN as explained in the following steps. 0To carry out this procedure, you need the following pieces of information, which you can obtain from the database administrator for the database you are trying to access: 90 The TCP/IP address or network name of the Oracle server R0 The "system ID" (SID) or service name for the database of interest on the server -0 Your database server user name and password 0Here is the procedure: P\1. Run the ODBC Administrator (/Applications/Utilities/ODBC Administrator.app). \2. Click the User DSN tab to create a DSN available to the current user only or click the System DSN tab to create a DSN available to any user on your machine: \3. Click the Add button. \ Select "Actual Oracle" from the list of ODBC drivers. You should now be in the Actual Technologies Oracle driver New Data Source dialog. \ Click the Continue button. \4. Enter a data source name, a server address or name, and a port. In this example, the data source name is MyOracle, the server address is 192.168.1.123 and the port is 1521, which is the customary port for this purpose. \  \ Click Continue. m\5. Enter your database's system ID (SID) or service name which you obtained from the database administrator. >\ Check the "Only show user's schema in table lists" checkbox. \   \ Click Continue. @\6. Click the Test button. This Oracle Login dialog will appear: \  N\ Enter your user name (referred to as "Login ID" in the dialog) and password. \ Click OK. \ You should get a message indicating successful connection. If you get an error, you will need to check the server address and your user name and password for accuracy and make sure you have the required permission to access the database. _\ If you did get "Success", you are now ready to connect to your Oracle database using SQL XOP. ZJFbBZb ,  & d^>rPXlbX"@"LH 2!!" #T###$$$$J%6&N&V&&&''()V****j++,,-.//01l11112R2~222224j44445N6777889D9r999999R:D;;;;;<<n<<=>?@ A CCD2DTDDDE,ELEEEF"FHI$I:I|IIJJ@KKKKLLLMNFOPQQJSSSVvVV\W|WWXzXYZ [<[r\\\]Z]b]]]]^^^^^___``$aaaaarbbc&cHcccccceeg&ijlmTmnoppPqqqq@rfrzrrrrrr,sLssssst(t^ttt u&u4u>uhuuu>vxvvvvvv4wwwwwxxVxvxxxxxxxNy\yyyNzVzzzzz({h{{{{||0|B|J|X|v|}0}d}r}}}}}}*~8~@~^~~~~~~$,Pxƀ:`DT܄X*<\~ވĉ,HRZȌ4&>FnDL>Đΐ֐Jbđڒ&8jڔ0Җdȗ(XĘ  ҙ&>rZ,ڜ t ^&4ҟ*<JRltdvޤ0X,dnVn h ʪ *2LTdnĭL(`.jrֻ &.:rԼ*8B8Xƾ@ƿ6R`~L0>FbV8j ~.nf 0Xfn"J  l8f$R`xT.h2nv4<lh0l~l@l4&Rb~ N|Fj8z*`T(bB2N | b  T     6x$D<t<^lT r2:  2"~"##$\$$$$&$'`()+d+++,-.///>11p223r4P56j77r8 99;;=&?r@ABBCDEFFG HH JKLLMHNN`PQ4RRvS,T" >V *B  fTopic H SubtopicH OperationBody1a OperationSectionH Code_Indented1`/CWk 3G[o  TopicBody1$H  TopicBody1a$H OperationBody1a+ Code1$6HZl~ Dh Code1a8$6HZl~ Dh Code_Indented1a/CWk 3G[o OperationBody1  OperationFlags1al Subtopic+` OperationKeywords1l OperationKeywords1al Steps(H  TopicBody1+ $H TopicBody1a+ @$H Steps+$H  Steps+(H Steps+(H ListBulleted$  g4IR1)1+ ?eSE2#6nZhh /#| rc#|qN7dc?4fPNG  IHDRKn ViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx} $eunU߾ , EHL4q@D1FQ9#@4J\bυ@BEl203 0sKss_uᅱIOn#`q:& =>UGz{d$h^U*^s^ JPJ?[04B `f!fXXf+X3X7BW ^-f%؏DEK&*Eu[ ޢ0Pu5nkrP~oH<=;vXgQPxݳ;,;z^>{AhȢV]|@}1Z1yfCjxTC(崡(@?"96j֧f*JkΗ>g榺s"#'l;K˖Sjoƛ hկT=:Z L_It4[U5lalÛ fǧv:{_ݿC#]w?k|; 5A}]T};w.?jzx\hQ=XX-]~uk6T9 || >{d*=·qR}cj;ſQ=ꐹt槾UOof3U#t9)Ǜ{v*f̾`f&LY:@J5mRAQ66 ^sY85Fʘ # 3Sf»܎c?ܬ W@:= Tƪ}Ef#WU^]%cO|Ά6U[#DlىYjo3ymDx`ygo/2+wes U6E,VMAٰ’"R;)s|Zg/\r9Ow/‚/!ZpCS߱GsT [uQƧO&-Kײ)eYLe~?EW>iz>k1\կbe3W:|" u@y5Wpի**?Zj(~د4gMTV>o933֩XPffQa{>a,f/yKw|lҘ 4.6EaKͿ!srr2wnWY]}β=߷뒗.y|ؕgF-s1|duMaW|'jף;sLmtz6^gS̑^r'ue`ß>pwBx:頽㻣Q+ͧѢ2<,/ 2m^:bA 0m,V-Wby{Ǜ`>N1 Kb j3MXz|&Ta'u6WT6*ލ /Y4'7~H5{޷/Y_Kzso጑jxx we/~ ZGOp6ԭ?xlb?aeo$.uزŕE?wD}E_8vP|Ʊo|M`}i/_cn?9@'?o{v?>S?t@wæp7}SBӫ+PO!5}ٗ/"ͩ;^,V24.`oi;_@?|c}Xwd̺4$9r9ۡ*,n9fniy +_.?j>67Uk ?2 >~d`|S!>tnٶ/ҏޅ޷omƪBn&_?yF, T Ծ얽s`#l[kue!`Ҕ`+Bx+YSlQW>o=p}֬x_͛05^D`fV0Y@,56w>E3com1/nJQp2[߻ #m}0itm &";bfU z⼤؊ߞy.Cu>ԧX]g@m15!>tW_g3StyѦ=dё3Fhm1s^?N=n̬<-/L|.s2#>Xՙg~pIebOENZc^kk_'1>C6a~'7aֈt_ Jyp}ۯsן-]2:'3\͕X?̛.f]G^f_Zp_%W@^Rsmۣ{%|%/,;V<am2 me];?HĿL^Oݳ,ZSVO6k޻; {}+>|&mX&\ կ[O|㖩ko;`_SkS\g}$zUC'a氃o]rAwmgOcnO Vkx, ; [ |U3vY/9Oygk+w4\%'کkN9ʿ_ J=`[!&}_/ڼsQS0hnf/c0X7Ԋs5̴@ff+>5pޛ?7{Ӂh^[Td,mna3k>5rmLV}N/\^A-FQQc2GLIGxNlb`RO1x( ne#3_84al>nvIs~w^?/ǟ6hC;g{屙k^0Z}[~k\uyYҼ><yIJ/a>,ɰܨ%g=g=ڳN̝}j?~6ϏS7q O?2{y#`}ÝSO?0]͛'CӞyl}~&UfosϹiω>ʞ-Bn}Y'V8 ޲泎 死d'ԊS S8\<vx ViQI'VL o.,k bY,oNc`껦>|·ÄW̫ ^s<{f:~ 3puTlUvl}wAAG񪩝xlo||̛4rͿpM%?\0FapC=n\On=n~ӛ?v1ak?tz|pɳGL]05g;Lz8ul 8{_iJ D7@wtזo z_86oym:vaMld3+wm9REHtnO{O~ncܞe'%됯}͌UY$0L>2t ͸aO|\ (Cy k 946ʪW9xd7Xzo޷޳hԿ _jjqӍ㻃w7{?,/jd%C p62c5_y! l}fvTcK65ى"a]`[sw *8VWjfUw|9Ciʫ׀㶅j>;!"(Aq[z@eɄcPPpq+,<Xu6|KnoO[~?܃0YF,,Z⏍C\ V ~:YL`kڮ}M{Wg1Oշ!X`ꌲ5`W;a3/4>pMx,,ͯ%S4W"yGsvy73:7bh%?zyWc8$1u͏5._؆b#YDW̆\6X҅UfAբmeb݂.ItT0\ɱ͝)=( |対·<^ﻚ;PɰQ[qϊGI\-G}}|La}A_+>[/|+iaj1|GE/!&lbУOW^ n-)*bjF0=kû7xxl(K~  h*C _7YZd >­9u+ Txfu_q0D/ʯF<;[jm d;8xPsˣxc7VKs \Y bacD0&I+@3Zd#P)e1?anX%6wbEQɓTapL-KY\ lėgnP<aje#mn;4 Pʂ@KY8tRanݨrI%9dS7kMOxSQbkXv .5(?/*"tʗV͏8 RE@PhF\E@PrA@l.0E@P"rE@-FE@F@l4.UE 'Yqym۷䃇f,w>z⽗_w^{QP:F m!*lm7O{&YvGKI*[<Xɉbq޳pAGf9OYvGKIClp`%'ō^bsfP-/ew9ǂg~(I|-DT3ْGV>rwz$-w|p,R2 0DEVV.I' CJ8 \74tA+@!a9[ͶP.sU"w1rd5NK E"C% FBe_e:RъoYҬK5tA)֖5-È$`qʐ"Iqc,Vz/:,ȇD* = " uC.$U: C,V3KJi]X{ oV$VZʳβZlS)Uz#n"EWgf;` mW9A"邜2 r|KdrR7t\@|ܡGRL#)&K@ y:K~[X a0--ql wf,9eɶca3m*0"i.!X2ZKIfNa 9 ,8 q lCP`&s"ZCaMhW[9Yn"&SBݔ*me'L~].'B>yo%7HNp!cp &(vЕl_4p ٔ% -nFJv,i˝r I$@2L[CYDpӲk! !E^f̹r:8>iiXc/mYdlbO2#HBH:RUGaV$lƥӸYCmi@/(Z^fK\w.'} fY8eZil9YI%XK[hJ+*n q=)~'kҔH(YLzOLӛ{xNH-[偳d̀ݗ IDAT 2ȱ|ዒ!" .c%e/Ax,]'kᦥN]9 vyB:b&!N $#,p ׎F\!:Pɒ]3YF`>q^q圥LK])L!i( HG-LܤZ`+9^$$,-r!iiVmiIׂˑ.-v91&5X.|5h$x,~r2b®@H~FHgYLX!vYiYqgu-^r״dSҤnq)L3z\Z L)Cˁd8pBu ;robG)qcy5nuq˗p&ojMkd೷3MCNe n9_ kRE`P'nZzڪvꚚdﷷ"iYL ] 7m !ַ}ʗWnn\PΗ'M9_hp[]8}7(mŠ@!o|=!E])mHiFS\tMD9"䆀ܠTC"hu1Q"(!E67(Ր"(.ZזrE@P {:]6E@-E@XphCP|"/jMPh]6E@-E@XphCP|h{:^sqsn*(@EE˓K)g!4^\+_P4tk_ *cv;dQ"Э"˩rclJ>[N .[c-k)4/Қ% 8֔PD 9 PV(u1HwVaEi"Ȧ :C]eP"00Yd W Y_$XT˰gI S ]R\飒ddҊ"0x\dąΫiԄ.+nRqQ(@sM֪h'n$C8 " '%4Y%OREs&+kh7Y8ĞТ.Gs-*){-.Ri,D)C6CMOQBP |N;dfUK6E`p[n]Jj˫79ߎ.("0 twa84GE@H@ _ nKPD@pf(=B@lV7"0T[VE~w/|u;("= ׹7fQl",@w/hJz.Vdq;n.E@/{y۷n,u#̭"O2M |}-S@#s^~Ub.4VKϕ\w9/(4%k22iֵ8w]p0Ayi?ߟ _1Lc>L?&H'w娆p+2ӮYTr/&L2VTa-yK\{Z |'Kea rj5e$TXؒM Eo XH@JҊ@zr WXAy4o9ϡ{sP7{O]S靪0#ݙlFdy) dsek$,%;Vh)O4z&+湤$NBQ*TvyOf,~UwJ5Yt"-k.d&۴]/2"Ҩe)5 Jڅ: *$F-PNVI ])U2"ծ R}Enٗ}&Մ̮]+c|}Le9͎<Rdy&UdŏkJVɋ:g-~B}=MAdIȜ 4vJ噬,d.jT\~N儮dˤB2lrI_> ]ɖ#UIOk̺a$+􃔎 x~ZW,deid"%惖ŋ$=2(+ +RɋYGvILȐHglN2#AQ֒OAY#u|KKdSH0eYMi֊f%+d+/*yŢ{'P솼Jإ'z.49²='IO|> W3N]8*MJ JBvZamD=t'QA><4kE`r1C&\0-v$ryArE@`7c( ѕ $4^24/޹J\,iK dr`|4.ѐP0SBAI-&H1R7MȓH&^AB K,-XaS1w$MY!%J>eL3AIYMiܠHH#fX|M7hّ" I$yVw qm#-A:n"OЅkcQxֱn5y%I4Oep@SvEaջ"A!/ SSYQ%Lˊ0HIrM29GI]@ǚa|i!jԍdK$L.\.%R 5ҍfw,:&:ˁ'>`\TF&(`j" r3"#R-u`FAdf\^b\ck D$INQ1B]\XU ; N.:!RE.c"2L>SljqT$@fAJ:ΎTfV LV'%`c9ffGN))J/lM!GXY|ǜ/# o)#i$]:"-DvA]a4@Av%̢](v:Rf iJI,sf${2Zթ6NHN<[v)qKF $ؕÚi|9$*Ɋ3kT%]$4d.fkw 5E2A᜙OAY좦MOK; dT!G9 &ђ#Ȃĩdn$2r`HLDZ2l&۔Lt|i4κ b,GHwq˾d\)eXT6%@XVSJnEǐdhdRq  iٕ p?]0QY)Q4t9쨫D_JG2vRtە [^,r{]_)"d)y) eX'O*sI5Ÿ7nr09nt~؀Y= E@"ZdVExK~ib&ҕqMat+3^ ;3%`Jt76e:s/ˣq .tAa[Xaw%(3<4OAtY8K.iMA.rD{&0A6 !MK &$=ldXE|KK檰BbH)$ďԲ>"#6MMɤ w1ҵh*a,Ք֨K H v_Dd"٥aKĤ,8/}IZP V/1o{烃2!ٖɁaMN6;,0̽]fd5wE@PY= E@"ZdVEE/2.r!`%ۙfML͢iޖ Y]aL6ܛѵ_Y]Do$?%>r2Qm-fۊ6N _n\f%y.|N$cro.4r"ˎ S`B#c0tv\,HkV 9,)չ Kҁ=hl$@4ؒi%RK=K)H=#*$ zIu{bvO  tp|tJ`ODG6KZ$RZf1 MWFv $pWgc;h Z]c` $ȠNad)IifȔDb D( $^!$1nR캾\@u:\I0mu{ф<8"[#>1Y>r$ed3n:sp8' !I %ߍJ4e04&fdu94XaH]rbĤU, h<M&-,{]EqPxJ˴K ^"'KXډSE="#W2$#yi6BJB` /pF2+r/KZ]Ͷ#-$0[]v\̱0°hOvm|u$uƇl\| 0?$T8H[D['R0!$V [!.峘BTz j'zT~v-Y⚬u!2%i5[:@ w H: 22 *-@dv fEB7WzՌ2p&x`1L;L=C G-$#$32C_ -H>)T!12=)hˈ+&q֨Nñl5)u2ns7BKbr/8dUAX%h6f"%Kl Y=G3JYh))Rc1%E=2C7e."2br3 uW@? -ǴĬ&wi8l%Թ 7# ')$myItZʸn5%iWeSbieITQMnw)D3%j[]܄/I&˽"{jPlP[[;Cfwx3ݒhqaE<=EvƲ}2jqE=WaYw—t"(É@Ùf(@w0:.j]P]@W"oaeZd:2"\!"c"[$[wbv#2~]m ("9Zd;N5E@hٖ"(#EsTSPhm ("9Zd;N5E@hٖ"(#"wtS5E@t&;4C*@h-u(C١jMTP@@lOE@Pk"PZd@]}* EvhZU""[SP-C3Ԛ""PW"04hDETA@ &(E Eէ" Zdf5QE@(-E>E`h";4C*@h-u(C١jMTP@@lOE@Pk"PZd@]}* EvhZU""[SP-C3Ԛ""PW"04hDETA@ &(E Eէ" Zdf5QE@(-E>E`h";4C*@h-u(C١jMTP@@lOE@Pk"PZd@]}* EvhZU""[SP-C3Ԛ""PW"04hDETA@ &(E Eէ" Zdf5QE@(-E>E`h";4C*@h-u(C١jMTP@@lOE@Pk"PZd@]}* EvhZU""[SP <-C1Ԛ"٢W"0ha$E(U@@P &(E!E(կ" Zdb5IE@( -E!~E`(6kP)@.*7s]vЪJe4}(7@#p~gfD/YfYfȹbغ˛i6MA4~fz3x걣6kos*oLu$SpI?2Rhp21~q3Ə21~@'qV^9suPup-?0iŠ͔\d*3ZA +_<8"soUA>,Y(o?˟I?/K͞~gO!cP/sd5D[Zp]#T!">!371QiF++rϠ )fʹg_ {,,@3 5#$2mY7 v G@qnY9!wI;NaP%c #h,zx"LH"D+{w 0uc&K&FMn*.s͘Rkni]5<,{pD(nYڟvBGHYCD+W*]okobc9ؾD ,p Kظ^p; JʧfV})@?d!O4<5WVn{2t,`]i`~YcZhY35EY|Й?5 'r!`w6iΚB``A ~LO45FkW}|w5W񂋭[ȿȚl, [:Kمwx#k5&LJm*g* [ADE?K(cpqvL'T"Fp21X_e`;Mz'bx^% vsY/?_=5TбwS"""k2F8۝gc}+.|ܹKxAr#+IDAT&^`+/#o׸&p4 _ X*AnoHAIz(1~؈Af)ïuչ7bu%YTP*#fdQa2_ʊ/ozZ恅*N1ZDԲmE!F0l2whTqPY'ڟ]}os,ĝhl_^"őpi, DE5N.x' Y6)nq G c z1c c 7'9K8GvK=lyw{?%uQG/ )C@m`+Sٗ2奱("P r+۷n*EB"(eB@)hh,"0ph!ՄELh-hh,"0ph!ՄELh-hh,"0ph!ՄE,x}ٲơ(فVMJPʂٲơ(فVMJPʂٲơ(فVMJPʂٲơ(فVMJPʂٲơ(فVMJPʂٲơ(@nᦍ &(C~U+o^nEà?5Ǣ& _u$gE@Y~.9E@PJɖf(4E@DjN"PȖf(4E@DjN"PȖf(4E@DjN"Pr4y drw*Qσ0KV$b2k}U~{챫t`<J.6s1x13TCL"*jL#>;rbbJN #R,0Xq^"哙s6=ە%r:6ޮYc=G۵p%t;*(!p]r՟˞[^Ye$eBBx@ó>%IYسa8v -$2!N=<E1p/iP9 g&Y]aG i8,fHۑ]dR"`؈ǁDZH!"L`e^Ǽ o2Lt 7,5q)d 2M3mu1\&h/rLpeW${+6[5&Z\2!|&L&X ҅ˑLI$- KI0۲D$EG,G0?Eޱo!KK\d}R·+,8l$#Lٔ<&TYcI6> FBj+ (_Grm'ly:&-' N`%:rp;/_bdk';Nm@떯ǖ4kЅ0B"LLHGKnZKw%p|ˏƍ/ 7D`oѝ!K+Ɖ̔ԒіSIZT238iB"_ rnImJ3l7x:䰇۵Iev(l&KXlذaoظq~^sff FNyP%].?ee,Cjb|C% Iq,Y.n-9HN:IZv -׈BMlI$xӕ*$Ce8;,GK2lJ^c, ~$+]ՊvH{WeDk7-;mm;~uMw|6;e#eo;2l˓RKsXШF-—'JDa*}@[n]y+}7z&3{]ggfJSZ4 ɚ8zѧV؞<iޥ&MŌRL6Y{j]fŀa}˭Ĥ"K.@@"ПWz׆ s¶@䒓@&4 ܮ ]|9kӱS袿wRgnt\N.)ĹxFz45 WN?۰Σ7e046,xzE¨$ݳNӧ* ,Kmޭv%R>i9l {WsGE†>J٫ͳnFT[2!@j3ZP|5FEJɈ KuvҌn:yA'0h3CHRU$h''dV23#}vє]e[q#Vg =Jr*A3.HPҾ%UHdOGΎ IvHmI4sńk Z|6KDL\I[Hc.d'zQdUj,.N.䄈vgZ>YtcM|"I*,iɣ8aEڡ.!9LHZRR2 e/h0-k:fbR^"X &Ęo"b_fe!4 ފ l I$T|IKn DYnJ;bR&f=*ZAJk\>^jGLe̞6>$HULVI0%M ]q\>R޻GiPL- %#q]%qB;CMALEL 2Ύ+2 FdU/$\VrH+@woM6qF񴵗G{|d`9Β |Y؈g2q!Ylr qkKOF)A]V aXfۣ["g$ 9gvΉ f6wcoBY\e-,Qn.gYF 1r'&$r`'L*A^twW, ]$2(A2K$95nFJ0(09!Le\G.33:"p*SɔHwˮ8a6.A2ػRNIԲ;]K&D 23Žo1 uq,qv .i.ף%L,_>ɻZ #io)#"iIdt#ًTI(619 S&; /ȵN&cK& T9'xAh^PaMMYaC\jf@L,+X.0} +@brC_Q#FNjY +f5M`=V&"=AУ 0:EVd-Vm%Zi,}-Aٛv-릑$4V 7A?K+K]d1@zTd)ĈٰRže&LcN^~Q+nܠtf3L"kL9mYzQyE ^ɒ{WfQ[f~;&bylHNP~B3Y3Jh#0| Wο %ՈI2,%4q,>7IMwkWWb}"Iɤ.Yeвd$R.V$VW2"л,J:4&'V\#6 k*~"%o+`ygHk= MiR%)e+ҦNOH2.z#:0iJ@">:p(XDyTڒOT҈S47Ղ9%F`܎'lB#+ޞiWm2gGqd8#Yk",EC}fnMyuhçhEYE;,wu[J4Vd (Pj#huL3w\>NӕoQpU%M*!Pd )t*Ra̔*l)i0):{'X$X7H 2 n$F鰊k9%%i̐#OݴU55 {烵)L2Hue@y Dy"^55$i΋,dVbԻ{k[ܖ6KŊ HB@*snZ-~@c:`dD#dUE@;ݐi"OhXE"wC+@?!煯/~~J]cUEVd_zPEȭnߺRpE@>&}Ճ" 1Zdx5uE@>ZdzP!F{=Q!YSW!EW? >jڊ"0r "t-DWm+#Ev@PnE`";(Dc׻]m+"0$ٷu(@H*/v95(!k6" JOՖj@4E@P]_g3"-eIP-3" ĴrI[\qȉgҽQGS!F.L9j-XAPư2DŽCH3w>wf@OozNky1H$ j.eDcݛy<,,QDl1ei&ضű,V (̅.%I*5.)idM&Zd{P[84- + ZdsQ(B.IV-W29ES4kiՌ"P2ܺrr$dw8?^PJ@3ٲO(k",@@ Q~ $,!Pє{vtHlG{hᇊm jVIE@PZ!UロW+_P h*" -~E@P2 E6x(@+ȶBHE@Ȁ ੪"(8tcT][x33-eT@PF`6oz{4|τT-_y0yZ:SX ZYIc)"[E t@6U)m-&Xoe.ZbIq '׬Dn6!IENDB`do1NM2RPNG  IHDR1o4a ViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx $Uu﫺Mt6^s;N4`S_6xԈ;[bLIn/3-za;x*6XnMյn9s3s-Z_vMKlLL%T&>,zP {t8Y@?"^8]z2h;T9 ˞9gW=nt]/8党D}c L;Ty8\ qj!  u @ArGcg6R &Te6݉2ܾoț97pfk㎵Z3Q RoK-\.) 1i1g5~%I8 ov": {#c3^  0"zp\d+pO2O{'Pz9O 4ݻƁ70ibl,=dO%}~tsZ|MxO珃G]sVs)W`jpMQďetDe,{cNcܿM_m:M*PTS"ltBY"m )! 0 V<h+x;IO/Q~JDWq>0}կb\)\s_+ M4 _Z~Y~%~Egڟ4Go%ԽQkqE">'>w]ι}H7o5W{;g漇~8m詹sֶt澏p졭1w_sͻ5bjl8/"]բ9RzIÅ}NmqNa|ο\xJuDC& ~\zgX;.Hu}׾+K>_~s\rz9}U`t{ ._79yyY{/ ]uIOw ƞ5SA'7;}5Ʀ{_Ra1ɂH-y[>&fGaNoy6]t8=4 {EՍ@q:M6?QGGeм}Sݳ{_%wmu ( f`ʒoSN0_=c%g6[;fHE$s7K5NLtPٝsG~f~7k~ga1mAf@9QcQ+.+޶g)CUG/_X>ț`=/M  W:kGl?muR}NO=>NwJ=e:%d~ƶG5;Oί[XyqHx|O46\|/#O;7?~=\ 5|ڱq,~m'~d3^G9qЙ>%Ŝ>Hs%nucŅ۹Ico۶ee~l9S3聏;aX?&ZW)^b]E~h&9}~`')ن lYLߴr/n޷O P)śA#D?ANoߙy7 =Jg?I77OQY67jчlWi4eM8;a{>Li˿?z={՞zCOYz-[e?z/Hi_$|K{ 0 ]](ު-4: uz$Jc^bXo6n[xm~Ư>Q;hxu$ޡnX>B}~L뻿M>f3O|&=-HM$sA?q_}Q> P֩h)ẕQMtJGr?}F5}@RXqE.ަbAZt6ci|&g@!{A)W } օip8soԵz>x|YܣjL>=wrg§;u!~طw961GzMܧq=_?gė>ğ'?,yAa'1]V/^rPs';lfCf=yM-0$edxRwy;?IC_dGgVc\~/S-ί9QL"@u^gAKs_lZ&S=zxÝt]**?}d% h/R[$e|AßgHt]naϴpMނs^UQɿ3KU[(zT=ltnε΃fTz+/M=NҸOg$az ܔg>ў5-w#ljbZFXA~/9۞-:^g~Nwz :FL5E^w:u hFw~sꈉ1GL͎8Y ”H`x濝.RRc~*{9JZZ +^O\UķN=.@Kjʅ4+@tV¥tsinҿ"\VHxdv+:삾?ˤ|-}UΛcH}n&QyOl{Haï~S9yD!WOy/]iv#Sb7[d馿pe*Hh,[$_I~T0h6~z騅B7WϧT!c2uߝw+m}zuZt*kc8??zHU?@_]oxW8o8֗w{ϟe|Mioq-q4?} k'~ IQ\:v_6xީSVb}{\0;;׿aw?|r,'+8~ .ιolt)ƒT|zC#c_~cgϬwż"7bvЩeVKhlm|3n5}f ː~5\_X>bG&'? cΜ_{W}bΓK|9{d5}덂#0m&Xt5xǼﻻ *4O AƝ҄ RuoZ}߬&#[k>wQ5G/ڮy:^?㛏|e'N>`w==}ǻ_zϼuⰉƮm_q;)33O7=w͆ށ/=nr"#N=pѓ@gϩs8/2sû]޿߻}r3=U(FL=_Б-5_yyZgSexڵwEo:g&i82>?^>J4[sC|Ck'}pK<cSMZEj8];.mJf# @AKOB˿m鶨^Ϗ>z"Gjt |4+l.f+Jsa+KT&ۜ܇b{?s׀:^)qe[!&z6g~q?͟}~+Ƕ>ǾqOt{bjx{;:ǾzE#ڀlќzwݤs~=濣ClCC[wQޚgtzP77c^^Rʰ۳$FL{CӚ RtzNbKypOdFxg>u0,w?uK' mw̶ʶx.Zpx:&iKsKO(m"g*7Ry}{QI/W A8Vi{#VrMr''hD-Ԥݞ~*/MAuj0lrbsĶS_g_zư2aD(?eI&Ceѻ?$eɮIt1]L[%C~.jXTuo$d J%4f<> )VɀD.$^)nES=={3f_A?n;ގLmWfQRcn&."*f n_+X@,sS`dI(@@ "Tx   `@M@ $@Wɟ/ԲMIe[  PWZM gkI`  P$"T#@*Tew;7ޕ F\}di^iA"!p{Q@֯ s mO-8-@qS %|Y)[u+/Ȑ Rh쓆a@@8FɡK%vK9$:)aIoLA%ZƩX^ȇ@P|K4J~I9 L4]*ĉ8D eR &_MQ O$2J]#OR]xD.vWD^pBnkd8 Eo&⢻&P|MGmE#EIFzKڀe[c86%+qg4 8"  0Ite }:T1I ņ# "gU5-&飼qԎʈ\7Q}KX %p٥U72d-$@lM{ҮL'M %я}z-}c0vD5lw.Yo+E#BDmCXa&2̌e  0"1fNSWڶ70ȚJ{ y^ޛg 3ݲkp_|zK'37  P9I[ c@JC54KD@@ơ@` \}̈pUW^qyI}@;vG* A@ ٩V0 &̥ƛJ @M?GmJ@m&R}ԉjRVs8}?ʨ$DM+ԆQ6h`wfGc1 >$O*B HI@Nq+n64I9PP%)kYK~.<,H}2lXϋ— 5%~[ PKm[vS˯&QE) IlXcs1"lj`DŽ@˓ SM a OMЄ5E/gE`ԲC(@O*d@@^sH<\쓪Z@F@N':F@0tQbk@PB  7Oi񿶅4 ވ =sS=OL5)1;_5ެ!M5fRm\\ {@M߾uM  \ ^DAFYgf4t#Y2jRK@@x S Ї87"ܬG@"ܽ"Ř 0rjMN}Rib؉\waD<I,~J;s]f$IRJ2ŷX5X@V9S1- 1CBK7(jR:nOH"u`u^z1i%~īMG[P+l\mr|Kȡ Xvkj_8k%cgs}KP2N ҋ }4.EM2PE@.$%ikLRk2 :+8 H+.0RÐE TFv5 7 3*0f2z $:.kMK{k(#%ķ5euS:7ۂ @(%wQX 7ךTl2R5i4_Il4A`V D ]Ѡ  q>oCM\<”@ ^0p_"j ٩2)|o  $Jwk RD  C b4  0"&@ڈM8$cֈwqpv14lh-S<] hvs]Ɂ@ЗгeòhDrbL6"@l u D)BD]I|*{{*7.DztM*|dו@ė]u[j@5)K]s@rW}@'c:fdϓ2  oYRNw1Nh]tD koYD,s1& Z#FbC$p.!1.1jp(L7Y5䨕qF,E.6Hswp@@ CIEhDP1@rIF3ėK  $Pk4*N"4K5IG eIh@(ZУ1n5j ]7Ect@`$ \vE#9<'UpM $"Kʓ .7\䜛*EFhԄ@sb*eӐTlV@@ 9] 61qY2lmDM ܝQud3$zHMM[q# @@ rI4հa裛:aY@@`$uԤ[PL@*L swTׯ:l  PIXD)ʼna  !TN&۷nN D ܑc@I!`ȝ@ŀ   `p,(PD5 @@"d!@@ Iǰ  $   @M*<&YH(jRA1,E5B@AP aA@,T\K @cH@IX(jR1$@ Ԥ@,P@5@@ jR (A@ Tt   H5)  @M*:$J&C@M %@P !A@ &b@@I@ǐ  P@   PԤcH@IX(jR1$@ V6rcٗxeK @= Z zJW\^) y $.HsSfS_Ae7? Ev3^65FF4(jRy1x&d6Ͱ%>\nXDR@MZXBv{EXH900LQ"uw<6%c`  P֤|vC1}zwf  9Ȱ&Q:!5# >e.颥{ct/ t¼|Oe1K ])7pp$50mh a.g/q<ȧ# АE/ym h$I)|%aY$oOd(EikؐFd^4L+ QNfS ˙|"0{hc B 4HNrСDAR|#lbvP2Æcff$C^fݥH8l 7=ZfiH3DbJȰ&?!Ҕ"~T,gefrdmgJdEAKG3^WwL 1%=,LG9,"<~)#. "Fec@ d[5I!})0}!ˈkpj]N,O`|ltz,#5#ƒQŎ&8]fƟMpDzz9xPC }8iH&#G,h35`oV}g^}ǭA5F]5kю5Z6&eXft]ԣhq48"lxF,f 5Jq@=Aq G훢Wk&)%SaxZ0'XJOf{ &[JY ;),?)B`|.>>iy1cR7l4 '+m)2G6Mkgceq]44b#A#\22Pq4#9d=appvFg%0Db ;#RrSP5d&H,гP\$eԔ!K{)M::9 rre⒪EhzGAu@ 'aþi(ƈ wxtJRL37z  -vv e[C]2G1Ϲ(&WLVCzKV^pp!3уJDƩ Ia$W&s^ml- GJ0Pa!OA/ /M{.ƀ赇 4H5aiķ IqW>"^mJ,Ds z-#R@r;$W_;-la.)JsѐÖpI0SG)xY>OӰNمemD0vaّuV2qHڋA %r,c{R} lRR ?Lsք }'H_ q^R _ݴ]DtSg(GA+!$F`2G+zRQwqne8r'I!}qRIzsaGmc2b6 4m0Ĵ $ 'm^v sIXTRGgMr9?=ʲk*to!:$z^FojG#NF[@P%_5Y'R(ŕW\k[NJ'%)нRx%EAML <9J* F͑_yIyp mSj*zG]&ȁjR1@,I0@@ I9@  &#&C" @@r d   jR,L0ȁ@a   1`L@@r! f   jR H0ȅjR.1@ *hB?7k%x/%I5)OڹE?1WG+7xj T $I'O5V=Njc@,y6~Cpa]LrLD8סuhFOhFW^3>"ёI$ie;F b(&5X3rnmR.X*bj>N&6ҖZO.DM41348(EGJtd]##0RJ"IƲY_N&P@M +X$wO=`׶?a. W>zsSI+m/V6#Z8)~wq(I[s~6ze+`lM7(%-cXBǚb3!(%[TJH5*L ~5ICg@THE5)68d@5)   jR*lpȀjRP@@ ԤT  Ԥ "$@*I @@ I@EHTPRa@P2  &' &e!A@Rp=Ԥ  ԤL"(@ I)@@ I`EPPR@ @&P2  )&L&eAA@R@MJ .  heAG a6 0ο[7WnI[b{= QAXNepQʰ 7T#Qd E`O%Hd_*cԤR-V  RWFTB u&PRK .  ȵ&:XK7rvk>ް|l L&Yz +,L*WzE JJZ&kMY=!8Ft %vz4YR@rJqyWAIc0{Yk¸K#fXL8}bBXZ6U oe_™Pŀوɖd!LO^FdLٲoȎppFF29ww@ !go_J(]&(2$p"c=H<,bP@]l|HG!{% 5^4vpY}4r5)qս"BE4Ў#]"F4)l,M-E)B*f"H ZP4(hCz2t>y$agyAE2A> ԰ATWSCs4A##mK{ v $Lo $A ggbk _4 !@(9`QD'-N#"Eؔ_X^RJ5“nX'}v%PoIDG Sڙؚ0_s&0#T Wk 6Z$3f_FIΠTV׺T ;OO_˰LF(4FX4'0oL>w'PI(yQYCϺK. $dIDF[I4ݶ1f4VZ+Y.#$}sБ#,Ō#sYЎ,\A6Y =`4i+Ri C!kM<[/lKݥeR"A)6a10IFzW`oX1Aࣘ1!M [/5i"lt(r 4{{,K"DG tQՖFA@`p֤E# 0AO5k crT@1jR|VTBMJJIX0m6hlIi .۔1_B&b**HF@e3;1'EEh@v<"2@2Ix@@ ;IٱEddP5@vp-xvlG'`& P*~5/ρgy{ 9Prz0]af)@$WT'e+Ĝs sa EC)xzݝ7'j4Sd]D#ӎ}8@_ q {F44_D%B@#_tiMG %h˰^rba M;)e  PgeصC6,<;nj45m@ &kHZ2=وK>ЀF@)X/bBPN*XHu] ҤYozD xt9@{#1 􈺋}k9'7hw00=R&+^B#(,Ϝ(9O$kB/LmPM5 r\@"F'0H@c\ dv3S,>td-HXW $, $Kv@_A,e\ H3k8$Bi3|n@pcF)O/gS+Bq6&%f =>psĎ6y$L[rklM;b|2MjCq. ^ !И.PhG7&h M} "$f]5,= k0K!fa}NJv^E;j09"x F8kM2,MZ[cJ~MRXaK|#&0-zH/6Bwٽ5.:=DCr/wƬgdi TogIDAT2ԓ@5iKyա ;z72;il)Tk4Xܥ9Qe\ P7-oћѺM֭  ]R% l@}5@eUw|8w,A@=P=le))LM?jR hs9k7gL@IEPژ51- $P8 `L @@ 6Ԥب`  1Ԥ#<@lIQ@@ cIFx.n A@2$9'eA@@MJ  ;vk!4@ T.:\A@%0PM˳A@D'i1W(7Ԥr:@Mjc  PnI^d u"T\A@Pʽ>@D5N@ &{}ԉjRVsr@M* ;Ԥ:6  &TAv  P'IuZm@M5@@NPژ+jRف@NtZkovӟi 3C`6'[N8^9#2ӊH4;;n_^<;XcE`F@lV cO Ï5Q&A%L:?D+$Ҥ74~,mIENDB`d %Z0PNG  IHDR j2ViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx] \EL29&I"!ׂ"(?q#D4HŰDBF I&d${_U~=3_ꫯ_:x#sjZq@KekD<`3L|k793,LgJ)2 O[͌e M0M,dC| qƂv%9eTdHj8ߡGjjkHւ5jX@.j "L>jjk@U;yuXXaѿB)D51X7!]+cJ" ^8iQP!0`q#:2iaEA7^ 'a/"s'ٙ+k?FhGFgqO˲z(A`HPG4KPJ!7 PX ,^hݦZ LJ9f2B&YZHPJH4C>uƃ,K5bf5[YVV7wNeYi|p^Сi^N0떡N,;i,{cqq? ܴe:D$HȔAF41 L<خ-;n-0ifxd$$"6UW \u;KIofYd[ Wvfo 4'Mcv\]mK-{Q}5jZGr r teMR!P:EgJ9?b@~Ȣu,m6+1n$y2!Nh qO؛,1#}x[kf=LKX];~6bɰp'b> _F1A聄ZrIiSzj&=YsTOLl-,,Gh㛁qMZ h0 G%YM\H"x,jt:>gٳzN`mAv8F`ZqI^0A!.l "I⨫9Dɡ@i: `!$:=8yX er TpW9S:z0txMcHMzf6Kdb@([aW8 -ʐAZ`N8=c5blCN-\<O$ 2 G_6m VbW`'Xa7q2fKuYpꖢOBg+.r1gOd_l(Oი+xwWi4T1L%1E'|E,O-os*JdGڹTYpٓ\坲Ǧ[G-)IQ"={X*,6di%n bވv1 '~˂![Ķ$򻍐ןqA]71-`F&dtIk_R?N=aj];mL :-Gu?F1Rk_y"gGx #i'>tw\ANKLCcMp ϙ12+ۉ -wO ŜElTRQlkw>-﷤@m?]?;?ͷ4*.+ݰ1[XhBk|Nj42-I &X69\1۷p7SU'к,XRm$_-hiAB>=¨"ySz>GO{7Õ,slCv{s?gi=RSGjzya#L5?$g8[S7Mfig-`OoVN}홞*(WRP漂`>_P*N?7ϛpPE 9*qB8;OXh}UW:ةίT7L= /67clGFҧ_7nh Xh_zQs ^܉%œIS/\lZӰ`VƦ;/.}״BZACP\'5[Is0NXl{ 3lW>NyiL.}Knjkп@•/wX/k4wGO80m-ƴ_`d )i$Oun+>1H8tbc X4`C-\ xUmZdM^A6 f:ND}a.5L&cgŌ,=#GX^Gr[-:y{ʙ[޲n{g8w /Pe݄ȋ79SjR>$Je>h2]{GvTԭw7ԒN:yr|?Zj=䩗qZΝLtsqW7 ";)ͱ㒱u#aHS1=mbvov?`\Hyv ?TMs{Rqo喷ȵpo82Ľ*ol՜p4q]&Cܟ%BS\gD\ e_^[sem/]Зflo>o~q¡_?CckYzGG kv_xVQ#5߰ eȐh-tTr?Y~';l:VQHQ6UDiyl")ڻ`I9uqr§uǓ֜Lt͛',͚.|~馵P28)-M\z+6QiK]G1mNPI t-:kiմ,‚MI1-YMCܾuW/<M .n/Ͳ:4JI0:;^>vt1p#^ ka8  dԏ{GsY^wRGC]jꈏ?Ǧ̉7Nww PoѣDܝa߲& S!C bROXg1F?| )eSETyMI4LH ot ,8qtڴ7ΈįO9U8Pr(oTV,#7zt5/gin| D5*0I~$LsLVWlOlnCP`f$t5`5L ~q F1u5`B0$I~YvϛS?rx\7_;7L9o.f??\rs3 Hc׾U믍 #NHΛ>Xc}ݹ3q= FOWrov_{ Yő+kQߪ&TxXT~(\4ۼ[,g_ze>oi ʎY xEga@|\}_^ Б%O[7I_1FF5?hJ ?x5c)+㧉 Ϟm~{wY=KN|5=J[;WU]ȐmSeAA駴ɓ[`;y皵|MRo16]x1@m1Ts<.{y7Ngtк=bx=`&pp~+ܶ_{3b配ANJK&aV{=aio}K맱dwx\T{K( O&d#k&lpX7>ly1|LhNW>ٌ rP[U$GO }ͭ X>lN~Y֤ˤ#'SIL9FfTeIŏ9Xx(*뱉\:,2ξʨkM󔒚;a`aDѩnSLi?[~'WkOBy1z`xE~xٿQ!z@PMoĻ-P.2^G&GDIƕD*YI#SJ1Nʸ2R)B By"ǫ4q%FRlI΂rDYqO]$Bj1'PMAO;LuxeIB@jDREU!(ҠW,E|u8f+0.-w?%5H!P|EWC?gɖQ+p{JLBBWȼ- 's޷ҫ>)C Oٮ6ZB I&"r!@<Ʌ L'xPȅ$*$#2(\x굙([>om۰B [nl_,Vw.M΃oVwJ=OJ-u&5dOJ-u&5d>U20!Pp i|R}DUē r TtsB:ܨh'=\  !|!'ȏ$?6C8O$/!I~l(pstA@o@ }+W@tWPV_/^ zDVH O}J-*>ēcJ(NG>:sǕBy#!?)/T p}zIB1[*]h<(Pe@HsvAEByB/fZZweAB @V;L8:|"P1T=***7|;׸'kqR dv**we{?@ p RC 0=Ai#v(|"N2 ē+AV)%gYicǣYeՆ@kK wQIB4=eURFT]KI7Ox Awx=,B@T0z *5,9#ג8 K@',(OPEV;WW}26Px~ϹKJ/v} USdpO\JWV3oˈu(Yj2!P4^d;7*>rO 7UVO"@<)+TY"@<Ҏ#ˊ΅{oeeu*<.z;Blhޘ]$>CoY՜Bysij%;z*_$2$'a>I!qGeM;ͮ"VO<)"CT,Jq2dߗ Iq Y'+O'Y'?gVT܏^ΗiVIBA3=X2 ԇpŝO$'e*@@-$s<#Kϖd-YxR2hp )xt\Zu{8ēHVTA %Q]J4B<))d<7٠OC_&ݒIi_2hp. e TD)"BI)P%i0Ǵ<´+.%%.F'ŗc#t'U\E'ԊuW!%>DxN&I!%>DxN&I!%>Dλ|ةդR<>XmK<B~"L )Bަnb%F*}6_O>('bf85?yWP2C qzPpjkQ!du65O Bt<܏ Y]^4dpվO8ae@B(mfZFJr&,3",6"4'}{*=3U)UEw,()}n0IA/=I顐8 D@KQM! eՓTrU@EqÓr| w"W'ú+%*KId@L*5ODtgyJQr v #$ @OzLj4 Bw'cDƁ !w8g^B#7KЊ8F 9[m# b!POłT)tUGnEwxq #@cN5Vē3Oʏ9X}蜶kqA8ݷRFk -IDATE]wy kz ToߑCxR>E@W<'Jc辕LяԊ"@<)-dOяԊ"@<)-dOяԊR"m @.\X´'ٕ,e)Y9r69aܷ7,GURZ= Kn}8@yfUSl 뎜Uc6oIENDB`d4;dPNG  IHDRqViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx} eUu9[]]]DC6GESbls=0j؈qyb&HD# DD9g]{s9wu^{^g{[qKmWV=W9@Xju|ۅWk9X;'hPMT:vu]~JJyȪԬ!Wkh)kSSGɳ/]Um=l*TѾ.?^pt3@1",F`awk D.( 7C fR8 ifawTGfͤM['Un) 4}zk#jzQI9A`,upP6`.P3pj &Gs"H&t{'X _G/Ɨy3UՃ딊SRT,{^S 3*0Z!t # Vn]Gvճ U^wEZJuJTc72eٹ=ֿeԜXn!ԜRZ 2C#d&Cf 6HldMAu_ؑf4s-ϚUݫg%* ҩאT* Ԭ7Yk k9"Hiu=@:hI"(AJ-^dݲh qVb~QJs.{Ͳus0 ~wT03@5жgᑠ8H.ć BC"llQFdQ!AxӹK^/z`:=Vjfdc6cg\ GՕ#׽ogn o}{;3gZիVKo`V[yǮ>]]fgڴmk8} e5)+Xs|뇚qI^tQޡ)#t*xJK'\6ĴPXUbQw`X{_Uԭrś)[gGWw[2yia:Pt&y\(+ji;nĩjTy3Ç&&v~O{shr5eoaoU~aStM%En5i|5 kpJ@Hx.U@*86~cuV}`qFXxXܺᏌzWóq'S,M~l!CF͌\=>U|jdr>"qp `r2V!]ǝk`eR?LJ'?jg bд74оQH;~a) c㦛yVܩCxGGϻ`~k-0jeK22>u7~0b;J׬ Km9#-gFj㦨Pۼ/R ǿ`&d]x5糫QX=GYMasg}3k߶db]ɽnOZ=^X](!&ŤFdR"V;j[UgzkZz# Tx3K|` #>5Ǚ+WzP_y˰у{>\l F%jEr~>1,͕ =gCW+hO܅\pyK`;xK _ m,Q }hW-Xja_Z?u~[=BFG8II?ƥ>QwAGo("`%FBp-vn'H^hFTìS;r䧃?~biㆥNȦ ;[X l?H(~0nÞλ)4I$.SClEچ6Rڑuw_oqݼ X՟/;Y Sca-gZ³*;`'aoX#ꟻ>sUcG5 U{'U㔬ٯek+k'r_U`qA8 vچe7~3`3PIJo/_e,@15)kWoTvm]iRr5ʷ?~w3?8tr{5r pcruˇG.c;F0 CT"fL[ר+\Rm?C~"ФG]go3\eǼCm aSP\ȕ^$ǁyRLb4Qhu_sw@mzׇq\5+¯OX^x9Nr_^`\yfuGz1tv[-|Ƿl RύwYu+o۟S(U< L|Sޗ|Ad?Jd߽ Y_#ٯQX8ogխSKaj[9v%o[&1*kOwm٧navU4JGc~w]̑-&#$,߂@Z=X|}TBz8kiB ?]{sW]S[%TUjjjvBkOq$KVz2%$5IpQܦ|(EF?IWj/x:~m۱9tYSg}TL[ǁ_獯4ozuƦWH W}˕oT{Y5@w*{ .{56Z*=|֩w\k֞~x{gWDjǟA||<0M/ww>ս; OUIOZwfdW-*=vomYA$1AǨ@.εrZ֓֩.O%S.*=² bXSA ͩ5/xpFZgN.vg߬޾ÓnQHϟm>~v[+@MXgn߳UOT3+¬;3V;Jt2kU]Gˉ+ /KBI}h}۶;y]{+jN ~e1ctݿRQ[; <87d{d Ӵ 1X>iMkEkKpT:e'@`'OPGN;qSP: cߩLNUGg甗W*A7'us[4AڴF ɋQV0oOŵq|v"]鵟/`~D`ecX=^qx"5ܛ9t,x4]g";Z8KQox&=nOA+OfTU.HMZDr 'oECX|}[aj~7@r{ӞfCcW|?s||tm(<3 Z wBG6^I:|z|jmߨuSn4n#5,oEυ򞷜?GV۽SK3̠ԃjƟ= Ek. X#*=S!LO?5la}VϮ {/sv| }#ٛ`/~[)(ha(۶yj=Oa|G9^CPܧS<ƫ \'BMA;MU*pjRh,ۯ.<Ay?}߯#%C>ӌP{8l7Z$ j37us;.zZ圷wgs9x WhUB&spĿ~J=Ƿa9SƮmU#MU*P!wK[ش ŧ_Q _䗞 1e#JyY3[0(ayCCh= vGjw٫FݻVi4{F;gW]~Շp Dij[kǵrJ`JXU:w| U'cX Dѥ;)9>(NxbO_?~xCo.;-\kvT[\w$uNE]@T6n&{}3h0RaϨ4}@a0}Yߦڣ AVmm"slȰ}ڟΖ$Uq+Pe^?3aLv>Zy]+V=O:}y[ÄO/jʤ}ZKY~ ;t7=^4Ҧq~j̑K0C@pA5Nh aU˫2J٢-O=N dd8fx]bY{bꂻߊ[Rնxj?J|5UD0"I@YO{^P/!  "6Wbϻ4 x6p0w!{-us*8Us.BbbNGir l<_ 5DYs EPYq,l IuEc1\ߐA@p77#A@G@O8.7b_pA o$䍰p$"\A@>y#,A >WF@O}A@G@O8.7b_pA o t$I>]Z}Hȿ Y$toiMHi ! @gY5A@h ٧+E@OgAd t>+64hjc6[k1 I d}AesE!`y ye\2T]@Nd}rr.C]%'QA +-Ӭ6_]?"`K/2% S!xS,q} ZWZ|2NO2P!S:Y1%-t_Osص?׮e f^d  %hؠ`L[`:h*&kˇ}$É ZІ.Gd,AbdvǮ]Dȷ ۶DZK)[°U4Nk It$AiAI-C8t>F8?ugƷB2/Jvݏ,J}۽q S46]qD3ɒi rԽJk*(OQ$hM8@]bǭY~]gϳ֭^Ԣ!` uPчa0âF-;iAJV~6mHXj9c$'"Dp$3.jQ.In  #ִR UzBm"J^-+'ܱ|9oGjA`h+Vh=|k`% @a9A@C@ $twiU$9 A@OwpVA@ O{d;.H 0-n@ ՓqUK  dCd}o~AA@q.L<2e PWn5mt'6I( > 1A@>*A !}ض~bIC@Ky(٧%A@h>+WlDW!^'JD>>H"|=pyA @Oxξ H 5 NE7 2j7(֟ CHe`Z3 '!qy/d콏i!AX*4c$* g5v Oh{hbLC*n mf jt=⠊I` 9XjiQtΐ-eZL'd$r>g^;% f^q> |wCB[gA?T#5Ҙ!|S-:MAhPE'ARMhZ1t!AIlPd u-*.) @U$L,sXY.;*FH;هSzm'p8}c\['`;k`CAm$QK2!Ӻ"h5,0|-@pOZ:_]yd)wwO(v`2&8@bՁm1~ $7* #`t'$SZ">'a$>BÄ(QE>z87Ӯn\o=+X}1= eqgϊn7K{CD9>b[j7A(:NJvgc>+׶E<2$@$@tI2g& cUA ĉٲ.Lm1N'o[!\4Lq+?mh23ǐd~!3e侃;e` IDATVޱkkd>O/ ZyBG#+:fTdfL ړ_w/C| CugT y#`L:nNG! ' d`Ma^}(zڤ.7wİ  mVo]lA@>CU=oCSJ83a`ctyA rQځ:a AH(CiQtkB?l D(?k1\Uz=P%ċ;8|obڲWXĀ1,FoV'4HO'+fHc>f!L|~6ZCI,eHE7Œ!k &})@-ֵȺHvH+U0fagO|Y IRd>q?7s>u"h Hr 52-@#+r봮Y8'$A 2eijWw^e>3C}ݵJ`7p$uq_$=؛֎4hg'PTоO![ث H^AD@ $}GA`@Lc%&A2F@V^ܹ HF@w&4}z{9A`3+ =dqN`$ pJh@O# ٧G>ܹ HF@w&4'ts@"}k%(A$. dV J$A'@" g U>}I 0Hn>@@Ot( $}[%(A$. dV JMqQ vd3P]*}d>,qU($ TwJ0@! ٧:K\ >՝ G3nКF sK6 6R dS @R$$EJA [$dXHI @HO&I &KA Cd!bJR 'X"*" 'C0Ŕ @@O DT2D '-2iMUkZv䭒噩%mNCFH^hm  _m7owOegW,YOW*#!LGH|/`ZO Rwku|ݳxB[zFW>{.{Sr~r ɾO Y;/xo8uw^;#!@W7Юa'\<׹y3)u)WR>l'![I} vga^wJ2 vBnI^f̨/-Z4or."Q" q^61mh rT!p]53!scpH,ף֦ X2죨Ǩwk(j4h/٧2QxsÏ'~2&6˂Xk$'^}·x!LQbZeF1ٺa_C5OihZOd"}ᔵ$}of''eY5W ;^2amДћ Nj M xZCQ'ڨFRpBd@e,F'd ٙ806u娢Z|VM[0HxUëx$dP9zs:_oA[} e kĄb<,Bg}RJIWſ? ;~$hC 0tQʿCxej.F-"F=dߏaZi,s>$KrBtC%A0}T:aILHIV4d{>NRh.0$Y͸`P$b HLp8^g4Z@F, 9d&t(@QZl-90!)'\ gLYcyB0Yxr Grd>LVb s`!D2"ÉEBέr7S"'\;wݳmǦ5^J9b3h/g_D;!B൪h_B‰&٧R){O_s3ߒӖn)m}6 Kᘄܭɪ$B[>}2<+?:l˦ks㿽YB6"1BPmY9jsصkڵ1RbidhhQ8\9/'-UV+umfjO!A@>(FA 5<_Q! J}`q瞽J Y#k/~ L%E9naA@ >A)A }R%‚ }2R @*{Y񆺁WcHQ2A A˟$uxw$ 0H}s(^Tf#(@'&=<\@E`Q&8Ln֨6J,5Mt(߰ϒB@ >xԲlSZzEhc L*h3ePadBްG9ݻz\ At0)91BLD.ZBVbI^⚗YVJ,>IAkQ#(j?(>Gw7'F`LL,)>1OL`1TFBe HW fXTC3$9۲rr[ ɗsdÕmYCiXqaz+H"cOwVZzOG. @w]uA`" gD.t>_Z/}oK@w]uA`" gD.tTOZĹW-u 0@\ GY+;$A20ۖ[bD:@02d%^ڕ\l]Bbg퉀 H=NXrRqkUw-sy:kwҦCӵ2s_OfP!AO@Y);[lc# Q-|shar+C0W<) !kf;]Z]{՚WH=5س _Jxe @ҬVTA{eWem9æ4y 'U'9aȃ׉&;iq}}T%#do-L[粏>`t:$2Q}Je]ӌ۱?| \7>?&Gҹ}{H"  ۲?zla֫oZ@DӇ ?7L(uk GGsPA`5-ȕW"J@s2޹샹 |}õbP&ȁ$5FI j`@N9!Y.ӂ M|}b'z<\KL<5/N: De .&d~!\_b?F9/W_dyu~ۻ.\Zs:q¹&j$a8s{6 \ Kl=cqR~\fj?4έ6):#rYh,"샏zg\lwݹBSrUwT]g\˰NgcH (&2[X_G[K}Mmz{n$䚺p,g@nPblUNg; ޻O^s־yg6T,dXe#yɧ[Rx?z;1;5UUoU}6MՌϑI) @"0:>2d_y,FQSp=AQ,#8LMMg<r!ьLjDA6e}z  з=]wv1NiZz >#~THA2^y=.WdXblAF  TEn#b'aǨ%R(‚@= 6*D9b u81fZ"֛isf"y+")298ahf޺Gh+s6  tb<&i$yی/y;#lD  'mTaDfJBE9?rMAA ?:}xpn I(֭(]A3' P7k&ئ!|08Eц) 'h>C:$ASzTKƃYkC-LZB"h9XmQ"{ Hz̺NGɀK!M%,Ƅ' M \S" g^ 8?܊T\Ў @X^y,5 #]AUbfHi @>Hrh$g}80$x{]['&dqmf#!b~>K X#$O9ϊD !{O/h>U6ZSSZ:ibp1f% ME/蕕3alޞgQ,@!J{b+rm.e*,́A;'c1+?sOۢTIsފ>B W(cQjv mVp,cʄz(Tu'$.LM.}~_w_S绳rk>m? 7HiC1u#,Odt:™F&H_ Н>^d#ӇaETgUYPCFba'Nl'=P`AWuaFDTΏ S\ku|6(` [+T$tg3 E_fg(92:8,٧+K@ Գ`}U)+*zv\ﴍMk:#%dSuOݹ=UlG>-YY}22oCװn=~3yD/k_yȐM`LyALyAJ**  b $$p [aYm +,BS}aqslN6yhrmQ-Ƒ#H8|B"2GAA> 5 6e*#%nrZ||F|]fљ@vVH>cʄz(C VZ ZjaoQiyXavPͤePCPIa|L/⥒ZsƵ j0w+[sKKsF:mq1ƾnn_Y8ĔIz~R3Oi`sјpSddP[$؎n*Pet nuh奟:M'P իRѺ0[#"JGц).뵺A>"[uŽC'[Ě d5ζGa.Wjw+Vgw|ۋ6~i7=yXrBq _T}ϋ<:955xqٛ7O{_NoA@M%=|g~>?{wC_eYpzSݠsZ:=-+'ܱj0;vZv'io~AgޏAwo,5vu8P zh }ޥ]~MdCL +^YqW%tO U?-huX% Œ;MdGh>Ȭ8-#6%6صAuaPrL*L!'X~86؎Feݨs:L}(l* M@LLCyW-y9}Q=pNeD"iu2qgpg) rԌRLǜ,f*(X|z  SƮ# ɸQ`<)ޥMW8QҞPOs$b nnFZ$[ amk5y#ʋy% @?WB;T$T2qt|% Cڠ|SnPmPhB*CFety{^g O[ $>y|ezǽ2 v*!#x AlI˔~?G]oUtmP}߇֖-|cI1A`gIk1a˱h"&钱Ғ%CK,^:6C>Z:r\yeԴIDATUeܺ[ua?hyx!^/r\;8'gi+ -KMVIۭ{*?"zw:Mqn^~T L(G8h3gJB!Z¬Gj}UsH9=1 4 LKr3 NjՃAϴ! FU|Qw&F2X6t(Fn,bE.lM XP:h4S|D9c1T!`\q~ój/Wݺ*|[V&G4d}Pt78FTX kA2mWY7^OR u/~Ř*$dn0IAHչA7ʓ/DGr aȶzoSeA q}b"k-LDȰR l|踖 cat 2 IfS![ ycEȀfy&HEMWctaE3O^ei [6lec_BKtqŗ`/?;<øgFOVM "@mp+Y9l.pTe$s bP8IZuASCFfIr+M'r[ j3$lPil=.%#@#ˆPdt}BdXuP֘6ԉo0-ZAࢃHؐ.0l: 1 oD2DLojtDYc %>6s^l[x\'o{%5Ri_Jhܾ) ?l8T_+M-a$ ^5/l ߟ]KKEr[M¶tLnXs7$ C`@Phl6oV4t?1&EM;FBF]) G1!.d|CD5Os 26ԅ/CuaGyEӝ$oՙ,tr~(>; T.5%6u;$s rt䀎  b`JPuAp-JX&y&[M- Y=ȡ*!ku>hV!@Z. lY ;}tt! 2'dňu:Բ!(ECu$CÀLTLʳK,DyM_Rm;}xJNj9w_T=R~9~=wbvjƫ֫x,,0*eï>oU}<@$d * _~+,-#@f'WG P"Љ}$ 03zYbz>+ 03zYbz \ѷ%Z?|A@|iS5$Z?|A@|iS5$Z?|A@|iS52{ҢYdV[S:dyf*VGNo@NCFH^hm  _m7owOegW,YOW*#!LGH|/`ZO Rwku|ݳxB[zFW>{.{Sr~r ɾO Y;/xo8uw^;#!@G7Юa'\<׹~.@tb'H4ZgqK +Z"%F')JIR2؝A;>4^RVfA矂`IALӤ[r`FTR"0색[+P<$Ho'N{}R?ao?K'N<2xf\FzwB;R&a,aGy 5 #($âA:GL!'@o 9oZs̑Nf- Y"j 0d7v,za4/aUy R A5j#9?(3pHJI|2sgeF}95uhѢq|d|tt bfx󲉙lCFcdPoCZ*ѝ ܿ#CbAu6m CNeVO*23O6P\x,< юFG@%A'#F6E!ZTaE=F[CuhmTQ|NG@ |>- [<~?&Y5/^Z#a>s> %E aLgܨ",5j ڭ1|r'LG:}& g&}lG7;9y- b0HG:d @ ktޜOh<^ h*HƋET(>F5ŧx %$*c1:![=-Mgā3/G:mJ_Aī^ '%ћ|4 'ނCdh-M=hX#&d0\</VO*2-U a&&$18E*LӍV+SsY5jqh1!~5|xRMc!]]=W8=, c CNbjNFO 2l&CpDs!Zm?cM" 4K GGdVg?bB6baX!3CZbkɉ!'7I>L?c q]“k8"|'T>HIWfµjhkͬ ! |Y IBBdd^nA>-֖k.>_㲯l-y" Or AÛ3e侃;u{̱c׮kHU0>EZsr[5lRfT|eӛ,ZoԽknGY` y4(FA 5}RC& }2Q@j$LA $dHI (@&HF1"2QL#@ FAx>GҦ o$||(Eŝ{ t]{sf*)qk{`9A@A`z".J)q߱k7`  xkM]6QV~A +xCR+@*$KA 3$dTHI @fH J1$ .pD7%f֞A@ 23Ad. d9A;HҪ ~K 2GZLOLje274X 2 )O\:S\4>V*a(J b"N#3<4|t#=ioŒ|'z>0 ̒}Ǿgwγ׼?{.{`#iYguᚍF=FF̘$>^=t+JhPQN ^ <#ԑ12;33w9P:ֽZ-f2 !9,Bhh' =$@JD:@!$Yh|zzT0\j0TfaO D'i=.fBkEG@$$J$E񪲏ځ]25u Ơ7`Y5JUiU1v/QOF(F.I4dX`ZA'&պ8m+h8 f:֪I,zk>j!"mp/^XЋj),Т$ Ha(2"Aa"&W$@0ŋiAAU6!a>MZC!D}p]]d#0LNXŷQIMmf< zćrtxXt@gHd!d@X`5+jwb! |mt2pI3A>s2HAA$Y9feءO1}C ]Dw'vbb?IQOb,hmE)Ҽdz\@4Z׍{bJxa\Wo.LJI}S:$y]N(`S1u߯z~P$ؓf  |2bpBdC?&!!H>Yo7ݍoSZsOxEBՁh @#Ca죣!t7ӶZgnӷF)xrS\Ԫ,`\N}IMp,o֮7 `IUVRl۱iͨyTlhvOҵ{H=<rТd &4s8p\_:gm,̗:A _kx;nr&Ojyv{Gl^-+'ܱUM:@2;4_;?4Hu~ٖM׼Rq6P!xezV>:&Bw)K#CC ay 89NZ]ؙ=< YGOݠ7& ^sw_?U0`e|W{ dPX)# 'wA@E@O(,;Ҁ " 'a @Hbi@B 0A w$4 H E ;kFF6,ij^eqLpLT  }֡G)ZfLΪn"T%$ZnU/N>81fqyqdb<1 ䷮a>bVR5o7uwlSh151+OÌ $v^~ZnPuIENDB`dZ/5PNG  IHDRZLViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx} uvUϵJ{u!1L,9 (ll#ǁ8;?(6W~[Bc el$dЁNj9W]3s+W^U}{9&LrJF;S*AG,`#,b4i)AR2 ĒX<aYضƄA&@/irb,hKYb=g*!Nw"UY b5PŪ~T~OYl`9oם ѯxOҝanєXXG*RCFH^$c=¿,!ݓNG&x"J!Pl˄I4JΤL)Tu<2(m;XMV=Y8'[eY-ZP0[V!AP@G2l L`8b@( 3(Rf0>VD{#pcIff2h208!9]AYABaUijT[0BZHO}5أT"pf\ĸ&2w@Ŋ6h?1Md Oj&3mO#S&I`!>~!d]1cΎx;Oa{F-%dkl$<l̆NEU5wNCmuaZ/'07/;)|MO@ۖԒS@\oc5 [N~%8$na`$9$]TKx5.y1auǬX%u x&g?H1, 6z5]״n~"敧FŌv['dBhźeGVž0"c=] #&nƓ,ez7gG5XP0Îpt&v{8A:eVMqT20<ڻ-L#lO$1L+3 mCs`Ψ^϶yKv 7_F6@j7:۬fB ņ$KO ˊEζ]K{֟;h1%ȺBǙeo5P70xE7`3/@Z\Ej4C]֤# #SvmȲ>40/"{_@N%a„Nx[+$Kp*86!ipH2юb )6bF˒4L=?B4LHK?l*u[cboX~Yj~ٓƏ&Ү>/ii 8afWVOwiW:iϵ008N!S]˞i( {e@ <"~pb$֣#!D* iRZ:׿1"%[GW)&Pq NAU}`~Ylw$:{%+~ s`qA2Μ/ ?6 J\7H ODDB\_{fݿ} _~mQqĮf$ ݳ=@>XuG~s_p(pkbl# .!)`??^7qpGfnr- ,Jk~U%'?Rx[Woc",To/9#!^.?KNVbM{ a |Wr]7z݁N篋guu#GD pX%rdwi^|\%;M+ z7q/% 3q ^\UT՞^1?)P'bfġZg(Ѱwe ) @uމg_v~| e@,ZbļՋt@<`c _Ă#}3|Qvs-:X{Ԅ=\vg ד<4axUw>٨]/@'kAG-٪Vp ڇYGQS+Ή@R"5?^qzICyBw{ќuL=< P;hـGԆ\ڒnOlL"PY!9gA8!o/D9AD D_#mfjFӄaʰ@31; ;3 `q3L X;y(8ѷ$;/iP/ `A:_=b@։yD CFf6dtZuc|Ko-}l nZgab`غcwwCmӪ~ Z#jN2+|+6a?Q]z+EOi L|T,0vŋoM*ŷ,B殺HÿD~v y.k$i]yG vSG0TȀR.m8Hc4m݋ۋ-B~dl1^!9B'ؼ׼m{,7 xe ^XLLb$y1ը^NeXDt92pSJ0n?PU(^xJ~4;E;w/=;D$7j]U+VﳆOJ4v܋ߊ5R*mEKnDc ߱'_?{_:W_5{SMbg%/BdF/*M':Jwsm>ak>c6MsOO fkqI|ۻڡKO3=pY,WbN=on~InSwLa@gƖZS1^/'`EK/7s*;ײg*{7J܉{B1w9 첰uX -JmǘMĶE} v#`Rȵ1YYÞ??yMè6;Y2{\DbdP!R.G1 {cSFgLewX'XMSN|v5bldv^]0 qcv_,%|4-1Š(1D~b[o%=˰^{wG>k߹MeZ,`a{sQKG$cPÌ&m6K^u=sNwg8W~.|`+ޱ\f//d1ŵql3X0J~!IkixۛtVBF>'Q d?~bΞAr_u=oU=Z`__EKDK^ereJ.߆nb~,ɟyfs&F֙k 9~\cv*\Fnܕ%GWR}g_ g*bpWO 0c717oƄAíYx # q5~0L/2&b`g`Zђ9 ~앟7t|:ۓ'y ,N\ aCY}a6@I?A h1- s)fm|;|FkƱ_JŴb=lDjЋgWq3!+}-_;k֤1Hw^t 2,8kQ'@qog5x gn_p6N44V;i3| oϼJT(%"s"HLHΖߙND^H:ke~m׻jV<Ə>,?95tFatvX>6*xVY74"8WxQ 8(Ôaqn$pOtDyM~v M5fIw"  aB bJf$*"̒/>J~~Gcc9Vix#)BmxZAX 3;0d!"x$`-Yo}_&Ŭu ZuG`$DJ 5`ɄH؅,>Kl|GF8U-IpV< f#@S# P6ǟ^+>&|WhO91:c_X"+b'"g !' vMV~lZ 0^1߀F(BtISF!\ئc&Z`"'׍0g/*HL@nL'otп=%i럆t_Bd'4]`ν==BThOsK!`9`swv.|2㻟XqEw@mfFO}}{ +:r0 s"(nb808=QiIXt'Κ!`#P~SkAL?& HZ?^'cFj h 71N[XB0+b#3QKNmb$L)3)&bˑq:83؉eZLR| =P3$q\,> PÚށDHI:#'wX L!lIƩz_#mb İ+AќZ[$6lw )EHQ: Х uweʬx",HW/%JdTb'1\8YWi9  4kg{N=$;Ȍ q DA^t2!y%JA@R.7ȉ!P)h?\)~/BC@!@Ү8E܁/4ATxu9VJKT.닕y9!@EA_<`Tŧ} w:#*r|@_Ń FA_|:!O,e!@TRJhۊ!O31gr9!M„` pCF}|I Eڤ\זEZYjT(K>w0|4^KN B PBh_++[|_Myi+W)% O32E0E<>u`qeޏ+z)@#l/_j)J9HReu*ƏS# sdHd.>Nq ;O%')refY^8*ZJ蔔fB(x)JZ AagA'-xqTYISWy!!-S6 aBjRY"wAWal.aeQY."I_+m%dV^ 㓿VUq?>3Sv598Mq"0ˀ_5ÞR-4\vXV9֨*b |2ET:{\(ʢӲG N;d/QFY3pJ:;3 (S2ZU% ;[,(%q)Ot" AEe9UY8NTEwZJRCI8/#d5%#O]LY ;e_/K ve)WM%UP1X;,$v G * [YxBBqn_)n#H;!é_R|_!P4l:)bRJECAѠ%ń@!@Ԯ(hВbBSbTB;(.(!h5(" ҟl-"@G@P ?Z `$^,OsEARjfB(;( (E>wrTVĠ(ɿ"Iz?V6F)K]aUWdioN|dʖ7JYzd@d+^ lRX6 PĕOkeaPITjۯ uN '].*Dہ@dG]29SdJy/Uly?3_hod!L3Ŀ`:T HyI+I(U SW/t%*&yTAO{X:ZU TjWq*QQUSVE])헴#d*TL*WhUܫYWeR, N:K'a`.Rʨ,' ҒQvĩWHoCQf(E$NJ,*}:*V Nb3 rg>2}[iԪ&T$9'OrWV>ϿPOH.6pNп(蟞~}32]ˡ/lF[uuiiށ衲E;d2Fg8t3w ;|''Z".]qNKs99N8婪Tz]U8d#(JN@eQYNU"dC]`*"2vɕw;+^uugdy.YDZKT!:U_~򒯎.y0OU\ @`Pj%%EB|.RE, wp8^~?]x(M*^gK]saS[j?!@dAAp(8 { MqA  wNtRL @JJ CMur%vը@ wPumG;$Y;NEgqʬ\/jjdh4 NF_3t=M~;[S A)˳6\kN O*NL7esrkkۥR؏4SJz+Bvr5~ABTL'A8D!À;ӊtu6 AÊp)T* ˆ/>S0%bd@?(e'YGr"UirICXnW*:;[R;It$G_dkCRlh~@Tɨ9',(%SNI@(Cg D&b*aBwΫPqQ%BڥHP!U0xE9H(rٖEA/D9ņw^rZr::Z`<8rU\M|-0LuWTi,RCE F *Ks0RKce8rTSP.+t\*^^$U 59_V)wf0t@ې 6@nt)ڮBA-KL~<_FCOenuZvaG|]m~]tBc&T* O12BǕ Zr'%w>'Mus${/bڴso6u9cx sFto"WP"X8\^\s&/y`u\]v!0AMr.XiZ  k6kZ'\ Zko"e.:-%?>X)V`a⃼]@ @t(2 0'Jr鴗ZJ@;K`ZvNB84`L%HDBP `ao%B lЍ@)Э@)8jtMͤjd%#~Y'F{?kێ_[b-11Kk_]fx / Y{R~Ej>5ey'$ۖ,\"}mv5v5q-Ե7/O^~b> Lf&U!q\EnIENDB`d|WA.PNG  IHDR|'3ViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx|/BE ;`b/(VP`T (EDkz^^ݽBHޒ1;ov+;y<9i3RҸn3Nkڰj=z("(@Pٗ|ݶ?n:N i|ޣ{+%]zѹl{URE@P<Bs5z{3T,vUtm{,6==]nNN¦("(!"B7<4MEp.ݹ1*nUK)"(deeыݲS?㸠VeW4SPJ4Ɣ6k! /6'FGJVpQc?uԅ nݺVZk׮]BBB7|S\N;ʹjڴiumР :m۶Q<::vׯPB\ 2AϘ1cUTi޼y۶m]Je&+x^`AFFF&MwYȞӧM6C ?oAV 7y  Yղ.6r^P(ݱcu]r޽{p V?~MEթS>-^Y^ի1H0OKKk֬W^ {pXn W\k׮s=^iݺjqiΝ;6nxp?=~ի)ȥ):Æ ٳ޽{7otgIJJUQx|Ue?*CbtbQ:O2/_]v4i'lY4zw1n8OaE# Nk{N?_r>û;99n!F?L_i?o޼ʕ+ MQ5W~g]fͷ~+++T>䮯" O g.lРA~ tJiڹBb"ONHҒ1cp LINq 9E`j̃;v矅UW]ժUN:;yI* s='4 <3zmX4jٳ:F]z饴LTTvJ# ^+i_K.:m; SL6mگ_9**Ζ[oeiBǑ`._~g}&ij10a8q"SoƍO:$T7r\IXɯstzۃl<\GY]Ao[+"rx1r rnݰX,]Os՞={\+yw=X,s̡zvYri<*ڰl2Nc–=Ì #Up|M4lJkgΜ 79=}oz$ klJP+ &י9˗ss3_;D?{ǐO=7t8DC=$Ea "W^y'O18@Hp{̶!@$3;?F) e%Ɠذa%\Bh[XXO&jɓI}8"0V&ɝ\ۆE=z_̶B}G8x GqYyHV*nڴ X>#:u-ȥk޽[-1urJeǗ_~ꫯ}AcSvEA:LJ~m(v4JOuAja'Y[A0$n/^L&cG5jcbb\+9}w 6u2 z*9t] c$0 #KL^0ڬ00xu]k޴SkSI>/ۥRXJ&f=08]%t38RJx:HCH#8Q A&|]d 0,XNӔ4J3 lF-u$".7UIÐIjժLNmŊ4 ٟ:`|_hq)usΑ7w7 1skDctE05-[tm?3ȑ#;zƒ"@JS߉" %5g:66^vZ $"8Ya9lZPF/U&!(sv3j矶rݷ棰RKꁅ]kZ$8bR/bH#C"i$ *S$+s =H(aq75b/u`aEDD@6@G$@p&Q(i/E87j󂓯aXW*r p )g4S (M&w :ҝr "|L@ 10S?+V;0_ks^@øs7BƢ&\:.>9&$ d+;3Ca"F5͒Q@-y_ nΈuZl"&LbnE1LC@Lpi3 $۷  RU`)W996R"Pm[DE 5pI#f͚8+2'| 4بW%pLv)Ml8 >x_$k`LTV"Lcq~RNHUZr+%ؓQ ɱrԵ /5 Fo@ ` ]6mC>?:fy_cxlp uB(e pӣt#BtKCEbaûbCfRkLlyh  9%/2-\L0iCE 2+jeK6 60 CJd:;erDt99*e9E ކ?ƙSX% 1:KچIZ^lN]s50"{"ΰ]?&$6 1s)𢑼.,܌S:)N+']I 0Fp^ғvewmΘ%@ĝC: J[)׊ВyZ e"_V9OqKx d|i X" U`˵H\@99q r'SaA2Aۋ3uG^G32XDX(|(nlI>t\o,],S3F BtD.wWPHSxпIؚLI ep24^RCo3a2$aH`G)l'7U-(_e_5vǗ%?`cX (y@lvaZSz$ _tr5rJBC "(@G@JkE@PJ .B׫u4Sۡ(@E@ly=+˒p6~"(@I@E- 6("(p+})"(%BK`I"(@CoF>G"(@ VpS֢("qT-7v_PE`MkRE@P0׮+"/-^6E@P2jex늀"(ŋtoMPE #n|"(@">[kSE@([_("POxE@P0׮+"/-^6E@P2jex늀"(ŋtoMPE #n|"(@">[kSE@([_("POxE@P0׮+"/-^FmٹVBv7++ aaaE@(!vZ,!f8ꫯmfO9ƍÚxwF/k6!!aذaE@(!O D7_LKKkѢSs͚5hu {YbEfͤ8iHH&~6CE@(*T-*$K"N: :4y!vҠUSѢEkN!}XۦE@p"G)E ''ֹk_15wyܹ<3f0ApziժUwޛ6m&}Wo6;w!N>Xj:vHE(ըQ #IN~$mÁN1e˖իWoҤ̙3!ӧO1cƀٳg_|@ԪU+J/B[A&k׮2QViE@8hs!Rzr,YY1uT_xᅭ[;J*ggիɓ8㌍7%?WSLL~J*Q| _C yGKѣ6'N4iNߥK&@ۗW^y%7ժUcpʕ+kۚMvÆ ۜ9s0H&|?*rW]c6]mC+t{KPY !gꫯ{wݴ QDD_Ϊ⮻xB)˗<L&L駟N8o]j# QViE@80aiQQ9do#}g#ƸcccVJo`;ͭ[ffl=I[8$%%Ǖ\"#N4hвeO~:z0ZB43$)CzS(уl6W4Vi*qZ@tCCEzi򰐰@-Bd~)͛7=TU BV?Z]LR#bD5zKihPMB H\hKYj1A\!p|NQyͤ] &kZxhiO>d~MLZqJ&<_z%3+Wڄ.^[=J3ih=Ŗ 5-4~FMJ"=ݒ0 rf%|b0̘F^:i)HQťm-+E01Ccz1j&EbCX+¶I1J 1Bdɠr*i7/2N(13E\Lem=iӦYg+ l 19TtUW! \A\=VV{ A&p!i-IPMA⒦MF[pؚJcϘRx0D/MųoD)"h "7ni Boa_7ݺu{7o&_YF-LFÐN@c'&P4aHzQViE@8?PjH.5P;o11YɐmTD1ÕV\9U6'*iپh +Q^2>QOA8dTT[jMtʚI;9of@ 4%T :jUE@(ZBxrSE@PWԧ f*"(E =QPE@p"QE@P aU*"(NTub9"(aA@}Ve("8PM׉("(X,SFȶAkWE#j^.wE7DC{(@!PF_-q(Il\IjEPR@[\yTE@Pj%ytm"(%q6N}ELE@P PM7Hഘ"(@E@}ev㊀"(G 5C UE@(!O 6CPE@j> "(+uE3E@Pj%h0)"(G=*I("PPMLv^PE ԧhZDPE@(VT-V2E@PRtK jE@PJ9)"9-rH"("P[Ā*;E@PRtKkE@PzT=ꇰ:.4(Ɗ(Y־dddDDDXs}1SD/(n!!!%U1Gt##==;''5%ZedddhXQAIsV}w޽C?ɓUּys[_~eժUCRbUT{a.] Jִk֭+W^hQFL+?zɊ@vv>o<' ĉlB:::c9*VhUdnO<զpiӦ-] z꩔5W O23t^*M9KS t+==}Ϟ=E $3O%-;vUg޼y?iH"[jU {W,YiӦM4q'uԲe SWe>D M rq'_xׯ0`O2VZp{'XEs"-/_}oViiiPqQQQorC=3\r "|} /<)ԯ_?!!!h&GիYԫW/lyLPd%r't+inkB Hhڵ+*z{7O:G믹D{\ Y#Ecv%(ə`ҰaC3A40e9d3)9m* -am۶M6ĵ6)4I$&'m֭۵kKB+4cթSm۶sΕ.\z饯򊤑Ld˗Flwn}̽{^ve5k;zhɴVg+qw2KbO?J*a5 F;9s-[@,+KD_\zVV6l } .1cFf͒hꗍΝ;fӗD̕ε& hqJuVjU:_~9G* It IDATf{Ӕ5 ^uU AZlq:@Ik~ 'L>]"H?ڵk7nX',O)R J$0Q;^Z͐rЭCw8h č9 kĤIP[ I\s5w&?&&sݺuy?_KZF JQSr.bp.\iu}@NH+Vt2doHwBv>eCa_V׫u2z@L2fef̤3+LL#MNՄ:彉LMAo۶vZlkxb_}3щ [wK}3)8c{iΨ0xb3әE~3g>pfcgCaä.GAF뮻βHO>DDq0O?[z0EmI}$r ^S+9眃V<#FV&~q`ȱt^BCݻIw֍4lfID3E%DL$m۷// U$dȐ!@[oA tDr-BE뮣tE^:AfAGNӶW_}VMh%|  &nhÊUK@C5Ӥ8Rmo#j>ycJ#t]2vXbFp>e<;wF~3PǩJOg8  i:G9FS769Cײþ:(JjE&;vXݷёjɞ<;OPy+{kA:3#c-*/K/TNpb|fF8b ?sL .k򌋈L-7/ʮ:g,,h tCDF,k4q큸> ꧟~W'tAAdX{HG RiI _@*.L.F5GLs<(rQȔ,+8j Bc,4 p"06ruԉ< #lHj#PpNwnSO+7 iETyn?#/OKˡ wk FKیkɵ/`[nZ4ZmO!Ŋ.:;m6&F6ސ4>ryc| ] "mrwp/YEGCM,b5 GY ԉ0Ol';dz;%doBtt]eR(~bDT3ff0ѣ҉6~iJ͆3}X8!eQQPPLX 7&Pζ Ե:wCX 2{2 Lg(:LsXs Odw}g1Si+tSl .>`h"'.(DmѢI)+!evKР`[1[8AX_YEY7(HG蔵kU;/!*2)Rm!m͠Xo`_v]yLt' ê"nk N1SBN\B{ϯ!+5 oV<=L~!b"080r" 5ST%[,aiqYL3&㏣J:;sLY%*B2w`F*62S :u$B;3p@2/!Qjl(p&T`_(4*r~1!8PւV)۾}{Sk4*#HF2Ԃ[Oop *(+ ƜN`]nEh ANÄ"g͵J6'|O3=wem#Pa-r ڶlc.F"czJ_25$Ȣ/FvꃣUU_Ι30ƊSȰ8R@0Q](,(9 VH>"Df?fn:m gmL>i'/9Ua+5ͽXK>KRoF:~%$1Fy˖4[,PʈXf?rF,t ]$nuaJc|0r{G]XjQ (fa+dƩ(rC2Ǚ:91S6{86He;嶐1 zdq[-9p9"8D,FZ5H|*al O0>fF%>CL&eeZM6Ly,1MB&:a)35m-k' ?+!V"Z,2HΰAN5 䁯W5@G5/Hd 5 li?|b NZlJb@N#XmP+ nfRLa]Pr'0/cnz10,҄ۘz@cT4h4x S"YaP.ZS ='8/![\Efcka=I84(e`HD794cB DGo|}w}7KJTJc$ SaJDK)V1 /4ʜ:G91_Áw5?WC_9U[T D0^^M8w7 I 'uZ Y;sg!/.Z$yUhI ]@,B)VQXE#\)A:XZ-M@N+p@Aݸ Yij <| 2f?f#XpCJ dhx >DYSUd5,5|Qŀ$sF-&#mvȵ/mTpWÙSFYpXc᠝ViQuC1U@p4m.d[18&E)tw$cMgXb 8hb \G0ˎ|%njjژ&%)\-`fgݎZ*0ad hU MQpTEk.#k7K..&2~èA 9p|*x Y!粥TZZzn,[%e1uBwyWvl \JDȓyTB*0vpGhP1BHtK줎s3xWY,!qK X`w !4{!Zśg;#p q$xevW_ 2˅ڽ;6juNF:t{[vֻg~֬%wƴЫN]{]٤o\~/s~[wqNSY\$)"p"P4.~lH/irV I4#B$;f$ʼnw,/"WcKO VX 8F" q*1],/}Ó7%h!L7/=ʅzq4ßP5,[F7G<'wh>n,wa#zd]~{Uq(bDrY 43N8*^ABRaصI$_BoK9bŕ/A4?eyxC4.o%oDJ;/<zͷqs"B3XOsxR{uAa\~1,sbIm>9CnꕑM ]dd#MJJ871t?K[6 ]vXM8⧈]|DTFy:8@o+iS)j7iwf̜u/ Ad`jgf:.Q^NIԮUX+A pB8VҒe+%իU44dC-v<`ZփopG⎮b`H sI,9|0f,_I–? ؐUWW@`esicsyD<[[*_bWb(lueRcVslnv)GiCiK%b۷mA8%bsTTdU,t+/u_샱HqΙ@k^ERxh0Zf~*!iƖMϴ[] ~~>(' s~CZ;igwt-G`g܍} KxL$Zn֏AXYI9a%ai-gߓ:fJAg# 74WzIӊ"AkG޽{$BP {K{سfI3˰ʫ>\ VI)`Mh WbOY1-s5i{t$%&ԨVe_|O8>饿{?6k8қͺbXrEB\zaɩwտ~I\V$Tʤ'OV Nl&1XǐIag>XD֯z]I_2nI"qlw"2KɄ 8)AƊuT͚ z^]E$@v_}W;kd "0V.q3~Rg! ϶"qm [1)¶3;!V5+/4d:)e*&I6ӷը@E9w_`~ˊZ`oO:e_vm`(N$3xzZCխ `عkwhHheϩTޤM-/n߹zrZ5=;q`FG(PY i|]MnyHGٻFzs &q7H }.Ntn+(4HYx7I2p17ja|vʕ aZX "$ p4`n9\㫠wmk< Q7<K0ÆScD,1X3ZVlK5{. pVҨ|6R ʎW/[cC6zMp) w\b.ŒOr9˵jU]!`3dzH|\L9}!9!\K(D%2tmf}}}HlSWg˻~g ?#gk]k3NJ>{]wrldb1__v `pgnmMSE@Cؙa4EvG蚳ÛKu6nGW }"!StLtx}<@a̋UNbB|!H6fC%. N3K(e7kؖ,76z?tb0}~C[w`AS;kC7SloܖHS+3M\}aNɁFZ90pxckZ(VR8LS5/rbltRIvE.Zi9XT9VVW$BhE@(5 tQ>NE&m޴ɹ/XhdhhGQ=߫E{΋ cg!Z\_tzsqvWf?m()pTX m-("p##bCY?;'+'';+;Û&a èصpWB&bߓTOɼ7čSlWE@8"2a#wlU*}rjG<@2M";ӫ{pјà+y#Q9m)xWB?ݓyRds^/4("P8(| ˵*xBbBC U9?ϡ t7G,^tAë[chDf;vl_v5[J1.R&>Ɨlj態׭S3\|11O `0ﭷF_c|xYCyuzsȧˆRh-e]b].)|{׮e5SPEy9NxX>F_|I҅&&M]B\+E'Oyo8vZ>;=ףqUdZmnN|Mu"z❟ӳvZvyK%Dg)hFFy+-tY栳R%fCC;r&.RM("4AtEC8f ?DŽoVeE/ߚ=cmwC%M΄oV)%x )N]Fi:E};n3~nٱZ/N[ڶKMDHFUT Oo!e,:Aed3K6Kp]vIesAGJgcs IDAT>￑lrC$}F3f}O;R`5j]vM۟ܵkgϗ7! i+&IIkų.e ^JXaIqaᦆTOI l.Ya}iAE@PB"`}s]}_Vbr5+'V*/irVFal}j+bL;fYMg҆F0 Fz7mr)"Գe4K!۵{y;f۰Ԫž;x1 ?>Eɉ3.I$̢%EF@Bc[LaC\SBNr"N#rYz)UmX^D"Q MzšKNVX>]səLrvЄ(OzFνaweO U.9VxND=[7vBƥۤѱ_ؽr)orR"dQ}/8҆¨0ϓpZFT߾|f͚!B ÆծU } 2duTe[Kġ3B=/޵-] =?m^il״|~ϭ]䦍]bUTp 1ɁzuII9Fd|jXbIN{@8L9vz('S;^M+"P<$X)'DxB=9$S:urkkTr 7F0U*-YicEG">9lh ~vv6nЃ7x_۵64B&qtlӈ;6T8V>$A?JvK#F~Ԉ䕫Y.Wy|=H,Qy7gz7f9g vV9"( K_ͷW3v%"\ qW~ſhOZgԤk~G£|E ˉ_|9!Y|W_}50^0&8-4 Ͼh\P!yؓ6n?<^ hl\ըA_ojUOPd g|A$hTfyeNɩSם%:K0U!'zdbN%:,kYg&L&x̫ 5GPE %.GvHnZ zW_}Cw@ZY! /_ O!nypVV15kTbW@FEEXV4tmN+KWlٺu˓"""ϘlX.f'؉͛5Ƅϛ^S3W+55Ӊ߾:[rcuyg}q^ڵ ש]sUiS,\g=X'm)TIte*B7..o.A;"(G?|{B̎/իV%""+d~-\&QӶi78(&&:%m5>h歍Oh7G[?̫5VeإW…ƴj?\}* |~וH7ݷ| ԍo0š$y/Gwv});^}JvVV71gծU}i6zleT^b[3"v=̩5sg<ŹkiE@P|G ݍ6H+fݸCD۠Ȗ(|<۶X޾cWrRpR+ir HG;wa9OLϒ1o[fMV5+UfgڏХwHܭPnQCu)@)@G_AWV2BF%E?uz m@VML/"Pd_.|7CCBjשcu%2LE@P@aO.y݌Ԩp{Ҵh&G%n+ܰcoD|HU!KN_pg! bAo"iV4{ ^50\DD A2Lhv0Ol˼"]ĻCˏ*xׅŝ/"=N_߻n.]֭)/:Ƒq̞=g-c>kk?WL-[AH D+AW^rƒD/ŻS"cy'&X*3;=4,$4$<ae,pjwJkCNx7Z=Dl,Zo9B('Nx}Y@ϥU4k29ca/{q77lOV>Ҍ-Z zYwq%a% hdG+meƌ̔n d᮫,Ge AnoB .`L֭~]z߶SN۶mΝ+9/2J*a;/_zUVe.Ll.IbܸqZ+9ņvgU| J?S˒ /ly>|8vڙ3 #tCτʕD8s/_N>}d =f$o 7Ⱦk3s̡yo+ +i!zjap Ops>CRk5NVӧUW]WX (+wy~85+gҬ1e,|r; 8sb N_~bIrݻsc1zH>lPwנwx֠|䄄"p򗒺'=ûa:hLjסy( l3N=Ԩ($Hۻ ?tQJX$35e*Yr-zUp :HtבemXb`\ih % A~ s:a>J%w+խ[}D+Odj/@#4( tP.fC~ w}0cjFnҤ 0aB޽4?8;/A^ZH[AˆqʢrP Xl &ƒn5audeW5Wi?V$J5>99d*ey_֎**zU.#V } & faf(V\B2}X6) F*NqwaÖ@d _n-T!c%:}…ճBʌ#QL@Bo |+Oa <.WP\P# yА@*>z GZĚoA+Xd a|Z*Il+1AppͰ7[,BԌH 'RB@72M+$,zidbFwd!C=6Ku8")˭L.hTիqޫBﳆjРߎ$5 4%_ !dYX)}asA-ZDK\ AxvB#C"<q*.ʃsW2T{>Caykҥg,1af>1l/m 6 ̂&hЛ4 *Pv࿠?(]fCMGc/8 Qs)UPlDK:̎5}4 x;/nBcNv̀" 1{D rwd!SA4ZPry)VYW *dxY>bG4քg͐A qOHG;\_]6$x_p?]ؘfR zxv=)#%m/2s_#x t]gŘ\r.预aŘ쇳L̈́ a5P,Yk\Ã姬_E1l"q(xde!J͖f_uСr ŝ^B !V풗MYVW^y%0)ljI34cFcc8-~p]/#J$Ij D{:+ Vׂt7+tAqNzrlN12Av0⨹ `S#+X90[+7ks j%6Uk)@EHe(!29et\5JL6 7}%}` /GK>ڂ ]ؼi_![7&2ZkF^Zø2!;JlW,K9p 5sTKS-1.6/z4w~՗] ZTnˮ!q /PypfyPPJ89c/hSS#ӳ3_x+1w̌8ݹkOmD_H['%λ1wsWʹ"݊YFh-RfӘJݬv\(^6Md&CWqq!a9yFCLԨQEfl̷~_@=ѱNJrإ?_\̃E4?1%~]&?W"\Ea }'rEWiae{zEnr}CBCs͵z톩ܽgoպw=Fo'>%$]2C=XTѶ%U E@PJ^V+v0=Jշm)ajTۻU^|+@ֳ{g~)RIYZҴwsRRRd=v7]3!:?%s 3+_t^t7w}վm }",QykKk_"^5#psރۅyrBZ;oٜKFcL"#+}=#"#³GGOh%+$[akB:<,,IC>4;VJEt]Zzs~]`tj'jd.XoLtTbB94jU*/_M+6F§tFGښ {-tQ{(G P25B:*?RaaXAkzEIJdg{ld]&G"kt/l߹je~hB\|}_.>nɲUN)+g#ӪڴGMKOf ! Ϳ#VG]rGAC"8\_Ƕ,H\$aX[=b+=k-%ߚL@OHcD$Zߋ۰c̿qFEElr(/, y64ě+ vH(sמ]ԫbtٙ0,Ya)II-Nn}>~u9|d R44(@" ̋F5Q./"_zm J !lq&-ݷ6*Qjwo~ -y/&@Ʊljo©] 8wOJL@]v=zcjT덎o9?h4(BYZف?9RZ;REx֠|`;vƅFG&Z"s-DZƾ|g6# +TNvOA>,D۠OӥC_3~ǎC/Е^/M +SRӪTг{Ilҷ+Vnߦf׭]ȬoA$X|s;c^k5Gɏ>AuJ"gϲVq'%+x /UAVzE@P" 9O橖XV%.H#J9J|6QUu7yjhFfflL޶6Ar >"G#Z,1Y0LK" @'ÙKc/Ry.7T-<"mKl?#V!H7I>4OD5ȩ@|걭a^ bU\XcC<M2dx|Lm:9aaLkPdWa11£b}=YK/n]n"{m;E#8>T >$q,uG pXZ$tC"T4@;|'1?R+@ @O~WY8:2CѸeBCy;(,$¼ :7t9"ߨiAE@PED#{.{uV2H΃gg3IʟR("P n^ .] _G"4'4,x\v\Ԍ#AjG\U7T}}>#W?$|[7?Q[֦( %N&>YR%{Q #/{P5ʾkڵk7c arӧO#.t'Ne˖}Z׉> IDAT_yO0᯿c:tw~ԥKX=+"}I2I#?b[C[Xe>OT\2,cfϞMd7X\0TO<1w\+B jj?E]ԲeΝ;oذׯ+b}^EE h|2=y6roϦݞ|_8}T?Aƍаb:kI\hh*GHvT{?>I ٸ+d^j.^gª+.||tEL- i^=x?Boo[͛uo \ҽ_{A*xb~MrիWӦMP F;QF(oFǎц-~yȑ:ubmL"l P~}kԋD$ 2D{!E8a_F nݺܺuk+[Đ>"GΙ3JY,Yg=#9fŀ|WoܸW7ʍ_\Bz뭶z(Edx7^E=SX1 Ak Yb Zju7#U&WWPJAh̬ oZO!ntm0b2 ͖•<Ʈ(l& =_  @ePHm f.(*ӕG})K"&" -dCo[RKE7EFPT[J R(#F=c̈́dc5QDihwqD5damSܖ>++ ˭_V$NYB222p8U|cZ|⹨֢2VS&S*ZhY21hQSy0&S"P(JnFit V65#g΂?<3f%SS cfHw1;Nz'BL0f[Y9# 6l͔ !* pNOd*o _/V2 hiY҉dE1epˁ?-/{' ZR!}c0k+sAf͉ͬ{1^1# JeC5S(xvq0vm 4v4lB]v%zСmW^y%nk֬!-X*`5E`Ҥ4(ņ@E _YV6N>qqqa9|燐YGs (gB`aȋ^驞o#I{Ł!(6%g)ϫZzC) +C=䢘 pele#0D,jĶw-VqV ҖaDvIOEς$N 8Ow^KkxmjjʿԱs劵3gf-[۷ƝԴIMOguy6]N3Ij/3V^tqKc(o\LҜy36mt^=)̕rtzMMeI[n{J&-Nnϔ>УkٿvzujӥCuwol9VZ$Քd9obLe6]+4$U$&/C `@-ǘ$#eg3'&&/H\ȸ+yIQ{@A$ , OL`g^11 πE0KD@d6I﷧33՟uzꩪ_7*ą.W(CP4:;>ԑ¢BfwqɎ|4ꄓ~lѿ_TT8{C :x۳\>} ݇WZRr#v톽Z"A xY2-Eo{a0Y⒲<&v ӈO;$J yWTtc{aQnNQnQ̠QujX]Ř(_.\W^k'!Vet\3KB (oժUxR2 { h;H"딸B z_-(h>z*6b`w˖/ӻ0K t_/w^1loU_b¢|sE&qYC-_\4yxkn+\zTA4 r4Ǜ3"rL$G("㄄B% zQ"}]hϦP"}7~8h۶ #<>W_TTV5`^'&> fIyQ?^r͛9\3q׮9W§ے?$;;+9 Jt ?氏|5o+*w֡1uè!9U5;X]e0Q BH:݄t+ 'wdFFf IYԧW";aYYUэJ7ge#ƄZ2),'{2Buh7UE!PĂ":idlTe 2y+79nTqNX̅/2fJTIݱsn3wC1T( !0npΜnŜElf S8ۺ( @CjHnS 0؊]5Z.mq @ Fejƨld2܂5tB@!˪QbՔu:}~ׯ9nFVSE eEBu@!P( 5]0SE>;RY@Ey̪H!P(eը%tY>ǫySf&v]/+B@!HZ:@]FZFI*P(IBjB}v9X;t8KRBw B 4TyfM*ҎZ]B@!ЂPnMM%o]OFgvеlh RbyTJ'N(LhADM*0ٙTxiOkK>>Ćo/?+۶m;tЃ:h}i 7Y~ ˖mg>}r9I'?-EL+~_)d,_eDSTkmsRkж2[nOO^y1VZ{xm۶7xcɒ%}9c{)p^EET3fL0D_L 6l ࠎ^z> ijcMիɡC =z Хnyd/g=O>w׮t`y6~qz]y\5׸^%6ݑp]2Zz됧ednUbkUkYkmk֬Av|yyy6l@Lr/" -qRgu>C8UQ՚e)..6!'n޼y֬Y03vڑGIa.!qW\,-^ft'tRyטޢk׮8㌆v[W_z}Ae>p͛+W,e9EճX7^xaGiFN(,,B7e/w.#o{:k]Zi=jY#뫩.~x4$86/#ު A5D FNNO?̓x'i;ҥKkHWhQ㈷J!>/[o 0W_}؄۷omI 0Ns[χax|ICqX&M:Aү:u;oU{V_K} j~(d[!K"?|7{.. b604iT4i]6&)rlzXiNkGV]s:mr][;8Hfe,-UP rbT;H = Wʭ[8pE9眃G?3[nѣE]dΌ%m킘:"//y;HsB3L6 N7-[&*^|ŘcW qN+b\ѹoc5l;3`zO?=CeL0ykڡU%߼]gN_ͻ}evھe9dߘo1i͹{7K믿7z!#U\cYfH>ouN tHVn-mڴ EL!;Es=g2q/+71 w =wqNj/x}59KM,C6pUTU~]#J 2@_VN4@4啅Ue*cR'$~]OLt>+E^(XjU^5h3|=}/BscqFs~O<.KO*rY0EbFi.+>Eicr\4_2wicEAa:if@<СZC&w=fwi*?|4{׶}!;kVfΜ,iAd:S =}t6bLp;E@d2$pO09C<[Xq,(Ƴ"&C?#GnhHv͐n"P1EӅrCVBӜYN{z ׸+~C6WcP_p[Ym1NH=ֳb5j"(~9wމ. ʏ~Gy(r(|s;wL>&\>5ErEbift_&Lv BEy {0d638Av`m{OLOKsF`#Ƿ<. }r0<拠nl̊ұ y<84Whw5Uuʔ)>(fd3Xw"X*M-L(BHVկBӶP*2&b /&qR&jdڵ-ZG*}j#5Eb9/<jVhGNmtXTD2s`m$i(4HPtÇ-&\.Lj/:o;<hXV$Qn"xȧ3\s >*&39E:J[۷ q/RQʅ;iYa_%Z`br0Ce=g'Ԟ۵pi.s8X<@ڵdϻfo#Lp3@s `U<,V zXC=O0uR Gx(H)ߧK22i 2㓈¿k4]^YS\VmlH\{$$./2d*TCEMEك #A'dUX-Qė^zi%!]T'v ._h]4*>]vkN̎ 3f4"<#BܢT1K` `R#'0B,uYx!V.\Hs PcME`C@'Hj|@j_ɚ|-@ӻu6!{3V|kv j5&%t0H3%e^40=\׀ Eao/GW1Gl5$ okՊV*6ȹ.-;8?rDX{%k IDAT=]v48iA0FM#>=0/NY SxcHBbS7Ah\EİM2z{$c6p뭷tM|1J(fAi_|wL`[o[! Bsu}E'~JBG4 ;3,<2"Da𽺿t]Ǡi55ZsjwIxX3QlȠ]A1ZFo8#9ws#h6"!#*(0aO`ըB 9F*oU R!ƕ7*n9"=57rsJ$rsׯ_/#3fbg"8"#qOيEH.1dRE撙$ h.hf`(i {R~}٨49./%?-y次] HH꠱L_e>3RF#qw@ҨB 0ݳƶ):*-[mik-40ġ1V#biHDO(C@\APT!ƍĉeR-9M` E&h"{/ ыts@Ũ 3%/nխ~t_.,\fX#=GSGF"Є.W s\NףB/,@sC.*V[5SFI#w(-C8Diڊ)0z-bx(1c>mW$b%ٯǙg i˜HzBލz't}lisrA |jk´yI}9e滟8>TLva{?SOIْ z .s߱co˖-ڵ[xq~ȑ#=o|ӻ1wofӦMrQG;_OpT@ Y[ZĨdIܦ Yz?.袅 6sתU2R2_yyճ9BE5t,| &>I'Jrt-^{/+wCv$9t>UTpoQTRjP.ի׃>Z%JQ(qCon֬Y7|5k*.)j(#z-[֧OP2tقx;'] %n8W>) O0rol?O޽: g9w}2]>u9_| 5^ f k-_vA)~C:,"|pyiqUWWcEHbP,y.?Q9Ig}т\{7pó> wqW"HMEYGp- G瘾=iӦ1Q`?8]LD"һA&u]5@#) 0dx{챸yF؊|Iٍ_yl- SX=np;lZN2;bHFg\Tk5>LCj~\R~'"oV/' q{饗"`or)AKL.gffn( k8jԨ>4mbnx <$b("UW],9/"|VV#(B\hspɄwFFzLƙAEࠄ@F[EvV BCvshi~|Rm ]4@cbI %sv%QsE|Ez} )܇x Ѻ䂘oL)[!N-Z$?mSO=Eȷ~MQU>mڴAڌ2-}& Pv 1.`DXŠ4XH4E_L, 5 W 2TrKnQIJdTW>Ǡ|-3¬mΗHF,"0b)N3@}^d2`V { r*`nmOj63JgS"`U]Ԇ71̞x㐸32dQh̡80”Dl·~{ZB) bĂ(=( #؍7E?>P,\O+mp5~L:-l8EAqd@_(_GC RAX# p{GA 07^H-2:Lxd͙i44(>һAQDcMLҳgOR}^88}'@FGn>]_Atd4 4!T ?9_͆t|~ؐ׿D'XW|u"a.;\ب "EH ''чW^yH;ȋT'% !N󡧫B"cA/F0OE}8qg͐W+BƓ$"TXdMHtbB̚%= BɈAƓS9BPD`U'":iNI&ؓy@\˵Oa[4s8GÜFB}?#A݈ ̨F178yK|y` 2H4&ÚH3 }mn-ZW\ȒLWAPWb(趿d^Bѳg$  gJ/[NNNP@|LsfCB93REBDa)5Ǖ&/5U2Pot74aɂVCaAL-j4D儖E1?0A̖U"LO&Ҋ @(UUUhbf>-KIvxYPP9_#H40 xy‚MCLd*lU+`~Yz\i9F|t,2#[Wo5$.WNvv@M߯\I>( .LkrY!p5t5^f5:&t|mHt}7ih6&"6Ӎٶ.*.nI"F b)IWU(iw8seܺ^¹WG4Ȥ2ґ[i 0KUTUqx>?q c&]c1s3eLT\~)kãB@!H<8t1uLiXԳ/Ӈjڅ` C qnX)"Gj73* s*uX-Њ+l..ufK3췺B0s2/@φP~!S}K0`VD"]յea]T5 B`o>a¤݈MesԠ ːUEg;C#[m+3U^!}Q{1ET#il`+]A};RHxLDC4`;(ki6 3W(teNGTnkkmْj7BD_3 ,%2{WVmmЊ* ћOT3Ss3K;<=hѬOy$)WiUDYVU( x04]ߧ?6Es^e\fU+hQ@ X 34{dj~hZY:r h"?~8Ku`{lj1( ٶ M* B!P/n2H.Ւ9[٤%֠$ EiLt.znMRcy0Vb˫l PRt-][1ÞZ+.29\9#Txs~#=d\Q* #Fӭ?S+Gh] `zP]Չ&&FH=jn6 O>d\6l_9襗^`x>dȐBh׳gO-*u @ۧ[g I&|;6_j5xs29Vfl/{ $res LKMx:J+7x# &9rʕmDWы/X'e]֫W|PPRN@!P$T ,mʼxbm.BIąOv]<940L^=9Xu־}nMG8p`AA駟.2mvwY貅}O9N8s9gʔ)>zUWu);k,ikܹ?<}ݠ*}9{A Z?رc۶m{g&: "~ @tZRħkfpݻ]Rĭdi]Ah٦y4ݤhRV+zbٗ޺ukE3L6>c|Yg!֬YftN:_^4wg^}GXLl5˗/k'Od+hC=OC1N_BD֭[7oܹs(_}2Qy>H!PE@ÖFɴM?/g{< L_U1\'ICɺ UncTQbQHcYk(H3gz,""dL*>TnڴL,Z̧vn gqaEf'PμyPae1{O?$^~e/^/ 4B@!@Ri[oϒ\Nnz2]xv;uʺ*5\4/v\* _,1Mst"toc9k׮X Z-2ܣGܽwy'Edse8[g]i}y睷n:'fD_N44 J3Ahz̘1BB@!5.ERevﯪA[:Sm>vnmPT Ϧjpvl?p}Ū(EUj'8,᪓>Fѿs.zqFAFl X'I)feHȁ8FcILs^150fڕ`YBU[x`7UE!j`#U;'?)l6Ok㩳?@gez[c*g¥'@EGΉA u\6 $4uyúff z4:*B@!/?Yk fy47YÑz*GŶe\g:dƷ4Xor5R(IB 4][l9 RBNoSؠ ϮU]VFiҋC^( 4 ӐjE!PĂXBiPrv:B8GOs9֦ےm\hd՚;KGsB Eb B ,NKu}ȧ(6=?G6eK%[[/Ns˓Ro' @!`+J>]c]&KLy}~TTko`IJT;'y앨!i^wP|oqEE{oM(978J84CÕJX"k,-\:Ϥ_Hܿ ޖIrT[Î]w-ȭTt0J5DB &Oׯ.˜7㯩h~-ͱC& eU2 c[[gK.o"P( kK0N>ER%gn]{-ٳS v[ZcRc\g^C8[]s{`I Y'zJe I=WU @E 4]cS*Do ~dOێ2sqn!AUFaa-EL0m.[cmqZ9p= B@!#5Zh,?n6iN=g E3 1vi.ݡ0nlWjH7 (*K!P$tu=1G6/[w ݵKEM+@r^/4Mlj⩸) H9M躍0(UW0GE W1T(ZǧJJw8uq_Ɇ7(U B HIM7/&j]QT F1B@!4+?-qmrlǣT( ˳0*T팑hD?B!Ь|<؁Ž#;v؁B@!hhRQb؁,mhT{ B@!BYt/=箱y[7A'VFB @SP( 3Ql u|}L0)"B@!@s鲻<ë"BP( @j6q +QeZ%3B@!h47.Aw:9'ϦmZo ]J6gzP4E")UwNȓ !?1%H PQTB@!P(JKrmt~__~ӳst=''wȐ!:uUױ^Ȼ}k;}{gnn$`BHCehȡ.K2d())}~'O>#"|B@!PDA 1WQ VdKm`%EKty9ens=I&II{֭\q G5pr!4G%D3ۣG&S=cAzs1lu3O "z#եl)&ZުB@!PĈehKflaQR)swj;+|w=u3[V-[פE+FbEPt]6jn^{k^QN~מ Ƞ֭^+/y>#[s$91qDX[;2 6kvz֮]KkL6 p޽$9qgoԩsPf2|OQv?3Wg}ߑ#Gy睡M?chy'{H-[<ӗ_~ɓ͛g. "!'|nᆛoƨF/V5]^­:x,멣]L rR2TcZ۸udG Z)I9J6g43Nd~:g(.[Y74!0.4FPՔE6m"9!1y.,m*7p~^x/,n￟]+|{F7/u|*~$:_VkD)Jz@H6XVV;{r NYMkP{K"貥yv6/7nk7m4hk0rę:}paIiҥ=fK>v*s$ܹPvf3SPP@&>`i>ꨣN:$f# /˽ocۯ_ҷь1>Ν˃/.ryf3Q /b=;VYYGO$?a-H#%hÇcbh $瞋Rf^#U ‡> 3<+cƌy饗Dy pSO%a@ ?ロY?O)~C"!iϔ7//w@HrcǎeaČH!|gyhQchQؾ R苑F*^ cN'`U|U{<ǠH}Y rJ*2oD U_ݑeX\ck$zK"ш||sF!6u~Q#EtA`/a)I]>&HM7"H\& !^#5k/?l###CT9n6$.ra/ْ7G؈)J].[ouAŋ͵H#{$px GУQ [xJMQGjwnжͭ` aD"t>R>}Q6R ՟|ٳgB=c"(r:"HŁP4J"f i 4r bOG:!@a!UyC.0 A}?g1ry13g⃄,,ܚI&HEARւ @گ_? &xd[h`gk/<Ǡ(}T&p^U#->BTf;X.2G\6qTcιtygczmOu*\"c ;g_6cɹ,@O53 L>A42~%gd"Pz1!D >p/K9Cyưy"pxx {DŭmӦB2|`0/&!*c޿l֬Y\"(T f/3(A%A EE [ry|@Uq#PBңC˩IP▏;!\EX/'L}:AX{95D2X*$Q1f0 #(faz(>g(HʺI!}KA44_0ǜ 3L00󠉠ͭGOGOOTi A ~M} qʌܢT4iL3'7d & xOҐ 7"8dѳqFQTKz Eκiك$HdD},qY<}Q0㏆: /|5왺34d 79XֈbMKOSt/31}p6Ʋ"ԚK/T ۠D`JdGCp"t+=Z NBd?M$ 2Z9W {yz!9!<1+ f䆌ǠF8Yխ%ĸ"))}n \`XJ¶(XɇYEo/к*I#kW|>]we5\1zs7 |E2dRjvWL'7ߘ4qsΙ8S'3%P&D,.UAF`v*'^r vMu W+YsѢw>2gWu3|%^ea(.*c-̶ϰ9_ᆝ|^WzOZLnl-TgJJOO馛0^bEmu%U`HAKOGzU b4(E/fGGA6FaEb&JD =Uhpc 3jYxaQiL֢QL Z4ll_|1L At](C"kqFЍp(B))d(H*03 H#bLa* bToDIK=Td85݀6ch9_M{i>nYs{YV) ElL Ga+Taρ\ NbL$Vaz,D%nu~ 4*ʋ"_"Ne.+pߒ8bsn!(+s+YZB> 7Φҭs.wFb#_Dn@GJ~G'xEf8k1G>Q]6+vE!1 )EM[-%…xI6S$}M-DD $'m)0K3# ˌĄO"qc+{uW4SaH1_s59rx.F:VQ 28wpX>du0rsQ$͜A,8oWkŘ9^-os*9Eϑ-Ǝ)5.{WV+/šfA`nNNn؏i}8Rpia"8~S0YKOee5~s+ (s%[~o=G"d!H!391&BABE.+4WZFFQ̰P鈴aif", D$6 e D#lXgrv=UPhAI3[Bp^3#U!G GBX%0 C֐E2~Xю4ҠΠXg&m1s *J`]RTCdc ]Ff.FHYhOUi ]:Ps|mGqm]Q[a?ax`J~uB@!<]G{<^M~j5.L%dWOl{ʍ1ad1)Bw͵uE>:F5.@3F@ymmJ,qPM56왬E"헬>UZ@%gR| @c#P2_1 kwxX4qX'VlMu_!P$ Ӳx߭Y `ET [Y٭u:$oB@!%udA[׼^S " "]Gӭ# PuY!P8enZEUܛ%[ gNR V4aA) h@ϧOVnZ7U=M!'(B@!Рĩڍ+MvGC^,K) k4OyrP|HNZ]oojD B>ĩ鲩lZn6u)vEPvfܺSw B h .Ced5zfM[WlL'r~٤8s食$h(Ң:x+jZ9Ʈ)e]v{Dx.|G9N:-*7&U @8ڝɧq/_ۭ;\rr=jEd2[N.*Mnaaz=y2Ə"qEM\%ӦM +蔘"(D^gSGX5=zpO>TR(*7z6{6E+n(*w$j 4fZM3}e%zZk=57} F:iz^x.L[͊+>w!5r0^fT-m7+⠍Rf^53>==].гr4m~c]bNٮ__y5[|&26ja 97}ѣ|:gX F!{*+tXzw#ɑ.Lpxȑܚ ¦d?8 *~$@Mt$pӼ3ݖ|{1e˖cǶj g}&J9?\r B:(Y;餓 [_>_}^z=stAJn*P ~ƣb{3Jr ^0kq=Zr-l=+Y݈,spު1@Pg=ݡʠVW*4+Tgb] 6lάwPyY>/8} Q!خYbO3 x{lM7< UH B*O} yڴ^7Θ1C=\yƌԩO q$fScy2 kK1c(ots ￿m۶YgճgիWKW\qůJڵkq^s5'R /ĭSĔ͛NJd_|qB/VF-\?gFT$-?D~uu N=KۿM6]tEUV[' {|7|s!}ёk-_2RlM3wѣ[n-,Y< ܼL37V$ǯy|~^}H[ֲuS&ןX8h,5 ./hI"S7 *Bw`9G7VTZe岹U~^M{1.q]3]:`>>u AqNe]*iLC⒃:fhO% w⤉,R|S]@"f1e||X :@0SD3gΞ=8᯿ʕ+Wqnݺ!C߰a@mڴ9y/=8JlfN4G>{w|8Ҕ{ oNqH뮻NLYE2i&:q<̿2Qeܹ2TB!lͦbJ|xz_T58;oKoxcI-Zќ.͙F&0M:knPw^o+%PE17Po(EO+ҢGxkL2+2K:gfeǜC^ ϞP  ?I PW=@;DCj"6oތ!p"xP:vHM0*=г> o"ǑA-_&_bEKL5Ols;en4 ӊjvݙ54|:0{gfw 1"crbvWG.Lp%%%XqmaYcCiA7gmcm6"fAV!<\ULG$9V:Aβm+tVhi.gvVYֺg}F[Lݥv͙:4v|jXz㏾}C⊙deժuPvY* _Wy[S$:&vBt">a9>WrA;wd2CIJzKK#vW(nls7#ihYY*'gK"XKE۵kڥ /e۶m"u (.$Pّ}݇uwԨQ>(Fr>X0cЖ(,1+ &rb4]ܨ@fѻagm-nݽ&_>㪱;ˮA2uPvϾ}F2NWfW2n:B,TˋWTA; h2WO9&+8:D ح}(pӧOGRG.~=l(FNf1V3f?3zb,ŞWj5EǍ@xBqFD5H8l؟q`*RCv_yhؙH>L⩧:e^eGF>rY !Jp|ZɗiC'!HvCȨtf&L1ŷ6DtlFf݋ףmEVZ#%}§+]Y+p H99?:qb!iY+++K-^Ĭѫ OUZp$.X4!? RCVdd.Y2gM#ΥDK@&Zx b?FL C7EHE/[j)+vGNxo^F:N4 SeGpPWX8m1vTB'V ]eR;L] ,q%{ĕ$,WyXSN9uDuaF vB i+'7hBBPa{e9v$q%CB樄B k.`wv-O+335Wr9sK"]6:v2y SE~Bi0BT L@B e R9v:E234!h"Y6ƍB3>Gt~}ږc iN&]]+D믿ÕfBc\'xIqEc@1,ڲ< [Wг@bdXCEQ,lE,w4E,ڏXݖK0tpP}':UH ٙZzQ_ HKw9̎$vV|M, ͉'N[6cy ( hņQT&N6nèY#+V\@9nxE> /4R? 2Yz+N.K JVguO΂?xl,˖u=I^-)Xz$Bv Z8o-^FH,V<@L&E幰Kc hyE1 שfzGh'1^/駟fP([ KuIAi3\Ju'v/W]unq1'LW @edhh.LҝF\[oXzOetK05kx2gyGrioK01:-<E7xorpr-7Ԟ7qj9Ʊ#<("VV؇D+.7+yR/ö4ҺapPDE ۔&r#ź \km_?~uVw-=Q[BW &]:fiU!KJ aiZ+ JD? |+Z!gȐFO.tEl"_]sgE 6e&=QIlABɎOu\!dҽ8Zl<7k~ b ][ 8$ku֕?YkwYU n$ %ꍞ^-VjwzCWFzRQ(  ֲ!"^^GɡkRb;ħ7bcX\isEYe'_HpHpT Æ<5ՑK_mZ^22F$9z24A9zET_ qFRA h>8k@%s8\2=jz[s]Frȶ"wݣXh*)t/!A@h 8ft{sVZW$`{ij}iIIuMG1%[O4e*34ιN$c7GN)--l;*#-u9'Ȱ#gL-VbgFܹF`}6sF`KSw&iKkI᥹B5$ތ@(vm>]CV5RQm4E )mCFT^ 6f{̩e \>_-{H8% Hs`;ȱ*ï?ٲeVuA a QŪ\֭#eOuh,Ti~گ06,:ʼnLkYc_qVs)/V5+X9ucM7:>Xb76zb;mJ!<3k Q}T*{v;rN;p7YgT+Y|9'rQTSl*%)a}rYK̡&yN:);s$U+sYqR+VcǶjԪ$q "-11Zj4NYtu5Ag.ژ 7F25bmVS8Ơ[c=c9s^)SŽB͝;6Ыx51rXe?_O2x0rHLշz .52>%YyXeUi*{A*%?ӗ_~믿=OOFBŇl`XGxƍ P9"pڵ^xa#!Mc&̙31zn K,]cSEDdٌNۭm{W/uW˰ .1!qB@y1?#f:G'Z\SBWN0S#>U@K.Qi-[*[+b8+1(>l"R"lTJ*vЭ!O)D"ސĈ1uHf\( py%"T:5k*%g%cRbR#]9%'A<ž DMs^xQR K haÆѾ+5ȇSkP >fMo缼=N߹^W.Ν+mPL>f` Ӣ A)tW\qEsu.d3VejG!2C|UNoDќЛQ1\#<9R6z** *bps1D5ZWdv4 B$%;ч%ӌ0.AT:`fbFgWm$h1Ե/.)-@ʜ ,PfXupW^Z>a„izO} װV{7ihf”9#Q(tL@lNQ('`<[}F-DEFAJqL |pG*0f!KE>K.SDE6 sų> tXyn?Sa7ScX<8F"2 vc!n壵4Wڧp}o|ݓM'@Yn֠_yM偊2Wض13P/J 1C-L;pžmakpT?r=ۤ#r@Y2æ튑82a+X_>B@)R*s"tLlkSomE?f03G6)"4GLyI\``bn8E3j؂]ɦ}Yh5%E(@TFN2AjêK[vق`UeEkP9h3m5v#?18.} 733J7nc]T MHӄZ5kVդ.^e7oN=2,\/؜eF;;\hzXzyW d\ElfꍼՔ2u c3jV-h_ b E4cgBc7l6A.NW"hB ꡉ#ͱ% /X\^/ۓ&WƘ3Í@xkl2Gf=+Ǽ t])=O׏ -z#pgqwwVJyLj* (.dr%nE!Ꝓ& TUڪ*hH_Ӓ{\ lS*7wr# J,+f.LVi(Džne2sr 1QL|oc&ZyU^gPS5vl Q.A@DŒhmvk!1*߬{7x-6-cc/>rDʚ( @ `YYu(gzj[&2pN,9uX64M\crlH @0&g׭kį̅J̢"Njz"Jj.co*^ mMA@ZeX0Ȯ8&ʮIxҵ+^NRg nSQYifT/ϵ6c&UP4UA@hkNث+|6CۻW%/"-7ζMoLrw {'  ^U.Fh=>Aزֽ;OEFtٝm.\62tAV [6DB(?njMh211%  t4]e2^LNP_! ZjčB{Tqȫ9b  XCb z8ZYy=zX r^ ì''$Qs؄-cjqcHgnl7Y @5.36#PSZ_A7v;nGN+ppɀg .{VƜ% ٺGϞEUAwpq`Q40Ոұ'EAg+qb쭆-K㬥%C"n**|:̵96$nwMu. 9 D3ClӍ![9ӻɔftVLb;w5ш]HT]lN:c{5ݺrlNvt\CKk*k;f^Ξy׷T=$ 4ecGVrHbV4!r&:ŋ4׬ 6igj;Aʪ1Vj.wڵ.{Qo+>h:GHH"2;txlH_EAG!(_n+9,(;V I[iz`fv6Mjana]tιr\]cOӧ* 6aӔ ![h4^;y"Eqii)r]QϰI^3yN ֻ )7ic$ueN!6TZu)5Xꑟ3qX؁[?MR;vbiBfz `Y+C5ڑ\ښ8Qb{$/.,p 毵Ƈj ĕX>;Op^E,=Vܽ%x|K;nNGN!1CT{5#"I`C%~qʹGơ~dvHTp&BYi a)o9[aiVAE΀zܕȋ |>`SblUMw*U/ mX^+ӑaEl6,JVґ9LC,pΎLF1W^x1O=TZB O,%tcv't#EUUbT r`ފ'pWb%xnEaIv=:V }?W_ͼ+V\uU8qc}u416Yٗ]wVN'ޥsչ0ij7|}u]h|vA#L:/aA@hXVL>sL1+>,kЩG Rk}?(rTQq抝2 pBd2YCw~W L…uBO?}=|8mݺCe] 3+b~ꩧPwwK/t>%\g gݷs[Ͼ?{ꭰBκ)|MEܞ_yJrJ[A@hW(auz!ӯ:`b!*82{ݽ{*#3{njM8A{yHPu^Gܲ fSd3FuL&60"Ok̘1{9w}wܹ3gΤofZvƍ?c'N?gΜ?G>bĈ8G[1w1Pߑ7;ͅٳ(R[={ }rPW ] o>4?|Ȑ!o&s^xُc˦M? BE$pFF1Pn!)c(~{RW[L:%qR"GFԸN7DT_S鈩C}9xQ(1C Yt+!//ׯBWi۷o7n~oQj?craaE`蘓~̙Z߾bk޺"&?=zuABn>P]5ܟ\t[ILʔ_̹C,Q!4Hf4nF$1H]t?qm8^Q*"W_5kִ5ˌeΙ~=3GU$ߙA{01s-aA8D@okź|G)dF/#҂Moobe3+jXGF &"Y ͆l6*DpR/u]nݺ?YQHEe降[7`آ{t>u_]$Dq@(/ VUhY*jF-2(2xa2n;Cn~Q[f̘1`YqtFMg$C(%So\E7Ty:w+AS8m8d@;G@k8Ӿz@ɑ`}dY =,ŎOҧV(3 ƌڢNϔr&)c@T0]~3Ձ\S]uBN  ;/=_s5UgN;&L=Gs GWXQue9Kܞݴ]PO<*ZY/j\%$ ͂ UKA s.RO呎@hF  Zjm}ݺwǟ:p@>Q~9eҥ#GzVD`"1]sn6:baÆqI/av:e]N9iҬg]t%W|vϾC 8󴓩Hqɿp7\kگP.=t9Yk*iz)O7dz+o܌X=@R/Vnں}eq~\2Lݰi Q2yO,ϛBjUgA9 ?_Ej 8o(Ց7ӛA<\tRٲzA@H5]NP~/Bo4ꫯUHtn(oZ7{}UE$,o߾\.PB(I S-*Gh\"ɐǏ=o;wUfJ󔒑WR_bHO"25 + z'U]Z#kӶ)\dJ{6HXA4]dɢ YWq[]3SpI%, XVuJVe%[/˰J-HYRH\Uu*Jgd~߰tX@ܨ(vZ=T-QD>Ru^4dd儕Zpu!ڵ$QcR6G5mQi0ܵkW7KXA q"ȬӬеVj$y>] ==Zgq%A@B9}P[[) !e]ͷ>1KCXSr  FMucaf7f)W6ONu3H} $e5ɺmܶH邀 X銦_EUX@QQ5rZZKA@">9,A@y$ $$)KA@B+/  "ds- ;  hFA@MWA@A EO7E@K5 h )B@|)ZA@Dӕw@A@HMR   @njA@tA@RtST# +  "]vƍw}ኊ]gذaGNOR  .#B؆ .]ZV\5dVعV2ZIDATs~qq}{6oںiN:Ç':)`\B`Eg d!Mvֱcގp8&?KJJ%KXnPߑMlv>ي~{o<ѧr$5֭[bϞ=*--VN̕׭[޽{cP5jV!c2IG,UގIow w/]z`Ӧ;Y!h;zۿС=N?OT,IHlqGfd9.- }5ի֯ݲԩN>d J Љ k-[w^СCN̠PZ;R__A͛׬YwT`3l'.pH.bquOn#/T>`ǂEcOyt1Ԭe< A# #+n+]' OXMԼe˖yѷcƍdQ]naㅠ=H?X_.X@Ο8xF6A #իxgtܙ/ߛ6j#6 ,ضmۘ1c0f`p3LYmv/h ;|@W*`Bw`SN9ݛcؓM+_iiYq^Ӯ|໏dgm=e+g }E$T(Ǐ8qS&w5>_XN@?Nd!w4}ڝr>p?kn{e:NFh1kh24Dl~Ʀ>5ymtګ^pDnBt&4~s;g~]WݱsۋOϲ9A-3Y{¦m11"xun݊k;AKcӜ{ks crІ.pد1,M3{+ڄƱ9;gW!ֶV0Y|H\eNrHgi$c֜9s  4agoUJC3V8'9)8A0`;tb5]tKue~أGqE>"/k…Q8bqV%EEEÏsYg;*x Rv oH^eNsW~?̑ͅt,˖mY~)>4ho.7u+84%%羷wF:7tfчMriVn F '[^WklQ [Jh.γA9ֆCaŁvB̘}iatpC_U 3˙g۶ ' xTG{qV_jLYzb{8u2XM?p]XX\[H.\O?7͌3-1B^}B^1MsB7)`&XRh$ڙ3g29ri_$gwLA{/"yW^y%Z<I)aŊ ޕglP>t]4]ݘ1KO,a ]W;{ri1vUOh.zfO ?ٙӹUNU  ܠm7;xwe/^{̊ [42'BǠ'pkaO>i*tc"ӟ"#(2bmDOM}]v1b w}'x_}{?-軭rڽ 8ȡڠ͋t:ȀVW>FzRի6:N? q#$/$kE5Wa<ֺb u^֘UekxQڶmرC9zSUYY)'yH Okαꋯ|kOԵk7fYNZ䋅Oާ}a -gI. cH:@dSO=5eʔ;/2%ӯcǎe^>P22}`ߎ{U="K/:%ЉX*oc4;:A.ؿ?Is%.3k%_{*goR{._\k0L :e. ;-BFJ0@@kɴOy^x~L<Z,gZ*} dHO>Wķpia5AH*LkJͭmwh`aQvϮZ?LT;`sNCD?C}٧oVMǨ܆m]쉻.x7Afmxxa}*?xɍ+-O\Jvp6-?>pƕ ~}y?fEAbuߜ_UxӪEl&cYI4~8/ _#9`A;ONF^od5#{`պ/|}xr6m1ZW2F=۲wu.|oU_lrx~zl"SVWW) ,?_|=ro}[o|ܐ?O'O:MBE?^|ſouuu]w4 6uF(^`E@]1IK˘O`\* [)?7h7${!?[ZPXV$cU6m*'q⭩ݧKW\ ,}TMƫz-d*, ^ԫ>w}>`$%=BX~Ŕ]VV^^x[o-*1)ϚTƢvomfFAy2ߡ[} 32Yqe3mN=N5I~~Wp˾M_.).tݣ%{7OL֓[4kjw~Ӂ U^&÷x WޯjèlWꃮ9#u]YbD t=*vu+,0vcc7_s ΰ]χVqxpnO79 Ch1vVs?tX98QDW) ||H TD$]\@u;LBl;AH(:(OZ3 ɅXZhJ*Aʏ˧AFrtCc "4_qYTrS;=#T<4$ւX%ԩS:d333@f͚u-rxfk! , HxH4 6= U)kkkeㅧ&c`aFFxpؾuy@h PsU2Td|>nJ@GPQlw:bGNzYX*9⓳7J]*3s 2Xg\ 3/߱ uE߰Ϻ8tkFQE=$vٝ02PUwiۖu1*P@1;,Å>6Τ@iQX`A7!.Û ʰ!^̘rBn7tu6I({hs \R5#~̧(R' lY\w0ƛOecᖒIRPGZ3߿߾}ͅ!qT$c|#Hlt(`N\Q6Lq|Rxd)kQ57 U/%zLI+Ęs=X(GW&JS8btXnzgxo56^6}xf˜7>p K/a裏wT^+h޼yJ7aŶHyKތN Ӗrf HF(*t)kg#ʢROzklR=rF\HZӡaqrfu҃na`ؚ)aNv: W[WUS.$J@X ]ky.~'ߚҖuu,πp?T@~hDrN*tv`Xt:m_w>ƎCl ,*.)qhYOJqyUH?|qas;cyŧ֊'=YIo5ĕH.@S% ]wMCcOwDtX>0ʵo*f$B+ŒA1V_O|Ҽ=*IМpST[JTɖOς3v!< c㠰%.:◹(嬣z\x]jZ |i$YM[ʹaSIfYj0j~;Li])uMyȄDڝXU :ҮY^:|̿l Gvtj8|wn+Եw)9'KHK99\rp/QTW1 ߳.;?#+7#QR m8Tjl+k/ZEwdݧ ݼ ֿ_UYYّʐl耖+7??:ɿ$ ^G\vbbU)ZE&(4w%haO0 2*22JXqfx1Yl $dzN)O8bS&yذl-V͟pb۝>%~ǼUeGMpziL5V6Tqեhگ&2@>N%/WCd휕03#݅nU_^Ry`MlX]oX,K\^f;V[R1Aoa)c l]S5;CS DJ}?^bTIJ8*(F V  IA,xh䶻ca 2Ȏ ]Ǣ cap@K"oDK(^f#^7*lQxM*;2 kYU9:*\Y $H 46}})cQ= g-tLHX $ټlզЛp 0/Ԩ~ H(z"^}$*A˧ٚr WG @gm/EKY"i_骆V1J?1w,D"tA/[҉oTpL-<(@ %s8h+bu@[Քrmm'0I)6ŅhKIHomb:A@A8Cq%qƶ+ ^N=R  m'  MrA@tӷrA@4C@|i`B @" nP. fO7LA@H_DM߶A@ Y 鋀hvB @! >4k0!WA }M7}N(A@H3ħf &  /|aJ¶]IENDB`d|WAcPNG  IHDR|'3ViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx`T7ͦWz EQb J`CAA" UD ET@z/Jz̈́-M![Μi̙SfƧoLi c׭|S(]|<  w:cKY}~a`D=`?^U!A@A '>1ym3.>bINX]L>>rO2R%E f].ඖZ#{QChO<޽{ڵk۷ov-l߾RJռ?Ł.?裮]VZU)>[nYhQÆ ef34xs}hdvilO֭_y矿⋑0u#1 1W_5F 7,YRT]&>FU~'{A_IC!c4yU2<0p@7md|O:%4E V|BV^؅UBfϞO2%u$Qf(RQ>裨۶mzjE֮O>͚5O"~xo(N( {ァh/^|ڷouqqqTf7k,C-*nݺ:ԩSw޴HTDvJ#5?®~iM7Cmt`tpɒ%1}T͛7ەOQ3<3,M8<>8o<  g شi֭[kAt#0ԯL2;ӱr: |t.\0VDbdCBBTN:صk1t_z%X̘1f͚h֯_OF=3UꪫXTцWDZp|) #UU$M< ۷4|ժU/E?vIU)1ݻwq3_;vf|o;~m:k,G`?~<ш#kT(`<~)]u+Vx@5[QÇU 'pȑ^zf6?3"C/^Lo pUdrgFmCWܤI[o~1ے vذa~|.G㲲yu*;v X :OĨ0|K:y%̲ロ0a7Lx<* :ns4NI~F/@+)$#=a&~Cэ;d쨽\r|M``ӊ(B;K5j8dv؆͛HDZp|)aΜ9i!QKL`LYaxTc-yNJRt~%WRѦb #<fԠ?2 1$HV,V JL;UF'])JAq<_!:$Rz9asbÖC)O!Fv_vS a()~m61C"0Sˉ'T&Vr1"hs& '8´F*}{EΟ?O p \URp$rtx!+]N/ź_"hX8aڵkQVg@a-Š$L~W,_(BttT8 Tt7i0] WvC!(:*U cLcq~z5"byTW,J'#c,W}ݬQPz jh=ntܸqQ;OƗce(/ .W@^Dž@XKOZNinu;8XŰgP3)s1z]xfd%)1D &M rpAf%*mA@ =HUX:( _ptmSK3 ^N/gEhjlSGZ:( HYA@A!`a^HA@ȇ:%MA@ YY   y&EA@([? @! MjA@0"  -b[6A@"HEx낀 ytoMA# n| @" 6ݼ[jA@([_. M7oA@0"  -b[6A@"HEx낀 ytoMA# n| @" 6ݼ[jA@([_. M7oA@0"  -b[emɾO..))/lfc$ ! w\e˖Kƍ[jwwuCSN)Sfǎ)}UW]BO޺ul"A@z ]~x={o믿mֶm[W-A͒VR%,,̮X$UlRveJ iBbccӠAǼ:f/DSJ@@@l/tTRњ6m I7iĮ|7Iv9>|9[&@" 63D?,=%K5'Jl ;%8}믿??_~AXzQKRŞ|]vSN%cǎEM`  ǧ-[gc=SQݍ{,** v裏2DS߹s'|)S;f̘ŋ9$өSXѣ{?Oc(aƌD=}EnvҩS6l /ԩϖ(Q :JGȑ#E>W^yJ7a-[7oޯ CQ8L]e9sٳ.\h"ذU@~A@pӝhS5k+BJC2kѢž}V\9k֬Ǐ?.]:%'׈#:vuobn]x.]@Y~}R_]V-$NO?I<ܹsأG* qVUJ.\{nLȬ=Ni y&M"{Fy/_~7+pzXy]CV 6f(Av*I~A@ḙBT :w|u=wqǿ"Πhڴ޽{5")$z*jU *XIؿ?'J*tn͛7@~U\s P;pO>wQjs Bǎo.  bL UkF@]J R6]\~qUFe[WtiTLzH^j*` s *]p]zi!yM޽ѺusDPLS+]47쪂p!r@c裏z!t._}v]% {Ħo)%b!kV\( )!;wC0VZM6M X1Ip?Ø]$.l0N1S wIl|ǫV+)l◘cǎ8qB9!xte"U|yZl %.`0obtuRA=>h)$ "?OʄO,_~2+VÓ1V~q$vEG .cx _*`XAdLl G*UG[t" CdkWΒ%K)ShΙf-ha-AH1HسҰ'U%،l*e%A^x6Y/e}M"@vگp~&t[8;&A  !^4" xHޠ&yA@2^_-6ݢHA@tnLA 6B0A@BH|{ 9tsR)PA@aDa@8A@Bt KA@ <"! 1bc:A@A e$ @G@lE  D-$MA@WM7_ 4FA@pHN@(A@A bu$0U|ӟ,xf.GbL9iiis,{JJ 3͞7R(A ̓:̙3wޭ4y}Wxϔ)S馛x N-^xӦM*fĉ\sTcɓ'?䓧~Zj1밫6gZK*){S{OzN/3f /oX̄=H2MOMT 7n|Ǿ nݺw}\_fG2ԯ_ᆱ^snz qUW<>66R74 ny߿w^tϟ?lٲJ*EDDu],霖#hl*{U -5k?x7iYܤzvw|NJ[n˖-Yp!ǁ"R$sp_FѣG;M".V[;{IX:#1} E3 SN=rûD9{6>>~ݧt`ݺu[v4[nEg7Yk7lؠ"{=~x^~}6m"##K,9tPkŊM6%~#u`4ڵk7jwށ̙3jbߺu.]C!K(X7N0!!!+WvW\٠AΝ;3dv`aLmT| y+Vdzyѣ4LM|4:;zg}V/^اOL2,/Xs(c"޽ޫbԈ#]k4~W4\`ҥKS˃>hLR4=MOF+} +e*I_U]~* ,|Qw}7aNBVE똔iOpQ}o|0j={pႪ<QQQ|~"v矧O~"SINGAWj,Af>@ˆ2Ǐ2Q_ufhC0`b%мys)q>}9~ݶm['N 3*~I :todڵ eذa>lxm۶-Z:tرc\Ν; D^$+WGu1cƨ\ء?B:4F:vcfT5׫W/f(nZx @^z  |W>rH(iTvhѢ>YJsd K.?P$(_C [:駟2ÓXRn @ܩSݻ3 Xs,Mp9rTjQ4 d IDATG}bW[) DV3Y+>vDAPyif*ߚ5k~׊xΜ98=ew:pmWBֵ8&eS:03]}@\+_8+!WٵH>_20АįVÆ `\RYR k$hY*u)F/1?%W ]LjU n&Vd_d\fdSj)!c9 )R;.;> Nato4´T Xau9Zj/%nU2ˀ :ɔJ\lYICju3CKhœ&pl S'Ya23x[*^k4R1VTNorrtt TU4 DFaeN5R/X)a t\ۑ&M(zFZ ^2m4. 14@,/(Lfh bYv *t(6/M՞쎟ןqO@V6 +?605f[oH=,Jrb-p)ULjiRc1M&n$ӅSmdC0)z8/%t 2o<Ffb"=lk DBG Eʁ9NcN򰧎QVQvc2ymF? U쒔(:<%3O9nT&T)<(K;LBlLaN8?Jȋi–`guS2PäM 1 "L,UL*%'\ڴi$Vcc טrQ2\sX)I;j)8#zQXL`"EE#u󀫱,@lijbȠ?;x=2Y[QSlҊ8BTF2c=u<] CbQ2 !~Y{ͥ#UJ[2 ؄t,Tm7_DYf5-gZ>!V(2͢ `-+`DوIU)4 \{X 03WxQNI`yX8NC(xYP'!ĐtU*s0cuJC ܯhXX[ }8p S3eYG@u09(a( ^[h)fS.Ng GZW)a± d%LF{"x1]9ꕦov^YUE8b^] ra#|{yxX0aeM@@X#|<~ev\Y>cQn!REONÂss>`rd:]A{WZvr`Q^ wq4k,L < KPȣ Q#j ^ۥd\aKhA9^ϩH%#:b F塣KMRa$G*)N0ґ|> !߆FRaI7 }TD/Y]v#2)ٝ~d+"FFynU$Wv+u)AyhF2 )sp_Vy!B) pֻsl.N8 `8-\믿m0OeO!8 );(2 ɰvJ;*W*j; O~]F!Avg߬ qƶ ; /  ٧8`7t}u.?K]޼[9G~sSA@F g$]6)>Al401{2V }!\ dW1O$E9 v-ܠ؀'lNRwqFeέ:QPVR2TZQAГ/^QCneʇoADۍrFTl$r 7WݺnqVncOsn3a^o;w>:0ROe-mW6HXA "ീ3MW?dzյ C̘^:{×2`B\XiZ*lw&PqQ,|&-#NRL<ڽ[Eg[ƁbyF/ȴYB   yWMD.1Gr+S D]<85H* &* JdyU^ gct P"ݒDMzy%PBY }X60ZtU0wІW_ۚC۲S"@JUX $ hSS'$'$&+]tA~f_?bɄW:0z7|C,*_bf9;._as7VaȸY9s"qE1An O-ԨAFczU+[ꏭ+;nJN=#Â_;3~ʧ_Y6h}mnT77U@r#~W6>M)ꗑ@‚Fvdܱ D [-6*دt+Ry?Ir3[xpvZ 'd<,>KS5l=JLH@(WV.q1>3Iz6F9[t֮jW5θ5:+.Ļ+"p<6as'79.SZ%%k 26ikk'$ZbxJ%! Z"fwc ]6'w`XSťoFhlU`cTŋ`@PP 1A2 "22nDhpK vaE^%8EqŢl"eN~)ݦ i6}B잴:UB~9dv*9fu_MLݰ3`-wrN?n84,KRq5 & kf19B甲㖌n\5U/͑ZA`!0eɾ0*MהYC6ؖibC0d-8895EjI߾Q#O9-$/#+gjT'gʑRG`Ot\PXH6UpOKM<;|1CavQ_^J0 iJ&ٲ=%̌_̛pE)2ӥBD΍t]DaGfu+b sFf(>C={0x;W_~ʜHI<=A "}!Bbe#l)>CN$%&_Lsó%,L{ב 0c?6rD"[qPadСCѧNAoZJ?Iq <"B!w3/ ЫijoQ '\~ns(7p?<2qZzv#kg}VlpPJSk֬4ە*U\R"iÈ#sR9|M٪Uŋ<$fI@!曘l_R %|lPNIht2Xk80~u _4qޘ8]NEΥ6]>0 s")ׯ_۶mg0[)~i#GdO4iJ(lj~בyaT $hɘfZKL2or$1w6>Cz*ݘð"͒8.(eU~~fwS dL6Q\0tZy2my[DSDpΨ K8iH cu6"Μ˭.X5i҄CC/\C]hbRg{(y4v4n-s/awaɜi==큛,u7?b<{_'N7B^;Ȧ?]pLj۔J% X71(Ą&m7|慗N̎h[҅sQ͗W ,ƵV=?=uf_?2[GmJ#K ? Zz]oX `E0 fd\`GsȋoE͝;W%n":~*) I8[){'Q#cUS1_}GZ~]r%(NR,6 (#X(O+U_2(Q>q+FL䱃>߃Ԕ#wN}w]6sݷO\ur;.I@BxDhXH%*׬ն{Jk%LJ Y3gx&z["kc'3ʖ֜:]ls]HNIWM9vm||Lz0K;$l)\lơb8#;OZ݋:)](eQrqBT^TQ4h{ڵ+T<.BHy\ᔆ숶(\ZJt {58 3-dǯG}I\v&Lv.[n}‡O3} W-=,yu UmX|w8r?3H-!7mms )428H;o֬3tHfĥ E;gI3yͦt^wIqWi,gX8Rf4^L7dHE.vK"ދ kN-:&*GA33" ;=ùـSʟbXΝ;)Ga=CT≴;=СC TxU _.}'쇸F&*K#*VMX*^]ݴz_A0!a ն%[7(%>ߠ HMIH&Z\8\e߬g尉ǮrǪ;1@e뗫,9bX`dTI-7p8ӕoljR_fO:5b,(,/tI9CoDzu4/Һ'-+ 4_U 7HjI-d٘pxm tFJE(C`.n(ku%T$pI :!k`bA%]ا`M0[R;Oڑͫ28,:*bՏHx9stOѧAE\B*UEE^r+,gEYӂ`A6+ 8.˶R],/|D3˲e8!ԔR~wB%remEe T*ɉZ*MŻ $J#Pru/]0f|KOQibCLfdŇ([N P 22_/!%ДoINTzws8ۧf )Dl2PݴF) mqo vfh\WOG8}{^+bv0+##7wTT>,4U/ 6ldUg /z+[lz6Ili6K"8թsv ڔ.1. g#`v@#{G=+/r_xK3ʠwfc5ަ!QS~U;.4!Ckt@jf뛊韉Rc3Q~4,lRSAtE|[ʴ׵lٜ_:%|On+~UD"C 6z.]8Iz* K7zbϏ\z?̱":$Hq3dL[9Vt,̏ IDATAoĬih'Egz^tjZZtt4pB([95!a=GX?o|̑!](7596^bhNÃ?i5=^t] Y`nqH${9_&Jb&^oiOOwso7?똘h܇شmW^O??M4~>I#J+D[H‰"TfM8p :[فU{f[A*wk~巫\8:f*WUko9! ~M* |H57&i'Uu=VKpKRrQ`톪>S6"-<0bՊF4ɝ(9ƅFDyBIΊr >i|pɤ`Z~1o{Qlr*DHIo_>[޳ m67a=seszϫt;ʒoôززyE'i ZJU.vMROb;!(Ц޽gϚCG֯=/]n %YlgLf>|঵:#4A PI#?9룎?0ʗ//zfxX4HNTkܔ\)=y2C竗Xx!Bjo]terH4U6j;fqre˛-q>dҊ_.Ub{׭8r̤ѐm[5oW9o?{kׁ'񴽶1xJAHx&T?ddIۛ'ӯ{3bƿ=j؃~{,`ٜXq^(LP{,6)yQp=_\Rʎ)]XBB˕-YTDґe"lb=LKNLjlCzkӃc0>J0Bn_<7TuiJ~79'eS_ֳL.Ta09߰?4SX䘑C6֪RGթ^M{-W#V#\k&sTg&B7oӯTh+hƉw4I<Z/c&QtƕU*k~)tЙzjܙ+[uK@3EԹ}cb_$'27$$5n%1c]6`F\XR,g㺬σF#dė8e,r:R8O8<8ݻ{mۀϥ$ =/Wby>_cS4bwsMa/+&kTiյgYبA]Tȟ5uV@FR7nŸ&ϘSb>2 ?xA3gnk8[R6?FJ˗=";4$]6d\>t2Z4xbCfȔAde0]̳s)!ExXt8R+%SAoZъM`~ @KDMSו)>"ڿoJ]q,wum?(jRj{j```@\™=cO֭]k?5;;NQʕ.fٜ]u nV<Dţ0}侻nT#^޽ryO;JįZ񱧇F9Vf| =jgW%ehY4 ԡ +/um e/\8㷯kH;ȋ~vȺȊMbկ 33>P8.]c-X'$GO>D>vA& p2JK얊P{M&=ztEp(7T:rDT")9M9 pᢪF410,>syx/EҌv1Ѫ23TIl(,QHa7Lf=-$C3rhS&$& #KC``nUclY{~яʹԋ 9t,V+I7B+}}|*Vd4% x@vK.a7fI)qx,eL>-p,!1zl͈ "):!A@!M ?WFSS.py8eyR{.ɜ,7"v @AGKppeR&g9 bsĉW\B-®a7@΃bq>еwȂ(d)XKk@U-}_Jj5>0Y*A=Ab2,]IB֮ݻp+WݱMj mݺ׽Jwgʕ+{nZ ۼyVZqx\N^pHܪź淜B%tK(9׭kb 8=fӧoo;YTԃϭZulŊz0%[Ik3mՅ^bElX#f͚5; Pw2J2ΦRzܩԵwqɱ\dD)5&`;ߎ 3˓`eUt݁?`Qキt}mЀE ̧bŨo Z5ꭷ''ʎQ [t?XlYȶmҡoW_.raIjծꪀ\%)gϞP[#S-\pIwŋs*jF.{]dȜ},OH:!ǂr$r19R]H W!+j_~W.q!вt±\l .ڼM?Ѹqȁ `6n9/ 9wr:NXc* s#&!!<_ƧN3$hOJ|lrpȣ|_ZUQXNA>\<=6|nBo?7Bt篿q| Ҷbad&5*U xYfyN,@6pwah^RrN _ޞ/7Gͼ`>T"yGq?" WX^)`Vm4ڔ=-ךoy7{ͷ'.µ~8djXl~ CQHuO>,'NtOTZ:m6bO_'n y wѡs'znݺQ`ڵ9^wƍ۷/~it;׼B3~xy}xT~-K^;w]P‡~oDhٲ T[aTįJr4ik.~͚5M1 7k" Rgɣ,>տq1mpil,}ܶ 2#K%>/wyGxy}ACU OSL`ꡇ#!&j,f?ȯNyc8~۶msLʑd\x",2.抙0qAr?7n'ݹi6NXO?3b$h)UԚa*U.RDhTfT?B#  f ,YaÆ$Waa.h! \')Wqs{~L"δ;h—-[á$G#qZu ^x,uzӉ߿? }UWnS3~gL$#G f̢ð>iwڕ ]c|KtY \VZr _*pҤIP+@>Aa)M>%J䛾DbtmS . ^^t));K) 4t*6$ˋ[ժV` y+/lxժU[S`/%tZٖO<n%/[DAVŧNV϶]sMHNMOa6vJE dvv{"s?R.Tݱ(*; @r$1k׮EL5-pY`%ÇNXMQ<j)u^5@L6 *֭ct"i?jJZQcK6lWƈ62pC#IWU>]rY%'"04_>wVlֹSzAR]v׏&~NӚ5О}^}sT15nݾra.){Y87lG1 3V4AsXbyBDEQys4JrZaGY32t STH Tg1''o{obIE뮃ePi?َ,Ni,&%_:ׄ3N*Uڷo1K.] PBRH%裏6memCV|lidfs1Aѽ|reWs!aAQ$ "e^߉c?Wwb KVuOEvVGzkmt'9lf|>K#"ɎL&$$sMsJ YEHSFÓ<V_oߎO ّ``!]]io?뗉(c Tt> &9SrR~m]#ٹs'>č2s̙(F]"D9rd^ir0`F*W3x{$W0Nl0ݹsNwl05zhX:MF!-`*ˉG࢖`8V^C /-gn$.r'I팈N@~@)+aY;ˊgb܆O6-hKOf1ivtKF P2`SYwhG./Wٸyŷosط_"w<[ʗ-`˼Ĥ$G^&}a <}ۥ;v_֫/SGJ%GAz:pH &V-@<iˁhT[~+FF oU\5 DXd/%"-) *Q5I0shu>$Em<ݸf0˸N2 W(FEX+KQHKhQO*ɮ˜T,ܞٔ {cgeIǎguI$X50JRv Rq(MBxjLF{ChsJF/^"*_;r,@^P]߲)Lw-=K~^٧wܨW|3SUc&{OG"˖.9wSQ?LE}s7ڿO =ѵG!=my̯eadXŁً!F kL3^:Lm"ISBرcUub5t_53/r6&md1cfӧclti&}8.=%P}!+ 8nVW&ǥmhqh,L5tAI7فn(U{xx.#y.6VulJ^D&ZBF 7%&9g>|6%>*AӸ(5۶Tq!ABoޭ3yW6mrK;e72"x4ʦ׳y>ܳ{LpӼ5&TyUojSM&򋯾-Q"Jkj+?GS0# gn,sC5ƣL*СC b'-`1(¿Qb$iڴO Q㭷C a4:b캃^I;]t)X?JK3tҴ:\?g2ҒMon‰})+Heض9fK*߽6W=nh4U'?UT?3~:.VgϏǾ o6ⳏ}ȱ^|KUWPf1;p<7|xjs˺ցmij񓿮Z{.c=>ShmְrŲ(Ύߟ0㽂;Q;'[}f#2 rW@9®VEⱋWA@(4x":l&.X,Ϝ>sA!re}=aCUMkTԺU>b*k A֭]k?5;;NQʕ.f47nQMOo񏿜>G)䞏ZbMdDNRͦMٸNNj?~2fcoDG*KYIZz< =kK!"&d P4@24g L* ǥΤ& 7mv8}x1m9f\9sѣ"3|h@RٹtE]  mG #{͡_1{MIivz:1>?cc1]VphGi W X)Kp®f,r8Wcdm _>]@;s IDATtb+0  8E ;LM-l,WG+k2afXtpaVvIvA@A^t-AW>ٱ__ >~j?#AvbR9ʾ#yA@%͡k ]k:xoU%g@rYrRp|晅BtO(Z,Sr7לf1[P䈟Eda^&YA@p@O d/ZZs[U [&I$]W\x4_ڥjA@9t,8bD_s5ݼ)]*',r d炀 .sdx/2mr3[~ ȓUX# ٰ^9Eq95)M|OLݪ{~`xA'nx)OL  \y \+áyPLOL>9623X>HiNCYHB>%B -s'19&67s52=">҅ P׶( P'-S799)?W9srR9ЦO~dY $lMMIL:T"N*7Q\?}t.yvRD%tպ5t)z1ܷosm%Zon!pEV@ 'MWc iye v xtaY&)QɯNs26}VKڗ3B#91#]-5HTrzz1վ^]ʹt 6ڵkk׮ͭ7pl_Fυ r=zx',Uw?!C_8='KB=\sMVs͚51r+ vCI=iҤgy棏>ڻwo.dś6mʥ[t{l7^'?1qm58g^^KP`xHP1TO_%91c~IIq6qY2GD+^\5$Ć?/x}M7q|Dcƌх0AKuʕ 4axd w4o߾g*WmS0vJ*8qBKVAրD%"A. QUAAT* /*(U`M(Q$Yuݿ((Ax'ܿOߚ9>ݷo3sssԩz뭷N[oz>wH|ͻ;hw^$7W(vo 3AX%q^x2!?թL)y-Ph&HmdCWн d֑L2i9(Xg44p\ >諮{)8oG8zի|Ho1.CpQG\fn)6n[m՗@gXꫯ~_1jP6A|D5zH@|0IʏYE#.?T?ct'LjOx|ߨ"n[o5Tvm;3<'Ŭ@G9m߰ˮ{l[m~=c*rQ1g|`f|kXtV8wezK]9{&36xP](:}m|5} )oGp5\r̿X4}gI0"+s}CaѬ 2).n ]N;|긋2%{@Hz&DهV /?C}QwnJV KQ ay9K¡]DZ/0*,'d&o~_/T#x瞋Q&I&FI[#iҦT&PCYa\3r+Xe5j_?HjXUҰڠDj6:蠃IҮuhʡXЦ6C-oyO:$]N 7'M!++&Rt@@U,@}'t˗D`9 efwE'd^UO}$E/30OL#?7x_Pְ㎓0]cc]<ʯm"޿7p ׶`lo2}%W^vϾo׏.?c*񩧟_~o 8n7߿LnS}=\s0΅t-[Wo]׻~y?-^rWUd4z{<>3W\P~456Z|ՏyWZG-㙢'` 9 e/@ ̙3lXpGOWUuaf|0YGE | #Vwd+3z+aU|* |VH5y S{1Ab"#j';߆d05سI%acZ+P5ADLIRv\`VЇ^ȏ d2Fn3:NGDR8@uԩڕS?nkT뙏41(Ia^O&V: M[`Ж57f8 ALL0?wq kBN> u X jfЋw(4H ef?cp2|EHXK, $ o鱴6@E@Mnt-󮇽G{w08XZx_{^W\yC=6۪xuWw-]|XYѓIAl3 :m\V;^t zKYzҮsf7,Z_n/y2kW7i='A&S>W \u]9KP,##b~ R2$Xx~Q u#USIșDc,+bk9 =bT2̡TmĪrj TV<h[W%I_a'KV dL 4;tg}"z;ͼbMXi,HKLbTq|QjV!Y75v-d_W9Tʤ %jl¢3Uxy8H  59kf)qiWgyWג 62Tx$!eUee o Z$KvxNo+%XYqҮ79ɉ]х5ޯ*kV-<_yu/y> {0vyX\{Lq8.YG Ջ_bS!?9)TS,3މaanL3LjG2.CW5qs vJ̊2t",A/t)Ru}4L8s'?I/oꪁ$ bT'm@mJT0% t5*i8}Cx 1gAS4!fcbv6(Btd]Ui&XNA#D{m(԰Zt >9 9J!{5PWw c_ j8$azF7N-ĕ?̏tDܷbJ¯Lәܳ":!Te14vMw洍+j823g΢"6W3g i3~,@(3gv9\O?_ +鶵mKclcW~k[{۵UoMϞ5c⥫ʳfΈeB~X&f41uGwi1]kXvM 䎠PR[n9R)@ig0E6c :(9⻬;$Eh G y6\!I~ uu}XI6w#346YZ&87둖"da 琌ڪ"Y4 [0l2!K5hD6lB%ogd4 FP7X .A4d*U% K1N[hvX}*BjZ!q&9UWl0]& C}],jǤ7?UJM_ kCf&z|*i pUz3QCɭ 5a oD_+l2o% `Lw]z_cծO [yͷܸ_KwՒ$̝k_tmm.\pUdVgo}q6WrR+W.Yٽ_s6]h!6 w=7rÛyOWt-x;޼9?ԜٳN?qx1_?jnʽwy?{f}f\ve{|ʯ^pƍ6, \r͝s/n+ڞ.}ԏ54ݙ^kdY>31\nDG'+TJn*M80{٧jxgJtSQ2*@Nr*jF~1J~HdfSɱvDm0 +̠XUê Mّe=E~; [u3 hcN2AB̵*Mf֙?XX̶,jRjLTAӤ| #V&+?f_5jzm(kW0R@{,m:׃[[gΘl{ysA7|㭷޲bwi^/*$Ǥ]}O~)to{;-gϞΩmn&t}f̘v~Mwٯ=xn[Ӷdк2!1FF[O+) R\ToS5Z꾒╙^ WTG[|+_ pZ ˙ IhH,3l FˉM+VAz8D_#DrS%fհFaEm_#9*IJ7AY5 Շ?RX&I?DuX4dҙu+?:$pBr d3]lwu-qΝQ_-:u&3k',@`q%rppa6͘^Ռ ӧyy~k?pmV Q @.M{X8 y(LJgrdX!j r^+Q;R:tizc^n ӷo{iΙ]y?jRʒê+99r )P'FtKnI)&[>d; xO^M)S`]@XtXu'[}l\ՠ[g^dQ|O.yMtUZ}٤6n m@;S`=úszILO)I{3 hJWOf+c $*{;5\ MyUm0v4[Ou kdU_Kȯzi`pg(s BHM1R,7MWذB|Ďu䍣p;N mY9q w ZUQQ60_9;)%OJS]wgӝVE@C!܍;GEOzuB D4DCsq݊*B&`u~}40Q IS#C Fk7To^&Ԡ0ɺ#[i11XáLewSjjA͐s ?izt9V;Qk0I6tSAP@f*c@*乘 #LEU2nJPgq`A~ T͘-*S |ijR  SN9SyJEweX_r=_ga?Z^ \bD6s8ĻSMǐ )ovǀ?!1r*#/{@'r 4?o}7L IDATlNk-6V22=*f̡TH%C6g>S CF~ G[HFcj2!ߡ͙U-q E) zA5JHtY12"T'~K_"RbJz K9s8j[:0$p)/8TduU8qXyPpLݚJbɷy:zBѦ;0Xgp%f)2@6JAOBPHp8TyR'h̠ုTt/JpࣕeBc4Ȼh(-zWT}̷t߼ȳ''6]5ɲ±+cd`Z7s8jH4KypֺeE -NLURIF ɲ+GngE6TZ @|4)m))7ovnѪ8o Mb?iMd ֹʬ;08(ͺcbhp X TCcA'&_c֗euʷh4Ɯj.yųf&!)S` )`w>;yhs>o}f QAI:?|2k['&bMHI`U,tOooR}+J2qgV-X D3]G yݑb:Ryv0K[{4`C[' nB |1c0˓oӥR^ѽ}i#0F!l)M#h(zRxlnJ#?1_Fe+\^Ptw`TYXY%tSs tc[o9!$@O&k */s0^O‰.OYȫzL>r< <SDžQ<"=Cnɕ2=@xzg9;5prQ[)^QdjZ&Wwע r\8;e;@sL̵ئݳY <0ڿl M>yX;qS}L:x/C)38!yRS$G&PI[N4wcZj5h@Mp4jates$K 8*Fcj%> n\vnU&Dqq+aZZYVsr 05S/ x0/W-jpl`P"T+P! u2_sRIi#];Ԁ/C_1u&bMf >5W}A7úo-757]Xѿf۰6#Yеl_$$i`Skd|2%\'=aS#k|-aHA]-{X7Y(4u3:A"]Kzgd?C:F3Kϝ[3Y໖)PcNu"/a&h?D ̋PxQG ee򕯴H(Kh &:ߝW u,\E y(T#Ux뭷 R:swi'&s9's!twMB`{h(Nq8!^-,YM"j[jK/Tرzj);ŽHȗ|i̓>Xǐ/>&g):`FZDWl{ʜfR)\')`O2A>'m6Mj'b 0M)o- bq GīHuXe2ZJW<I2] #m6ņ$`Sxm5Bp|I|r4Yh#NhKLh/k)q[`@ow$㥵[*Ht/~ЫI Ԑ+,AtWnl;RmV5 CaDBi|oo7 ڷֆ ϼtӜ9TX>_[r'o<4euٰ4,:cκ5(r̭tCfeo>O ,J`TKсer1pAz_EVeo^ve}؆ 2j ^ENmIC m-frvUӱ]o)~]m0ܼ#:gk)P1Iћz׻tp, OE1we!E, KԦo k;:A[Z{Ⱦ[?Ռ]I\Pl$X[^'=IM(=w8n9tv$y:B4M$7`C?瓙X4^ RL`?td>Yj` ݉tAdBr+>g0gS@l12?"}^H _yPU˫8DO}S7p C&vyC¢,p8CCCCqkD Y%aq2 ૫Sa=!U@)/y Zk)F_裹.sccW[FeE|r`J,k/Nl[a1Պ;65F'3 >A ?$Cvf~X3S \Io@Ur Ek"lcpd&oÕQOO*:0Ň4AO(RQ~G+& $a!fřSϳ:YC(pi~I\t9Y|Lя$O8@OO9FEY2ŘudTђ~Sg .]^LdBF)٧MpkVzЛLV% |#d"V3Wnc[;',]4KW,CzzaƔҬw~y>3T+<3sm馣8=@SB֤O&#nC񃠥4Ac<4 *M rk;o޼a. qXOxu!f։.s?vgMv:ȵ$䫀e  $F2ySf o8pXQ yl YmLQji\h%߮)xxb &g~-^Wa=0sUT` R)r )]RM2lģȷLffj֏L<*EV2SSu HXU|`M0p8niYs >v)S[#*Y֜b甖9>ڑ*?N.ȯYӓKϼ*Y0RtIXlLlSblēژr6)I}c#EÚmg\5PZ:*50+RRnӭ MS dPDlNd4A_T!d\m26Bucc\Vi|(nݍ fHH˴+1lM98Dk x99r ]JNLd#3c8Ҡ2LNZr[2gI#zfh0 6fe06 ٭mZ"{̒C tnjcheH0kTNd ΃fggEFs=vp ʁ6I%0OR '>0Zhv!WɒqMJ^[ؠIh~_?)0%Ik/L.S6iT͕K-v)<‚)mH'sBɢr3]ڀՄ66!RN^Uvc{ou`HTmcK1ֻ(o$\"ZHͦi׆nMгQ`\1h%  3)Zn1m8r2eiR7@4wfKs tyæ8u_ILIԴv^u(mck̦ߒtkiކ5HIh>o2@3Q 1L帬eū 7at1 2r&u+]+pΑ)S DR`m+WcƤom|v`dL(P\f$@N9Pkn|]モE~n)Pئ;R__麽3ׁC#EFgչ5D;Wk99r tAtqqQ 7aZm+;@O,/S zG1:c–b[{g̶qsCH]a sn|tq 4ex$)S S !93抡;s8h!uyLwj9̦պe+tdss )Q` le;*`A a~yDM/t)S @NS`;ص$r֖;jB`t5fQ s yPNkFe--.ϩ >ŶrHܦ,LCҠ;mڸ)S)(P4.roo:|&*I)#g rIw -TN9Mm}˺{la|>5O_0,kMf  %tMƃ2v5Q->tH'O*s4h+O婧ҴE¤ԭ6@_2K:ڧMY޹$ߖB{{?na~5 #BK^P嗿8#*,wŋˇ5?y"Bi؁8?#U駟Th/2Tjc{A/iڅe|KN %hɫXO4v!>cdͮ!zu٬W,&C8a1-'In3Pcțmj{(=gSG7 ,җs-M?c=ve' qg*bŊ/| ~̙S? +?뿎> kjxcx-XR 5ac.\wh#'˨?g x̧?mf%\GKrn_\կ~E/zAxm |_[O>$h?=G?"F'?y _H vqG;nWC}k7dj燷_W1mƟ'dGq[lbc^o.ZHª\fΆN|ͻ[nyyʎ}K_nB ?3 6g>' uXEl:,Mԧ>WBÉozӛbfLtuu!s\T袋"!QG9n).lj@jL,X@+5_CD~+_)xůN+?ܘAlBN033G' @V}o}?$ -}M\&S`k<>fя>O~c9)^{6sr--< pc >Ux|QaI1dmŖbbb-:7nY?oiӢ|˔z0^P 𘑿 yb2g1o,ڜn&yNJ9OOS6)AXݗU}A]xziхg2.Bj 6{W]u> IDATaH#8<W#[3N:|v=/‚&@QmC̻ꌾooVK_Ȅug%;j5{Cyl5]wD$hc9M*$Tk.T 0SiN箻˫U#K>K׿Ї|</Ey?Qp,?88g~HltTyvN@BZZT:Łmd.l{miO[`ζSO}NuL۴}9)ڟ8@Z>m)w((-\rsŖ1^B|Z[ ;WŰkq/7@]=- -n{bi##V$j]t @H3sL)rbI3LAA60Ljz׻f wP"]mD/xw={vMLD_WS1;twaUǬ*VO iC#9iV?&_ ޺w}@%|AC?>zKSR D('%]> ߌHxk)dOWb}' j%,+կI&loay*fn̫l\eyK7򽅂  –ye/{Y,Tn0E jg?ٓO>Y` Hnl3t4(ЄaR`?Sn!qP5S S)w,.[Y`ßJ䒲Xnb#DV* { rn\P\tke( Xk^=y r(B-@`P͜w`y !D{3~bTVˏc74H@#ȝwOPd% 5:QJ8|,Y% >R;x [I]!jK(@X$1A ZE'~! sxE   |~{QNK-Mc#+4qop’b]wMJ ,䇄#U2X\mP9~I֠FSE,DZ clLD%BPNi凤>Cf41ptOIlOmY>ER(3hDk[A MlĢ\!,5: mV{K.(̞Vؠq'rKmӋ.X:4KVx>deɰz5wv:;::@ tn4H"$d 'Vˏ,(MJo~M,%x̯XJ(@NE&. HI\ƿ+-h;RIǓJD$5retTzF9 -3@`L?(3TQ1ʧbH=(b"]nL'=RPdӠ̨x27]XQ~-!)L[Ų0Xn`3n_*/Bt`ʞ%˻^gqo~-vthA놛nXMY8]Bdže;W 죣B d /*>tW!(=-OGw -B~2OQ?{yEh(\ O-id^xu$-wʆҨJ`"I#*EЙ{uass93 :7*~;Z=XUPHs,ɋ@ :L3cV_\tf %֨p D('Nc @y 7(_5jUqфjh0UGsB[GŒ*VP/7:Ihվd4o>|>$ox٢|+ .̆61Z-DJmb-i{XoQ@Wr9ֲٸmYmԱ񦝛oѱs:k>ue hpىz!mY/ri2]o"&K>];-^?2bQ ƀiin?1,z^OP`b-BVόfK&+bJԿռ<7@OL}Ş 16s 3˴1ɹ,V]S#b̔[chN5R0ܒ>w_@.N5Tj*oӾJahTxx,t,k)2Z`23CP0\zQiVǘX'n ˯Ԩ^A'*Cc;aa+V'hg?S8U/ŰNV='f"_ۭGڂȋK/pA=HAWIiTO6BN& H jlD̅přYd:ӨaA[a%HWН@'WΊvDcjD-լjTZjNYυ)U%>ƺD¦v<fmDM \hۻGU2KU@)^ȼYb 5IØgKҥbqH[q|Q(zJK \z9_`!_-5cۇ4ʮnTwi}S xfOuǚF- <ȵ̕J2SLT'3gjɺt Nȏեu6UGn$%Q _)V6@U5Rv /sj۪'QzeT,\-'8fV2V@cF\Y.zAjתԮަ~CQ-: 3e>0]L+N9|i0;Pb)\?bǤcaX4R `OiyoL.ask53)h0 ~6e񍗙~ݲZtȬ,$XC+۪_Yr-͡Tp@3 ΓN"Sz뭼{Z$Fg^g\Rת;KsOcX]?˵rxg_eJ:We)fƳ5%s9k5K /*9F:@3bΕjfjWܵ/]I݃*Wfڕ1PCuܲFhVsr o 4hY,r\I1]1PͮX=O)0hjd -8nuhFŲ?P)CqIe9BGj3>m-.>I[CuMh?SA `+E%9saXժS#\XSϾ!f)%G"?ٜx]mWwJ9 $_D ϳG^N检ZX'F\Lح;L|n&~ Y5C&a(mR7q腍uĦk`9evg{J}GN+̞66^EqmŶi%DXsU-^퍺Dy":C3g\ sDCo6][s&?W+9~pկ~h]w' rr.k@C_93#]?U_K+'0լ+eoSkOi’S ;I!]1ڞBwo&vmkۦm_m'{cS&|84ȣ+ q*N2k3'h19l"2;:ė\7." Y^€Vk;^p.P!XFuUѹI#4`{O 1jcÖM0UѦ[yo*y~Nuf u1Ws%K` +%."uK.q Ko9:{f*%VX8nvVV=ܓ@ 4"[(^vTKǖ 9W_%'|{ oO8/>`qB>`8~* 4v,;_VZۣX9[o2WDXu .heFIX!lw>ru`;gq*[:1{*d>^}ŶDYU6v5MDɳr b$x14M<5GKJ`c!`O׾VK T am';R2vHmRN;Cݑ(f+xx8Gqs|'?(^]t/6%7],9S# +l5c~}JHĴ!"&WU<w=ǡ JH|wQ2 o}[`kԿzF78$ՅjašDˡ.Zo:I^>Xy%|[T,lRYKhUkmej䬦nIWbR)‘˺Iip]}P09?ꗿZfn.qW4VA*~G Q ʟ~`|nkQOudbVK4Y ~7M"Aؽ뮻+% TʄpYYt-)䑼xq)$3=*Τb(B&F,2k>"3HX(9nv}te[\jHzǩa`95 uG qMH`$ ., IDAT$al'CVWzu]d*ztab `>2afUHq؛L.<(ڒT Օ7.[n!tU{+KJ]vov:2L`u҈/{ 1r0]$..(RiA6a[dL n :` k1N?N-#HS(`MA 5?`8wq YWIjRHPrՏc ,+s42~RztٛDR !_:$#c*>㻪`Ekm1%ibe! UI0c팯v*u9P@;g?Yҗt(cƺC?餓23#1rqRwvTʔn>)Tve;+ӡ9CZc>jp )C:;X/Z^TzC=;S`8 `-T"q8i|-wD`|"1F/oB-%kڊDkkl} QRX0PFޤ74̷\pX'Kb]8`i$p񜲌's Uሃt`WyG Fe:"Ks1-GĖg>عK/]q&9sqAPg A4҆V j5W<#,zopM&hx&bx&/[e2QHX (@l|8 &(*X>a*y [0ȗJC9o*NJ%$Xn Y?JH ت?Y %>H/*Rr"6 4`uo.@g5,cp'հ:, c!М6L*1&)Pւ׈V)&jMLIkmCc({K\,Sԫ#1b}M7qJ_-R=V}[(N0j8n(F~$Xx+dVox 89%Veys ԦJ kج]e}~kO7|36\;sԠFe,6b:nd!ߑ0Ԗm}F.#01.*\fGRbnVlGWqW]{p]|Exqǽ=yo6%>XLztE˿6l3օ={e2X(-F-X{/6xe2 mOtr$W'p;m- s& 9ˏP#m(Yi>c9c6p1YJ5G9s ֋]I..:ݽyv#^{Yg}_{ ,/ t{}+9׼#8/b=wyn8o/wNT/;8kR>sgM6^tGu$*G /y7tPxm;qx :ޱ'cZogΚ&g6Ac>n.KF]R~Yg {ӟ>zZl!U|0/կ(__SqM s`lW4r9ƛtJEϔ'hqn߿{s Ŗ0lYТwk`U37i.k]~9Z4 TrPOqXQ^H t2sNSMp.xy4# {%c$U[C"kGԮA6ZuUёBYbIrAƤHNS5xݽ<9@-n0X0!W @';Luu`r]wm]w (jW]ze3jU<{ydm腱L2ַ5JlSM MDb:pY8J+2bSȤw|Fַʜ~bxx|TGT . #N_Wg;fmH#t>9Q^?a99RtCVy1"9 ߹E@aLkբi֐J/lЋЭ l,2!&bJB;omCO/~9&}FX,&|EbQ Ea"TV!De_T"Mޠ6~E)Iqr7Ŝ@4rjw9<)<hT5.zS䏼m=%5PSZ:"M{'8`ƐcyB Tᄌb`Ztv.+/ N85Ф8 Qp)1~?p!_/UM~Q{bz8  [|C-hb~Hd%U&>& <D8WFY}% 9扜D_lcWK[#+.bm6m6GYjq\x2_|; f@st:ēGyvn+egs}̩3q}յfg y saQ6YsιfϞu1_PJovu67< K bW8,eF#6-a\㈕vW^y5۝Xh&"q Z,XH@&11j~k_#A@6ByZf=Uz9Ժ⋝62-R5'éKLɄ1[,rKbebHqH`eZ`dtTT_{JpA}ALzq釛Eo5ٗTGݱA%8* $(u9<3PVW,s- e#<"8RxyIGc'cqo{0IuuD|6f-28iźP8~(=jk*}( _S-HI^BVg8D7~Pr)YX$NO~B|SF2+% Ra:!숛uQV*xaȄvX+͑U[[Tnt wωtdmw}Xbk`U%0Tݐ ҾJ>d |78ԝ^ѽ,N*a %+y_-l8ae ;.[0,mMC?y2B|&:&U8AOOAvL;Nf,<ʑ,Cp'+ ^mf@dyV ݴb@-X٭[9b>$wK`MSA"ɘf‚J+2K|h )<"} /H[͈C3ac%Y&3i&ZK4{R˾ޓO>G 3)0kMŖ\3jq+͓~<:|M7V 9;]qԟUWU6U^78jMa1裎xu 7X"Y4͠K.r9! sHc\ZA&U~P3S+b=b2+dr>2 :B,1GP\da+ݩjtX rDe%"]6IfY1qw|"[IUK 0k4c*䐏1(p9fۃkWW'[ C:|)d|*"ݻԫq^{_ Skq7@Y3leC5r`ȌrgVSyAQ[|Xp\HB/)P#U%<qvM wЈTv"] )fSI(Pژ?Y^wn\,$_zgOͳyMN8YA(?Tʾ?p6Pcʰ^8t\֨Ր"KBX `Han3@nᡏg?gGW<`RxɒҲWկx>W4Q#l N6Ux ^<(-sO0 'i[SP@vDd:Ά+RBNș\e1RWҴtX%[ MrFk(j# w9VS*j2Gf?4:IfNä8|}YimHI)2`p%&*eP+8:j(ffiyEW*|ыmk)D4uy$1oӵX>J5d_x1'5 s-SZJӶ'v i,;8'\ IVD+;b^* Ҥ9;kIoÒlr&gO}晙gg7LazZZjڞv ЈG$.LGR8jc ]g~lb,|` m,>ї*R1[6TXkBb~# |".}c^`Z1}E4̋=ݹ;kLb$_Y,b⋍@ IB>M/U)qc}[$W(P0{&Ȋa O'@phe/|}oܸ %@J]ORkk@udS0*6PfEkύ\z].bw&vd H@d>]4B-j.]YG\wl);gʳͲپb wpm9̀n5@ @9t.U\0W%_ j죳xS4KONΏ= zl7]u\=<78CyQv] "]4h\֤I,2}(j ָI*LeMa,CQ#"\ZPK"쾃܅%T-gVN `U.,,&(Xߞ,ڔG`^f̼3鷟6pS9beF(i̳~mVXXa38<β@z-<tM9Ý8>[`ti?8d!(鯼J۶mu~#+ ?Ю];$t#OjT[lHAvO>df̀Շ~X0vi_||pq]wu8f7K.#9VvԨQhǎW\qdT:t(SZI ٭[7NJx/Ί:vO? ̙39CKW*%1G-뮻6mڄ8CnjөS'*rm9WS  a9Z@a&Nȇ jZ=6WǣD^L4Q?c9رc brxn܁N؅wQqrrpT]m 7 {iΧ/V_r~fDcϸzjo߾R#l|ӑQ֭[ǍɻO?hVyovH@{⦆8hLi>K/}tzx Tk2jBV}ׂL_} :~x{`xF:pƬXy:ě81O4 /_%>ũS%/p0hР`WG\W)">PQR|,~7C<9Syu1$c* 8y~ڴi8A̰ʭk$GځKl!aX _ >b̤| L%Gn}ɔ@a|G}4T't Ut@K P}8g)qɵHs8q藞zi?]m0|:oƊ+]:|s=䓡w8+V,n&n;vZ+1#VF[wyWi[[RqKKM['NZ+;$ܲM BŅEJӢsWQP_"b|kF=t?7zPQPgQ%K@O \~1j-: p\ IiZ~h/( ޽aSRG)'O(DYXEYDtVEr&#*9s [1*HjѢ#lP!(eT@D d[,-S᫲LMG%@|0TUꪫL1@0  )6K)R_G O%`MV4]rry?WMm~x=| /RPfCERR;]|99[X,̬ fNJϨ]'#n#νi.WjڬvNOOMOO¼yff:h̤*=P$@OJ $2XPIehwxRܹٮz-,::q{zr.{͙b§gϞ|m1Zz_&IK sFȌO'hG$y4)UR?7~{n>]Kx%/SI%p%QxCuqצ}P6E/rSkݛUQ[nS&O9U$T="@#Ƒs~y]_|EZt~[PsQ04]<&Y.b\Tr (ۍ;j{F@FbEqBC4aBt:?D6Fx];T*y0#:h D).k9p\vy0hQƩix a'ݫ0wC_0j'C cyfn0 ݧ0 \rɥ{ 'gϹ,H` # k9,x8o~ M6V"EIL!0NN}[-~s}pF}[Z[l))i^)Ih?~Ϥ`%;0d_~93p¡&e5ѹ `"Q1\p+񉂸-,<Ňl'F1Te8+Fg믿ji1(0::>WJ0`$?>LኦSn3r .@b:MSJlӑPYQڶw2NO>XY$R\hY C/ηzhH"kFaR4@)9^7pF %1~;VVl?Bpœx콸9A#Iˤ'?cEBfjddZ 9bخقXeސiL9)G =I)4xV0˚,B%1hX)^x(ߘi!k{1 S?ziZH'=S$$ nxwgq$lLk*LEmc9+-} `iQ:\/޴5=, &vCUvf9/g{:Ĥ'q#Gak'A3C1aӌ#+ nSۥdYCjҴ 0+#yz\z_1cǞ5d `<,e7!$>G[P!0nOm2,mߨƼ{bߟۢͶ˼LSZDdhVLw?\߯Rvɱ8S߄QmMI7 Fلeգ0a6MVe1GM9T v)T$";Ccd0Y0[ F`d4*TXT#y 0d~d@ Ez$R&/ Lu(V:%@fyN8=9bwo]{ZӱJ-ڞfOqd;963vIO=v  aqqB( %_Pktnff 0ࠃHxJaCRoߴTJM%%%P$p.IDA@h4]4P* F-uQ/Y$QG) /&[܍FqYXZѥPXO7œ>_,VD# Mvp:}Aۜ" +9SUbT^yUqʺ~!0vQEYUPl%KE1ZZZZZ!$`g*@Y}&0c_*V Qf@W,̶!=,.dŰS}["yoZZZZVt]V^fio,fm TpKL${6`G?GVEJ%ϝ3Gųi/>]:ԻIe`@h񒐙Y6Kx-#Ů_2دSsK/L9eUeظi3k_{5@1pbM=r(/Xr^aʖ幜˹r.#/4J?V"Y(̄)Op p,[&cnjƍV@?5rXGuZZZFt]6U̙!S3Kd *.lsRьh{9"_SUѽ'Ξ:iCB?%ý;8#Y$g"ae̅}(ǎkLȒ_2TTco^{<}XHB-qKՒ!UT`U]c_-lPj h h T6 YAWSjb^.YXP(Yܫ xQ9; R> X*%{<Em{i61`4`¬#b_߆Mvrb^fn-Uh h h T ~'_ ?H(];wx]#_M sHse1{)tpMW"VpxZKP/j6wS9ƖVfi\24FɶiVe)ʚS*2϶\hl#w1ņlEJ Z9~1''bT&M)cMR< 4jԈoU/2c)"%QwuG#!2ثQ ȣfZ~/@y}m۶ s1՗*[ 3pXIj!ϭi؁+-$PI}rOܜ^.͵SfPqw 6U?WGh[s0^ aXF%UeԶIIvܐLY~]P0`{ r-29Yc333kuInseGyLJ*j``ذaLzXraNwɏ7"៓?b… cؒ'`s8P+V&ٚlcmoߗK/}󉧾*ד c%x1n1b'F%̛H M7t7 SNo+ Y# f1I½KNSX 󩧞"&ث G=𭙖_ ^xaڵLdI=ChJ-j %mZpD ux=ϫ^y5W\T\hϦEL"+.(.)\wkQQ^9U'D[">Ek1]G ^0E;# rq[Gb f?{@J q9нA0jԨ;^O>FMJPAA5!Pap 8xO)IǎsEn֭[n!CBT_\.z'\ XJ(^" Fs_d @;4`.j>zh'H@hHI4 %ҥK fH)yFd0u|@#*o !7h?lf"{ ` ~5_ |k!ʯ l LBm3AET"U@ZpQB#g k8:FK P& +x5lNV#.>.`Ǒdn=QA\5c2R-Z*\DUn]:VBI /Ѐ!XMiT8%C 4"Aa,(阙rgbe1 &h4s=n]Ls%1Q^y_B1& VH/A\@CU‘m25Q#0pKtYwUĄ{ 0C&pCw{1e6ojpbU=A)__K"ӰQ# ~$^1qӧ]UtM݁t+R3QLx_ !*q)=F ,a`*~РA.V T|Y+.nXB,YFs3gQe8HɠG1丘6]ELZ ;裙_)t 1z+24e jA5\bJTSm^wӶ 0͟({a_Ա(e1k 2EȲqkvdŶ8WyhIh h h h l'o;/Q#Lc3l5{cIAXzjD,[;@L$`Y%emg 1˺B==I`F%P2svȒփx}fO7 :FK@K@K@K%ߋIT~z$ pi/l^hVt}:ɶDGbQcz ղv|ůfqZZZZZ" RY ȟmAbtvN&`OJ'&g ~]t=}]`zWq[NQ. 6?{鵼U=WE &{SC]5idc~+˵RS0 V\Bj(\]հJ^MJo<F5W M%;gd+.@}BTeaCovA\EM '1^ZY\bRRM-TCeȒ@q-wmO#9Şٹa%y.P׷uyU4nЍO):F_9%Me7$RK@K &@ =nL 8BRL&TC 6e`Sq fYZGW;A_~c@} {)q0gby;/gb 1&s2Xl"^. <+s0Q@Ɍl)߼ys ZVXV#Fl[n6ki^wSBtZX#0c. șbWvlYEL #j8Ɋ8[Jܭ -[\T a(yx020^,rXacڹSƥԁ$>&E3.x]<,:J²+e9`9%L^@ "m4?Sz$ʋ:B@UV򶬘Q*^@='_D\qaw8Nt%0D5wܩ .NyTyr;VZ!yݛSVCQQ%_.\O1HX[lOǎ(wSW_}wqaΟ?M6!֭EGɑݺu Z#7{}gye:ae==VPG~>+vL<_+T_jJY?y0֪݀p]*~FX::LFŹ!6>ra+TbK+WUreܮ<i|G999SN3gy`ѢE]x_m?p{cL 5~i&0_ԃ>P!әVu p7E\*4 V5%KHP`ĕ3ޯԝ ubY^sU߹c ԫ_*yv ΧKwVRbmn\Fy/ϵ{mA{ETPg[ƌPs10RۺukwƎ{w*| '3Gŕ7~0s򫯾իp*`bpu pHnz->{O?}o6=i@2{/ )E]D.|zuI3Ɣeb򪫮j۶1wU F1)b -{c<.~"*gOJHT0|gO=T49"H^"msG/T=󺙱, Da# :bӮiH 7n33z`AXv` 4hmò``-_7 dWC+elMoªӯoF| VHF odc^,^,q-s(XĪFhEj#Z1cLp t|syСj. E Gw^׮]sKZU8r {Z; 'ԅ.(Tx≀:sPa.]@`Fh_*@K<)0YFK,ACE2įyF-"$dulX Mc_x%jSA1.AռiӦ~|-Ogӽ{w 3f a0#y$:P9%K)y_|&F~%/O^_*O+|FnLW$[ A4aESj٘d!0keYl̂2սNGC3C:|᢯Q*tvsNzìDHV,EEY7MuxS'뛱3Y3G ^_Z}[$ fxYr 4=q+6F(ᦄJB@|&4 DnA\}x?b 8$H$6eLO;$wIe%,H9 _kAecGJ-ZrgQEap*P*z ÿks&"VKYQܯFƣRS  ЫdڊQ 4T&,`P2Ս@~Х^x|{x9J@2<2'\gAG(&O1&kVL: -d0w+2+22cj2J0z!jR A DInX1_bpo+no;wr10H,IK<||'LR@7G 8Z?_^M4cK)H Sԍ%g"1F3 [FLŨ``"4(fWňLi1 4Qscb0XrŒ!ISKέ|Pn];;TՏboQԉx0$ٝ1*l6ȫ%%'ĽmV{A4MU tlcc@E;.ߦ|X-,b #f2ߕW^\yկ)bŕ@Ս/^-S hryG)Cc$ L+Э0=/6 PenZ0rA@L6`BL0ذajcL/Z \2^| y o@B4ZT旜 2Ӓ!$F>|C|Fa^~ᗑ*2r! ;d^ q2ܻSHsp%Swjvsbo81}Q梹H*2DwklYYЛ^S|͕EH)FI܃U$^?zQ|~a ~__0;cZ$AX5z40M"`ǂٵS%HQi̻r,mߨL%fNR5լb"00d13ZIw<,oV[`w-IB.[CeʀWWfi<+"@08#2t}iE <&x|{~A_~\GD8n ln"(Dui`A*i3R`:KeVx-' _@o 3 keB]BEFJ֦~pJW\\bR;ndgrLp @hs_l>jy\6 ]#*ӁcLlɲrJ:T i$PD:FKzK-p?Zp`EGUf܃%E7PCT $gON厲R,PʆQ, L*yOhʼr 4{~ۢtdБ&`U*'"80y]y=7 ƴ`'*;[v]Bרiـ.\@BKUEI+ݾ[;|f.Tx8gLtU8R |cj*UEQ[|X\E5-kUQe]fMA@k2U--- <=^'DSbe@sɄdK7$J& >7L3| ׵P>]O~{IAY୓Ne4n|{׸8²$Z2K*>4{Wmh1ZZZe$Mםۓ=L.j5w0!j)p`Ycb"D-iwtaPaLuOUq&4V߆e}GUq[9yA[#h h p `1b^gBT؎*>k>]a:ureKYWPK@KFI:jU5*ĤߠA=ƚu*----%ir٤W(j h /܄ʻi ϡ(eNšs$&tc@5yqceQ8ʒ%Kb^$\}˖- +ؾbcQ$p2)oIOk֬1谖@EV~۲}5-%w~[u= ݱ(s*ee6cǎየTJ.cƌ9sJE5i҄]їE!e-/ xЬqT7nd va 6Tv1c g^ZhL6-338R!X|… uGSfD^m*+%Pe%ߖD.].СC3?:tGi-BGƌ׿?&e}=䓌f-ˋ/Ve9r9sO?-5~.pNFO?tnTZ$9Yq%C`1=xi1a+Wmsh˶ r̎sԫ[{XfBBYac֪ vÆ ǏGKz.pGx ~zTO?] bl_ىUV :e?aM_o+W_ g}ٵkWh$t\paǵkRGlm`hҤI?S͛?3QܹO>!_S#FW /$RX-}n֬%֭ۉ' )SΝEvU IDATTyҥT^Xzv*B>ltɓ'㸅a۶m!I@ &D\hֶ^uU֭9OS_RX۪Uh`յ^ Hߣpjb{z^"*!}JN蠈9{a0/q¼>^`q=nVO/Ν;&LP/}U K9ʕ#9moLv]*Z1353}Q[n3D~`yӐ0Opk׎NO>t`XƎ t]s5Æ Ev)4$W3RH|lI'0F1.hJJ#;hР/#9Y6uY*K_~2n R5{l1 ~W^ E ɎѣGe1J*hJB wMI[ʉd8*I70brwR"#}ܩS'#F]TCUb}m@AC ̙3e-ЌQA vg͚"vI"lKAJO*y8ycѳU'*8xӖ֬ؾm:1wܱ5ܼlѲMNJOϚJ*4-ZtP |Eg޽^sNttGz;z ?L)Hbd@Σ/F7n\NN8@8@Ez^pl8p |+5uZE|PA,AbAt4li<9-@8dL *c@8[^`,0i6ނʅAut r!kO]SGG$SF 0W ,(ҦMFaJfh L&òp`Ay5w) Bē)gD TۖMPv5_h)ۺUˢb97?[er$ =)?ݽ^Q8}0]UQ021aҪ@`FXkl"|F؂F~g[-{ ˃t{W1!Rq$&)e 2O#}#RR`UA x˔/m[4Q4l 32ZG~ O*?zOC,F|渋cҥ4/-{2'`|}eV|sT-׬]+4 ٓ8֮Yc7%57lݾ#-5UdoZS y\ܼkw:Qv[98mNۣK'u=Wi|PZ-V>*;6?3áR$!!jrKe&&$ydMT$;XQN ί:>` V)xvCDCIz~/%PM4eE*!0~_~/ҌI!q ɏX/  @FÇc77LpW|%O".aMi9 MÏĠh;8j ix**,=-o_NMY%`h\;*:^q啴4Lqќ[:u&CS"KH* k|7_F*/U%bWiܨQCTijTwb- gΝhׇ',5U7lb05蔜=D.I]3u?(OvVuD T֐ @젓4z}Y֫[ǖk TMϢ<䑊!eݗy9,0c:pM>p=EAV T`̳t ĠPXұԩSD#T1T޸`QFq3H00}iFLvB2I%dLw߁ EM9%GG,2tT@գ 5bHHc6m0cFڪbP)Gj} '#=B-tyN[0K @Jw FD$TuI8lkmа! (cs~iXspa 4`%q#Re?φ_F}:JQ6_^}OPpK6nܦU}ά]7nSg^tΙKY{4Vʒqn߱ qe+V'G0) g[rͺi9$n' )aH+WS68V|$@4e%vyJ$JKp "ŇX;#mrR"(gz"Š Y>bN#~AzsL,b Sp^B\!LjzaQ1T&7G <љr1lKX@U`@,([2m}%L"Շ|`!h.rŸ/S21}:/6̏t?ML"`2I$|BRRb`투_.懟15p!ME "W_aդD 5O^'*~b|JN/7ޢqc" SRV2@›k#Ix1a=ziL5؎ƃaxhXy@L"1?x1r+]dځ0N\ ~7kԭܘ9Hז?GʃHf!F\iCwFJSܷ0b3W40#dԎA'1w^^x=qcu8ܶmUy[KE8zRcQ<`+ T~@MB.SLi]t`P&1DF)"tM*\N=T|Lcf5bŋWCeLgZahF**#x'M(32:8MuD$ (rnN1?2GtQnTP! Ƨk) J+I!ysSvv۶\T>ixTG٫[gmzAzZR=Cɥn $iILkqcV %? _,$^Y#!ѣ(V2RkLixRA5xI͋fRۃyJaLW[%TdPR #HQ~hdd~@Jڅ6eba[yoX(WՋibmfZ*ēOB\DbȒ ч*V]`jS .^K@K@KJsլ11թ%`}s /%%%%%%BZ !HK@K@K@K@K 0? 9h^ZZZZZZ> hMW7-----rkrFK@K@K@KK@k5k h h h OdsКn oZZZZ'-?Y뜴j[@I@tO:'----.%%%%P~>IK@K@K@KK@k5k h h h OdsКn oZZZZ'-?Y뜴j[@I >%KX"33soڴi۶m;vX~9i h h h h T> Aǘjskݲ!MZ4jиv:YYYmڸj嚕5>4W^ڵIv x<Rɯ9wQ5U9QYH,Vp>՗{XnwG p8ư?QڵKX̚5k̥еk޾fwѿ\EgϞq};q3 I`ҥ!6nܸm۶ݻw[S9Sedd4hРI&T;0V)jĢvJ[_};]slY2{m%e\/"+aөF7OkuQG55MgO^ޮY;$8q6 mwyU)w/kْ3߶wʪXX;w@jӦ TNfYV cPa0jժŋS; *TofɫCl%`+?Y}%ʯ6}Gu֨U Rmv9(i+fPǾs[5Kڲpcw){l=Fk^^zRwq/xxs<.Oqgo{%[<=硇Z YUpaXhQ˖->ڵk%}T`6mڵk;wAj_Sj D)J)/Eixr  Nu&9+}:袔]|׶M~]uK֐!l~O-~w͏8⨤T=-Y_:s쬌:Nz-J.;7]03U(Ru޽gϞNOL*j| .k޼y ,ԩ*o_~ Rb`+_ yz?~_ohٶǶK;ye~!Ϫ`1y-EhцWּKlZbw3\^]A8!ʴCIY}VZtkm]ڔ7aƦMӺtifʱGldž.p/<2t^{ySgM@=8}0#XU~_=~嗿{ǎ͚5ÏsǦSwU3t!|p84C 9ꨣncdpL;ܹm)pd{۝hsm.{rv͟V M[ܬu}30C0?\δ*^..DMkةːa5H10f:]gR:E6{rS9Q幓SuR]g,J %$$йQ^=ӯڹ瞋)K| ]O<f&jdjݸqcBwĉ=Yg%tǀ.rC.0c`aF/20W\qQ:[ 0n;SYP0bĈC򡕝XpX`%;6$7R7s؋xefJZ`_w!;9l҅|GS,t dnN=y?~ucSj[`, ݤ/(#;8q =$7:./PwO^ȓ+O]G7ljǸKJh1`c,(ľnw!&~wڵtim:u^{IOpےRlb O\BV8k؍'Ro~:II)qI):NJ%i+6mL+gI. HI,z7w 'Rb>⋻t¼{OCS.RV^{W~:iO=X3Ϩ,ѫUTH`pC&D[qJ[~/h6 /R{)̟?_+aLH u ;op0ƇVR$LU.>WOOoJ-3_o*=JE2FUn"!4hjP[ӧV@U 999LMeZiI$RnSVU;#-!3ko s{obKǒVA=oıv~Ճ6k{j#&y#rOn6kK:O\_Fb?ӿgh1osӟ+"۶_1]=减%O^yY0{N4RjDuԗZS`6OJFIuYۂ^tKݰA"<]l6Rh{S,{LJJڹs'`[eIDAT믿ꪫ.2 n`-c:MB/bѣF*,,6l4 0 դF" &r@11b˘2??„ èay01E 7:wyW^b6l rTeE2 #vEEEO..LjM*LS-2aD tQtm)3:_>hӗ8餓n)E? !3tPbf&4c ` !Ra$G7-clA$r@_j*Rɝ(_|A$a@kV!߿?!#?_~‡G4[ !x$LN JE~&eyqR傂nil4x^7LKƒ a4u<8l_7\!CE!Xx\s $,淋.! 9=&IJI3ZERjv=&}Kޖ5vB1E~1)uZZ^J)PnC^ A㌉d`jPFL /3&f!E@7MT2 k٠P`@@+_9{v{=[=ys~{9ʫfD4O裷^Y!|/x C ߸s !,tA'vdӅ^0}KÅ{b]\ͅ$+,.Ga4~^fdq2x_v4e!r uƚMcc'%LRrPGT-lƧL2i${!mpb(DǷmZ({XaD[:Â!yY$*˴^CF7I_ JPL b8رch((OWذ&AeZ1STRz3}gbYKP̪! |`sӦMXX^~eBg߉Ի}vHJ2ˣJ`>|Sv# 3K@q(P(U\s:veǴbZ lv~9#B4|`Z)#~+qg\@)0L݄%Yyڮ7uz%atX]pP77[@rP=:Erook)Xl"7O93l^A<=--=6A'Uy!F''BeJ'`;!*ܪo>$*wTbBJmI&aEXiwM Q)^rT OY-R;8Qm=(@ ~n؊ /){ ۓ@.IsAqYE|Vv]wZؓ.*(<ۨV2aXn6 E@tUtFJ nVTki|T!Zr%PK/#ar#Hv:Z큖=R/a>X[R oji5C²έ) l1UwY >&8¦Tf Q9}D9dfժU~pu7!%lh/+ }LH11 .H {A,xTǐ`l& HETA4ɀdqX0sPwurMry{,eƷ?zG擗`"~r  7_$,UUUy}ԁ(s˖-lYh0_RDL.WO\vq" %8]Fl2$+W+M Ig偩ˌ7 W#JL^Lk85J_L$4Dd:`<w͚5Pv`c R/bؽbr_C [.\Ԃqg1m۶ W^~ Gt&*~RG+u(`lpYnpBeai OϬDkXpl;%@Xx-,y>(u}}j~u(,B~h XW};KV}S0ރ0R(尃EOyi?jS[0~˧:/wy9K#r#s㟟] |{?@JҏUvNBN4N:- }Er eHۡC~дhҹk|W׏|k5ܻݮ'>|l_2hbA+̌M1Z_O,i oO|؀#"ڊ)QgKʇ`Ō__!$SJ0:&+ (Պ7圣@--VL#7، ;A,aṒ ]CϬmM,^6OÔeQ ޔONb;W!,oM+cB81Y(s{Ψ9r>T\Zj’ɂnӥ 6en]j[ Pvs#ql#R??>)$WkL`:"rOqzdӅ' v!KĂZ.E(*6)L4L&PVYL2t GJ'~jW Z[7'qé='l!, 084u |N>3Q]U=qIJ뷚86a}:s-}=2S!kmA3Pϐ(2*&|5>pa\!1hD^ qcQ=H-E#guG\{,%cQt1Wj>KS u߮?  >ܟ>r1y+Mlg<t;|NX?zzQywdIa3#%-/47\?]7{NXRLf7+sZ a[|D!UL R&0eŮ= G!ѬC$0=EkE Cq KOXPiQE!¶'3\r /Ԯ`KBЌ7mCd h[T,hp +"CB P MbVcneB2%@˩5Bse k':Fy0H{r"^ oa,mZ3\#C3L}.K$+ ĘA7s J4U ='eN˥f~@.>n[&=7S%H!>QsjqTMY/>pZL7-ft7I_Ͳ9NPE@3MUE@PEVE@PE APE@Pt֢("s@PE@jZ"(@#6ݼ "(@PnzE@Pt~ ("(B@mBZQE@{T)("d f iGPE PI7燎("-Ԧ-E@PG lIENDB`dB7NPNG  IHDRm.ViCCPICC Profilexy80ƾ3>v ƞu$ chK#JڨJI(*E%R֔%E~gy~{|3pcQQt.S @&$1 :jRljw2*n KDZ~菘 Pm668>&*8 HYD\ #xi]4 $#`lH iqIS@\-P.E\3iﰑCBoJPuer_ٲZ!ϣ4Է!L`\c;F揲͍KK҅Aۂ&&N°u&S ,; 2 - ;G CMKOfHdH:"}LyRJ;;TVq,jdR zD;G ōwM{n[ZYboP)[O/=_}Gz9H'cC"x#(QFb}r'$q'D/ILN?0upbRj_l#9Gi7ɷ<)>g ȅagΑϓBC.KJ/ڔ_R[\Bd%Uk׹n0usfڡ;}uO744^wŦ35ih=ЖN}(EFw?$u@N}}/Z^W@ oo LVzmq-.~X,__f_b`-i]s}[ ?mvs&?fC3r2231o|c6o&_<z +%$*"%n50ԑRVQ!WRR$(Y+{Uqju Zxg$LFLffa7,-ͭrmRw;չ \N{*xE߯O B )B6қR8)6XRGDϩ+iҿu!-7K_ٸ#z9VGyy'=I9uzRYu6\y"b %Z˔.)@BtRįT U y{]ztsO>IJfni}=a-uvwuG<6y"diGg }=/^ƿ_y=P4HycQѡweCT'OLM Lx8sc'YOs.bK> K_d:aֆ˾㾯3}ǯ[_D~egggeb}+;?'2O&C[' < R.+f.)>-ԓBI"**$$AsGQ=**85f5)>|Mbl8]ΝXa&qd.%G76]uvَ psuwUrwG{{y~gW>=~MH!dP0ưɈꨲ}gE'Ą&&J$%#S Zi9d3YMd=қәxƱʼ9i'NN8/.?p빩E=.\/).=y1,ob{VW$_/V;Pqs֕9;uww'6434OVetu>,.zd3纽^})/^v-20H;ic_'LqL_q=z/+5k߱?~]h5@a,c8KhXGp< ywte`\@8C0`A#!D\=gϡC !I&%o(GUF$#I s K;k:[1;#{,8G"g!#W4#w"O!/o,3_+?̓Dx<%"SNXKQPMRWClJ*͕-i%9&,']#($[ g(7!0㴢R FW5gԚ4L6L-[m1:6; Nf%8YZ242ehehpȱ`wS+M#޳ksO)6r' 'EF)L5ΉyNNRN>2jVۡLo>&ןi3 ϥ]-Xw)t5?n~5Y;Z7SrIپҞQ=W]7)v|?;`xeu%zm6z G(AӱYe=gw/C*" FdT`ferdec>ŋU*{0[VNMΫ\R\縹sY%{omn0hc jV VYo[O2c %vHHJIeII7ȸɬ¬ ɧ+)<ߑURVP~:+PTۀU,/j|$ԠiT(1$|4RUo!Z=&1ab]; , dr h@ ~(,} #2ϠPbA%Ú84ʼV)V2"[<&{6Sk7~>j^;y|~matN9߂BBD,E-bX$S)yv3ary;.+PV6TTWuUhikV53ַn@4 33>dr2YyŬ% cibmw¾ah7 0Lk[@"UˆÐ.#F쫠nx6 &'HƧB{drdu5Z^~ƉSig$ :Ά.jPzRh9_EWeUksU7H5 jm-5=kۚ6о~'c''{P/yxJd z9v0:^z{Ľ|3?:9-X6ZT]bYz%wfε>V?~lj(*֖`D3VW6rro Y LF;;<F;f dhqb {%CL %Z;p{[h(?F 43L YrmņG``XqWID3#K$*)`O' I0X(^RA7QDBg4i4X%᰿2>> ,&Þ;܊5h)Ԉ[AqD=5GOo۟?hxڎE#5H!R`hPF:HR>}6wwO;2ښgi8xp ȏFl1 H%`M?X%"*6& PQªp4$T IDATx|Ƿzo"tPP@)* OX۞b고6EE(Hw¸oSLB'ɝ;fo9=ƆL0i-v&+ԬbC!x!౳\M;[C"-% T6(&&x3gӧOAjܶm{UB$"PfR.Bc9O'~W9dÇׯO? my=4WjuxXcnH"AK ח0槽fgG !!aC W:((QeҤIU֘1c7n|~͚5DΘ1c2dȰa(f㏏?^t7xUV*^SOEGGO817Q%8~_WC=\TTwϜ9Ciׯ\rnݖ-[pBoO>!L6mgUPaܸq͚5J̀}5ĴKVZ3'Jijs5VZߒC<ۻ>k.ᬽ{֨QZrȑ#aPrw^wu0?>`xB;v!ALƫ<@*UV^M!?<2Prm ȅy/.?C"G]`!uaGUaj*ȗ,{=J}X6d)U,>JOD˫U[Drt`Æ UM6/^6gΜ͛{*QgQPD"w}322֭[foV.UvW+uֈWDv5J)C g9+Y{zEѳWZYʖ-D/2"rj=h -V4A$1pa7$#D-RZըQ#U,n :U<&xVV {9tbBAAnOaaa<`;䲊GYM37oVY+V$ES=1\#!Jb\Y|={gjUvujw˥pV?K]cc= 7@-[z-%Kj_c(e-"1+n_V71eʔb4D9IJ*%''R Ԃ0Œ1%j͝;(,LF?ѕ(AծZK9~tw\\Νc C{DW^}-t86rd4l_xP:u 'O~gtg!-[YB u"ЩS*f i &)S2L$f}lذ{Ei0cm۶{*=|G\;zxx^Z&Jq>B?j%3*U42槞z r+ C|[lAIr)@`ڳ`=qU!$bA2*TPqoD~Aի4AJ]tIO"a]C-U P"ɎVTKf 7_P2 ֯_H7>t{ᇿk EGoGƍC?!!!%7i@2WbQCi3C=ĭRJdTÇ ԩSHg_C^% kr0+SSNEO!9I6_5h UHÆ 9pט%K*" )NEXZJp3*La΢Pko yfBȂv_~%̥q hS(_V5]FF "KKP0%q vCSrCI.sC 0gi,|)áCbBС&W^yd2Ba!4Zi 0ɌF](bJV>}9AN@ R*Ww©O? VF%9s"=5ktG+oӦj'w5HPVhYi8Fm h%2M.qD3-[b-^nb ,ϝ;.F) v&ybFÎbdڷo[-[ɉQ ! 8rD""1ykǣahGWJOOg L(R-$R8s[ ]"IAC %°1A\LPH~d%u!Li\w@GkĒErډ(KȕdALJJr-S‚@8*y[MyGGG} ^!@% N_N|x̙3¥FCJ"o\\dvwD 5w >@q6/pNpw{-$Jf0Q'UpKw4j#=ˤZ=@TAiTRr0Sع0CF}T`nW葑2YJU5 s'L 0I|a fĄ` }<U0?>y:cAm9(4DXIA"}ݺuňW- Tfu xC,b]$;Oe í(zl r6OL@Ma6.Nb$ \#/I@EadJ(GW!{ZV`mm, W b^%4XA@uA0Y%Y4- p%X볮k/><ڝisLG=T]n Wd127:Ğ/ 1u1~>F;&3&#j*f 5/m?#aO=yBFJY9a$qF j<\,gyriiəbt2!vKhhSd%"OY( %ذd!aEE(n^.FEǙ Y&|Sس | ʎ[ԉiR]~cO7gۡӛOf8foUR{A@2>Ы79fU^("j?5[ͷ2:1{):MAJS-! ? /;O4Is5µR I^Oʳ!}#9XJ{|,7c*ĉqȌ8.ĦMQ8ݡh|h.qoLTPM>u xڅ8MÇ#%HzA{VOPYܔms$bRLGE$Ǔc=uΈfxB4# )5׊-pT) OTgNzWCUk| za/ M Uy-%FOϣDܣ2[xl]b)Dء\3x|iPLGj g(jr 'ZkznRU-,,7@7mϒy=PܩBbe6i P4=ˉٳgnjf|5㇂͛7 m-u敒ZO=xy?~KJJo!!A@LNV?Hn/Ճ} 4xTM6vm8vn֬Y||ġ4~k֬F .[K.N8%۴w̙3jժF7t֭[Uof ,hٲ%Ju:t@ūt鑑kٲe*WgyǤ!@z)rO>9}tNPڶm/~I%ŵ}:hѣǏb?n8AgdLNN& `׬YXl֬YSL8qm [nɓ$ )8?ӧ-Wj8k߾}QԩsJ g9{GP'LxE݆ bBOգG*UpIz'hܹw_ʕ!}TTԊ+`+w ݛ}QΝvJ ӧO/GMKPehh( P$2<ī֭[#|vsK}Ua. ݯY88onѢi 5/0! YK.i |=z-^X$ r[^heςkݨg?t%K@LHFT&Mb>z.; ޽{ "ғO>E$ӂpر#'2e+S 1L;V^-ATih- 34B4{]w݅ݭ_~r %o )V'::.ŕ*UJXELDD+ee˖U \;w=14ʱpF(IGe|UR)CJRYT0^1q]1$|#,_~6A@pG@Yȵ Y"gӑ*A{VA1 Vst۳o,Q$1D.ktC'A = K gN2 9 K Y:(^@@,/.U nĞ:(^@@,/.U nĞ:(^@@,/.U nĞ:(^@@,/.U nĞ:?ȦlQFEjg*=3*.ź! :8xHOO"[^OƏ?(0?֬4\ 0nteʘ[(ճg݁o ʊS0?>ߙ$? >I&x(]tkC|k7Tdelxk0rm4Y,fpiN$ϟ`?np=bYI?֭[O>/5jt_\_5ǚ7oWj4D>rlޜUjDyrͶY_i4{kՁ_}ξڷo Gф=īTB[111 gUBbK 7(*~?ob7FCft~cTa/򯎇R\Y/)ÌTuU(Yۊ/Ji9>83jG8m*~[hG<[oժUxf:u 7@b>77tI`͚5Y~O?Sk {o15vg}VHbZehڥ|RvG]8 ,lX 3<*1}\x1{icpRGi./2cdw9Ο9iXRZNQ+LTTFFO.y,8нks`ѢEL,WC=gΜAX`HCyyǓmk$wOB9ɶtmLXf7&KX!& RW(C=>p!K5 [H.Ha(kwJdʕyڵkK/8Ws'ʕ+a(4ЦMٳرc0\ OQpؘ4֤^z4Zz뭷]^n=zTR*ZXe|íV+KOi,wu2A~if6mZll,GGExMcHDBHx`١z<k.Qİ:?ckFTa,!`Nu dAO嫁dV{!"Q$@?’z]bœ`B#TLQ~ҫ6o G(x$ ک*fQ̕5[1 *RKMMTJ8IijDiUJ.9T41LرR*5[2#""dIvy {1'"F)L̽ Ni 6sF,B2å À Z-l:m۶E2B'=z4I3OS <խ5BCҞz*UV|d,t1 0)ET3B-ЊvPpT2@+O BѨx-1@W2r2Vg}w]Ռ[vJ#%<ܐY6m՜ G;3H4Y ~[cu TXROǏCX\nØft [q+WεJP FB`F%牧.1usf-g7W< P)ʵ %N 6Ǧ矏;, rV 3 +V-{9pcoژaod7Wl&xCÈvY: Y Cbaqہ=g6/Eb۝jASr3a,A kT~*a +VG4O#{2_on w0_4(HOhw҆0lLn'Nl]ȆW uc+y&9# q X vڹs'ZY3E<:]+6$άV+Žf %Yn%JV)|!>0)Va)e@ H*JA@Љ d rW`JA@'b d rW`JA@'b d rW`JA@'b d rW`JA@'b d P?am_8{:?ag޺+=JaO~9\m+`A8(npi?nwKno-t~EdWPF*bEW*W'*׎7rz|ti^A`i-<\Ǔ R]e,UTop U0悧֬9O믤3gRp:}inxP!ժEԮٲem+g_~Ӻ]5oڴETH'l~ma02 `kվ!.[%0VPlxƳcg#| 'GzײeK&Yx@#@d_vIrQTh|,]U^_~sg<s-OkWGj-Z a}mڼ~pɌi>valTwX۪c-CMJ.b~|pF믿^:#/h%T8QCqo0WO)g|slNk-n2q p2gN_XSI}VM_ޘg[Pު7UjոiPYĔ)":>HrphHIo^c ][ԬY3{k$` B`-Z༇1IGuD[a5j6mڼy3{N1O{Peok -f0&#̥ wFlew-3=cC4znuEn,ݻwG֯wmw>zn1/+j׭%\uuk\#ReFVA^"@-V;/};FZjy2ھG3jUHLw#Fm1T{Lq݁`eG1v-?RrD&Uu7~@JF֠K -]főc89s?ȡ9`0fChbxW| nF V&ɠUJ 6 $Xt5jy󛌩mڌӵGtIO)r1ccc+Cڸ뷨je *A%`Hn#TuሬҨF\rʔ)_~eΝ;@4"U+I3fu8CbdxQ/j6 4#QZe+lSG{cipX)[9?.|AFCk}oĔЈSSU t\Z&K,6-=dmҤ9ٳiR18`Z0hB4; wbbמl\q_%33hfk\Tg2&0h8qyR,\!Oː8' >}zǎt=17|s˖-=3rH0s׭[3f YSNzq!ИaÆ;3gĩ%<$ӈU d5zRP P54Y@pU#HBSAAϦ/i13sfKg!iJM.B¦%9Z2@pZm&o5S+3@¡}(6U~ ֗mSP=9pĹV1Lg\]NB֒CjZCYC[-95^[" QR淚ٳx53J.CB6`xqړ[wmz}{ʖe53I2'/6WsPcHfj!wb5R5k۷gmD#C!mqa 9bŊ#qFl۶- &ڵkTUy,)mqIf"4huȞW|DtTXpKD,f D%y3.+Wc/]nhH Fg85HӤ#[/=Uk-D,yre5ʴ9eR Z-g ._Hⷄq)4`,D)dN`Z|Cep1C~2&Ɋoj<{دU7)qr &0LnQsg*@*UTq->*_:g㨀kVtCyx\R8 -D!!%,  cY} &eu:莖QGtZJSK;(AX·^Ffs]ެc^ň#~gJlt<_ yi)N:C=תrV< U4(Ii2ՙ:.--!cb{gN:h ?0)UE$^ٳ~lx?mڴ#FSd67d ^}HpuUgfXD7cׯ;0qPuZuZR0YHnCSEL攄3T 1#JXnzvG/y~YM}hl`DXjZu&czz\tڡ .֭[klVNs b; 6Cf!-͐nر{]?֭[hd)ЏoSN|Z00oѳBC;HOi'Z4nu-5Y,5;Wnؾz-jW􈫅[TΡ(1XΠEUyQʛ?^3 X8\PWpVLp9?: ^z5-+,U>bNTl٤]h( )Nݩ!9 ɹ)'n[zbS:5H=,Jc޽DKo)z2ѝG-MRi \g # M7JI@[ 6d؊3tV hx59+bLl+\I)p#4WȀ+\Pruy-Z.#5/ cfFZ P aH=;\pbQ,P(e meEbAGk 6Y%ް&] rwpZA@b҇ rwpZA@b҇ rwpZA@b҇ rwpZA@b҇ rwpZA@b҇ rwpZA@b҇ ~Kr_9IENDB`}gryk~GenevaCourierHelveticaMonacoTimes New RomanPalatinoTimesArialSymbolOsakaCourier NewAmerican Typewriter LightMonaco CEPlantagenet CherokeeOptimaCalibriLucida SansLucida GrandeKhmer MNCapitalsAmerican Typewriter@k @@   ff֣Mff3>gL@@.3ffЁ @@!2"#$ffffff%&UU'ff()@*``+,@n-̎./0`1@D23333333@456]f78+g9Tsf:;@<=wwwwww> 9f?>@    67p q ;G*NST{XjD]Ob3fLpN n5kJwSQL XOPSQL XOP OverviewConfiguring ODBCSQL XOP TutorialSQL XOP High-Level ProgrammingSQL XOP OperationsSQL and ODBC ReferencesSQL XOP Revision NotesConnecting to an Oracle Database on WindowsConnecting to an Oracle Database on MacintoshActivating SQL XOPActivating the SQL XOPInstalling MySQL ODBC Driver On Mac OS XInstalling MySQL ODBC Driver On WindowsCollecting Connection ParametersCreating a MySQL DSN on Mac OS XCreating a MySQL DSN on WindowsRunning the SQL DemoThe One-Command-Per-Connection MethodThe Multiple-Commands-Per-Connection MethodSQL Statement ProcessingHigh-Level Fetching Data Into Waves ExampleHigh-Level Fetching One Row Into Variables ExampleSQLHighLevelOp Error HandlingHigh-Level Fetching Multiple Rows Into Variables ExampleHigh-Level Parts Table ExamplesGeneral Utility RoutinesHigh-Level Example Utility RoutinesHigh-Level Inserting Data From Waves ExampleHigh-Level Inserting Data From Variables ExampleHigh-Level Multiple-Commands-Per-Connection Method ExampleHigh-Level Updating Data From Waves ExampleHigh-Level Updating Data Example With Indicator WavesHigh-Level Treatment of NaN Parameter ValuesDate/Time DataHigh-Level Loading of Date/Time DataHigh-Level Storing of Date/Time DataHandling Binary Data With SQLHighLevelOpImproving Memory Management With SQLHighLevelOpFetching Data Into Waves With SQLHighLevelOpFetching Data Into Variables With SQLHighLevelOpText Encodings and SQL XOPSQLHighLevelOpPicture0Picture1Picture2Picture3Picture4Picture5Picture6Picture7