./AppStream-0.4.0/0000755000175000017500000000000012230763267013762 5ustar matthiasmatthias./AppStream-0.4.0/AUTHORS0000644000175000017500000000005012230763267015025 0ustar matthiasmatthiasMatthias Klumpp ./AppStream-0.4.0/tests/0000755000175000017500000000000012230763267015124 5ustar matthiasmatthias./AppStream-0.4.0/tests/test-database-read.vala0000644000175000017500000000414212230763267021424 0ustar matthiasmatthias/* test-database-read.vala * * Copyright (C) 2012 Matthias Klumpp * * Licensed under the GNU General Public License Version 3 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ using GLib; using Appstream; private string datadir; void msg (string s) { stdout.printf (s + "\n"); } void print_apparray (PtrArray appArray) { for (uint i = 0; i < appArray.len; i++) { stdout.printf (" - %s\n", ((Appstream.AppInfo) appArray.index (i)).to_string ()); } } void test_database () { var db = new Appstream.Database (); PtrArray apps = null; db.open (); apps = db.get_all_applications (); assert (apps != null); print_apparray (apps); msg ("=============================="); var query = new SearchQuery ("firefox"); apps = db.find_applications (query); print_apparray (apps); assert (apps.len > 4); query = new SearchQuery (""); query.set_categories_from_string ("science"); apps = db.find_applications (query); print_apparray (apps); assert (apps.len > 40); query = new SearchQuery ("protein"); query.set_categories_from_string ("science"); apps = db.find_applications (query); print_apparray (apps); assert (apps.len > 4); } int main (string[] args) { msg ("=== Running AppStream Database (Read) Tests ==="); datadir = args[1]; assert (datadir != null); datadir = Path.build_filename (datadir, "data", null); assert (FileUtils.test (datadir, FileTest.EXISTS) != false); Environment.set_variable ("G_MESSAGES_DEBUG", "all", true); Test.init (ref args); test_database (); Test.run (); return 0; } ./AppStream-0.4.0/tests/test-basics.vala0000644000175000017500000000445612230763267020223 0ustar matthiasmatthias/* test-basics.vala * * Copyright (C) 2012 Matthias Klumpp * * Licensed under the GNU General Public License Version 3 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ using GLib; using Appstream; private string datadir; /* NOTE: All these tests are not really a testsuite, but quickly test at least a few things. * writing a good testsuite would be nice, but given the amount of code in libappstream and * the effort to do it sane (we need a virtual environment with PackageKit running!) I assume it's * not worth it. */ void msg (string s) { stdout.printf (s + "\n"); } void test_menuparser () { var parser = new MenuParser (); List menu_dirs = parser.parse(); assert (menu_dirs.length () > 4); menu_dirs.foreach ((cat) => { stdout.printf ("Category: %s\nExc:%s\nInc: %s\nSubcat: %s\n", cat.name, Utils.string_list_to_string (cat.excluded), Utils.string_list_to_string (cat.included), Utils.category_list_to_string (cat.subcategories)); }); var query = new SearchQuery (); query.categories = {"science", "internet"}; } void test_screenshotservice () { var screenshot_srv = new ScreenshotService (); string url = screenshot_srv.get_thumbnail_url ("ardour"); msg ("Url: %s".printf (url)); assert (url.has_prefix ("http://") == true); assert (url.has_suffix ("ardour") == true); } int main (string[] args) { msg ("=== Running Basic Tests ==="); datadir = args[1]; assert (datadir != null); datadir = Path.build_filename (datadir, "data", null); assert (FileUtils.test (datadir, FileTest.EXISTS) != false); Environment.set_variable ("G_MESSAGES_DEBUG", "all", true); Test.init (ref args); test_menuparser (); test_screenshotservice (); Test.run (); return 0; } ./AppStream-0.4.0/tests/CMakeLists.txt0000644000175000017500000000275412230763267017674 0ustar matthiasmatthias# CMakeLists for UAI Unit Tests find_package(Vala REQUIRED) include("${VALA_USE_FILE}") find_package(GLIB2 REQUIRED) pkg_check_modules(GIO2 REQUIRED gio-2.0) find_package(LibXml2 REQUIRED) find_library(M_LIB m) link_libraries(${M_LIB} ${GLIB2_LIBRARIES} ${GIO2_LIBRARIES} ${LIBXML2_LIBRARIES} appstream ) include_directories(${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_SOURCE_DIR}/src/xapian ${CMAKE_CURRENT_SOURCE_DIR} ${GLIB2_INCLUDE_DIR} ${GIO2_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR} ) # Basic tests vala_add_executable (uai-test-basics test-basics.vala BASE_DIR ${CMAKE_SOURCE_DIR}/src PACKAGES config gio-2.0 posix libxml-2.0 appstream_internal VAPI_DIRS ${CMAKE_SOURCE_DIR}/vapi ${CMAKE_BINARY_DIR}/src ) add_test(basic-test uai-test-basics ${CMAKE_CURRENT_SOURCE_DIR}) # AppStream-XML provider tests vala_add_executable (uai-test-appstream ${UAI_SOURCES_BASE} test-appstreamxml.vala BASE_DIR ${CMAKE_SOURCE_DIR}/src PACKAGES config gio-2.0 posix libxml-2.0 appstream_internal VAPI_DIRS ${CMAKE_SOURCE_DIR}/vapi ${CMAKE_BINARY_DIR}/src ) add_test(appstream-xml-test uai-test-appstream ${CMAKE_CURRENT_SOURCE_DIR}) # AppStream database (read) tests vala_add_executable (uai-test-db-read test-database-read.vala BASE_DIR ${CMAKE_SOURCE_DIR}/src PACKAGES config gio-2.0 posix libxml-2.0 appstream_internal VAPI_DIRS ${CMAKE_SOURCE_DIR}/vapi ${CMAKE_BINARY_DIR}/src ) add_test(appstream-db-read-test uai-test-db-read ${CMAKE_CURRENT_SOURCE_DIR}) ./AppStream-0.4.0/tests/data/0000755000175000017500000000000012230763267016035 5ustar matthiasmatthias./AppStream-0.4.0/tests/data/appdata.xml.gz0000644000175000017500000000064612230763267020616 0ustar matthiasmatthiasdOappdata.xml-Tn +( \+B[{c#N+K3=Z8/MUd*B}L6!LwqDd¹-Vm`Tf*s#4 rPgt@J|__iZ3:8xpe(vt;o$svZR¹.p4般}ߒ_q%B?%f6-qgLݺ: fb%7Z0-5t#A+F'gR7gWi|Ap2YTJ$moCJSd \|P,kKa5T";ML/Zh'i]-#BrY*b/K ./AppStream-0.4.0/tests/data/appdata.xml0000644000175000017500000000220312230763267020166 0ustar matthiasmatthias firefox.desktop firefox-bin Firefox Firefoux Web browser Navigateur web internet web browser navigateur web-browser network web text/html text/xml application/xhtml+xml application/vnd.mozilla.xul+xml text/mml application/x-xpinstall x-scheme-handler/http x-scheme-handler/https http://www.mozilla.com ./AppStream-0.4.0/tests/test-appstreamxml.vala0000644000175000017500000000301612230763267021463 0ustar matthiasmatthias/* test-appstreamxml.vala * * Copyright (C) 2012 Matthias Klumpp * * Licensed under the GNU General Public License Version 3 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ using GLib; using Appstream; private string datadir; void msg (string s) { stdout.printf (s + "\n"); } void test_appstream_parser () { var asxml = new Provider.AppstreamXML (); asxml.process_file (File.new_for_path (Path.build_filename (datadir, "appdata.xml", null))); asxml.process_compressed_file (File.new_for_path (Path.build_filename (datadir, "appdata.xml.gz", null))); } int main (string[] args) { msg ("=== Running AppStream-XML Tests ==="); datadir = args[1]; assert (datadir != null); datadir = Path.build_filename (datadir, "data", null); assert (FileUtils.test (datadir, FileTest.EXISTS) != false); Environment.set_variable ("G_MESSAGES_DEBUG", "all", true); Test.init (ref args); test_appstream_parser (); Test.run (); return 0; } ./AppStream-0.4.0/MAINTAINERS0000644000175000017500000000005612230763267015460 0ustar matthiasmatthiasMatthias Klumpp E-mail: matthias@tenstral.net ./AppStream-0.4.0/client/0000755000175000017500000000000012230763267015240 5ustar matthiasmatthias./AppStream-0.4.0/client/CMakeLists.txt0000644000175000017500000000157212230763267020005 0ustar matthiasmatthias# CMakeLists for appstream-index project(appstream-index) find_package(Vala REQUIRED) include("${VALA_USE_FILE}") find_package(GLIB2 REQUIRED) pkg_check_modules(GIO2 REQUIRED gio-2.0) find_library(M_LIB m) include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${GLIB2_INCLUDE_DIR} ${GIO2_INCLUDE_DIR} ) # Add the appstream-index client tool vala_add_executable (appstream-index appstream-index.vala PACKAGES config appstream gio-2.0 posix VAPI_DIRS ${CMAKE_SOURCE_DIR}/vapi ${CMAKE_BINARY_DIR}/src COMPILE_FLAGS ${VALA_COMPILE_FLAGS} --pkg appstream # somehow we need to explicitly define that, PACKAGES directive does not always work ) target_link_libraries(appstream-index ${M_LIB} ${GLIB2_LIBRARIES} ${GIO2_LIBRARIES} appstream ) install(TARGETS appstream-index DESTINATION ${INSTALL_DIR_BIN}) ./AppStream-0.4.0/client/appstream-index.vala0000644000175000017500000000776412230763267021224 0ustar matthiasmatthias/* appstream-index.vala -- Simple client for the Update-AppStream-Index DBus service * * Copyright (C) 2012-2013 Matthias Klumpp * * Licensed under the GNU General Public License Version 3 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ using GLib; using Appstream; private class ASClient : Object { // Cmdln options private static bool o_show_version = false; private static bool o_verbose_mode = false; private static bool o_no_wait = false; private static string? o_search = null; private MainLoop loop; public int exit_code { get; set; } private const OptionEntry[] options = { { "version", 'v', 0, OptionArg.NONE, ref o_show_version, N_("Show the application's version"), null }, { "verbose", 0, 0, OptionArg.NONE, ref o_verbose_mode, N_("Enable verbose mode"), null }, { "nowait", 0, 0, OptionArg.NONE, ref o_no_wait, N_("Don't wait for actions to complete'"), null }, { "search", 's', 0, OptionArg.STRING, ref o_search, N_("Search the application database"), null }, { null } }; public ASClient (string[] args) { exit_code = 0; var opt_context = new OptionContext ("- Update-AppStream-Index client tool."); opt_context.set_help_enabled (true); opt_context.add_main_entries (options, null); try { opt_context.parse (ref args); } catch (Error e) { stdout.printf (e.message + "\n"); stdout.printf (_("Run '%s --help' to see a full list of available command line options.\n"), args[0]); exit_code = 1; return; } loop = new MainLoop (); } private void quit_loop () { if (loop.is_running ()) loop.quit (); } public void run () { if (exit_code > 0) return; if (o_show_version) { stdout.printf ("AppStream-index client tool version: %s\n", Config.VERSION); return; } // Just a hack, we might need proper message handling later if (o_verbose_mode) Environment.set_variable ("G_MESSAGES_DEBUG", "all", true); // Prepare the AppStream database connection var db = new Appstream.Database (); db.error_code.connect((error_details) => { stderr.printf ("Failed: %s\n", error_details); }); db.authorized.connect((success) => { // return immediately without waiting for action to complete if user has set --nowait if (o_no_wait) quit_loop (); }); if (o_search != null) { db.open (); PtrArray? app_list; app_list = db.find_applications_by_str (o_search); if (app_list == null) { // this might be an error stdout.printf ("Unable to find application matching %s!\n", o_search); exit_code = 4; return; } if (app_list.len == 0) { stdout.printf ("No application matching '%s' found.\n", o_search); return; } for (uint i = 0; i < app_list.len; i++) { var app = (Appstream.AppInfo) app_list.index (i); stdout.printf ("Application: %s\nSummary: %s\nPackage: %s\nURL:%s\nDesktop: %s\nIcon: %s\n", app.name, app.summary, app.pkgname, app.homepage, app.desktop_file, app.icon); stdout.printf ("------\n"); } } else { stderr.printf ("No command specified.\n"); return; } } static int main (string[] args) { // Bind locale Intl.setlocale(LocaleCategory.ALL,""); Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); Intl.textdomain(Config.GETTEXT_PACKAGE); var main = new ASClient (args); // Run the application main.run (); int code = main.exit_code; return code; } } ./AppStream-0.4.0/po/0000755000175000017500000000000012230763267014400 5ustar matthiasmatthias./AppStream-0.4.0/po/Makevars0000644000175000017500000000112712230763267016075 0ustar matthiasmatthias# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = appstream # These two variables depend on the location of this directory. subdir = po top_builddir = ../ # These options get passed to xgettext. XGETTEXT_OPTIONS = -L C# -i -s --keyword=_ --keyword=N_ --keyword=__ --no-wrap --no-location \ --package-name="appstream" \ --copyright-holder="Matthias Klumpp" COPYRIGHT_HOLDER = Copyright (c) 2012-2013 Matthias Klumpp MSGID_BUGS_ADDRESS = distributions@lists.freedesktop.org EXTRA_LOCALE_CATEGORIES = ./AppStream-0.4.0/po/POTFILES.skip0000644000175000017500000000000012230763267016503 0ustar matthiasmatthias./AppStream-0.4.0/po/POTFILES.in0000644000175000017500000000040412230763267016153 0ustar matthiasmatthias[encoding: UTF-8] # List of source files containing translatable strings. # # library & daemon sources src/app-info.vala src/database.vala src/menudir.vala src/settings.vala src/utils.vala src/database-builder.vala # client sources client/appstream-index.vala ./AppStream-0.4.0/po/CMakeLists.txt0000644000175000017500000000117512230763267017144 0ustar matthiasmatthias# CMakeLists for AppStream-Core localisation find_program (LC_INTLTOOL_UPDATE intltool-update) mark_as_advanced (LC_INTLTOOL_UPDATE) find_package (Gettext REQUIRED) if (LC_INTLTOOL_UPDATE STREQUAL "") message (FATAL_ERROR "Intltool was not found! Please install it to continue!") endif (LC_INTLTOOL_UPDATE STREQUAL "") set(LPKNAME "appstream") add_custom_target (l10n-update ${LC_INTLTOOL_UPDATE} -p -g "${LPKNAME}" DEPENDS POTFILES.in WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) file (GLOB _translations ${CMAKE_CURRENT_SOURCE_DIR}/*.po) gettext_create_translations (${LPKNAME}.pot ALL ${_translations} ) ./AppStream-0.4.0/po/appstream.pot0000644000175000017500000000273612230763267017130 0ustar matthiasmatthias# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Matthias Klumpp # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "Project-Id-Version: appstream\n" "Report-Msgid-Bugs-To: distributions@lists.freedesktop.org\n" "POT-Creation-Date: 2013-10-20 16:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" msgid "Don't wait for actions to complete'" msgstr "" msgid "Enable verbose mode" msgstr "" msgid "Error while finding files in directory %s: %s" msgstr "" msgid "File %s not found or permission denied!" msgstr "" msgid "Run '%s --help' to see a full list of available command line options.\n" msgstr "" msgid "Search the application database" msgstr "" msgid "Show the application's version" msgstr "" msgid "XDG Menu XML file '%s' is damaged." msgstr "" #. * TRANSLATORS: List of "grey-listed" words sperated with ";" #. * Do not translate this list directly. Instead, #. * provide a list of words in your language that people are likely #. * to include in a search but that should normally be ignored in #. * the search. #. msgid "app;application;package;program;programme;suite;tool" msgstr "" ./AppStream-0.4.0/CMakeLists.txt0000644000175000017500000000740512230763267016530 0ustar matthiasmatthias# CMakeLists for the AppStream Project project(appstream) cmake_minimum_required(VERSION 2.8.6 FATAL_ERROR) set(CMAKE_BUILD_TYPE "Debug") set(AS_VERSION_MAJOR "0") set(AS_VERSION_MINOR "4") set(AS_VERSION_PATCH "0") set(AS_VERSION "${AS_VERSION_MAJOR}.${AS_VERSION_MINOR}.${AS_VERSION_PATCH}") set(APPSTREAM_LIB_API_LEVEL "0") # Don't allow in-tree building if(${CMAKE_SOURCE_DIR} MATCHES ${CMAKE_BINARY_DIR}) message(STATUS "Please do an out-of-tree build:") message(STATUS "rm -f CMakeCache.txt && mkdir build && cd build; cmake .. && make") message(FATAL_ERROR "In-tree-build detected!") endif(${CMAKE_SOURCE_DIR} MATCHES ${CMAKE_BINARY_DIR}) # # Options # option(PROVIDER_DEBIAN_DEP11 "Enable DEP11 data provider" OFF) option(PROVIDER_UBUNTU_APPINSTALL "Enable AppInstall data provider" OFF) option(L18N "Enable localization" ON) option(TESTS "Enable Unit Tests" OFF) set(VALA_COMPILE_FLAGS "--target-glib=2.36") if(PROVIDER_DEBIAN_DEP11) set(VALA_COMPILE_FLAGS ${VALA_COMPILE_FLAGS} "--define=DEBIAN_DEP11") endif() if(PROVIDER_UBUNTU_APPINSTALL) set(VALA_COMPILE_FLAGS ${VALA_COMPILE_FLAGS} "--define=UBUNTU_APPINSTALL") endif() if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Default install prefix" FORCE) endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(XDG_APPS_INSTALL_DIR share/applications) add_definitions(-DCMAKE_INSTALL_PREFIX="\"${CMAKE_INSTALL_PREFIX}\"") add_definitions(-DCMAKE_INSTALL_LIBDIR="\"${CMAKE_INSTALL_LIBDIR}\"") set(CMAKE_INSTALL_LIBDIR "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Output directory for libraries") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/data/cmake/) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/data/cmake/vala) message(STATUS "Compiling AppStream core modules version ${AS_VERSION}") add_custom_target(distclean "make clean" ) # # l18n # find_package (Gettext REQUIRED) # # Default paths # set(INSTALL_DIR_BIN bin CACHE PATH "Installation directory for executables") set(INSTALL_DIR_LIB lib/${CMAKE_LIBRARY_ARCHITECTURE} CACHE PATH "Installation directory for libraries") set(INSTALL_DIR_LIBEXEC "${INSTALL_DIR_LIB}/appstream" CACHE PATH "Installation directory for executables use by a library") set(INSTALL_DIR_INC include CACHE PATH "Installation directory for headers") set(INSTALL_DIR_SYSCONF /etc CACHE PATH "Installation directory for system configuration files") # # Configure files # set (PREFIXDIR "${CMAKE_INSTALL_PREFIX}") set (DATADIR "${CMAKE_INSTALL_PREFIX}/share") set (PKGDATADIR "${DATA_INSTALL_DIR}") set (LIBDIR "${INSTALL_DIR_LIB}") set (PKGLIBDIR "${INSTALL_DIR_LIBEXEC}") set (GETTEXT_PACKAGE "appstream") set (LOCALE_DIR "${DATADIR}/locale") set (VERSION "${AS_VERSION}") set (BUILDDIR "${CMAKE_BINARY_DIR}") configure_file(config.h.in ${CMAKE_BINARY_DIR}/config.h) # # Enable/disable testing # if(TESTS) enable_testing() endif(TESTS) # # Custom C flags # set (MAINTAINER_CFLAGS "-Werror -Wall -Wcast-align -Wuninitialized -Wno-uninitialized -Wempty-body -Wformat-security -Winit-self") option (DISABLE_MAINTAINER_CFLAGS "Disable maintainer CFlags" ON) if (DISABLE_MAINTAINER_CFLAGS) set (MAINTAINER_CFLAGS "") endif (DISABLE_MAINTAINER_CFLAGS) add_definitions(${MAINTAINER_CFLAGS}) # we do always enable this to never run into the missing-include-trap with Vala again add_definitions("-Werror=implicit-function-declaration") # Required to include config.h before all other units add_definitions ("--include config.h") # # Validate Vala version # find_package(PkgConfig REQUIRED) find_package(Vala REQUIRED) include(${VALA_USE_FILE}) ensure_vala_version("0.16" MINIMUM) add_subdirectory(src) add_subdirectory(client) add_subdirectory(data) add_subdirectory(po) add_subdirectory(docs) if(TESTS) add_subdirectory(tests) endif(TESTS) ./AppStream-0.4.0/config.h.in0000644000175000017500000000310412230763267016003 0ustar matthiasmatthias#ifndef CONFIG_H #define CONFIG_H /* always defined to indicate that i18n is enabled */ #define ENABLE_NLS 1 /* Gettext Package */ #define GETTEXT_PACKAGE "@GETTEXT_PACKAGE@" /* Paths */ #define LOCALEDIR "@LOCALE_DIR@" #define PKGDATADIR "@PKGDATADIR@" #define PKGLIBDIR "@PKGLIBDIR@" #define PREFIXDIR "@PREFIXDIR@" #define DATADIR "@DATADIR@" #define LIBDIR "@LIBDIR@" #define BUILDDIR "@BUILDDIR@" /* Define if the GNU gettext() function is already present or preinstalled. */ #define HAVE_GETTEXT 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define if your file defines LC_MESSAGES. */ #define HAVE_LC_MESSAGES 1 /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to the version of this package. */ #define PACKAGE_VERSION "@VERSION@" /* Version number of package */ #define VERSION "@VERSION@" #endif /*CONFIG_H*/ ./AppStream-0.4.0/vapi/0000755000175000017500000000000012230763267014721 5ustar matthiasmatthias./AppStream-0.4.0/vapi/packagekit-glib2.vapi0000644000175000017500000023302712230763267020711 0ustar matthiasmatthias/* packagekit-glib2.vapi generated by vapigen, do not modify. */ [CCode (cprefix = "Pk", gir_namespace = "PackageKitGlib", gir_version = "1.0", lower_case_cprefix = "pk_")] namespace PackageKit { [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_catalog_get_type ()")] public class Catalog : GLib.Object { [CCode (has_construct_function = false)] public Catalog (); public async void lookup_async (string filename, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public static void test (void* user_data); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_category_get_type ()")] public class Category : PackageKit.Source { [CCode (has_construct_function = false)] public Category (); public unowned string get_icon (); public unowned string get_id (); public unowned string get_name (); public unowned string get_parent_id (); public unowned string get_summary (); public void set_icon (string icon); public void set_id (string cat_id); public void set_name (string name); public void set_parent_id (string parent_id); public void set_summary (string summary); [NoAccessorMethod] public string cat_id { owned get; set; } public string icon { get; set; } public string name { get; set; } public string parent_id { get; set; } public string summary { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_client_get_type ()")] public class Client : GLib.Object { [CCode (has_construct_function = false)] public Client (); public PackageKit.Results accept_eula (string eula_id, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void accept_eula_async (string eula_id, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results adopt (string transaction_id, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void adopt_async (string transaction_id, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); [NoWrapper] public virtual void changed (); public PackageKit.Results download_packages ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void download_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results generic_finish (GLib.AsyncResult res) throws GLib.Error; public bool get_background (); public uint get_cache_age (); public PackageKit.Results get_categories (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_categories_async (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_depends (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_depends_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_details ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_details_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_distro_upgrades (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_distro_upgrades_async (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_files ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public bool get_idle (); public bool get_interactive (); public unowned string get_locale (); public PackageKit.Results get_old_transactions (uint number, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_old_transactions_async (uint number, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_packages (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_packages_async (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Progress get_progress (string transaction_id, GLib.Cancellable? cancellable = null) throws GLib.Error; public async PackageKit.Progress get_progress_async (string transaction_id, GLib.Cancellable? cancellable) throws GLib.Error; public PackageKit.Results get_repo_list (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_repo_list_async (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_requires (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_requires_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_update_detail ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_update_detail_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_updates (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_updates_async (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results install_files (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void install_files_async (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results install_packages (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void install_packages_async (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results install_signature (PackageKit.SigType type, string key_id, string package_id, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void install_signature_async (PackageKit.SigType type, string key_id, string package_id, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results refresh_cache (bool force, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void refresh_cache_async (bool force, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results remove_packages (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void remove_packages_async (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results repair_system (PackageKit.Bitfield transaction_flags, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void repair_system_async (PackageKit.Bitfield transaction_flags, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results repo_enable (string repo_id, bool enabled, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void repo_enable_async (string repo_id, bool enabled, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results repo_set_data (string repo_id, string parameter, string value, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void repo_set_data_async (string repo_id, string parameter, string value, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results resolve (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void resolve_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_details (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_details_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_files (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_files_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_groups (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_groups_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_names (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_names_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public void set_background (bool background); public void set_cache_age (uint cache_age); public void set_interactive (bool interactive); public void set_locale (string locale); public static void test (void* user_data); public PackageKit.Results update_packages (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void update_packages_async (PackageKit.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results upgrade_system (string distro_id, PackageKit.UpgradeKind upgrade_kind, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void upgrade_system_async (string distro_id, PackageKit.UpgradeKind upgrade_kind, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results what_provides (PackageKit.Bitfield filters, PackageKit.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void what_provides_async (PackageKit.Bitfield filters, PackageKit.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public bool background { get; set; } public uint cache_age { get; set; } public bool idle { get; } public bool interactive { get; set; } public string locale { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_client_helper_get_type ()")] public class ClientHelper : GLib.Object { [CCode (has_construct_function = false)] public ClientHelper (); public bool start (string socket_filename, string argv, string envp) throws GLib.Error; public bool stop () throws GLib.Error; } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_control_get_type ()")] public class Control : GLib.Object { [CCode (has_construct_function = false)] public Control (); public async PackageKit.Authorize can_authorize_async (string action_id, GLib.Cancellable? cancellable) throws GLib.Error; [NoWrapper] public virtual void connection_changed (bool connected); public async string get_daemon_state_async (GLib.Cancellable? cancellable) throws GLib.Error; public async PackageKit.Network get_network_state_async (GLib.Cancellable? cancellable) throws GLib.Error; public bool get_properties (GLib.Cancellable? cancellable = null) throws GLib.Error; public async bool get_properties_async (GLib.Cancellable? cancellable) throws GLib.Error; public async string get_tid_async (GLib.Cancellable? cancellable) throws GLib.Error; public async uint get_time_since_action_async (PackageKit.Role role, GLib.Cancellable? cancellable) throws GLib.Error; [CCode (array_length = false, array_null_terminated = true)] public string[] get_transaction_list (GLib.Cancellable? cancellable = null) throws GLib.Error; [CCode (array_length = false, array_null_terminated = true)] public async string[] get_transaction_list_async (GLib.Cancellable? cancellable) throws GLib.Error; [NoWrapper] public virtual void network_state_changed (); public bool set_proxy (string proxy_http, string proxy_ftp, GLib.Cancellable? cancellable = null) throws GLib.Error; public bool set_proxy2 (string proxy_http, string proxy_https, string proxy_ftp, string proxy_socks, string no_proxy, string pac, GLib.Cancellable? cancellable = null) throws GLib.Error; public async void set_proxy2_async (string proxy_http, string proxy_https, string proxy_ftp, string proxy_socks, string no_proxy, string pac, GLib.Cancellable? cancellable); public async bool set_proxy_async (string proxy_http, string proxy_ftp, GLib.Cancellable? cancellable) throws GLib.Error; public bool suggest_daemon_quit (GLib.Cancellable? cancellable = null) throws GLib.Error; public async bool suggest_daemon_quit_async (GLib.Cancellable? cancellable) throws GLib.Error; public static void test (void* user_data); [NoAccessorMethod] public string backend_author { owned get; set; } [NoAccessorMethod] public string backend_description { owned get; set; } [NoAccessorMethod] public string backend_name { owned get; set; } [NoAccessorMethod] public bool connected { get; set; } [NoAccessorMethod] public string distro_id { owned get; set; } [NoAccessorMethod] public uint64 filters { get; set; } [NoAccessorMethod] public uint64 groups { get; set; } [NoAccessorMethod] public virtual bool locked { get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] mime_types { owned get; set; } [NoAccessorMethod] public uint network_state { get; set; } [NoAccessorMethod] public uint64 provides { get; set; } [NoAccessorMethod] public uint64 roles { get; set; } [NoAccessorMethod] public uint version_major { get; } [NoAccessorMethod] public uint version_micro { get; } [NoAccessorMethod] public uint version_minor { get; } public virtual signal void repo_list_changed (); public virtual signal void restart_schedule (); public virtual signal void transaction_list_changed ([CCode (array_length = false, array_null_terminated = true)] string[] transaction_ids); public virtual signal void updates_changed (); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_desktop_get_type ()")] public class Desktop : GLib.Object { [CCode (has_construct_function = false)] public Desktop (); public string get_package_for_file (string filename) throws GLib.Error; public bool open_database () throws GLib.Error; public static void test (void* user_data); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_details_get_type ()")] public class Details : PackageKit.Source { [CCode (has_construct_function = false)] public Details (); public unowned string get_description (); public PackageKit.Group get_group (); public unowned string get_license (); public unowned string get_package_id (); public uint64 get_size (); public unowned string get_url (); [NoAccessorMethod] public string description { owned get; set; } [NoAccessorMethod] public uint group { get; set; } [NoAccessorMethod] public string license { owned get; set; } [NoAccessorMethod] public string package_id { owned get; set; } [NoAccessorMethod] public uint64 size { get; set; } [NoAccessorMethod] public string url { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_distro_upgrade_get_type ()")] public class DistroUpgrade : PackageKit.Source { [CCode (has_construct_function = false)] public DistroUpgrade (); public static PackageKit.DistroUpgradeType enum_from_string (string upgrade); public static unowned string enum_to_string (PackageKit.DistroUpgradeType upgrade); public unowned string get_id (); public PackageKit.DistroUpgradeType get_state (); public unowned string get_summary (); [NoAccessorMethod] public string name { owned get; set; } [NoAccessorMethod] public uint state { get; set; } [NoAccessorMethod] public string summary { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_error_get_type ()")] public class Error : PackageKit.Source { [CCode (has_construct_function = false)] public Error (); public static PackageKit.ErrorType enum_from_string (string code); public static unowned string enum_to_string (PackageKit.ErrorType code); public PackageKit.ErrorType get_code (); public unowned string get_details (); [NoAccessorMethod] public uint code { get; set; } [NoAccessorMethod] public string details { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_eula_required_get_type ()")] public class EulaRequired : PackageKit.Source { [CCode (has_construct_function = false)] public EulaRequired (); [NoAccessorMethod] public string eula_id { owned get; set; } [NoAccessorMethod] public string license_agreement { owned get; set; } [NoAccessorMethod] public string package_id { owned get; set; } [NoAccessorMethod] public string vendor_name { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_files_get_type ()")] public class Files : PackageKit.Source { [CCode (has_construct_function = false)] public Files (); [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] files { owned get; set; } [NoAccessorMethod] public string package_id { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_item_progress_get_type ()")] public class ItemProgress : PackageKit.Source { [CCode (has_construct_function = false)] public ItemProgress (); public unowned string get_package_id (); public uint get_percentage (); public PackageKit.Status get_status (); [NoAccessorMethod] public string package_id { owned get; set; } [NoAccessorMethod] public uint percentage { get; set; } [NoAccessorMethod] public uint status { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_media_change_required_get_type ()")] public class MediaChangeRequired : PackageKit.Source { [CCode (has_construct_function = false)] public MediaChangeRequired (); [NoAccessorMethod] public string media_id { owned get; set; } [NoAccessorMethod] public string media_text { owned get; set; } [NoAccessorMethod] public uint media_type { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_message_get_type ()")] public class Message : PackageKit.Source { [CCode (has_construct_function = false)] public Message (); public static PackageKit.MessageType enum_from_string (string message); public static unowned string enum_to_string (PackageKit.MessageType message); public unowned string get_details (); public PackageKit.MessageType get_kind (); [NoAccessorMethod] public string details { owned get; set; } [NoAccessorMethod] public uint type { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_package_get_type ()")] public class Package : PackageKit.Source { [CCode (has_construct_function = false)] public Package (); public bool equal (PackageKit.Package package2); public bool equal_id (PackageKit.Package package2); public unowned string get_arch (); public unowned string get_data (); public unowned string get_id (); public PackageKit.Info get_info (); public unowned string get_name (); public unowned string get_summary (); public unowned string get_version (); public static string id_build (string name, string version, string arch, string data); public static bool id_check (string package_id); public static bool id_equal_fuzzy_arch (string package_id1, string package_id2); [CCode (array_length = false, array_null_terminated = true)] public static string[] id_split (string package_id); public static void id_test (void* user_data); public static string id_to_printable (string package_id); [CCode (array_length = false, array_null_terminated = true)] public static string[] ids_add_id (string package_ids, string package_id); [CCode (array_length = false, array_null_terminated = true)] public static string[] ids_add_ids (string package_ids, string package_ids_new); public static bool ids_check (string package_ids); [CCode (array_length = false, array_null_terminated = true)] public static string[] ids_from_id (string package_id); [CCode (array_length = false, array_null_terminated = true)] public static string[] ids_from_string (string package_id); public static bool ids_present_id (string package_ids, string package_id); [CCode (array_length = false, array_null_terminated = true)] public static string[] ids_remove_id (string package_ids, string package_id); public static void ids_test (void* user_data); public static string ids_to_string (string package_ids); public bool parse (string data) throws GLib.Error; public void print (); public bool set_id (string package_id) throws GLib.Error; public static void test (void* user_data); [NoAccessorMethod] public string description { owned get; set; } [NoAccessorMethod] public uint group { get; set; } [NoAccessorMethod] public uint info { get; set; } [NoAccessorMethod] public string license { owned get; set; } [NoAccessorMethod] public string package_id { owned get; } [NoAccessorMethod] public uint64 size { get; set; } [NoAccessorMethod] public string summary { owned get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] update_bugzilla_urls { owned get; set; } [NoAccessorMethod] public string update_changelog { owned get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] update_cve_urls { owned get; set; } [NoAccessorMethod] public string update_issued { owned get; set; } [NoAccessorMethod] public string update_obsoletes { owned get; set; } [NoAccessorMethod] public uint update_restart { get; set; } [NoAccessorMethod] public uint update_state { get; set; } [NoAccessorMethod] public string update_text { owned get; set; } [NoAccessorMethod] public string update_updated { owned get; set; } [NoAccessorMethod] public string update_updates { owned get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] update_vendor_urls { owned get; set; } [NoAccessorMethod] public string url { owned get; set; } public virtual signal void changed (); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_package_sack_get_type ()")] public class PackageSack : GLib.Object { [CCode (has_construct_function = false)] public PackageSack (); public bool add_package (PackageKit.Package package); public bool add_package_by_id (string package_id) throws GLib.Error; public bool add_packages_from_file (GLib.File file) throws GLib.Error; [NoWrapper] public virtual void changed (); public void clear (); public PackageKit.PackageSack filter (PackageKit.PackageSackFilterFunc filter_cb); public PackageKit.PackageSack filter_by_info (PackageKit.Info info); public PackageKit.Package find_by_id (string package_id); public GLib.GenericArray get_array (); public bool get_details (GLib.Cancellable? cancellable = null) throws GLib.Error; public async void get_details_async (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); [CCode (array_length = false, array_null_terminated = true)] public string[] get_ids (); public uint get_size (); public uint64 get_total_bytes (); public bool get_update_detail (GLib.Cancellable? cancellable = null) throws GLib.Error; public async void get_update_detail_async (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public bool merge_generic_finish (GLib.AsyncResult res) throws GLib.Error; public bool remove_by_filter (PackageKit.PackageSackFilterFunc filter_cb); public bool remove_package (PackageKit.Package package); public bool remove_package_by_id (string package_id); public bool resolve (GLib.Cancellable? cancellable = null) throws GLib.Error; public async void resolve_async (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public void sort (PackageKit.PackageSackSortType type); public static void test (void* user_data); public bool to_file (GLib.File file) throws GLib.Error; } [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] [Compact] public class PackageSackResults { } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_progress_get_type ()")] public class Progress : GLib.Object { [CCode (has_construct_function = false)] public Progress (); public bool set_allow_cancel (bool allow_cancel); public bool set_caller_active (bool caller_active); public bool set_download_size_remaining (uint64 download_size_remaining); public bool set_elapsed_time (uint elapsed_time); public bool set_item_progress (PackageKit.ItemProgress item_progress); public bool set_package (PackageKit.Package package); public bool set_package_id (string package_id); public bool set_percentage (int percentage); public bool set_remaining_time (uint remaining_time); public bool set_role (PackageKit.Role role); public bool set_speed (uint speed); public bool set_status (PackageKit.Status status); public bool set_transaction_flags (uint64 transaction_flags); public bool set_transaction_id (string package_id); public bool set_uid (uint uid); public static void test (void* user_data); [NoAccessorMethod] public bool allow_cancel { get; set; } [NoAccessorMethod] public bool caller_active { get; set; } [NoAccessorMethod] public uint download_size_remaining { get; set; } [NoAccessorMethod] public uint elapsed_time { get; set; } [NoAccessorMethod] public PackageKit.ItemProgress item_progress { owned get; set; } [NoAccessorMethod] public PackageKit.Package package { owned get; set; } [NoAccessorMethod] public string package_id { owned get; set; } [NoAccessorMethod] public int percentage { get; set; } [NoAccessorMethod] public uint remaining_time { get; set; } [NoAccessorMethod] public uint role { get; set; } [NoAccessorMethod] public uint speed { get; set; } [NoAccessorMethod] public uint status { get; set; } [NoAccessorMethod] public uint64 transaction_flags { get; set; } [NoAccessorMethod] public string transaction_id { owned get; set; } [NoAccessorMethod] public uint uid { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_repo_detail_get_type ()")] public class RepoDetail : PackageKit.Source { [CCode (has_construct_function = false)] public RepoDetail (); [NoAccessorMethod] public string description { owned get; set; } [NoAccessorMethod] public bool enabled { get; set; } [NoAccessorMethod] public string repo_id { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_repo_signature_required_get_type ()")] public class RepoSignatureRequired : PackageKit.Source { [CCode (has_construct_function = false)] public RepoSignatureRequired (); [NoAccessorMethod] public string key_fingerprint { owned get; set; } [NoAccessorMethod] public string key_id { owned get; set; } [NoAccessorMethod] public string key_timestamp { owned get; set; } [NoAccessorMethod] public string key_url { owned get; set; } [NoAccessorMethod] public string key_userid { owned get; set; } [NoAccessorMethod] public string package_id { owned get; set; } [NoAccessorMethod] public string repository_name { owned get; set; } [NoAccessorMethod] public uint type { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_require_restart_get_type ()")] public class RequireRestart : PackageKit.Source { [CCode (has_construct_function = false)] public RequireRestart (); [NoAccessorMethod] public string package_id { owned get; set; } [NoAccessorMethod] public uint restart { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_results_get_type ()")] public class Results : GLib.Object { [CCode (has_construct_function = false)] public Results (); public bool add_category (PackageKit.Category item); public bool add_details (PackageKit.Details item); public bool add_distro_upgrade (PackageKit.DistroUpgrade item); public bool add_eula_required (PackageKit.EulaRequired item); public bool add_files (PackageKit.Files item); public bool add_media_change_required (PackageKit.MediaChangeRequired item); public bool add_message (PackageKit.Message item); public bool add_package (PackageKit.Package item); public bool add_repo_detail (PackageKit.RepoDetail item); public bool add_repo_signature_required (PackageKit.RepoSignatureRequired item); public bool add_require_restart (PackageKit.RequireRestart item); public bool add_transaction (PackageKit.TransactionPast item); public bool add_update_detail (PackageKit.UpdateDetail item); public GLib.GenericArray get_category_array (); public GLib.GenericArray get_details_array (); public GLib.GenericArray get_distro_upgrade_array (); public PackageKit.Error get_error_code (); public GLib.GenericArray get_eula_required_array (); public PackageKit.Exit get_exit_code (); public GLib.GenericArray get_files_array (); public GLib.GenericArray get_media_change_required_array (); public GLib.GenericArray get_message_array (); public GLib.GenericArray get_package_array (); public PackageKit.PackageSack get_package_sack (); public GLib.GenericArray get_repo_detail_array (); public GLib.GenericArray get_repo_signature_required_array (); public GLib.GenericArray get_require_restart_array (); public PackageKit.Restart get_require_restart_worst (); public PackageKit.Role get_role (); public GLib.GenericArray get_transaction_array (); public PackageKit.Bitfield get_transaction_flags (); public GLib.GenericArray get_update_detail_array (); public bool set_error_code (PackageKit.Error item); public bool set_exit_code (PackageKit.Exit exit_enum); public static void test (void* user_data); [NoAccessorMethod] public uint inputs { get; set; } [NoAccessorMethod] public PackageKit.Progress progress { owned get; set; } [NoAccessorMethod] public uint role { get; set; } [NoAccessorMethod] public uint64 transaction_flags { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_service_pack_get_type ()")] public class ServicePack : GLib.Object { [CCode (has_construct_function = false)] public ServicePack (); public bool check_valid (string filename) throws GLib.Error; public async void create_for_package_ids_async (string filename, string package_ids, string package_ids_exclude, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public async void create_for_updates_async (string filename, string package_ids_exclude, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public bool generic_finish (GLib.AsyncResult res) throws GLib.Error; public bool set_temp_directory (string directory); public static void test (void* user_data); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_source_get_type ()")] public class Source : GLib.Object { [CCode (has_construct_function = false)] public Source (); [NoAccessorMethod] public uint role { get; set; } [NoAccessorMethod] public string transaction_id { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_task_get_type ()")] public class Task : PackageKit.Client { [CCode (has_construct_function = false)] public Task (); public async void download_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results download_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; [NoWrapper] public virtual void eula_question (uint request, PackageKit.Results results); public PackageKit.Results generic_finish (GLib.AsyncResult res) throws GLib.Error; public async void get_categories_async (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_categories_sync (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_depends_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_depends_sync (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_details_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_details_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_files_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public bool get_interactive (); public bool get_only_download (); public async void get_packages_async (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_packages_sync (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_repo_list_async (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_repo_list_sync (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_requires_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_requires_sync (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public bool get_simulate (); public async void get_update_detail_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_update_detail_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void get_updates_async (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results get_updates_sync (PackageKit.Bitfield filters, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void install_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results install_files_sync ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void install_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results install_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; [NoWrapper] public virtual void key_question (uint request, PackageKit.Results results); [NoWrapper] public virtual void media_change_question (uint request, PackageKit.Results results); public async void refresh_cache_async (bool force, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results refresh_cache_sync (bool force, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void remove_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results remove_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void repair_system_async (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results repair_system_sync (GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void repo_enable_async (string repo_id, bool enabled, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results repo_enable_sync (string repo_id, bool enabled, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void resolve_async (PackageKit.Bitfield filters, string packages, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results resolve_sync (PackageKit.Bitfield filters, string packages, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_details_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_details_sync (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_files_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_files_sync (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_groups_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_groups_sync (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public async void search_names_async (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results search_names_sync (PackageKit.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public void set_interactive (bool interactive); public void set_only_download (bool only_download); public void set_simulate (bool simulate); [NoWrapper] public virtual void simulate_question (uint request, PackageKit.Results results); public static void test (void* user_data); [NoWrapper] public virtual void untrusted_question (uint request, PackageKit.Results results); public async void update_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results update_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public bool user_accepted (uint request); public bool user_declined (uint request); public async void what_provides_async (PackageKit.Bitfield filters, PackageKit.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback); public PackageKit.Results what_provides_sync (PackageKit.Bitfield filters, PackageKit.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, PackageKit.ProgressCallback progress_callback) throws GLib.Error; public bool only_download { get; set; } public bool simulate { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_transaction_list_get_type ()")] public class TransactionList : GLib.Object { [CCode (has_construct_function = false)] public TransactionList (); [CCode (array_length = false, array_null_terminated = true)] public string[] get_ids (); public static void test (void* user_data); public virtual signal void added (string tid); public virtual signal void removed (string tid); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_transaction_past_get_type ()")] public class TransactionPast : PackageKit.Source { [CCode (has_construct_function = false)] public TransactionPast (); public unowned string get_cmdline (); public unowned string get_data (); public GLib.DateTime get_datetime (); public uint get_duration (); public unowned string get_id (); public PackageKit.Role get_role (); public bool get_succeeded (); public unowned string get_timespec (); public int64 get_timestamp (); public uint get_uid (); [NoAccessorMethod] public string cmdline { owned get; set; } [NoAccessorMethod] public string data { owned get; set; } [NoAccessorMethod] public uint duration { get; set; } [NoAccessorMethod] public uint role { get; set; } [NoAccessorMethod] public bool succeeded { get; set; } [NoAccessorMethod] public string tid { owned get; set; } [NoAccessorMethod] public string timespec { owned get; set; } [NoAccessorMethod] public uint uid { get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_update_detail_get_type ()")] public class UpdateDetail : PackageKit.Source { [CCode (has_construct_function = false)] public UpdateDetail (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_bugzilla_urls (); public unowned string get_changelog (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_cve_urls (); public unowned string get_issued (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_obsoletes (); public unowned string get_package_id (); public PackageKit.Restart get_restart (); public PackageKit.UpdateState get_state (); public unowned string get_update_text (); public unowned string get_updated (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_updates (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_vendor_urls (); [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] bugzilla_urls { owned get; set; } [NoAccessorMethod] public string changelog { owned get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] cve_urls { owned get; set; } [NoAccessorMethod] public string issued { owned get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] obsoletes { owned get; set; } [NoAccessorMethod] public string package_id { owned get; set; } [NoAccessorMethod] public uint restart { get; set; } [NoAccessorMethod] public uint state { get; set; } [NoAccessorMethod] public string update_text { owned get; set; } [NoAccessorMethod] public string updated { owned get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] updates { owned get; set; } [CCode (array_length = false, array_null_terminated = true)] [NoAccessorMethod] public string[] vendor_urls { owned get; set; } } [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] [SimpleType] public struct Bitfield : uint64 { public static void test (void* user_data); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", has_type_id = false)] public struct EnumMatch { public uint value; public weak global::string string; } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkAuthorizeEnum", cprefix = "PK_AUTHORIZE_ENUM_", type_id = "pk_authorize_enum_get_type ()")] [GIR (name = "AuthorizeEnum")] public enum Authorize { UNKNOWN, YES, NO, INTERACTIVE, LAST; public static PackageKit.Authorize type_enum_from_string (string authorize_type); public static unowned string type_enum_to_string (PackageKit.Authorize authorize_type); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkDistroUpgradeEnum", cprefix = "PK_DISTRO_UPGRADE_ENUM_", type_id = "pk_distro_upgrade_enum_get_type ()")] [GIR (name = "DistroUpgradeEnum")] public enum DistroUpgradeType { UNKNOWN, STABLE, UNSTABLE, LAST } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkErrorEnum", cprefix = "PK_ERROR_ENUM_", type_id = "pk_error_enum_get_type ()")] [GIR (name = "ErrorEnum")] public enum ErrorType { UNKNOWN, OOM, NO_NETWORK, NOT_SUPPORTED, INTERNAL_ERROR, GPG_FAILURE, PACKAGE_ID_INVALID, PACKAGE_NOT_INSTALLED, PACKAGE_NOT_FOUND, PACKAGE_ALREADY_INSTALLED, PACKAGE_DOWNLOAD_FAILED, GROUP_NOT_FOUND, GROUP_LIST_INVALID, DEP_RESOLUTION_FAILED, FILTER_INVALID, CREATE_THREAD_FAILED, TRANSACTION_ERROR, TRANSACTION_CANCELLED, NO_CACHE, REPO_NOT_FOUND, CANNOT_REMOVE_SYSTEM_PACKAGE, PROCESS_KILL, FAILED_INITIALIZATION, FAILED_FINALISE, FAILED_CONFIG_PARSING, CANNOT_CANCEL, CANNOT_GET_LOCK, NO_PACKAGES_TO_UPDATE, CANNOT_WRITE_REPO_CONFIG, LOCAL_INSTALL_FAILED, BAD_GPG_SIGNATURE, MISSING_GPG_SIGNATURE, CANNOT_INSTALL_SOURCE_PACKAGE, REPO_CONFIGURATION_ERROR, NO_LICENSE_AGREEMENT, FILE_CONFLICTS, PACKAGE_CONFLICTS, REPO_NOT_AVAILABLE, INVALID_PACKAGE_FILE, PACKAGE_INSTALL_BLOCKED, PACKAGE_CORRUPT, ALL_PACKAGES_ALREADY_INSTALLED, FILE_NOT_FOUND, NO_MORE_MIRRORS_TO_TRY, NO_DISTRO_UPGRADE_DATA, INCOMPATIBLE_ARCHITECTURE, NO_SPACE_ON_DEVICE, MEDIA_CHANGE_REQUIRED, NOT_AUTHORIZED, UPDATE_NOT_FOUND, CANNOT_INSTALL_REPO_UNSIGNED, CANNOT_UPDATE_REPO_UNSIGNED, CANNOT_GET_FILELIST, CANNOT_GET_REQUIRES, CANNOT_DISABLE_REPOSITORY, RESTRICTED_DOWNLOAD, PACKAGE_FAILED_TO_CONFIGURE, PACKAGE_FAILED_TO_BUILD, PACKAGE_FAILED_TO_INSTALL, PACKAGE_FAILED_TO_REMOVE, UPDATE_FAILED_DUE_TO_RUNNING_PROCESS, PACKAGE_DATABASE_CHANGED, PROVIDE_TYPE_NOT_SUPPORTED, INSTALL_ROOT_INVALID, CANNOT_FETCH_SOURCES, CANCELLED_PRIORITY, UNFINISHED_TRANSACTION, LOCK_REQUIRED, LAST } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkExitEnum", cprefix = "PK_EXIT_ENUM_", type_id = "pk_exit_enum_get_type ()")] [GIR (name = "ExitEnum")] public enum Exit { UNKNOWN, SUCCESS, FAILED, CANCELLED, KEY_REQUIRED, EULA_REQUIRED, KILLED, MEDIA_CHANGE_REQUIRED, NEED_UNTRUSTED, CANCELLED_PRIORITY, SKIP_TRANSACTION, REPAIR_REQUIRED, LAST; public static PackageKit.Exit enum_from_string (string exit); public static unowned string enum_to_string (PackageKit.Exit exit); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkFilterEnum", cprefix = "PK_FILTER_ENUM_", type_id = "pk_filter_enum_get_type ()")] [GIR (name = "FilterEnum")] public enum Filter { UNKNOWN, NONE, INSTALLED, NOT_INSTALLED, DEVELOPMENT, NOT_DEVELOPMENT, GUI, NOT_GUI, FREE, NOT_FREE, VISIBLE, NOT_VISIBLE, SUPPORTED, NOT_SUPPORTED, BASENAME, NOT_BASENAME, NEWEST, NOT_NEWEST, ARCH, NOT_ARCH, SOURCE, NOT_SOURCE, COLLECTIONS, NOT_COLLECTIONS, APPLICATION, NOT_APPLICATION, DOWNLOADED, NOT_DOWNLOADED, LAST; public static PackageKit.Bitfield bitfield_from_string (string filters); public static string bitfield_to_string (PackageKit.Bitfield filters); public static PackageKit.Filter enum_from_string (string filter); public static unowned string enum_to_string (PackageKit.Filter filter); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkGroupEnum", cprefix = "PK_GROUP_ENUM_", type_id = "pk_group_enum_get_type ()")] [GIR (name = "GroupEnum")] public enum Group { UNKNOWN, ACCESSIBILITY, ACCESSORIES, ADMIN_TOOLS, COMMUNICATION, DESKTOP_GNOME, DESKTOP_KDE, DESKTOP_OTHER, DESKTOP_XFCE, EDUCATION, FONTS, GAMES, GRAPHICS, INTERNET, LEGACY, LOCALIZATION, MAPS, MULTIMEDIA, NETWORK, OFFICE, OTHER, POWER_MANAGEMENT, PROGRAMMING, PUBLISHING, REPOS, SECURITY, SERVERS, SYSTEM, VIRTUALIZATION, SCIENCE, DOCUMENTATION, ELECTRONICS, COLLECTIONS, VENDOR, NEWEST, LAST; public static PackageKit.Bitfield bitfield_from_string (string groups); public static string bitfield_to_string (PackageKit.Bitfield groups); public static PackageKit.Group enum_from_string (string group); public static unowned string enum_to_string (PackageKit.Group group); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkInfoEnum", cprefix = "PK_INFO_ENUM_", type_id = "pk_info_enum_get_type ()")] [GIR (name = "InfoEnum")] public enum Info { UNKNOWN, INSTALLED, AVAILABLE, LOW, ENHANCEMENT, NORMAL, BUGFIX, IMPORTANT, SECURITY, BLOCKED, DOWNLOADING, UPDATING, INSTALLING, REMOVING, CLEANUP, OBSOLETING, COLLECTION_INSTALLED, COLLECTION_AVAILABLE, FINISHED, REINSTALLING, DOWNGRADING, PREPARING, DECOMPRESSING, UNTRUSTED, TRUSTED, LAST; public static PackageKit.Info enum_from_string (string info); public static unowned string enum_to_localised_past (PackageKit.Info info); public static unowned string enum_to_localised_present (PackageKit.Info info); public static unowned string enum_to_string (PackageKit.Info info); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkMediaTypeEnum", cprefix = "PK_MEDIA_TYPE_ENUM_", type_id = "pk_media_type_enum_get_type ()")] [GIR (name = "MediaTypeEnum")] public enum MediaType { UNKNOWN, CD, DVD, DISC, LAST; public static PackageKit.MediaType enum_from_string (string media_type); public static unowned string enum_to_string (PackageKit.MediaType media_type); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkMessageEnum", cprefix = "PK_MESSAGE_ENUM_", type_id = "pk_message_enum_get_type ()")] [GIR (name = "MessageEnum")] public enum MessageType { UNKNOWN, BROKEN_MIRROR, CONNECTION_REFUSED, PARAMETER_INVALID, PRIORITY_INVALID, BACKEND_ERROR, DAEMON_ERROR, CACHE_BEING_REBUILT, NEWER_PACKAGE_EXISTS, COULD_NOT_FIND_PACKAGE, CONFIG_FILES_CHANGED, PACKAGE_ALREADY_INSTALLED, AUTOREMOVE_IGNORED, REPO_METADATA_DOWNLOAD_FAILED, REPO_FOR_DEVELOPERS_ONLY, OTHER_UPDATES_HELD_BACK, LAST } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkNetworkEnum", cprefix = "PK_NETWORK_ENUM_", type_id = "pk_network_enum_get_type ()")] [GIR (name = "NetworkEnum")] public enum Network { UNKNOWN, OFFLINE, ONLINE, WIRED, WIFI, MOBILE, LAST; public static PackageKit.Network enum_from_string (string network); public static unowned string enum_to_string (PackageKit.Network network); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_PACKAGE_SACK_SORT_TYPE_", type_id = "pk_package_sack_sort_type_get_type ()")] public enum PackageSackSortType { NAME, INFO, PACKAGE_ID, SUMMARY, LAST } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_PROGRESS_TYPE_", type_id = "pk_progress_type_get_type ()")] public enum ProgressType { PACKAGE_ID, TRANSACTION_ID, PERCENTAGE, ALLOW_CANCEL, STATUS, ROLE, CALLER_ACTIVE, ELAPSED_TIME, REMAINING_TIME, SPEED, DOWNLOAD_SIZE_REMAINING, UID, PACKAGE, ITEM_PROGRESS, TRANSACTION_FLAGS, INVALID } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkProvidesEnum", cprefix = "PK_PROVIDES_ENUM_", type_id = "pk_provides_enum_get_type ()")] [GIR (name = "ProvidesEnum")] public enum Provides { UNKNOWN, ANY, MODALIAS, CODEC, MIMETYPE, FONT, HARDWARE_DRIVER, POSTSCRIPT_DRIVER, PLASMA_SERVICE, SHARED_LIB, PYTHON, LANGUAGE_SUPPORT, LAST; public static PackageKit.Provides enum_from_string (string provides); public static unowned string enum_to_string (PackageKit.Provides provides); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkRestartEnum", cprefix = "PK_RESTART_ENUM_", type_id = "pk_restart_enum_get_type ()")] [GIR (name = "RestartEnum")] public enum Restart { UNKNOWN, NONE, APPLICATION, SESSION, SYSTEM, SECURITY_SESSION, SECURITY_SYSTEM, LAST; public static PackageKit.Restart enum_from_string (string restart); public static unowned string enum_to_string (PackageKit.Restart restart); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkRoleEnum", cprefix = "PK_ROLE_ENUM_", type_id = "pk_role_enum_get_type ()")] [GIR (name = "RoleEnum")] public enum Role { UNKNOWN, CANCEL, GET_DEPENDS, GET_DETAILS, GET_FILES, GET_PACKAGES, GET_REPO_LIST, GET_REQUIRES, GET_UPDATE_DETAIL, GET_UPDATES, INSTALL_FILES, INSTALL_PACKAGES, INSTALL_SIGNATURE, REFRESH_CACHE, REMOVE_PACKAGES, REPO_ENABLE, REPO_SET_DATA, RESOLVE, SEARCH_DETAILS, SEARCH_FILE, SEARCH_GROUP, SEARCH_NAME, UPDATE_PACKAGES, WHAT_PROVIDES, ACCEPT_EULA, DOWNLOAD_PACKAGES, GET_DISTRO_UPGRADES, GET_CATEGORIES, GET_OLD_TRANSACTIONS, UPGRADE_SYSTEM, REPAIR_SYSTEM, LAST; public static PackageKit.Bitfield bitfield_from_string (string roles); public static string bitfield_to_string (PackageKit.Bitfield roles); public static PackageKit.Role enum_from_string (string role); public static unowned string enum_to_localised_present (PackageKit.Role role); public static unowned string enum_to_string (PackageKit.Role role); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkSigTypeEnum", cprefix = "PK_SIGTYPE_ENUM_", type_id = "pk_sig_type_enum_get_type ()")] [GIR (name = "SigTypeEnum")] public enum SigType { UNKNOWN, GPG, LAST; public static PackageKit.SigType enum_from_string (string sig_type); public static unowned string enum_to_string (PackageKit.SigType sig_type); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkStatusEnum", cprefix = "PK_STATUS_ENUM_", type_id = "pk_status_enum_get_type ()")] [GIR (name = "StatusEnum")] public enum Status { UNKNOWN, WAIT, SETUP, RUNNING, QUERY, INFO, REMOVE, REFRESH_CACHE, DOWNLOAD, INSTALL, UPDATE, CLEANUP, OBSOLETE, DEP_RESOLVE, SIG_CHECK, TEST_COMMIT, COMMIT, REQUEST, FINISHED, CANCEL, DOWNLOAD_REPOSITORY, DOWNLOAD_PACKAGELIST, DOWNLOAD_FILELIST, DOWNLOAD_CHANGELOG, DOWNLOAD_GROUP, DOWNLOAD_UPDATEINFO, REPACKAGING, LOADING_CACHE, SCAN_APPLICATIONS, GENERATE_PACKAGE_LIST, WAITING_FOR_LOCK, WAITING_FOR_AUTH, SCAN_PROCESS_LIST, CHECK_EXECUTABLE_FILES, CHECK_LIBRARIES, COPY_FILES, LAST; public static PackageKit.Status enum_from_string (string status); public static unowned string enum_to_localised_text (PackageKit.Status status); public static unowned string enum_to_string (PackageKit.Status status); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkTransactionFlagEnum", cprefix = "PK_TRANSACTION_FLAG_ENUM_", type_id = "pk_transaction_flag_enum_get_type ()")] [GIR (name = "TransactionFlagEnum")] public enum TransactionFlag { NONE, ONLY_TRUSTED, SIMULATE, ONLY_DOWNLOAD, LAST; public static PackageKit.Bitfield bitfield_from_string (string transaction_flags); public static string bitfield_to_string (PackageKit.Bitfield transaction_flags); public static PackageKit.TransactionFlag enum_from_string (string transaction_flag); public static unowned string enum_to_string (PackageKit.TransactionFlag transaction_flag); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkUpdateStateEnum", cprefix = "PK_UPDATE_STATE_ENUM_", type_id = "pk_update_state_enum_get_type ()")] [GIR (name = "UpdateStateEnum")] public enum UpdateState { UNKNOWN, STABLE, UNSTABLE, TESTING, LAST; public static PackageKit.UpdateState enum_from_string (string update_state); public static unowned string enum_to_string (PackageKit.UpdateState update_state); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkUpgradeKindEnum", cprefix = "PK_UPGRADE_KIND_ENUM_", type_id = "pk_upgrade_kind_enum_get_type ()")] [GIR (name = "UpgradeKindEnum")] public enum UpgradeKind { UNKNOWN, MINIMAL, DEFAULT, COMPLETE, LAST; public static PackageKit.UpgradeKind enum_from_string (string upgrade_kind); public static unowned string enum_to_string (PackageKit.UpgradeKind upgrade_kind); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_CATALOG_ERROR_")] public errordomain CatalogError { FAILED; public static GLib.Quark quark (); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_CLIENT_ERROR_")] public errordomain ClientError { FAILED, FAILED_AUTH, NO_TID, ALREADY_TID, ROLE_UNKNOWN, CANNOT_START_DAEMON, INVALID_INPUT, INVALID_FILE, NOT_SUPPORTED, DECLINED_SIMULATION, LAST; public static GLib.Quark quark (); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_CONTROL_ERROR_")] public errordomain ControlError { FAILED, CANNOT_START_DAEMON; public static GLib.Quark quark (); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_SERVICE_PACK_ERROR_")] public errordomain ServicePackError { FAILED_SETUP, FAILED_DOWNLOAD, FAILED_EXTRACTION, FAILED_CREATE, NOTHING_TO_DO, NOT_COMPATIBLE; public static GLib.Quark quark (); } [CCode (cheader_filename = "packagekit-glib2/packagekit.h", instance_pos = 1.9)] public delegate bool PackageSackFilterFunc (PackageKit.Package package); [CCode (cheader_filename = "packagekit-glib2/packagekit.h", instance_pos = 2.9)] public delegate void ProgressCallback (PackageKit.Progress progress, PackageKit.ProgressType type); [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_CATALOG_FILE_EXTENSION")] public const string CATALOG_FILE_EXTENSION; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_CATALOG_FILE_HEADER")] public const string CATALOG_FILE_HEADER; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_INTERFACE")] public const string DBUS_INTERFACE; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_INTERFACE_TRANSACTION")] public const string DBUS_INTERFACE_TRANSACTION; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_PATH")] public const string DBUS_PATH; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_SERVICE")] public const string DBUS_SERVICE; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DESKTOP_DEFAULT_APPLICATION_DIR")] public const string DESKTOP_DEFAULT_APPLICATION_DIR; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_MAJOR_VERSION")] public const int MAJOR_VERSION; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_MICRO_VERSION")] public const int MICRO_VERSION; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_MINOR_VERSION")] public const int MINOR_VERSION; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_IDS_DELIM")] public const string PACKAGE_IDS_DELIM; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_ARCH")] public const int PACKAGE_ID_ARCH; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_DATA")] public const int PACKAGE_ID_DATA; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_NAME")] public const int PACKAGE_ID_NAME; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_VERSION")] public const int PACKAGE_ID_VERSION; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SERVICE_PACK_FILE_EXTENSION")] public const string SERVICE_PACK_FILE_EXTENSION; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SERVICE_PACK_GROUP_NAME")] public const string SERVICE_PACK_GROUP_NAME; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SYSTEM_PACKAGE_CACHE_FILENAME")] public const string SYSTEM_PACKAGE_CACHE_FILENAME; [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SYSTEM_PACKAGE_LIST_FILENAME")] public const string SYSTEM_PACKAGE_LIST_FILENAME; [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void common_test (void* user_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void debug_add_log_domain (string log_domain); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static bool debug_is_verbose (); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void debug_set_verbose (bool verbose); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static unowned string enum_find_string (PackageKit.EnumMatch table, uint value); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static uint enum_find_value (PackageKit.EnumMatch table, string string); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void enum_test (void* user_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static string get_distro_id (); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static string iso8601_from_date (GLib.Date date); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static string iso8601_present (); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__POINTER_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__POINTER_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_BOOLEAN (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_BOXED (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_BOOLEAN (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_BOOLEAN_STRING_UINT_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_BOOLEAN_UINT_UINT_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_BOOLEAN (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_BOOLEAN_STRING_UINT_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_UINT64 (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_UINT64 (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_UINT_STRING_STRING_UINT64 (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_STRING_UINT_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_UINT_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__STRING_UINT_UINT_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__UINT_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__UINT_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void marshal_VOID__UINT_UINT_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static void polkit_agent_close (); [CCode (cheader_filename = "packagekit-glib2/packagekit.h")] public static int polkit_agent_open (); } ./AppStream-0.4.0/vapi/packagekit-plugin.vapi0000644000175000017500000003561312230763267021211 0ustar matthiasmatthias/* packagekit-plugin.vapi generated by vapigen, do not modify. */ [CCode (cprefix = "Pk", gir_namespace = "PackageKitPlugin", gir_version = "1.0", lower_case_cprefix = "pk_")] namespace PkPlugin { [CCode (cheader_filename = "plugin/packagekit-plugin.h", type_id = "pk_backend_get_type ()")] public class Backend : GLib.Object { [CCode (has_construct_function = false)] public Backend (); public void accept_eula (string eula_id); public static unowned string bool_to_string (bool value); public void cancel (PkPlugin.BackendJob job); public void destroy (); public void download_packages (PkPlugin.BackendJob job, string package_ids, string directory); public string get_accepted_eula_string (); public unowned string get_author (); public void get_categories (PkPlugin.BackendJob job); public void get_depends (PkPlugin.BackendJob job, PackageKit.Bitfield filters, string package_ids, bool recursive); public unowned string get_description (); public void get_details (PkPlugin.BackendJob job, string package_ids); public void get_distro_upgrades (PkPlugin.BackendJob job); public void get_files (PkPlugin.BackendJob job, string package_ids); public PackageKit.Bitfield get_filters (); public PackageKit.Bitfield get_groups (); [CCode (array_length = false, array_null_terminated = true)] public string[] get_mime_types (); public unowned string get_name (); public void get_packages (PkPlugin.BackendJob job, PackageKit.Bitfield filters); public PackageKit.Bitfield get_provides (); public void get_repo_list (PkPlugin.BackendJob job, PackageKit.Bitfield filters); public void get_requires (PkPlugin.BackendJob job, PackageKit.Bitfield filters, string package_ids, bool recursive); public PackageKit.Bitfield get_roles (); public void get_update_detail (PkPlugin.BackendJob job, string package_ids); public void get_updates (PkPlugin.BackendJob job, PackageKit.Bitfield filters); public void implement (PackageKit.Role role); public void initialize (); public void install_files (PkPlugin.BackendJob job, PackageKit.Bitfield transaction_flags, string full_paths); public void install_packages (PkPlugin.BackendJob job, PackageKit.Bitfield transaction_flags, string package_ids); public void install_signature (PkPlugin.BackendJob job, PackageKit.SigType type, string key_id, string package_id); public bool is_eula_valid (string eula_id); public bool is_implemented (PackageKit.Role role); public bool is_online (); public bool load () throws GLib.Error; public void refresh_cache (PkPlugin.BackendJob job, bool force); public void remove_packages (PkPlugin.BackendJob job, PackageKit.Bitfield transaction_flags, string package_ids, bool allow_deps, bool autoremove); public void repair_system (PkPlugin.BackendJob job, PackageKit.Bitfield transaction_flags); public void repo_enable (PkPlugin.BackendJob job, string repo_id, bool enabled); public bool repo_list_changed (); public void repo_set_data (PkPlugin.BackendJob job, string repo_id, string parameter, string value); public void reset_job (PkPlugin.BackendJob job); public void resolve (PkPlugin.BackendJob job, PackageKit.Bitfield filters, string packages); public void search_details (PkPlugin.BackendJob job, PackageKit.Bitfield filters, string search); public void search_files (PkPlugin.BackendJob job, PackageKit.Bitfield filters, string search); public void search_groups (PkPlugin.BackendJob job, PackageKit.Bitfield filters, string search); public void search_names (PkPlugin.BackendJob job, PackageKit.Bitfield filters, string search); public void start_job (PkPlugin.BackendJob job); public void stop_job (PkPlugin.BackendJob job); public bool supports_parallelization (); public bool unload (); public void update_packages (PkPlugin.BackendJob job, PackageKit.Bitfield transaction_flags, string package_ids); public void upgrade_system (PkPlugin.BackendJob job, string distro_id, PackageKit.UpgradeKind upgrade_kind); public bool watch_file (string filename, PkPlugin.BackendFileChanged func); public void what_provides (PkPlugin.BackendJob job, PackageKit.Bitfield filters, PackageKit.Provides provides, string search); } [CCode (cheader_filename = "plugin/packagekit-plugin.h", type_id = "pk_backend_job_get_type ()")] public class BackendJob : GLib.Object { [CCode (has_construct_function = false)] public BackendJob (); public void category (string parent_id, string cat_id, string name, string summary, string icon); public void details (string package_id, string license, PackageKit.Group group, string description, string url, ulong size); public void distro_upgrade (PackageKit.DistroUpgradeType type, string name, string summary); public void eula_required (string eula_id, string package_id, string vendor_name, string license_agreement); public void files (string package_id, string files); public void finished (); public bool get_allow_cancel (); public void* get_backend (); public PkPlugin.Hint get_background (); public uint get_cache_age (); public unowned string get_cmdline (); public PackageKit.Exit get_exit_code (); public string get_frontend_socket (); public PkPlugin.Hint get_interactive (); public bool get_is_error_set (); public bool get_is_finished (); public string get_locale (); public bool get_locked (); public string get_no_proxy (); public string get_pac (); public GLib.Variant get_parameters (); public string get_proxy_ftp (); public string get_proxy_http (); public string get_proxy_https (); public string get_proxy_socks (); public PackageKit.Role get_role (); public uint get_runtime (); public bool get_started (); public PackageKit.Bitfield get_transaction_flags (); public uint get_uid (); public void* get_user_data (); public bool get_vfunc_enabled (PkPlugin.BackendJobSignal signal_kind); public bool has_set_error_code (); public void media_change_required (PackageKit.MediaType media_type, string media_id, string media_text); public void not_implemented_yet (string method); public void package (PackageKit.Info info, string package_id, string summary); public void repo_detail (string repo_id, string description, bool enabled); public void repo_signature_required (string package_id, string repository_name, string key_url, string key_userid, string key_id, string key_fingerprint, string key_timestamp, PackageKit.SigType type); public void require_restart (PackageKit.Restart restart, string package_id); public void reset (); public void set_allow_cancel (bool allow_cancel); public void set_backend (void* backend); public void set_background (PkPlugin.Hint background); public void set_cache_age (uint cache_age); public void set_cmdline (string cmdline); public void set_download_size_remaining (uint64 download_size_remaining); public void set_exit_code (PackageKit.Exit exit); public bool set_frontend_socket (string frontend_socket); public void set_interactive (PkPlugin.Hint interactive); public void set_item_progress (string package_id, PackageKit.Status status, uint percentage); public void set_locale (string code); public void set_locked (bool locked); public void set_parameters (GLib.Variant @params); public void set_percentage (uint percentage); public void set_proxy (string proxy_http, string proxy_https, string proxy_ftp, string proxy_socks, string no_proxy, string pac); public void set_role (PackageKit.Role role); public void set_speed (uint speed); public void set_started (bool started); public void set_status (PackageKit.Status status); public void set_transaction_flags (PackageKit.Bitfield transaction_flags); public void set_uid (uint uid); public void set_user_data (void* user_data); public void set_vfunc (PkPlugin.BackendJobSignal signal_kind, PkPlugin.BackendJobVFunc vfunc); public bool thread_create (owned PkPlugin.BackendJobThreadFunc func); public void update_detail (string package_id, string updates, string obsoletes, string vendor_urls, string bugzilla_urls, string cve_urls, PackageKit.Restart restart, string update_text, string changelog, PackageKit.UpdateState state, string issued, string updated); public bool use_background (); } [CCode (cheader_filename = "plugin/packagekit-plugin.h", type_id = "pk_conf_get_type ()")] public class Conf : GLib.Object { [CCode (has_construct_function = false)] public Conf (); public bool get_bool (string key); public static string get_filename (); public int get_int (string key); public string get_string (string key); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_strv (string key); public void set_bool (string key, bool value); public void set_string (string key, string value); } [CCode (cheader_filename = "plugin/packagekit-plugin.h", type_id = "pk_transaction_get_type ()")] public class Transaction : GLib.Object { [CCode (has_construct_function = false)] public Transaction (); public void add_supported_content_type (string mime_type); public void cancel_bg (); public static GLib.Quark error_quark (); public unowned PkPlugin.BackendJob get_backend_job (); public unowned PkPlugin.Conf get_conf (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_full_paths (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_package_ids (); public unowned PackageKit.Results get_results (); public PackageKit.Role get_role (); public PkPlugin.TransactionState get_state (); public unowned string get_tid (); public PackageKit.Bitfield get_transaction_flags (); public uint get_uid (); [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_values (); public bool is_exclusive (); public bool is_finished_with_lock_required (); public void make_exclusive (); public void reset_after_lock_error (); public bool run (); public void set_backend (PkPlugin.Backend backend); public void set_full_paths (string full_paths); public void set_package_ids (string package_ids); public bool set_state (PkPlugin.TransactionState state); public void signals_reset (PkPlugin.BackendJob job); public void skip_auth_checks (bool skip_checks); public static unowned string state_to_string (PkPlugin.TransactionState state); public signal void finished (); } [CCode (cheader_filename = "plugin/packagekit-plugin.h", has_type_id = false)] public struct Plugin { public weak PkPlugin.Backend backend; public weak PkPlugin.BackendJob job; public void destroy (); public static unowned string get_description (); public void initialize (); public void state_changed (); public void transaction_content_types (PkPlugin.Transaction transaction); public void transaction_finished_end (PkPlugin.Transaction transaction); public void transaction_finished_results (PkPlugin.Transaction transaction); public unowned string transaction_get_action (PkPlugin.Transaction transaction, string action_id); public void transaction_run (PkPlugin.Transaction transaction); public void transaction_started (PkPlugin.Transaction transaction); } [CCode (cheader_filename = "plugin/packagekit-plugin.h", cprefix = "PK_BACKEND_SIGNAL_", has_type_id = false)] public enum BackendJobSignal { ALLOW_CANCEL, DETAILS, ERROR_CODE, DISTRO_UPGRADE, FINISHED, MESSAGE, PACKAGE, ITEM_PROGRESS, FILES, PERCENTAGE, REMAINING, SPEED, DOWNLOAD_SIZE_REMAINING, REPO_DETAIL, REPO_SIGNATURE_REQUIRED, EULA_REQUIRED, MEDIA_CHANGE_REQUIRED, REQUIRE_RESTART, STATUS_CHANGED, LOCKED_CHANGED, UPDATE_DETAIL, CATEGORY, LAST } [CCode (cheader_filename = "plugin/packagekit-plugin.h", cname = "PkHintEnum", cprefix = "PK_HINT_ENUM_", has_type_id = false)] [GIR (name = "HintEnum")] public enum Hint { FALSE, TRUE, UNSET, INVALID, LAST; public static PkPlugin.Hint enum_from_string (string hint); public static unowned string enum_to_string (PkPlugin.Hint hint); } [CCode (cheader_filename = "plugin/packagekit-plugin.h", cprefix = "PK_PLUGIN_PHASE_", has_type_id = false)] public enum PluginPhase { INIT, TRANSACTION_CONTENT_TYPES, TRANSACTION_RUN, TRANSACTION_STARTED, TRANSACTION_FINISHED_RESULTS, TRANSACTION_FINISHED_END, DESTROY, STATE_CHANGED, UNKNOWN } [CCode (cheader_filename = "plugin/packagekit-plugin.h", cprefix = "PK_TRANSACTION_STATE_", has_type_id = false)] public enum TransactionState { NEW, WAITING_FOR_AUTH, COMMITTED, READY, RUNNING, FINISHED, UNKNOWN } [CCode (cheader_filename = "plugin/packagekit-plugin.h", has_target = false)] public delegate void BackendFileChanged (PkPlugin.Backend backend, void* data); [CCode (cheader_filename = "plugin/packagekit-plugin.h", instance_pos = 2.9)] public delegate void BackendJobThreadFunc (PkPlugin.BackendJob job, GLib.Variant @params); [CCode (cheader_filename = "plugin/packagekit-plugin.h", instance_pos = 2.9)] public delegate void BackendJobVFunc (PkPlugin.BackendJob job, void* object); [CCode (cheader_filename = "plugin/packagekit-plugin.h", has_target = false)] public delegate void PluginFunc (PkPlugin.Plugin plugin); [CCode (cheader_filename = "plugin/packagekit-plugin.h", has_target = false)] public delegate unowned string PluginGetActionFunc (PkPlugin.Plugin plugin, PkPlugin.Transaction transaction, string action_id); [CCode (cheader_filename = "plugin/packagekit-plugin.h", has_target = false)] public delegate unowned string PluginGetDescFunc (); [CCode (cheader_filename = "plugin/packagekit-plugin.h", has_target = false)] public delegate void PluginTransactionFunc (PkPlugin.Plugin plugin, PkPlugin.Transaction transaction); [CCode (cheader_filename = "plugin/packagekit-plugin.h", cname = "PK_BACKEND_PERCENTAGE_INVALID")] public const int BACKEND_PERCENTAGE_INVALID; [CCode (cheader_filename = "plugin/packagekit-plugin.h", cname = "PK_CONF_VALUE_INT_MISSING")] public const int CONF_VALUE_INT_MISSING; [CCode (cheader_filename = "plugin/packagekit-plugin.h", cname = "PK_TRANSACTION_ALL_BACKEND_SIGNALS")] public const int TRANSACTION_ALL_BACKEND_SIGNALS; [CCode (cheader_filename = "plugin/packagekit-plugin.h", cname = "PK_TRANSACTION_NO_BACKEND_SIGNALS")] public const int TRANSACTION_NO_BACKEND_SIGNALS; [CCode (cheader_filename = "plugin/packagekit-plugin.h")] public static bool directory_remove_contents (string directory); [CCode (cheader_filename = "plugin/packagekit-plugin.h")] public static GLib.DBusNodeInfo load_introspection (string filename) throws GLib.Error; [CCode (cheader_filename = "plugin/packagekit-plugin.h")] public static uint strlen (string text, uint len); [CCode (cheader_filename = "plugin/packagekit-plugin.h")] public static bool strtoint (string text, int value); [CCode (cheader_filename = "plugin/packagekit-plugin.h")] public static bool strtouint (string text, uint value); [CCode (cheader_filename = "plugin/packagekit-plugin.h")] public static bool strtouint64 (string text, uint64 value); [CCode (cheader_filename = "plugin/packagekit-plugin.h")] public static bool strzero (string text); } ./AppStream-0.4.0/vapi/PackageKitGlib-1.0.metadata0000644000175000017500000000031112230763267021513 0ustar matthiasmatthias// Metadata for PackageKit GIR PackageKitGlib name="PackageKit" Control.locked#virtual_method skip DistroUpgradeEnum name="DistroUpgradeType" ErrorEnum name="ErrorType" MessageEnum name="MessageType" ./AppStream-0.4.0/vapi/generate_vapi.sh0000755000175000017500000000065012230763267020072 0ustar matthiasmatthias#!/bin/sh # Small helper script to generate vapi files from GIR vapigen --metadatadir=. -d . --vapidir=. \ /usr/share/gir-1.0/PackageKitGlib-1.0.gir \ --library=packagekit-glib2 \ --pkg glib-2.0 --pkg gio-2.0 --pkg gobject-2.0 vapigen --metadatadir=. -d . --vapidir=. \ /usr/share/gir-1.0/PackageKitPlugin-1.0.gir \ --library=packagekit-plugin \ --pkg glib-2.0 --pkg gio-2.0 --pkg gobject-2.0 --pkg packagekit-glib2 ./AppStream-0.4.0/vapi/PackageKitPlugin-1.0.metadata0000644000175000017500000000011012230763267022071 0ustar matthiasmatthias// Metadata for PackageKit Plugin GIR PackageKitPlugin name="PkPlugin" ./AppStream-0.4.0/vapi/config.vapi0000644000175000017500000000275612230763267017061 0ustar matthiasmatthias/* config.vapi * * Copyright (C) 2011 Matthias Klumpp * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Author: * Matthias Klumpp */ [CCode (prefix = "", lower_case_cprefix = "", cheader_filename = "config.h")] namespace Config { /* Package information */ public const string PACKAGE_NAME; public const string VERSION; public const string PACKAGE_URL; public const string PACKAGE_BUGREPORT; /* Gettext package */ public const string GETTEXT_PACKAGE; /* Configured paths */ public const string PREFIXDIR; /* /usr/local */ public const string LOCALEDIR; /* /usr/local/share/locale */ public const string DATADIR; /* /usr/local/share */ public const string PKGDATADIR; /* /usr/local/share/listaller */ public const string LIBDIR; /* /usr/local/lib */ public const string PKGLIBDIR; /* /usr/local/lib/listaller */ } ./AppStream-0.4.0/LICENSE.GPLv30000644000175000017500000010437112230763267015667 0ustar matthiasmatthias GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ./AppStream-0.4.0/docs/0000775000175000017500000000000012230763267014714 5ustar matthiasmatthias./AppStream-0.4.0/docs/sources/0000775000175000017500000000000012230763220016364 5ustar matthiasmatthias./AppStream-0.4.0/docs/sources/appmeta/0000775000175000017500000000000012227020514020011 5ustar matthiasmatthias./AppStream-0.4.0/docs/sources/appmeta/AppMetadata.xml0000664000175000017500000000113712226701276022730 0ustar matthiasmatthias %BOOK_ENTITIES; ]> Application Metadata AppStream uses it's own XML metadata to describe applications. This chapter contains information about it. ./AppStream-0.4.0/docs/sources/appmeta/appdata.xml0000664000175000017500000000674612226701276022174 0ustar matthiasmatthias %BOOK_ENTITIES; ]>
AppData XML files
Introduction Every software center that exists allows the user to look at screenshots and a long description of the application before it is installed. For most users it allows them to answer the question Do I want to install this application?. Traditionally in Linux distributions, we have none of this data for the vast majority of our desktop user-installable applications. The packages-descriptions are describing all contents of a package, and not just a single application. They are also often written in a technical language and refer to other packages, which makes it hard for beginners to understand what the application they want to install really does. Additionally, if you are not using Debian or Ubuntu, the package descriptions are often untranslated. Also, packages do not provide some metadata users might be interested in before installing an application. To solve this, we have defined a new data file, which the upstream project can optionally translate using the same technique as Desktop files or GSetting schemas. The AppData specification is a subset of the AppStream metadata (see ). The AppData files override any values which are automatically fetched by the AppStream data generator. Applications can ship one or more files in /usr/share/appdata/%{id}.appdata.xml.
File specification The file should contain something like this: gnome-power-statistics.desktop GPL-2+ Power Statistics Observe power management

Power Statistics is a program used to view historical and current battery information and will show programs running on your computer using power.

Example list:

  • First item
  • Second item

You probably only need to install this application if you are having problems with your laptop battery, or are trying to work out what programs are using significant amounts of power.

http://www.hughsie.com/en_US/main.png http://www.hughsie.com/en_US/preferences.png http://www.gnome.org/projects/en_US/gnome-power-manager GNOME
]]>
This draft is not finished yet and might change in future. If you want to ship AppData files right now, please also take a look at the AppData draft which is currently being implemented by GNOME.
./AppStream-0.4.0/docs/sources/appmeta/appstream-data.xml0000664000175000017500000003677212227020514023455 0ustar matthiasmatthias %BOOK_ENTITIES; ]>
AppStream XML files
Introduction AppStream XML files are small textfiles describing all available applications in the distribution's package repositories. The XML files might be compressed with GZip.
File naming and location The XML files must have an unique name, which is usually the distribution's name and version, combined with the name of the repository/origin. For example in Debian 8 (Jessie), the filename for the main repository component would be debian-jessie-main.xml.gz. For Fedora 20 (Heisenbug) updates it would be fedora-20-updates.xml.gz. 3rd-party repositories use a vendor name and repository-name combination, for example Ubuntu PPAs might get ppa-ubuntu12.04-username-foobar.xml. There are two valid locations to store AppStream XML data. /usr/share/app-info/xmls stores all AppStream data which has been installed via software packages, while /var/cache/app-info/xmls stores application data which was downloaded by the package manager or placed there by other tools (e.g. Listaller). The XML files can either be plain files or be compressed with gzip. It is always a good idea to compress the files, because they tend to become quite large.
XML structure The XML starts with an ]]> tag as root element. It has all the ]]> elements as children. Data to fill the application elements is usually taken from their Desktop files and package data. However, if an application ships AppData files (see ), values defined there should override data from any other source. The ]]> element must at least have an id, name, summary, pkgname and icon tag. All possible tags are: <id/> The ]]> tag is the same name as the installed .desktop file for the application. Additional identifiers are possible later, but right now desktop is the only supported type. <pkgname/> The name of the package which needs to be installed in order to provide this application. <name/> The application name defined in the application's Desktop file. <project_license/> The ]]> tag is indicating the license of your project/application. It should be a string in SPDX format. Licenses may be combined using and and or logic. Possible values include: GPL-2 LGPL-3+ and GPL-3+ MIT CC-BY-SA-2 ... A full list of recognized licenses and their identifiers can be found at the SPDX OpenSource License Registry. For SPDX compatibility, versions with trailing dot-zeroes are considered to be equivalent to versions without (e.g., "2.0.0" is considered equal to "2.0" and "2"). Although the license tag is not mandatory, it is recommended to include it. <summary/> A short summary of the purpose and function of this application. Usually taken from the Desktop file, if the application does not ship an AppData file. <description/> A long description of the application. It is usually taken from the package descriptions or application's AppData files. The description might use markup. Right now, only paragraph, ordered list and unordered list are supported. An example description element might look like this:

Power Statistics is a program used to view historical and current battery information and will show programs running on your computer using power.

Example list:

  • First item
  • Second item

You probably only need to install this application if you are having problems with your laptop battery, or are trying to work out what programs are using significant amounts of power.

]]>
<url/> Links of type homepage should be a link to the upstream homepage for the application. It is planned to allow links to application's FAQ and forums later. <project_group/> The ]]> tag identifies a project with a specific upstream umbrella project. Known values include GNOME, KDE, XFCE, LXDE, Mozilla and MATE, although other umbrella projects like Yorba would make sense too. Applications should only identify with an umbrella project if you use all their infrastructure and policies, for instance string freezes dates, bugtracker and source control instance. <icon/> The ]]> tag describes the application's icon. It can be of the type stock, cached, local, or url. stock icons are loaded from stock. The icon name should never include any file-extension or path. cached icons are loaded from the AppStream icon cache. The icon tag should contain the icon file name, including it's extension. local icons are reserved for AppStream data installed by local applications or via 3rd-party application installers, such as Listaller. They should specify a full file path. remote icons loaded from a remote URL. This is currently not implemented anywhere, but might be used in future. Examples of the different methods to specify an icon: gimp firefox.png /usr/share/pixmaps/foobar.png http://example.com/icons/foobar.png]]> Multiple ]]> tags might be combined for one application, e.g. to define a stock icon and a cached icon. Software-Centers should always prefer the stock icon, if it is available, and fall back to the other icon types if they can not find it. The libappstream library makes it easy to do that, if you are not accessing the Xapian database manually. The AppStream Xapian database generator will prefer cached over local over remote icons when setting the non-stock icon for the application. <mimetypes/> This tag can contain one or more ]]> tags, describing the mime types this application supports. The data can usually be fetched from the Desktop files. Example: text/html image/jpeg application/rss+xml ]]> <appcategories/> This tag can contain one or more ]]> tags, describing the categories this application is in. This data is usually taken from Desktop files, a list of categories can be found in the Freedesktop menu spec. Example: GNOME GTK Network Telephony ]]> <keywords/> This tag can contain one or more ]]> tags, describing keywords for the application, to make it easier to find in a software center. The data is taken from Desktop files. Example: IDE development programming ]]> <screenshots/> This tag can contain one or more ]]> tags, describing screenshots which are available for the application. A screenshot tag my have the attribute type="default", marking it as the application's default screenshot, which primarily represents it in a software center. Every ]]> is defined by several images of different sizes. All images should have their width and hight set as arguments. Also, one of the images shoukd be marked as type="source", indicating that it is the unscaled version of the screenshot. Images of type="thumbnail" define thumbnails of the screenshot. Every image should have a full remote url set, usually pointing to a cache of images maintained by the distributor. Example: http://www.example.org/en_US/main.png http://www.example.org/en_US/main-small.png .... ]]> <compulsory_for_desktop/> The ]]> tag indicates that the application which the data belongs to is essential for the functionality of the defined desktop environment. Examples for compulsory applications are the GNOME-Shell by the GNOME-Project, or the Plasma-Desktop by KDE, as well as things like iBus or the desktop login manager. Software centers are expected to detect the running desktop environment and disable uninstallation for compulsory components of that desktop, so users will not be able to damage their currently running, primary desktop environment. Multiple occurrences of the ]]> tag are allowed, so a project can be essential for many desktops. The distributor decides which applications should be made compulsory, however it is generally a good idea to follow upstream's recommendations on that matter. A list of all allowed values for this tag is defined in the XDG Menu Specification. Software center applications will only recognize these values.
Example file This is an example AppStream metadata file: firefox.desktop firefox-bin Firefox Firefoux Web browser Navigateur web MPL-2 internet web browser navigateur web-browser firefox.png network web text/html text/xml application/xhtml+xml application/vnd.mozilla.xul+xml text/mml application/x-xpinstall x-scheme-handler/http x-scheme-handler/https http://www.mozilla.com http://www.awesomedistro.example.org/en_US/firefox.desktop/main.png http://www.awesomedistro.example.org/en_US/firefox.desktop/main-small.png ]]>
./AppStream-0.4.0/docs/sources/Author_Group.xml0000664000175000017500000000175412226701276021543 0ustar matthiasmatthias %BOOK_ENTITIES; ]> Matthias Klumpp Debian mak@debian.org Michael Vogt Canonical / Ubuntu / Debian mvo@ubuntu.com Richard Hughes Fedora / RedHat richard@hughsie.com Vincent Untz OpenSUSE vuntz@opensuse.org ./AppStream-0.4.0/docs/sources/APIDoc.xml0000664000175000017500000000143412226701276020157 0ustar matthiasmatthias ]> AppStream API Reference A reference of AppStream's public API can be fount on the API reference pages. If you want to use the PackageKit API, look at the PackageKit reference manual. ./AppStream-0.4.0/docs/sources/images/0000775000175000017500000000000012226701276017641 5ustar matthiasmatthias./AppStream-0.4.0/docs/sources/images/architecture.png0000664000175000017500000054337412226701276023051 0ustar matthiasmatthiasPNG  IHDRjS>sBIT|d pHYsbbtEXtSoftwarewww.inkscape.org< IDATxuxWwvH)+@Bqh)B{qQ!,;{<0w̜&3+""& {Uh(I WڿD1%"" ty#"""""""2sŀĬ0DD.(l5捈(C IݢcDMLPܱe8KLŀ̸DDdAPT+掅(E `(f䉙%""(RGvQ`"'d=RX9""""""E1`gzOD-~v313DDDDDDDlyf!)i=DD (=pmAj_8! ZTL%vBDDN},`ÑiLQN~Vi Oinh/M>DD (dV:DDDDDDD& 7 P#|.GL&DDEj&/p;"""""""2AP|`"&kQ k1QKDD up E1T&DDDDDDD-ObaZ;Z"" (Fdd7bL (+|i!jSZ"Rܨ/APW2#PGZ"K`DH-*s"""""""A@}o%"\H$"a(6e E\8(.:]FdvGH'm@OQ ( "z>O2QKD1Q~#AЬ7*Uux&:* Ga!ؿ+:0L0w7(Th!A3m&N9p}^ O~dQ6<õˑMy"APXV :j~%""~];C%)/*hLQ]{>ESzamXqRRRE՚Q?ԯr+@&˞lV,ZF||C!ZŪjI$/+\q}HF4K}(Qeaɪ͝A(\2W\%"{TjuøiNس`ɣqq@bE/H&Ev/_ů@EÝ߻x<]]J% >43#bU5|>oJnQ >2S/Ս\[o<~kDF%hDm.D-pa}0YUXXEe+ w4 666X(bҨq$m1Qxzyty5qqwJ`۪AL:2dD*""=jT oS>4 J1_T%"\M|'(=27"^l.1:a|9 }<<ѸyS|7? {c`֔ B$ $`eؾicLI%.9MZ鼮3VoYHLLD׶")1`eeu;7Anų1~hI[fM0tzǞ)q0Zm(q8#kHIIVƗ{uɌORݽuþ.V8.YǚaM{ƱwBL'$$`Uؽ?ڢN}|ݯ/j1:ŚO<+d\qe \>ԩͯ?LQnUu}3W,Rmġ[M1w>Cð~زn#~3aܾqKBB5~ؘhEKKKXZXʶJueE8q7ݱi+ܻ.QJH_sxR~up.9,‚KPPAݹy C7@r=;va؉ 6xCоhԼ f-_JWTA# J Ow~N9dp2 rV*% S^D1xyz1"i<,>Rw-DD۵W[A?יS̭?Ć5kM:.11CZ8wt[tr;Ic'5ڂ#)VTqa'7>.$nSXs3HM["jybLEϱbjxxy||v2&D&~h|QzDG}!:o^;6z0td~r|Fgs[r v8q#yO4ir'U"""=AQ@YնMƩQdgXH(Fif6ӮǬIZ;{{|molE C.g8{V,o"#}wo.0cƹkRnogإEWlKJ^<{ Wr% Ij$;whܸzMSNMԞ:.M֭ﯳмuKTV˖*"ϟ>Ãrџwׯ1o6Ӓ޽o+^>hҢʔ/"%%O?m;!B-Ikcc^~JU_q/XϞ<[c6P;_#us\@غjsG0Q$S?9r#-Z>r֨TEWcϰr2Ǥخm;qY=lf4wc]x -*%D$%KBҥ׳^hڲ94m$9S2jSEKG&cT}ؗ/-ǐ=U^666ʲ]@BBSvMMh?/Zj:z Y;֨772Av \8sΤV}*֚u~7y?| vbE?go`Wn߿{!&^o uurvŒs ({\Q*"0>l빩7wkPHLLLreP|Y嗐 no(ar6PYV NƲ²aO?x?ߦBZ eF'K%)w2:柴DE$mwgYnarۿA=ԨS rN;XsK T+&޽/7YvW#d6} @K}OA9 8K6HՋaӪE/kksDDD)%"ܪF]r9#N_]JSѽ3e.;/nվ ;jFL:>+PNNnM~jut=*U)iӫLyzzxhݾ}EQ9r52%˔lgc4i>zAd 4/!Vh;QLDDDD#"ܪF&#ӹˇ!0d ߽g ~ܽ'-n 4$ZL{"k +zm7n")1 רּ\.G:q`>@JJ Μ D6$T^>u3;XYY)'2 1)W8q8n]#* bc㐘N2bUE~mҵ@!ueU=o"#r T^k-V /0pDcpzj/B9! &})2{ IDAT:"""y ꗫ(%\:wġ}֧= 'FbJSc*)NJL›7oQ3[S_RZ#b6?f_Wō޾EhK!$4o/O(Vr7+3BrJ }18yѓ(nШ~|U-h0fc8}ی'Ok+WIK'=xO@\r IIe2+ڢs2=;ݼwwuuqU kӄ Xv#<j}eWԨRQY&j(7,yDvv@ С'hÞ/%߾M8飓U+oyJ~@֏?Dhp|OZXZF8vJߟӒgudvQICxxN.pvvLqD҉ǰr2EsOlLLeS:L lh2`Q#ˮM:f2ϟiԈ=b5)ҙr&zI#YK|BN9gΣnj7m<\] [w+}S;p~?QѺ_Kc1s5ꚷ=@|ǿGb'OcЈ}̐ظ8:vD& 0cH^GJ eSk_~~0F²cAh.1HcqS'Epj"w,99M:ac'K;}cbq?rZ51?FXc**:Q. 0hx+l6oߍ=1_t MNNƌau:sܥئ%٨$jrJ v/%%7ø_ÒU?Ƹ~F.z;νˏF}Կf\\E9sD-FD .􁋫+ϟ^u9yZ#Qkgoq|lL!-].vlަ<~|+mPO~*:Ke-KKKT]So!1qjj3u"U,ox>N/R(~K;[>Ý1/o!EA'k ;0p.N;uz|;g%<+נ7_=`2WI[ۖMѵS;G&MҪ;u:V-D!"`(Qlr\kG!X|4"^GU1<~W,Ls@{hT`ڰ .NNHcG"1Q{l٣'нl[c ^Uc<~9+))U7#&I'Θ5j]^DE`IПSRNҪ{n}gN u=x Z{FA`eiޥ) 5a={RɈvc;| c&t LQn$IjnծWQs~666[X YeZܫ-Q̤yl-sS$Q{}VE?l۠c?MNNƙSh֪\,W58By-At2X*89MɣF(vЬu,!"mbSF+3H\29P{0mDxF^"Km-իTDڧ&%%a/% ߂0y0W(6GrQDq8a/#E0eyPA!aDZ8р/#0tdeֿVuoU*CB3\vvC๋_رv9MorKi/S~ŋ6V `\u^WcQgbq&_/4%R&iԨ&t([σq} eU`uxiFvѨ^mTPnu>._6n&*~<˕FuQL)-'X[Y!$,^Xz^_v6&L1R|kjT=uc(+Qz4[ eJo!89:@&Ep(©fV$XcT,zu36Gpi )֬ok7|zI)CNb<F hyZ<ʔ򃧻gAxݸ.]U; 9;׮̒ؠ]fh۲)+,,,& A! åױe>eB6{gT*WŊO^S)'s=8j"V,)ҊZ""ʍ$uY@b%J7o/2ϟ~wmTUäkݼ~]萦ZYINQꋁRt2p͗_~?ujSǤn%y՝mkc^Ѹ^rm{vc ,Uha/Zڴ)a}<+0lw&]kk|yUgЂQ07jW;bX{wX6[?z|Q+WDèіb؀yd>(bO8U.a$}˗)eJc?l4N|M[)节:* WݚЫ˧`)Vݨܿaݣ ^ukFw7>Ssu}ѣsG8k\/ECӳFM*5.Zִ?;sAF%Uj*̀arߪЦET Qԩu{U*W[5ñSg0hxļa5\7)3\rMmkcZ .N([M3uxY,V}Va!i/UJ(a͆-Berę{4%։2K[R($BbDEIzqtԞR]:™s&_TZ%SF/dscO[r;48?=YW3!ԯ^Xl%%%sr.FukP~7BҶq.I_j:mi]2 '쓜H^C'j$i ?'i[ DDyJ64BRtT4<|$ispW}LS;w=gFwֽ}SOH*Vs>w<`wG*1ҺN&صm'^GFרd{UYѶa tl V.Y Ps$F< 㤵5}:N*OeT&11w1aᐫEMvQYu9>>.W劥R2 d3JX8vd10̛?&@jԩ?h SwU듘Y51|[z2m̺QY->>7mE=ѠJm̘8wo>Mrի`@߯$m,+ב!L@,^>.ceK)߽Kĝ/@إc8:/-th#i۹ N(2J1<BBJ}Ğ>j7.7$)) K3[| @u w \%p>!Ȏ*/+֗۞݌[f5T) !"v?RzC*- eݖ=J.ҪA̍Z""fUH#j'1eIL&CO/w`1\.cy&-@!㦣hϞMf$۷Oc- m`b}-7ud+[[t0b46-dtXz+!~ˬ耂aU/jT5ҥk3"۔׉ŊHlتQ!SRptS3({Qe.&FDD]t(X?m:_RzGnߨlP\z?uTE:Lʙ\7J);7o)5Ԩ aÚ!ӦrX/0o@#r#^F`h erF]+#M5 hG1xPl{c㚵8}2;A>77d @pswC\@(odmX[Qphl6_T{A cęs}>>y#1QHv%u 7Q_񢰶R&gp= !/x"nݽO#&6qqqHJ|m|6ĩjRcxI*73ʵL.ePT?z _sD!.>Z016q5ܾ{A!C\|R5oi%Om5UUP{MHWuqq8qд?>o jרbpD]{x嶕%*-cy- L"8$Me&jr_@1w>sTFbE;{{ GHp0?}WiW_fMàʄ7׳׮柴ox+ȉc&3Bמ_`NS6'UVavrrƆ[n}eVU՚amqD*71}kZ#Ymرe;>+Gܺ~7^CSʒ.՗XcX"4hV7ׯ^u.<.*TΜÖ{NDGE>$Ow7̞4 uFD𿯾H\Y,k74ޘFqQ%PP}qˈzHCNby'*1q}ag8ݴJʄkgO .iS$e=bi*Ad&௵bz/"1ft{wH'%&!He @6ucb͕kjS?AHk^LFƭ$e?x9Sg<0}2[m:wF|w VĎ۰c6ŖѪժjj` 8g߄G#+Izkc?$n5q#?,_.(NCr Fi _&!%k9JM"Zmд~Ճ%G)))O{Oc ^eSZӺYc ykMNN+qu,^vv_&Z6n6-H^TFmDܺ{?߈8`+Qfa(ںw6J nz}CݧPз&kuLre0jxԪ[;MJ.c5ؽ?̛1ҹ0ˇEnu,$#rN-Rvnqy|PYoҵ2Zʕ.(~kZ#)aЩg(k|Gs'2%vlފ7)q}N5VV&L`ZE| ^pw''8992d]m4]LK}Fz2'=FO5I[xQԩQ n\g''8:Kی'3,[섴>g66&%j5I[jW Wg8;; vau8y߻]"zdZT(.NNбH+4prrQǘis-7?ӈ?6.{Gk1i0T,}Q ?by.%""aPN ƅpܻuGx ..+]ʖFӖQ?ry_zUlܳ G=q +r^^# IDATMZ4C-LJ!j&/>}/`#!cm3[#NT;cqŬ *V0*ĭk7$m(Kreضa3܍ٓHNNL&k>WTUm:G͔Ia!X^u}|$0EVk|9i,7?܅3'qDʑ[XPa_/QUkV(SlG;//ܼ-7aŢuz9e)σB0rt1cIuiC<-lLLB1ZVذ?I[0_Põtڗ!qd'I>g&z>x$v=(iک>:hdūH `؀kvpqv|p'5*Z?ЖMx̒$i} q#Pr OKk)… 7;/Z߸} fNBF5o~ŋ}:'G 9Qz1QKDDyAѦc, hܼ)7o)oX 5ߠJ&o!5mqu=zJZ@V-uA@.cό>lr(k=^>i wwz|3*U F k!::mk:s3"h&H5aQwɏ=b͆-ѹ\u$_:>ZO^!Zn"fi[\HݿK?iǍ0A;0jmpͿ?矶mɣ}-?iGMJJBppi]zZ{daa-:#Y0)~C cSemeF?uvU:s'ΜǾ$ `Y^F) o&tr2&j @_ OPҵM`(\=AP]ٌI3$m;=VXdZʔ,ayO>'WwIoMT4`kk|m4.}SR4{ˤO8a~#$JlUύ>ً` New;J<-9ߡus@_'ycئ%"bFz6n}7v{{IBB C62 ;DQlLYEsfDF+11F,Q4c|oEU˗-et\%Y$nܹkR7nIA:UXclcmŋ}ב|JT._VבoL: wz/"޾X 0!&/v7 ߣ2LJ?0! .ҥUiiJjiGMo ''۴ߺLpqX"99/hK0QKDDDDdf(>Eq(~,i0蟹QF"\qykkulml`aaߧMLO)L3\wQU[ǿBAA: (*6PaW^QA.zV,RE{M_L2If)y<ٳ:+LY)fQ)^~OAˠoғڷ ?PXBPBP59!k:NKKco1 =pȷpʕZM?)+* Fz&W^DĶ;gܤgd>ct<=-\<.<,~6-Uu3_5/HSVDDDD1fvPϊo\wruXr{{wkgy|n_!e}6fJKKuǰ47??NݰiK_K. Iukisnvp^~UH(.+ϿH?_;eqV5,[@Tֻ45eO07?KPO^{Ͽm^Õ+[߬c}?-ox3`*[̏;oϞ'?LD"NZ"̒K3 4Ly6zy^À>{a\2'oef>ǟo^))}53zl7et![)M1ng-[s?`|6?Oy[b]{3lTףjvlc؇}]yZd569 _W3iڌ\/XW:TVc7:NOO᧟gU/C}|9/˽mr57aӖݑW?/doۧXRE\cgz,]ǟ{)7W'%'^᧜٫?$:gXI|!C;1dw;[ص;NC")*l!sp097̂ہGa]L^{^k ֹOl5aBf̚cϠ= |m49`=)'缳&`%Xx)3f*<)[6kq0Yac`R|NhCuXx)^ݓ3y부;nS橩rÜֹgw;c7"--3fL|+oç-;Fy[6穇>|Z5̣sCOϘ57ύԪ[/>+7\ՏLcޟ |SSSٸyϘU۵!qGYc|Dab=m+}s֢q<н< +We|em#[4n技c\|f3CذqNhȷ_E>]vmڶjpNyiܨ!?~7Bsk]ƈ_|r/ʻ@F z{/5#ѭk`{^||+[6k]l4gû}FW} Zywd3kyo?ywSR+߽ p9xr5JJ y10ؕ+Uoqg4vxE'^ڵnIjU:<`o'oOG0p>+䘆ܛOխEAFv'"""""RK dU v ~cXl`78O>t/'#hy4jXSNjϷ`o:c+Wa歘Kft܉/83v8کcй‘[tn՟9Gڵqݓ_v?u\Lv?T:>rͺKNtڙ^i;e;iԪQ#+ mZy۵[~ZW.S&Mzuy͗2w>;iRYݺvo\)ftڙ#?g?Yz-[yVQVM: _pϵ?48oW演*UK{`-lٺM[e6⭜K!tR\e?z. /c5Y-ӨA=ލ/I.cΣժY#G|os5>Zy:?}1c&rZ'ynycybjըrDzu ~;Ǝg구Y! @*Uh׺? {t7_iz\90s];wk^2Vר^6-szu9*תQ' dϿyBvsA\\M5csr9>=ҲFZ.""R<9xǔ!f G*Hq.}#ǷՌ Bp|a,hK\ d}c1\#] )9QZՠ6'~Ι+}Q*qq_#taSRVJU48p5U*CHMMjg>Jc:8Hjj*իU k{VrH7Z*U,*@{'%9+P|b-PO /|ny,K\b2 xjnϱ(Wln. *BNH*_\ZQdWB\'Uڊ J*E|VZ.(ժDnr|GX`[صu{jMIBE~)66P+"""""5Rr'""R,:wPTX2௅ؙsglbkHO7T`AґRVDDDDDbɯ@60i(#""Zٗ}hYBA)~Ta|=*""!=Ø<-^\ 1#g ʗ:ªQ;u:ny|(f#"R̛={ӳF.z*ԊH$eS~G E7ХSG>yc)M؛}hY†h"EDDDD$%~{m7^)VoL1F.ZQ+"""AIOKyuT3wkNMxVJi{ tJ'N; 7hEIz9X.Ͼ5jD1%{ͭt$ Tۻaٿꩩ:x͛63J*En+𒞔*UroYp1IIIYǭڶ\rQH$v%s.q؛l^ԫVDDfO9EZ{o:szFF_愶{碓 """4/>_T)oقRf ̌m[e֮^emr w?XHʕ")H fs}V-]DDQcv3sϛ%hX+ś """Wjj*7]u=M㹶'[os΢z oԟ'3~8M繌,"ǣ@o4 n-|Ԍ琈m>ē7et$ԜIDDDzgri+W}ǥZ]6}}g~ɧvw""9%,۸9;4,ۺ-ב}f IΑMZ1r>cѣϥ8炊wRxD$j|㠿J"""EBr:L`}ɤ_J"""#55A=3V:.?A 9m;G2XD",! zi3ZY+""E}rZZx8SBJ!+IDDD| ۷nh?AlR<3g}vvAxjשMq99{7Wp̃۴_+TiguƔ'3a_-6S\Yjծ)v޽hѺUי5wAM ~u֬'a}>,b)̛5wkNSNoќ3igArow^f{qUrکY)))L0I?NdlݲT4jǣ:"`ùK߀Gt'+$Pr%(""Z-eͺO-6Kf1eߍYDDbsyLbp?r|]x jqrU*_)_|s{ ~Yf63߹k ; `uyYǍmęS6ko9.9Og{Ϡګ3o?5s7^:{0jJο 5\0/ ܥ["$|,K9x10lw6mRw^m±㣓xSgGֳ@zvVF!- !="""e>EZK_"/L / H {.{?tYڝ5e4tث͗^Q=C{ 'thc}y謱ߦM'7_w|ݍ7ꐡĕ_#F]%7qk"-@'R$HK5H>\>Rhf n(8y=g;s[$""EKxm\r nsMnE kU-yĢ[@ݳ^z W -h!ĎxGwqYwa4>Is5O߫6yj*a/irCTk9ӲSSSᙡiRǠ+oOV2FY!+~ϧgg?/n欋r+x5q3f`dKPDDJ83ص;%˓4u?O DK} ^g[^h% \R"B-ɹ͓loUJ]{ >.]z<Lg=F˓ ^unvW0?:^x iiA˖3uҔe2Wp瞦יeXxxIt;Q~%%F.YW%nīw%˓X< *WjQfeĖ Hc4҂w7Y0&ń ""j6IIIBɿdXZkñ͚QchXV-lgnV-_I:k ZM;D299wP~V!2qqNiаAP1lAغy 7ld-}u=9j{ZM[Ę%u.#_@3ذ1 jGDDxid}j} ""ȧ{W i'?eMKO3lΜs|rӢUKE |nTVЊZE>+jt88[A5-=@+{k}_T)7ngu EYKKlXh|5VsM |B'Vu> Jzէ"rժ[6"-N5*&5"EzyQEDD$P+""j:ೕd玝<<?|;~WU~ER58߿2-"vN99_i3~R&'(ԎF"!p]c"""$jED$&%y}BI:[/N.xćѡSG5?>ԩ97qϱJxOHJM˖9>|8U_ԴB%j̱֬sE2)@k?O]末|DDDb ""z̞{R In>~VnfG!mly$E*ԊH,$9HO3Lܖ?g!$\wS?[6m=:E/swFճdwڐ: VmZ>SRRRp]T\)GPqnKkoug$ٓ}Xi8 nιc#HlH6ge¿ĪYa¸ ?7缞ԐA<蓤g<'Lݻ8KgԫK;ٶu =s6iQ]O+:g\*.'W0:R6[tV\÷1m:ii\u!z5B^1-^B.grqoЀ5zĎ8IcI&222O +/%}z3`՜б=>祧r Κߎg֌IOOѓXB덗xv09JF~+f0x&$jED$}<T0瞘IVO* 8N>s,a ýә<%kH1MZmMres}ӻ2tk\{Y+r=kFx7l@IKKcOk])էd/+ιLjEDD LDD$%>`o{ʳ%{3η'g@?J.<3˳H[VMs8>NJz^z1͛x.-5uk2,׮˵H[f< ϼ4+gS|< $s)))]7֭ϵH[fB!{%?qx; wu w2"""J+jED-THA+]4} GRJc1z|4}~<{^||<]NJ)SLlݮ Ndo? պ9ڜЖ39K[荶U*;=o[-7y&vܕI0}cEK=TR=8K_+7]L1&bCr lv[e.?DDxq.6 1)CT>{w?^!֭9ر};vbϮݔ/CժUQ&:HZP{a֌]ݻvgʖ+KJ߰>5kJ}6#+ivɬ3Yvwb+_kt|3ZiMjUjt糉6xQJI@s-AofEH9z{VԊHLʼswUD,PCƅzyRZ5yAĮWըY /D n^xFEZ)YM _!""Ss-s_3(dF͚s~$&"%i4hIᕀD0%lqWDDDPVDDbss-`!71/y7|##ø?XP5KHFN"tPF:j:XBkιι'Xw %"%,ᗉ۲FE!P(2ULDDD$PVDD%\sV`4P)Op"[eHaa4KR8* BDDDB;ιˀq= GXA> 5KXDB"\;9HTb99+ *jުe8ËHز);nCJJF0KDB$+bo A CZ)s-s_3t>p_FD-Ylߖ7DB9WhPg97HCSDD,\]0`!pykvO{5G"R̟ʲ?5/ )ҵoŚ!#""R"P+""EssI<%q͠/?~`Ñyo%r #](7Ӧb"""RVDD \s6<ڧJϢ@d>+f|"RddC^̃w'r"}Ðb9בд=8s. ?EDDjEDHp],zwHa'룕q9 .f +#H8zlEoc$jED$s9~ZF9_I'``jjRjR\E;)nsm~P+i%8‫ZDDDBDssk`:pzYr 0!l{WJ䳓bi+o4fM瞛{&,nrP' q; C\BDss.O>[@/RS3e2o$g$wii|44)کHV,;mpe=z%/©[V SlBDssI<E9FY2Yt7O޿/-S'IOH*Ĕ?gnh"غ9KOeҏ[s68,ajS ;\Uw/"""PVDD.]Y@Rpf qIl~$o )?Obn0-V-?\ɕଓ&u}e0j&ID@0o;%EDDIDDbg~Mfقܞ4K\ Jyٻ'_mdW)S]Nɹ PAf/E={Z1\룜f[yV֬<)[3KPaeu=0;)nU%$1eYÑ'7ιxcB7%  d~6U8YEj-KSq=j a!O?x ՄQ̨dHK5oObۖdoMbdmIbdmKy{ p?0,!jHqkgxꛙɹ$lnkED;DO9,aps='ɶEXh_ʔ)EFks?}Jb\M/R uj٬st'""RP+""E[p[=DDـ2 %f$)s<04H6c~Q)"UϦb*ԊB)N'2EZOɛYfmm+)6G3M %r)6KdD9w4圫af"xMbAZ)2s7@]r0%__8X8h4x}4j] 2`V.Jd`Fn*%EzxuEDD<jED(gaU3ə9druC"Nܟ{x?˧9l2KDD:\9(\:TAZ)sk#x ^/B~k3v mf#Hz=]s-li-""Rdii:ME?ن_Sbs/i#H~"[$70)Tr]$F҅DLďˁJ̻>܉9W ) tΩOjED$jsQDN`L)%CBvεk&""yk tEDDjED$*sla4(\Wbs!pZK1DE!"CZ8\5` `VJ9:Q7Ds4NEh,""u*ԊH8׆!p3yK> E Zh9W&yx9󣰆畏sA%""RP+""᜻0`fȻ CR9‫ xz-gɏ7'Y3knfىx4VWDD$jTs] C@3K{Wժ큄E@B~E$"s{.f67\6fv=xXBs#^f{_ Lq"Pι!DD$o~>3{E*3efC h;)R9U*ԊH8Bz/63e{̲s:pI!W  >Z٫fD,U"""*ԊHx8{ÒH.7M07^C!C`P6qTrΕٕyqf̺?F;hSVDDB9| C٤}xC."*vqεQ,찙=s B*ԊH2wtC0)4\}O=}@("""PVDD|8zz>[DDDD 9w:O3-4*ԊHI@^2!+""""s-pS㡀 ""Bk|T qEf)qEDDDYvL$K9~j_4ܩP+""8z!\nf CWDDD$*h7k^ TUι`&^[r] |mK-##,9w6x62pε>j\DZWpiT"19WhdfK#tfG$%"RLd6=9 9w`직ǽ7f~4Ѡdnk8 t/Qтl2OAxku z@̱]\Y2G }slC׻d3+\EDbzԊH x>\$ sE{-""r x[̬]nfY-h9C ι5tA̖^en_pwns˻Fh""IZ! /%ifE[J3K&e6XY=WZ鍚>)&َlǧ0?EZ/9s\yo6B@D8SVD$|C13"Ex k ܳOv-.h<6)`fw&wWy=.@U<1w>9OalFR)VTyc]2YĠ] \S_DD<pn|-@.yx[f8 _VЬ;N["HMDDP+"> !E:3[,6 "? ""/H4{ Fَ(0x6O#9jW{M5*Ԋ(\OyeB70).S͂qd_M+o3,Mཚ7ϝhx%.yι*oe>KBH ru u@/3+V+~&ι.ι^,s\&pGAW*ԊĀ%63a+R܅Pմ""ygf%C`snsn1Ѿff@|^qmsswƑm/3*z1uPxzQ!P#|M}Z""ySVD$6<\ٳa+Re1(!Uɛ)tijf6G2]9ewxT" -BB&UQpUkEPXQPUPrDN *bD) %HgLK2ɤy0g> $kY(4;caFbd W I`E^rQJ$4)J) 3 @/U8Yd+gomRŚGpIU3*V!o0.w<>gw7"2fab%Ջv; XXAX+7 ב&sVۃ0㣜Ӵc88~6{\x1氟+TZ*D'ZB# *U,gE*Tcُ+4?kpN"#Pt<v|LD"NC~]9g J)p@)(ki7q˚R*g?v[ѶJ)H̀}weGcؕRJfZUJ"HDbjnsDno~cC(-**Dmc `50ϖĔRJ)UĈH%l}1fq*ƘJF)*H"苵3 s< 11ەRJZUJ"DDJ 1Uj%dRJGs`@_7ISJ)>PJ"CDM vzn*UcvYmR*{YGJsQޥwt xhشM)tERJ~;36q*Iἳ6碔Rņ1`硲gY@_J)AW*T "Cpݔ&5vW'bWcNۚRJ)RHBRJr"xȵcR폭T#p*iRJ)Z*D ȕV܌TT kq7`.J Xo]U]`LܶfRJ)z[RJ"""l{c(K D?6vhVTREM)R`"E$C󃜓RJ)TJ)Un?-Dk˛"Bll11ĄJHsᅯŋsSV ٳfdTMTNȑTr:E>"3g;T *RJjR!_@?B"@5hP#= .(Khe=RS$%qw;PVJ>֯?_dٲ}۴0^`HK$crǥ*Dc~coG)E J)UȵG. n}h^omܸ,}Fѭ[u.TJǎ?8KvRSB6iȑض,|sٱ "񽌉Y +"qd0QJ`*+T!'"!6 qA>"WH[F/XŋgР*ZU[Vԯ^eTаa a7&Uyv!Z$NO"rt| v>J)7ZUJ @͡kY""22'Ʋe'RO.]r$,*BBn74Ǫf*U1AEy: r|x,WJBmUJ JR_t1fq q[ܽ{}׈BVciԨ^wZrSl)oѹsÀO*11?; -*TH`!h清dcEU\\ ӧmR&UKѾ}F+**3pޞ~xSRJ) LL) 0Oc n"'X25;*HY)K̘x۶Q\ dT"0Gw?4p4!6 #9ĈH,ʑS]/g9Gx>XqF.UrRJ)U@DZ`ZBṉaGXe5:;zl4Tuڞ!vԯ^3Rx pypR "*fbs1^ t* { kE*/yF: cwc}a>Cx 莵"5ka wmߋHVQ`=jb}Sz`?VKہ /"3!ke&y'AC-Bs7ES"`#M|7=s/F6˙ ^tڍZAP?haߧRYPR@DZciWƘS6-n:8_ntYήgu5R*l| 5&nAR/=O:+"`2ckEYƘ}I@Dkv䛁Dd&V˱z׾ \eZQ;si ,z:a= 3,s5q+'%Ƙ5>#>yKVQ@:p-BhCp\nㆷYC1' ksS!"1f{  LuZb94j=MRJJ)`"R 9t"/,l[ėwk&ѣ)#rWz,']bR8g>V  f"mF4u^ h/Eڌsa=31_mi=ݳ7OYdtR*wZUJJXcwkds~z{*UdgK}{H);)#]c<{+q \8x41{YNCIcr'6cɗNe;c,^91g%NC+i+PR""eXdƘ6-Dp޽hcRN׮Vmۖ+_J٭MpGn"qΫaWjwmŗuLs!ya=N.zbOH : pmUJf)c-ڔҥGэUp% /eiZǫ|)2Vձ6 Mfbmޔqh` ,*}6P:=qi<\7>u5r[_uz@:<|V\?|nRZUJmTvam.ESfXvs*TBCCt6ة(Ul5hPn\j075&nsR6pYD= 8i,"wc'C6RǡXRtR%jRF"r-0-79v-I8m[Jt3oUtm jhѢ;=uX.bP:NDBK.@/cZ5}ieiel2aCLUoVynRRJDDZk8|p啾=R${uC1&3sp9ptppMN;|UE%Iܧ(PR6gXK)&dZ" Ǻu[)+=Ge#'UcsќRuER?SS1&kc vZͭRBRJ哈TA͡}1rYhܸ,jV.J) FR  R::=>N#Eė7חڗmT6%"rGvE,0))J,-*T>H`X!RR5r>r]M/!8+V㏿*dN|]!))';{y+"wHd.79 >/j)1Un|)"mr'DDEaNsUc: %"݋"r!+jڒؒL)Ut31#o SƘ[Tw>SGWӪ[~3=yܡż+AH6{`;c4ig bFʙ;/j#eY3vV~Y+p=Y V 7 x<""ہNs^5,80Ƭ NU|[6UX-v?󖣠6V!#'XT!g9&"] (uלs_wV%`TJ[RJ偈an[ VEZRiM}"po |RD.Ge˦LSpUJ)oJ)#|9t"_: !/UUydr&N.=4vmO͚ղ9[С# ۷r˙<)²oRNM>@(<aaBJˢ J\H cLwZE cSJrRJD*Knq91fq:i NXX]םo_\JJ ӧ̔Ǟ==7ؓW^y:"*{R*"r4 "-"Dd41?/X*'-*T.D _`;1mT+W FPLi)U(m7|{p71n㄄J)UW"r8 <d4/OS0UJ_@)r " \Oc R_q;|G*/+V￉ƌBnr=RV|嗞ҥYK~u7.S4]֖k+H >ڐmԨټ̱|~ڴi1ν,_+˗̪U9w.kRJѰa]._ͣG6m6K|KBqWàAO9o15|¼yoY~fu`k׊kyrzz NR1ᩧr7kν ::nLǼ!CFoAÇѩSRJ)?Ƙ s_6q<} Xg9 R%jR*"r/XB/ @\lW^mO |s7e޼E|g<] r[r[rcƼ¶m:s,[#˖HŊ[4ONb ~5k+W,SZvn=o[`ܸט1=N}6mZ~%K㩧^ĉT:p0./cڴgiѢ ۷bνs+({|GwgϞcŊX[1e+|rQ9s6s,$ǏxgΜu)g d]ߑRJ2MZ)lR L @ƘVv'O&y.}.:KKK'_ܹs0`#>iݥ}NN=M7RܹS⊎^ٳ'evZ-\%=L@ؾ}w5CgDEZwn{,!CFi˜:<iRJ) $]QRnD V*Zzct*2o1qKP:v.kKfSn-""*!9?\tQ3nO9}<]G+ صk?۷bѢر#Go6l AshBXݺx8:_R$ݺuu4mz>ժPb8IIٳ={ᇋ2IMM3}ji6@zzV1]Dԩ ͛7!&&l㏗f͟$'aQ=gرqm}4hpjUgClٲ/XΒ%eݵkOXX{x|< .wreGN '99H #s\1ܴiÀ秔RJ) -*GO@yC'=1_"T1ưr.c"Bu\bbywjР ԡk t Çd>Koҧr-m7cƸi"::vc~Ӧ 3^7+'=XW.`ƌ T-[6eNxFTT͛7GYrC>ĉSL0"뤥IKZ_Li&MIϞWmܸ>קO0r ,Xmذ]:ujO?J#G2~zrfAsƭL2a;Y>dܸ\DDT`hs{ vZW)RJ @)D2s@_c&*P￿2֬YC*Wr1^m]L 5kV;z4%Kzĉ]VxVHMv4iOssᇟ1x.En:Zx)?ii׮'T/ؤwƍ[]xcGYXX/0}`̘WHIZ1ݢEf|kcgzucܸ]yg9c_u)Vb("RJ)RyZD hlshiYns\',e„ۖkDEE0r.c?:s6o`9W^ȑ\Vߗӟl2nNի[ٳXz}V.S6>]]իp)+W^sJg'%{_p9Q*MWRJ) >PJx""3/qʓ4={]s>[֯1A|#V5-Xqz*Mjj*#GNb/2DaaCVhQѽ/k\תU:zuc/}>磏>s9uw=/k3y wq_1iӒ:urRJ)TiV)`"pSiJΝ{/J̘19BQ}Wwܛ+׹xcOY/)47eoXX&HǪМ^溑Vn^߾WU]uo۶-@ \׮ӯEĥE_Q\Y{zQJ)R*/P*D^^J6mZ0iHj׮\c ob l޼qt2II.ų GqT*{KN>TÇq]y̱Ù>}my|^Æ [زe $%%sY_sι'&6-;\Wuq >¹9r_=2ֺh"#+rIOpt2˗#Wf~OgbRJ)*P*D057crT!Fӿ.CTf9ssБ<_^ ǎ%2ְa<_W̱jb97؇eҤ7](fzu5b_8pTR 8k9s8!υv.ȠA]^gbRJ)*P*D >`}ܖ]@Oc̩\g*ѕN!TNDDԩEF DŽ#Gea+^y.gRJY1?q9 'ӠA|]b%C>MR|8y2z~/S4*E 'N5pSvk[0fZUJ)RjR%>:aܩIBr( o3;vv mۖhєȊʗ/2oĈ >|,>l2RhS3W󦥥1|fz=Wb͚?2d$Υx\KԩS3HXX֏k{d| dd SrGf&bܹ g1CRJ)O JED*K91fq*ԦMR-U#GO߾WyEON&--ͼF\5 >>3m=oO&**¯xiii9ɥH[j &=Ar|֮*Vrޚ)))=r\Ul+֪{\gڵbƌ}{v"0fkRJ)TᡅZT!"eE@cCNc6UPKKK?s{G>tc|+z+=/Ut~~se˖ᡇ%55rC3Tsի`]QQ̙2 vZ/:tլG'O{ڷ^}kRJ)Tᑷ{R9@3/q*6lBbbֆU+G\صksTDٲe\6nu]>yJۺnu_*i}j7Qˍcgؽ|)Xw3)+RJ)\iV)URL§yn]:/zK.ynllu@j߾o9X;y)vR+RJ)ZUJ"r0, RE©S]}I̙u/v9?)gΜ+F~uԚzO~sgm 7܊5=|>ϯP!֭͘;G}|.krw/ٴɿ7܋2eJg'&`ʔa6mZ2gd_s]Zӭ[}&N'-Ϳrn+}~|s߅[oCRY?^n߾s#:t3&zk~c>0H rRJ)UiV)UlH=mw=1ITkܸ֭zcn^|MSn26s,^̯8;iٲ;J"3ǎ~ys&M\_ \p,[j W_ţ>`ìZ{cx̜׫_<m?~Uv+kgc~ϯrRJ)J2-*%|mk15TX1 P |J?Çߏ"Æ v.|y$%Lkc^Wi֬!M%&rXBq7{=e˦.}cw㏏I;OOfذWXX wfb  xif9{$PVubcRjLqJJ cYIN>ҥ1pcqwY>bWm_r3_{RJ)BR*D Pih1&jE1'"@lnstc^QzG0oAz^sRNMM`Æ-f֬3~zOkؽ{׫X1Sp|0oBv@6-2vg}NVt\~4lX{8p0'Nb&ѦM ۯg3Ǿb9+W{Ѱa]bbٱc76laٳ*T*UG^xï۴iqL0=s,55)Sbʔ !::Çԩ#Ϻo.&2c?(--Sg1kևt܎.jFj1DDT$)4'رc77ڵ2 /73x.mf'ߖyƽfBRixb"O<1J"]Vfg\K\[)RE9 m7d{:; %c~T~~ZU{p_bDD66ƘmT֮]+ *x6 KN>=~q[l}w {w)vTTӧ?ϐ!73z><<7ЃO?I8qMrҨQ=,!  Mj1 r \ekW[-ݻ_}.]e5RJ]"@DQ;C5lKl"S啮U*HD9_ƘO11 )q0L@\S.(ۯʠAЫוǿ˦Mرc7'0YVu3zuf{sxV!022TfǸ~,]?6mu^hj׮Aq]沲4$jU~ ر5͛7εzV9?g^ښY^_z5,}RJ"r0{664c̃\IZcm} ".G[1%v f: 36|?diUJy"kj;|pxu%XQRT)bb|_Y>k /|!"mՉiEZ*Rxo%?aV1&P pOkwsRJ1bĽRM}C)T!"1ny lg{HmD$ pV kU!OcmDPQv eْӹ%Db\WTWHY`}3UApY+jʟcx\+QV5j֬FJQ:u={1Hw IDAT[HI|S{nmۋRjRJMXO;(1O8""5<ê4Gͧ)pP~1@\BG;۱ 5""?31;?ߛ1[8?лƘ4>tPD~~KPƈjYc &`)Gc򻻱˲;+c8v,sy@Dx{2$*ݻϹiV)T~=v|߮~:X243F%M/IƘ~Ğ tvz㹖ހ"xx+ EJ%ǡNRwc j\ *D"Y\W8>*"Cu1hV<ǻ}g10k;βcY Jl}^M߾Wst2Wg۶jKD"##\9-ҶEF;mqc2>HR:J)+0b ^wL}pfZ[hVMDNWX=c]U 1h*X{oI=[ĵx|0u6`D࡜NqpqZ Nc|h5 \7b~`L>߀6c_}cRE[ҥ=]v*Jn2-V\RJ]܎~.nf`tLV ֪=X ]Aykilz VX'7sNDn4|%Od]µuw٭-0ZU~q\McfM||$"λ!V"Ov_`*IW1rV96U@D8nc@ǟgqAr0_D>#2x?BEDbcVлk1I6UYSvٲZUJ)ղe'܇yRJBDJ݆W>,Fc։\`¸b!˸n'X8=(VɅQw.cwC Ruayw-Xd[c1emJn p"m&bS݆oqlWhH}[=Sp1q:_=wWJ)Uq͛ϸkV)T~D H$PDoc& cEGam@wߝdժ$ڶuoR$YAĥ#RŊճeu1!c{J_lt;uwš~a+-*Tq;+q6Zdʁpa l|܏{> @\U01c')WNoQJ4ƎXMʘ8RJ<75mDwV}J"]b r"!qae[@ XZJ{R+7f?oP1q"Á%c[G2}y19R.-{سSÃRJb[ͣZg8p+ҏE~(%pQ>3u;),=ez+pEb*9&"my;{'p1Fq-_L|GqaRJbf„)-B:J)!cLj: ,6@j??jlv&ރgv<0q;wf*(D>VQk>|"U@#4lX޽]HJ)3~"fs tRJo:rSH/f xцƆ%j? =k}ޯ$ ݎ'cFq덿(D$X *W$7 No=>ʗ/EnŮRJ)'}v>/˘8RJZk6O{2, J&*YsoG}9 c2D~u9" p1{BM@8{_?ĔRJ1ˇx=;P'AJM)T=H$k1ME$$(LZURD1v YN*~""^B˜πc⋇xѽ=w(Tq׼7Ԙ :'R%1fpw)jRA%Pݎ }ݥ' u0))殢۱<|>}=QD{a}}31q*? $tJBz՟J2\EA^ /T(WJ(5&HX{='}Δگ:Zds~ 2]'߫<~O3nffCSOf}j08. FS*n EvIPqZ3;+c)Q儿Awq֚VE+_զMA6~> L Ut}gjq+p% ?#[@bc|;/0mڜ m9|ϳ㎏ÕթxU̬pWυ \1doW d|{g9b]VMKWjt'I Ke_ DsZ&ffs֊{4私]?KHڴqIITDTa.VTў3'il=ez33lf̘駿vM˦3w|?l133k/TNRW ;t67+mWJjc Y1*_IZ##i֒;p^JrHGDũS#:$լg*i;o.rR."_qBI{osKCTkW`x-$ ˟,}9y%"lІJ7ߜǙg6Lg0gkؚ g<6@d1T6.NRaJJ7sl_H4'2}Qt Ľ #KDD)IZ "^-#~"} V5OiKϋv~DtwؑtirRD ` u%%k'Xhۈ:c4R?7GtADҾ5b %&EfC:-x44jR,,O"V,9[jv%hs^hgC)'IR ~^mH +dۊOdmpÅ06o]u*033"b&㰐]yrDmDN̿\|*l0,F Co\/33333-dfIi`g0Iz:Nurc13333͉Z30IcH 3Up[ kfcqyKZ13333ˉZ3I.(!#⚙5{ֳj̬5:d qϏJ;Ҽm $iq`bHIfffffV[:MÁcJ}=D/68b[Fa68MWmXlx[X5~;pf %^hpމZy33333f5f2IQ|]"͂d78DHlՠٞixlky'jͬ%&Qrz/w{7;y9Ht mjXlZ3+eCvG ;Et%G䘍46RGafffff#J {F5G:`CpHDZp\ըm !i `&o+?#fffff6P>W8QkfI\lQBG%ĵ^ۮ-0Qو umlRDWf#i i&Z֤7mh{vǬ$m10JZ񘙙وpr68QkfH\lQB"Zk~mY'} cfffffÜԽ4ʛsÉZ3q*GwD\B\k/4hY{v Ƭ]/>]P"fffff6}XA#fp̐tpt g5! ]o5h6 ǬV,(֦)( CRW4{8#ZNTb(Ƚ16h]CY̆ {4pP߉蚙?D&i3R]4KDYp\yM4@޴Mb=P ifffffY L~ZyЉZJu؂CL k A10$2}P^V)8 qRÚh95$& =׊w ڬ\+u7kbfffffoR69M4;WN8Qk6HCIV8$"n+8 /Oh!"{dV8I[~/IE53333!H^ݠ,D"ip y O+Jk9v7HK<UKڷfffff6H;i]5?;Qk6UB8VYDM4Խv2+T \lnt^DWwNԚ*!ԙo[Dd&%uQ ̀X^Ҋ%afffff. R']Zf#=K}/oD-!Ivl$0Y=a T;f"W03333B~/)&8wDלF 5YeRS.fq".-_=13^hI>զ\lW<l^vLc'j͆1Ik~)"^*8u 9-_)Խ[9C2]{%}M}YIKI'SCi> sD53!@8`20гHq"8B~8XV 𛈮4Lf{A_ܧH 'pTw51NXf`C_D6HWӿYs?Et=ZɾzXNV5̆ I0qM133+.`[`l[~ ZwZaF(O${RuU,u?N6yߞ2oكv&iK7_321^V~w133+Jb𵈮~-fÌ3J1{q2`NŬ9't@ffec|xc133fEt ?O/&f6H:rKk\Dux8f Hgouo33333k 4I NԚ N/!ѯi6EtEDEZq`sH.l𑈮#ЉZa@fEL?3 kCPD[]?rG8 IDAT&jYL"";Qk6IZT`l;EKǵ!.kZDEΎ Jvx OS;<33333+@ވ)e54 +8l`x6Dt=*u,сN s̆j^uٝ9Qk6DI \Yp kTDכ_K [QӬ:=]΀:=33333k;-&gΝ5$"դݼG/Kk#@D\lԽ "Bo B +Z ^ӣH?鑘 %i .Al{g"fwjpNmf$LB_.!Yi$|I_>EO#s̬$ \>0{D5El$bbfC('I; 8ff2mSO'+G#DvVD "vV?]Yy333339Qk6H8Fbz\'E2:EIӋ45͉Z!B椺E>3 kfe l{DčѦN1/"IN܎lpl&pPӁ RqJ'a$ODx?M`KIwrICvG kf.cu*o6}I+/vxHfffff6D8Qk6eL,8tGm53kc%"BcffffffU %ip)Y Ꮟ_Zt`ɉZAHQ%QB\33333333'jI{`߈[Bl33333333'jIkD,8ZABZuCO&DK533333338Qk6H+8l`xffffffffV 'j:LX"_k:"ⶂ㚙Y5 IH5i7+!qe q̬`NԚu%=/"N)!Zt4pd 'GJDYH 8FbYI5k3IPS.1ffffffffV2'jHZuCO&D533333336p֬M$& =ĉZ644vCpPD^p\33333333k#'jJ&ip)Y Ꮟ+KkffffffffmDY(!"⚙Y9QkV"IGG:⚙Y8QkVI{`[Bl33333333'jJ i { %"f:ȉZIZT`L"㚙Y9QkV I2 LG kfffffffff4Qp kfffffffff4 شEĕ%53333ABʒmwz'j͚}{ͯۊ"⚙ռU*٤l\)lCIw; T^ 8 GruŒ˶f>/۪+w~\j4 i&mk$}c {Qπk4$i:ᖢ9YHUyY}>Y cNԚ5L`("N-!jz|T6 R9%U&rSr/&=݁nҕ>VpW?~Rɋsv7{'iwIokͻ$-fMt px (!rwhS`lw#_%ő.V1/;I% X  pVSlAz?srMJ ج&d7?5yLҭdh`gIE/ߑ^'"U%Ij&͈>3f<֬Iʘz7_.33333 IkI ]m(Ie7T$i-";tLy0"y!"n#qDZ#H[D\_p_]}ܡ=>xDDN/>^̉Z:$mA?zvN+ !GK[n 1>?3"6'+'509 I C`B:]N֤M4`n5 "s~rn՚lr֬IkJ)8t`xfffff֜HH{Erֹn-:<\hux3*c2 g}&"ZqD<mӂ-rwF ~K 7z,o=WͬDQkV RE LG kfffff{OXXX0.1IIԮ/dVݧg"ⵆD ?6yjgӹ=Ǐ5_8R>f1&af#f$&k:#㚙YkΈS$ |Β7KvV-Z\I|%1NȏDmZ?q<3ZY_NԚd.ˆJkfffff %= L*YIF*/Y \ҏ.[p*vCe8slfCf} L,!"⚙Y"NIe d7#BSK]B_wdI cw \ҸI}VU_v̬^L,#B_QB\33333+OFDSr6.E%k{roo ړ#?o&mlW.픚 D @3^ 21AWyU0ֽܡ?Wilnm$"wfꊒ^zFuGn3Iu%,hffU9Qk#-ip)P?< 3 kfffff1ud8҂JھШ "*mڽk0pb#s_kX &@*Yqlۿ-"Z̬*'jmD6p-i"M&D533336jgU%F;OՋ)i9I'H:!\.i*3w1MR5`vJ/+X/J:\8l ,SpYĈp"3333' JΪna&r<L#W}7^R (_d&EIl6".$""`w`!.>Rن倫m"1I'қ?Tz`=``'m}]Jz~(i HGswiD\_Dff8Qk#Rvi- _ kfffffm%87;t"[lmk [S U`mRBy4l)qRXJZ8:;uM*%j3_nomtS΢ffqFeofffff60.&flOlM$_",qRٵ_E}Uy % ";>A*pnḒ7xRH{{B͈9$]JS}$H&ބmf#"q+a$+%>7"M %oԞԌG#bݢcf6Iڗ >qMffff^LFI_$̿ YSC^ u y%63333333Z$m ޕQ$kV̬_aOڤcm4`BD\p\33333333aaMҲd`C&FĔ㚙D [&:"⎂㚙D KFkqU qlrֆ%=7"N+!`Nڰ#WJ}-pd qlsֆI{n`WBl33333333ᜨaCҖ/I`׈Yp\333333333Z&$ \)84`BD\p\33333333sֆUW6nجNs#bnEW#bz6nT'`:-۳Ou5"Ѡ]f8A7I?cWVcMMvwsD̷И6cdfmS?AlIҞ$وu&)I;0x_ x4w``yR"vI``O-3O+WHDDZI709m>4_S$-.{Iz'})}[gͤsd;߉_o޼yލ!| <͛7oڀ} {N?z6Үŀs/~\*|FsVi7 7Y}UDJ*՞OhR3HIUmT=tDEsm1]=wX7unVvQ Fz~ykesZ+$k1N.hHywEļb0HDDDD{)iiQelDL>EJ.MᬈAx'4+uv&% R~֨lת,aY|DrpAvhILFn#ⵊxsf lU-@DL#ZD@.[}"*1 L:DҊ-; X%=ph%`=os#ݜIZUDJ*M)傆= f;mF釈?ԷY2|-pH ǓZ=ŏFij 7#"$% }itҬZ"Vq`f_O׉ҕ%=U_7pzD<Ҡ7IjG:WD"\f5U#NR,j5[; |avsg}×~jD<֠7H^25IZr5j NZEǐ!ՠUP"bjqle,U/VZݹ-֌ sHZ4\E-kjr76j7z_{|:jFHZF:rV>6rQma ]Ɉxܓo>,B~Q5jJ:6&ofH Y^L̊v0i˖& i)53333?Y!dPOBHڗ=Vha-"^4#0'$7X٦ϬQIz~ҢU=]f_'wIjiۋ5~kڱ+c5'h4CiMNxV{/Bއ<0whIkWWX^T? >:8fV?㲛-%j%-L*j%وdk}gF6,g Iե:=ެVs8y}<,MGwWZι5qU DB%koӟNÍi}X9.2-Yx~?b tFm9j6"Mo.aLF%53333&^$:g~|3o`~Œ4j,矟.Պ7MҾ\Jzm{꥞ B7[lӟk1pxӸI]絙lPs֊tBno ϢwΉjۿ1")8*M^'^폗4EĪHҾCŻ2y:1Jf.eDgg'"bpf1ڿ&UR I!_yZ$mf+Fu6=٪}x+b71]JѬq1뇯WnpR c 񘙙v;dGR mٞ,oD(Cn)|O IDATk(i-zڡ6IdB RkUDܡ" 5>,FRj NڀIHế%mNjkUoWp6hsLn*o+Vﺆ#l7%\@"k.ߠSӁQZCҊ"4<x,_ 7('j'T9V3Q+i=|;֊iN1fffff6|ބю#izwC$5,m|7lT-Ηm?'!>8;[2֒I2=)M.m&Y+#ZYAR/ӻX+\8?"nGߥwV^uIHtȶs\= &k%m-iٕ="izqDm5Y'8Qk"iCY5Q+iY7KIp,i ]ҢUdƍ# ղxR}Z:8qT?&hruD\ԏϐ, (C6s"⌬HIZ^!Ho$C4eqT\lI_T*6p<=*z"' =L%՜^9K6+_Sص4}0'YَRIZ 0?}aI.}`"i9^ْF9IkJkfffff6x }1g T{Qvʒf[!Ͱm ϻ,RٯwAǨ2ls(`L6KK(pR E hEFDrf6FL47Cv{T_ll v;6333333XZ.`&ڝ ,TpӀ 1fffffffZD1YmQk-Ɋ7[dn+fef̆ ϨV}Xp`Dفj pc\'bff4Ic;qu63333303˥Ӂ~ω;ЯY[8QkM$t} 533333333f l>ym̬f}=o_33333333sQ`6v9 SاY8Qk8}v kffffffff6dlp0M;%-mW'ifffffffffD5r|z8E@+3c[KY$.W}߉Y̬-z +𹈸133333333/&fUIZ8aiM533333333j:=*n>uz fffffffffEZ%/uz^'i['ilZbD$+"@wqR?wDD %Q,ACņ QAbQcQQc$#"+R.Mr~<̝3S5/9;;;s1c1c1`&.uAk3Tu%i1c1cLyfZw>(AOU?c1c1ƘLTqˀѪ:3qc1c15VQkB$1c1ch "LG9c1c1ƘZSjy jIZc1c1SYE)t]ǛYUdy\c1c1cJ2jM&@SNvƪz.}5θP`XcR 4$zmYմ[Ƙ[G;oSZ1cW\^bj`o6җ-q-|Yp,sp62.`5L5`9&5dzz2&~*񍁛1Ɣv]1\b1jL Xj*jE`0p4(32 zgxSTZDe],Va_O>zc1c)W .-^>nUԊxξlR,cE&6%m_W lq<厈wp vŔiVQk1Zc1&ˁId,U"^+*\Y3k%:w]\ ߘ03"`2-0X1c1ƘR pwj๒,kZoz ܛH\81Ū>>V ,lB0c1c1&4o>pjTNDW7cULg 9& klu6YbD:c1c)CzsD;kU{98cZ/3p34ͧ >~I+{ڤ\c -(H9MUzq.JΓ" i:o#]Ldm`kteLz<5Mߵx;McL)k3Ecc1kM(, tV L,X5Vf & *XNg4˘""^}#H=ؒP:O\Y|2~ƽV |V I jm#Ƙ AD-ic6.Y W6i&4f:}O-r1& [N\Uݕs010pk"^u\<[Uf,0c8Kc1Dqp}i(ižM0LΪ%U6,iʘԉx@AoF^DleA,{ < ܢXKcL,Qk1&U.nUgqiIԊx]WI:pj`&"x^`p.J[PƤW &>[;!cb"ø?.y XᐌKcL,Qk1Oī!W1WD7x!UsJ4ITp`Θ!pp1E I5#c2"%WBHd%j1&q5c'4.fɱڽ<'"ލ I.$mΌ $\xKҚB5j/!p9xOkJ x8ђc1cLl@q n1DWW}7@}3p Q5\*㙒JIQU?"c2O5L5px'CzE2Ynx8\5Vv2c1c.O@bv/mCoK5j`wc8Hv͕۔ dLVO`"^FSپ 5c1clx07n%E&M`׷pX%;Ɉk*Z%e^8`xu3Yv[;\gtY c1c)7T &W٭;peRZv8I51諪,eLNkٵ#o/^ޥ-@8ۯT `1c1ƘF5lmEN@xp~;f7pj`j`O67>ζU5Ɣyp/(fׁG"^'`d]fac1cLɩgVš+JԊx @ۀ7T9 c@/U;19X(fq"9Y)n 뾒c1cA8LJV*ӀV47z~x)5Tp#~Z̮xGd!j/يc1c)jK>зp!;p3N5F2Y$"p͋C}tS ;aSgd<Xgj"^Dݛ1c1cY8ۋ&jEğ =f@ w ɘG5p .aK\?jHm/[Ac1c1&T #.E<+j'/͇3 "ggTUeLzv-񤓈W c]^V,c1cLul4̀*:Z; 8>ˁSTRdUrU}:Sx]+b" XUZfb1S*/0MF$8I]Yy3-SkU`Ŝ1D }c'Q7G'0X5daL|AU{dLrݛ" SIC0G5%kc1A[z>t%fy9 Ѕ'jܘH)vxkpIە_骁/s)kD pBȪ]:;W񘴛NḆܫڢ#s1ej@ Ub6IYEa1K6mD&%<Ę <w#t=܄gʐ:F4Q,&^DIԊxՀ[tmM^dL x0t`j*q-Zc*,o?Zn1 :cʺeFAN-D#RrKDz"p[u{l#W1& q9l۶Z,fΰ;KN`=%8)V&Q8'WZB2Ƙ2@5 9.EvY 'Uu1c140_y}wgO?[SaԪU!C2sQzkG5e0 |T^2ߨo$MnQ^!)`Jq_Iī+z@olx+c1i# |H| T3kQ 6u1Tyy™g6g죹⊃U+Cy"^g'C_"E&3~:T O.x=m!cL( C1SZx7Ӏ:wˌ9UX1ƀ}%y^nVYx]Ļ$Gx<2%PfJ 1PPd Lc1+qbi1Ɣ{"x\zA쳇Ӹq-cVj Gp1F8d֯ !ljAI?2ˁ*Dd?9BDȟDd4H"" "r#<!HiWpDGȸ'H^@ī g1Ɣ>"u͕A?1{" J`Fnè1lS2>z(&-ǗnzX^5Qb*c]<DhmȪ'UU%ɞ?"Rx/dfU=cCVQU n\ȻOwp{ȶU9@K9sralÀpV]+"󀧀jE"ocȪTp1ʸ&:N~gFV1ƘNc*n&MС.(c)ck=F1iUE9 ", +i%D-ᓈAxdT,oHN@ߪ"REnw1?TF"Bh}|\&"S_̵Dw\26ޘVapR lF0SkpW;kc19&5u ׍ʒ .hɩ6 ]xEī'YۈHxLjH-\ujUuq&KPe5'iI$msH'%i{S!R-gr@\yw{4W^wb- wUU*4mFGM`Sx/2pXUq%=港:X ! #+u9U&cJ Z㗲1;rc~\ye8c)έv' W Ƽ h ObU9#PS`e@,Ɣv"R W~p`.WO_\|WVvxccU޳$qIU5ެi!"q8 |K.ߣ~)o GQ4nb8 ~Yhx%ۣOW<ƔU"Ʉ\l߾ӦN͚yq2 v1t<~yG#UssSy$"]pyPwq}UM2DUm."Zl 53\½еz;1~BT5["3ѫ^Py,\;h&oLꛁ[c =tz8c}+[ PYś "øќY Ir퉻rOKȇ"! ,"q d* xᾕ䓴p ±II#$-Cpdq{-5c/FjGYcd \SM UjV; =_ͱ$i1NU/J0I;"PտŻ[[UVwNO:ZWۭ&iQWO $Dd 0 W:&ވp8Pŷoo)]pm$z;\SpfCUn}eZJђG[q~ƕ7%ۓ~"wb|W܈K7_ IDATZ7M^)1ƘO~K5p1С֌S>~^e\s@aHX~# kJ&JTuSŵ 7W%xK;_wwߡDD&iST8Ƕ=/Cqk_c$k%j1Ɣk"^ 틀:b`1&ecǶWVcGAETYG"Rխ"pnp"BU)5R,wJIMz T8շX"TUENbNpRe2 a1"w]TX誺QU t#TM`$QD|/mUJU \U TUf\xc_Cg\pgU?V686U}SUV-NSs%iTuޣqMw;ƘD1Ƙ2B]zikj69ENKJDNbjJi>8z6f%.͊KԖZ߃uUUK"27CKE'avܭ uX[“ j_DN$gxស =q}x^WuI4¯jAp}pEz. 9RUIf4Z'DP;.* 6[1T*/~?!6ܝ [G_ )gycɆ1)F>ߗ- D8l21w+Nu&{j>x3T"rgMr1T<%jkWrQp?P+|o{ij{+[|˩YWUB*7SH["yOOv=G'R9Vm&$ŸO+O5KwhhEkbK爬: @D~> |{+n㉜T*.wbp7W>^ MUWxIB\</"hW)܄gWcqH`o8\L- kiEƐW\XIZcJ32UMW,VjȑG6[zTp1& W٤Iuzv_v1w;g(DY5?LT0 ӨM"ffE͚5M69Ș}֯_7רQ#:tUC6qr*͋TjY@й$ݍZT)_DGFIE-)-Mi%.U}ADNM`fD^a2ov("f*BD\[87?"ҒWu`_G'qiTF1ŷog?yBFxo@Uw*C)U ,ܔ]"q"fDք Xϼ2:_ 5_|~{':tycLT^AkG2qbhP 0Y,(Ռǔ.IK"%"|U2fWZD1ZX1UF7ZE`}rLQ-c"r00\È>#yc`VIy8k{{W,kI9v5"rr !6-ı)=CD#z5ԹOgsˁٜSϷLEMfJ=bŤ=zѽ{)cLi'zj3 jO/ᇗiS:߀" !N>裰ohx19w` pLȺ?l n_THV?aTRzFKJԖX@DkC"+nw%G;QD7Q'~;.(hRDȘ`0bOs~GIEnֶmmƍkK߾v1eMj8 ޜɓ2e2v wji1S^+Ȧ6so*rKT*&ʺNQ֕DiW'Kn,VG=Qv$"VUݣ+-*JW-~"? ccV!W"Zx:$sdϏ1$5ėmҤ:'vbƌ#-IkLWne-gӛvQC`E1cAUjo&x\ڣ*m婢vnrw=(0^mJ`u_MC+h[$כB6x&~IĦjqkeD@/YVQSNx@Gݐ{Bz9iAnɐjLБNje}E*x]1Tc1tXkq*Iؓ4d9^Bڞw R7nVy$'wo_\O"N#MI&QD+su~KPU#o^D~:OЕD:8,ģK!HsUɷ U>S-쫆?HM4qS8}UT5<.6jA\sM;ŝ19膼\t,ZV rAX1SۤsGIƥw's,%MJUWwH5ܝJUu[ =>&Q.ڎ"r~sLs?Dm{饪sK6,BED-X_|m2Q y}^*#! #|o'jcL:xiTj%n#wo):&/p8W\ٳn9d,jL X~=WfժUlݺӰaCڷoO52:%KXr%k֬v4i҄N:Qrf>f^˗j*hܸ1;vVZ%?3K.eڵԬYMҺukԩSIڻwol޼ӠA9䐌YRY(;vРAjՒVl޼KrJ 8蠃hժUuֱ|r~'T@ΝQX~_ɓiڴ){eڴiK.T]0ƘhUVU'" +"TR=oqSb\D>GDSz䜈} 6$KuzϾEx+S^M{9BUȁ!O'xYn"r.*YƔ9×ҥ׍ƍ+v1UJ•W}:\sQ Վ;0`+W&VSPP X`<='67={o4p7-\K.K:M63swr&4?)޵k6m+c|x7={6W]u/]nʕW^os]v1sLf͚_ѣcI'?$p޽|wL0G}=z=fѢE,_}E%޲eKĺUVq)n]bb޽O?O?ɓ'Cq&tl*.O/p< K/1eʔuw}w$-~n޽{{y衇U?{nNʌ3x'ڵk9.R> M61ydx }YK덢갬ӷ,c"Ҍ"׷`b[LX牣'ᓡք]/6`'U]KdnR/س?ՅU{F<1λ޷Tb472)>Ӓls8MV]].^$nϞ= 'i/_i.Q+W䬳ΊHƺzÆ ={/vȑ##yyyDH߽{7~;=PJbǎ?7u]w})+Zk2bfϞڱcGIZoCx4GO~~>wuWoSO=U챋/o [wi1xb0a>`$m[2rȢdӦM >cvرc1cF̊XرcٴimڴCcǎ]?9s /{n.^{5ZhԘ'N䫯\ .C=]k. ϟc=vwM6m0`@RkO? [תU+FAnر#7n>SNOZnРGtؑƍSNmƊ+X|9ӦM8g*OyI&c}رlݺ#]wUTYMǎ/4oޜӭ[7ڷoOÆ ]66lয়~bL2W7i&.^z饌[>=z4޽;sNƎ[\mۖn)g̘+@58묳ҥ ;vdϞ=|$ӟ0ƘҨ%jGB>I`@%IugȺCODodUݝ@<܂0 ".r X"  =^K!.q:NDRUEgT"R+f/:TuCx{Eޓh NV.~$" q!Mtw{2F$O B@|SD>IDٍ IDATsd dR)gobd7v=:k>v"w{ /䨣ZUڰaC6lH׮]2doW\qEQBiEd8HKlxȟT =N,W%k?cEdLV&Fĩ ^4.YN_o*n6})mDjE5PJ]n E<+ʐ:uSOqG'`ׯzkغSFLV޽{3eʔ-1I&;wnXug7n?;ygÒd֭'ƞ ޽;O=TjC53#uV"FEj߾=^xaغiӦe_~VQ 0fU+{߾}93W4}aРAE;w,I?m,Y$̉jҤ wygXR{̙a˖- ;nvi);nܸbn*Wz\yŎѮ]/2@1&Kmrzk p0PU Dyq<}_^:Źm\"1kt OUW˷ Wn그l9ʺ!N̦6;@Ou4ߔ$p߉C\w=QTc0&Dq@;I:ѡCic w58谛q/x$[na ,HVF^?[os΄UgqFs9aW.i̜93lCIl_|Qt#9%"1g#xG|o&L7|î];v,۶ղeKnС'tRB(tg&܎|ao[c)mu@Uw\2N"gK\?؃U>UMXSo UNکɪ(8gpH&<*сTgj+p\pZIUhސ7P\2vzc/UBΥ)IORվdzp Dk[UO.idwuh1eR^p]8蠚/xu>2?ӏ?9IvE{),4 pG L--~I߽{w6mΐ!|*lUƍk׮E˻vb̘1tMaUVf͚NΝ;SPlh mM h1My󨪫E5hKh6V3n?=rl|6,>J6U <| "qT;Unz~,PՍ% ;ƹ \,J_pC t}%~6_j‰oU֢!mT߸>ęc60[DjG~&Y|+8wy 2'=\Ck{6n֭[~w 0[=j6nϷ~ˢEزe ۶mc1o~Ch+W{elٲp--[ߵ^LNAEQFZjDohe1Ɣ&2IL%Se1wz[5O39NI'_"ؿslfaLYw6PtOa6ƘT\xaXM"ӪѲe˘4iw'zOT24I֭[%j%.R8'֯_ϼy"*b>|8_ٱ#FTdt֬YÝw̙3j%*ۉo;>(ٌyL8/80bĈӢE^:yyya_2?CT'4ƘLZc1W kvU$cJoFϬYE-ڛW{1{W?~|DdM҈HJȺu- x [WeL<9swqah_C*Iesw}7Oj*25Z4O<'N,ٌ=Çgڴia7oߞ1W^k(nc){S1Ƙ܄x}41$2{: nc'=,m4I5kƍcW 6cYfԫWSn]*WQ端Ny5k/QDR2k"~-s5TT)oM}'=:^z{챴hтz=TRϊ}GYlN!( *pA (\䂀J*zA)RD(E'J f $3?6Y&i <μs6crv3g0ac̭/˕+G֭)[,AAA`8 n̟֭? 5}a7xV!DޒDB;R0b.HQԄgs]X`*0a!IƔ)S#3kdxwY>sxŋne47=cҸ|2Kv:MMMe̘1$mr:u*͚53$8mٽ{SL;OÙ8q"vuM؂6n8N8?iӦ *!($Q+N2 0߿١C9wK!С5X bRȜ5B ,^I}8|M˲t֙vc`/^ኤڵk Zj`K>2QW_zjϯ\-ZйsJ! Y,BJEVdVӅ !e Cn|7]N믿]tq8I yIÆv *ViL%(Sݪŋ箻%re5;OANLR8u9 g:Yg%$$/oW#GdرԪUϐ!CB$Q+S*;ݾ*rgƌL6> Z^]p3^ PͲKOu떡A[wΔ̉%K8۰ajPP5jpxO?ٳgLΰeHJJrxƍq:?~k^~ݩ8sSI&ve1g)^8s1ibBeRV!ĝ7NWR|\ɜ>}:O/8k޼yǫhrOkG}dn{xx0l0F$Q^\R( L!WzuCСC4n8yZL:ԹsX~=O>dcSRR ?#:ugRSSY`Ǐwhܹs Fzxꩧ ]tUVѭ[ljZZjlڴ>tmڴqh;nX0%-S̖u:ddNZyaڵ|嗆z*U)ĉ9roҥ4oޜvXBQIV!DTze}|<ի #Ӵm6OG裏5)Ṽ޽+3eyz.©v|7_~3<~yqsCs=VyXrqseԨQFѹsgs֨QӵkWks|JJ Ç?2׀Jxx8JѩS5jT?~<#Fr[^l_}5Yg7o̙3III9ʕ+?a99'=ӇB!#Z!ERŀ`oZ.ˆ׹sgBBBr|8[lĉ澫Ww3l0xL4#Gf@իjZUJ1uTڷooN|D۶!AbÊ6@a҆7,_2iҤl`JΘ1f͚/zŋ_0f֮]VZ1ydʗSLJ*̚5+իW{z91vX*UĻkHHٳXpS/^K2eAAAL2(ЩS'Ù={6֭3|舊+|r&NmL͜9bŊseڡC}YѣGmf鮵fذa[.O>F6~'"HV!DQeB ~~^{ov%ReʸtݲqZLe>~GV\ѣG9u)))( QFtЁmۚwVR݁W(Q3gҽ{wVX-[t9H˖-رc䨔"""6mڰb ;Ν;gKxx8O>$;w6Ԍ-(J)zM۶mY|9֭ɓr%Y&;w駟& 0Հ|Ok̙3yg9v'N0 N:tЁ'x ʔ)cXtiZ*3gd„ ;wh.\`.S.Zjl2VZ9vgΜ!55hҤ :tXbԩSs:uiӦ9%K9VJѧOlװ6yL=**fs4iܮVSk 4mtG _>@Qa#D#+,(T|`SZGh4B攊|iWUdG ޽s1ZG+x R<={CC= Ǭv6i0СC"~:seŊ\~=˱`YfmۖgyܢE:uyc޼yv۪U+-ZdKKK3ԁYץK=jn^zꑚJdd$K,1dˋ=z0ttSLaݺu[.]^xg}Ɣ)SϿ⋌=鵅IÆyg?peN$d3T!D~J^pUBxQ!p1^!88Yf7o?vhk:t!ڴiS g1矴iӆ :gӦMY&]իWy5k$-vA/^=zd;wҶm[V^m7I d3ӧ_s8OOExxeWM" hΜwQ+wI q'DBeF ۷ߩL̘1{f;wĈ\Jʔ͍y._lr IDAT 44 Һuk4h]w.`wD~ؾ}?00!'W_uxݻw/LӴiSWnnݺÇJUf pQ(2'jO'5U7 ťp>N BUDwe,n)"";wuVT#uȐ!]n= qFs[)ŴilS3f0eȐ!<6IJJȑ#Z5kؼ/ /Y #"" _[8p0^{5ׯoN޸q;v0~x.^h믿Ҿ},+B||GӇUnbǎ\|\V3T 8k_ƿ\޽׸L5wB-[.[HX!D&;jBUDm*%,.󓇇3f0rFas72y۷/[γRRRmOOO>c^z%`իǘ1c uU-quG^"o-#I۳gOV^M6m ;ixYf aaaK,f2|d„ L4jժvі,YG}5L>>yiӆի;4ӓڵkǏ N:QticׯGjjsD%=z՜-Lh_àA}FJ*+{ !8X6\_B!"֧œZ*9L"ӓYfOrΝ;G~? cyڴiST)vϟW_e„ ZEA͚5jh߼y~ZbŊT^#G85OdϋW; MVJEX/PP|BwwB_}uβ'#n/(7+!EaG_݌3hԨQy͇ٳ0^z5*_ڵ+|w?Ӯ];|AZlPwUZ5Ɨ+Wо}q C s%K~Dm9"kג B!7kQ,*!DpuB!D>0-Y2oe> s2C bŊDV^kFi۶-ƍcƍ$$$k<źCvY6';=GdD ϣ– 0o_11. G!Çor׍ZGl7^Q4HV!DQd80uCرTR%/֚cǎl2G&Mׯ{W|_޺e#3G;wa-8rB4`tF;!!ٳ0"!(O?BZhj` BI !( SUaN3׈y!$$?yѡCMHH`ƍ<쳌=fwoooC;55$SXw*;Gwq#_}}"mx/Zv}unW#(8C!B]v1gg}K.-xyfϞͮ]Xx1 <<O,,_AkމJ|7}ttױs+TMD~.\ľB#Gn+\1. GQ$Q+ RRx!0vC%55g]a\˗/wQdIZ }gΜq:9#(/d4n2|م"WRR4~Μ1xE! !\@yD)R KRJRR͔R\B;ۂ mfΜIٲe3gvǏ3~xWiS*U:uѣw&''[lҨQ#C?r ΡuD2/dFw0ua$UjbΫ^ZGG`BASx6so(j[T# ?\BqMf4h͚5RJL<_r%-Zs=uk3 DGGSBLc&+oPa߾}ٳ{ס(BTSo?xNoZB!]KfȐٺew,q. K"=ߕR#BM)&B7n0dRRִiS d׾}{wn?~<Ǐ/8sL;hm뮻 /WfΜIRRRs;ݛ_"F?瀴cm'gϺDBÇoN&8.$6S x[)56B!`ќ={f֬YxxdaرԮ]܎gȐ!$&&Y<[laÆ e?؂ժUD6}݆Z$wվkѣGO?!Cwh:b-0IٱB7tӧ )+ZG械.&Oֺ'Re0q`&)ksr72Z"noƊ+|nɒ%lذVJ1m4BBBl/Vs̡cǎĢܷtR7oNvrӧO{{QT)6lH*UÃ˗/֭[}xwW^̜9waFas|VXhQ6m4.]ݻ}~_M07o(]4+VgݺhzLDD5{Iq牍MHMt>zZGpAhB7"ZZ_TJ1TI-&cz5bذaܹ3۶mcŊ_Sb<ʕ+lڴɡua& #GXnZÔ}}}?>ƍc͚5َcʔ)oߞ!lBآuE"fE'/i۶,uh~:ǰtS3׵pHn@k}تh*RRRrsB)uRRd>];kRZ>)(W!D7n'O4={vêlJM6grN W^믿L2َd֬YZG}uy???}]/^LmX"o}{ =ׯ_7)khu@^nHa<6z| ۶]L! 4~2GѲft']:b$idGF(0ռm4*eH+.0¼PkgR z7[=D)5 b֓;RR]ohfC_EBn16JX;| ZGegRgS_7Q)uX,ZOڡ{Rc:9%Px:M)uvazZg*n$(ʗ/ҥKAAAvRR>,>/$$靰|g8qg3dauaʔ)\p;vp!.^ȥKt s]wQvm^Zj[իG}@JJ 111Đlcxxx+G>:u/IÆ ;5EhтTbbbx"~~~+W%3yQC;44ԩ:bFǁwƖϟ=ϧOOS!!)[e#$Ϡ .ZsJ2 $HlY]õZ@ ! IԺ6l(ZVvf tcRj Ě?9dJ/[&j@/TcL}ۙW QJvPLm-4LQJ?Ư ˯R& Z<鏺 VJ=^+B3___5ɳ5BBBDoJJ 7կoy:"z/M8X !!ӧo[~.EEuĊ !\uҽ&9X @)PkJ滔R p`/`RJk'9LL8$R:}T`/$b2'iwaډ{kJ>VN< B䩛7o2c C_Ν]()YhP? gj![*t ^I, !D&uJ)O/$lCe?7j>ELr[ubŘݧ`y Le4u"@J4[J)our>. <}΢1v3 ,t"8Mj91W!ȑx?nyȑ#΅B!(?%!N)1Zk~@ LZN?mͦVOַ]HkM)c٬X)6B7W^=x m35?_ (J!B!H]hLIݹZk )ekRhcIZNz'81Q[9q֚8pX)t5-RJ}ޞW !B!Be]SH ޢ] rs-oGSJblU3Rŀfy?)ZπVOߟk !B!B!Z7>|dR*Δ2VZ4' qV\mjwTJ97wd>nk !B!B%Z]^nsU;L)*YKn-m^sdbz9 % h]!B!B$QFdUS)UKuʒRJaJd71vT\miV/) K[8jSJRJ=J{dl21IBԇ7Z'0&JJ_eLIZ_2aJUJQJMSJuQJUSJn]TTIk-G/V!JLL4?\B!"y:a;@L ]YZoSJMFZtS$s$ pE_#rZ=JUNzV\0̲C)9!-MR?;СC.HT;dsB?+ZGdL IԺ!uR#`ERoiOHcĞZr:Q>/}ݞdD,Դֿ*aYk]jR2_5T f17!0nhB!(, >g$I+Bd"1y}!q uD+H6T4Õ\^LZrکTJ>670Gk}ݢ2XGZz+&c:Ԫ"P S_g\bïYE#qZ|9:Qk}訔?ec pJkmS9\bz@a!%kv~!ݒ%Ku5 IDATzA@@Nya޽ܾ{hڴ #RquT J!)SsWyG.)$jzzј~qut^!'PjO٘3 S)xSMVg]jfLI\0uS)J)Le%eLI$Bq"##1۷o/Zߘ3g=`IԊ,)˘~WRH!(n@R?͵a]-b:L)iwZa|Nb!BBMȶ@1*RJ BBReQL1 .P!/'hx=zK2f[ tP*r0Z눃t'Z!@ejO*!BWQ* r^S 6 Cx²$B58p~b9~tU)SL;"99+WFҥvZZk^۷ /nX+!!!ۛ`~/2seJ(A```|D(YXezҧOJɒBQ>x}̚u5k.3 V*Y#0BM~["{^>$̞x(ڲe [l1[l~$%%w߱b ϭ[J*t҅={RD ׾u+WdŊ;v۷oAƍԩݺuU2,))oM6m6._lxlٲ<iӆGT2>/Ĵs;uDm>ʾ}شi{!::90Xbԯ_g}J*eoVRSSYr%k֬a׮]$''ٲeyڵ+:׮]clٲG͕+WK4!!!s=nݚN:9ݹs'=3 ,2T)GSFIBQTyr e96v": C,|DEEuV=jsuƌÊ+_4i R~}֭KJJ 7n4(8|0>Æ 6>5 ~0/^Gy5jPzu|||8tQQQDb||<,_nݺq%p(н{w2pwgڵ N:u],Yk׮qY?η~k?dذa|vy)I^^=5kFƍ g߾}lٲ6mdY4mڔzQzu={;ww^x5ӦMFvR4lؐM޽={ Yfv\r1qSn]*UD@@;w3gΰi&?n+ªU^zy/5X;06ze~ ! Oeذ?X6:DZGػ_XDBᦾ RSSQJѿ^yL5d7n_믿fh ୷ޢ}ֈa澅 ҿ,k|'=cǎbŊ6m߰a̻o2d| 9}1U ھ}:L^ܹsug Ɯ9s/}6mbݺu<ٮ5vL;pˈ# ޖ-[:֭[|μ,&MлwoZnim˖-رc)Y;vXlقW_^^̙cH%)h׮=M6ͲFȑ#Yr%SNʕ+ܾ}'xbT%BeI !w(OO;ܹ5"+\B2n;w.Æ wɴ#uԨQ\x ֮]k3I ,X@b}|YvIf̘a苈?̔ԤI֬Yc{)/_zyL2lٲ;t8XHHo]v5 3#Gݍ۲eK J*e8Q|k.$->ȢE Hl4{lΝKͳ=ӓ]o9e,re*`.lܪ]z, ! 22  V*b*l$Q+B~mf;r)`N 8 *d97888[vrII1J :thqʰ`%'Pĉ _}3ԩ=v >ʛoi۰aCω|}ѯ_?C_A,@vXOK!h.kLg+窘 I !n#SB[܊+ҳg𲸸8VXa{뭷icǎ:gϞ5u'ŋiӦ>Rnܸ?l{饗^K.+Wι s0=p@S>rg{#|||VB^Ã~ sdɒzUݺu wcqtR*5`V #B!;j߾kdRe\Oa!} !(nY6Rskb8jժ-[}-;#MYjҤXQ *HDEEqQ_۷IJJTӆvaV߿ЮYùx[RSS9z(̙3ܾ}8l|rayPիW=L.?$$$p!(L~DRX߿>>r܅B!Oo̿kvDvIV!DQdxfK3ZjgYɋkؓ̈# IԠ c=m+W:-^N߼ys$m˖-޽;> %Jd} ~H HQ4)J"jqqw\ 0^s3;{|1{wrmRR4ګuRDBP(g@1'!Yz%BPV14~yMP( y IErk,y% BbBWaBBBeBBBB* y)ٳ2n~[4v>brڵ ?sukժvET(lFx 9q\ !?*LP(sh"N|}:SOiϟ?iܸqXqØ>b\rN=qr~ݺu5ۧOfǎ4l}^麗.]l96K?˗7ޕ1NjZN*T( BP( ӬfUP p. CF}0EJ|4[Bw\)[ !n[1) 4ɓVEJ*E&M4e&L --NSH+W /]fۈ]رc5(Y$Ӕ͘1;v0Q?6#ѿOfNWm:!+g׮]+DFjC)@y +[;7ǡP( >%0kGrk,y%eB|B1 2z8 \̤?0 X)'%|WW(nˍ; {߿f{߾}?]z5Q6*Uh7ntn~ƍl޼P_]tl;%.^~QFRJ?ژ;]jj*G6$Bg?G5dPZ5]HLLtwHNNc>u~\ABm@@)Nʝ;w/WE r]9Q( wQ&ƑQBBkl} < xK)H)+J)@5TV( cl26mdI:7M6ӧeiiiر;dZz435 .dӦMvK)>} ,;vRJۗ?nӭ[7DVKGʕ5} <7G_pW_}?P_i>s ?Qzq|G 5GC?}WIJ_yЀ9ܹs^5vCO͚55D ~GZ(Z3h+||+95^~<5UQ 0R"lʏի-رc9uG5-]?W^y'|*UPD <<|u֙ !hݺ!|1fBBB۷8p !!!4nܘ:uPH8޽{͟G˖-ٰa 4H#*￴hтиqcʕ+Ǎ78tbΜ9fJ*?~yt>F5j?#*U"00P#VX^7?~BCC2elݺunݚRV-ʖ-Kll,f޽̝;wM͛7g۶m$%b<6&=TDBP(,Z(֍!]uűKRF%<B|ܟ3 " ']MKqEe+w#̝;{sי5kfr[_%K䭷bڴi沴4bׯj?~<ݻw7 RJVX+ kk~~V!'??47--y1o<}+WcR~}zСX.^g}ȑ# СCh6jH# 07jx###2s 8qUR6 3wFb !¼sVf%*̙ ݻU"EA#""3& w"5݄Q`:Q)>> S(?5ff pbŊ1k,{=|||\ڇ/O?zf„ <.S^=Ə`|9r$v?]2vX .Tua޼yVɺO?}Nch"*Vh/0._^x^^^|4hܴiS,X瓛\޽}R/مxf(ZTy(L„ ̯ׯl'<<\so߾=x(VLhn#/~iiRʓYݱ?ff)1?1. &? vB@C)aq7)ek@4 %t(IXRʛ:ϧ$p8 R:S@=Z)s&(>J"Z c:@@&2}O%PgSSһØ}OoO_a[)1BO0"- u@Ji,Ac[wO>6g([, 64o$W¼mD8Bh܏#<==ywݻ7'<<beҤI~i{9 pAǎi۶-'QQQ˗5ž}tЁg}'zj]fUϏVZѫW/V @%4'#:wLӦM2e k׮8J*t҅^zEjj?K{2i$uرc9rM5jЮ];ziq<<<4r{G~∍… fGeXosY 4jԈN:ѱcG٠AMkƑ=  BP(2CBư*ehfB"!DQ ()0|@??8R:B%0ܢ)zcmqL0!70xl3Rv׏%`EQy{ &vfI)P !^s`D\ q23-VRnؿ~RYLxj IDATg+R\+m 8c6zLRnuq<RNjD0?^)CKxr!¾to`ڴjU2Gpӧ|2W\ˋ… @  DFFrEJ(?+V$r'?~x tҔ-[}pY"##B@2e ̻͙3gߟG}nBHNv܊kHz_L$c=yDBaYf1zhkƇ~#R~}=ߔ,`~{f̙ITŃѣ5UC_~8"Ń7D7ǥ ˤ"jC'"-9=!DvT7&!ORʻ7𦃪% @!D V9h_UWƚ;7XG@[R4B֭[DGGse;555Mrr2\tɦ|VHKK3IN~ nݺETTW\{صk׈ʶ/!EDYd!D&1ђ9<Aw%Rd``K ]/ߍ@ODh0Ef$"+F/ϲY`"xI!D-22I)w tEu@)e i~f|zz?ӭN !~$FIi$<ޕRjrI)ku;++toT!F5E{ x.fvk] (o?Ń#}g>G^ Tk "9, RdQGZZ$<<]vK\\w?Nҥa k׮7~*Tweؼyۛ&MбcGZje(17|Ip8`+@dd$˖-cڵĘ!OOOj׮M۶mҥKGGG`V^Mt=g,oooTBNh߾=Ed/qQٱc111i:OOOUFy嗩^^Z -}YP 'Opvvܙ`tٳpkNh),X5kҠAu#H.k3F#9pSNvZl5 PT)hٲ%/ŋ7-[ebbb4b/ 6瞣C111oRJQ9ŋ?7Ei׮K,__n>&Rxq*WLӦMyꩧX~e6o msEmVJ.]9￉"..N#zxxDzhӦ M65>Ef"##ߡ|D۶mԩK"##Y`}ʕ޽}Ϛ59mo<{dbYD8"C1yf0OJӉ02wL蓉)2ө`!tlG_.R젭cZn()''R d1)eSBE2_Sץ4ѷA$PEJisF21)SNS%꧷62[)@G}Y6s)mNT2!¾4@׮0fsn Ba˗s[yӜ3)e\aR2w2rH/Cyoߞ>,S͒8`PX1vɭ[Yj}4nܘ/iiӦ7nHr6m'OvW|yƍOl>c)%gfҤIiРK>6l vmҲeKƌPl޼9s4˜SҪU+MYbb"| [lш"$$9Uuvqh+VZt'[櫯rXرc5JHGɒ%>|8:tp}xWZTƎqQref̘t[n1f-Zd8K.|oLLe˖Lf?dN:ehkfܸq&^|E"#=Z`VXl7b/Tdvy1~xn|A7FSNl޼7޸'<̜9fΝ;,1%Q'SY[}ъIPgJ)`-B|HM[e)G #HuO= ,lHMGoIPWdR1HY6oNT3^⤗r &Qْ~"OL K.5T(˷ߞifo"m^Ν;믆P믿ҹsg7۷޽S"-֭&(8qS˫Ϟ=K^غ5gs~=کٓ 6ג%K 6lcǎEreV^mHHII᧟~"$$p`֭oߞ+VZʞʡC֋k׮N.\`Ȑ!;%)))kN'O$$$$ ӧ .ti|n֭s~:wLDDDq(҂|6̦PQY'Z}ҩez,h9p{ h)HRdNKg*I)TX\:@E5ɾ+6+LB,>(~%3R2^\9F8n=a) "l)@jdܸ{W| >QQI̟Qre֭Kpp0Ϝ9ի5bɓ'4hsiyg}Ƒ#GSt3&M:Ar'7Rd!H"у_~١06l04pvbѢEP,^0-ߟ>}iǎ{.Ce͚{[Νcܸq|gϗ_~Iv4?ɭlڴiLpa*))#FtRig9y$_Zxqf̘AZ4۷'55>ŋsu͛gOoooBBB2`̜9,ܝ8qӧ3h mz--ZjCCC;F(Q}}:ɓ'z?כw^ܹs 6L#ϟaÆѫW/ Of…Vb%III 2D#zyy=zXy@w֍Ç3h Ξ=k.>}:>,9xt 5-]6'NB Vbcc4h8֭[lj'슘III̟+ٿ>,[6+4i҄&MLxG< 3OOOOڷoOHHOTf̘t_:hٳtYSVfM K;(냬c1c-Kg]>6(s6^{{m>Bya-y~ Zc/OW%pZ1QJQ(Ǡx2& 3_~iW( >|~^p( *Ė-[:tSыŋ?^Ӕϝ{dD/_%KMN?~&O̫)?>kooo̙c%Zү_?ƍ);tK.5ԟQƌʔ)Ò%KD <==/ \[vqF>#|}||x:T 7|G᯿N*UcҾ}{M>j9kC,X3fke* ڭ3k,Μ9)0a]Az̙3{^RJ>SdAJɺm۶/6EZ0Eϝ;??`)ٽ{FhmԨv*`ٲe4hK9Ɍ34i 4pˋW_}I&i> 6p>v1*T@ג Obϝ? w+WaQE\o& ދx"w;"(P%1?dg߾}Fx =z>|92YhVQm۶m۶YlY>cMى'ϝLJ>ad7={jsyeU.6VӸqcCpڬY3$Wjj*ׯw^z9u4˗Yv_wO/}LdXXNn0c 7T9S|9loK6*q_٥:~DNGtU=l#O29y\BJx# !„ƍ4R#-ƍ;W( ֭QX'U0^^^Vс Gᥗ^r VXTR <==yם_"{!N0xyV\wcǎNBпlyM+?')Tה9t+'OTT^zm[lJ;ݾuV>͙E"44Tcǎ!a\NjBx75$ GLJݻ;>cEAv0bvidԩTR%TdP+H)P,#ޠYA?7ڄ_E-w)V0's8&x?Y@ХXxA={}K Ń͉76JHXP *\l!S2)#/"3o_v͐pڢE gPbE,/+#RCBBȟ?7oN"FMs9~HڊlvNX:uC/n֬uwƍ6V\YrJ?]_z%˞Xk;t耏.?$;BBB iS2ȗ/իW7]իW9z(Ǐʕ+ܼy;wXvx9ɓ'v7o$99j̧OkY/_̔x+X#AdqKo)ŋBP|yOcQq +V,^t;ӵkW7`wıc8v ܼy$w7>mtLߝh˖-cTwynݺERʧs? N}gtj=%FKsÉ.#[&Tyia !DyyM#?BRA "l0`NYgZ՗S(3dY|,e9i$''3|V\i,}.moCժU5iLLmK*e?W[Qzϟ'>>}VZooovRRxX+VPҥKYlwX08ի$̙ի9zKwͦrASxq43#:ZWKUV5jժ!ЈN J2|Xbt 2tPM˗/3a&NHpp0M6~4h__96mb…lݺUc,ܫym%#r[#Gjx饗(*/6SĞz~ N&7? G?=iT=BxI)aAg !D`1(ȃHa52Fq7n`Ȑ!lܸ1Kqx,{+iw ߟ{A:u0a[mH9j݀b>ע9!KRʵv߻B݀ev0.Sfm (1%gM6"٬F+5_} duܹFh>~135+7/J_;mWd'Nꫯڌ*[,K???)׽G(֬Yr߅ D:޻M}_pa٭[ cD#Ο?OHH&v IDAT@`` ˗H"o{%Éݻ۷F(̠B ,Y<ޢEjŪ_gF 5ɒÃ6m0j(l۶m۶1ft]s$csŃ+VhѢe䲔D-xE?ʵ˗y75e˖~JVPBAk2KBB@)toj{ !>tW4PIW y) !fE󠟺6k5B+*QR&  C~X > C0b=c;w;uoH"̜97~QBRBLY6GZO:,–P&!*nWx'& !eQVB R:=/()#`L?I) !]-?BR:kگ}H)Bl,SNB\R6/!D`2/=,m?) ))JWRT&.]˕+tۘ4C,\P[j˗ի;~VI2ʕ+VYn]^zEjgCQe/kS~8wիlذ}X&ҏ5{S4h@xb_mݺհłޗ:9}Ք?~z믿/iԨfSۚ+Wc߭[OS־}{}R}P H)V=󥒘2?4mԻ)>Wѧ-)Rs^B!GE.8l01lb#q|afܴʘ>g>71E?)N!e@ %,11_VPZ13&L`Pg(jp֬YPr7o'2Gy$ۄ^zI}qltPo$nԩ.=w-R!+1c G4ؾ};۶ms5k˓;w> hӦƗjH"휼-[f(>7x駭|g̘T[)%ӦM3'8pޠAƎkx_Aܹ/RH)?* w)!E%)()ûrPi#aH)kC$P)јbiL`vVX/K)ߐR:PX eh"]jϏ1ba5P(*ǎ]S՟@c)CO°JV޸5kvoq|$'';l2n޽fϞMBBzGʔ޵kW<ji-n߾ȑ#IK[- ֭[elYŕ0yZ裏fG=4K:mۜ\¤I<ϠA43A>}4eɧw2l0^  *FJf}֟0YN{1UxLJ9FJi(ݫUL_|s0E5vJ)R:Eu1Eg(PF: Ǫ?ۻ|RʻRJ`:G0 0]GߤQ))] ԍͨQom(<"&, Mn,R c~6circS(H hdI =z"!N LPd;~.]vm9h+e)YF/ ^+Vdf޼y׭;%سfbmz&M… t9ӥhD@zm?# 2DgziْŋH/?̜936WK.N 붨Qf{Μ9"yܹs{K|w|GO>ӼG׮]MMM?ZmI~4IIIӇ'Nmsu `%0{xyİcƌwVq MY-ONNfǎ3K,bNGVw><~F4׳gڵkG||S}}i>#g,G~1fFaez2:,Yҩ%%%ok1c ڇ$oܩҽ_rs5S?]msmԷ>׎bi%t_dUO r~~ )CO ėy޽RTgGɗO}*gbē]F'n^ 88X,vȐ!_^zQbE+Ɖ'8tׯgӦMm۶RdmѢE\2wfΝtܙݻSn]jԨA\\?ۛ?p͛7gӦM?]ҷo_֭K:u{.cΝ̝;MO?j龻i֬۷gʕ}ѹsgBBB̟ŋٻw/[neٲe)*YfsקI&cǎe֭T\"##9|0[lь˕߾}{+@ŋ/H͚5)UŊ 7owܙ3gű4^u:uDnݨP :tkך<<}={lҥ9rPzuʔ)CLL f׮]f:ӓӣG]7gd,YB2eY&III8p@3WlY\ 3شiդG&Mwi;vo)&JU( R^"&+/dF>Μ9ʴo_; EŻLɢEa`$e btI!n:2z!ͨW_}-[fÃɓ'Ӯ];9{,_~e)ط~e{ ><ȍ7:u /`?W=z4111ި(ƍuZB0vXZnYuVsZj;c-[}jSSSٷvnڧzJ#.\/^zǕҥKKyРA)S& J)Y~=ׯ;uD\\F NNNf1 6dd}NCbbY)y8qbn#Fk׮h߳gr+_˖-5B-СCټyƟѣ 83f̘ժU믿& ZOOO{=>c_tiϟohOLgڴi<3./_>f͚O?Tgȑߥ\ۛ3g|92dʔ)CXXe˖u/!Z|/Gرc9Kƍ3f E~ ?6 Z .SNJ$ vX'44'RxqIϞ=={UQR4 ~';]6˖-gu} v6߷ul?}ؾ};;vŋv?~ׯOvر#s8|i04PzufΜɁ8|0ݻ$VRfʕ+xb~MFLL͉Mҹsgs4͸-=QV-^-ԩ1!00S9~8xyyQti*VHV4ׅ\;QD s \!*==ʡXP(,"l,;o ehZ[%Dp -y">%=hӦ={'%BGv-5k3;wV[dK0̄a@GUorZ.]ԩS\pbŊ@PPSBFfѴiSvbŬ2>} .pE|||(UUTŦMw/ƍŸ8bbbB@ɒ%RJBKHH̙3M`` ˗D"##ʗ/oW ˗)Q9%HOܺuSNqe# @/i3$$$ťKs%J 00+fy߹IHHҥK$$$ 4S*W|_ٳg)\0j Bҳ/ V !Zrj2WfL[P#uig3ս+NnA[O͚$Iow}7_ovezk6|s6l3" ׿srw?>z6SmteA7xhYi +I+ht?2k_v^< q*{ssڈj^u7oIe˸袋袋_uU9y _8ΙMye2P+I] Ѣ0 IDAT^#IR;tru8$I?G=\t&< Խv^*ITC=$I-lMUg2TuZIY[|dw/;߹ I _[*aS}LgRTݲWH${ZIҔY;8wq]w-cF$i";w>sί^Zf~3YLizD}^%#I>m}/$i*C-V^.^$ y_Q8OL*2kw7ja>4!Eg/orir$2kz|_I40-z,X^ɬ-WNɴS؋D$i{!0EC=E~ =8;[$I`îkU/YVrl ';f/ 6mgd,I,0ń8_R$o2#9[{Ҥ4TK^D33}{$MX햁9gYH4Adn^,)a㎻yIZxy-7ͬ-mqY{uv3$iJ lբypjӑ$iȬ]m1\ $Iwݵ׿bN;~{[ܦU-*㝌$MP~Yu^fm~2$iɬ еN׿"%&I?^uW];3kW)IZ ^9HQMH_rI42k =t+~£f$Icr17\w/6]YOMzj3k Q>)I҄`6}}emڦi$iD2k\6tm|3W>q)wk%I~x9֍\;&yde~Qafi[_ ~*Q#IDD}-mB.Ϭث|VFK%-pYq.}ﻂ8./n{DI4R~[{|7FI҄QXE2k~JPD|9-wͬ]|$I#!giKӃvZZ 7Ɇdf33$I%3?k ܳ?Aza[|0v~R2"whӬP WZ`ڽc$M0mD_/[4Y;HOD}&غHt)pdDS\Ѥyqfmm$Y[ |MiQ`I"O&䏓;ڴmӳ,$I+$OsZ~' Igʬ=k_xَEZ;f4kɬ,~1kkg.}4q6n#zXM+*I2kQ؉bsM?7ρCiw$i=B1g踍by2k3)f6m7CBmmYIDuݪ[9)^%3F~צu3k,IJ[i?FD}:Ev6g_l 7 8KF4,g;6mxU_/oɥ 2kW*=I@LqzҘ(7rSiޜY~S$I=G9`\$IHh 3k?n ݕO&c;}wi2k &սE$FDLT> ػH4uri(j3k>aG?2$ibo L˫6m?gH^ؼ~%"I &wQ Ŏ'u9*_}I҄QE=n6aOu\j68H _k%Iۿ۷iP[~dMm¦?mo/ۄ%O+zȬ=Ls+Dm&I&6Zxmґ$i`>&v̨%MZiúS)p̬)‘mڏ)7$IkYM$Iu8q#3kKtUȬHإm¦QnD}n^.O3kG Ȭ] &dwO$M /-{$I*6!ߩ^P Y=.BQh$Kx8 XC蟀7{B5w[dDݏEJ4IE5mXN$V *m>Y[S#*d־|Dԟ91$iEW/`F;2k?ʬ|MHߏܣ$Iz$r]ړ ڄ]Y; 05́"cIҨDԟx[7{eoV}%[8%#INB"bd"IҀrk>菱5(>^fmJ*I]?XY;v"_>EY2ksJ$i%D*]S3$BD}yً=2ko, ebs/RyOά]9&H})7X{?Y;}S=rC2ij+wJ܌б"`Qt &_Ȭ=84 nˬ>Iz("֥o}Wf~cR$iҋϢKlK)Gͅ;s< i l9/(ZhFEYc@?7AQ7k,!S|u$I7O},Oi$i 7cdK+6m֤}U}lϤy:$5K#.sНO~3IW_XEne|x s$i-#q Tlaj=TҠpDfNd)wv`>#IZ(R{$i IQܳBcF}s5_s$EkofNfo |8# $iB0wIO$i |(tB G)nXrDڒ>3Dԟ|bʹ>#IHpGm3F$IJhGQYZoB{ځ^f$i;Ea$%WKHG_~v:H4%p1E=Ʋ S lI&埛Vڷ%8̬]߿Qؚzx1gU _,IVp?u[3k׀Pۍzۓ4u$7;2k; 6$VτƦ?jl$iR[ܞY['mV$IUDp mfd $I#GS%I$i9t;"6>%IX$II$"6^ I@P+I$IPD4f9IZI$IwV$IB$I$ML@ظIH4Y$I &"6^M?8$ $I44[`)S`"3\>c6>$fLji ƒ$I-X$I $"\tQ`<83q3 p2Q̕$iJP+I$IPAtp8<:3<3O̗\6{$IB$I$Me!ρdW2~哙+I: $I4ql53_ @f.c$ISU]D%I$I=<ۀ;I*gJ$I$IRY$I$I>P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$f;I$iPEL 2>TDJ9UČpiet}J$MtΨ$IҔ#bǪ{艛1Q]DcDl"毕Yc0> .ǍA$IZI$MUcx,#⊈UD|$"c$Ipj%I4pCD)I$iPF$Io*ء>_q[fMdWr]IB$Io"booGyywϲ2CA$i$IZf X^^ZثI$i9V$I/3F5KO澈SƯOQo3%"x2יýekolDl V>63uLڎ>*`;e(nkGwc^L>2sAy}?D`:Oyݘ? I4%Y$I 2\}rX 1cNkM "OQltWD+3Ohgw'u;K˛ĜTo աϖ"bS*M ee0jZx_f^Ѧw-M>ޤ:t}_IԖKH$Iu* [E6X]pviCL 8'"$Ij$I4"bu`ʥ`˂f<8l_EQN~DQ!R s]3+qv[`>Jcm3sC`m`J xo/,8xRfΡx_ -Q:h;nt pņt3)CD<8xB$Mij%I$3j?nmy~6Cfd̼b˸MwfWeE!e4?M) C-3?7dÙ9x>p>k1Vcpt9В@f<[Zo\씙?[˯͙yJl7I4,J$is*:xMDYg捍uZ>\պK#_^zkD=G{[ %vguo"y LS 2[͂2}c<{+'d[}oC#bfˁwf-ڿ{:$IMY$I ؗb ١>/ 8 E0\l<53on7`975:6;)GM$\.kR;jeqŕKt+09V=\UE$IP+I$?]2}f^P9﶐:j̤Q)&"> DA5*C{t~TgnED {nҕ*mg@V ]r>$IP+IApefx1"M=8="w7c+CIuG5fȡfWl3cq׷1nKG$IRkj%I42sAD ؋bolHu#s] iSͳXcij܃c$IRGj%I42шwfDe Toq*[y&VMڗUWbMX bND*7jg1{A|Q+ںr2 $Ic$I42jK_Ɵ/F^OaMooԤ1v]9*0+>޾ۺ_*K]tc$IRGj%I)֭:rh[] oo3\$!ۛ7;OV]`Dn,{ u :ʥs[J$5 $Iwߪ\duVmfSp]k3{nDѦ`>&17V[3b-^^ЈزU ~ƶ{:̪Û5yH$eV$Iv z5Un7{]D6"Z.Yϋb)& W\Ҥ?W8xhyZf|p^D>JZ7DƝ_[̬+I4LL$I*e-'#'lcD.f]/WW7Slе5-YOuV> |UD:xJW[<">t0ˆbePM"vbEe^RlC!1QEFB%"..=7V߱_$[j%IXY?jDč$@3k'P}7,;x}88Xؿ!??"17E^PCFQTBm9C E\$,J$i=Eٮ];#-SKӛ~+P ] bӁ_e} Xs'P>ݕbew3.W"v*}y2@Db+e| EQ KC4몈x:;`;:g-_Z?eZRRހ8P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$,J$I$IRY$I$I>P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$,J$I$IRY$I$I>P+I$"bՈXU"b݈'#bzDVkA*1{kFDkGČ1gZf% DĪK$  $I""v]""vaNG"⊈82"0+㿳~D/_Eĉ>"qP\DsUѴ7)_K"b `DDS;jD3"Ύe"baD*"^ߩhu^;">WQD8~K"\gF]VƟY^;8"~x\IQ3"/GR߃Fķ#i]jD="w~gEć"b.2")_ۥ}Wڱ'I[dfs$IRDĉ娹 IDAT/g$ 3rl8$3Ok1>cZ3C-gBxIn?v88X3s~>vNW8mp!̼E.Qख़yADL_ޟ-#۔Ԧe61DDm6aˀ/iY+{'mXbe7dc$IZy$I& 06(kP.U>:wUt E2Ie~O-PѤcJ??nZm lI~zn'_r5׾bXDS$ 0c1&qQ9q%OMgQ XI> g qӀUb;xN_=L11fJc5}}0E&ǁ_oJg4%K! 8^/4=kxrXkr}wnE1}(ZC9!fL6J6c[m~k+^ ,(׍{e:/Q+I4ޒ5^̢2+0&`̼IIMb?Ջ<3 48Xg4kf&@â6!]VDS|sf>,>3̣F_F1KQ&ru.Rqf~ 36w#C(W7&E3;[q`f^x13e%b3\ q9b!͖μ>&3mtf^?i^~ݫۛ>N>8t+VI$Y$ILX׵wV?u~u-}93iB5Ѹ! Wz=Ve=@(]~ZQf^*,^Rthi~Bc[}3s ZC06yfM[1U+Ee( ly~C߮v鷺w2sJS}Dy!̼Ucf> ql5{#i|>Rpnug*矈T7ͧ).Ogx$I LL$i0خ1"6dxåGDs(>Mg4yb(6t|}zM(C)kzuB ] @Dl fg];Uίblj9X yTcvM^wR|͠xڹrq˨a׍0qS[ĵs-bK"̡`҈]E߉0d.$I0j%IM7 |w%ƘMBm}Tmh32siDpz_iC[>%]+n̎nWU OuuƬ6qּ̻"xO ?q C57x]Xs$IDj%IgUX1LlVUڪKofQI4,J$ʅq7=lX7*?~S'@օ]ߨ>윈X+3v,̉Z"{kZĵu'3o'1 xCv][nf},V@/I8ݬ+%Ibj1bÈة]@DWfzc.nh~mgbG,-(3*X$IB$IZasѸhC1<l\'uG>XtrY ׆}vDTarco\1Z5F&K'V3O; o:7Èvjץ}uDx%ǐ$IZZI$]?:,זسMgFijY(Ƙ̼8oWi r"q#F-bZ_-Q3\8Cߌmkf\j\9{Dlx.ʥo7-KD="Y̼8r;8Y~O7w1$IPj%ITYz Eċ"bX+"E'Ӂ]:t ɟGg#b;F ޹Xz<.paDsD<1"֏WR"NC#Q #bψ2swW[Gķ"]DFQsvIfb$Ij)3/)?3`Ǡ )f~hy$تff ` 6 =W؛bf3(&B:4ؼ^^t)b.3[Nfk\i_+\w_)^3#g+9k/̻<1Sl545"vX"b!pEHV$nf#mn1ؼg6/ ni>nV;ۀ3s^{G#" wlwE>$iY$IRO*jjiUP+I$I$Igj%I$I$,J$I$IRY$I$I>$I40W3ז$IdbV$I=^<42_$Id$I$Igj%I$I$,J$I$IRY$I$I>P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$,J$I$IRY$I$I>P+I$I$I}fV$I$IlF$M ifz@5)Im 7#?0&H4-n/;2kj^%IB"6_Jc?efA.$M9 .N⭅ZIRW"ӁRgoF$B$I=8 8UfcձZIR[e8+IcV>zptfmh;s31IRK+`V$I5G?Q_m4Y$=NDYf?4&H4l lR+"dn&7$Q_8xn[\Rˬ-$IR+Uལf̼s,$io f.j, 4"[gvyM3kW^$3 $NY~2kvB$ >Ȭ-$IRW,JW;tx~fOLLTD=ҹHf־bV$I42kv !|uईF,J: ؿC"5g:#I$IȬ-Ϭ} C/#3[XQ?hf~ك$I$I2k:C\-JҀo |CE+{$I$IZf:9f j%i|ݦ}p@fޤ#I$IY[!*-J?bV(Һ$I$I#Tkv/Zy`F7gԫd$I$Ij2k )6ᄋM'#kU/XQp`f~֫|$I$I2k7G `ZIkӶh$I$i|KFg =P+I 6Ozf^#I$ITWW6!=P+Ia_q;J\$I$IӀߵ B$ ڴ4nsI$IM+#B$MyU(fԶrRr$I$i,iѶ<=KG/{kh{8h"k$i?>.>g<ܙY[:D$I2k"g/k?0B$M}i;#p2cʏ<شz>e$ Q1H$#wGc0$II.ΨAy3zfȾⷥoFow`QX$SӀ_ Yt,$iMB$ Mڴҳ,TD}s`?^ܷ*ɜEl0!b<$MGuGsgd ݩ<>Qh Y{dTIH4,vG#ÿ-~ Kgd.e>"/I9bv.tB6]gSE%+IXlw޿&-X_ {+Eu!p Xk5)IR+Wܺ!GhON6M7~/%ISAD;[[4~Z/$P[,N}˸K?^sEZI:q?-$Ic6m죰$t5S~3)Ob$Mb(IҸrF$I#QFHmog'`VQɡ |[}9^}Pӆ"ocz$+ $u)$"wQǿNO% D#JQAD ^x,* t RU !$c7aْ%d7y<0s̖$wN봾m͠|0!" N֗TJH*!"G@Bb!A)|1]N`o"B ϱ/iSm릩B!D!Z!"J/#f1.L!&ovmw[`R|,!"IV!pA.@OӥԁB4Y~ $(%X؂.B! !N({0Pj͠L]BK l#fn2VTm+"ۓ_fB!Jj;w#_M.L!c|TzN.I!B!L  ]eߓ'$ٷ B!j?zM>>ZB)$P+Bh ¼P"ⲏ$B[/w@mRu|!vIV!TKipqH!|6WOk󕊍ᒄBzB!P*.ôdW$BWҮ|8~@ soW&DSJ*E"@>"p86kjB$P+B. жa^!"#W7:(B!+}6!4T8" Pn*S)wj}BHV!Kvg/%0@gpT΢5'.<*_/M~+DX-eN k uS*Cr/sk(B֯p[TJ^KBxAB!iyJE^ZɋX"Ŷ8y1)R^qKd4]ke .q{^鸁I+jp%@oW%DSJE.iENU~PJZԅ !<&Z!R]&};g",Z[+P  !|Jb#5D{ӵ:w|^Ȇ~eZXbi=/%DfRJ~Rl;'~hmˇ%(K FccȂ@B\M@?iW;p>\ѝR2RΕT7U&80MwVD륉l6[:=W$oW%DPJbxZVXT]`,DŽ~BB!r@lF2/'sk߶`VGID|(|DF !rTNN|UNƉWILt^fJSVuxF^RV)4(XÀ)ӺT*vCr]Bd~:hO{r"fR;0=s']Bk)Jkz`-yCrՑ'/cԜ|k RlԫW]Ҿ}iʗ/H!YR!Dnt n=GX/]̿5f򊚌z`-[lu< !DPNBJņc@SZbX pWS}۷boz}@f*vZ*ɃVsDG !mg<#7slYo{n9<| Vi-ZqR+6]@#kf/m8 ˮZ_`+Z@[,ť@ :7Jp,uz+e?OZm5}ÝN]̀@) 8 hz2uD` W\ZZZ֎ ²9uNۜ'K9X>h+3zRqaɨBuM#;Gi?]VgOrJmuҬ!/kv_uooYb+cSTd;Hd뜳|hY[Z9u TAZ* oќIVJ-Fh`@+v'`R* <ur>H2UJmZZ_޶iڇRYK;9vR;WԔR5KڙJOqf_+`ـ.8(Nˁϵ֫=.0hrN)5`' IDATBӵ_L ɩynF m =57 ¯9x/#F"Oc^ɑ34rV(M56 w7)j%{e\iRj+S)m[Ko4΃`^)& iV+Z(Opأ<`~ORJ= l7SAZh9BR8 %pW)U5e+B+)[뎹#/q_S>^_ ջ}>CR0jTaz.RBw  aLWCq,hՉ좋Cn 47x)R80 nn (>r KhR,Jܮ#̼\Ta/ wX8*QXj &E)5KV99hTk7xˇ+?52#K~N*jz3?@B*=K6ΦzR;G%8X~ !%lYg fF~ߌ+rg"~Р͕(Pc ZԽ.Ptk@u9uCu5,ǧ=or+H DicEm]O` =(.jU`i"X$x+XFkk[`lL5)Ȁ5[ SYk_Qu5sQKR$M>[T s>,e#h+jhik aɰn|k1g/%6\khKM4wJ B*=&;jц_*_ 6t[r>ZBd&NlʤI>xznFVRKE`#bm)fdYaہZZ@ ,tٚ*@DmSzZZKG֣\no&,{lz5HkKkFk}zl~n73Zh,Jk=Ek}fZkWk8QNn `>ܫ\Vk}Pk=K`mVC-ֳՅZ_Z%s WeS4XZ/7oD>e:]?ٚjB:J`yK7h^ѕAoZvdGysOUj-!OO>Y;/߭2y7Sqwʄ?3}+ujEv&ke(a U|Wi]ubOjo&]Zc٨̶lCA,褵vl .h~6Сk^iOd0l,ujx,Av[3vTA,.wwZoPJ7BušC|?V-Я˕+(\8GB;i+ya/.]}^皆xV{bw.dϚ,!SS '?5?}DZOi,pmyS_gzcGgldQJ̥#>0g40Kf-s;zc62&Xlӕ9K= !ȍeM{b>z})~…퉌̰Bdk=zg躆Nj0`JGH/SD~CO/|mojOZ';X Z-n2q38 f;9K4XϺ;W"0S!S{Ñ0͵n- !ȍҷ/&>5jNS]U2K)1#Ûo֡W [*IZP"R1 8tJX6ֲ5ϓshypwз6/psnd1۬>\rֺf竟R5w6;ˈ/Ne~^=nَjBFijFYÄR0}zK7-|"L룝OwЗU8͵J/h"9砯lmڸWMmGHg<]{@ES1\/'t\hb_!MrodNRJeTܓS๳B([ ?.U(?\GB4 ?OD2m QHF]f\Ü mm\qAGe\w7gsadC7[n?ZuX>`JR2I8VBۤV""=8p0k4 [N^=G1^m0iEMF#)} 31఩;6N2(LGGrq\n>o_7]>Z$ZV@Q70 +Nn7gǒe_ Kv!Z!M%i#y͚Ъ"g=ძEq,=`DNe}/DvԮLfzc>NVJO5Ȭaυ[u% 0KJjԒfƗ% !m'է^g >ZBr Rq["! 18'AY0v Sncjr= ^#wǵnE O'RJ~0 ?Z/ .}fRJ>@!Z!Mz pXkײYBnڳWJ 4l/;plGk3Rh'J"@mSY+HzKS{Q-`cКvE`pHkg{,l93֐SHV!s VB5P˄"g3j/IWF\36!g\)kjti۔RERSV~KTJ`y|ldԋDS{:H_+v=^ljWJ <&Z!-j|ӵNBj*V4sD$c6x9!דoA!D4Xfk)¼=RhdHJ)u.iꞭvT5xX)U"a *ٴijߛDJ߄nt9'&⻀lKB!DaC}>ZB8ą9? %U9+ƚo`R>OΧ* Kvڪ]PJqT,A,*jR0z[)ȪVJ>Rr.Y3bw4Vk}zʓ9+^QJٖjB?w₱ArB8R| ?_Aw'XUB֧@馆VlTOTRR*0%p4g*r%ߔR]ShnCvWes6:W,a)_a{˲ Z^JNl/9IiQjk6պR^mj`Þ= QX)j :&;~B?vZ(ג!!)N~'55v`` .9HMMhh(JI6_Nd~CBB>7ƍխBLT Ne n4#>n{Ҿ!f=YR!zRc P\QiР۶mKo[ pE"̝;9spA:Ĺsrl-SNL>uU?̴iKѥk׮'O&+?kºu^GgKqeNRB>` ־<}l'(iI`es|1[ֺW7XOv < S1ZJ\M hlr&xFk=ٝL*p>ed:BFw@ ͥp]#ǒB!sBÇi׮=z`֬Ylڴ.Hk7ҿnS۬5s !~ecСpPD;5#F0 6Lwĉ Aڠ {1իGLL1]ۣMm `.]yŢS2:֭$JIU 57x,]Bko++ۅ%qz^Ro7SXZ0swPHTTK~ގ9kʔ)wj͛'ѿ""Z/>҇+B!Dn#Z!B!t]w!!!͛7DZ5 PɅka[B!r !B&sXb>ZlwݕBN7 }O.RF!YBB!m7oѣ>}$?ѣGIJJ󧦦#G8~#qGܼF޻pׯ_ϲ91ϯ-GΟ?Ç99k׈\xq4n|u;**>ZB!rLL!^9y$SLa۷/=@Jʕ۷/#***q~-?+V̙3K(A6mѣ;vj?/˗{n\B(Z(UTuִnݚʕ+{}2r1>CRSS)«Jpp0#Fp>|8?P={6/fʕ={p{LL mڴ[ntţ+XpaziӦtWnj3زe /_6ٽ{wLݞ'O4lo>;/WS}:ݺu9FtǙ6mӦM~L8Zju+WK/f/^ŋ}:ӧOnݺ|4hilG}Zӽ{wvA=ϧ~ʤIx5jAAwms k4۷o]]}ڣGk78tOLLdլ^wy_~#G Zt)C q}yM㉏g˖-|ᇄpJ.}W|a^~>N/vo'BMJ!#>>[M_xxXKNNfe0lƍ4mڔKf8իmۖ)S Һ:>/4i]6ׯRJ>On\i6oLf>wݺu4hyywxGzruQV-f͚v9+W0j(zIbbbg͚EΝ=L3.))~0t:{,{N?ʕu4lؐrʱm66l?h}RxqJ+3fϞ=,^8]Z5:uֹvkʕt.ZV-5jDʕ)W7vȑ#͛?̙3?0x`RRn]vmۖvZÇYx1Ν;}iĶmA$%Yy7d샫|0!~AkKVL#Z!BɓvGv ={`ȑ3$>7n][nL02ejY~g%%%ѻwoo&י8q_wɰ#G/v͙coq&MѣG9P;fBBB<Ϟ=$@tt43gΤEv w}3SSS4hvxnm{~ǎo f͚rm۶IO>G4m;ŋjΜ9 _@ӧӧ!H[xqƍG~^ʰaØ2eJz߬Yh׮s8ϤI e˖eʕ-[Xx1ӧOc*2KMo|I+j n!Bd>)} B曆rvAZ[Nz3rHCȑ#7o]V&Mضm}`ڴio͸5kƘ1c\r=qe86#)))7hK.1c Cɓ=*}G Ço>qaaamӬpi7on>,ZdZKC0D 9ָqc.wQ[R%C3g[..Oj^w_FqСګllٲ㞶WOJ-Z%Kz4_F ?K.ytҥKܹWBC#Gq8 o6:ubՆޜ (ۘU;c=>ZB!r2jU!~%@R<>9sՕǏ^x΃Ν'O}]C)3goPF ZnMӦMiܸ1l|'7n̂ (\m vs(s\O+V$444=رcTZ5}LRR[nuŋ\rŗvkt Pm(Ba&Z!BdȜM@-22ϟ77nƍ=3yꩧߘ5k_kپ};>AAA4i҄Ν;ӥKK0_&ޡC̙cW/7+9BE󜘘Hbb[͛ɓ}:çOaÆnsРA|gŗ̯T>L;9P[@Kz!Ξ=k-!!ĥJstܙ-[)JŊg d_|$-n@BW\ 7C˪YS:E!9>B!K$'w=< p{ <>;RRR0sL,X@ҥʕ+6l+V'p[m۶qaϓ._lh+ȟ?ɛ7]y]k|_r;=}iٲ%{o߾vi[Geĉoߞ*Ut;;`Aٲ.U5hnZۇ͇B!<'B!p)44eϟDڵkn 6۶mKʕ=sZ.]йsg6o… YhvBk ֚?yh"26?#F=q͛7gٲeԨQó;Ichk΄娞#23b.|9{p/S*hѢ|L0%KpB/_48a:t:uj/+(Q (roz^1UUܻ׵B!r !% 0\N~1Nzgںuk^z%RzQ^=yΝ;ǪUXl˖-|=w>(;vp;@XvmV\I֭9u`ۢE ~'֭+#qt{F`3s=gk5ߗHmI _rTx„ Y6"E߿?'%%m۶|r/_ڵkӦMYf?x; _>͕+*VÜ>]'"HI(T͓-^ KB!D6$Z!Bdx@7=Xb|%22=zУG֮][o]VuJ09t B!r'Q+B իW$fǎnmҤ?{<ߝҸqc~'ڵkg߰aTWlٲ}.]]v/T% zꆾ-[xO[iOK4vb>Z5'BB!wN```zԩS|Wn?a;K*E˖- }#F0lhklfVT)V^m,11xs}B gϞh>}vVX}q@@={h &L0_pѣvڜ^{駟ZB!jBh:t`7n&Nlڴׯ󄳵sYv]\9Γ&**UVQf$z!f͚9̛`m۶ͣ54k.qСn:ȑ# }]t1upǑ#G'WVr'Oޣ\rlݺcǎQtiz-Zkz)Cuxx]=ꜨFhOWcFFVZn:_ȑ#ٴiݺuaÆ-[۷aNjW۴e˖ 8Уr ?O-h޼9=קdɒDDDpeΝ;ǟYlk֬ɰٳg=z4o 6cǎԭ[իSpaBBBtNbL2M6+zGSiKdŊꤦZreomB6{:%".xB!B!ƌÁ7o^zӧy7ˆVj>k@m޼yY|9=ŋ?~<Ǐ8iӘ6mZz_@@Zk5v˜1cEɴu(PKҭ[7-[X>,ׯ_gS}e̙}IIIo.P 駟`xO:ň#1bD:t(Z̪UF޽y'Xpad^[i}ϗS 8C 1lj*2kݡfݺu[pǎy3u-hKԯ+{fW q/_!9>B!yq_ bنl=[iC%669)?ѣ)XW(Tmڴqx[XXcSSSn/_NvZ+yeѢEv5W_~e~mM:O>( #..#F.HB8q"&L  bvΞf͚|L  `ڵ4hs4lؐRJeXbY6((aÆ1;Vƒ} \ٲR嘡#Q7 BdkJTRR*F)/mQJS4wd !~,2qÞo8uBBB۷/>˖-H۶mygi߾=`)ЬY1ժN`` Fgĉl޼i[˗e˖mۖ;: N8>=pժU:uZBCCiܸ1?0s+YNC݀shh(sc߾} 5ktqVHH>,dɒ%=zcǎ`x;[+00c2h xbn+WLn>|8n7WL?~뜏uB6}~yRβBdJņζ?S)b{|xΞ=իW)PTP%Jx}ޛ7or .?~"""Zje<ʔ*/fԨr?Mds^@.ի2nYO{VFOK/ے+O)Uxϴփݜ, 0)>t:9tֺRK6誔 lZ hTgiݺL)5c5HkR0 (ЉZkT$I'7?;B!pc&a||2SddӍ|Qf;rB QP!U PBΙ7o^>,7*_<˗SD f',I)){_z7Tex*<~<3vؙIjBb9rG+B_Ɵ oF-@LLŊ]4<"j$/ZQԃZЉX.OsYzZXcꮴ HuGAZ|ٮ%j(< Ǧ/m.'a,w0Hk]Ycc=X'z|k; Zs , !~R?㣕![oC;*3j}wpkED̻g̓[7bӥeS4O7ډLͥ \1l~mى$smFJ)Ok /Z1"@B:`hϟG+BW JR|"DG'0V@XBኄ~Ɯ)Y( :_iW{𶩻kx˝ avT=RM3ϙiwB,nO٘jB?ץ-[Ns!D.4oCS AA)DE]0-]j0)Y0 hpcy^#Mڻq9v:@Zr{SkslJB!B ZÂnAB=lhW죕xdɳwh%B?`[8E)RغU%S/N'`CnkȦEk|m~15=j␪@M; ڕ=8l,ôp!B^:YDz3pEBܾW^yW^y9_fӆ-Q"4Z[%|~b" !r;UH#bX6,VkB7aX y7;!NM۴;) (cӾwq~s <]'@*%#=8v IV!WgߺjժxViJ!om>V*e҄ޤPk\/p !| 42+Rj j3 r}GZ=J-@kW0?'!J@m.#BlbT :n{>ZB{3}>C_7}ɓdhǟ/ࣕ!:Uku14h L)&+ 4 tsܥۜgmA R*#cn匇D2jBl?٘Gۛ6&.zU᪄·F@Jʭg6^&ܱ1B5`0b0`:=!! !`B0ӱic KluinjE,iUtig̙ٕ-={= jsruݒtTιl2p 076 ιOrluwKMij]@ w͏hw: Ƹ&"2v4Bҁ)i# ,/t,N9e0IFD:3+֍_IjZ#jԊH][ ~ ؤ+x.ksfvq٫!/nh9vy} GՉ!w)cs_&G""Q^^5L[7`@=l; j5VD{9wsn ލh;pM7D,5ϣl ^]x2F^!fM`"""m}7s_>5πt,^go [wmNȠv]Qn""9>Y;-1Q#|/mkB0u!rέM`u+;!lԊ1!ws}oMdb]/O/ [7rd5C$G;.==|$peu "s.3b1E:Wk朋6BǍ){sn+I6w}mQP+""# IDATR WDZj`JN>y [d""{XhfO35l+Z6'>}-" /'~øqm[upl)"Ҧkfl%~hmsZOll4fv3vM챈xmrU?B? |bfuIbf wC Z6.xÇ[dI1cƼki1i\}G\yTW'\ѦҊ$&zXgfEf6:'fv0z߱O@~H|mf=cnf6~gf: !BGˎƛ|ܧ ݩsxj`lfHijfgx#C"RGBƈH딞k_{l_uk'O{uL;kSon4O#jEDDځ Fȯ=@ po2vlo8`֩* <ߵӧkqn\4""㜻g #)\n=p7M,@Nv-BWjHSDF9vGw{Fo/9Vi ^z}vҶ(iG=3BQifs3fcؗ8y&LD^Iꩈ9 2yf!KGm7hP \PN^|s*/7BԀJHq} | <`f]j7Qos1vՐcNrB`snM@y4\ pBs?FxxR^@&Pw}:64pܴ=DAH;sܞK# N]ԩ+II1ƌىOĄ u.*4[9s/W^Y%18>"5;XeDpߵፄ~h-ZHVDDꟿ.{_ &p̜3q 0='ʥg,RR44^EE kזvm)k֔vm)%%߉ZGThCE*{ """MOAH;6jF^|` 7L:O9ظ˘;7""&%߿ΝZ0|(onZiz jEDD:Ç`-3{Yo^ލ9 !"r`ݪ1ëR6o o߂$DDDD3"""ȾֱuzG,ԅ=ot0еkQС5ddpƍ)lߝ۷0=JAH5Gg-|uWرUP\lTTuf'"FA^K;;:wvdgX"GwxBu:Ԋt`'0,](Ϊ@{%"z̛^RiEEƜ9WD`TVjSP+"""CAHQi73IRDDZ 72UDvvez$"""흂ZӦ,uPX̙I쑈H͝ʕ.$FDDD:"""ܐ^\~ԗay'rKRDDL[׿fz,JRDDD#PP+"""eo--5MˈH5}z?{,yAAЫs):u}W_ib1X/N3vȐt\HGVDDDn-lgj~]0",Mzz F64?%"""eUkGfZuUUc^oceQRA- +4HsQP+"""j&^fغbDz)+SX+"Su5kcLfNùjg)fQl@CDDDGAg1&~Ie=7o^秱~Uo5א{vDpVLeΜ4fJ3@t.[!K''""", jEDD$!'Oo} {.>Ku ^ȑ5[5imCDZPM ,^Cz(f{]Yć`}%O"""Ҳ$l>yI nt$ӦĶ=;;:u Щ8/ϑ"غ(.J((0*+cM^s ~eea}nKRODDD$YԊH3b(f =%FmWYiYcYdVD+;#3dբ%2VDDQP+"""b43X/21g[J5RSSH8p#sC"""CSy<`U5)|` /1};k%{"eeUү_mw-6Q\_++"""-KA4njX1#qyuյl y獤PQg/""Ȩ&+dwA6lBeeOye z犈HPP+""""5q{n_Qы+gժa'ԔUCWDDD_J; """)}zu~z""zE'}"""Ҟ)f3nRr3/fRX"" (-ܾ^͸QK#I"""lҫ9vԒuKJRoDDZ,.8ԊH:ut- $+Fk4 ;u?=ԊH:}ur `̝s{$":̝3@OݶqA$G"""L jEDDYegTs[jՊHVT˲e;ΨNRDDD$ԊH谹1lݜ93g軙H)fb;~/lݺu]IꑈH,Zԛ5k~[HGVDDDZ{-͞ wMRDDZކ ]]*N$b"""Zi1p**/;g̘1$JDelۖ{uU ә۲%wEYYFz%"|3xQ冭9mwIꕈ6 jEDD4c9h~غNL7wJRDD^AAo61Sf$W""")xa2x=Yt$JD,_ދޫџ^HkVDDD";i7<R5k(_|1*խ*/܅3w&OcF,&QމHkVDDDKN]::}}_^}u~e/v-XЯo^?nI蝈vitl)w5`#=2(ڊtfޅǨQ4hfI쬈Hyeݙ:g07йI蝈 jEDDUٽfξm\II&fΜ9ׯ~6ӻRSIꭈtt55)[וիjUw**ңؽ~61nHK2ιdG&"""j8d [R>2<ŋ{xqoRSSH^EdgW]INN%$7Q^AYYW&wanTWǮ9'|̵~z""U W` jEDDUJ'LJş_9VVMM Vy#"efVѶ"cSb%=5GwLGfHdf;os3"iUlo{#i-,9dGZiʸwziX^l:#lcH;("kN9Oɐ^H[ \?~ A-pXAm]'V j=t@Am;VDDDZA=x7x񛼿` ?˳S&"\n[9y:;tVDDDڄnjX1#q߅o>L;e0[ 9%"NgRvFm;(bȥL܈HQP+"""mk=xm5c}Q.eI蕈'+٩s i)+;5ιώ0@/9.N ?P[Mz] ι;Ϧffx}\ZO.xeι8fc7v?8n(u닗uUrmqmѾ5ة@o XiKt jEDD]IMqz80+Y܃1-p898I EtνhfɄg٬(y9p>:sYp#p^V.9W? 8X0w8zof) dmҩ{]:EYQ_h2Yfvsm)ltA|1{)'^p^@w-ιfv^ xDӁ U:G᜻1J~~BV.^Uy{<x碴jk OwmیV _Bk8环o0fL$CsRbCQ77.3 v kVfOچ S_ iދ6=O0af6x_~ <@s"1(i66<望؄8q3ɨ'8n990B o`ytM }omjV"j_Xܢ8m㽾Uf` D׮oE~7ot:W;݂ǖHOf$/?V{~h,#R-f}Y=!-ĩ mw)xm7Bq3,/Ϋ'_ fs~qL0/Gy_ŷwH3RP+""""""8^ ܄Y>^ 'ι%x{ !n և}XTO1zv9%q  ['xN4;k_O<khf>Y4%Bq3?QX"u{C0ٵ!٪ /1Nq6̢ԡfx=ފWw`_Ãh&8;&̢60^xYJ~X3ˊx 4z~O@/@AH~h3˜Yof2] L"8YW?Sp+r]3`fD've=CXffCxޗۑ D3{ꌆ4?fvqsP̎3!!Ȉ.KP[3?94=QΣM9ȱ( 8 /t,0f0U@9:p2hqps<@ι hn`+s!~Cp«#fffKEx%ogιǀ (4ef}afx_LpBPGTXDh&s R&f649dl  +^9>>/՞}x}fM15x%B/%зBC.i<1>3foQ2cK3QP+""""""95xMц7hQfs{j'Hzot*ι1Pc[]'LjιM! ^;#$#k_exKVxl1xa-rέNpf&^ {,ޤ_+>x5~|q' Ux`y`{y eKιfWsw"`rϘ #8gι>xצȟY9 o~9M쁉@z(i֥VDDQP+""A}AJ$Z$K7bitZN)g ioXMVC;rx&iD6UnKp.A=S%5rWەT8>br^q̘EDDD$HAH NkGd=l!M-mEL}?ҷVvp~/wgpa}IZSrEUj2aHAH;J~hEDDDZ-"""""5O S0_:b|.+@DDDDZvu\+?/i7svJOeۗ{u="""""ؒ a'퓝PH pӄ4sstKDDDD"$I#ځ=4*VDDD5RP+""""ҎvIp4,>v]SʂУS ɓvĖ jXUP-5d=:0d4h_*_bCq[kH32{}֊L/~ KУS %iCry% j(* Чk*2Oӽ), 0薛B^쌖:ТkR kX 5l+wBTAfigԊH4sa?}p<|i> jkVYʆ:Er㉝u9)cr6nʄ}aBm' J*\vYq{fq9L'+Z Q^?|rTu3_r>}O1?ف@s]Q T )k4{*IwobWٓO+ƤKtI%5QY{dr͸N+'׾,-ھ0g)[ybzI;s؜_} ͭLoVWEm5';Qۈ5 jEDDMZjE0Ĝ6s9j8Wkf/ěq)_#lVxnz;_/Enӻpc#'ezo~W?Q3 U^E([n 5꘱lऻ71saus?5y㺄 ^*~|}+_ݝCg}U4{Wyzf);g0uUX=ʚr4)'tcuvU7rŤug Ka? o탏tߴm" Km) 0iV)}R%򯋺ֲ#EDDZ331lqMJv$1aHDDDڍWp7 ic~]5uCAM kG oi*1K7VsB^Sy^wvm"'J-5uF^A=1s9fH^X#o5 ToH|zoj5jOj>\O҆rwn9\DD'p[;"ӈZi J}fɅrЮ ΢ZTYL|v8΍k:e%6"/#8zD&FfϠ v)9),X[_Wnm5M8WO wO;32Kfj毮%|iÿϗVr]X_Q9wS~ݓ]z+eN)o6^韟FlckcjKxkSU`b_yJG^V%7*wɠwT毮%i f/~眻'imιOkafםs&?mZi^yѡHO _C{1wOmom܊5[cgw#sZ4_:sN\ޝ ozsʩ7k i9jxڦ{;sμ7uH#>޷9lAfu=1fp͸Novɟ2=8uߦb4~W?\69;x|:0<5 Q9ol>\ȓ3J?|i%7O7."""Ү\qT^҆J1]Na'9vBH2!պ^Wn]!m4Gv|tCp=ᷕ_6ԫސChWv'%{zoevsG6TF?6ΑzʐQ z i#{p8CNݺ=H;~t˿/ɏJMߞܙ_^O/BDDDSP+"""Ff30$}KrS.J&?}[vv>Jcx=hƍ샂kY*lڍ1# o9sArT9SWtY9ҙpDi[7CzqyGɝ2zx*>""""Z)vGcs%,3͸輰u*znj5#l%1Zzޏa}=1j>X^.޾ 8+]-lks9h̰x׬…uĈxvcZCKȫw$m_G}盎0F^ߞҙkEf?=&:4%32f6Uzf6vSF6!fvsGcw1ͬa1AߢeY1,濎u4Tw̦ffp#z ̬['fKߖ>vkVDDDڍˎlg^ulkuKG] oCK˥Z8jfyE#E4]^V67/8i)ᑣ6el{F̅+`,*۽q@u}Ǻ"Mg5mr[`+fve'`#0X3;6~/:`-ff&tߟYx54+{3{~t3~?o_Dlhsfffיw` !Ӷlf^ӥf3{~XRYw ~1Oow3J^4q1 3۹}8\Gnϙ!q}R#o?̊"[lkf''z>O67"kN4Cfv3_dM5#(m٥f6Կn-{KYi21i7v۩a F6/dܨowf-|l-sT8i_T\WUZerU沦B%'~#6*pM9U*6m QVp׬"bnq Okp=g55,2QntIa_vf,+њ|ЗoTv?OFmH83xIg` x'>N$l;b4!`639wk8V&Bя2CjQH`ބJcb?r⴫54}p@ =Q@_ }}‘!k*{H3;97̆Exs3;9ICQN{F%ι7"Bk1~R`0p5^8ޮ)v1i BYR8 |nyYKy)tI!?/^?"9"iPT>:.y)I]Wpʽ?n)+!薛B~n rSH ҍ„ᦥ6%]qY،R5j@5Z*`s.HVj'Y\䜫s9hhBx^p?㍶~`f#XX!߷jQsl:?zg9b1b=+2}ވg#CZV38 %0nА6tl"ވxg'5"x6fv>^ގV7ˋ~7:5ُf]w].0<_mfWF_Zaƅg[TҦs^WЈ8#BCE*5odmsop%lE׍u}5G BG "A0!TՎ ~Rn >f4;i">8dh&֥t"MἐǿqF;!ŻH3QO-b=+1xL3J"= %CZnݯu}SޏX=|kGwKiP)[憿葵O&ѬQQiSn1;hp: 4!kBrι f6`:TMp;.ūEw{85Z8YOѧEι-y$&q5^X #'&8< m ^ПMz6 3K+0IxOD6/~[_^A_d_U tַ`f~FW!^m6OA U5E5xXoׄ(?g_>_ZVOs. %7a.)dUpΊ j< 4L?U s- IDATS/%؏iGĞy@N.l@P9ڊ jW6`J*K7V38{Gbq篩jԇ-"흙l NxAZ>iCKpr W<zF7U.O8fK W{&̦9>aM2՜BCʖ>vC-:*̬|xZo{t$tfv"BՆMԚYr?'X*$f1"zp #6H`A7c:Ya;VDDDmryUگVTդH3T7L\)у3ԯo$:fWV#N<>\@ ժu"jjVkwn[׺.u_{[Uj]ժ(.XTTP Hqf$$|ޯ׼3;<9gLyݻ/w}g('\3yqh!7:f;xU۾c*Ly&,M?Gv:WVYYjk>*Od,Y̓7q7D|7?&jdݟ]h@iIl-ZM Ew!z:Z#|s@LO8'69w>Keӷy߅* }Y.$.sJ8DaH^K@s(Ie[v6;lZvqG Tf, N_-(7lk\O[wizZ%iޕ*$I=Ƶ,('['SA^4G kQwV>Ve' w~tJ~0"VM~79:>o81mBFz>Vq><{Wp؄ay=&~h}|tJfֶMS*HՠطvӪ/\eVX#Uүq]\ \csQonS1BI$Jr`¹1ƫz]=h})z[]qN{r1PWsꍴ$i'!Dr4tK$mʹ$io`@BH]"p-I9$7J~ |RH$uoz&n:9w!3uTKkw\{nz9+o0^o_[ơ9éΚML;xuT낇`1=I&tzH. !.B9e-Gt}1x}_oΎO_N1>|LC*t8*1!#Gv ]P]6G'M۩U3Q+IzoܴsOUܯԯS=:8}I3k9Iw%y&;s.?[(6 IXqI$wl6h=ӄ<=Bbu1M?8 [z$kw50-WK!qQefg?DsYpTOgijmZtÆB5\Z^+; 21{e['=XQ&Wc3;ۥmz›N$iCuc6K6ꑚQ~T/|)lvuVa5G8fIΪ??}/Z@soy8ePɩ#\prVvn wVmq}<rݢ:jxK6jIRθ!)*xU fr޹XjnE}+N$3#6aNn5ۺQW/]ϙ!rӫ5Y]o=? _}/Zȯ+he37LY>.+h Un6u%Qxqٕ~ujƅn'%=RB6Ƹx(X1-MV澬_!l[uŨ:>N!uҲKM8Ӟ#Cߗ@==j%IRp>60cz>xBحw`zjzzchnE뢁'TrOoWmj|vP[#z`Y3^7׵ꗚ:E'qׇp؏oHv+yh߳V2:hZȬF^#9B+}ɶcb8=ׄLWahv] \Ǿ{$G(/?9}/\ȂM,o涩mjvo|M׏!mjN.'8~g/(N[eYK-m7'{Թ59$C?N 4h6^ !8}c!Ӏ{2t/[Ot]m}<1ƹm>BdGێ!~B$!8]@?BbgŹ;pA :-X&S!$7\o=~+6I=$Q[BxɵVg$|BFC_$yM͐i$$琴WXc|Eb$pHR6ߐzr?1Bx8=t+>dr:Pl:Bp];? fsl1ƺB8GpҬ~B_1n,0Ktv\z[Hcʙv鈍;;r!ǹGBQ՟EB?FEMl}<{<AzGvy73,I֎+Z9rI<mkHUw|{(gde#.o[s=luK6oq>xOot;0F[; .;܃W_|?? B$UלZM.$J$Cй! !BN|8 'R;۸K&IԦomn1ɴQ<BXBx&x$I6LZZ Tc!H$Nࣴg$eOEr3?ENDHK2u`jayaj«!$gA+Ӌ#?/rljCcz;!ҷ$ۑ|yJ?ΗH B!BXFR)~6a2{Y] MGI^!I ,x+~\<̣5,ZQ!'C !&9 I_Ǿ{ +j%IR2zr?{^\MWX*"?1c?X&砱%t3z:f؏+^s,O߷"Ӱ^o_N=o:j8uU]΍_ ֩yky~V ޮ1zq>}ԇ1t@77R?0.ד}s1}Z\U]ΟW&Uqëxez^m1yvkޜ?NޯӓT*Յevߡ7|oV7ϙ 嫛U]{]*Z%jnWvHUYA~e\y :fM]#4 .kj5[yYuTo[WϘN,ld@V^՗aYΞ;t@y6l`a}C{ۯg0JY}zvыoߛ#-)?1gHq^N2yO |^#IU@$P Lj3I jI-3mv]cl7c\B8r9^ARxI6c!M4.0y_"QEpD"!}IH3|17$y{f&yW/ӌFs{%I%sg?~$Hn[f{BQ'Ug$ Q]t/̊}! Hh3vw:i!IچPSMe8m,15;P_;y}ӹ1ɱ۞K*gKokRn>w"ImLD_$՝{&Z^Ϸr{Hr܇'|y=IK1ƅ1y~=t!i7{L !$_1vNoORIxy_ I1>qL_޶>s@.$޳b3cƐIhwۚjw[ZQ+Iz^QVd"Wg \[JYֽdS% !ί:P>JEo`Ri$I $I1M_i֢FNE$IRLJ$Ǹ[rfq"?%^7+ ?VwG$IR+$IRpyWܽ+^oX9ڋX76{=7=kv*I$mY&j%IcխhnESg9.Ӄ8؁9I$I[ZIRPBWc)ipRo6ؔs>w_.>q {ϾR $ieVTjVfZkRf[6oD}=ҟҟUk#yUԭh"6w`>./vًؒ+;'IR$̝yK3mT#^0 |lJ>ge%hUe/v4Nb++v$u;V'Iz։$LJJ" $oފZIVD$ĘjBңvŚ>wxf11Ir2Q+I*Efb!I_ޑk+2OŘZYx$ID$=Cz27몙1ohÑ$I[iZ-+IaVTrbLE̲U$<1НŊE|$ $6{n4S3$I1Q+I*USSgfEG$uZ}kIVD$$ŘZ9yaN!I%m$igVT6T:u|1$I]hf=<xHRv/;9I~׃JO$*IVD$dŘZ.|͓$IOO,6(b8$D$] <{oNEG$mnDl}$Iy3Q+I*i1jdϻw$i2 _.,b8$D$Ip Pœ݊$I2){1.R($D$ŘZ \YoW$Iےٕ۟FgW1I _$%~f]5޷_Ñ$Ioi1HHILJĘj,,1o(4P$IR+/u,1nx/1~TĐ$I,&j%Ij#k)@Ϗ[-nP$i8Obޙ_,bH$m6$#w3W} 7=G#$Ik?s<8!Ԛ"%If3Q+IRbLuf.bD$yK0k;djN1NÒ$K$)3Gb og;5z7*IJӳF_ٷFejc"%IR1Q+IR1y!μ$I%OΡ}gZc"%IR2Q+IR'bL1Y\5]tO]$Ic?óbL[$Ir&j%IS˪ti\}hlW$I]i8>5~1^)RX$m1U)IRbL  v}/y_i$I=J?k7}UGŘZR$Iڢ EŘB~m$C8OqpgpX'$˹pXo7cL]_$IVJ bL- e%ɟ~C$Iۊ/OM`_;|tҶ)/Ȕw1ۭbt6p5!$mb*/b[rmEgO] +TVZIST^B(8@e]VE*aG IR5$1;xYIZ$Ęnn?QcN(`4P]%IRB6}L1BQ706PqIDAT$i+fVnmj*iIڎJF$I$d3.1\Ԩ$IƘ$i+cj-V&I$I*!e@$I$IJZI$I$I*2$I$ITd&j%I$I$LJ$I$IR$I$I"3Q+I$I$IEfV$I$ID$I$I$ZI$I$I*2$I$ITd&j%I$I$LJ$I$IR$I$I"3Q+I=ۺzw[$I$*Ǻu&j%1X!x$I$I*ar[hVz9%!I$IN6Ǻ$I$I-WD$|w[$I$j^cjZIr>حۢ$I$tc]-ZIȱnB$IuBuD$s+1$I$IŘz cH_$I$i3P3c]`VJN($I$I*=cj6RqWuPnD$IB 9l{D$'E9_BM`$I$I*CrpZI*17pJ7#I$IRBh9ĉZI*Wr<$I$I=܏9֟`VJD%U9$I$mj |>ǐGcLݛZI*-?XpA7"I$IRB͇:vvLJR 1a? G$I$ہn15&j%x*1OvO8$I$mBc ک1-$i+B3"p S$I$! 18>[iE$SIC$I$IƄPspw+j%Ps:pSC.n1ռe$I$iB́y SrnD$jsscLݳC$I$iBx <284ڜ5Q+I-@ ",wĘ L$ID5#I GOƘZ>LJ`C>>u`2*0wI$I%! Fo;~|#mVB.\#ۑ$I$; w_sl!Bm$I$IS(􉅖JzSNf7I$I eMI҂B.9I$I6~cjlD$S! IRe;H$ITlKĘz+6hVTj&'o4[$I$L1եh$mcFoۧ*Zp$I$&mnoScL%wbKIENDB`./AppStream-0.4.0/docs/sources/images/pure_architecture.png0000664000175000017500000057044212226701276024100 0ustar matthiasmatthiasPNG  IHDR9BsBIT|d pHYsbbtEXtSoftwarewww.inkscape.org< IDATxwU8drd *pqQ^kXE].bp]" b"A@A`%Ha[#5]O=TUz^3U}Ͻ+v=HT`m``C`}`ֱ~ۿ+ -AI$Ilpp*s'I-,Ij"l x*0gI$ITbb4̑ 9I4`$ ]Ăv层H$I\K\9xH>&ih">l9t$I$I#f<:d$IRX|4 x°s$I$iޓ9a'"IgM@E, s$I$i-sa'"IcM@D,8$I$Izwd9s)I⛤h}OM58#6$I$I``wʖ [$Iӓ7IX-9=G%wbȕ'&I$IE,x =xyݍ'&I⛤FE,) pȟ$I$IC`]B9rK_$I}aMRc"v!dཙ#OV$I$M  > C#'+I4o oU xE$I$ISOĂ]oV 9xY'$I ;I3Ƈ^x;x7I$Il9s+G-IgID^oYǔ$I$I", |\fǔ$IR,I;+vi8,sJ$I#b]>9rI$IuY|T[ĂU_ti#?+I$I/DYI:Md7Xx$I$i|tqI4E9MR- uȋ@J$I$M{ N^ޥ2G4$IR&нvpr$I$i8yz"6KN$ 3$,b4%sd%I$I`c:4{6swJ$U7Iu| o&I$IRZݥٲ$i&' DN@:$I$T'P>_O$i &WoKwg,D2$I$Dfs$IBMRe Vٹ#PJ$I$h >A3G6$IR|ԋg2q ]C$I٢U)%I1w HVs2G.H&Y/"Xc3~DD|Xc2G$Mo#fM̾YJI$uaMR% ŷS$I-6H$I1NK-b2G_F)e'%U3Op6D$IEfDlD°$IRO}ސ]$M|TUYoY8D$IEDllw `c`|*"{ ̼K$̑ ~0A}_(%I4oڻϝ&I}{=mjf.~F?\\s,I$MiL\|xr$I&Bf8x%e۠4 l97nP.$i$U7I꓈xp,sMDĻ3;NHҴ6ߋg$|$ipIIU8MkDė1 oGĎNF$iwI4$U7IjPD\[v~冝$I 7IoX8,$iC2;N2"vv2$I3@>K&eсd!IXD,Pwm3uIH$>w.I`$I"bEt9N`!p/`X:V $I$I &IGp+-.~ܐAD l<xl`'\%A$I$g$I$" <g_̿L̼uk{/̒S5W~%"I$I$IRD\Ty v{p$쥸ӳ3;/~)7l*I$IOH$ǧ7׭ayd o2zf l|xt9H$I$M$Iom3|>'%3N(I$Io$I jkgay5*39I$I)$IRC"b>o+N3]2g_ ;$I$IY|$IjM/{'`d4a#I$I4L$I#|sf>DN7_v.$I$IbM$i"b9LoR|837|$I$I$IvP.SBf<cȩH$I$ 7II)ŷ^JiK(P8\$I$I$IXfyL)ywŰs$I$IN@$iՀ&{226a!I$I4$I; Xf " MD6:6V++w׵k3!=De5(3oWz̼a( K$I,eM$Xx$x[f>T> EĊ3ZS&uy3& "bM%)}Fm4$I$io$I]3Ihꈈ{hfܯ|Қup0?eF[Sj332sQ4""^|ǰ{)GĮ{8V)Ż "$Iۓ8K:E}5zHǐ$I4CX|$I5=$4%mG)vTU;p(` ,eK##קXnMҏ݁ÁJu?G׀wg}v{\tƐ$I4Cv$IMDfyIHGہ2[DC`"b,ey~~/x$I4kX|$IA_A?LDꇈ 8Xol 0" ;EN[S#1%I$iF&IԻj8D&f_l3|:~؉4%"O67#b!!I$IӞ7IfZ3\d>RS"b=gaL F>Nd"`JA~ްsiy9NB$IZ$i*zShQ5ԟ$I$$Iq54Ip:̦k(Ed_{I;L"u"b\4~3zh7yD#b% 5\u̼v,q+.m_Qu7I$I37I߮?5TSDb]]|83ϪAf^ \ RSu8 Wl{%ppZfefi,vJaj^.1|w6ƽ 3V/+I$Ij{I$UWwf΅f!MD3s:ei5yWk9ͩl?v̓{)uG2/ &/I$I7I|,"bནӆR%3̏Ϣ,ثec""ͬt2̦ScO$I7IJ"b`4TG zK?*3ߙliy1 5l6;̬v߯kLG$Ifш\cT*7;6W$I$U`M$oV"b+`{N#b|c?]c#bd"I$I3T*I4Y|twϢyPojeq}ʥW?v~]#f~YH$I cM$=n4 Y|̻h~ңy㰓7uB$Ifo$I,LYHc+2}ɤy}ɢ7 ;1^#fƳ$I$IR5֌s$ \DlcؕȥO~cEo,oՈ$I$$I26Ec Eo~;P|YH$I cM$oNfzۯߗ,zs˰cG"$I4X|$I⛦mk\x3gM[f&pa#I$II;Iin}&l\#fNDn&QEĊYy܄{8DcD$If7o$IU3nFٰFbjYE& slI$I$IR5֌a ,N5+y<$I$i@,I$US6,."b`a1 xK$I$IR5uo5N`vM$I4KX|$IZH[a LQ~$I$ @%I[|ئ,,I$I4D$IpomLD%I$I"o$IdfW wia' I$IlfM$khv$I$fs$I4RkD,E4ֈyXt"Sa' I$I,I$Uq+54:ŷ33$I$irII&&P1nYH$I4KY|$I(3Ϋ&s&pOuB$IY$IRo~X31L1d==mԏ\$I$I,I$nm`&&ۯeqX$IfX|$IAffM"M16$I$I7IޝY3nؼL-Ħ$I$i6&IԻՌDqFB$IY$IRnXd1\R#$I$I &IԣLo0i,WIDlՏd$I$IM,I$U kƾ7"h2]f> F˚Ev$I$IR 8fZ%#ƳzMB$I&$IR}GL"_"b2vF"b3[T#$I)$IRMysFIJ 4eY kĽD8M$IҴgM$ir>4]6TQ[l߯ʈX|4WG"$IT7IINwDM3f}8lعb_"E{ [H$IR]$I&[* #I 3t:+lgzHD׌t+GIJ/sQ-ԈyAYH$IRM$I>Gc.ppT."v.>OٷNSTkf{k/tDī)K~Xk)k+6$I$`M$Ax~GĔ)nEqpaj25× ՈoN=nd$I$o$I ̻nMX>{ZS7$I$$IRdeKrup8!"}[."v[S=5 橔uH'~k?wk :i5\ך1l1V$IPL%c$IfaD8hj&[mCtQ ljdԓ߉D7s)EC#dXֲe}'Sfif p7 Sf 0"oՙyn\$I$B$I(3ό)Ɩk״#ZzʞIQN6?@) :6v eYK IpPcD \\k18"vFyj̇"Xݓj>1_,I$I$IReb$`>eIq q]ܡEčM-CGQ k 3y0`a'"I$I$I|2]ʬNBf=> 2!,3oOPfjJ$IҴ1g H$yeV)evRQs a'!I$I&I4@y2mf(32wNFG({} i62!E$I&I4`YEY~aӰG̣2sRwhfxpװeBf"I$IX|$I̼93nv> >eC3NF;v. vIy o^I$IӔ7I!S-mE;e>yհd2 뇝O쑙;eNH3s2v>$I4o$IS@f-3 J!g-3̼| Yy=ppÐe+3a'e擁gw9%I$I$I{ !)N6̛(3̣snV@#fGfafYfXxpp#~$If$IZ.X~);(7?h?4nVH#Uzh~%Ҕ\Lk딈ؐR;xBbng?Sv IDAT{0x>cT-}X+2@Dlok+˷^_C]R$IRe$ILʌs"b%)Ǔ-('W0eB%9e ;dΡ2hX؍xX{CAYBϥC.W0$3?9!3i$I4P$I|2[-)3+yۃ~:n̿ ЌZ@D666<+R0}Si*$I$I$I *\:qƑ$I$i $I$I$IҬ`M$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!s$I4("s0mWݚWL~`_k݀ڮ031%I$I,I$i68w/m8h3:kW/;]~pYǔ$I$iqII"bcXaعI$I$Il7I^qݺ~ҴGOn3GڮӐґ$I$IS7I"b]`q~|4XѺlLBo376k?B)_fj ?P)ˇxom{uf>S^s.s4'9ʔ]`M}'dJ"bcpzpIfP1~sڔ[)3o>:~,3o9Vcu(mydǑ$I4X|kʉ%.+[*oETOD x+4~rGOc2V=ϵ973xO ,?/ZEsښ%39AsK;ޥWS Og'U=Ȉ%p,p|c/e7ZHy|, <x.m'Gekk"beg++ci > D'K[7PXܱK[ϕg@_vij$3/j9a?߂Gq*FrAm4/W=_̼Jl+%mW}33?^5~~Oi]ܰgDDEfi=ﭙZR^g6ɟ"g_Q39+WS^{A #b UDgQfA}@b:-)+=QUgUbXvk3=ڮp1n z|;3qZP^>?wOROFe)M+I$iz&IW璓/dU;ZrBKuj}}JQ湭oۡ*)EH,p@DeQx0Uh:xqcOԶ2nOno27]2+t/:`*NఈxKf[}Dg10"ugI#yR%{/~_Zg)mtK)+ߗ80"^kͮ*\UiVG=Əgk\n3K9uktW."v<6ٺ+"U:c׮׾'vkJ) By8 3snP^/W Y剃YaQ^'2=)+,?]0smkޟNy-YvW>Oyߪvnjp"S{GHlMy/< x5r/DƔv̫+%I$i q7IZ4=EX:.Rsy(ev^gQf>9SbLVfx=pAD6;Y8 oJ{1kc"5ƜxϘ E,}")ՔGJщk2 Qf|ڔ&tװWSNz/qv2d'Jm1k(6o];up%ؙ8۴-~'o]g MQogc5s?kEʲ+.2kk7%;N2󶦓j-}-FT<>y[o;R;ikpJDB]W(B!1ܺ\l繭1V?obcf^_gSf.3pdkԟPpf+^q[Q}b}f5Q^O5~fD5RBʲ~NyFw+ʗ__|$If/_ l:('onG 0Nvdc=#>H9vo}/17;L3rop[+NPN_ ?~9zxxxxxx߾iٔbKғ \rwe])kzuev~5xwPo<OVlqFϐxVf|/zIDl7A=췔Rn3ƋCf~%3]?pwOW0zb`<.3smʌ%ҹTqyQ3<33]}C׍e?Gsxl&359s;3dY[D.cWme5̏^/}1Fe9M3^Usӭî2<93<^~K2$3?ݥXz֮d[잙] YzOf3랣y[f~$3wGʌYgQ^ox۽#"V'8D[I$I37I~^q[EΠ,z6]EĶ >]-[c6r,})3'ZmxSN7ݙYi؄2;̿TK)KVK.`,kC>9{dS2s!pxkʿv\>u4N:._Re!zwj=SPf^Au3T7 ?3'k)ڽD"b#:r;$3'd֗*q}[:._GY:Ot>ME'de=g)3Rl%LyER\bFPf.qcǺ$I$M#e?v_}DWwm(3. ue(':M̼f~4?̟8';.5N0z}"e6t~Yj/Eē(K.0^(Ė4"6igax^K21BVߏC8u̼JVsWК)Ԅڏ3G=Ϛ\JKs5*_PhP?q^!G({U:[οi>P%Ȏzne"}m+OcqJƑ$Ig$izyо EŹ}"b-G,TqP~Rmɨa|'ϭ1 ^sXsv)Ugd=Di?\%5K[2_Wt\~mصX0:qK|gnDz)/2,eO&L/3obTUshuhG8 ,M(E=,bLYBrҢuރrY⡎^$Io4t~{YoKd/}hYʌn:޹BL=1[M1hۭf M5CMF k]D,ϋ#gˈ:"~~1zI'M{?Z~qy1\}F"e1r}moJdtV!Vsd,=#x3P#"Xv~:gW9@oD>y;suODNqzXO#e-{FzAW [$I4M$ISAD<ع'o|K/wթsAVkc㍧s `뎉EԟɴJD,c:O*"^طD,udvmWֱ(". 4c\; Fo.@1xՒ7EGۮ u<S?2.{| ]f?{; zE6\y ~٣S;""n~J)D$IfOH9̬:xl֬ftuXwgDcͳ]9س:^"bRa'wr_'N{*UDDWğb * vi EzޫRC -@(g;ݙ$ٙ|vvffΜz|KWfof 1܈ihƛ= p)&raN鮷ұULw#ڷl =u oXci:x.wl7 Чtp(R+eѽ1&g!nf=Qu`u%v0{үc*&"""""SDD&٘"%'*le }qҒy-F KzS:Y'AeӛTTRFON溟yzJ4NJ|w?.$[8T,[fw=)U׾Z'lӃ\"Ci#"HSd.`/`/3 714@S ת>̔LST8tG=,b+gCg'"""""S(DD& -Wv1 wS!}qz2l̕n o'ӓr枂yYqUѱ \-ooSwz 3[ c)=g\V^kA'ց>W$͠7xƁXp̪CODpGE%DDd1y_[+z& w*NK2z5_ w1_!xedG[q݉W" -im:NT;Ͳ D|2tAA=:Oy`1"+17;zLϓt 2`x*^:?{hdP~+[Xo@?""""""@7o/`xnu`U`^$̚n>6۴*i{Yէw|dOfo&}bJ"~B{ ie+.e.ܿ^~8w&p^VoHOn2{V\  iǪeReAۉ*ז!)9y+`-Z>Anmxzk7&keCoJeYx13."""""S8DD} w׹?= ػI'+YZ_8PI1ղ++=lT[BSaFm҈ ֯UhfB2]5{U2mA?zrҋdJiպ۝B=.)Хnu-x^8i $ۙdJwU2!ֵ(7= ح[ςW';wr'(&"24fuͦ]T1e%٬U:3_5<3_,3f~܋)oxR&- Rǒ*eyi)Jce(h3JE%5'޹BF1.Hz\V bw e0o%t/goGGvq= IDAT9zz2u3+U2{H;s=-/+{lk6'e&wG㸲GG%>^̪A{-=>^ȀRMDdhKd{Lo5Ygfִt-B:nxXn6[7p7wƛٗ:ٞ-jf2F*2NrcS}Llv+ٚw+UP2IOlڪ2l&mbf~hۘܐL/L3,t{emf-ٱ~ 0_niꄻ~l3jFmyOcG,3Ni/NߴWZJOf_1xٚU~ p]23[sSOl>3\"qӦ|3[efvL:̶f&c͙Ĺg6kl!3"7#ݲTtv|lfxۏߪb93v7ȹ [.7Knw>KO[WDDDDD&eKcnd~;q>of_2ROm"H3{ w kܼIw<(ߘ8) fuA|ďKo>!¹ DWd=C3د+7MburxN{~@}@?27kV3Ӊ&2Vn+jmefw'9(UJS؂M}X uf"@*1lD̕EKvyNif7 Gs4f@\٩ԏ4#pGcIy68z͹8wkם 5p\=}p#~&ז{,uMh,z?vDFS~Wf{kbĵ굯 G×#2eM?l#L>j"S|WϽMx(ے?gffyl_K\#\%ڵ?&*g af7c>EvG}uff~oF$e_I<T."2qN|[fw࿉71`P>r-"""""SDDp.1Vlz$Qff.!nKQ2?7lf7,Xd$c<= lOkL?+iz"[p.mIdlRȬ# ߉mffXl/4Q+(CvmKs^궥׾%O3YyIٷAʂL4<8ϻ$q~<l=gݟϮ}糽hCdjwhf9dV=-;ok~<ؙ7Yol}Rv=>qx66 @y>:m#1#u*c~""C- V"dv/*uf ۺ4,ٿ}/Sͼ@Z+hUz'+!qs61~?K57D JG~LgD Lɲxo;vZ"&x~ ۙ_#ڕs+2ZI|gU}LSSL=j~go/"cڂ>Ed*6pz+pD@DFYU]nn`emAD ׬c ݽEe>G/'lC۵q;\ OUN #o;XWDDDDD&S|f#ʰ6~/7ݽO"3RW 2N+ݔuˀl"l>"9Y:miecf'66 J3fl尮nq#G3[(5onO}* 'm,#fvX\%[_sjJ|,5;f Fӗ %n@%%YD)h,}O@M~F쏍bY!WWecEVA:f?/QovYD n+bĹr*pׂw'Ѧד_/ӿOq9?qlEd{HڽMs/'ˏFE)喻8ݯjD}ˮ}ǚ-Hq}]5/eq7&2&٩Ξ'ˁ ƳCD`W]$ĵެZYWO片#6/S؁lSY?Ӧ?*s1;ˍ߭GD_$I 3;ܘȜߎD1wjwOnoq`U387V'ΗgO$2 ~q[K; nW:7lzn7D΁zUoJgfvw?CMKoo4{b0 k_*&h*SμYd'LAow=vIf)nrZW,D)ϼ*҆,H1GIN-}5ʂ-Cv? @^^gv>.+ T@mL_DDDDDzCcHL%kWMMK}G JH?(&""-H3[:HfUloS32uf6V>>~RMDDڙ x̮7]1 rfvp\yڼ1l6c+^~Vt=fvmf34[̖01˽0pjo)""""""""2јo""RC3{xxp```bixX3{!ki]" ,<%I~R&Gke9Gwxz=DDDDDDDDD|#:EAm~7 X {}Ͳo?hZ`X`[w]:줈38ڔ:C`ew6!pTx<[aOJDDDDDDDDD&""^f,!0/0'00Ad?4ME$)G77NܸۛGc}4!TfRDDDDDDDD|al"Np''"""""""""TvRDDDDDDDDDDDDK|DDDDDDDDDDDDDD7.QMDDDDDDDDDDDDK|DDDDDDDDDDDDDD7.QMDDDDDDDDDDDDK|DDDDDDDDDDDDDdtuq#̶ͺݏlRYq]{տ?fOMdV(;3>}3ss+%MQ21R֏Ys `,p;p pG{dmEdxܵ$p-pi{""NesR?fgz9m *DD&wfv p:p^dlc(oM,l afǹ.e |0mf^ey.Nr+p(DE^}翀2)""""""""GcLF?g:˜ټfv)@jxkf6H 3B2<J[337_,v]J_o#EDDDDDDDd 7Rf_;؝ɟ- \,X$YL'U[޼yf6a_dҏ`,}6&M\Jd&O/Qf,DDDDDDDDdE` [&.2}\O{(Sl«i /7-)C`[qf6Q/A<!ʮجjV3/ i->ׁ߻&m V>KmцH;M0X> L>t{wGߣ%Fo23h ] /7['Wٕo{Gfv_U/# h =wۆ?A~EoVKOIM7vڞLYTvRDdp;c2oa* n l , B2p3piՌ#3[?7.w.jx\ YGc==UA|͉c<\\Os3e _{p?i[=tP2Vπom3;_o޷ ۏm&o}"t3Xof{Jwvf'ƜX 1Ĺwv7Z݁9q~DOy+*}ȵ0kne f6l,H\GGwo>m̐uu\05]e2M0y`5` 3 EZwJ;ef+"gw=Hg[ls`dnV/W Y  \L\;.%kfh-๬rz5\1!}8";<1 1^Vrˁ۰-ݓ~ x #+)\vUk(z-zw њg)ެߌ"}_t- 51a4ޱ (wK/j??x΃)E7>A[׾ǘA=vL9&?7bLvMWد'hNH[ced;すzq^`;^z饗^z*;)"2Q0Tv-I49r+cSv3۩E~x}vkwf UX4k4Nfe6F"#,ZƱӶ4f͟ڥm_Bdb7|~ߥF2PCf&GYU,Id;igf7)pwE3p/i0wwd6 [21O7 /p`_.3[~bf;t\ļde>K܌/kZ$kkiU$ɼ֙pUYmLuK,pCWk{߱Acf#i_Uep2pjk 7Sck73;J̾\F\(n֯z̆Y?9<p4pQSnٮUEDDDd줈aقyϴ[)+y.Qh)ݬcfy;7sFD}mēkkR Q- B̏< &J\lf;m:{DgoN d]9.'wYD38 7{E3Q2qt <l8_hq=M_ԗ<Ȕ}x.G\'-3+pm7m3GOK]s PQق^^V D:ݧ!b_H˗5V Hxb?rs&(7jծYehOק7="2}nfycSf=S^fdfv d*wqeDnD"%k٩y_$l\ƸDGFG|y_&j +DhKS$3[8=DʛmN3jIoc^${sjHdu >]`P$NFDDDDDPMDdQ2Zt!EOg,gw#ր޲a]'Ϟη5Yf,[ ogd13W=-pcݓ (o1OJo4vOc 'n^Q^a̝~n2h3ptz 3[-8m:R!%2l1!Ε㋎3p"qfrz+O7_'ʧo'3,p1;v?-۠- ˯Ido?N*X2eg5Z] Bb"Dl|@@ꯋע[_Y׉Gu0SH";fu"zh펡o?%qu<Q7sD3 '{Y;jZR>6Mt!3[8O|.sZ5`fx{ RzD{Zw?ESu.4mӱ)l!7J}E`gwŶo{̷eyjf]>ؾ]CVfv'}݈󣬽v"""""U ŧEDrmV=,〕Jd7V$[(!Gd,Ec`$/@?w'> o@Nl$ӧZ޲wR. ΗNeuO 27}wWTvߚ̞81فf6(Iro Xw/C쳝C}~t_@|?oSlԟc#ޗemOfIQ5w2}Rݘ?lۀHd˯IvϺciR^vuvw ׫~\[֟}{'[ZIpݿZt w7'oWbS9غ(]f.Zn}X(֣>pNfL&- emݜXqoGQ; XxMoY[U IDAT5N^Zfoٶ'yK3^6- e}z8LLW+MDDDDo""Sl/OZò'w۵? fpu{+'If%VkdFw~%1[|_ڵQf@ZzX7m =徴NDdBxxif?5~%=Zum-̗Jl/Yq.sVz.ȲrDJ3 Ooԗ{_+^?NͬUWX>̼ \^1wW~{~\ƠtYGȂijYf,0-#woYJ2;q ?jw"^تvr"C/פiIV`nPRYWev/{sѦgE5*0{qDDDDDo""f]kG3TcD}?Ee; b;i9SGDVBh`5 qh]_GRtF̆@@녢EcGQFVQkmYɆĘ="Jgfdhwwٕ`չYUÏ,Ne6~صo:ј\6-]O>pISMDd4pQ<׀eu>q1^u&nTZttK[>ݏ!Ι-Ulu/=1̬E>,s=2OGB2Qv1-VIǔ|ۏY$?TX9fvP@Mkf˚Ff3vοh<頩tMZB0ߪ&SYUk*.='GјN2=4>QTf&+܍ |i+l6Z0KnF?@f"""""bdn1>?K,ި|X?d,o!wysVs'wݗL/d%{;h+]g~z r5;+̟*,El4V4QQ_r,8WWf/l`u"%V8^v˺ܭˀ"IwgŌh =lQ]:1:\P5 ww3;{n>7Wl;LS:ɘ >k-(0+p^O0'r1eJ2m|27;wdf?%TY(]AxC1 $VDfvq^ݟ`]kA8*qͤ%L&""""J7ӫ4ka|pmWZz{nebfӔCP lxKotu2}O20`u8]Gμ; kEAQ]nh,@[Q_5rٌĘa6Hff]fi\7;OӝD1L'A3^ tmffJIKNi4H{'Iw~Lm7Ƕf2ܽ߭VUf6 !}`~lj֩zMNweOeur\W uK "ߒnVCj5#y Aa;-ef6윽0ߌ:x(S)pV*=7߉}lz3[p6ozJ!tNL&ߒE~[7jF1ElJfEUiVS3Teft^ZnAz~hS7UcR_* 쯢cE7_~,h̒R<ݐAh`{7|b׋Ϙ٭f֬lkM'Cee6IGn^l6FTTGgWўw 1g <>kfvj6ROdӁ<}׿Ѕz-i0o_':}P$-ʢNt\tfr?q DV`}5;>[r}s聒f62L@o|$jLu?"""""U)MDd WٖDЧVjb u[hLAn){s 暢ߴIDFB3v[Og777OcK}W9 몬T}ԗ.n-;f ߖ69:g08y[Z/t٢e$x(^'r4H5q^\Z,nd1%?;`p Dٶ5cSD&`(8r3i2`&t{2PߍYlW VNm{]y}gL*[,kf6m+pnVw1ĹT4|AjrY9^̦`2c Y\ ؕ>x?T""SS{y?6fҌEߥ`^T*, t+ݖIw?w&0eқ_Gfdhæ#f62}S}5&È^,hX/%/W&i̬gZp;D./ nLGNzmWwHs6w?7%JmKsڈS2r4Blg9ͬlE[ i`%w/q}EzMǒ[Vmf%<,:*ۮȈ*=v tZz2> !@7)\vd|DVUt|̬(K _MKA[iy7G=2x"0\JlY\UOX/i_Ҍ dzXi5>wߟ(ysjZ"3.^'0fӆ1.YUMstl8mY@b}bջ<[z)wŻؗr7ٝVo:V:;6@O4V`fdrm["yU?=.8 ]޷-\C}Ukنԏ:U DD~pE2;E79dzշ&0OoLd[ͬi[M*s[Ee\v;}}1*>2~ E_> ʂ}^Wuu*+8&]tJ}YX Lǔ5@ Yi&5tRlѭH[slmΪv|["@\c Di*$1Nni|hju`RYUOQ_z=ddkp|zL&˦O fzNu*̖qf˩ ojk/-~I'ӝI#Jvye&L:DYiGfV'}I0pZb#i P`i{e_9vdyX{f2}E:E}!}x'}}d2׬74הmlžBZtNJA}ٙ|-ll۬s[k-JzWoXtnll ˧Q7;Cjv~$NaDDDDD*QMDd*ӘvHRq&ǜ[_4-e'ߴ1d/+0-S3ƛrJǖcfW2eK*=:U.9Y˛46-pU͐4i);f5NeS^YOz[gP9ʮ=i1{T2,,sxdvkVE$Y);?b?zBP2VKn,hf&[K~LoofEepڞR+VeM<$*5lBw}2A,ynnLof^CDDDD DD.'sQ0[d/;٘OuVfvU}b{FV'ϣXz;3o/f ߸M2&ZAW~{XNs7e5ٲDɿ풷^*[~*=3p[I~3[̮!2QZp$-("Xz}/fv})ì:xSsh;fvT 7,r_X!1bD4c*1f]Yel3Jr̚~(|Cim]3kW0DJkҠЁfvDlAmk3۳f AeުTɼ=e?~{he36jZ.ڂ>gfge*Mʂҡf2e-}Leӱ~O>TbDƼGfPQf6mbf4˨]F奀 ,83'nofИ*iwb_CiOf-cfsX6 fv?1&]8x̮0d1df#lI3~<|`[?r94%ձfvZvl efW/pI6 ΃^f6I{`,pM2 Șd@>|YNӹiu`3/Kv~FԽ2#tC k;bnJ. ̞i{'PuOikڵE0f}Ggf0,_3[* $MkҼ5{fN]3%JΔ{c`l"3O[<4vnx̆VԏAăi݁3[)&_Φwh2QوJ'f}_`s~~;㕺",R!~lB>){RY 3M^B! O:̞"sHc>@՗JTZ2Da|8|Eg/7'̞!2YZsc$iqpb4p}mGU/}4Tgݽg̞ vfv^5(RLi˺ L3@XvEs_lseᾘY; ,m8;!mZ5ֲd-3{ M {s:p07tQwݨX<֚]מ'Mk?fGlo"V{Pd:"XrPqL.Eَuk׮  ѸO' @WSOgkI^o#41?Ӯw-{0]g 2؏49Ei?w癆{7[oeӵ~Tef:x/7DhyW/NFdJ9{cfV =}Nx<1CDDDD-eLed}n:[DFQ͡ԜDYuOj>"J'ŀ(=lI֖OxYߚu'˴U`!` "&0e`j*{z>Q? 7#wߗNOGDcNoI~JwCEs?q,ۈ@D;o_rR;uтDZ"4^vm_ Q_εf4Ql]",JB&o1˳ʶ%fcO.!oΌ,kZ{[8fV8v#Qpm#Ox{8Y]֦qO~B?+q<jAf[Qv!Nd 7 vtN#Edi MroW ĵsouI_ 8MطE=-kP?F"ı1DDDDD:d?vY'l .hwW"qmO<JPCwߋ(yŁ'}l&'@q3g2"/:8d[]7nDX37˖wk]M!9p.8)Mt'}%wo:ΞG"1%n0QqIwO@ꦝv)X"cqIwow/ Į@]Wq>CӘ&oο2%JnKqݔ? Joح󸈻C?m ˕^Zz 瀯٘q%V%>O8;DpL%6{"3,bߖ>7H\I,{cVnqvx{2ZwOt6Ed2gvZ3 23FdM $J 'dOW}R#nNgޟ( tDAnWSD&IvSxA5q6"2z&>ľ|+QssYo77Ϙ5f63,qBE#΍׈ӏMC쇅cvM$ndXdj}/GN6DF\uԉ 1CAD3Ϊ=to2DĵCToUenC7fHu&T>mM}}dg%\eA/ͲdяiUcs6z28?ǀ-J\k>.Xy~׶;xn}cVbfKAy׉|]2j읲T석LfpiB7iK7v7iI߸uA쒈LDz6' k^"U(&""2yPIT=nn1  Pkm`_!9D rU IDAT RwDDDDDRMDDdIZODDDDz GrODDDDDZf; """;̎ &GK5ck"""""(&""2rH, +ꮳj-I}bM$I$I$Io$I$I$IR|$I$I$I$I$I$I'$I$I$I>1&I$I$I$7I$I$I$O I$I$I$I}bM$I$I$I&{$ID̆G3sdG$I$I3$i%#b:"vDʓ=.Nndr#I$I$7I"bSHM<8]7RI$I$IZ|i$"AŁuU}Ѝ*UJ|ʸpW}?>ΕvKf>6>{U=SLJbye>r-t$I$I2&ISZ'cp,"2㴵*𞆢{3} 76`߫Vf1N[/l,ް{~D1̼q{=Xs/`jEߪNKhwcu EO5O(`?`Jై8&0gXx|` J q\.ZgOef25 e]ad敽>٧ccMD vXxozmz69߁*8}p5%ӸqO7˪sy\]f'oGy/ٗr̬v=,/<#/um,l(zxG'x XawF572O]i+92Oj_R۽(Uh(_h5s%H$I0yIZD̞C!=,r"&E'dCykhptJ`̼I5ݜV>Sڙyk6LCd>*s,&:L *gwk(43O?d;_O2B֍s3sq>%(4⥙ؚxnҦyg滺-9r=8mn۱4X13M9VnW\>f\#sY~T[_kulfFDa`^"0<1+Sg> M1"^ PtVfs(fnjm-OI[|6rfWH&"f |k*'f:rHÑ$I-h_E4mo_x6*幌x&"e#^^2*]d\eul7A.iw): Ar~5ށ^tisOk] ,wFwǁtx2K#mkN~txs彝SypQDqf`GiF"J*FgQRDYl?PR-E><=)3PR,/ LIaؘ(7k <83(7ÕU+T}LI9b#efݮ/QAYה0 x)ؠ@̢mtp*[^kh}J -(^y"`jZJrʹ=KD2vDs)Aދ)?+WcftĂ}$37zj[Xo>doVL|XnN4u{?eMƸT1vE&$IEi'%i {>pIDD+"b>|cS?3_$Vݙ|*Y=U[ ڟnؾ"3,VPf*eM5 &4ʬ //pu`f=(3E_.oP7坬f'2,F <+3?*'k7^_q>.4)ͩj{ dܣM#02mΕ1\90"+[7 U}mÈX 0~ɷ4l?F9kx(%%gY,N<>kxkM fIj|ofo%I$IZ| FIUvOD"bf㚪fVN/6k̼ztcGg J:kQ֌kWo.3IGy1%pMs[=y?0VCAmV>|}FY _d5ܪG׊RU0V+ޡˠPTSfוHΕ/d;9 }V2 xԶK'e̮[eVm'ek^;̇;_??I$I9$i̛)iW}nFĊv%ۈt֬W?_wQX0c<Ӄ31JFoVx>a{$e7=uշj[tW'L4>l+3άoެne?F5S_2ԭ@ z6i Ln?b.a̿t7C׉z9=&F}VgV>wvQ2uI$I5o4Md홹;%}qz<tP3T/uYvGj.m!VZZ2FgV'wDG3*Y+5'm9^Wu8vY; P9vxN|GCцtg]̰ 5 t^B5jG;J~Ff_I6bӈ& S?_5)I$Io4dO3󹔠Ɍqj#]mZV55Ӻ57^D,פN{ ON =Fꚰ*_좥_F'#?Wng3=cv/q5yZj.mTm3̚{=Wmw|}Զ_WvFtǧ*{UCQ8G\ɵFĻ#bH$IH[}IT'T7"b.V-pD%3bF?ah]30oXDDR.DSlsjm 0.QvܤΪt|ú#Vh^;G QzSD\G+L___lq_c}\Q۞ CwRˎ&[v(p[Dfփd;E\ybNϕG^kyADxRUp cTcV7ʺ7l |jtut%Ff=ɾ-ۀ"S2ވxVq*Xf;2xd%o:IHD@YpLj՗N2̈3?{nҩN̼V$Lc3"Wya#As;̼hw %q:K4l_Wig#DUы;#bu`7f6:pRDl]$I$igIIZdc5՛nm?#[jGZCIkeY|%ZUtM6|Jm h7iwJ̹|wfnO iΨʚYΕ=[?"♵:GԶk43eLwdiyLfn [.$I$IS7IZtgmQvs=RKyEfA4Qɸ]ml[۾.3բnֶZ;kfMs%3flJ#G~(3G<Ҥ~+m}kRd毀0v=rK$I4p$iK[ԊooQ #bjv`_?m%SO^t~ADZڴ٨ ꯧ0z3Mԫ+D*̩mPvzfa)̜|Vjm8I$I:$ijk'FOu<а,0&hNm{,3v׊;®]p:h QϨ75`J}߲MUAkPP"_DUEbl}ൽq^/$I$- IXDpJ]kV?3\+~[=Rg^D,+~s7E޽Ujͽi!"Vz;3̼k}:UnT+8TDp:>o}6=Yʜtk7l-eMDDO)Xcǿ~Ƽ^$I$IZX|o9qRD<'"ھGČ8rax_d 33#Ȉh6UDl_~{=S\w@Do\蓌 3~D I_KG![qOG#bmӵ3?}xa{xbYSjޑu-3rvu:z~ԊW4pMc"]+Ge[:9fN7l?x{N\v KR^gGt GU]߭OE9X"bsJ$I$IhIҔ vgD\\nMJ'P֟ڨI;WD % u1eܪM'/aA=ώeeJआ(IIw OJU'[{Q2Jciqe&޵k`C`+Y Xz)f+߀:/qlL0𱡍KD |?#٢ x3cSF˓OzV Y_+P'"kRj`e PΙF-\ٗr>͹% Εc]]fg{VE3]kqKJ E/ ,My|6<>;{5; ϮnwF?)SfSJI8ʺ$I$- I>]w7̼]̼0"kuu2jȗ)G jmP#6\T-G ,[|UyM"38imխWvI, e+Rͼ3='jqխ%-Ҕ}u̹w&%e)3nnJZ#b#`]Je)kCY6kdՁ(}?ek(럭UݖGn4DĺTkPmyd"b)@I լ"3wlvO-x2fx2^JmJ(I$ITo$I$I$IR|$I$I$I$I$I$I'$I$I$I>1&I$I$I$7I$I$I$O Im/6QH$IhkwI4$u6($I$IZf$i Im;QH$Ih[v%I|ԉv_$I$M7Io:7I$I&_$I I-m;M$IkwI4$um-bv e$$I$-$I Ij+s\q,l;H$I(ږ$i|ԩko($I$isw$iH I7&I$Is$Io:uFEd(#$I$iR}ެMv%IҐ|ԑYnhSo$I$_7T%I`MR7lB$IEK>K!2&RX1YC$I$IsmrR)n M c $I$-"}ξy]$M$u,s6x$I$IZUwhS$I" I֧m1{0#I$I¨\}|j)%IbMRW2g]ڦS0I$IVGQ>_s$IB I{m1{a F$IIy6R>K)e;0MՁ3#f/;I$Ip>GI\=sI4|ԫ%pRx$I$I֪'Q>O>rI4|ԓYw;I$I |ncrI4|4AD>xЃ$I$i>7|$IS7I=˜pp1M$I$IK7P>?~$I"3'{ Y@DUvONG=^$I$bRWuP}>欳;*I4Q|4a?/#fM ;@o$I.b:,.o$M$E欏wjW1"6$I$iڊ p]|-INJ*]y]vYV,  X*X33p%I$IٛK3g=2QI~3&tguq`onבH$I4Ex{+&{ $ IX x5~`Zٶ$I$ix[s&{ $ I4ilާI$I4> 9+'{0$i0 I껈>oYo$Ii陳4ك$IgMRD {KL 9߫$I$Iy,s#I ڒ&,"f/_6֩n#e$Iy&IԻ,4ڕ$I$I$i IID| 8x@]< }I$IEFydC$ifL$M/LDoM$I[2$icMR"bj}/I$IgϛH$ 7I8 xcs;+I$Ik?%I&iB"bE`H`>5|]ڒEΙydC$i:[ZyJ$ix +kCVx6~ (3벿́cP3r̛鯟"bZ\`̼w.\A'\Ly:Z5"~X+!3%IONI$M{TW" ń|/4 Al Ed1E]DlXOM>)3ڧ$#%X%fA>|>3ork'؁f'&p|"dJU s<|89" \P+~r?g4J ff=I0c u`J:Ñ =N-6EXD Iox4In}%`auOH vxcD:E |oPR~NV̖{- ,7{+/laՁG<IҢrr"b%INJItL9)i"bYZ!/ gUR58_r`m`c`?`_F\89"V0)i7h&৔7PfT=BI-%UV6^EIE7R{[8m lO n])ckif^.D[?ge=}$IDĖF$I0&W'P.~<}lO:b`Z>lf>8N#IV}oWdM= %>wdf_h֚eTyM 7"6KI8nx)ZuyqCAYĪ(߮x} kS..6khfΈ8Mq,$~o$igII]w6Kٙy[ݤlYLŁo26v}(<x/ňذñyfc.36.mSն?NY7QRdqh(U Ef-3jOJ{6V3%I$u%">G{w6gIICWC݇ w36Y_wPf~xSxxsgyw7ciUNכ폈5Kݟ vZf\P& 158$I'xVϖ$IZ|@D"b8<"~_n5 q}?("v&{\P:֬[S2V#}-ShI56bXV__+8fuo?2k̹aLs3o~"c\2vj'~6)u؃$-2ڥq@G!I4&"fPR_lۤʣcݙ6m}'vs3Ԉ \Ur#q[f>ɸ~苅e$ZHiMڻ?"Nޗ׏kg26EZ'NٰEH33󁉍PK06xh @Zޚ+ޑwMWPf7x36cYVvlEh[IٵMʦ}? O>^kd eG/=1H"o$ITcM}QfNv{G1q>زžz0nd͚iceԢ|cӇ5Zrx}f0N) .΂`Y7.Gs#תS&>JIھ]`|}034 "68lVm. A{I&;g{[fb,ŁÀO gh_ IzbFc<3)k $I0vRV}<5 C_dV(Z׳,Ո3՝lqfM}xj$OWZg֊;i/lV+>c-M:cAkۓ:uBD%Ij]@F!I4E8M52md6MWPM[iOnqm,H`}6Θ\x^6G |l6:x fp!;JJ)Aײ W"̼~&MDuk.p@pDpgf VJ@DVm/ީI}jW|Fj'ƮAK >,odtXpF}~fV{a72shkU W+{XK  A[d$Id3ZxA׀76Yq ฆ $Vf^:{DW}Af^Hw?ڨgssf]ثM)kSվ[gf[SBDdm|%i"bgYM.mR֓| " LJݮuFG"E}|&$"P0e[3!z8kg_hϵF~G$i0~PukMGU_Pf6z`41Z6gR҆v TLם4CwxI^=wնfVXZ̛}2x+e qcDGV)'C}ǙwpcU_`ڮ?tEʎ^&k{q,$IS7wz4D7|]ulʈ%)3oWˁC33;*Iꫣ{8>]x "=MAfe͎jm|ݻunOED6 c 3]ֈ vCYM}Wf>6%Ijt$/I4%|S?\i|2SjP}=3rf^\S+~f4a_ۀ}3>G~=uD<}mbMʖ`,͎̼>3CYt\x#׈xΠW"`[h?-"01| 7R[~<3=~%IJ|/"Vh_M$iz1~kQ7H?D;z8t.p@f֟[Ij؃AN\IYYm4;nh2< Xxm]qDpCk; 3.i( >k<>>%IK3$IҔcMuf1%5Ipc*c\]^8Ï 9IWL~o6ozT۞Gd5&56"33Ùwf Gy~<䰙A+"6vL9YsbmȈj\ Gf~ВWHSOJb=M{M&Y/I[P߭ff}=Ir"bhuf~mԃoGbݤ0{Z^cY-"f52&#bxFZ2[ ~of6 8N%{(iwж$I=NafOI$M:o/\v3T&peI݇6&|~^ |mmUsz5HrEw/U({IDZco"bczFı]4s3%6|~f$IC)3!깁2|ɆD&I+oĬ5sکX8X/5 "^܇c'w^mS-"֧֮O_5)ۆ)|'EfF, <8ؿV^0"^RJ4;UL <_8;D$I4&Mz=Zm]?} ؾn<ICmoN.^4^ؤu/j2Ušp56̤$iZ-آ>1"&?$IҔ7ibz1 H"a=:?3!I m\ˁ97"~PؠOy-oHD }04[sm~v+3QWԶ$I2U.P}6}JM[k(Cf$Izj^fij͘gԊ/X:x19m>IRDll&7dFf^9AEċIFfReVlR2z ]{hkz#OVI4DbK#Y?Ur~]m|$i!`IMնiF3GFD <Xaq|Yw eQn}43O$iЎm΂45֤$3\U+>:"vjvjŏS}\Z"96"b~¶Mns/mezzHi)IҠϴ2πږ$I*oG{Gm4Ԉxzck{MAǀLZ[ 6{Jme,Içy$ICaMƦA{kl\n`Z4 ?aYO)IS݁[fTDz8'3HÁU'cJ[87"鴝Xܭ2=<Ձ_FaL+G(k#n|3~/glm~с5OMI߀y^D>>$Ij/7Dr64N-"#S.PU_>TuFf=5=w;Of>H0\ lfCu|k3s?ʚhpQD|balD3;C2GGį"bK-EĖAo@,oqvD㦅_DGY|: 8v 8-3{Y2dzjKIK ŘxIIgM? _m/|tDM dIM Ɇ=ˁG#fqQ[3sv<.`Gq.B%Sk ""kݘ 쟙$i(2qvw|khF4pwîToK(n֦XIkjNyPD\@%,;ݭ;@D\Kw 匪h=̾&r]_kT_$iVJinDD/<k`f9$iafMS^fΫ&cerukJ>X+_ذV鬺Pf,<ʅћ:cB"b?&32$iaAZf>TO x=%6"gTN78ǁWEUת,CJ>%M̬,I&?{&YY&l~&0 fIJD*9At1"hV]kf%ꖂ Hp`ϸ(ItM TKMMUuUuU9}yTa\F&ǀ x&"^B1ŧha%`Oh4ρC2v |?]'d]II+%= ]iIt)GYb#욹88I(FXwNB.>7uPxwnz#3K)$NLI۪| "[řy)piD bZNGSLc=&1 p4OH*|8"}M45WҸ`KMUe;NsGLjpWwdo\[$5ҋ}D'뀝kJHRDEl=kYz†3s pvDlX^QݸH+1U 8xE#sxv£?(֊KoC1Zp_݈$it3Sn Eh_[3;wPF`$*IBƜ3ыVDF;yTFB{HuV2G2^\G$5WSLmت2sI3#bsr+p:Pthb-ݛ(mSs̺SmG{yvw4 s^f^/5ٷ^UU̬brdM+ >?ص2`zw۸$IcgMjCɷA;hԂZlrH4T"b9Fќ:IaSF[;׭*[|[ij= x[)#b6Śg/9[f^55Ţ̒8M$IFf28$I,\M1lAfF%Iɷ "tL$I$I|i[Ǻ$Mt~26ܦ3j%I$IʑoҀEQ:8 3orH4:50$I$IoEqV?,3f<48$I$Iz4  pT?13$i21&I$I0& @D:>8IҤcM$I$I=RE B`53t7*It.k{]O_l<XXxx=pyfW|+Uz,3ՔYX93kb(3k'5WSΞ23{NI$I4q|4`-vh(IZ$"bGx%4ވ88%3j{Pz)o:v=joa5ʣLD>WiFb "W23[=$IR7T>v$I!("AՅy[CɪH=KEĔ/ौl-8wUpZHUlDm\kˆ=_oq QekgkI$I7_"bFNWw3IZ~ȱu)peDz=njrtsoV\kҌꊈȽ)]NC$I$IҰw5pMqbf~!IdJmE:v4& 2s x>pfMU)FKճ``&3_fk|ǧkPu-yYGo{eźʲϑD6I$I4|zw10c$֒o=r2">Q֙yNf.>̃)g֥gվ l̯d-Fe棙y&9kՎfS/Mf.̧*&kxKB1|Cf^Up{fG̫ac %I$IxgMJC=u#\ݨ$I 0|d*eW/~SDptw#$Um"bFí|]WܝN];yεWyGro:۷S83CCN9ڿQ$I$IRߘ|:Pi̝lAV)%I حα"$t9K[ا18fe-V_Un޴zɾC$I$LI9إz 2.#IZO+#b^DX[ɷX3"> 8Q'e_>oWnP75Lqy,bGfT lD}5$I$I]eMjSDɲZ4̼!I ZeD ,)VwFĹ9pJ|f{K'."vN}uf^נM5ۻD5j7bV&~UhyKI$I^0&!"ayU7$[5ȳS6fe_25"b1%"1Bա'jr7GDԹΪqψdݻhEĻ\oZDۻڼN-Ӂ*I"bSXK$I$)I/"I?HI$I$71|:[Fҹ:zeCp sաK+Fop",;j{ ];nb̼V]Հ=9p^<5E%I$Ii'QD i6M[3sIw$vN=\ХsP$j[IU]x`/)Gs3gf\/)a;2ݕz\oIfl|bdﻒ$I$i`vi҈3;!3o$"F`13}݈VD@1Ul`E˔u[W8pGI؝gb͖[6Sg\|873*%V)n$))|ϮPfL`] 36-jծ_fE-IStiu$I'oRq$pBU^Wu9$IR"hz]/_v#I$IҜvRj "yCa&$i37x$I$IR+LIuDt9)3rH1̿׍_V,$I$ILI5"b60A$Ka'):dH$I$I2&U<`%3t7*IR tr>?3v0$I$ILIK;إz 2.#I̼ N9)I$I|*"H> .3orH;+z$I$I&$os:~Xf^x$I=sz$I$IR[LiҋpRf$I=׵X| =^$I$Im1I-"fYT8Iݘw4I$I$M8&4iE `aoޒK$>x$IïA%I$I|ӄGwPi̼IGr̼H$I$I& 8Ξ'g]I$I$I$MB&4Elb`V/nD$I$I$i6"РMٰzSo0l7;ԉE%^UCR< ~m⑤Im1p/p';+3K20i2[Dy2`.ŗzEe6Lظ\Yj(^oI=/QAqK!N&K87HIz2K7 8iBh-E\tfT5෣;ة_9~p.u):TOb`#4-H,(bT$I-2&I_(g}%A#M4}OEW #+0h[|VXq:8%?`DQ8}бHƫ[(f8k,=EԦ'3Kw 8i[-< 8$źmR]C1b+=4gQ, IE҃f<(o=$I$2K:iK-z/b 8xX(0si c;Oz!x xPY$8 $I=7A"g=MEbc.q14g of?3h4(FN> |)矔"'[K(y4+sMo'32KKzp !&pGUwVwPܣ]K$Ie9`Rt^߯$QޒŹNbx,==P% rkR|8Xu)֊\k 8pVf}";'~m'=;hJ2) {8F{ IDATףXwl1\7QKQ~!0xnU.af^&I$w"s`o,=ګؤɷ?S4v2rq%!VvWൕ:<7{iOp-p }6JQ^k)vVC"gZb|?U$IX"+9-T-07&M0]KUJ;۬z/EB!e孁(im~&ٯnEp,p`dE7vl6]YQo4D}6Y7Q vM @fD%I$iXD> |SPJs-"QkXnW *'{Xe E褞5EΡyo\qI}ZxwfE5|*:bF^Y?QI$IF݀ M]B1KS2iޓvģk}.xEhݺ*gSLm_,=$Mz))Q8b2|Q(vlRk{3KO'*I$I,!͖v9!ttBƭocPt1{;$u2Ag}j(F,\Dyp*pH ş\z$ը;^-T.~(ڤ$I!0ػI^j[DsA}IꢈKZ(~"aׁwP6d卽H(oD6V-D=#pm"_,_H$I_"ʫ[4(r+yfia߂ƙ)V(d EhM0,|[gU4t"OMI[]("+Sz`5cC D$IYz <РF45- p(E"Q~Q[f}ihD_ \k}xI6r4,*zBi>$I$i(^ƙ4>|(E҆=8<1tnBfuM-X'sJ:Q>8XIg2KW%(On^РȮ$Iq.|2O,x[Dy:M=C{]Mz* p1ybOe~ٟ2u{"D%IcQQ`5)vCf/w"g48|af~#I$i(VS2Kw7*iixx7IIff`o&V.(OTQ|扷%LIO*'^Ey5Y`b~"I$ib,=L} G7FME 6J,֝$2K [2 x":g2Gd׏`$2KMBzqR7 Y]?$I4p[cs4^4ME7csp~,]{b҇p*3qFfiIZF)?G"@$I$M,%F?ƃF}bh#lqB, (ُxdHV42Kرf}k$I$u O (JޱD_I݇9_%i"8x`\bćQE_K1n`SE |8ouADy3IZQyZX~бHR%p_fC'׈m |!IC-2#?^Ѡ5#i( \lޠ晥/(O~CI` Jz/p=0ASK!~#I҈~:Wd\4<_fALD3z8j㑆Yݑoix8ě(HD0E-'Ɖ7Ϛx4eQ>ƽ2W =^<($E߮kl<؈$ihM֯դ])Fl&?P!7^`-m*IQ^+| (+`M:1x9ඈ/"o?69nߢƁz#mR (IGN'`B#4ntf~#IYZQ>n"3_Tcvw5 IҤS/G[ii̙3Zٳg3XkXa}UA&x}CY`$M|i(fF^{ff֫2fCc-G?ZWǣ6lp (<Ρ,O㑆Uȷ78p7I'7S7JQh#8ěIg#kM?F57IRE7/=:39 kl NƩYkkhQrp%w3oޝ,^ԈWG8}D,t=p^"G|X쿻QH&+(:,x[eufGwmdM`ڴ`{ەWj|nDyG= 62|(/դ'3K {$ F#~11( lߤȑEȿzX:5'$iB(Ⱦ3w?xw=t#f̨d$S} |p; YDy>h$'T*zШk{$ TۯX`.?1tycYIt$"#ʧfݕߔW]DMl LTGMk#ʯPh~6kX~fɞ& ;r -c,4T2KnRd<%IꪈkFL N:qfL>4H뭷<睷#F5)F4$UI5kPIf~#{"qBcA45zralK2KK$ fyoI%%-+G7u[wpAI SҗB$5D  .*P=/23&X⹹=6ssp/srM+{k̓%#9.bFԢ4ML)'#b&;PM1=;ffQ.݌SnUy,3kmwP>e~˵LQ;SVa{_fc UE'1<;I4啁GN:vFIT +L+_8Z|M >6$M(l٤̸m^ :*ވ ~fGiS<7fD,~̳zje(سA=&7ybMq/"vVlyocY-V{,".Nh#HDyj{x~S*):bE38/= QXf(嵦oT$ F6z;Y$i[oym9YM GDO,<ؤl WYc\5#B`v[ 8(_Ax"bND\ 7_xqi.&ZM M]QYn܊"\u[7G1hMvbY="Ne{^̢X5} [;"KDl9V1xp*mm[D E#vwZ^RN %GW_}9m1$ijswM>;p$Q$ir>5z7zb)M{|nf 01Inmrٽt&}ZDL1EQL3;i'Y1AVb 0A%?S."zs(ujr{-4{."LE5GzOI $I)`~pcfϞ1h$I-;|vQnPHhɷ;Hl]o!u̕3s<37̑wNX_Fꅳ{ *Śo+g*Ess<͟frQ٪>@DGbC'Q2&)FFzJ'vc ؤ6gZqf@ٱX oRL)ZI45VlRPW9K` 3(NS"9']M5J4E`xӛ`DvL~ջ}DL[DMDv3|gf,3e楙|pLmY/Wwe 2Pfn уbmHD)lGVKg:,b;6cYeR%Gf*3˙ysf.yf~"3ZiQfjU)g?gkXO)j/33:g*/d)GERox`ƿ&LJ A{KdW҈rs$ȄJQl2&lKܼdՙ:S4k5'1b 5 Uf^F|k"-2" X;ZnKfT]ESW6Kվ-,hzWe;۩׆df~dy"\LLI&FT-߱V+W7A48b]Dd7ZY0_dFfxSYzbJzV(7Zj&T (Eڹ{kG95NpSHv)T;TŔJ\$*}nfv<5m)%tz\JW/|$MVWo|zqimVa=׬҈ʃG1AFE ,;烈 "f;SY3S-uxLVLf>^SfC 63Oi!5)q7f+Q ph1*"f{Pcn4isKO;03)E#>L2vU)~S(~/R"-vG5*ِ?u;-g*gV=7Y\ԝ@k,3}0ɷX`xFUgVsdX˻jQ0+Z`) lP~-R&FG?wp2X x q庳(<<#8כXm=};Žl-dSx/3h3)@%HM5(~?Q~fRn<63sn,=Q~egV(,YEqɷW $iUsF6r"& |V~^DzkZogy-K/V p&"e(FlLiqNGqDgh;y:"|"3[uYb˕}DӞsrD pf^:Q[=^SWV^d=^)c[RϏo<'lRw0YmxAc-%%< >9FoXڱyUEıM: Xfg۸u)u3(fٿWm2-{E,lEDN}gSLӪ}ODڝ$"bGڪ]OQܓ7b4i"!٬y]amj1F:f;Zϧ}OUE)uƇs(^#U(+U;cP1JClTE'?T=n,Q^{ӧ7k&$ l-L ,{S[mƲ#PN/5T5j J(FAL)l>M+=Aqm WgfH cX8xSD93/iZ5= 7F[\efހ=7.&(EP҈xy;SdF*Zp8 3€50"EݙF PZg )ic]{U{Y ծ҂F=Tkޗ"b{<* AD|xwS\F+(k͒YS2&zV&^E-7p(qV6"NtiD8Gd_lLi/Rݓ4?StܩѨS嫁ˁ?,=&PaZh IV/~/ODyzfɥ>B1O=f31zeG\I6TD,\βɞ*c>˲ S:Vp%o ~7LJ*#>M۽[\oiZu~x[ z/E9 !r#ڕ箁OH{N-V[Hs!z0m""U|ƟkMnDיe{#h M{c { 7z!_R#}03q,VY˲hrum0d'5} wTPp Cbb'~ߚk8q4:tOrINJBo`HWW"3wH\Td0 4v IDAT͚%3`qG=`z `8mߨ.V[`S "rz|(s#Y@XV??Hwt,4԰=tVJ}h4uGh:뇴7|;/B h}" PDZO995b}$"3Ћ˖hTK{R}-ktkDR*+IA8QDƓl̂'1"r10- NDzN6bl mD"2ǻuF qw+fp 9HJ^wt-UK䢋Pr!*W.HʅX  xJCzaoROzk mѴ4RJ(9 fQfYz~VB]E[cw"2q*u`Y~6jAbRtƺGD^D .jJ5Q>H/sBR" ݝ`Oy+Z]9{Xn%ݳ:󜬍X"rʏ˜,sJzT"ots}u{WEº.D1zh) J){7c[^w>^,E4p#2v'YO-X @Y:C#"h U"+_>+,IF%hԨIImCn#OJBTRЯ_d=nU^;")&Dt͜e 'Oԩyg6 Ε3>^(^<w`Fr߬Dhm@GDD7vXzxVQիf{ܵYsCIEDn5bhD]:.zѺO)znec锩LA#"SD:43(<TjܑX#uݔRΎb5Jqn=eT,(-"!ˇdEd / Gǣ| =?DE/kSsGOr蕣y?|Tƻ/{o]$W5K|+_xTpV!mm=d|<@Nm̙Mׯ67ToCQp7OkWW0}zx*˻MF{X)r%(HN`LNSN駟rzHC^zٞϩSRlzH CuRR*`ciDxBQJ-> c;ocu MʺY|~HG  Q~#]G]_(+B/TnX:6$`ܝ!PJ棼Ts-iH/UJyťZ]o0yx}&~αujRǔRі^7sdkAd%GgQ$g#s ezi"u%c+N 97knADj-S'"[1dKq 4v' |E0nשּׁp֦ۻ2> (-xS*Ddn%J5Jћ}Nȕu~͠@FFޱӛ+;2w}2ڧTIc g3bD}5Kv[7 9\zi1÷^ɍ7ݹ.HJ]F|3s2bĈ1iҤe8u# HĊeVu%HnD<& Vc;Ɲ b"R mYX)p78)HDPn>דPoGkc=__HED~6@?}n{m8Ѯ%j aV" n\ gM "'Ʊx"7 ,+1>#x>'_.9 D$%csK'/]r`8˨_(&4dƌ] km{Y〧:")w)@Ό2G`0 g qqfb7r\v JTԇJvhWLK]+ɑcH]`7WXkKs GNbRjRjR*`Kg-+Yum, fn@ gN \1~1KPJPJVJt)tr )OJіo#*pO&=tؑ~>´eiFK f }:gwgOm!I)L!.=1}zSn5`8Kh()&C*3;R!Yq@ŝ.'? lȻ`rDRjC6-̙Mԩ2 MCn >^>)wqt`H904`0 C. Z`rKsѲWLùh%mW,'NC1k{PJDCqr&oŭN, ~~%UlX5nY9_)B[^d5J@/Snﻜy7Dt_f?8a⛈DЏV wkyCHʍ<{5X56 YDq_޽k:-ZKߋt̡ `0r ƪ$Vgc>glPH)]e((q f9`Ϧs3!Rꨈ,.ǔRbŭ]_\K.G|"R}|Lb2(bHc/!e>SJv*vWc0 ^yyܾ FZ]}}Uy")Tgc}piRSS9qE!11|!Cɒ%IHpۇ[?Ν;)\0Efd_k֓?;v,xl{SNsN)BB9!pm)\G%55D-ms!@t)7ОPJ97 Y(c!7C.ߜjHRḵ!Y׹z{п3JnH>rRϑު:1v0p~ ~ԑ>B%T|+ Xuh7!y4] Q(+\kJ#" ~ T|{QmWBҗ ")qH|v}4H`M\yeI>r:v\ĺu\O5ER*9 9z(c֬Y,_۷sNNJAhРW^y%۷X1sҥK:uj0]vmڵkhc,\~(QkS~}޽~;.R]v ΝɓIMMO@ӦM[|}X`>SOξ}iaދ-ʥ^ʭ5\C|||Vĉ̟?Yf}vvɓi^G+;HNNҢf޽}mׯ_O?4s=wAfϞ͏?ȪUؾ};>>11 rWs뭷fhya fW7|6R曶̿ﰲNb^x!5k駟2m4m6ŋaÆtԉu `+Z(͛7SNT3R?m/Rc;,#9؅7wcRꔈɾ,/4)NL 1[(O߬#]|;ҿ8wEL7Z)}YD&ffS%;ҥK0k׮e̘1t˖-i׮ׯk׮\ҵݻ8q"~)wy'z`AR8WlYvyg{G+`w^Zg۷}Jӧ3}t.b Frlݺ?̙3ÇG-{qϟyС={*9A(Osw&,X&qAfΜ̙3y޽;w}w:`-Z!C9=1rH L=}t5|ޛoi#ٳ'u]ww^vܹs]ݷo'O{殻 $@zy@)qəm34t7"vlD)u ֑Yr;HF%=gLGxE`ݴpdGyZk_K`. p) )> Mg,]U^X)"-cV9ɥ,C"xV *PJnW-;OVJߠ֚9H8bo9Nbbyb}Tkc̜93]ɑ#G6l]tYeմi&R &бcG;<ȭQxs2w\.m>i(9Yh[زe }›Ǐ{Ce^dK/+9ٻw/{o߾Y42MN41Nk׮ݻ7ݺ .dPO.]ШQ#_c֭od„ k_q뭷FB9q{fʔ)g8Y6qhN cEYv pk,Do "wa)(xMk03n\""O(gA_J[Yo;ۄ2[GD =]NEz6vG!<A`lN뜲"g7J!y]DdRjD0z3 Tm@퐼Dd/#󞈴>^p9xЯKIl9Ų(㵌FH8REd$=$Z1`__D>uA_")Jp rd{-K/„ 1 qq3TlkH2:˩kɓ.uRZ5/NBB۷ogӦMX~?m4Jn_ssv~ʔ)CӦM_>UTaժU,Zݻw͛7={o^`Æ vIxUWqSNl¢E3g6m ٺu+<SLrJ)q-[f/UT\p^ŋ]fݻ'x"EDh9}iРգF(Q k.6mʕ+omb9s۷/kE KLMMeҤIsIIIzkyF=@FS\pŊ#_|lݺM6h"fϞmRZ,֊^of׮]vO;Dw^uf5K.m?~6lHڵ^:۷ogٲe6>E4hЀ.]{ZjQB֮]uRۗ&MkR7N[k>݀aK -!K5"Rj׊@>qjRjK"տEWZu~QJ-P D$U)5O["R =i psfzxCDO)y;Xggp F se ?/yJ)8HَRꄈ ǾP|QJT@D:nRjjS-7rوRj =6re8`=專TJ^ڲt!ڭ-QA[=2RG>`{RjvW^Y_i7FXۜ'Vξqs 7+ެ^O?FI۶m}~5k% 2bMt߰aC^o΃>Ț5kkZhANg.پ};(WGs۶m9z(O>$?oݺu :{g˄ 3ǾS~}}]O ԰aCv#vq%/V={=˖-oeʔ Kzxi֬Y… ߿?K, ߟ-Z[蕤$ g̘Qx]<6 ˒%K2tP9P4hUV7ޠFae,X@.]lq܆ BÆ Yb7pwFcǎ_~Ao7nݺ!wb'"Nj^V`dVBD/"I" z1@)k(݁E;WD/"?G,x+$/"c興H""MsDn_'\E$ND[F-RVʡEm"2ED:HHE<9N+gE5ItWǩuh҈XwEi""ELQڭًRv|X*"ELxMK9f1?Z[`H q !"E! ,!yhטDskN 9cusJj"ruGDnieΨZn]QJmEߏ 05߭9"*'"O`#RcZ*7фr9XD,#""UDiYl @$!n+T(Ȱau7ʛ`pw4lh[/LI9?iҤ | ~'ի;P^`R*bLhkD IDAT>&RL>c[2_ժU" ୷KcƌYŚ#G0W]ucǎ(%''3a7_:袋{*VoA&=ogҤIlғ%b 3f ˗=z'f0iܸ1?nꫯDGfƌ( dQvN:EÆ 2eZuZ+o1Ю3z뭈}g/|ՐQJŊ!2yoUme˖`d2TJuʐ.q'ONf͂״iӧO:5zɗϹNѢE2d-ZرӧsGgϞ*U||<}aS}i>cy-rJ9p@0G>}(P z|Ԃ ꫯruq䈿0F\\C Yf:C?:uH?)bGBίSpa ̛6m;vҥ kMɓ'ڵ+_|EPl^d ^NN{Noy/_͛ӬR+W'pKtЁ> hٷi&vܙߖc<#t9LzHp!h$g2ː"#Bԉ>RfumTJU?EDj?=J?OjA7M|;@b~b@w(/R[DڕMSJJ"r ڜ2*ȿ7G($[Yqf tSJeV.(HSt сʣhZ豯9"/kXRUhR8mhQ;ӑ2GD.C[q)rv/sc=uFSJX]Rb,fhaʋ/yǟ>_n)p˖-<31Э[7[ f}c֭U+-@^{-G?ϟ?B4ʗ/O5ϴ˗`2K[o;"mEw}FWaHv7RWY a7 [D&/gFBtE9)k3pьQD dm|}7h&:siJgs޶}]oB5n'-7t?XAUx _h~l3.KX]W߁>y8RǔRI1iæSF)u KV`:grw:qUNE o!} A[vS]mWJG2#eR-ڝ嗄i;"o(_xvf`hY(z=X|0hj)D[ B[ua1*G'NA)VG_#D$-Bh\sIܥV¼~ gNejF>ZٽowW -ZجRSSٸq>p)-Zd{|6YM,v:ǏgɽtRT)l?0zhz/^8z,y.&|_uU;Tu [i׬Ps.U։H{]A{YC}p@o)"0#"""zMf"o&A0+C4/7?F͢oeA%KkZ/yC}1txVy YYj@DcAA[C[ˀEt R1\4@^fJ4; hC)u g}ЦIhhg  X:V_MVQ@"zAt-zH8'8fxc-~nXqlF \R9#][{;دgW|yt-zrӁoR}mC8yšLKHknȚkZ.=@mfx~ZHpp o :7|Aϱs^]^Zs$h& Z~r=kUV]Qk{?:3,'iF/'H>F#ɬqIL܄Z1+DקioY TJf'w]DRbiٲ =3GKUx/|Tg. PJ~z֬Yƍ9x YxسgY:׷˦MXыp(=+FJXn]0oɒ%TTW;z0uFݺuύ7zj6l'NNb͚5^Cq!}f |UWѱcGFk'"k.]:S}UPsYg_$%%E(~^?<#[ AC c9O)54V@oHvzL;S("^S+i *GR "_*jd̂4>g&M6Xs[9=dӬ#+Ykl; %1l4YD,nmJ ͭV3|8!k*+[84 PuU}ѻг6P9Hjj*F۶e޽Z$%%'%"EPLe[ٲe}PzueKի9|[H(LDN9ȑ#={cǎѭ[7N;֟]-"qRJ ְ\()bUJJM).aZHR'Vy .U@ǻ#lmVPO(&zJHs>~]|c7`0 p#Rx NLC.Usn@!r3f&6l8ȺB$RDg̬Yl^xM6e;vD;v[lӶo[|[~}5iWN}ΝQ6tң\9͛7۬ɢgRRR| F͌3鸸8^{5J,{l#G֭/+F!8j* eC$C%pu"-Ar Բ_ENF:~q)Sܑޓ~9 nYFV83ml7`0 p" s"3m45jn;6,ΥֆԊT?ȑ#Mo>y':J)oJHH[nСC=6Ǐg;w^i۶M;|g^nrӧ{7~xVoQti (L9rėWѢE)SL0}1fϞA8x('}w<}YO,Y Aly=CϟaÆɕ+Wҿ `IRەR/M]!EX(B\Hcv\8TfͭBl 22N!gޣ `0 Ùǭ82{M=zԘy阶|8M4ԩS 4QF >> /~-7dH…=9ԅc^/"Lݿ?={,,|rkg/28@n8yd0aÆ<TB߾}ѣG0o4nܘ-ZdxCNZ!"7.AG| -Jح^~P^]I&HQ?n\8Mݬ2җ߱Fívh}6o1o`0 lChmrΝL?98Cne2cǂB")+(>xGƏϞ=;؉'h߾=wy'm۶RJ˗+Wl2L’%Kț7/͛7gڴi>_6ml۴iӘ;w.uԡta)_|ELw҅9hsN:sWSR%?YlǏ^RJQR%ϟkW^{XX1ei6m_lU{9."?,(0GH"X)Kj@hJ)-3;܄&+FV$nf1X!㌊ `0 YHJyY ]F"jy۱~P^Lϛ7o\r&6,XWe0Pp7OovGK7o9)_ʈ#l5a|8}fqƅ ,^8tڕ'~ 3@+UoBM/̚aE<=89΍.e69DR_L.ZF)Dd3PU">bk3[ `0 Цg6qĨ*Ud^zLmr@ ].vň#8~xyRX1 u]Dze2>|8>,o:u0|pʕػ|?͛ӼETR #uڵkλݓCҰaC_@-x:t(GqUP!C6mxw}/_>Ǝ˻|gzt֍2~xOn˕+k%\۟y'$$0|pڵkѣ:Axb>^!QJɩ\ޥtBJ1p1ND v,BWrGv$+Œ2Bg*ҋ6 0`0 `8[Whys7"\yeIrp8~ػ矟Sck׮iӆ3w\WAΣUV<*U Be],QAEԪUQF_Ԫ^:۷ڵk3uTFԩSm.]֭[cyGKjԨ_~ɘ1cOY~}XŋӺukyʖ-p#(=-[d̜9V?@Rhժbrl|>[ѢEѣ> ?3۶mc۶ml߾Ņϛ7//2۷,\'NZ*7t?EC\pm%KLwuԱYUPRqQ~`^rr2O?t}Rzuĉy+V`TRVVDl'"EZbE_s@ժUm# cGun1xp߾sJ)g~V VJO,.: )Nȯ!wC|']l3pGHIPJy-!"CގSs D$u[*yL6']DR*"^T8`8It3:xB$e#Rc62(زe ֭$%%LJ2ɓٳg0ݲeKx [Ǐ~zvɾ}(Y$˗,섲qF`lٲ϶2J)6l;HMMH")Sի1 6eCINNjժ1wEb[DRRR0ߙȩSؼy3ׯĉ$%%Qti'͐<"fHSmS$cHaJu~2GWvJ~wPmt$z7QMDE{pRꨟ>= }JCRJuP~`LHIRj%!ٿ(b[DJcWJcPS@_w>ɚr{Σy,`0 `0uT5*1dCj*vɁȗ/ŋXb/^e3;v`ӦMlݺ8J,Iݺucf͢blٲݻwSD ʖ-\pF4n\"T|Cǐ2F䙭]8?.G͚5Y3{+UT (:Ө\rʖ-;RJ1 Xsm^9D$77ŷ(y5"RD)5p#"R-P›Fc`PJƈHs?Gn3R<|Z4^pdO$eg`0 p.,4Ѹoǖs7zncז׹sgZlVvtJ* 6,>N<ĉ4iG8Gc4nܘMҬY0wR Zmd /PPmys=+Wڬbj֬ɫ#Gо}`:>>)SSN?fux7nLݩ[n>q!~m m 4]hQZj?LŊzi̙3'Xg+P=wxTU:HRVE\XVe5VKQ,Q־* ^B$3 soIy?3sϙ L{{Cync)|*B*Q)ƻ4PU~#"̀u=HDQ՟'"mہiױ8`t p V|wUU !@vd!TODoN} 7Sʓǁ+?*x~\  U Yc1Sy69{ɔm۶UV9e?0'pBLҶmF^ظqcNYǎŋo=Ê+bgMƴiӘ7oÇ_vm1EiӦ\ezʕx UN%sNԩq2339s&~-?0rKľΝK^ذaC:;vfĉ<\tEY3]vկjݺ*%ξoF_XlI@J͛Dia1Rn7'')!Z8v:0ODK، U@^ ȗl`np}KWuoH)D;Dd.`[{=4,àEN\p/;cu|Kݹ!.uۖXc1S%r咨_B%΀?>+{/~J߾}=Zj1||c'--믿m۶X`ϻ$kԨbpHjuՔHm o??̢| cIӷ&bTo-"SpÝg_/(,\0Z \[#"K3\zD< Fb>KUGY@,f1c)RDRjew\JM2`~ᜲ_sO?Jx=СC|ӦM1cFqٲeyW93rխZ*UVE{Ջٳg{VekѢ-Z`̘1s't~z=Xdffp%ORZ5OMҥKz-x≜=o΄ ٳg>LzNRR{;kذ! 6sΌ=aÆ}voߞO ^`߾Lv+W+Jc1ݴi+ʆkV^/: xHMU L q)嫺\KN}{E_M@m {vMU8}(b\jMKI{ /}UNDN:ofǸ2`fV plȡ|3c19̓5qzܹ3g9W_ٳsAphzرߓ}s=y[8#xK /0d-@Э[7 Nݙ9sg_'F y~V#b_)W >xƍs|}0m& cLwo&fy_'QKU4"R:T|@UUg3MDWہD PG~x `8mk/g|; c1cc6,?0m7o5./Ν;x(]Iؿ֭[ӦF92y˶ew"qVIŊӧOLuOmɒ%ddd~yOz\wu!]lڴ)ze r^aH</LVZ:_c)f8DVETO^kGL` |@0nk%6c15U<UlNa$+V矧\r9e?sΊq1mڡ,D"INNG7tS̯'LŊ7daw7FRLn֘T뽨JzTMcNKzW|ǨQ Fyo ?c2œ;{11c1|pQ|E<裞c2jԨ\iN:uT hҤx̜9@J֭[UN:܂ڵ+WzʺtW__~y\MlBUUHM]1ƘBnL }R+1^W1c1&)9sPT<-_|\zfϞg}S_Ѯ];zꕧĢqԫW5kA=8ӹ93VZ$5n8uaŊ9ǻv YoٲeIII{l| kԨA?jg" ^TdV,I8\ٳ9 1Ƙx  .z9Qc1$+c1cJbJ*yO?… IKKu裏+.]AѳgOOw}w}GRR'x"ڵCvi1S,LD 樣8p d=ZjQL WЙSb)D (6ZVr!ǷGl7c)2~e'&y SYIc1cLQSloGQGȑ#sÆ c)1q 8гY,,X1c[i۶-)))L0[~IJJlٲr۽{qŻ-?ͥ9|IIB u &f&O1Ƙfe@RMJp),f1c)j=d-ݻwg\veTT)l}1uT|Atœ9s +QJ$@*-k?97-:oc)>|fyV2)Q1oc1SB|⋹U}iӦ#6u2bΝ˸q馛h֬Y˖-磏>:bc,V9^n]~)fTS~e~&+K72p+V'b,&OӃ3;,f1c1%@zz:<YY3E;_Pʔ)CN0`&Mb֬Y >nݺQ7kOqcMWzu ӂo&/̈8c1l~oݻ3b)UMWճ]=&s,f1Ƙ|#"EdvDc Zdzvڌ=ړ0ʸ#VZtڕ!C0c ^;w2nܸ dÆ q]cΝݻ7?eՔu@]W^Yĉ5Ƙ&3Sy>w%hHƘۙ-*N`SX| P݉1Ɣ"rpB U3=.w`2ht|0Q1sѣC!J*s=G۶mӧC9/Ҿ}{ڷoRGTʕٶmofNŋö]wWjժQ~}㏜?={|ɓ'L1Hjo`Tv/NkwtGf1&[V2`b>o)6Ƙo\*"@g P(MD"R5ō1@j o"?JD i "=$zLc߼y1bm۶~y9粲xHOI?slٲu˗/9.L#uYcƜz233W_} eՔpmؿ?o?>cϞ=y|5+TSքif9,VRt>Z@|1ƘW}`Jx"11svA^ b?Gy fՔ@W}*c>wgnh1@6b6˖yOeK̨1W%-ϫPmdpppж i1&_B <.܂U&_Tu_1!2F;/^ xūf͚ԪU+q1mڴcaaoߞロQrxbzꩴn|\wut҅-ZDm3aƎ)K?S=~-tޝ*Ums䡇/UVT\ݻwh"&Oo@ hԨQĽɦM$p,\|wՔ+CR1Ƙòi~FZ%3ӳxpjʴ0M1 b xp~/ E1Ƙ\0fSp+K3@Gϧɉ1_~a뮻ݻw 2dOwAN"^{~`dddp3q| \ڵѣG3zh4h@v8S+W&##[f>c/_iߺukvmڴy9©*ÇgT\5jxVuޝop]6#G䮻Cۼۈjb͹҇4iӦyoՐSMIx~qcf F^رٷ/K.)C45$, Wv[[(#pCcLR7P ocow}L6mxMJJbĈt%g5kK/XHKKc1?x饗|gٻw|׮]ڵSߠ s9_|}z^ʦMc)yrV?szd tL27|ֲeKj֬pW{Qv[n_-Br2"cʔ)\yTX1d2ep{ѽ{wvޫ+N)9MRMhKCy ܜ9mۯL.Mcc1>bԨ\v,+p)1O AEUuRRW@`91X/ " pEޫޏVxf=DN}́.`T?5X|>J_5Sq7c#0\Sw}zvy7nHӦM=viԭ[7q 6իW޽\A5kz ʭʊ+={6gfժUlٲt23SV-[CtܙW#<Ϛ5kذaׯg˖-deڒԿGϩNn^eʔK K.͛7kX/99C2h ̙úuHOOzԩSO ƥZ{{߾L>|RVPNyˑ\cqTnKcJ e˖l޼Me6mofݺ?#5݌{}E5@ƘAp7vT sy5"Umuܾsb7)Uõ2ⲪzPDM4? X \Ua\ fVՈj"r 08?nvviAEU59p2rhW513Ü2'*F0S+AEUC{/VՈH+܄KqXdj~T}PUFR\+[kU9>WaH}_۷(U'7fyx&ܳp~8<=UuimaIo99H*\`:ՔwpT{YgQV^Tdeem6Tʕ+kqF:vs\zu~hKv>rvsĈ13?USvE|$ \)x),dbW]5GsXHl7r@?`v`\^}7@p _y^wB;o xjc0U`eCc5( uqO { k .[/ҋŪ2Yq),_;Ƙ""9W'u,QҪ@PmT앷^Rա11?=:E6pvPq3NH`{pi%'_ y[Xnοgf$ 511Ɣ0+W$99J*E ܹ͡R ]t)!L5e;VH&WN1%Mn:Ք OQ28:Df9VU"r"jLmCaL,@\D *܍Þ".%0_UMDq{O&*@Dd*5R][qCwU};L+~'"UoT W1H_poD k!"/EQ}|+pCYk3Vkk@U\U}Ed2nGd"^UߺPI3z~nqS%{-TUk]tMn#bFx(Rfc >W_. >233I&1b1 n?rv?o UW՝q_;n38&Hs_mF1Ƙ|s)бcGʕufȐ!)c1Sd^# zNUUAtk[VhVp+ZᝡJ33yLU#;}݂clKl0gH#U]Y'vE}sf61p M@r4 UR!n&eUe?P0gnω#U."ˁclwiѫcr@Wb&"kqHvejP4oYrZ.?ϥ4b <wG~"2}*fa,c ʕcǎtORc1Ƙ"6p_ญ?ؾ;nrqė͘,Vȩ6Moٸ. yC;w[^Uq(oWh=8\5b܏Θ.޷#&UO2>p{bY{`\sHD^pГ7 x c Z]X." ^X87)"!O1c1SҌP \1VqD\JP]@ytpnAαL;T55Ppa5ꤠk %J]n.5.myU'~`#L74 *Z˃N<ڸ=ވв[ .=߂kU< Pb`6F?nW 7N߃K𪐥-c<+Q6zԘ"X;6< \{.(|,"c mh§ (:`xƳ[P\R*ǐ{z*I#W"1c1ƘbOUEEAU͈NDx[U*FzD.{Ε2皸{6de+_C".!" t 3r="2{ o?0TDM8[H[];S:fZ׈JU*  볈7be>\S'"pMfzҵGH_rDG\bgUz =YCUȩ}¯d,8tC+U/3= 4c1cOR`V W~nQսy~:9"_U ~_u=m = q|ūT`?M%x *)$%RMBUoU?cWxD*'@_qsZC.1yFa_=8@^#wiec1c1 ޖ"*Dn5 % 8߁wˋ?cidiGqȱ[H/;4u}eBU +IDbXȌ,"k KU/H<cBܫ "R5~ o) ]@gy Lv +r8K1c1ƘjG:eX;~>\gx (s|oY]kF~cĪ˫<*" cm("D1rG3?e9迲Dt|<4|cz~u{ 0QD0RDj?DdTc߮Qw+>nܰD  3S #"g,"G&(^vEd\&"EN/cmo1c1Ɣ4TE$g;8MiO8}S,0/|o uJ."Eb96{U&"r ҀA!5JUHU]mAq"rZ-!NlsVx+~w<.݆K?ܵ:LsE$"r|í1c1Ƙh\ϵ {DHp&x;,C[m~=Bt*P><։.Ks~%",\pTlOMJ&͡sD*\@rW"[{}VcLD"2xWI3:22 ,ǽ5;& n0P?!}d+ SwS8 T\ 8%e;p52ؾl$sw`+$uO1!K,G9nѢN1cp[Fd=z ,p.|UK G*8wWUwOu#ICEk>nY(uҘ ucFU%"+G4c lYJTU]w[]wti#>ƘB-{["ffɵ:ED⾋?N(M[ <[W`0AD>9{Y{}~VM1^ 1Uʯ}DxLDN}FV`.EdUk0ƷvMU 3kKG,_ +.y .W؋ -81i\uU9|w 4h3g97n:uJLQ Zlcm]a1Yn{i@bOqjg9ڬ(g (Jx3k|+d7XG=mStEA'1q/9sHMB3cih~S2cI*{GpT=*V,EVU8r$'vr$'QGm)cLɒlzq~6mφ j^~}Opզ@H j QՃlsw\VDCv=Lh-c1&vMc`1cL"K>h|Vrw^-??ONٲvp0/̗_nL`H#)K7"co6({JAe಻ßh 1cL Ddq_Dc1&DR^D[ҺuU6Y0Ƙ4hP=ҳgCv`M)} IDAT拉ͮrpHXjJKW^Y1cV1f*"רLM0 %UK?iB708<sEߌ1Sҝx* 裪S h<Ƙbjl޼9u$''/Y>K~z222hР͛7{ԯ_?U3ggn:J*EZر#W\qu=tROܹsٲe *UիӸqcl:ꨈ/`ǎsg:uD ž߹s'3g_elذ 6I*UUm۶SNx1>,X~ʢEظq#IIIԩSƍs饗Ү];$o̜9e*T@*UhҤ ۷sϥZ&0lܸ[z͛7}79hҤI󙙙,XkyǎuQTZ-[Ҿ}{>lʕ+Ә͑#Z8'S-s3ƘVb) ;;~bʽ%DRPMy!C4EnWAw2U}>\;[5W+8 x`FZtYc1&v+{U՟czsN/"]t7oo߾|ڬZ3f0vXx J*3k, ʕ+s_r%? > 7xc>w\ʼyB_z5?&LZj}tMƚǏB \};j@t̘1|g!ύ5*b;3}*O/1c۷GޖfܹԨQ[nn-sd L[1p` ^bf1%qUbgf. (&)<%}Iշ[x3ŋӥK`;Ӈwy=z ۷oW^k|ʳ>7۷SOq뭷gϞ;?CeΜ9Qo͛ 7[ow .s!o~˗/窫bʔ-9r$oV[}ӭ[7<{8~a&N5l֭nc8: o5j7YcJҌӆnk\|H} )[i\l/"D{Yl>Q-l1cJ$U "倚G%`;lTUM81׎;뮻زe "BFhٲ%ʢEHKK#-O?uٓɓ'+S ͚5EpBOK#FpsI'E_VV{O?{,͚5iӦ۷ŋxbݛSo̙tMtiIIIn -ZstҜp V|P<͚5裏|lذիWl2sfffZjQ n_Ϟ=s*T@VhӦ d,Z~U:uhѢקJ*ɓٻw/_>^{-]t5 [oફS T4W cL!sXz/G",MLQ߁~@3GTJ{l6lgZ`/o磏> xT>,C kE/?xL>Crg x|T^=|׮]Q;w`!PFoS:·ziӦqwF 4lؐ#G z?;"eZ_cǎe\wuor o6]v.!0DR"B*)Ixi,cofuVl5ԣ8UU@}}t͉6 ԿW\^#53TeUm[< <<\ $T~ߘ ; c1cLt҅nݺES~}."OYZ}e˖Q]vqVV}]6r }%))ݺukEmwիGrr|1bl„ Q۽:;b$q*x|ɞ l,n=ܜ}1y<m۶iܸqo…a|&Z 7 >،sΩAc M8㎫] !"NUUWTTU}OUӣ_ߌ1c1&!ʖ-/Pi?xʨmK*k5/ի/rK.Ͱa $k׮ڧjժPZ5*Vhk׮Xf|S*: 44GWQ!Dx W3.@oB0 !B!Ct|+nZjE@@@]nBÛ ~iC-00^zѳgOZBBB=z4fͲ4ctAtR[DD7t={e˖Y- {=UW]E޽ѣ\rw;wn+er p TnY!eOϞawn:;JyIB\t$&B!(oR\ ? [oW\QٳIHHk2gڷooi|bb幪Wnx|h׮łyh7nXdd$π[=zO?pl >x;GY(S2ѣviC!DQ"W^w R*B\R&!B!Dy۵o__ wJi%֭X~7,o9|屹.SNqヂ;S'==V0mر\wuXl?#iiiWVNJJ^^~evwܹs޽9sh"RhтˏOǎ{Y`Aޱ5kp3bڷoOPP mڴ7xCAllj֬Iw}Ç3PVǎcӦMΛyݻn9nݺQre233۽{w4h@͚5P͚5e˖ǧQF߿5C aРAߐ2!!5k0f̘eVعs.XU (AA~T*_֭['N(Ո'N%;߄(=J!H)In Zg)f {!iT8ws,BB*.]ve„ ><`ҥ,]+Rn]BCC9wǏѣ={\wqӦMyǶmƶm<_b!ddd$?;sN{1TBFPv"+X駟&==V `Ĉ̌GB 4oޜ,|鯦M2rHqs=>}Պs8̝;yN HHH !x PjՈwo{8Uƣ>ʴi򎥥gy?x`C-00ӯ__zz:&Mbԯ_0bcc9v\͚57{ﵵfQ֢eC=:u*:(TAAA4o޼W$D1hoB I;)BXj:\o'Jk}Zk=KA¾U5YS>Օe~; .4reeeql9x[hhy1c^#Сtoon)8p Fٚ+? ꪫ6lk~`ƍn.3f~|JΝ'II1WRlS**Pf̀|z qa{ɻ 6$D1mLQdBa |1ežXkT)qJr+k viv]> Z J^`ρ7ଇD<[k%UZCaCf9k$:Qc3]6mYx MZ☯ R@[& Rp5Yk}'ʆѹeV[ڴi˙9s&7iP[;3`֬Ycɒ%$&&ȑ#G, /`Ō7g3tPCJʂ^: ,`DGG9iPP׿x *P]=zb ƍŋZ*r Æ 3ߟ_|{9s$''[Jc9p@u믿 穧߰#Rj4ڹk(*#7?/qb*nZ``> 7UJZkoAcWMk#gہO>v+^ZVcpsi/-B!J v*$Ssn or?VJ ,o Hy +A^ʵj *BR}%z̥=߁7W%J)˗x 7O84 %ofCq]KR`!oŤnkcoBQl<4!B! !>2_¾Nk]bAns*⬉1|]` tqR{0磌 L8waYJ;Mb=/sS s5}wܚ3M%8SFM|53+g =8,vùӭ*p ~S'q-9ΟR)AgzRs~s8S?z>O RU` &W3Y蔳s~q:* lv[e!(~IIg{C#(B!.BvR! ,5\n:6b ¹lR3`9k)`R.>V1J/p^u9K)5@kxϜ洔RohlZw'*V U9^ g-7gv~]J쪔jޒ&L+3\=sRsq>R[uL>z,?MTJ}3[0zwR}MwoPǥ}Nkۆ5?6a ϧ@ر [$(^SĒiH>QZυɓl߾#GΝ;Gpp0kצCt҅ve.11۷ùoXd 6m"114BCCiР={W^YOԐ5y׉H׮ylw}իIHH ))`ԩCdd$}vڶ΢t)~~g>̱cǨY&u֥cǎ~ԬYHg۶m̙3TV5krWҹsg:vsp'Xgcz聟D oڵ˰fjժQN:vu]G-(?>vn:֮]K||<| m:|h>c¹hZq/ W''Zog逧TZ>* pkFUyM֖j)~˜tqSpO3w.IkϘO Z{ImdYCQZX_^s'ݵZU˱Dx;?i5S*7i?=JJ!ą+66>}pz huR\mJEޅ |W/lܸZ]vtlN.ŋy饗}aʔ)9s~ -;kq뭷Z/>>={֭ի5k&M"##+2d_Gh"Ǝwѿ^|E8p Vʻƌ>T8p >l۶-za/^/_5k׮ 6֭[x=vY{,ݥK>zܤ$0|Kύ;w'kͷ?~<}]}+W?ΠAR\ݳI&1u%C p0qDf͚Źs缎 ᥗ^,##?>L5kƘ1c $66o=QJEū&k5B!i'B<Kp<1<_@kZH@R5+3ƙr~Zl: ϛ_-d/G Ap~k?S{[gq>TJYk4/XyLsGΒ]*9bJW;a¾-o?dر_r `֭oL:;CYɩSׯӧOx玿#Gx6m޽{9xМDQII!7!ߜo:SYnqxjfkw[k?Ik]) |nqMmkUJ<⩯7Z뿕Rqgkq|6sPJY/Wkq>qaZ\g)*{_B\p6mJcŊ$CIRZ+00-Zp饗J`` Ga޽~ڵks-8gZk^~ebbgnذ!W\qM4a׮]lٲ%/`ӧSF |IsN6|Y&۷M6$$$yfpvgС5~x-2gr о}{"""سg[l!!eӦMkRJ4oޜ-ZJPPOtwPk͔)SY&>(`QML~[ժUiժ͚5zH||ķ~5jԠ{ԫW,_ x^.\H l\ټ lڴ)XHHZaÆÉkP}:wW\Æ cc@"##[.ίHLLnBOoB!oٻtRUpsbb=Ǟjnm80>k蟀1Qkm#v 򲳬3\)֗go`/fy81VܹvcRk|#RpXcT$ ?Egx:TiBϭʭJ.]Xs†sα`>#CfĈt9m~7UӧO.szj %DFFҪU+󥦦{ رc<e?#-o_]Ek̘1pFL6c:ʼn'Xxtݻ7~;T\c?_͔)S ;Fu]GÆI ۹o#""+00>}СCu222O>}z^@p0tPV\^/FiORZ5X`$v^x{-jZZcƌ᫯2_d޼yT`… ZbnLUJݤ͋&ZGĥN#|BOIlhx{^J˹nݚUV1qDu3σ>ҥK]5B>&7ִiSK7H jժwp0j yΜ9 88Yfy 4nܘEѶm[wyKƑȑ# p6lȢE֡ԩ ,nݺԪFb >z5 ]wŲe˸K={9sYOdd$W7ߤSN^o EEEh"_ߙX&O:{9NU2k,^|E7zϳzj}QƌcxG1p@ CBB?~<Kwoܸ/uj^櫯m>Ҳ|tBk̈́ n:JS oj7+̮w}7umڴw5ۺu+[l= /5\O͚5 _.+.k֬!>>pl4nK/?RF0C ͊`>CC8BB}4୷2+5[|rÎK &Щ~~~^j <ݻ{ޗ_~-Ylllڴ)Fw}GX#ᅴ¯oֺCVQ~IM!DycH)f[aj{Zחw)%9sijY#e9968S>ZZo#XCI>o`*f@o- Q)5C)ի' ss'Nc$˱u!jΜ.l:w^5Q:ud߾}ZV]}^wu҅H1;BBB{, cc .5ڵcGk3ڵkGϞ=cYnڰkرcnAo' m[n-sf͚ehݛ^… &kԨ-UJ6gڵ+ܭbŊni^]C .!ąCoB!o<]]ߥgɻmj_A2RYI9Nȹję~AJks * ++’%P+ o18w`b_eٲeYHKK?$$vpBBB sY̷UV[lll5jR իv|<́B;֭[ҥK_IJJ=رp8X|9ׯ/PSge6m TϛD23]SZeo>c;S#uz}ᣏ>2gΜ9̛7vqӵkWڶmk)BrAk]OnEc9kxxojRJZ'Zۿ׺8r+ RsEQ\+j;Sez zR.wCo…QIJENNO0|v{]XlA2D?uאժU#$$`NUBpp)IHHVrK鍧~E|35?<LHHժU3< ZgaYA,^:!!!TZp-vζ|3SXumns,((@;̯LΞ=K@@@cr''W_}5| #F`Æ dddrJV\R;ꫯhlBuRj"@4poQ̡ꤵ6$Z;R^.F MX]UZr?9^/-hT˴YJo1dWpuVeGh2AB\<~1)Sb͇Gj4sdȐ!O`` 7pzK.>ƍcS1+́;_9 VOuμq8<쳆[@@=zgϞDFF5`2m4&LPuTJJ =!VzuzMϞ=ԩ[ճ>˷~[K\ zZWYJظqcΝˆ 駟9pǾZk6lwɣ>Ë=@((~|B! p9W)T)Uy2 cNT;V VMZ%Hk}V)5x-9^q)8s};$.xZG}TkM|ݽ4o^9B\v:ŋ/)ZG-%]͛ځ̚5:X_b ̼Wӧ9qժU5yǐn&.*U3w;|`eٹsg^ߟSҭ[7K ԩS P """,&MЯ5nr_oBCC Gg~ݟ9s,*Vh<~R ;:uDN9r$?`ڵ[u8̜9 ҪEEoB!9{MR'L@)utt{f)iKj*p;kE]`[ IDATP)] RfJ ZxԾQ)b.R7+֖/{ .6驯ZGTt~lͳnc„tSIŋeiDEmi?IqZdŊȑ#-¯0 |vKuXF 9b;@@TTs/hm9tСoP ~'Cwߵxԯ]vk f͚յZ?p}(šI&yU5۷o>cٲeǏW^E^oOQʸBaz/8` bRCRu}C)UK)Rj_u<͙ 5Q)JoZ |k>Q< 3Ý?R< qPJIEcݷJ)R+Y)|tr9U\6622222~~~4o󭽁eZkve8֦M[簢uֆvVVs>|mW/;v0K+--Ͱ#Ϗ;Z)RSSciE.3cbb ~ԓp 5`mh_eR.'2{lî EAoB! Z/[pOWg _JJR*&*>ϩvg K˟δ֋9Ý9WJݤG)?LhBk=8۔R+WJݪQ)/'5K) *iZCwJJ=J8i3x@)?ԔvTלJ 85_=YkVGWZGew)Sby晭dd|s84c嗷sRpQ%"nbr%XuV[o[Cy|6m29s ԅ˗/ucspE۷vjLszӧ}sMT+W<~]+4t+mw8Z9˓N:q7BGoB!MZ.kmpX{ ?A) =%J>>6 ̙g&"ua:u|>sb~xݓˀy8Q|MuOIWlrCTp |sw8#{MwHJyᛯ?ʽn !A6q19yO<3:iuQ\2y파 N:eyرESo̙dg[Np_|˖-ѣϟoR߹sg[>;wnh駆xhYp dcǍgym̵5 b„ +i\c3f̰8bN+rJ[?@JJs7M41}BM|B! @kg" gPg9A4)g Z3x"pO)Zr̀[u5@zMh`Hig7Ν'׿`F{DŽӾ}+pv².:~~~n6mdi?Pdoyw޽{*To߾;w|򉥾[laɒ%c0, ,]د-`~;OK6lV{͊Zjvv8qcǎY_NC'N^|8pbK ;vGNC3##r ɓ3ps\zEҰgC;<\j QBJkJE8q^8w\gu8c-Z{%|J8w݌3s@&`Bݫm6Ǐ\vr$` *wub>݋vo9k,oZz+:݀v@uSד.`)~\~a|NZ][LcY> [)5h 4̹si܃9u:|,"F@_Me`(Ӵ: P*z;0HI9o䭷ZѷoR]Y³nĉs>:JЖ-Zsμo :fҥeδ^8Æ bŊ>w͝;ozٞo̙3mذ]6k֌^, .͛ӭ[7CZQFQR%uŋ9rZlɺun;H`V\K/d{.p`ٳgsY>G Ç3|CPl̙?@k.iW^y%7p!)Sp ysNvсswc=Ɣ)/Y&M0d`РA9beH_zx>nVW۶m_5kcyB$7!rbrny)q9wO TEs_am/G *az`}![Pб9Gf|964y.kIuP??b|ڃ;2 :9Im pBkUu Q)g@:@VV6Ç_yKiB%9,|p8]YZG}\JK}|yp=/?w{aܹ4-[$& (5jġC੧bС'Yvv6,\Yf֨QvzTXd&Ó߿?-Zì\wygUJ1f_ԛoM7ݔW̙3`Æ \s5ԩS-7lxkm޼xW^yP{̙3+/*V%\Bll.W,m۞ϼp8_3f #C͛ӹs\HM!(&9W, /`ƌxf̈iMm)=ZG* p{衇3gNޱݻw3`hԨڵv&֦Mn&MDvv6&MbҤIФI]@@>5j԰5_PPGkŋYx1hт<'6lW^ye~N;ׯτ xbZk>>&66'yFU,ڴiÐ!C O?M`` 5RJڵLcƍ=|礦O~z֯|m_= ;1.{V\w?o߾TVƍsYV+W_eÆ e>0`a֭[yꩧ^zԨQT>̹sngʔ)<#$&8rJV\IZWYYY};w_߿?/B?x`z!ñ46oK*UҥK׵kWFMŊ糘gdde *< n&ƏOJ}l\oJ)z)ъ!CУGİuV[߾}ymPfMf̘Q@ѣiժ'Nm6bbb ???^z%xYZhW_}q:{,l޼ jҤ _~%mڴq/99m۶sNw}73f̠rʶ- b۶m][ra[xx8s̡u֥J!DQB!BZG7ɮ>`ʔXzXܹew||i`4pQq%2tdffB;w..kٷ]v|'9 櫭 *o0yd"""W^|wEv{,\:w嗳pRkuwҭ[7u˖-  ?&::}\mժ~!ߕN>}ҵkW"""|tUvm,Y«Jpp~*Tka… 4--aaa,\SҶmۼ4(ꪫx-Շ gż;4jg *бcGϟϸq/{IݦO /^k90X~}yVXAvt=:BS0ۧZGjS*}_y_OKp9R*1ݻjYB2O%^^wF(xQ=(] <} ׸qC6èXQi֬]{e㞺8ZGIZc@DNXX%֮\edd{nKll,ԪU0tB uŋK/cHyzЎ?N͚5iР=zf͚拏gϞyuzjCf=Jrr2ժUN:DFFҤIE/))+Wra;FHHaaatСHw={]v޽{9y$5k֤vtԉM\EԩSKll,ΝVZsuP.O?8t)))dffRV-j׮Mxx8[nݺ>}X~=IIIGZhذ!]v4eeecHNN&55iܸ1mڴy5 jx͹7zT*z>p&k5BQ.B!BRu `RS7ǁ:t!!:_h߾z)V |u"^/uPDNJY_|lG`` ڵ+ v 6_~%6_Aq<\ve\ve>WQZ*:twㅠVZzv&MsaUXӾ}R[CRצԊIM!B!R`ܹ; qtR+R%'Dqq84۷`T~(uW0~/7 }QV$@B !ޤ#]zG ҤXa  Ed &"H!B@B$$vg6wv;[뵯d;;;yl0wdz>^""3%o-DJT,%k`2c~F>6 ؏ 6X70+4eD~Q"Ӹ|o;̳Nf9V} {&ٓ 1aJ"|o"䛈H3[N.7sfO=54o|cdd%2xp 0rҗ͞s>}.~:i0i,Ǝc?cƌnsv*\+an&nҊH7aBQ)f%DH7s&<ؑ f7ӛHҒW7禴8}v2;8HFf}$N&0>gjb9ɱ T׎j+ԿiQ{Ӣ=7,5=i>lm8== |C~[d''J4=xDD`DyCsJ髖0obӢ]ԤUDJysӀf-գj%"MFOw,ر1f̧V%""t}E*jkKJtZ¼힛i -1{a`ܧ͎KDUΏoZ+Ɗ[(@HL#*;5zIl*&"ùyd6Q0iBm2^i^8""mG%")|zhb,""m,?xٳbQ×OQBWDm>8}oF`[o5^{/^?#F(?_‡,<}=I+ ɷr*S)_q6{Sv.3 KiOfnyY5`ny˚7lf0"",$iE:/""ܝ&#^vp}1IǸf*~9̞ FDm ,ZfM%'u^D 4L+ FDD^P~^5H[zYZy 0~gM>t)&"RZX黲H㞛Bh ͛ JDD2ev-i- ID"۽2,F!"җoWlV ""&x 뼈HsJ_v[wtt H;7n,3=CJw"bsӁ+,WLJHfXlhb8uqϽT*GbiC;:.""">s'_~uKNDŞ~ 4GO/L=i Z$e <㞛дHG'EDJt=7i܅I@O_?om`""}-Cg&_xBR3oքxDDڊYހ}+,ғJUJmc_i nIypP-c*kMc⦅&60>dڴ9ykp+̚Q%+- MDJ|sύGDQa~VyWf""6~L㸔9M^oj""ҫ6Yr/r⋟68^llc\u;Y;>jQh"RAJ-{w2W^DW1"csOwEVJ~,_)("ҫ'*Qܔf L(DDsϽ lWsSwߧ9;'"˸ÝwN`͔);E%򇖙Dbɷ+?7*&" Ta $CWVeiTfM(DDOpMv^~=OpA2r;7uAPs:O>93|{?޼k.k]d|Sis^\,>p\urQY~a` 0"z/J߁UXdsS͊GD+,塇>?d98=bC,?ҥvxDՀ~Ihu6䞛ոDDZ'~o{R3\`#"gQ>pROHE/3]=DDssߛ!TY0Ԩ5hE#1b@ P"ND32e6&|d֬JwgjN&ӥYDr~䞻aQY~) Y`=\oH,WEDz @rtĐ,}^uϭ IDATxDD*وoOHDǙលxW%Vr8a9{͌GK "+GrlEDz,5)2&[ּDD,x=|=E=f=R]x\C,;&a|%`:c8!g {@#ZD(|0\Yaݧms3HK "kR8 e?06C9{k""U/$*:\m,?ýTOskrH"""6""[9{nzY.`rmxDYVFWRDCJD;WYf$dX=SHE*%f6'&6+1{o@7i+Q *&""_.3f"6"tR'"ңWnWXF3M VVgTYfH#7ty߻nF< P$fMDDDDDDzAe)&P6pSm,Bi. М2•,q3i ޔ2J"""""}G{nTS#*&"*yי&$1'x[bss4'aprn5/՜DDc_+lDf{&7'^F}Y~f#"""""Y~`2M74¸?*,pY~i(v|%ǹkBH-GhfŖ!$TLDz @`*{ !5L_8H`7 ЬXDzZz{ Sag[eH#We?~ۄZ=4Տ&f5HGTY,܍).wY~x3^ `2u=`Dzoc,Y݊JDOTYI ڃ{**}Y+MID.fͪ,z3pZ#jD241K甙pDzoK?TYl~fD%DDFTi`* 㞛ʉ=UYPj&#"Y@1BJ^uyj e},J3,??e=RCQR%"'ШfE؇H? $ `/:U\`seLDD`OܧT7Yf=XyS3SH:枛M;߉0>Жi#"0pȝ|=B#kOO݀հ7k76*+?aIZq=՟3 fcoUX";͊G'2*WQ}ۀ^k"")Naqo54"}u w~{DCSְ=scX0˯N(HE窕>,o*,4{nfsN7i h \ _ED*0M>-UjO{ʍ'~|U>'0{nJ>,#d'rMmX`m, uv;yQH;28KHխۼXkk\eppnTLD$f}_X/jSYh7WL;\aHbNhLUNƵSՒkKIUP< `UM&7zҒ+Xmp=p+p4H* R:8=waCe_&|bq_ "}f US:{CGUYCLr}' GDz̒oz|OeqnលY`"ҫD%o7&܌]LpݛelY~ev`:V ZA4rn{ױ q<2(*!'0NMJDDDDDZ,?88ReلJhx`"H7'^2i&!7x|6`ikf c-MHErcIw?pϽ ڙunfO5~Ɖ{ y_*z9p-p{L%'J.wf526i,P`W```V=H#c2O۰$tY.T,B+}cME232Aek{xB/E"\zkO$܋nW1NHNC`*qR*',""""^҄k[Sle`OۙG(4,6o_v߆HD7Ssku Q4ӯ UDDZyBV!z_ձH[8TCCԯɷy;M١HcL ܜVۙw"\ou,"gܠDe%p"iZm-S`s+S&">~:e7`u[^cs[LOf O>"hzmގ-4;'e``Kv6Yh=*A|&]]q8#\owϽxzJ#*"""""e쟶:ޤeɷ ,?؉ XH0x(_ۛY~(+! Pk#`& !v{n| ܃PnF$"""""E԰xF E-oqfp+KÀ~NDZ`N,p{nr+:8*I,L?xJVTJxS˜+KGeGHWio20o~oniP"9Db7aosKR|ҠD$Kc s3Z#j075NNQ1ssZH_ףo""""""""lAM`UwWJSTQDDDDDDDDޭDDDDٔ|{XKi̘2;F>Q4zHS?-EDDDMDDDDDDDD2cfk&.Hoo"""""""" 3ېZfQ+i%DDDDDDDD$+~XSi!n3x`?v͍JDDDMDDDDDDDD oÀ41QMDDDDDDDDPdEDDDzn1E FD%"""&""""""""ݵ?o4!RMDDDDDDDD֒*=)"""NHl7*VS7鎴iH""""mB=DDDDDDDD.ff`XuSJDDDz)|zmE EDDD-盈c}iJHjf6 cYQNH=|""""6|zEDDDڒNH*f$0sD%"""MDDDDDDDD:% ܗ:8XDDDDڊo""""""""VV%#UzRDDDz%DDDDDDDDffE`6mѶDDDDڂo""""""""FֽMDDDzsV """"""""=pe}Ni|Z@7.oSDDDe:V1~PEIV]ED0kp`6ji`"""""L*ypg-"""T}줙 lALavwi(ٶ Bҭ ;ܽ9H3BFx 4`3>i>|3_b9F&"nl=4'pߛy`"""""RfM ő~y/""">ff'gwc3ӁliOf&p z77upO~T"""""a`Iw߲i^|t8#x`28,#8p_АEDZ̶n+1]BBm >ARWJw!HӘ ۤ(TUCDDDzs7PFTwXaݕ J>^ 8ml `PbF z 3|%pbMl#f2SM؏H䛙\OqPB-ɳ-n*"laE`Ĭ pNbTDDDDDZF5aWc5 :e3$*ۄsךق TD}\JU&}\wl("""""bfќMڗHC`ĴSz6![˄7li3?؏P3[k+f6F f@?:˛|Mkaf~1,^z?s{93K36`fk$&F֑v{p0'1WffXt'\f*:7emEr>7>75s#:+FF)R,͊G%/}m~Eyج;p7c"""=ġ|""""Ue'l(.oK>]xX*6-`rۍhMD`e:K[:&w/pc?ڄsx?v^u ܝpM [&wN$\ Šc:El~unEڅ'YI:1 |)6zw* 5B|ˋ=YW3[Ѐ#w?;6gg`xlO ~kqlGx |; xPvj~X/6"lޏp|73wlj4S~IeNݓ 54.>找OwF Hs@DDD{y'Wǁmg%W'# uƻ*!Wm4M7kk]1 b[&.a,j&K>`ۿ4q//Ը+u IZ_߃:(w[0fdF^u*9|.&J Tp1ЯxWƢhi0'$jK ܘb 5oE^ˬwӀ%U7"woWO>lvDӇ ,W7Jq|'zֺwU~Q߰?TH,w!-DZsV21\-szFOlK8衇Gif~z衇zG+mWvvIxrVC_74-!R'^$ҵԟذHa N3ۂp=[ŁUi'ykͻ=F8JEtlBRnLz^ք:+;R=|T|W0fӄy.1?ـK>qOiw3iBZR ȹ,xЋnf,ٿ R lf?= }[Pfij 6 }v ɽg"_ٍ⛐J浥%[n/ J%Az ~2PX#z^$ ^ -CHG:+7pl^$=S\2kFP&B")BI UbHxOlW݉wÄ.7 ߽N~V K:XBJ%c4bw{f {hBO8 Bh("RQ4ꮉNx_ձ+m|p?"tG3[S:izՃp3.Y،qE} +l.,B %ݿkɴqT(odР`ľfGTXg#:sm+YvrvoYo`Ix,oQX ,Xe_ɲm%ܜ.7''wz4:${:]팷ז+,,;Y8gYoBr#5ƘgZxuq2.KHOOW쇐9*%c%NBC*J_*ẃA+)ǴqZvt-qT%d \t|KvM2FBw8έa'ϻ+dt$T,]o?W 49:_oإ47!t-]{tF1}_NꡇDw˜\@- N>z衇z衇'V =%q[!Yg[Ʃc(n!&Vp =M&&#$(~ݟ)LzKF.;2vwp9n5 4 www?r&7+m<*SwKBϜiRCJc󬯙YB`Gw?u_0*m<* -w\n=w; paYڜⲑOݫc w?ʢR\.vk95{&9MwMCh\hdllr:Km c764HS).I>VV4Vfef[Dcvmsw3[?ہ 1lo3̆7q߅.׬KfgfgHObfkJ5^F,w?]j CEDDDQoOMx6[εQ/ZLq( .WõLL&Cuݻk'Bj]9Jҽ|xsSSd럒x alZ&;NXn7Ckj~K(?Y-rRE5^7\3gֲ`+ZtqZ͹lpqhۆP6~wg+G=NOLJE+9=12ZnيIt\\R|'&=>?O|^jiAs,zθdZ0ʼni8]_]F%41BccB3#3~Tf*=q ef+[f6!zq[~%D>ej^aYQoGfv%+^d̆مtA.3ۤ6Ǝ3GBg ^>5YچD"=DwGU_4{>w&TQzSTƒ%aZiiZUV%&/Ua/'|5j=Jn_mUu[\)tӼW_ym;oڿS wEqC#ٓHz쯙5R*|De+,%J6ߣf%80J e՟7ձ,Nm%?@ GJ_u3KWboV2JOY`䲥&+x*Zo׸$SW([=v#/|4ťx 'Y^엄rk"'3KR .IU3lr 6-ӭ}f!x$%z!U3KެuPo6!!Unt%oS\9/𢙥z@rI՗jvCDDD$ޔ|+U #JhHSv!m䒭,.ɱK/фZg\'X'WNYfLLFnez$HMJzIz^J71qR~i539JyJ]KU!,lf/oOoYgϔƷbi M}oMet#Bjs^JHY&39혢PEQv3f\r֚L 4c`fzc/aV1-jfVG1j!T~m=Fq(vnh$wРT>-DEK;DU R]dmQbf&XZ$Ԟv|2-i˿&vnr'|th:F5F ;)p;FVSq*(W}zWr]D6W|Z:&5`EʗS*."""""e%/MG! crlU nI$%ZmZ1i-Z_c;.5yέ֒(",6lf ӵ. d/wGww?ݿ@.2]Q=`f)ace3˴hl<2 J}}豞./if_+~0`kAxRɷxmix咛DG]wc;~+^oP""""""I-H>z[}?1ovF^4ZdIMƗ'{;Wߢkω,^EdZtܜ揤kK2nVz9+1kFG=?/I8LP]r%fǞ/l^o=XX4ޚɥ> $B 0dio}w?8+d%fV*Q?B4jZgqZI% ;\O9"""""[4Zrnnt-u'iCɇ"*cPfH%ɞ4F<\lI`j5Kw&fVOOFi&p`f+%&'.6fRK"P.hs"w wx4N5 |/S\%`*0*PT߉ɇܗH%gYZp)IMvS>S%/\lVϹxU{F)\z}clָ"""""[W1.2u٘<]=k{Yҿr.\+FƦjdlY^RJxnGgƞ-is$]0g׳=3\G^op%ViǀbPknCmɿEAr쳯vهp#w7lSK ~/,٫֫eA e(1oQGF{n06{dkURQbhؤщEa5Y%q._vNKXo_Kϡ_DDDDDaz]<x0m)53n'wO]of٘-DόB=Yf h}=(f~1MZ2uO0Ef~%o̖^T kOzM&o'$r˺c&&df߭wY^ۥr{5z' 3[uGSKm p]{3Rlߣ S3psΪq[$]^a?Q<>@kZ3[櫾(poHv1%3KVHX بޫ%w,XDDDDDDuɷt.Xx~Z挙 1ʒ-}Kyd(nyY3K +̖6ƾhDs ZbZ 1gm֓NOL2pML,6&?O'5QjNLΫ 0]~3}Eh\w B- O|38`$7.7l`-0l3{8?~ifWkIGAגWX_,y[iKO(q$#ϿCH]f(~_w/_dfYC4+;ѿlr2>Xο|T(kfS8q=w7-}AlRc,"""""ww3ۛlج/vvv%$.o`ُ)gy 3zG/aa^X ؒƔ7w7A^0_vmb~pmNXBOQ"//̈́^90DDDDDDW& n^Bq#J*8~< w.'ZG24qF n n2Foޖc۹Gf-p3oM$]˿JsB"tج~w+o`7w?3Gn!/Xyk*i(px((*`sՒG3sXѣ'fv !Ynl 3IhSH2Wf !?~sʟw{D=jkq20~+l!oE8f?IhhQ fvAs+Gۺ~{Y;~ Bx˴vzo %$^0F~te[ wFI M$T+YcV"$0'Il60l.[iVTo(wGZ`Þx+pu,4xL/ 4=bzXB+ZMw XFBR7x(nQ+U -)!&x+p1#$1+-KOFZv$ޚ˭^OzK2;fw?ЀeT xڂ UGH^tB/{D3ݱIɱ^&P-v|pBxs_֙K(y <=Y OK wO=MhtПK2sѤ"$$NHCHg6Z4+Ѥ13_; """""[EXv%Hܕe $hss e-EgHkm q L# `~?ul&1>+}Bywr?'H @HIo ?@A""(**H"EJJキHg;;w[k_3<;;;g{Q}3;H=_'y] k+o;˙Yż+&w8Hq!9qq!<~__3;*zN'^4\^s`jfmnRMv9Wjfv6q";*OƝe{'=4LWiDJMN3p;ehfNG+wDo} TXe*qv Z ^kw$.f:$PPvn0s^;U&[|,ůrۚC{`/hK)?M3A&ћ+;TWU1WfwRm|+I4x>S8?wTk_s:y\8s;}(l2MH)}\ 횒-}idtjKwlf[(k.I5t$wo OV'U9?`9b .|D{= 0⦅L☝Yk'0Dc3^c8y_$b# =^ht̖%>7F1n5egKca5>OVglLk1<0x?W~X:VlpsDDDD>|'&"""Ro""""1DDDDDDDDDDDDD:o""""""""""""" H(&"""""""""""" 4o""""""""""""" H Hrv&"""""""""""" 4o""""""""""""" H(&"""""""""""" 4o""""""""""""" H(&"""""""""""" 4o""""""""""""" 2 }m JͺgV(&pjc~'"1Sp*X?5k?Ԝ։Hl Uj~gWGDDDDDDD'RM:酀Iʟ옚 pL76iBD̆#@`8{5QD|VK7cf#ݓɱ~s2vUwo}v"ρwU5nlf'x' IDAT[ 32qp pO[_=l1`7`3`Q`(0x175`[`i=6 x TcއwOlayތxg+% 0p_Ve+&cI~W \T3SwME&W9 vҦ±>0qOQɾm $n|x_Ȼ"""""wYϾ>$=}@&VbPdoH7afG {m ܓu+&ݒ!.lo_mn $]n( =L h(Q|Iw;J+l#~N60 /M[ߤ'魴9%GӉn٤M$mڶR||o"ePA;EgXX/5=W5DzA/l/w$Doq1ugH[i L)JShf-D83o҆?'ӯ!D`n%#lf6/;x{ ݟHY O7Ǫ#IuymY/SAt3[´Kifgx +=nqrSuDġfO?3# s4d'剔J4{ 9n>9 |1y>$s^wtI]A㫥D]޾Sꆇ$?ЮeKh =lgh=+%$"""""t{/R<Ԯj44s]M .ʎO7f,I\p>E Z*}<1z:dz][l O9Ղos?pK3(fv)]wD q]>̶'Wg~O۸d10DRe4'A-^t;g{Hf1be%[]&'i.%k%k%DoÀU\>#S+f$lED/(L]st&58㹝QIp\v"h 1z%M3ۜ8}ω@hw_?(yDDzw*>$R}DJQu!wuAc?iKz4)IZ}iw*Umul*۟@`\FHAtZ6jLgYي([=;li"(Xr ;55]%eoצf}Nʹ0 U[l-Y*Q``` DOÒYgNߑ㡥o6mK)"""""}o""""%~?NW';"ZZJDe*e-e[w߰JٿI1@JH/7eh K+-8yUdfӖ؉؜t#U8!-*_N^lz貥ڌRD`-3Ye3s[=),{MRK$IZH3SW{_H""""ky@+4?Rf)6=2U>SYf7}Z6)~=֢q^T>^%z*/WXv*e? Ƶ@¸lf6_?},\}!"""""}T rݝw <^n: 0Cb|'r^Pg;fF?cls q`q`^bͼ=c 'LJkaif<:'{tBC>I\H.1D QDz.m`fÀUc|>Ĥmwu-lňLw| M!һ=^3OqQm|lvb}=/6ky٣mDI/1>/D*C\^m"ѴG:UMcɣ UYXJY@ue-^`f[UYGw/=:25?YNQ-\ 1&Y%3 ɹ|Xl)q|VWc}cS R 8q8̞nCBSb*>K>Wl0iq5eC#XևfvKwmBWu`JiftjfK@7gߞDj&]cvT66M:)W>ުU>K+}Go^LΛYum3{4[(,8؆=ײ>,؅*3#3}O)3385 RwRcdכxo@+ݖAopqD[/8\0O*}_oob+ɲEs_`c*81^F(:..sQAρKUxTUo HwjV3o ,YJղ%,bfRw8YpqYe*Yo˟ZʎQRPՂ3eǛ+Sf̲yʔ[_6TO8snFGV-F.ݟ~>砪Gf9mPR7w-WĘ嗓Ǐ;Q*F\]-5E W907n'p/f $;nqqgfzF&61BjDr#Rokf{uljyXvp21|X%y ,MC2O²JD12Wғ@_N~ GQTฮX/SDො`fv>&~Y\ottjL ɍcmNܼRYa]A3[+1۾+V=EDDDDmvlanbBEf6Yv~Bʹ|Ofv$q^4If;V |w8 <@ۘ%!:ǘپN*= D\*%O#x A;)=BCf܍ sJGP1̆mܨLrmof:yH2﫳 oT)SX:8:)߄xmWcHmpj =&d_\JzKװ^VCgx}MTO=T(|KOk~dEٓ$q#YM{&/DDDDD7@!Ab#B()ss,o3; ~ȯN\DjfϬavJM?@^!~خN"0(x+y{Ӷhx{:iMd`tK=`v'.6z?l*L?$,xo3n ^}xަ//K>'q{I^AOۋDIۚܶ?Sx8yLrK6 Rp[ eߧr<83$уwe2$}4N|vLNw鞊כjM"^G:8O|{-qjc1e/L|Aq:U2eP_"0`oN=!]ͦdR$> <|J=]8Y" [z{{M)x,Kw0T)[ͣfWWR)BDG3}tV0,rڣZU^=k}Nzу`3J1Kf6WM,"""""Rv<FTXw_wzǁU 2 2U;( U9̾} o?̶gVXg8qte*ۼ>S~ e˔s!S3UN `u[{]a@Jv;4ѣ>f/uRe{gSrܯ~D`j*\LGy.#zn-U94)^nt|~^ *D:Ӏelgxn%劉J[2As5у[UXg"@Xr]Qu[':] USІG2 e +Q_W!Uu1ȭ?>U2eHYJ}6G{?M(9[U;!UˏJ- X~ zY(<]ԎGzǥGT{\mC=C=h֣S3uG-ݳ~ 1>PDJΡ7׽z"7@ڑ_XzڑQ_XnwB,yB'y=w?1d/kC9n"P1uO$zYTϸ]{d{KKSʭ1fMmUȾ/vjwsVw w?ݫcfʴYs?n6WA$zc<ơہ~ZgSK^u3fvaq=N>^;;~cߡ čVHlH\^'7*٢y5bѳ#SYgX=È n{^V0S>};1iouW8kù58׎-M[JY7%@~Ta[G+p6/f`\wոNL?WU[#K <=jnxw/;Ec}\iņ#3W3M5Sz3[HvݯFʎxHOcu}_>OqJN"R[Vv-9'gf u duDcgfljϽ=ZVpwj(#v~M-8%{h3;̞%__03;OuG۹~8}J23[%ZHG Ò u:/3;mlmmfWPzc lB.Yw@b;C.kA52 e+HnYjo$]%I}#TĹpS367!%i^mfta3mn^%8x"""""K)yP^{vbQl;Ij=3/+ef!Iﺞt(饺l2k(75b/Fo f4'r)Ӿ׉7]|dfO=A B/(פ2)f%R5F|'Xb?#č.1>!z Hv'"cY"fv?Fۘ}+ܐx&7gf+QW.S bl̻lgfٻI;L>N m\8#|ffsf6=iDou+Y}#v^-QroΕ-#;y6c%% :Z_\LE^rBf$h]]CoIh;EkaK=Z=DpYC,{fRMk fv0hh(D d ܭz'~D£\jM3$[uO|jbI`h}wmZ襵 8c9DPbE"CD,"kĹߩكi VA0ݯѶܒ޼?& +go4m4(y^rӽ#cԼk 4>#S.^8?l%%[9^4YE~ KT[p<1ކg`@+$i wߋSCn^9"؈t""""" tz/yR!NB2,'Rj,1Abf6 g0%;vW3~̏JmTcʸ-53x1ru̾ױ:٠cIgfi >'j5gCMU ]c@}a-t%{=CTqUOZϹ`t|VI_LNK-M,O- \mf?rܽSjYɔ"EM7B$cV#'YKow̖!Qޘ1$𗧞qɘo;`[D{j<{3k%!Dpq >%i7"R/M=6x^h&W){3mEs=~N#7/#ifv>Pxp}1h#ҧ/LI:1NDqanBDDDDD|elR w>- I= ~eӭҙ"Gev+qmBB&)$zԍƄ\&Nd'RG:꒞i~2A DoIql3{u|'pw7 wkgu=Y#I41acx&c^<:Z׋t1TSg7%7\Fm)سuL%IqEDDDD l Ig9*ſ ^Ƥf 7Jz:HoN.^:dK263@rz#3]ک}'zDz3Ŏye_:ө/=P!Pqwwߟ)2h$jdUD/Jˣm쎲=ݫ,Y]ύ2]s8f3֧HokRkgf?->cM-YL/gfXjL#u1uc\%3ݩRLo\Guv9uGzzZVNի59G3*1{z13[ l4o6iU/w݈sOv{rfv{`f_5jS`F5Fz?w'w=x~^5>#"""""S۷kɴ0jzhf"WO,XލkNc$i).w'Juofz'3'Iy*uJpOfհ.@w)zmfRO4<{!UcdOݢҲ牚fN:{iM}!=%SnH_o S0 }E1mLT[zWԥG&l鎲=_i clB[<5s.y.%^QdfcѨnvw{f6,fpTf>K 3;cb<+JMn9#3{6pS3;2k|8DDDDDDDD}!S3[1Gu3\? \}mZc0qevlY*4XoSfSNq,ۋ}*g23$1&{ofXdr6Wgvri窬YΦ8:h֛8Yn?@2Ūkf_s cf6Xop!o8OjD۪kfz3;JgHADDDDDDDDosEl$~&\46ylo3p'iǘ?ʥK.=,jָb 9ol!ŀWR}=1 ^@Mfkl;F~ )-f^f6.~jX2ߘYY S^Vaew5u(I}K̬dOd2tJ zp, ifk*lỴx|x̮L>W*sjfChF=3gy+h\~]n3p'0}O -S`8p <<, llɬq6݁ۈq2w0`A`E RKofwX7[!o{,%f?u~d 'evOkb !rl< Ws?*rfvp%P3?p \F\$_غDUGh @ FwΗ71l,Lq[?Yi46oˊu`UHܝ <%'ӈ`č3K58z'CS3܃ĸ'h!7/:""""""""UoAڈ4H)V-~ }f!p5m= .C1zwbf[I-Z.yKmqma{x23ۓܥ 8 t~Cqdp߬I'&)oK 3wE ޷fTSݽR%3ۉ8ӽWKGY2L|^v2I-pnU6v8@ն$c"6u;B4̹ʅYwϮV7y .Sul_D` O 'y_6)NO&>Zaw/slSpvdL^yh3[vҘbψckXf`}wmj[z{.V[|x:OqDDDDDDDDUڧZp 0H/Howx'f6Iq/YD%>"ezg$nluӑvT2~DJ¸Dsqn.t{SD]sO+Կi.I6!RG ǀH gV2bB%8*QDт3}J/іhK/ml"k:zKefK=X<9Ib<̩I )azVtϵ7 q>݌a,}Dͪ;[z{È̅T#3۹ˬ.=sԳLK%֤84bo.u:z\DjgaڞωW%Zyf68nEb`,31"5aRpQg uF}N"ҷ^ \$?NU#m̎NcՋ7GDDD[SLB>2"057qtZ@[Odfwzz5MҶ´|JzHPMDDD0[IIpj:mˉq_:Իs/fu5CruJ9i|, 4o""""""""""""" H(&"""""""""""" ]݆1!'Y 0ɬu4hX,;u-%ᶥk_o p苍oH02+&җ 4࿙iɬu )+ 0k[$""7ȖHEn(pp{3] ެW|n:[.q?׽E=EL7>̬uw&]oձ`EDD0{˻]^C7>ȬuE$]rguo#)&""""҇戈H2{?!"=o"""""}Y"@;z<>ohEDDDDF$G jthٍmHߠH`ֺ&19W\\Y&"""""cֺ r+\9W˽ej&[)&""""˙\]ivDDDDD X5*/Ԇ2 bf{V[m~DDDDD+NR}`ך0^B7^ʬu qosZ%"""""݅Y oAQ4LSMDDDD2k] x`LVHwdֺ!p5pb7;)=Hu"""""XfCkx;R7qoXxBS:E"=o"""""O+v?ro9Ƚjto-oV(vY랝$Ki'EDDDDz֍{+9˽j,fÀy2Z%ҳ盈H ꬆH 0L%#:E"=zTaf#R^u=""嘵JV-:I"""""Cn  (x {˔mHϠo"""HPxصiϬ?pr"r'pzÁc;9"=o"""""þJe]rg6FDDDDDz^ni:3#S(&"""";Pflঢ়'Y< PD2|ZY|{ U,llHOHϷACg6DDDDDDzπ?YYB@7o2_R7ikG (")>VJzH-_2070xg׹fc80x?SݯM-l , , &Iڗ}XaovJ-{ղ/6g_z*SYsɩ*bt__U큍EY+^y9*5kߞZ>x}!^QTm ww{e`zľ $i&ZaZۖY|ugEDDDDDz'ZV+xmHfm.bffD`/qGԶD-iۙ85kOm @V7l_օd[H-kuj0 ,Mw6cYf p8+w?L6ф)>3G{W![su4+`H*f'nsTr~#1,YeHgG:YPƂQM$Z'"$nGܠWxso}UD1k=yEMDD:DOs_xtr.جEf w^_0cOˍLJqm_3;?.B[Sx \UcfU(J`'?asÉyG3j-Rj⃁Ml<v~-FU3g԰H5K?}stfk,OfGk[wqDD:  3k]нeRg7HRMDD'-lgуDZu)NM8mq{sAc3w^v0`K'd D%e҃F<V1gTAwNfiuj4pŁ11]*[x;2k,<+mu"eT-l:R5}XX8I{AҲT^L96[0]+DUfk-Jsу$z<Ȼ!a&"Rfg̲͌}}h5k}Z*"- (&PI>DiAvuu 1pr7UJ3Y5~sKl'v҉ ?w73- LuIyU~È V^ $)?ɦDjjޱ?>/Y9IDzq- J>O5%v2˨`~"MVC%=Ν1en+d:&ٚ/7U9˼l4&SjQ@I2mUY@gڡ63{?3Ty-\fNm̬uLs!|}xsySMDkl_5M;LYy/xͬ'fC""6|MVQŶjhBf5w^Ƕ86:D2kݜ,X`Bre ""ң 4 INq:|>?x+AjDDDQMDD \d2ڇ '㜝|?3^ZVr|ǩه͖M9ˎ?vnWJ'hC \1<_2gNڥɬPb_Y .;ϣ""}yfb5_kgďa][&Hh7I'QyJ4J9KPsܽ; s.~$8UlX - 5r'\9ܽ=@q7$+\c[ rfZ!R޶p1)&"Gm4==0ki]Y"""@&""isձNf)[δ{o{ul]"ףfv3C2k}GUm -R( &E (E@AP\E/ޫ~X.6Ċ TEz'i3 sLd>M df^z8>(5\]3c5-_}kytZrKjT U h>ӧņ.L)T-zůϨLZQ "5ؘC2$`)H:;㚳mVQv ~E$PQ5+%"˥s)n*vY/MRJuHR7"Q <"*n=y]f;RJJoJ)~('w.[k+/D$y9(Ø_;}DD: LI2rɛkg;?/6guHD\JO$'0 u(cL/RYHTV2K+]s_ű@ r$y ̓x_)z]-:S*7}Rʝ&i˻nc:1EU`ʮr;M2gX)LƘs"2@7Ƙl 1fl Rp\ LUac~kp '%xs""I@qKsS Oc_RJe Ob}c7rKpgl)ʡSĜpNϛzgCGD D:Oi_{M$ދ`z=/8~م+kHsGhc*Y)2_W17\;]E$x~5le7aɵ/'1|\`";""X_x'Q q"2O~1zX_mMʙNgƘ~QxhoHcR?iܧt_NȇxVJߔRJcΰz=AX,STe_Us̟J)v.=(cޙڔ/ұn4[/4~, .ǷmRXAyX3=$r tW1îc@T ,"cƺo *% %"$k͏Tc}t0WpwƘ5>3?KbG= ||X`8~!`"r]T7R\^ wX'RIOS1Q^mٔ XY)ޣ$Ƶ`}2ƼCx;V̹TkcY("yw`/{0Gp`T3ƜLz3U]gU D1fA*uW+`}40TD:?NsMXůƘ+^c= -wy1[XNs"Rs!9RYߔRJmDR{  B.<}1r^]ޚҌ7o0ڕ])NDD>""QD^S:vD)|`8~2119|"]`C^N,ᛅu&ϵ].GmQC pHT#c/jL^7w]c~u6tLF ` 3Ͼ9Ƙ?N ::W5ن#,QoT Xu:)ˏȋ>%ގ]mno ,"R 3[;g<)"nc߮Lu;Ƙdc`GYw`?b#똉oܳ: u/;( )RkǡRJ,J$*x\ѳ +s?'r]wcaM,Jǎ7ѵkEڷ/G|O)rJKyS:2O%p!~yS!K ޘ 04gz̧'=L4cZ+vfX`9ƘV 9ykV@ `k6""anω{){<ou30lҥ<.Nɦt~cnDcnV*ү:*R""`q _ʕRJܝ5yfrgĿL!z /O?mѣ}? ]VR*sѺu9<ʤImRG|nYj1vTkfxs* U!"Rחܼg\ou4 ;ʻ|Wv4s1SJ)ΉL9{~N[xxހ]joRY<@%lɈ-(YҞ27>ACkdFQLk1iȤQ=7jԚmYcۍ^>w?-γk݇64Ɯ~rT'w^Z ?1EsݓL=srG,?wͮc=JweJ)T`}#ooi5V`]J) T 4x(' kB+خ=h5fȐkQJkküz]T<̑3aɌpc\ɵ&}.IsW3"cAox7]TV$ ~;~cRJeaa! Ґ~@L}ˢKG8}?qU=@c:r-B4ƘigM*ğ1^~Q/~?8STqnu/fޞXE WD>{D$X5r0pZD HaW6""Ru+[I 6 R*RJ)8gO~WJ)XI :gBOllu fƌ X;WJ֮]Y/F8;rfP')fSU$ʹ&; dr#TM~Eͽ~(7W03Q?gυ1<2\(uo)Y""oHWR_D8ʥ^㧰ο;wݎnGG\a ^a?֠B4R7n_Y=McLAc?ӐRCY`>(nҺ h|[z4w@sܜJ9Y8 /s`Y2g MD.4=R)e7RJ)MĿSǟcZsT8]?Jl\PR]޼LҞH\G)sĔ))S~3c۱,t2nʊ+η߶=ۦnq-*,|ν\lGG9V#mwˉ3R̉7Hηڎ) [0Wu_Q?+:;Nӗż(Ɗun)"%E!g1*Q $ ,sBA>7@>쨞L?,+tc.uT;i']JױR*{~RJ)Mx6HXܵhIǎ7\J)]TX}wZSN_tf䠴?uwҰ*4Mi(+"-|0Q1Vzvisykh9LsT-">s>yO$c}w-T67RJ)|ˀo5{K k(Tvkɟ?$|BY-ۍ%CCK݀y"gPn`M |ਞ`9B*׮]m)ϔk1 iOҘ^y_c6?;隷'[)uiM)RJ)R!(s/ʝ:qc_\R9Wyy{o捨XEB2ecaN9.5ֈ&""CD;'6gNW<7cIl+Sq X*"?"KD~]: ;1QG߼C]s=2R,x Su"kcD0 u(6nOacDdܒ|yD| P))J)RJ)63b۴5CyjϡR#T7W',ͱs(bWX"P(P*ف1f+Uo@eKvE$8+uK|-TƘ"&V#Qi`GX mK_ Iew;@U`:Phu^Tv%Gvb`#pwXϓ;-1pePuKM ɜ56D<>@K-%c.z򮺊usJ4ϗ 1E`*֙r-\OcR| [?Ƙ-"R+=*r0M;RJ)R4/.VJLk1ul 5ڄ-hE*cNc 4kw?V`bu\js~msc.lK61fs 1_` MSd s+`_M11~UJeM)RJ)h#fRйsy]T } IDAT>u!LW&I咧`;/ܽR/p*=cvHV`.t]|i@n`);Hmta,<l ,NnΏu%=bڌts{O8'"Ud+b8N32GV:1X!հ0T a" îkR?O fc֦$Dd"V:;^ˉܮNXA?RYߔRJ)R*@bXdRY:u*)TըQI""y[¼[cSY #ʹsRm?f*WСwG;wf׮]Iu̘1ХK}oߞDW\I1j* ĢE^ߺu+ , **bŊoЯ_?C2uԤĉѣ;w䡇bjϳv͢E1b7믿oi5kKȑ#9rk[cذaI{^z)}ũS:t(9/_~֭[̙3yڵ+Æ r>ϱb }YVZm+{ѥKƍ$5kѴU, I61O\GK\RJ)rM;RJ)R*'|B=oL4zy|c  EޜN8?Oǎ} ]pロ󩽻hmW_,[Mo5j`ٲez>Nƍ 9?~g}6mp̙4;o<ׯ5|rׯ<_Nj*W|5?L3gO{ndoɹpBڴ%wk0&\RJ)rRJ)R v 4ȣdɒ4nܘuw^/_1ư{nzAӦM/!!|I&ESfMnf.\uX~=ϟOj7k,ڵk… qg޼yPڶmK)^8߿}~lB|| ?0.]eӼysNJ…mټysҵTÆ _/_ `K;wnƌÃ>~ǎs=ڵ+Ve|7=ocĈHs&-[^{{{믿`Ȑ!)R$ٵ>|3vX?Q>sy[@`ܸqΝֶ|,_S.QZXt\)—_~I=ʚ5kR E.]l;oK3;Ŵm޽x˗/* f_~o߾8qW#a-u7xr8qןD̚5cDzf͚LӢU. y5j0æ7fxeJ) 4RJ)RJ)hUVP!f͚5PjU.]JÆ Nl2z-[K/ĪU?;ѣG?ddN>P|S *U_|M6KË/s=g Ov3)R гgO@Ŋ5k;ve…~͝ի3fzV`\x>|m=6m?kI+uV^ydҥ 7njժIuw>66Yf%CBB7o^7 &Mĺu[jX[VUqRJ)ThM)RJ)npgڴiwy;#~%J_@~ڂP͚5wM6U'x'>|׶Ѷrn^\BϞ=裏r'|5̙ƍmuQQQԪU+~AAA|DDD PcƌIu=_~e͛gĸq(W\}#""luGz~m)QׯO Zkxx_Q{-vL+vRJ)ShM)RJ)np}-VhQSߒ%K2p@۱c[R944Χ["Ψ~k+Wʙ8y$wu-fT޽{7=]voߞ-[tϪ1Tώ"pw؃~-ҹ*<)R*RJ)RJNϾ>_N Jqܔ%\g\\.]so';XNW\Iɓ1b HMtt4Çu/^!C8fVUIږk1jߓL_[9WRJJw)RJ) hK羞Qw뭷Kǔ;Kfԩ,_S2m4lْlիWӢE zȑ# y}oR9**˗/3zhr w`sZPٟ@mZ^[^WAt Cɒ%kwf'{MD߿??SLaڴi̝;#̙3?a7ƍ_2KJ7wޏE 1ƕfʔRJ)]iM)RJ)n`E;ƥKț7_-w܄s#Grm5_Z5nܘƍ3tP;w.söƌCdd$osDEE'|T7f._w}׫p¶?"S7%{>*O<ʕ+O}qFol F=UO1ywM0a/_fĉ~KEO\\߁]v8nJ\r4h@ ;;q޽; ț7/mڴM6>}aÆcǎv䥗^⫯ :?=֭7pJbʛ4+R*RJ)RJ&NWEv஻MFll_sfڵkӷo_[ƍ4mu3f̠C\pqBBBleuFXŊmu_c۰cXIಈA"R5v۵p"r8󘈼cy@JlIRJ)RJ)oAJlu*}aڵ'|m6iSe*W'N;t-ZW^,Yk,..M61j(ڶmM7￟l]vѯ_?"""ӧSNM6uYFIV8~xR}2eڵ_/9=z`Ʉ^";RMyʃM6[|7L8v/)^xR9>>ݻӿvik{ƌC:uصkG}D |`Uظqc~g|E-ZD֭=3ڵG_|4裏U|M#G3`ʔ)C믿믿z4k֌Çi&ۿ/^LnomL=~/Ӷz"";XZY74 ЪwF]'h t>3t.s IDATf๣j%0 v݁F.we9ug Ƙi1&ٝo"8:->p0+ oaՁQ\]w xxォRJe}z RJ)RJ)ˤIhժgΜI;v,cǎ%_|Ԯ]{ra[ߧ~B uVl׮cǎo߾I?~<Ǐ'44rQX1^ɓ'9t_:u*龀P+U ŋ9rk|244c~g8uܙiӦѥK.]֭[iѢsΥ\r^૯m;w.sھk׮ @%4i:uܹskiȑ9rɹsؽ{w׏~}_|+IڅWreƍQ_}DyaڴitܙUV%o۶'xRJQdI8uǎ9}eaɒ%,Y0*VH ѣ>|'Nxڵ+=XeOf[:>}ߊ!4fh[WuH8L[cV3-M8=AEcDG>/]-"c~wr)@cG`qO9+1 _')ÝƘY扏`^Ƙ?}]+2stRJeM)RJ)cƌ+VŋY|GgϞ >#,Z*Ux\%::˗_gϞdo|qV^ͼyX|9{-ZiӦѺukEv1c̴hZh,Qdd$97;d-[ھ}X|97ooyCBB]˖-ܹsuWSNј1cB̛:u6mڤ?߿FGGk֬Youwt@_|oQiii-;S+W=QLLx }wK~n__|Ν={4ٳ/ki6oҩ>H<󌢢>+sJHqǭѰ[;J72ZJ':tAcDI5.i6kݒv7]emYiYlYVꦢl,6}miGci&6teY(c_LeX|@`,V-c!iX3]dYsz_A'1ɪ4Dy7o5 t-S?MswRnn4h M2E'pBP!Y{>SVV T\\XhȐ!=z&MzzjرC{Unn|2e&OlGQOeYVZK*77WJHHP5vXtI`}ٚ;wn .~V ,ЦM-ǣLM0Azj)32׫+WjŊSAA^էO5Jcǎ՘1cB{5k(77Wڻw~iĉ:#B /~{8cbn-Q/? 9MM ֭r/ѻ[8}|55gr c.=zвv}Zg,˺*s\ޞ,yw1H>`L˲ gKzP!e5bqc$5+)ӲGҙ,+OXc[uO .需ֺC7bJ9zHa#3ܶSJK.˯ۧO͞=r4m4M{6cNSvucbbtYgu5{*˥#=8YRfIrS) Os/k: $3])˒:i)5vw Gr&I'oWnn}enCvwIGK:&Yw$ͳ,k{ bdDN ,ZmY5IU[Op/kIIWܟDc˲,oۻD,0XJJjbE˳@VQW_TMpRS+Yhͨ0U,Yus$ne(uwMR1 cLZ+i rwiճN=iI4cҡ`O0&t[t@#<~Yfܹ;tXD Wmm[M ) 9ܕ> cEɲ71oK:BLI?th ;$\lc̏,Z>9rK:Y"eY~I_O҉NuP!}%=obYVMc7kY-_u,+3_Y/]~6ޟv 1$яl4[wEں`?ׯCzhߢׯ6ԓ,+ϲ,˺ڲfHZIۙƘ=}1 +cFH:^u̵%j|^#|0\F͝{բEN:pnrT\0`\ûv}{w0UҽY:>xhz38t;yOR~ﲀ[K%55CvUhYS˷DZF@k=P͘1o߾. #mb!3mhaOŲ,'ߢ;bYGM;ٮ}j۳AHʀnw @{F9 SOnZZƊ 2,Yyv&MSNP+GEqXQtl2 tggc% :x=^oK@ |0޷DWo" W!C7{om)N S%vi&[y_Rk1&ОceYk$n4 \5T{y_\ORnI{4Ƥcs,DoP˫_#g{Z46v-÷0UQjs1&D1%0<}-˲$]'qZ;LrcQi4^ l {&ZU#7Ó%}ey1#1RdoUק.=S |jk}V{ۘ1> SE&.η(i\c̿1ccM1f1hcc>=ɑtK',k &i1}cƘIƘ>neiD.IwIӁw^ԸHI5e˲^@cfwc1cY))KMC>dL0 g~MVaE$£YVllPM#\}bmXRmtݳMj&|+"| GO}WTc*%]dYVqk',Iji"eYƘ$.oT-N5k:A "DJ|8 yEa /lvGTсwװ46wm-4 YOI3$ Sno;϶0R{OjչKҙ64>I.7(pAzoW^٢t퇅2|SCݶ6֯_3g[8ݕeY?3<'gH:ARVQ],os[*i1G.w֮W. IJz۲mm\"KR0P |I $,+@OnY|cIKPj} "<>eYm\;٧ g "Xzt]ikZU/H~U?g+jkr$+˲6H 韒dI4`WuJ-ieY{w.T&DReY9!~r~;W1IUs#)FuHҖP?˲r @Iռ}]GyfYE};uM\!tsK>VEEC3!]rIM"4e.lk^/Kuk/۸ "|4_sr9t-|첏U[kh>fZ` $3k5j@C;U8Iz͚1crsT.#zWfuaY㭬8PpNj|{|wQǿ&_]:Lup͜y23T1ުVsWyylHљg]:@G#|nt%պcO'wm~}.}.i 5hP JO w(/('RUɩTNNvʕmG9nWV] t47V+7-m9Ao8,KZPk68tC}я>맘lNv aoЍ2PoM>P/,9Ts). l-ӤI$y<Җ-/ S5 |`MG.Pk|8MZ<)e22?ާq: j[i]bbRRW44OO^Y5R{KǏ<ңˍ ghCJJ˯$K22»[0id^prK3nӋ&793d-#ܰoE`?#}f5.Ԙ0Ue***~'FG{շoY+=P'ߡ丆N*O> cE|>mc+L zO9mmlɒhw[4J ociܸ]a$oЃx2Ozv{@oRSc'߃#F*):L zX0sʕQ OTYr4aa4g'! -KzX2$e6/wG0Uz"7\N`ml^^y%FB|ƌ@DهmGn_…s}66ݤ$~x|->oK|vԏR>̯VLu~QvR7oЋMw?]z8=Ll .7/m„: a nߓbat:To}Y7|0-6aK}5~W4tɚqnMZΥnQl[ ¦lۙat7~=zIWO{G6'?ߡŋxhC|+9Rr_))-%$XKFeeFee?TVS^oǺ\>Gci&mۃR gO7ͯjv +yI rciĈ\Mb#lZǚ{^J@W|exNo,?DO/O$uD.Ԙ1{\r@Fh9o9oRiUV7+%&hB \>}J#z ʊX %(.y3@GhSJ|.:j.:jjN=TS7Rbbjj8X)8bc݊s+.VnSptAat7@Hb\>][ I,)S)3H~eEp pX2 wb ST *o#x=hr؞=,aIop]K5uK]ղ=^vvxdbdIz:7@<~b<55QOi]vc>at%7@Fyumu놆,%% ڳǾSN;W۶MUnnZȱzpTcѻW2ov;m6mla"޽ɱaXހ p@`m8A;v S5~Wd>znzoorĈl{Fؚ56*L@l:@EEI/\'"|T.~*FKoXtdX166sz!|QtWRr2F>h]oBoq4cڼyP*:gL! T7@rojx7;*\^SKUIImyaށ P IDATa25_Wb~̲.oUTjIIϚYw,LUp#|tC9d}|ݺZd|>^Rpd;& 6z^:̩[(6kW}dUTĆ28p[ ԢEv\-5%xTp虮<~F/9V~y|xqq{oFÛZ5\EEIM; zw Ce 4K~V~M2;Ӵ~JKoHw\]6D Sw>KV=fAڼyFUff+T)4xMѮ]}eYMk9o@"|t޸ =d~0xuu֭u*.έBef)#i)t ߨ2Viڽ;]yyMϞI_Xua; |t cˏVLߠ|xQ*k_uu*+k$V\\r|=eIQ ,{:J]TlW7L?Fs]8M_uĨ2 CO/֙S] poH,ҭ?^VoFiڃUVM 2,YS6눃eZ Rku⣿Ԣ 4w(}nv& wzj:@3n#$ "F˧S'lөՏU)4AI)IT^Y>G$ƺ50B*40+ wY |Dj'Vk|fAK6QA o@!|:ABt7 o@!|:ABt7 o@qб>]#3!lj}O]1ϒ߰oa"x^4 oswV97%+VZӣ^m󪲶!,ϥo}]MGc[<Ӌ+4kOJWuwtsO/-Q~ЩT+ w؇ X͋%}] Rj~i\fN$UXzmY^XR;ܪi;uόj׵7f{}F;}]Uy=8dK3'GCbu@_f*}VmfBteFiִ8͜iagwUPްH9-IC2vUy|lrkj}"K|]FGg358ʪzzQX^ƝiHK%h␺@E߽^Z|R=禄|kk4weю|qF'я9!k_U,w>_l $??܆ι_Q:"Ukj}V{K':Cc5{Z;"ۅ -#oG9Sl[P; ȧG>(cg&R 2ReU5)ǫM9z =*F_{vnyT}W>־kz֊jEA8]lIY_FZ\|YaãooǍ~?۩KKjG %¯׾k_Uaz49"j k @w5:Ƽ>stּٓdhZq^-k%i _TZ ޚZZZاגm6D) y|aNSk1/|QY+h6x dY}tc!]#??ЉS(]oе{ _b]xa[U;ݚ<xt"R.}H_]X3jKǥ*˭kmSDe;u cc4yhq*5ޡZKY{˫QTT9hoRps} y.}X~NU%׫-{ZݭCڲnG9_NS_ bN#GDk(Kv*)(ԧ^_Wۦbs"j\VW>U$L=i\V|mn-{kYz*߾?xLVj3FᡱzPeFi@ChN\Qm #faRIqHlB|J64 iN^%]X^ޑe4sjgFi(Ej Qŷӱ;fWFx/./t9xpmb,u]\/NI5'&j.LcV7KUY[W؞bnOiz[ %84U G+1ѓT~PU ѤQc_ Jk=ǥߜ ǫ3Ocm-KBW% [tn'J%utcy@~=nh؃ICi:& :e|50۫˞,gkR86Vo @i폿=A i~IqzT0UYn]xDYu8&qcD۵'%2l[cҗw[巤_hahimoR] g$ɫAKKTT4%]t ,#ѡOo+k=xâizW}ڬ-/~Q,o?84Vѿm(ee~ujRTԽ4'CGhZ'0])}rk&[c'Ѳ,j2ecMƆqimlabo'yuk@yIz>MƎoo[gpWO\it$7@C?Im3ԿfŖok{Ƥ6N܌jXmioZO5yXhQm݇7L>QX?$]vl޻OP"6Վ :]}M5݃ͱ,5 ].82l\Ч||*i ={MA0ң)p\^Zg=۞_FulrC]l.хGHE朜щsK*;,6>em|lqM:/uI~n :CJCGl7;Zg+w%\pFڵ''*5>?5;%5FpCٞm'LW+yGkA Shf_"QU(.82޶dSi?e}}u=-)y}ҧ!Lׁt_ Ԣp鐞*M\GRGr˯{lvĈ&5IF2=e*.S'&]s\wF˲ܶxZtGu@DN b]Ǝe|v[Un+ |l|TUk)p}ܧVE}ƴ=}bG[әhE`)>2t攎ۚպmʯKަSJv mzNI:d`o|嶭/٩Bd|΍9-=ђ͵GEk{} 2~ct~(nں[)eUzzQmiR-=>} ;R͹^uWz>:л+*JmiߺfE-߳{9Oυ1D_X"k_ ?~߮Uca+cO-y߱c; ϩV~D 7@(QrCō߸[y/j['uz?nϲ*vfSF;~[˟,Rni~|Öa<$c ȧG>(zWh\_d:h-o70}aIFŕ 5͇<ŕ~&!JR$FRZC ':j?mх3Aj|,0M[-}]f>\l8zKNݯx\ӭ499di ߳;5Nk=ݨ] C`7qQ͇07Zb ތ~uj=`zmt+%A#ܾڈ2RԱclŞb^*{nGﮮn{}Fpihk+S4Z>/ħ[#|t _t|殴.M ͰGC_XҚot זUi;:)4'Cg/usmp*{vKA+M_xd{ޟ+故quMK`Oq괉)Noo4^ -l@r{-]Lj ˰>.7a}kk.޹&;R+,TIU׆;N$v}T]$+ &β>ԗYOӒlg*je!uwжUR/yzkpwdnjpݕt?on[z*?k=7E1ڃ{ z<:]8=^Py{ږn=R~4Nx'6o^C'KTurړ˫g$ʕ]\IU'$5zKFkwyr[~U7ՅsN4{ZuhomM}S2:hG-֮†0.蹟C naVغ-r됛rux61V Vb+/k.VUnON'i6d{b{C_Ti75 16FD_SNT\WNOk;fj<;lxtK(o7ih:,N=W^oQ]EF_dyG/K'k䗤:^1z'I-ꂉ|(>w7tԽZVׯPlTCп~3u"Ӌ*{vJ1!o}rk?x_^5 +Z1F/\qĘ .g>hԑZV_ _`I@S'-o'ՇSZB/}S>M2k7m,Ciz4I yRlۚJ?OjPpX4%5_{=6z4xFRcPS;@7}?ft>,<'$4U2CQNW(%}oE%9tZ 6D:u?HѣzkE*kbG/NIe&4s6KW{ε6D͚_)+T^Ӵ)NwDI=4Q/!/zgUmu+'ON͚_-I)o.s K*-T_jִv:lxu%IC5|mR?9tdD=q[]6IbtX99Nqѽ8݊z㊿@a;$ k桋,kΫ]\Ne%;g-fz{.h3Y6z]Sy)NtgPVl{PFꔎƊ+U^OU&;40թΐCا /٩%g~2Z3S(>iSGy~TIqF}ߥ9E*M9UPQ6 ũQ\PMmɐ55gr;.hG,kί Rb ֔#uĈι@ :஽fGLs*3cώ4zpSu9Qy@4| XKj(I[8Po[ma}) mci@Ju |[sgv}YUWǢIDATFL|CY?WhA:uPb*ZǣՆݝ5ihT*@oBovw637t 7-Rn0$JZWOh{W~UXW\QzCҜ:vtN+c]9{| (je81uw;f@45 ũK%ć l,K)('."eͩT*I%o*ܿI@!|HRvqRr%0ol7@L~ < 89TZ*wTkb]ta 8ontХ 0o7@Dw C_Sg[~Z8rR'ioK ||98uz*w>4tr˚ g=)7e!i$f^gx J jkpG+I5ZaXkBsWm27^}+F@/>|jYsև<7JI{$iުQ0WUȮE"YС 3AkK @2SLt*PlQB u(b- bˋt@^D)2&5O.M;$̜{~swWr-Im. 3oIIYjJqG<|R%MvL JW'(ImTÉ7k7LI.h. o,Ko,.xq+Jj2sozSe^;ٸybéKo>b$6x oύIM?8_='^~jn<2r)&3;O:R$sHwo;P'+>ǟkd$W6 xoS)INN!Ip݇rۢY͆'}vq{#%9}=|R|&IJO\5'K5 ^23΃GNW&SJH.PtH)I$/|t55 ^pY9cGN7$9#HY$%I==5}ܬxq#0p|oOPFFgRd&`):z('Gd@=<،f0&ͻ0onV+Rh2(:$&+Iz9O`6O8!C2T%II$_h6z)FA)I>I~Ӥ|ubιmo+8|Ք|r]%x)ԥh@(FI)R?HI$ɥ7Ή^~chCtF_602z2Q76 (+$'Y$<9kVCt92”I>PJ|RۓN4IkԜz)}?l8FsYVGfI#K&9zEQ|RG[Ie9Ofӛ@|g}&ջ,=RK74%vN)^䌪jKWz;ܺhV~xfN;c?~o{ќ>3pL~|mkKrY)fݠ|h@)/PU\dPr]~ofTN:9diN l2!?~Yg\R$IРR;QUS|%ɁC={7g]l~m๜t9di9j84Yarn,xܲhV_۫m)ɹKh ` (~U&$d$Y28-K_5y~+20uM޲&SWnz2*M(}aI|aJWM oUS^9=sZ{<$.~@0FRoIr]몪$dNLO嫦䖇o=&N(6T 8]aĬZEI$YXJz ` *^$7WU$GdkwBL~mKw-'8& l`,QqCI>ΪVmIf &d8])$Ios &Y^Jl|1%3 M~|Q@(Co!7t :D|Q@(Co!76I]MU(=f>)`Zꮦ1Nmyƃ61NMt>m7؆ zۊ6s1U#ɞmo v|{GWSY{k)(=fjjW#m曒foMI WJ%RgfnfSUL6?f7} ̏ۻG%fma7@/P@kWMH ?j3_RJhW@P@+~,6gWUkj7Z'$9Ͳ[N«P@|jsU՚l[Y(?\6k> O'6k7R/b7/&Jݒ|Z씪j6˛8S\|@*m֎OrU-${K z D)$mgUd=[Ifmm z wm7K7w'&jߒLζKWJƱj5w|x;~R纓 zN@*3`,.DƠjw^:ɉ79>}Z_ώK5Id^)O4Z\IlJrr) XU&$";.de /^?FTUk _$93ۿM}ϋ>|qZg&zv|q$kܞdAK_l說$''9%#J2 Ɖj{ImNroez=8L~;ސdFc$Mrk>e&Wt67Gt`L.tU7g59[p^ Ɔ]J@S8UU)I>ϓLi8Ќǒ|1 sU;YI~/[EINru)Ʀ@?QIjUIKrf%I$YPJXyo)WUUd$>ï{5 hg(3I<5:diR?`67N&49IENDB`./AppStream-0.4.0/docs/sources/images/architecture.svg0000664000175000017500000005450512226701276023055 0ustar matthiasmatthias image/svg+xml - Ratings- Comments desktop-files app-data.xml app-data-icons.tar.gz Composeserver Mirror Existingmetadata package file Client SoftwareCenter OCS Server PackageKit - extract metadata- construct metadata xapian database oauth Rebuild onrepo-enable, etc priority,stemming Rebuild onrepo-compose ./AppStream-0.4.0/docs/sources/images/pure_architecture.svg0000664000175000017500000005574312226701276024115 0ustar matthiasmatthias image/svg+xml - Ratings- Comments desktop-files app-data.xml app-data-icons Composeserver Repo onMirror Existingmetadata package file Client OCS Server OCS APIoauth Rebuild onrepo-compose Server Screen Shot One server perdistro or 3rdparty repo One or oneper distro http http Aggregates multible sources:Repos, OCS servers and possibly Screen shot servers ./AppStream-0.4.0/docs/sources/images/appstream-logo.png0000664000175000017500000005314312226701276023307 0ustar matthiasmatthiasPNG  IHDRbKGD pHYs  tIME  9%=,tEXtCommentCreated with GIMPW IDATxw\u&Uսv9` I%)S-K$ykKo^e=OdIdki%QY(FD 0yz Ug3=({MO99U?h#+v{m'k3.R>V{~"|IID1"VDСH@t#uXJ+fa?'#px1毰`Ii7l ikhѩAqcؾ?c9z[kZxU,:9tO93rmo}qgO _ +t{03Ҍ0%B)bDJtEы4>}KY|r(>n LNpeNJBGa}[J+[T$Mנ()E%^.dp~AG"eF <\CJzE99$x_znAɊ0sC1/eaQ쩘m +[pFN0|۷-5 )EE.! 9Lf]6P(; '"jLǭL>P#-gw>NcLć&#'oRDk{αXͬHTx3;ʳ?V< 6FJ#a3-[' Ք^G|c;Mh4:55`69^ F:baA4 D"QB!+FJ^&<բԀx]Jї8g#+4Y5@6 @x֩+M}םmYgu)(<᜕h0Y^,!F@@ٱ335Ju6 Taq>_̓iYں ĸ,\Jf7ij%JJ"PPfgjbxK]ty/El)7P[ȼXnq_29 !ggL;;WMq҃MB~C̎LFjxm7jڥ5F/WsVVfu ѵJ0L(Ge*Qgm:|}0pSU5T_ɍ[v:ꣳ:y`݉Nh,|]6;8NMuSZ.PߒG\| }@'1ggPx-Hَb+ ;qgzzzuT)Ye|ݹCЗwTM!/2J[ࠑ~`xZ[3m 圩?ȝ{+u|;&r=,u1338b 7!NDQmEȖ'+{J"!݉jo5g:k6u[Fb˨ $*B#Mi5*zs[H&2m4EtC@1_ 49bũڑ/_0Uyȸ10E=bH׿^8eM FFGY,4ZjƝ :>#TP.`5 2նcceb9,RHapq8;ZY0;*P\c!OIDL~>s׵,_ۼ~WmƘ>ҾcYj.22ȿl2۸vut δ=y`vD8!,Ȅ'`G"ȩzʆ V:vK5fO?t{纭Fm2ԯ%Ύ GδQu v%}{p([n3sekM#Zǒ=uf!>oQt5|uN#NR2 sRT)1=:Ꙭ,-ѯi6-~53,qP#UץHWEcNCî' :ƼlhѕRhHh!actEkD$lYF;f&MQET>DM _yOqQ2_;mhm24&  c {^}Ry-TȎMXRiRsR%2DX\ז|fWͶn@lCkװ_|LZ.SFdi~$ϐUԜN@lѤ;Nkw|eM&wPG, V>R܅10A0)?SwwURu6Elx񞦘3_Q ߪOO9?PHHamߞ3irn?<1vS")tu ߜLxD 3y8ojoU63lqGz-8ځljՃCh@xQ-]NjB3zZ3KixN) +z8p"j CC rle}sݓ=qiElN:-4KL躎K-aHiVڣ `h9~Yٳ ڌtWE e47Tip m103ml_p|ʀDr@ 2!w1VشqӨ;\sI :H* LZA3s4A'EL|ٌ hj=7֢4\ l}XC}UN^@BG4}~ "ϻN)̰(fd'j0psn5b$) 3e-v)NEF [AVT_s*iZ,o^Uv;MIDRW;wA;GzIJ/5x+[ִlfnع;yޱΆ9OWu$U `b۶#G՞!6)2So2ϯ[n!w|zIyRP'9&1>Gh (8 #y9m92L;hQlJ>!C$,@E7wYs0[U% Lc jh@eQ3X11u;œ߅=|luSn47Afr9TuFfz7E\"bo$+"AkX#;^+GjcC{4?20vHS~NM0es׸(Q!u䞝٪syzfWQC;o|{{{8=Yf(`zq MђCq@&{R5j.M&%2F3̱C,jSg5zmR\RdN:㥽o& ӣb%TRx9Zд1ݶXONO2\BEvql;soy-5Zt#6S |J\3U: D&oۯܨR*תi8i3?|JqR" NtQ͘-N6z-ZYJ^$=ٿCoT9lI" SvBi Șsx]J5)j3_yk6;r?=}\6>Gʐ~88N *)nlO޾nJV?/zZPN׷( .c,iZ4)x28JX?*U5 A$ɹ8zXf[6 2=3ægYɓs򎓃{>HT{a=qNe_1Wt^T ֝C:Z^8t4Ӊζmۦu¬ 0.G7b?$٢@>GFSwuWg'RLJrN̹TyV*PjS[dSZ+'uTE]Ȣ# '?L`цn'0b s8ccvmncr2yAQ_s >вoy?yy&4i@@S=atK!є"1kP5^]U֪*.Kw\c͏MB!Epu澽{E~zRo8sљr[\8mnUUO [9g ^wTuFm+RL9NɈŢPJ18|>P_ tƴb|"buӻvRqD?ee ]8ʀD]Z,.vƘR2I8Ypz4[PUXp5 xti3_z'bT 5i?}%bvp~ݳ̿gOM5!GHȘ-1;P%I޽{וK%{M'*W볮gYeA)q aw]Ran>F dF_ʔ z^GD{z_tvc 7x~XQ7PlIϼ]̟W/pU]%T^ǟF4;},)8Fk2aGc}C wmjlu\9uhrUMq<"p4 </~]ㄛ,STQ"RaLD}mOյ5{!1ipHn|CkB^mJM6SA;YZKsUрҾj%t{Qw| 2 a}|+yu?yzyyӛڊO?SGcX"\E'>*8hBG}4JDQ\_)_RtٲdBЩJ@꯾СCo6 -F2ɘ~꺮JwR6۫EI>?G?^;o2IУ֬J}]˼F"DivbƜxzzKw1,i{PY{w}5V~F`bUV潞 0#OЦMmD-N&vQ8cd1vb_'qhf#*i }PGD~ww7-7L6UI$1&-!{nj)X2ٔ{dA]œ>ou%7T1 ƘBQwf-HS1˘X+s=ǒHbcѸlg^AäU$#Bj:n熍-;U19v44;6 (+zsNga:?qYd2g *pxD4js]]]#SSSO==@7JZ"w|%C0\IGq/CJ_Jⷮq*#X!V%&1T)LΤX+L RLE-ef5= Q.ܾ'k+JGgʍRmCk&ݍ>6 תgYln7**>SgnvjOEق~{O}sA]zk| tz{9Uy5bqqKLpCp6-cd Ǫ1@WKUF}d80!Ǔ!cm,?nF];Pñk)>R߆[oe7BziUk8\m&&8RQ 8KEuPXXX)Cfm2BځU؟אttR-8@(urssDtlkU\e%^1\"T%HEPД]LCg} 0-2aeS9>Wf*KGumק+,ݐRBُ z:G"ǟ0rq3 3S"A*BMbq HLJ,96uq_C.o_(:f%'"h؄+XR28lK8UJkB`J: 3yFiedz+x^ر~kkD8dӝ7>/4Ry^Z IDATR(lES4Kh4o^7J](ݮɲs"|E 9lc?ْ4b'"J)cxGךλ__3Tf* &iK%ܱX}Xն[wV |2y !yXeT[{рT$U)_R'\!`EMPLL:ᇞ~|hz\X) 8@ Da`„0Cd =^]dlUiΝd[" T4,|'+0yD!wft{4ՀUfu΍}z,R5MI [U155QWd̐ kCr'}-ל+R˾ Am )5ʜsnXq;%}H@J -Aqw!0^_̲yun5,ss-C@c10S0[;%*oØˡA6CΡ9'FbMIvYʔe7|jNtkc۟>2*{Ⅳ0$jSuL^BfMaxRUV`S $ȓ粍20RV(7ډx9:Y٢DcQ$+ C H`9cIi1{_1CApJ!xDA r`mh7=6wǻ'otӝv9ʒw}HPDiuUw4Wzzz@SpouјzfuGݽڹ#VbF( ) m ` @xe,0F1IIU[hٵۅDn JyRT!B>ùL$s/9$;60>DJ5vCpn-33T"[nhkO'f4hcS'λ…()SxfL\&Pf ޛ&|;٧?̓ۘ vkt}o,%mFk޵[HUs5GuX* 4KH*ZY HE` "(iAUuUpf;x~∛I<s<2ɾSǾSY?k⦌B$XȬ8c,\ UUZ~t]UPP]^k8p|wDzkQ>UXhopqm2dU(;y/R`/4?p}4ӓj)tPzP1PgC=p\;׫ ^`ls") OlXv0 K fi-`V$,)vj7l܍1tT%1 "_h2gY,+ e | ۖݸDqܚ|ztoyq/>o>)msLb+;6Fg}LEmKIRYc7`@C:njY  |_)+l8|40a%Yj $p >0Z8!H|U'QYʑ\_9cs]m 3cg+:{zN~dj.͎~$1OklL{5QbǬVf(-1,fb~&'S~~{CVc^NVBؖ@0 gxNA* 0RKK "bJ/q_*r}EŲBYF!9g AxL >cySl&ae#7Ųo؇T}\lkvKyew v ӕQCY#,k"%xS"zLFM՜{΄;e3 a EECBL!Bg3Y.Hz?ߡ2e"eE8P{*Ӧ">1a[Uo\χT$}IʓJJETBr̞*֏;(幂æ8gzlJ*ȗw|EЉt""HS@(醳1&c\q3Ąi+#3 +BeǽTLr7w}"o1u#%,jUA+3 Hpcb@ a0ĸY PDp}C"O|ُNE+Qrrʓ/{*_vdaMNJb ڧx傢yQ ŝ}ŝG6cNkJ(ϱ+S0hn²0Ì!; RJ2rQv7h4lUch-x(W.f9k*Q+קְm%*Z-QqV_=RېN|rA|5VcyQE@j52El 1,lq΄!C狵5Q[d4[2X V0__1S̗1(xdA"f Q,K[lѫZr_' beq9([h`1] U{naښ;/qZUX& ̈́6aIkƚ ۶HF-?f4LH)SғfI 4cp %=6c\Bs`X%G(˳JV0,5UDjU,猋ʽVq8)SPaADqC4B1f!J&n2b+Qre0 w¤$l=dPdY)KME}UKͳR`@h&@hJT|Q$RWJ[Y*a`L aeIŸ %=To]{%WX(_*-FV8b*cQM,=( aTZ*SzF$I%UHJB^YPT9?+2_\-o10Vj_(AP0$M#t܂/ g 8},+&s]sw#!2Dxhlٕ31c,Rq%} 1&.tXb%V`  -HQc&\Uq9JP[}{=:霋NЗbOs']xvmTJm_mp`NJ7+)c9rik%%rc);,gF.t0L) x-֙D%cI̿6ةCہjK_g | crԷrH.k^ 8[fElA ²qmV ίߐfSs{w#Zk-z/"3QDt#")Ϟ)a0Vմ vt9?b[-s ]lh~)[H5=76%c/3J[] Q٭ДV)F JvВ.Q,Y4]ddta%@)|, 1ab򅊭*.G[m"x‰i|'qb#h*|wvkS c *oG9y V)!KN]9BKErcŐ"5ƪG-v<\g /_x}Y w޳ I?˕Ĉ ko}KDlT@8-/}Ϋ1qAE c߳;kQN5cߢfg˫XF,ɅM/+,؇'q?/~%J>{g0y QTԂ^Eb "vN~@`1|-W51|ﺪ0Iżb<w)0.㼋~G s|H*b9]Mp[o؊hT0k˿ۻ~[;/ }ʌW1p%H`ERMxtG`Os0SVk/zhҠRvwEb-`t6V7BOD!w;|ER\=BnD#ݷn{_߅T(@"'4,lmBpO/:Jk:_{>{~?A]2WWmu&M,4+^frggMXi_3YL?wg^ -?OXƋgܷ? V4 ƾϼ'!#unb HB/IWi+O_IUЩi\QE] XICό#q^Oo?~dzOG %+ki2|>xY۰+9|"<Sj+wř[WZT< 4?ՎUVwTsZۋ+K lŒM>CSC-vOö*>E_Fk<&Cbl>tIbX=~GT^/`߁C <gѝBMnp3ȕs4i/=l͎ϕ\, O/EdXT{q|'}_DɑHDLlJKd?r~H#ٺ oiQ.Pz>- '7 yWZk# lK) '?F'0!jN__|xWɖLI?GҒ~q WfG^{kМ v$N5-|3E˖p5س1(2B 验M\!P^I]Re ,r# Z+  z9MxmxzdlML/(3. (bJΔ!aUw s."zUpHV^dq<@}'Zw }7tj ,)Hz&Uh{R([/J+ XŷYo^ Mvڰ)ZX1`{Ϗbv /0WZPab0$V^E8^_(͗|xًrÇ1?X+*^Y<փ`%yZbY31#`r+̴ׂ+#R+4uHFy ýc7GV͹><<"!;GF8crJQ|ay訏7'*2 h /rL%8+WW EƷ rGΖ YR¿4IDAT!!=7wQ93L2 I"*nejZ]vS{֖zmjhKEq7@EA6UD@BIf93'3Q>yLf̙{~&mP0#(Y)ڱ^Fq~y^xF~qˏ8ya72zGLPLI. uT5l{v:V0W0uLA fgID.{Hd >b:{sIUS}$cKܙ@>^"j4z{4SK \ȟ8} !N `i pc WO AGhf?̹JGhهoEl c8<IiD]9Md2 }qp_ӥxXvRAL#njE} ._\MXяNaԭ.DJtSdTiTJ2ُ̥LKvVfN RyRJ^wmoh$LH^=NG$mSIDR6;% F՝l^0 uzIXW;5ޛ2Y7B.=5-^:+7-PĐcb4l^D{.:n?K  ?+E楣bi3kdizB4ӈnN48.l 6+@9}P~ޤKJTΰμ]vFs)} \^m8s%6Tŭ)=*ޟR2 VI}p];xrNAZH 2_2qy4tMci^|-ϡ73GrIt'Y%-|xt+SR6x_`TE 1휤ܺ[SvYx<&nfʘ<}%]3n09*Dsy'pj.!!SX-w |Mcu}fӦDKFIb0iI٣=>$~B e+5!1)#z S&3)Zͷ&,(}[ȣۗ͌I5L[j kK:Me鼾n^DUf=/]&i:AEDb&-{ (eʕQUgX @zT.)D!Xih?uyJ5ֶ԰`Qt]ΧlirJ0$.aI8DJjd!hhjg*~p@/Xfl%X>+u3;3oY3yL]9=s" j;HcR{lśՏW_O39"@jڋJ'43ۯ٭iKbLХ(*%ˀփeIGbl]g'a&JDef[vCBzu[2$X'j៫ cPӋ:S.2PQMk+6Zz* Z%Uhr,N,NZ6/!;۩LLKA/$Oϣ3,)t$ͭ5X!>,eۡix'F4\(%wЭӍKVfbLYJ*p%P}DBh,IUlb^@]dI:0pT>gMKBX40"u٫( !#2鱨ab9.Φ&ƶ,{h>1(`Cذ{Xn]JDX @1ov8m\]1wCGޣ x.9{XO`ׁ|nt~R[wʈt%,Mtܕ\t.>(5VF{&~JѥO8aDJ۱8o}#.ADB~tbi 2Q L HQ+"1b2 Aw-3 ]31E}Xu f*\ɒ_ πǗz-'3Oz9G P{B(DPMmp뵀xi^zgg!5}WF\(sdRfPd^,*>@`G3URގbT03R9cp㫒 3وY4~LU]JOwF ze7+P9'O`-`snǬ?)-ЊӈN"&8w߻gj_mbQJ|QJGF, R"Tʬ*"!\ۖZK{LR1{ӵ쪂$CHXؙ>W ~~}]=r&o4bOUG9{<3״7:YF2ȗ~gĠhoQQl V GQbvXD(0ȓfk8K$ UXS*λeK͝*B (ryd^{PX9l˃Q{Š?=ZƮR)OU˸pT>ntM }0ēKb*3ơoR i6X[5RBJHM !D̚<-7=sKؿo= 3QE!\ !@2TFRVLiD1ba:b=2@_0ňvqe4:6=s zgF]Bxi;Ӱ^][ [gܠ HxT,#^^1BX| ܷ}G0hOݚDB!b"˘5Qy@B-܀+(TVv蠽+*s7@f1TTTP[,yu}iލ'q%I6 )&Qݏ8JRMOѥlAȻ7>yæ PZvoh*'-P7HW(J9P#d6D4R}fϢ0kֱag!G+wq1T\_|F3]Ů&Q0b*gжo3Lbݯ]9V\AeL nԇ*gU:M4AOse }юǥq/PT?ƚ[4gV~zex>!!,B+((_ lo'];oOY"V%s1*;(K'ؤ$P"7L&V@MQVv{Nj MK!3v Ma_h [*A]')w|ݴIuKJmOFZJʒ,p(su/ Θ\lXלhxܒϑ]r ߙV?MgXY&9G]E/嚋w%.#j4!5 e!c9nnR}|Um IlmP T ͝#BM{xa9F rMtt\N`ʥI|g/9(;Pɘ?+y\2()fs푸c !#Bh kH\b6=6RcO{ `{;,3jbXL3lVQQU1.ͭ ŌC!ju=,[ *5+-lDŽ)_a]cui Fqވܤ`uԮEh.˻R*\z++:gk~߯✒] V{R3? @G[oR<359qLvMGUklDBPT55eWfD)%(y[.8N(02 b@P~@ץl5Mn?9Lj ]QJΗ\i6=OzO~;r:@) Nɏ;A_)P||pH[š&SΩujZp崣IENDB`./AppStream-0.4.0/docs/sources/man/0000775000175000017500000000000012226701276017147 5ustar matthiasmatthias./AppStream-0.4.0/docs/sources/man/appstream-index.1.xml0000664000175000017500000000542112226701276023133 0ustar matthiasmatthias 26 July,2012"> GNU"> GPL"> ]> appstream-index 2012-2013 Matthias Klumpp AppStream &date; appstream-index 1 &package; Manage the AppStream application index &package; Description This manual page documents briefly the &package; command. &package; manages the AppStream index. The AppStream application index contains a list of all available applications for your distribution, matched with their native package names. It is generated using either AppStream-XML, Debian-DEP-11 or Ubuntu AppInstall data, which is provided by your distributor. The database is managed using a small DBus-activated daemon. This tool connects to the daemon and allows sending simple commands. For more information about the AppStream project and the other components which are part of it, take a look at the AppStream pages at Freedesktop.org. Options Display version number of &package; Search the AppStream application database for a given search term. See Also pkcon (1). AUTHOR This manual page was written by Matthias Klumpp matthias@tenstral.net. ./AppStream-0.4.0/docs/sources/Book_Info.xml0000664000175000017500000000226012226701276020763 0ustar matthiasmatthias %BOOK_ENTITIES; ]> AppStream Infrastructure for distro-agnostic application-management tools AppStream 0.4 1 0 AppStream is a cross-distro effort for building aoftware-center applications. It provides specifications for things like an unified software metadata database, screenshot services and various other things needed to create user-friendly application-centers for (Linux) distributions. ./AppStream-0.4.0/docs/sources/services/0000775000175000017500000000000012226701276020217 5ustar matthiasmatthias./AppStream-0.4.0/docs/sources/services/screenshots.xml0000664000175000017500000000444512226701276023310 0ustar matthiasmatthias %BOOK_ENTITIES; ]>
Screenshot service
Introduction To make give users an impression on how the application they are about to install will look like, screenshots are provided to software-centers via a web service.
Webservice Distributors provide a service like debshots. They can either use the original debshots service, which does not only work for Debian but also any other distribution, or they can set up their own service which mimicks the debshots API. In future, it is planned to allow applications to specify own screenshots via their AppData files. In order to make a new screenshot service known to software-centers, distributors need to place information about their webservice in the config file of libappstream, whis is usually located at /etc/appstream.conf.
Client API Software center applications can access the screenshot service either directly, or via the libappstream API. Simple example: #include gchar* get_screenshot_url (const gchar* pkgname, gboolean thumbnail) { AppstreamScreenshotService *scrservice; gchar *url; scrservice = appstream_screenshot_service_new (); if (thumbnail) /* return URL of a screenshot thumbnail */ url = appstream_screenshot_service_get_thumbnail_url (scrservice, pkgname); else /* return URL of the full screenshot */ url = appstream_screenshot_service_get_screenshot_url (scrservice, pkgname); g_object_unref (scrservice); return url; }]]>
./AppStream-0.4.0/docs/sources/services/Services.xml0000664000175000017500000000072712226701276022532 0ustar matthiasmatthias %BOOK_ENTITIES; ]> Services AppStream provides some services to fetch additional data from. ./AppStream-0.4.0/docs/sources/AppStream.xml0000664000175000017500000000151512226701276021014 0ustar matthiasmatthias %BOOK_ENTITIES; ]> ./AppStream-0.4.0/docs/sources/AppStream.ent0000664000175000017500000000017112226701276020777 0ustar matthiasmatthias ./AppStream-0.4.0/docs/sources/Revision_History.xml0000644000175000017500000000062212230763220022423 0ustar matthiasmatthias %BOOK_ENTITIES; ]> Revision History 0.0-0 ./AppStream-0.4.0/docs/sources/Project_Desc.xml0000664000175000017500000000226312226701276021465 0ustar matthiasmatthias %BOOK_ENTITIES; ]> About AppStream
What is AppStream? AppStream is a cross-distro effort for building Software-Center applications. It provides specifications for things like a screenshot-service, application ratings & reviews etc. It also provides a Xapian database, storing information about all available applications in the distribution’s repositories. All AppStream components are distro-agnostic (with exception to some metadata which is used to generate the Xapian application cache), and therefore AppStream makes it possible to build distro-agnostic application management tools.
Architecture
./AppStream-0.4.0/docs/sources/Manpages.xml0000664000175000017500000000072712226701276020657 0ustar matthiasmatthias %BOOK_ENTITIES; ]> Manual pages Manpages are not available at time. ./AppStream-0.4.0/docs/sources/Legal_Notice.xml0000664000175000017500000000114312226701276021442 0ustar matthiasmatthias Copyright &YEAR; the AppStream team. This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 with no invariant sections or later (the latest version is presently available at http://www.gnu.org/licenses/fdl.txt). ./AppStream-0.4.0/docs/appstream.xsd0000664000175000017500000001735112227020621017421 0ustar matthiasmatthias ./AppStream-0.4.0/docs/prepare-docbuild.sh0000775000175000017500000000122212226701276020466 0ustar matthiasmatthias#!/bin/bash # (c) 2013 Matthias Klumpp, written for the Listaller Project # GPLv3+ licensed for arg; do case $arg in source_dir=*) sourcedir=${arg#source_dir=};; build_dir=*) builddir=${arg#build_dir=};; esac; done if [ -z "$sourcedir" ]; then echo "ERR: No source directory set." exit 1; fi if [ -z "$builddir" ]; then echo "ERR: No build directory set." exit 1; fi # cleanup rm -rf $builddir/en-US rm -rf $builddir/AppStream-Docs rm -f $builddir/publican.cfg # assemble documentation build directory cp -dpr $sourcedir/sources $builddir/en-US #cp -dpr $sourcedir/api/xml $builddir/en-US/api cp $sourcedir/publican.cfg $builddir ./AppStream-0.4.0/docs/CMakeLists.txt0000664000175000017500000001005012230761567017451 0ustar matthiasmatthias# CMakeLists for documentation find_program (XMLTO xmlto) mark_as_advanced (XMLTO) if (XMLTO STREQUAL "") message (FATAL_ERROR "Xmlto was not found! Please install it to continue!") endif (XMLTO STREQUAL "") include (${CMAKE_SOURCE_DIR}/data/cmake/documentation.cmake) add_xml_manpages(doc-man "sources/man/appstream-index.1" "" "") if (DOCUMENTATION) ######################### # General project documentation find_program (PUBLICAN publican) mark_as_advanced (PUBLICAN) if (PUBLICAN STREQUAL "") message (FATAL_ERROR "Publican was not found! Please install the it to continue!") endif (PUBLICAN STREQUAL "") # we need to assemble our documentation build-directory before we can built it add_custom_target (assemble-docs COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/prepare-docbuild.sh" "source_dir=${CMAKE_CURRENT_SOURCE_DIR}" "build_dir=${CMAKE_BINARY_DIR}/docbuild" DEPENDS "publican.cfg" "sources/" "${CMAKE_BINARY_DIR}/docbuild/" "${CMAKE_BINARY_DIR}/src/libappstream.so" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM ) # the actual target to build all documentation add_custom_target (documentation COMMAND ${PUBLICAN} "build" "--langs=en-US" "--publish" "--formats=html" DEPENDS "publican.cfg" "${CMAKE_BINARY_DIR}/docbuild/publican.cfg" assemble-docs api-docs WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/docbuild/ ) add_custom_command (OUTPUT "${CMAKE_BINARY_DIR}/docbuild/" COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/docbuild" VERBATIM ) set_directory_properties (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/html) set_directory_properties (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_BINARY_DIR}/docbuild) # a target to export documentation html to the source tree (useful when building the tarballs) add_custom_target (documentation-htmlexport COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_BINARY_DIR}/docbuild/AppStream-Docs/en-US/html/" "${CMAKE_CURRENT_SOURCE_DIR}/html" DEPENDS documentation WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_custom_command( TARGET documentation-htmlexport POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/api/html" "${CMAKE_CURRENT_SOURCE_DIR}/html/api/html" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) ######################### # API documentation # find documentation tools find_program (VALADOC valadoc) mark_as_advanced (VALADOC) if (VALADOC STREQUAL "") message (FATAL_ERROR "valadoc was not found! Please install Valadoc to continue!") endif (VALADOC STREQUAL "") find_program(GTKDOC_SCAN_EXE gtkdoc-scan PATH "${GLIB_PREFIX}/bin") if(NOT GTKDOC_SCAN_EXE) message(FATAL_ERROR "gtkdoc not found") endif(NOT GTKDOC_SCAN_EXE) find_path (SYSTEM_VAPI_DIR NAMES glib-2.0.vapi HINTS "/usr/share/vala-0.??/vapi" "/usr/share/vala") # ugly hack to help valadoc finding vapi files string (SUBSTRING ${VALA_VERSION} 0 4 VALA_VERSION_SHORT) set (SYSTEM_VAPI_DIR "${CMAKE_INSTALL_PREFIX}/share/vala-${VALA_VERSION_SHORT}/vapi") # find public library sources file (GLOB APPSTREAM_LIB_SOURCES "${CMAKE_SOURCE_DIR}/src/*.vala") file (GLOB tmp "${CMAKE_SOURCE_DIR}/src/data-providers/*.vala") set(APPSTREAM_LIB_SOURCES ${APPSTREAM_LIB_SOURCES} ${tmp}) add_custom_target (api-docs COMMAND "valadoc" "--force" "-b" "${CMAKE_SOURCE_DIR}/src" "-o" "${CMAKE_SOURCE_DIR}/docs/api" "--vapidir=${CMAKE_SOURCE_DIR}/vapi" "--vapidir=${SYSTEM_VAPI_DIR}" "--vapidir=${CMAKE_SOURCE_DIR}/src/xapian" "-X" "${CMAKE_BINARY_DIR}/src/appstream.h" "-X" "-l" "-X" "${CMAKE_BINARY_DIR}/src/libappstream.so.${AS_VERSION_LIBS}" "--doclet" "gtkdoc" "--pkg=config" "--pkg=gio-2.0" "--pkg=libxml-2.0" "--pkg=posix" "--pkg=as-xapian" "--package-name=appstream" "--package-version=${AS_VERSION_LIBS}" "--importdir=${CMAKE_SOURCE_DIR}/docs" ${APPSTREAM_LIB_SOURCES} VERBATIM) set_directory_properties (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/api/html) set_directory_properties (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/api/xml) endif() ./AppStream-0.4.0/docs/publican.cfg0000664000175000017500000000035712226701276017174 0ustar matthiasmatthiasxml_lang: "en-US" type: Book brand: common doc_url: http://www.freedesktop.org/software/appstream/docs/ prod_url: http://www.freedesktop.org/wiki/Distributions/AppStream/ tmp_dir: AppStream-Docs toc_section_depth: 1 chunk_section_depth: 1 ./AppStream-0.4.0/docs/appdata.xsd0000664000175000017500000001014312226701276017042 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/0000775000175000017500000000000012227021732015646 5ustar matthiasmatthias./AppStream-0.4.0/docs/html/chap-LibAppStream-API.html0000664000175000017500000000446712227021732022412 0ustar matthiasmatthias Chapter 5. AppStream API Reference

Chapter 5. AppStream API Reference

A reference of AppStream's public API can be fount on the API reference pages.
If you want to use the PackageKit API, look at the PackageKit reference manual.
./AppStream-0.4.0/docs/html/index.html0000664000175000017500000001265212227021732017651 0ustar matthiasmatthias AppStream

Product SiteDocumentation Site

AppStream 0.4

AppStream

Infrastructure for distro-agnostic application-management tools

Edition 1

Matthias Klumpp

Debian

Michael Vogt

Canonical / Ubuntu / Debian

Richard Hughes

Fedora / RedHat

Vincent Untz

OpenSUSE

Legal Notice

Copyright © 2012-2013 the AppStream team. This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 with no invariant sections or later (the latest version is presently available at http://www.gnu.org/licenses/fdl.txt).
Abstract
AppStream is a cross-distro effort for building aoftware-center applications. It provides specifications for things like an unified software metadata database, screenshot services and various other things needed to create user-friendly application-centers for (Linux) distributions.

./AppStream-0.4.0/docs/html/chap-AppStream-About.html0000664000175000017500000000615512227021732022420 0ustar matthiasmatthias Chapter 1. About AppStream

Product SiteDocumentation Site

Chapter 1. About AppStream

1.1. What is AppStream?

AppStream is a cross-distro effort for building Software-Center applications. It provides specifications for things like a screenshot-service, application ratings & reviews etc. It also provides a Xapian database, storing information about all available applications in the distribution’s repositories.
All AppStream components are distro-agnostic (with exception to some metadata which is used to generate the Xapian application cache), and therefore AppStream makes it possible to build distro-agnostic application management tools.

1.1.1. Architecture

./AppStream-0.4.0/docs/html/images/0000775000175000017500000000000012227021732017113 5ustar matthiasmatthias./AppStream-0.4.0/docs/html/images/architecture.png0000664000175000017500000054337412227021732022323 0ustar matthiasmatthiasPNG  IHDRjS>sBIT|d pHYsbbtEXtSoftwarewww.inkscape.org< IDATxuxWwvH)+@Bqh)B{qQ!,;{<0w̜&3+""& {Uh(I WڿD1%"" ty#"""""""2sŀĬ0DD.(l5捈(C IݢcDMLPܱe8KLŀ̸DDdAPT+掅(E `(f䉙%""(RGvQ`"'d=RX9""""""E1`gzOD-~v313DDDDDDDlyf!)i=DD (=pmAj_8! ZTL%vBDDN},`ÑiLQN~Vi Oinh/M>DD (dV:DDDDDDD& 7 P#|.GL&DDEj&/p;"""""""2AP|`"&kQ k1QKDD up E1T&DDDDDDD-ObaZ;Z"" (Fdd7bL (+|i!jSZ"Rܨ/APW2#PGZ"K`DH-*s"""""""A@}o%"\H$"a(6e E\8(.:]FdvGH'm@OQ ( "z>O2QKD1Q~#AЬ7*Uux&:* Ga!ؿ+:0L0w7(Th!A3m&N9p}^ O~dQ6<õˑMy"APXV :j~%""~];C%)/*hLQ]{>ESzamXqRRRE՚Q?ԯr+@&˞lV,ZF||C!ZŪjI$/+\q}HF4K}(Qeaɪ͝A(\2W\%"{TjuøiNس`ɣqq@bE/H&Ev/_ů@EÝ߻x<]]J% >43#bU5|>oJnQ >2S/Ս\[o<~kDF%hDm.D-pa}0YUXXEe+ w4 666X(bҨq$m1Qxzyty5qqwJ`۪AL:2dD*""=jT oS>4 J1_T%"\M|'(=27"^l.1:a|9 }<<ѸyS|7? {c`֔ B$ $`eؾicLI%.9MZ鼮3VoYHLLD׶")1`eeu;7Anų1~hI[fM0tzǞ)q0Zm(q8#kHIIVƗ{uɌORݽuþ.V8.YǚaM{ƱwBL'$$`Uؽ?ڢN}|ݯ/j1:ŚO<+d\qe \>ԩͯ?LQnUu}3W,Rmġ[M1w>Cð~زn#~3aܾqKBB5~ؘhEKKKXZXʶJueE8q7ݱi+ܻ.QJH_sxR~up.9,‚KPPAݹy C7@r=;va؉ 6xCоhԼ f-_JWTA# J Ow~N9dp2 rV*% S^D1xyz1"i<,>Rw-DD۵W[A?יS̭?Ć5kM:.11CZ8wt[tr;Ic'5ڂ#)VTqa'7>.$nSXs3HM["jybLEϱbjxxy||v2&D&~h|QzDG}!:o^;6z0td~r|Fgs[r v8q#yO4ir'U"""=AQ@YնMƩQdgXH(Fif6ӮǬIZ;{{|molE C.g8{V,o"#}wo.0cƹkRnogإEWlKJ^<{ Wr% Ij$;whܸzMSNMԞ:.M֭ﯳмuKTV˖*"ϟ>Ãrџwׯ1o6Ӓ޽o+^>hҢʔ/"%%O?m;!B-Ikcc^~JU_q/XϞ<[c6P;_#us\@غjsG0Q$S?9r#-Z>r֨TEWcϰr2Ǥخm;qY=lf4wc]x -*%D$%KBҥ׳^hڲ94m$9S2jSEKG&cT}ؗ/-ǐ=U^666ʲ]@BBSvMMh?/Zj:z Y;֨772Av \8sΤV}*֚u~7y?| vbE?go`Wn߿{!&^o uurvŒs ({\Q*"0>l빩7wkPHLLLreP|Y嗐 no(ar6PYV NƲ²aO?x?ߦBZ eF'K%)w2:柴DE$mwgYnarۿA=ԨS rN;XsK T+&޽/7YvW#d6} @K}OA9 8K6HՋaӪE/kksDDD)%"ܪF]r9#N_]JSѽ3e.;/nվ ;jFL:>+PNNnM~jut=*U)iӫLyzzxhݾ}EQ9r52%˔lgc4i>zAd 4/!Vh;QLDDDD#"ܪF&#ӹˇ!0d ߽g ~ܽ'-n 4$ZL{"k +zm7n")1 רּ\.G:q`>@JJ Μ D6$T^>u3;XYY)'2 1)W8q8n]#* bc㐘N2bUE~mҵ@!ueU=o"#r T^k-V /0pDcpzj/B9! &})2{ IDAT:"""y ꗫ(%\:wġ}֧= 'FbJSc*)NJL›7oQ3[S_RZ#b6?f_Wō޾EhK!$4o/O(Vr7+3BrJ }18yѓ(nШ~|U-h0fc8}ی'Ok+WIK'=xO@\r IIe2+ڢs2=;ݼwwuuqU kӄ Xv#<j}eWԨRQY&j(7,yDvv@ С'hÞ/%߾M8飓U+oyJ~@֏?Dhp|OZXZF8vJߟӒgudvQICxxN.pvvLqD҉ǰr2EsOlLLeS:L lh2`Q#ˮM:f2ϟiԈ=b5)ҙr&zI#YK|BN9gΣnj7m<\] [w+}S;p~?QѺ_Kc1s5ꚷ=@|ǿGb'OcЈ}̐ظ8:vD& 0cH^GJ eSk_~~0F²cAh.1HcqS'Epj"w,99M:ac'K;}cbq?rZ51?FXc**:Q. 0hx+l6oߍ=1_t MNNƌau:sܥئ%٨$jrJ v/%%7ø_ÒU?Ƹ~F.z;νˏF}Կf\\E9sD-FD .􁋫+ϟ^u9yZ#Qkgoq|lL!-].vlަ<~|+mPO~*:Ke-KKKT]So!1qjj3u"U,ox>N/R(~K;[>Ý1/o!EA'k ;0p.N;uz|;g%<+נ7_=`2WI[ۖMѵS;G&MҪ;u:V-D!"`(Qlr\kG!X|4"^GU1<~W,Ls@{hT`ڰ .NNHcG"1Q{l٣'нl[c ^Uc<~9+))U7#&I'Θ5j]^DE`IПSRNҪ{n}gN u=x Z{FA`eiޥ) 5a={RɈvc;| c&t LQn$IjnծWQs~666[X YeZܫ-Q̤yl-sS$Q{}VE?l۠c?MNNƙSh֪\,W58By-At2X*89MɣF(vЬu,!"mbSF+3H\29P{0mDxF^"Km-իTDڧ&%%a/% ߂0y0W(6GrQDq8a/#E0eyPA!aDZ8р/#0tdeֿVuoU*CB3\vvC๋_رv9MorKi/S~ŋ6V `\u^WcQgbq&_/4%R&iԨ&t([σq} eU`uxiFvѨ^mTPnu>._6n&*~<˕FuQL)-'X[Y!$,^Xz^_v6&L1R|kjT=uc(+Qz4[ eJo!89:@&Ep(©fV$XcT,zu36Gpi )֬ok7|zI)CNb<F hyZ<ʔ򃧻gAxݸ.]U; 9;׮̒ؠ]fh۲)+,,,& A! åױe>eB6{gT*WŊO^S)'s=8j"V,)ҊZ""ʍ$uY@b%J7o/2ϟ~wmTUäkݼ~]萦ZYINQꋁRt2p͗_~?ujSǤn%y՝mkc^Ѹ^rm{vc ,Uha/Zڴ)a}<+0lw&]kk|yUgЂQ07jW;bX{wX6[?z|Q+WDèіb؀yd>(bO8U.a$}˗)eJc?l4N|M[)节:* WݚЫ˧`)Vݨܿaݣ ^ukFw7>Ssu}ѣsG8k\/ECӳFM*5.Zִ?;sAF%Uj*̀arߪЦET Qԩu{U*W[5ñSg0hxļa5\7)3\rMmkcZ .N([M3uxY,V}Va!i/UJ(a͆-Berę{4%։2K[R($BbDEIzqtԞR]:™s&_TZ%SF/dscO[r;48?=YW3!ԯ^Xl%%%sr.FukP~7BҶq.I_j:mi]2 '쓜H^C'j$i ?'i[ DDyJ64BRtT4<|$ispW}LS;w=gFwֽ}SOH*Vs>w<`wG*1ҺN&صm'^GFרd{UYѶa tl V.Y Ps$F< 㤵5}:N*OeT&11w1aᐫEMvQYu9>>.W劥R2 d3JX8vd10̛?&@jԩ?h SwU듘Y51|[z2m̺QY->>7mE=ѠJm̘8wo>Mrի`@߯$m,+ב!L@,^>.ceK)߽Kĝ/@إc8:/-th#i۹ N(2J1<BBJ}Ğ>j7.7$)) K3[| @u w \%p>!Ȏ*/+֗۞݌[f5T) !"v?RzC*- eݖ=J.ҪA̍Z""fUH#j'1eIL&CO/w`1\.cy&-@!㦣hϞMf$۷Oc- m`b}-7ud+[[t0b46-dtXz+!~ˬ耂aU/jT5ҥk3"۔׉ŊHlتQ!SRptS3({Qe.&FDD]t(X?m:_RzGnߨlP\z?uTE:Lʙ\7J);7o)5Ԩ aÚ!ӦrX/0o@#r#^F`h erF]+#M5 hG1xPl{c㚵8}2;A>77d @pswC\@(odmX[Qphl6_T{A cęs}>>y#1QHv%u 7Q_񢰶R&gp= !/x"nݽO#&6qqqHJ|m|6ĩjRcxI*73ʵL.ePT?z _sD!.>Z016q5ܾ{A!C\|R5oi%Om5UUP{MHWuqq8qд?>o jרbpD]{x嶕%*-cy- L"8$Me&jr_@1w>sTFbE;{{ GHp0?}WiW_fMàʄ7׳׮柴ox+ȉc&3Bמ_`NS6'UVavrrƆ[n}eVU՚amqD*71}kZ#Ymرe;>+Gܺ~7^CSʒ.՗XcX"4hV7ׯ^u.<.*TΜÖ{NDGE>$Ow7̞4 uFD𿯾H\Y,k74ޘFqQ%PP}qˈzHCNby'*1q}ag8ݴJʄkgO .iS$e=bi*Ad&௵bz/"1ft{wH'%&!He @6ucb͕kjS?AHk^LFƭ$e?x9Sg<0}2[m:wF|w VĎ۰c6ŖѪժjj` 8g߄G#+Izkc?$n5q#?,_.(NCr Fi _&!%k9JM"Zmд~Ճ%G)))O{Oc ^eSZӺYc ykMNN+qu,^vv_&Z6n6-H^TFmDܺ{?߈8`+Qfa(ںw6J nz}CݧPз&kuLre0jxԪ[;MJ.c5ؽ?̛1ҹ0ˇEnu,$#rN-Rvnqy|PYoҵ2Zʕ.(~kZ#)aЩg(k|Gs'2%vlފ7)q}N5VV&L`ZE| ^pw''8992d]m4]LK}Fz2'=FO5I[xQԩQ n\g''8:Kی'3,[섴>g66&%j5I[jW Wg8;; vau8y߻]"zdZT(.NNбH+4prrQǘis-7?ӈ?6.{Gk1i0T,}Q ?by.%""aPN ƅpܻuGx ..+]ʖFӖQ?ry_zUlܳ G=q +r^^# IDATMZ4C-LJ!j&/>}/`#!cm3[#NT;cqŬ *V0*ĭk7$m(Kreضa3܍ٓHNNL&k>WTUm:G͔Ia!X^u}|$0EVk|9i,7?܅3'qDʑ[XPa_/QUkV(SlG;//ܼ-7aŢuz9e)σB0rt1cIuiC<-lLLB1ZVذ?I[0_Põtڗ!qd'I>g&z>x$v=(iک>:hdūH `؀kvpqv|p'5*Z?ЖMx̒$i} q#Pr OKk)… 7;/Z߸} fNBF5o~ŋ}:'G 9Qz1QKDDyAѦc, hܼ)7o)oX 5ߠJ&o!5mqu=zJZ@V-uA@.cό>lr(k=^>i wwz|3*U F k!::mk:s3"h&H5aQwɏ=b͆-ѹ\u$_:>ZO^!Zn"fi[\HݿK?iǍ0A;0jmpͿ?矶mɣ}-?iGMJJBppi]zZ{daa-:#Y0)~C cSemeF?uvU:s'ΜǾ$ `Y^F) o&tr2&j @_ OPҵM`(\=AP]ٌI3$m;=VXdZʔ,ayO>'WwIoMT4`kk|m4.}SR4{ˤO8a~#$JlUύ>ً` New;J<-9ߡus@_'ycئ%"bFz6n}7v{{IBB C62 ;DQlLYEsfDF+11F,Q4c|oEU˗-et\%Y$nܹkR7nIA:UXclcmŋ}ב|JT._VבoL: wz/"޾X 0!&/v7 ߣ2LJ?0! .ҥUiiJjiGMo ''۴ߺLpqX"99/hK0QKDDDDdf(>Eq(~,i0蟹QF"\qykkulml`aaߧMLO)L3\wQU[ǿBAA: (*6PaW^QA.zV,RE{M_L2If)y<ٳ:+LY)fQ)^~OAˠoғڷ ?PXBPBP59!k:NKKco1 =pȷpʕZM?)+* Fz&W^DĶ;gܤgd>ct<=-\<.<,~6-Uu3_5/HSVDDDD1fvPϊo\wruXr{{wkgy|n_!e}6fJKKuǰ47??NݰiK_K. Iukisnvp^~UH(.+ϿH?_;eqV5,[@Tֻ45eO07?KPO^{Ͽm^Õ+[߬c}?-ox3`*[̏;oϞ'?LD"NZ"̒K3 4Ly6zy^À>{a\2'oef>ǟo^))}53zl7et![)M1ng-[s?`|6?Oy[b]{3lTףjvlc؇}]yZd569 _W3iڌ\/XW:TVc7:NOO᧟gU/C}|9/˽mr57aӖݑW?/doۧXRE\cgz,]ǟ{)7W'%'^᧜٫?$:gXI|!C;1dw;[ص;NC")*l!sp097̂ہGa]L^{^k ֹOl5aBf̚cϠ= |m49`=)'缳&`%Xx)3f*<)[6kq0Yac`R|NhCuXx)^ݓ3y부;nS橩rÜֹgw;c7"--3fL|+oç-;Fy[6穇>|Z5̣sCOϘ57ύԪ[/>+7\ՏLcޟ |SSSٸyϘU۵!qGYc|Dab=m+}s֢q<н< +We|em#[4n技c\|f3CذqNhȷ_E>]vmڶjpNyiܨ!?~7Bsk]ƈ_|r/ʻ@F z{/5#ѭk`{^||+[6k]l4gû}FW} Zywd3kyo?ywSR+߽ p9xr5JJ y10ؕ+Uoqg4vxE'^ڵnIjU:<`o'oOG0p>+䘆ܛOխEAFv'"""""RK dU v ~cXl`78O>t/'#hy4jXSNjϷ`o:c+Wa歘Kft܉/83v8کcй‘[tn՟9Gڵqݓ_v?u\Lv?T:>rͺKNtڙ^i;e;iԪQ#+ mZy۵[~ZW.S&Mzuy͗2w>;iRYݺvo\)ftڙ#?g?Yz-[yVQVM: _pϵ?48oW演*UK{`-lٺM[e6⭜K!tR\e?z. /c5Y-ӨA=ލ/I.cΣժY#G|os5>Zy:?}1c&rZ'ynycybjըrDzu ~;Ǝg구Y! @*Uh׺? {t7_iz\90s];wk^2Vר^6-szu9*תQ' dϿyBvsA\\M5csr9>=ҲFZ.""R<9xǔ!f G*Hq.}#ǷՌ Bp|a,hK\ d}c1\#] )9QZՠ6'~Ι+}Q*qq_#taSRVJU48p5U*CHMMjg>Jc:8Hjj*իU k{VrH7Z*U,*@{'%9+P|b-PO /|ny,K\b2 xjnϱ(Wln. *BNH*_\ZQdWB\'Uڊ J*E|VZ.(ժDnr|GX`[صu{jMIBE~)66P+"""""5Rr'""R,:wPTX2௅ؙsglbkHO7T`AґRVDDDDDbɯ@60i(#""Zٗ}hYBA)~Ta|=*""!=Ø<-^\ 1#g ʗ:ªQ;u:ny|(f#"R̛={ӳF.z*ԊH$eS~G E7ХSG>yc)M؛}hY†h"EDDDD$%~{m7^)VoL1F.ZQ+"""AIOKyuT3wkNMxVJi{ tJ'N; 7hEIz9X.Ͼ5jD1%{ͭt$ Tۻaٿꩩ:x͛63J*En+𒞔*UroYp1IIIYǭڶ\rQH$v%s.q؛l^ԫVDDfO9EZ{o:szFF_愶{碓 """4/>_T)oقRf ̌m[e֮^emr w?XHʕ")H fs}V-]DDQcv3sϛ%hX+ś """Wjj*7]u=M㹶'[os΢z oԟ'3~8M繌,"ǣ@o4 n-|Ԍ琈m>ē7et$ԜIDDDzgri+W}ǥZ]6}}g~ɧvw""9%,۸9;4,ۺ-ב}f IΑMZ1r>cѣϥ8炊wRxD$j|㠿J"""EBr:L`}ɤ_J"""#55A=3V:.?A 9m;G2XD",! zi3ZY+""E}rZZx8SBJ!+IDDD| ۷nh?AlR<3g}vvAxjשMq99{7Wp̃۴_+TiguƔ'3a_-6S\Yjծ)v޽hѺUי5wAM ~u֬'a}>,b)̛5wkNSNoќ3igArow^f{qUrکY)))L0I?NdlݲT4jǣ:"`ùK߀Gt'+$Pr%(""Z-eͺO-6Kf1eߍYDDbsyLbp?r|]x jqrU*_)_|s{ ~Yf63߹k ; `uyYǍmęS6ko9.9Og{Ϡګ3o?5s7^:{0jJο 5\0/ ܥ["$|,K9x10lw6mRw^m±㣓xSgGֳ@zvVF!- !="""e>EZK_"/L / H {.{?tYڝ5e4tث͗^Q=C{ 'thc}y謱ߦM'7_w|ݍ7ꐡĕ_#F]%7qk"-@'R$HK5H>\>Rhf n(8y=g;s[$""EKxm\r nsMnE kU-yĢ[@ݳ^z W -h!ĎxGwqYwa4>Is5O߫6yj*a/irCTk9ӲSSSᙡiRǠ+oOV2FY!+~ϧgg?/n欋r+x5q3f`dKPDDJ83ص;%˓4u?O DK} ^g[^h% \R"B-ɹ͓loUJ]{ >.]z<Lg=F˓ ^unvW0?:^x iiA˖3uҔe2Wp瞦יeXxxIt;Q~%%F.YW%nīw%˓X< *WjQfeĖ Hc4҂w7Y0&ń ""j6IIIBɿdXZkñ͚QchXV-lgnV-_I:k ZM;D299wP~V!2qqNiаAP1lAغy 7ld-}u=9j{ZM[Ę%u.#_@3ذ1 jGDDxid}j} ""ȧ{W i'?eMKO3lΜs|rӢUKE |nTVЊZE>+jt88[A5-=@+{k}_T)7ngu EYKKlXh|5VsM |B'Vu> Jzէ"rժ[6"-N5*&5"EzyQEDD$P+""j:ೕd玝<<?|;~WU~ER58߿2-"vN99_i3~R&'(ԎF"!p]c"""$jED$&%y}BI:[/N.xćѡSG5?>ԩ97qϱJxOHJM˖9>|8U_ԴB%j̱֬sE2)@k?O]末|DDDb ""z̞{R In>~VnfG!mly$E*ԊH,$9HO3Lܖ?g!$\wS?[6m=:E/swFճdwڐ: VmZ>SRRRp]T\)GPqnKkoug$ٓ}Xi8 nιc#HlH6ge¿ĪYa¸ ?7缞ԐA<蓤g<'Lݻ8KgԫK;ٶu =s6iQ]O+:g\*.'W0:R6[tV\÷1m:ii\u!z5B^1-^B.grqoЀ5zĎ8IcI&222O +/%}z3`՜б=>祧r Κߎg֌IOOѓXB덗xv09JF~+f0x&$jED$}<T0瞘IVO* 8N>s,a ýә<%kH1MZmMres}ӻ2tk\{Y+r=kFx7l@IKKcOk])էd/+ιLjEDD LDD$%>`o{ʳ%{3η'g@?J.<3˳H[VMs8>NJz^z1͛x.-5uk2,׮˵H[f< ϼ4+gS|< $s)))]7֭ϵH[fB!{%?qx; wu w2"""J+jED-THA+]4} GRJc1z|4}~<{^||<]NJ)SLlݮ Ndo? պ9ڜЖ39K[荶U*;=o[-7y&vܕI0}cEK=TR=8K_+7]L1&bCr lv[e.?DDxq.6 1)CT>{w?^!֭9ر};vbϮݔ/CժUQ&:HZP{a֌]ݻvgʖ+KJ߰>5kJ}6#+ivɬ3Yvwb+_kt|3ZiMjUjt糉6xQJI@s-AofEH9z{VԊHLʼswUD,PCƅzyRZ5yAĮWըY /D n^xFEZ)YM _!""Ss-s_3(dF͚s~$&"%i4hIᕀD0%lqWDDDPVDDbss-`!71/y7|##ø?XP5KHFN"tPF:j:XBkιι'Xw %"%,ᗉ۲FE!P(2ULDDD$PVDD%\sV`4P)Op"[eHaa4KR8* BDDDB;ιˀq= GXA> 5KXDB"\;9HTb99+ *jުe8ËHز);nCJJF0KDB$+bo A CZ)s-s_3t>p_FD-Ylߖ7DB9WhPg97HCSDD,\]0`!pykvO{5G"R̟ʲ?5/ )ҵoŚ!#""R"P+""EssI<%q͠/?~`Ñyo%r #](7Ӧb"""RVDD \s6<ڧJϢ@d>+f|"RddC^̃w'r"}Ðb9בд=8s. ?EDDjEDHp],zwHa'룕q9 .f +#H8zlEoc$jED$s9~ZF9_I'``jjRjR\E;)nsm~P+i%8‫ZDDDBDssk`:pzYr 0!l{WJ䳓bi+o4fM瞛{&,nrP' q; C\BDss.O>[@/RS3e2o$g$wii|44)کHV,;mpe=z%/©[V SlBDssI<E9FY2Yt7O޿/-S'IOH*Ĕ?gnh"غ9KOeҏ[s68,ajS ;\Uw/"""PVDD.]Y@Rpf qIl~$o )?Obn0-V-?\ɕଓ&u}e0j&ID@0o;%EDDIDDbg~Mfقܞ4K\ Jyٻ'_mdW)S]Nɹ PAf/E={Z1\룜f[yV֬<)[3KPaeu=0;)nU%$1eYÑ'7ιxcB7%  d~6U8YEj-KSq=j a!O?x ՄQ̨dHK5oObۖdoMbdmIbdmKy{ p?0,!jHqkgxꛙɹ$lnkED;DO9,aps='ɶEXh_ʔ)EFks?}Jb\M/R uj٬st'""RP+""E[p[=DDـ2 %f$)s<04H6c~Q)"UϦb*ԊB)N'2EZOɛYfmm+)6G3M %r)6KdD9w4圫af"xMbAZ)2s7@]r0%__8X8h4x}4j] 2`V.Jd`Fn*%EzxuEDD<jED(gaU3ə9druC"Nܟ{x?˧9l2KDD:\9(\:TAZ)sk#x ^/B~k3v mf#Hz=]s-li-""Rdii:ME?ن_Sbs/i#H~"[$70)Tr]$F҅DLďˁJ̻>܉9W ) tΩOjED$jsQDN`L)%CBvεk&""yk tEDDjED$*sla4(\Wbs!pZK1DE!"CZ8\5` `VJ9:Q7Ds4NEh,""u*ԊH8׆!p3yK> E Zh9W&yx9󣰆畏sA%""RP+""᜻0`fȻ CR9‫ xz-gɏ7'Y3knfىx4VWDD$jTs] C@3K{Wժ큄E@B~E$"s{.f67\6fv=xXBs#^f{_ Lq"Pι!DD$o~>3{E*3efC h;)R9U*ԊH8Bz/63e{̲s:pI!W  >Z٫fD,U"""*ԊHx8{ÒH.7M07^C!C`P6qTrΕٕyqf̺?F;hSVDDB9| C٤}xC."*vqεQ,찙=s B*ԊH2wtC0)4\}O=}@("""PVDD|8zz>[DDDD 9w:O3-4*ԊHI@^2!+""""s-pS㡀 ""Bk|T qEf)qEDDDYvL$K9~j_4ܩP+""8z!\nf CWDDD$*h7k^ TUι`&^[r] |mK-##,9w6x62pε>j\DZWpiT"19WhdfK#tfG$%"RLd6=9 9w`직ǽ7f~4Ѡdnk8 t/Qтl2OAxku z@̱]\Y2G }slC׻d3+\EDbzԊH x>\$ sE{-""r x[̬]nfY-h9C ι5tA̖^en_pwns˻Fh""IZ! /%ifE[J3K&e6XY=WZ鍚>)&َlǧ0?EZ/9s\yo6B@D8SVD$|C13"Ex k ܳOv-.h<6)`fw&wWy=.@U<1w>9OalFR)VTyc]2YĠ] \S_DD<pn|-@.yx[f8 _VЬ;N["HMDDP+"> !E:3[,6 "? ""/H4{ Fَ(0x6O#9jW{M5*Ԋ(\OyeB70).S͂qd_M+o3,Mཚ7ϝhx%.yι*oe>KBH ru u@/3+V+~&ι.ι^,s\&pGAW*ԊĀ%63a+R܅Pմ""ygf%C`snsn1Ѿff@|^qmsswƑm/3*z1uPxzQ!P#|M}Z""ySVD$6<\ٳa+Re1(!Uɛ)tijf6G2]9ewxT" -BB&UQpUkEPXQPUPrDN *bD) %HgLK2ɤy0g> $kY(4;caFbd W I`E^rQJ$4)J) 3 @/U8Yd+gomRŚGpIU3*V!o0.w<>gw7"2fab%Ջv; XXAX+7 ב&sVۃ0㣜Ӵc88~6{\x1氟+TZ*D'ZB# *U,gE*Tcُ+4?kpN"#Pt<v|LD"NC~]9g J)p@)(ki7q˚R*g?v[ѶJ)H̀}weGcؕRJfZUJ"HDbjnsDno~cC(-**Dmc `50ϖĔRJ)UĈH%l}1fq*ƘJF)*H"苵3 s< 11ەRJZUJ"DDJ 1Uj%dRJGs`@_7ISJ)>PJ"CDM vzn*UcvYmR*{YGJsQޥwt xhشM)tERJ~;36q*Iἳ6碔Rņ1`硲gY@_J)AW*T "Cpݔ&5vW'bWcNۚRJ)RHBRJr"xȵcR폭T#p*iRJ)Z*D ȕV܌TT kq7`.J Xo]U]`LܶfRJ)z[RJ"""l{c(K D?6vhVTREM)R`"E$C󃜓RJ)TJ)Un?-Dk˛"Bll11ĄJHsᅯŋsSV ٳfdTMTNȑTr:E>"3g;T *RJjR!_@?B"@5hP#= .(Khe=RS$%qw;PVJ>֯?_dٲ}۴0^`HK$crǥ*Dc~coG)E J)UȵG. n}h^omܸ,}Fѭ[u.TJǎ?8KvRSB6iȑض,|sٱ "񽌉Y +"qd0QJ`*+T!'"!6 qA>"WH[F/XŋgР*ZU[Vԯ^eTаa a7&Uyv!Z$NO"rt| v>J)7ZUJ @͡kY""22'Ʋe'RO.]r$,*BBn74Ǫf*U1AEy: r|x,WJBmUJ JR_t1fq q[ܽ{}׈BVciԨ^wZrSl)oѹsÀO*11?; -*TH`!h清dcEU\\ ӧmR&UKѾ}F+**3pޞ~xSRJ) LL) 0Oc n"'X25;*HY)K̘x۶Q\ dT"0Gw?4p4!6 #9ĈH,ʑS]/g9Gx>XqF.UrRJ)U@DZ`ZBṉaGXe5:;zl4Tuڞ!vԯ^3Rx pypR "*fbs1^ t* { kE*/yF: cwc}a>Cx 莵"5ka wmߋHVQ`=jb}Sz`?VKہ /"3!ke&y'AC-Bs7ES"`#M|7=s/F6˙ ^tڍZAP?haߧRYPR@DZciWƘS6-n:8_ntYήgu5R*l| 5&nAR/=O:+"`2ckEYƘ}I@Dkv䛁Dd&V˱z׾ \eZQ;si ,z:a= 3,s5q+'%Ƙ5>#>yKVQ@:p-BhCp\nㆷYC1' ksS!"1f{  LuZb94j=MRJJ)`"R 9t"/,l[ėwk&ѣ)#rWz,']bR8g>V  f"mF4u^ h/Eڌsa=31_mi=ݳ7OYdtR*wZUJJXcwkds~z{*UdgK}{H);)#]c<{+q \8x41{YNCIcr'6cɗNe;c,^91g%NC+i+PR""eXdƘ6-Dp޽hcRN׮Vmۖ+_J٭MpGn"qΫaWjwmŗuLs!ya=N.zbOH : pmUJf)c-ڔҥGэUp% /eiZǫ|)2Vձ6 Mfbmޔqh` ,*}6P:=qi<\7>u5r[_uz@:<|V\?|nRZUJmTvam.ESfXvs*TBCCt6ة(Ul5hPn\j075&nsR6pYD= 8i,"wc'C6RǡXRtR%jRF"r-0-79v-I8m[Jt3oUtm jhѢ;=uX.bP:NDBK.@/cZ5}ieiel2aCLUoVynRRJDDZk8|p啾=R${uC1&3sp9ptppMN;|UE%Iܧ(PR6gXK)&dZ" Ǻu[)+=Ge#'UcsќRuER?SS1&kc vZͭRBRJ哈TA͡}1rYhܸ,jV.J) FR  R::=>N#Eė7חڗmT6%"rGvE,0))J,-*T>H`X!RR5r>r]M/!8+V㏿*dN|]!))';{y+"wHd.79 >/j)1Un|)"mr'DDEaNsUc: %"݋"r!+jڒؒL)Ut31#o SƘ[Tw>SGWӪ[~3=yܡż+AH6{`;c4ig bFʙ;/j#eY3vV~Y+p=Y V 7 x<""ہNs^5,80Ƭ NU|[6UX-v?󖣠6V!#'XT!g9&"] (uלs_wV%`TJ[RJ偈an[ VEZRiM}"po |RD.Ge˦LSpUJ)oJ)#|9t"_: !/UUydr&N.=4vmO͚ղ9[С# ۷r˙<)²oRNM>@(<aaBJˢ J\H cLwZE cSJrRJD*Knq91fq:i NXX]םo_\JJ ӧ̔Ǟ==7ؓW^y:"*{R*"r4 "-"Dd41?/X*'-*T.D _`;1mT+W FPLi)U(m7|{p71n㄄J)UW"r8 <d4/OS0UJ_@)r " \Oc R_q;|G*/+V￉ƌBnr=RV|嗞ҥYK~u7.S4]֖k+H >ڐmԨټ̱|~ڴi1ν,_+˗̪U9w.kRJѰa]._ͣG6m6K|KBqWàAO9o15|¼yoY~fu`k׊kyrzz NR1ᩧr7kν ::nLǼ!CFoAÇѩSRJ)?Ƙ s_6q<} Xg9 R%jR*"r/XB/ @\lW^mO |s7e޼E|g<] r[r[rcƼ¶m:s,[#˖HŊ[4ONb ~5k+W,SZvn=o[`ܸט1=N}6mZ~%K㩧^ĉT:p0./cڴgiѢ ۷bνs+({|GwgϞcŊX[1e+|rQ9s6s,$ǏxgΜu)g d]ߑRJ2MZ)lR L @ƘVv'O&y.}.:KKK'_ܹs0`#>iݥ}NN=M7RܹS⊎^ٳ'evZ-\%=L@ؾ}w5CgDEZwn{,!CFi˜:<iRJ) $]QRnD V*Zzct*2o1qKP:v.kKfSn-""*!9?\tQ3nO9}<]G+ صk?۷bѢر#Go6l AshBXݺx8:_R$ݺuu4mz>ժPb8IIٳ={ᇋ2IMM3}ji6@zzV1]Dԩ ͛7!&&l㏗f͟$'aQ=gرqm}4hpjUgClٲ/XΒ%eݵkOXX{x|< .wreGN '99H #s\1ܴiÀ秔RJ) -*GO@yC'=1_"T1ưr.c"Bu\bbywjР ԡk t Çd>Koҧr-m7cƸi"::vc~Ӧ 3^7+'=XW.`ƌ T-[6eNxFTT͛7GYrC>ĉSL0"뤥IKZ_Li&MIϞWmܸ>קO0r ,Xmذ]:ujO?J#G2~zrfAsƭL2a;Y>dܸ\DDT`hs{ vZW)RJ @)D2s@_c&*P￿2֬YC*Wr1^m]L 5kV;z4%Kzĉ]VxVHMv4iOssᇟ1x.En:Zx)?ii׮'T/ؤwƍ[]xcGYXX/0}`̘WHIZ1ݢEf|kcgzucܸ]yg9c_u)Vb("RJ)RyZD hlshiYns\',e„ۖkDEE0r.c?:s6o`9W^ȑ\Vߗӟl2nNի[ٳXz}V.S6>]]իp)+W^sJg'%{_p9Q*MWRJ) >PJx""3/qʓ4={]s>[֯1A|#V5-Xqz*Mjj*#GNb/2DaaCVhQѽ/k\תU:zuc/}>磏>s9uw=/k3y wq_1iӒ:urRJ)TiV)`"pSiJΝ{/J̘19BQ}Wwܛ+׹xcOY/)47eoXX&HǪМ^溑Vn^߾WU]uo۶-@ \׮ӯEĥE_Q\Y{zQJ)R*/P*D^^J6mZ0iHj׮\c ob l޼qt2II.ų GqT*{KN>TÇq]y̱Ù>}my|^Æ [زe $%%sY_sι'&6-;\Wuq >¹9r_=2ֺh"#+rIOpt2˗#Wf~OgbRJ)*P*D057crT!Fӿ.CTf9ssБ<_^ ǎ%2ְa<_W̱jb97؇eҤ7](fzu5b_8pTR 8k9s8!υv.ȠA]^gbRJ)*P*D >`}ܖ]@Oc̩\g*ѕN!TNDDԩEF DŽ#Gea+^y.gRJY1?q9 'ӠA|]b%C>MR|8y2z~/S4*E 'N5pSvk[0fZUJ)RjR%>:aܩIBr( o3;vv mۖhєȊʗ/2oĈ >|,>l2RhS3W󦥥1|fz=Wb͚?2d$Υx\KԩS3HXX֏k{d| dd SrGf&bܹ g1CRJ)O JED*K91fq*ԦMR-U#GO߾WyEON&--ͼF\5 >>3m=oO&**¯xiii9ɥH[j &=Ar|֮*Vrޚ)))=r\Ul+֪{\gڵbƌ}{v"0fkRJ)TᡅZT!"eE@cCNc6UPKKK?s{G>tc|+z+=/Ut~~se˖ᡇ%55rC3Tsի`]QQ̙2 vZ/:tլG'O{ڷ^}kRJ)Tᑷ{R9@3/q*6lBbbֆU+G\صksTDٲe\6nu]>yJۺnu_*i}j7Qˍcgؽ|)Xw3)+RJ)\iV)URL§yn]:/zK.ynllu@j߾o9X;y)vR+RJ)ZUJ"r0, RE©S]}I̙u/v9?)gΜ+F~uԚzO~sgm 7܊5=|>ϯP!֭͘;G}|.krw/ٴɿ7܋2eJg'&`ʔa6mZ2gd_s]Zӭ[}&N'-Ϳrn+}~|s߅[oCRY?^n߾s#:t3&zk~c>0H rRJ)UiV)UlH=mw=1ITkܸ֭zcn^|MSn26s,^̯8;iٲ;J"3ǎ~ys&M\_ \p,[j W_ţ>`ìZ{cx̜׫_<m?~Uv+kgc~ϯrRJ)J2-*%|mk15TX1 P |J?Çߏ"Æ v.|y$%Lkc^Wi֬!M%&rXBq7{=e˦.}cw㏏I;OOfذWXX wfb  xif9{$PVubcRjLqJJ cYIN>ҥ1pcqwY>bWm_r3_{RJ)BR*D Pih1&jE1'"@lnstc^QzG0oAz^sRNMM`Æ-f֬3~zOkؽ{׫X1Sp|0oBv@6-2vg}NVt\~4lX{8p0'Nb&ѦM ۯg3Ǿb9+W{Ѱa]bbٱc76laٳ*T*UG^xï۴iqL0=s,55)Sbʔ !::Çԩ#Ϻo.&2c?(--Sg1kևt܎.jFj1DDT$)4'رc77ڵ2 /73x.mf'ߖyƽfBRixb"O<1J"]Vfg\K\[)RE9 m7d{:; %c~T~~ZU{p_bDD66ƘmT֮]+ *x6 KN>=~q[l}w {w)vTTӧ?ϐ!73z><<7ЃO?I8qMrҨQ=,!  Mj1 r \ekW[-ݻ_}.]e5RJ]"@DQ;C5lKl"S啮U*HD9_ƘO11 )q0L@\S.(ۯʠAЫוǿ˦Mرc7'0YVu3zuf{sxV!022TfǸ~,]?6mu^hj׮Aq]沲4$jU~ ر5͛7εzV9?g^ښY^_z5,}RJ"r0{664c̃\IZcm} ".G[1%v f: 36|?diUJy"kj;|pxu%XQRT)bb|_Y>k /|!"mՉiEZ*Rxo%?aV1&P pOkwsRJ1bĽRM}C)T!"1ny lg{HmD$ pV kU!OcmDPQv eْӹ%Db\WTWHY`}3UApY+jʟcx\+QV5j֬FJQ:u={1Hw IDAT[HI|S{nmۋRjRJMXO;(1O8""5<ê4Gͧ)pP~1@\BG;۱ 5""?31;?ߛ1[8?лƘ4>tPD~~KPƈjYc &`)Gc򻻱˲;+c8v,sy@Dx{2$*ݻϹiV)T~=v|߮~:X243F%M/IƘ~Ğ tvz㹖ހ"xx+ EJ%ǡNRwc j\ *D"Y\W8>*"Cu1hV<ǻ}g10k;βcY Jl}^M߾Wst2Wg۶jKD"##\9-ҶEF;mqc2>HR:J)+0b ^wL}pfZ[hVMDNWX=c]U 1h*X{oI=[ĵx|0u6`D࡜NqpqZ Nc|h5 \7b~`L>߀6c_}cRE[ҥ=]v*Jn2-V\RJ]܎~.nf`tLV ֪=X ]Aykilz VX'7sNDn4|%Od]µuw٭-0ZU~q\McfM||$"λ!V"Ov_`*IW1rV96U@D8nc@ǟgqAr0_D>#2x?BEDbcVлk1I6UYSvٲZUJ)ղe'܇yRJBDJ݆W>,Fc։\`¸b!˸n'X8=(VɅQw.cwC Ruayw-Xd[c1emJn p"m&bS݆oqlWhH}[=Sp1q:_=wWJ)Uq͛ϸkV)T~D H$PDoc& cEGam@wߝdժ$ڶuoR$YAĥ#RŊճeu1!c{J_lt;uwš~a+-*Tq;+q6Zdʁpa l|܏{> @\U01c')WNoQJ4ƎXMʘ8RJ<75mDwV}J"]b r"!qae[@ XZJ{R+7f?oP1q"Á%c[G2}y19R.-{سSÃRJb[ͣZg8p+ҏE~(%pQ>3u;),=ez+pEb*9&"my;{'p1Fq-_L|GqaRJbf„)-B:J)!cLj: ,6@j??jlv&ރgv<0q;wf*(D>VQk>|"U@#4lX޽]HJ)3~"fs tRJo:rSH/f xцƆ%j? =k}ޯ$ ݎ'cFq덿(D$X *W$7 No=>ʗ/EnŮRJ)'}v>/˘8RJZk6O{2, J&*YsoG}9 c2D~u9" p1{BM@8{_?ĔRJ1ˇx=;P'AJM)T=H$k1ME$$(LZURD1v YN*~""^B˜πc⋇xѽ=w(Tq׼7Ԙ :'R%1fpw)jRA%Pݎ }ݥ' u0))殢۱<|>}=QD{a}}31q*? $tJBz՟J2\EA^ /T(WJ(5&HX{='}Δگ:Zds~ 2]'߫<~O3nffCSOf}j08. FS*n EvIPqZ3;+c)Q儿Awq֚VE+_զMA6~> L Ut}gjq+p% ?#[@bc|;/0mڜ m9|ϳ㎏ÕթxU̬pWυ \1doW d|{g9b]VMKWjt'I Ke_ DsZ&ffs֊{4私]?KHڴqIITDTa.VTў3'il=ez33lf̘駿vM˦3w|?l133k/TNRW ;t67+mWJjc Y1*_IZ##i֒;p^JrHGDũS#:$լg*i;o.rR."_qBI{osKCTkW`x-$ ˟,}9y%"lІJ7ߜǙg6Lg0gkؚ g<6@d1T6.NRaJJ7sl_H4'2}Qt Ľ #KDD)IZ "^-#~"} V5OiKϋv~DtwؑtirRD ` u%%k'Xhۈ:c4R?7GtADҾ5b %&EfC:-x44jR,,O"V,9[jv%hs^hgC)'IR ~^mH +dۊOdmpÅ06o]u*033"b&㰐]yrDmDN̿\|*l0,F Co\/33333-dfIi`g0Iz:Nurc13333͉Z30IcH 3Up[ kfcqyKZ13333ˉZ3I.(!#⚙5{ֳj̬5:d qϏJ;Ҽm $iq`bHIfffffV[:MÁcJ}=D/68b[Fa68MWmXlx[X5~;pf %^hpމZy33333f5f2IQ|]"͂d78DHlՠٞixlky'jͬ%&Qrz/w{7;y9Ht mjXlZ3+eCvG ;Et%G䘍46RGafffff#J {F5G:`CpHDZp\ըm !i `&o+?#fffff6P>W8QkfI\lQBG%ĵ^ۮ-0Qو umlRDWf#i i&Z֤7mh{vǬ$m10JZ񘙙وpr68QkfH\lQB"Zk~mY'} cfffffÜԽ4ʛsÉZ3q*GwD\B\k/4hY{v Ƭ]/>]P"fffff6}XA#fp̐tpt g5! ]o5h6 ǬV,(֦)( CRW4{8#ZNTb(Ƚ16h]CY̆ {4pP߉蚙?D&i3R]4KDYp\yM4@޴Mb=P ifffffY L~ZyЉZJu؂CL k A10$2}P^V)8 qRÚh95$& =׊w ڬ\+u7kbfffffoR69M4;WN8Qk6HCIV8$"n+8 /Oh!"{dV8I[~/IE53333!H^ݠ,D"ip y O+Jk9v7HK<UKڷfffff6H;i]5?;Qk6UB8VYDM4Խv2+T \lnt^DWwNԚ*!ԙo[Dd&%uQ ̀X^Ҋ%afffff. R']Zf#=K}/oD-!Ivl$0Y=a T;f"W03333B~/)&8wDלF 5YeRS.fq".-_=13^hI>զ\lW<l^vLc'j͆1Ik~)"^*8u 9-_)Խ[9C2]{%}M}YIKI'SCi> sD53!@8`20гHq"8B~8XV 𛈮4Lf{A_ܧH 'pTw51NXf`C_D6HWӿYs?Et=ZɾzXNV5̆ I0qM133+.`[`l[~ ZwZaF(O${RuU,u?N6yߞ2oكv&iK7_321^V~w133+Jb𵈮~-fÌ3J1{q2`NŬ9't@ffec|xc133fEt ?O/&f6H:rKk\Dux8f Hgouo33333k 4I NԚ N/!ѯi6EtEDEZq`sH.l𑈮#ЉZa@fEL?3 kCPD[]?rG8 IDAT&jYL"";Qk6IZT`l;EKǵ!.kZDEΎ Jvx OS;<33333+@ވ)e54 +8l`x6Dt=*u,сN s̆j^uٝ9Qk6DI \Yp kTDכ_K [QӬ:=]΀:=33333k;-&gΝ5$"դݼG/Kk#@D\lԽ "Bo B +Z ^ӣH?鑘 %i .Al{g"fwjpNmf$LB_.!Yi$|I_>EO#s̬$ \>0{D5El$bbfC('I; 8ff2mSO'+G#DvVD "vV?]Yy333339Qk6H8Fbz\'E2:EIӋ45͉Z!B椺E>3 kfe l{DčѦN1/"IN܎lpl&pPӁ RqJ'a$ODx?M`KIwrICvG kf.cu*o6}I+/vxHfffff6D8Qk6eL,8tGm53kc%"BcffffffU %ip)Y Ꮟ_Zt`ɉZAHQ%QB\33333333'jI{`߈[Bl33333333'jIkD,8ZABZuCO&DK533333338Qk6H+8l`xffffffffV 'j:LX"_k:"ⶂ㚙Y5 IH5i7+!qe q̬`NԚu%=/"N)!Zt4pd 'GJDYH 8FbYI5k3IPS.1ffffffffV2'jHZuCO&D533333336p֬M$& =ĉZ644vCpPD^p\33333333k#'jJ&ip)Y Ꮟ+KkffffffffmDY(!"⚙Y9QkV"IGG:⚙Y8QkVI{`[Bl33333333'jJ i { %"f:ȉZIZT`L"㚙Y9QkV I2 LG kfffffffff4Qp kfffffffff4 شEĕ%53333ABʒmwz'j͚}{ͯۊ"⚙ռU*٤l\)lCIw; T^ 8 GruŒ˶f>/۪+w~\j4 i&mk$}c {Qπk4$i:ᖢ9YHUyY}>Y cNԚ5L`("N-!jz|T6 R9%U&rSr/&=݁nҕ>VpW?~Rɋsv7{'iwIokͻ$-fMt px (!rwhS`lw#_%ő.V1/;I% X  pVSlAz?srMJ ج&d7?5yLҭdh`gIE/ߑ^'"U%Ij&͈>3f<֬Iʘz7_.33333 IkI ]m(Ie7T$i-";tLy0"y!"n#qDZ#H[D\_p_]}ܡ=>xDDN/>^̉Z:$mA?zvN+ !GK[n 1>?3"6'+'509 I C`B:]N֤M4`n5 "s~rn՚lr֬IkJ)8t`xfffff֜HH{Erֹn-:<\hux3*c2 g}&"ZqD<mӂ-rwF ~K 7z,o=WͬDQkV RE LG kfffff{OXXX0.1IIԮ/dVݧg"ⵆD ?6yjgӹ=Ǐ5_8R>f1&af#f$&k:#㚙YkΈS$ |Β7KvV-Z\I|%1NȏDmZ?q<3ZY_NԚd.ˆJkfffff %= L*YIF*/Y \ҏ.[p*vCe8slfCf} L,!"⚙Y"NIe d7#BSK]B_wdI cw \ҸI}VU_v̬^L,#B_QB\33333+OFDSr6.E%k{roo ړ#?o&mlW.픚 D @3^ 21AWyU0ֽܡ?Wilnm$"wfꊒ^zFuGn3Iu%,hffU9Qk#-ip)P?< 3 kfffff1ud8҂JھШ "*mڽk0pb#s_kX &@*Yqlۿ-"Z̬*'jmD6p-i"M&D533336jgU%F;OՋ)i9I'H:!\.i*3w1MR5`vJ/+X/J:\8l ,SpYĈp"3333' JΪna&r<L#W}7^R (_d&EIl6".$""`w`!.>Rن倫m"1I'қ?Tz`=``'m}]Jz~(i HGswiD\_Dff8Qk#Rvi- _ kfffffm%87;t"[lmk [S U`mRBy4l)qRXJZ8:;uM*%j3_nomtS΢ffqFeofffff60.&flOlM$_",qRٵ_E}Uy % ";>A*pnḒ7xRH{{B͈9$]JS}$H&ބmf#"q+a$+%>7"M %oԞԌG#bݢcf6Iڗ >qMffff^LFI_$̿ YSC^ u y%63333333Z$m ޕQ$kV̬_aOڤcm4`BD\p\33333333aaMҲd`C&FĔ㚙D [&:"⎂㚙D KFkqU qlrֆ%=7"N+!`Nڰ#WJ}-pd qlsֆI{n`WBl33333333ᜨaCҖ/I`׈Yp\333333333Z&$ \)84`BD\p\33333333sֆUW6nجNs#bnEW#bz6nT'`:-۳Ou5"Ѡ]f8A7I?cWVcMMvwsD̷И6cdfmS?AlIҞ$وu&)I;0x_ x4w``yR"vI``O-3O+WHDDZI709m>4_S$-.{Iz'})}[gͤsd;߉_o޼yލ!| <͛7oڀ} {N?z6Үŀs/~\*|FsVi7 7Y}UDJ*՞OhR3HIUmT=tDEsm1]=wX7unVvQ Fz~ykesZ+$k1N.hHywEļb0HDDDD{)iiQelDL>EJ.MᬈAx'4+uv&% R~֨lת,aY|DrpAvhILFn#ⵊxsf lU-@DL#ZD@.[}"*1 L:DҊ-; X%=ph%`=os#ݜIZUDJ*M)傆= f;mF釈?ԷY2|-pH ǓZ=ŏFij 7#"$% }itҬZ"Vq`f_O׉ҕ%=U_7pzD<Ҡ7IjG:WD"\f5U#NR,j5[; |avsg}×~jD<֠7H^25IZr5j NZEǐ!ՠUP"bjqle,U/VZݹ-֌ sHZ4\E-kjr76j7z_{|:jFHZF:rV>6rQma ]Ɉxܓo>,B~Q5jJ:6&ofH Y^L̊v0i˖& i)53333?Y!dPOBHڗ=Vha-"^4#0'$7X٦ϬQIz~ҢU=]f_'wIjiۋ5~kڱ+c5'h4CiMNxV{/Bއ<0whIkWWX^T? >:8fV?㲛-%j%-L*j%وdk}gF6,g Iե:=ެVs8y}<,MGwWZι5qU DB%koӟNÍi}X9.2-Yx~?b tFm9j6"Mo.aLF%53333&^$:g~|3o`~Œ4j,矟.Պ7MҾ\Jzm{꥞ B7[lӟk1pxӸI]絙lPs֊tBno ϢwΉjۿ1")8*M^'^폗4EĪHҾCŻ2y:1Jf.eDgg'"bpf1ڿ&UR I!_yZ$mf+Fu6=٪}x+b71]JѬq1뇯WnpR c 񘙙v;dGR mٞ,oD(Cn)|O IDATk(i-zڡ6IdB RkUDܡ" 5>,FRj NڀIHế%mNjkUoWp6hsLn*o+Vﺆ#l7%\@"k.ߠSӁQZCҊ"4<x,_ 7('j'T9V3Q+i=|;֊iN1fffff6|ބю#izwC$5,m|7lT-Ηm?'!>8;[2֒I2=)M.m&Y+#ZYAR/ӻX+\8?"nGߥwV^uIHtȶs\= &k%m-iٕ="izqDm5Y'8Qk"iCY5Q+iY7KIp,i ]ҢUdƍ# ղxR}Z:8qT?&hruD\ԏϐ, (C6s"⌬HIZ^!Ho$C4eqT\lI_T*6p<=*z"' =L%՜^9K6+_Sص4}0'YَRIZ 0?}aI.}`"i9^ْF9IkJkfffff6x }1g T{Qvʒf[!Ͱm ϻ,RٯwAǨ2ls(`L6KK(pR E hEFDrf6FL47Cv{T_ll v;6333333XZ.`&ڝ ,TpӀ 1fffffffZD1YmQk-Ɋ7[dn+fef̆ ϨV}Xp`Dفj pc\'bff4Ic;qu63333303˥Ӂ~ω;ЯY[8QkM$t} 533333333f l>ym̬f}=o_33333333sQ`6v9 SاY8Qk8}v kffffffff6dlp0M;%-mW'ifffffffffD5r|z8E@+3c[KY$.W}߉Y̬-z +𹈸133333333/&fUIZ8aiM533333333j:=*n>uz fffffffffEZ%/uz^'i['ilZbD$+"@wqR?wDD %Q,ACņ QAbQcQQc$#"+R.Mr~<̝3S5/9;;;s1c1c1`&.uAk3Tu%i1c1cLyfZw>(AOU?c1c1ƘLTqˀѪ:3qc1c15VQkB$1c1ch "LG9c1c1ƘZSjy jIZc1c1SYE)t]ǛYUdy\c1c1cJ2jM&@SNvƪz.}5θP`XcR 4$zmYմ[Ƙ[G;oSZ1cW\^bj`o6җ-q-|Yp,sp62.`5L5`9&5dzz2&~*񍁛1Ɣv]1\b1jL Xj*jE`0p4(32 zgxSTZDe],Va_O>zc1c)W .-^>nUԊxξlR,cE&6%m_W lq<厈wp vŔiVQk1Zc1&ˁId,U"^+*\Y3k%:w]\ ߘ03"`2-0X1c1ƘR pwj๒,kZoz ܛH\81Ū>>V ,lB0c1c1&4o>pjTNDW7cULg 9& klu6YbD:c1c)CzsD;kU{98cZ/3p34ͧ >~I+{ڤ\c -(H9MUzq.JΓ" i:o#]Ldm`kteLz<5Mߵx;McL)k3Ecc1kM(, tV L,X5Vf & *XNg4˘""^}#H=ؒP:O\Y|2~ƽV |V I jm#Ƙ AD-ic6.Y W6i&4f:}O-r1& [N\Uݕs010pk"^u\<[Uf,0c8Kc1Dqp}i(ižM0LΪ%U6,iʘԉx@AoF^DleA,{ < ܢXKcL,Qk1&U.nUgqiIԊx]WI:pj`&"x^`p.J[PƤW &>[;!cb"ø?.y XᐌKcL,Qk1Oī!W1WD7x!UsJ4ITp`Θ!pp1E I5#c2"%WBHd%j1&q5c'4.fɱڽ<'"ލ I.$mΌ $\xKҚB5j/!p9xOkJ x8ђc1cLl@q n1DWW}7@}3p Q5\*㙒JIQU?"c2O5L5px'CzE2Ynx8\5Vv2c1c.O@bv/mCoK5j`wc8Hv͕۔ dLVO`"^FSپ 5c1clx07n%E&M`׷pX%;Ɉk*Z%e^8`xu3Yv[;\gtY c1c)7T &W٭;peRZv8I51諪,eLNkٵ#o/^ޥ-@8ۯT `1c1ƘF5lmEN@xp~;f7pj`j`O67>ζU5Ɣyp/(fׁG"^'`d]fac1cLɩgVš+JԊx @ۀ7T9 c@/U;19X(fq"9Y)n 뾒c1cA8LJV*ӀV47z~x)5Tp#~Z̮xGd!j/يc1c)jK>зp!;p3N5F2Y$"p͋C}tS ;aSgd<Xgj"^Dݛ1c1cY8ۋ&jEğ =f@ w ɘG5p .aK\?jHm/[Ac1c1&T #.E<+j'/͇3 "ggTUeLzv-񤓈W c]^V,c1cLul4̀*:Z; 8>ˁSTRdUrU}:Sx]+b" XUZfb1S*/0MF$8I]Yy3-SkU`Ŝ1D }c'Q7G'0X5daL|AU{dLrݛ" SIC0G5%kc1A[z>t%fy9 Ѕ'jܘH)vxkpIە_骁/s)kD pBȪ]:;W񘴛NḆܫڢ#s1ej@ Ub6IYEa1K6mD&%<Ę <w#t=܄gʐ:F4Q,&^DIԊxՀ[tmM^dL x0t`j*q-Zc*,o?Zn1 :cʺeFAN-D#RrKDz"p[u{l#W1& q9l۶Z,fΰ;KN`=%8)V&Q8'WZB2Ƙ2@5 9.EvY 'Uu1c140_y}wgO?[SaԪU!C2sQzkG5e0 |T^2ߨo$MnQ^!)`Jq_Iī+z@olx+c1i# |H| T3kQ 6u1Tyy™g6g죹⊃U+Cy"^g'C_"E&3~:T O.x=m!cL( C1SZx7Ӏ:wˌ9UX1ƀ}%y^nVYx]Ļ$Gx<2%PfJ 1PPd Lc1+qbi1Ɣ{"x\zA쳇Ӹq-cVj Gp1F8d֯ !ljAI?2ˁ*Dd?9BDȟDd4H"" "r#<!HiWpDGȸ'H^@ī g1Ɣ>"u͕A?1{" J`Fnè1lS2>z(&-ǗnzX^5Qb*c]<DhmȪ'UU%ɞ?"Rx/dfU=cCVQU n\ȻOwp{ȶU9@K9sralÀpV]+"󀧀jE"ocȪTp1ʸ&:N~gFV1ƘNc*n&MС.(c)ck=F1iUE9 ", +i%D-ᓈAxdT,oHN@ߪ"REnw1?TF"Bh}|\&"S_̵Dw\26ޘVapR lF0SkpW;kc19&5u ׍ʒ .hɩ6 ]xEī'YۈHxLjH-\ujUuq&KPe5'iI$msH'%i{S!R-gr@\yw{4W^wb- wUU*4mFGM`Sx/2pXUq%=港:X ! #+u9U&cJ Z㗲1;rc~\ye8c)έv' W Ƽ h ObU9#PS`e@,Ɣv"R W~p`.WO_\|WVvxccU޳$qIU5ެi!"q8 |K.ߣ~)o GQ4nb8 ~Yhx%ۣOW<ƔU"Ʉ\l߾ӦN͚yq2 v1t<~yG#UssSy$"]pyPwq}UM2DUm."Zl 53\½еz;1~BT5["3ѫ^Py,\;h&oLꛁ[c =tz8c}+[ PYś "øќY Ir퉻rOKȇ"! ,"q d* xᾕ䓴p ±II#$-Cpdq{-5c/FjGYcd \SM UjV; =_ͱ$i1NU/J0I;"PտŻ[[UVwNO:ZWۭ&iQWO $Dd 0 W:&ވp8Pŷoo)]pm$z;\SpfCUn}eZJђG[q~ƕ7%ۓ~"wb|W܈K7_ IDATZ7M^)1ƘO~K5p1С֌S>~^e\s@aHX~# kJ&JTuSŵ 7W%xK;_wwߡDD&iST8Ƕ=/Cqk_c$k%j1Ɣk"^ 틀:b`1&ecǶWVcGAETYG"Rխ"pnp"BU)5R,wJIMz T8շX"TUENbNpRe2 a1"w]TX誺QU t#TM`$QD|/mUJU \U TUf\xc_Cg\pgU?V686U}SUV-NSs%iTuޣqMw;ƘD1Ƙ2B]zikj69ENKJDNbjJi>8z6f%.͊KԖZ߃uUUK"27CKE'avܭ uX[“ j_DN$gxស =q}x^WuI4¯jAp}pEz. 9RUIf4Z'DP;.* 6[1T*/~?!6ܝ [G_ )gycɆ1)F>ߗ- D8l21w+Nu&{j>x3T"rgMr1T<%jkWrQp?P+|o{ij{+[|˩YWUB*7SH["yOOv=G'R9Vm&$ŸO+O5KwhhEkbK爬: @D~> |{+n㉜T*.wbp7W>^ MUWxIB\</"hW)܄gWcqH`o8\L- kiEƐW\XIZcJ32UMW,VjȑG6[zTp1& W٤Iuzv_v1w;g(DY5?LT0 ӨM"ffE͚5M69Ș}֯_7רQ#:tUC6qr*͋TjY@й$ݍZT)_DGFIE-)-Mi%.U}ADNM`fD^a2ov("f*BD\[87?"ҒWu`_G'qiTF1ŷog?yBFxo@Uw*C)U ,ܔ]"q"fDք Xϼ2:_ 5_|~{':tycLT^AkG2qbhP 0Y,(Ռǔ.IK"%"|U2fWZD1ZX1UF7ZE`}rLQ-c"r00\È>#yc`VIy8k{{W,kI9v5"rr !6-ı)=CD#z5ԹOgsˁٜSϷLEMfJ=bŤ=zѽ{)cLi'zj3 jO/ᇗiS:߀" !N>裰ohx19w` pLȺ?l n_THV?aTRzFKJԖX@DkC"+nw%G;QD7Q'~;.(hRDȘ`0bOs~GIEnֶmmƍkK߾v1eMj8 ޜɓ2e2v wji1S^+Ȧ6so*rKT*&ʺNQ֕DiW'Kn,VG=Qv$"VUݣ+-*JW-~"? ccV!W"Zx:$sdϏ1$5ėmҤ:'vbƌ#-IkLWne-gӛvQC`E1cAUjo&x\ڣ*m婢vnrw=(0^mJ`u_MC+h[$כB6x&~IĦjqkeD@/YVQSNx@Gݐ{Bz9iAnɐjLБNje}E*x]1Tc1tXkq*Iؓ4d9^Bڞw R7nVy$'wo_\O"N#MI&QD+su~KPU#o^D~:OЕD:8,ģK!HsUɷ U>S-쫆?HM4qS8}UT5<.6jA\sM;ŝ19膼\t,ZV rAX1SۤsGIƥw's,%MJUWwH5ܝJUu[ =>&Q.ڎ"r~sLs?Dm{饪sK6,BED-X_|m2Q y}^*#! #|o'jcL:xiTj%n#wo):&/p8W\ٳn9d,jL X~=WfժUlݺӰaCڷoO52:%KXr%k֬v4i҄N:Qrf>f^˗j*hܸ1;vVZ%?3K.eڵԬYMҺukԩSIڻwol޼ӠA9䐌YRY(;vРAjՒVl޼KrJ 8蠃hժUuֱ|r~'T@ΝQX~_ɓiڴ){eڴiK.T]0ƘhUVU'" +"TR=oqSb\D>GDSz䜈} 6$KuzϾEx+S^M{9BUȁ!O'xYn"r.*YƔ9×ҥ׍ƍ+v1UJ•W}:\sQ

Product SiteDocumentation Site

Վ;0`+W&VSPP X`<='67={o4p7-\K.K:M63swr&4?)޵k6m+c|x7={6W]u/]nʕW^os]v1sLf͚_ѣcI'?$p޽|wL0G}=z=fѢE,_}E%޲eKĺUVq)n]bb޽O?O?ɓ'Cq&tl*.O/p< K/1eʔuw}w$-~n޽{{y衇U?{nNʌ3x'ڵk9.R> M61ydx }YK덢갬ӷ,c"Ҍ"׷`b[LX牣'ᓡք]/6`'U]KdnR/س?ՅU{F<1λ޷Tb472)>Ӓls8MV]].^$nϞ= 'i/_i.Q+W䬳ΊHƺzÆ ={/vȑ##yyyDH߽{7~;=PJbǎ?7u]w})+Zk2bfϞڱcGIZoCx4GO~~>wuWoSO=U챋/o [wi1xb0a>`$m[2rȢdӦM >cvرc1cF̊XرcٴimڴCcǎ]?9s /{n.^{5ZhԘ'N䫯\ .C=]k. ϟc=vwM6m0`@RkO? [תU+FAnر#7n>SNOZnРGtؑƍSNmƊ+X|9ӦM8g*OyI&c}رlݺ#]wUTYMǎ/4oޜӭ[7ڷoOÆ ]66lয়~bL2W7i&.^z饌[>=z4޽;sNƎ[\mۖn)g̘+@58묳ҥ ;vdϞ=|$ӟ0ƘҨ%jGB>I`@%IugȺCODodUݝ@<܂0 ".r X"  =^K!.q:NDRUEgT"R+f/:TuCx{Eޓh NV.~$" q!Mtw{2F$O B@|SD>IDٍ IDATsd dR)gobd7v=:k>v"w{ /䨣ZUڰaC6lH׮]2doW\qEQBiEd8HKlxȟT =N,W%k?cEdLV&Fĩ ^4.YN_o*n6})mDjE5PJ]n E<+ʐ:uSOqG'`ׯzkغSFLV޽{3eʔ-1I&;wnXug7n?;ygÒd֭'ƞ ޽;O=TjC53#uV"FEj߾=^xaغiӦe_~VQ 0fU+{߾}93W4}aРAE;w,I?m,Y$̉jҤ wygXR{̙a˖- ;nvi);nܸbn*Wz\yŎѮ]/2@1&Kmrzk p0PU Dyq<}_^:Źm\"1kt OUW˷ Wn그l9ʺ!N̦6;@Ou4ߔ$p߉C\w=QTc0&Dq@;I:ѡCic w58谛q/x$[na ,HVF^?[os΄UgqFs9aW.i̜93lCIl_|Qt#9%"1g#xG|o&L7|î];v,۶ղeKnС'tRB(tg&܎|ao[c)mu@Uw\2N"gK\?؃U>UMXSo UNکɪ(8gpH&<*сTgj+p\pZIUhސ7P\2vzc/UBΥ)IORվdzp Dk[UO.idwuh1eR^p]8蠚/xu>2?ӏ?9IvE{),4 pG L--~I߽{w6mΐ!|*lUƍk׮E˻vb̘1tMaUVf͚NΝ;SPlh mM h1My󨪫E5hKh6V3n?=rl|6,>J6U <| "qT;Unz~,PՍ% ;ƹ \,J_pC t}%~6_j‰oU֢!mT߸>ęc60[DjG~&Y|+8wy 2'=\Ck{6n֭[~w 0[=j6nϷ~ˢEزe ۶mc1o~Ch+W{elٲp--[ߵ^LNAEQFZjDohe1Ɣ&2IL%Se1wz[5O39NI'_"ؿslfaLYw6PtOa6ƘT\xaXM"ӪѲe˘4iw'zOT24I֭[%j%.R8'֯_ϼy"*b>|8_ٱ#FTdt֬YÝw̙3j%*ۉo;>(ٌyL8/80bĈӢE^:yyya_2?CT'4ƘLZc1W kvU$cJoFϬYE-ڛW{1{W?~|DdM҈HJȺu- x [WeL<9swqah_C*Iesw}7Oj*25Z4O<'N,ٌ=Çgڴia7oߞ1W^k(nc){S1Ƙ܄x}41$2{: nc'=,m4I5kƍcW 6cYfԫWSn]*WQ端Ny5k/QDR2k"~-s5TT)oM}'=:^z{챴hтz=TRϊ}GYlN!( *pA (\䂀J*zA)RD(E'J f $3?6Y&i <μs6crv3g0ac̭/˕+G֭)[,AAA`8 n̟֭? 5}a7xV!DޒDB;R0b.HQԄgs]X`*0a!IƔ)S#3kdxwY>sxŋne47=cҸ|2Kv:MMMe̘1$mr:u*͚53$8mٽ{SL;OÙ8q"vuM؂6n8N8?iӦ *!($Q+N2 0߿١C9wK!С5X bRȜ5B ,^I}8|M˲t֙vc`/^ኤڵk Zj`K>2QW_zjϯ\-ZйsJ! Y,BJEVdVӅ !e Cn|7]N믿]tq8I yIÆv *ViL%(Sݪŋ箻%re5;OANLR8u9 g:Yg%$$/oW#GdرԪUϐ!CB$Q+S*;ݾ*rgƌL6> Z^]p3^ PͲKOu떡A[wΔ̉%K8۰ajPP5jpxO?ٳgLΰeHJJrxƍq:?~k^~ݩ8sSI&ve1g)^8s1ibBeRV!ĝ7NWR|\ɜ>}:O/8k޼yǫhrOkG}dn{xx0l0F$Q^\R( L!WzuCСC4n8yZL:ԹsX~=O>dcSRR ?#:ugRSSY`Ǐwhܹs Fzxꩧ ]tUVѭ[ljZZjlڴ>tmڴqh;nX0%-S̖u:ddNZyaڵ|嗆z*U)ĉ9roҥ4oޜvXBQIV!DTze}|<ի #Ӵm6OG裏5)Ṽ޽+3eyz.©v|7_~3<~yqsCs=VyXrqseԨQFѹsgs֨QӵkWks|JJ Ç?2׀Jxx8JѩS5jT?~<#Fr[^l_}5Yg7o̙3III9ʕ+?a99'=ӇB!#Z!ERŀ`oZ.ˆ׹sgBBBr|8[lĉ澫Ww3l0xL4#Gf@իjZUJ1uTڷooN|D۶!AbÊ6@a҆7,_2iҤl`JΘ1f͚/zŋ_0f֮]VZ1ydʗSLJ*̚5+իW{z91vX*UĻkHHٳXpS/^K2eAAAL2(ЩS'Ù={6֭3|舊+|r&NmL͜9bŊseڡC}YѣGmf鮵fذa[.O>F6~'"HV!DQeB ~~^{ov%ReʸtݲqZLe>~GV\ѣG9u)))( QFtЁmۚwVR݁W(Q3gҽ{wVX-[t9H˖-رc䨔"""6mڰb ;Ν;gKxx8O>$;w6Ԍ-(J)zM۶mY|9֭ɓr%Y&;w駟& 0Հ|Ok̙3yg9v'N0 N:tЁ'x ʔ)cXtiZ*3gd„ ;wh.\`.S.Zjl2VZ9vgΜ!55hҤ :tXbԩSs:uiӦ9%K9VJѧOlװ6yL=**fs4iܮVSk 4mtG _>@Qa#D#+,(T|`SZGh4B攊|iWUdG ޽s1ZG+x R<={CC= Ǭv6i0СC"~:seŊ\~=˱`YfmۖgyܢE:uyc޼yv۪U+-ZdKKK3ԁYץK=jn^zꑚJdd$K,1dˋ=z0ttSLaݺu[.]^xg}Ɣ)SϿ⋌=鵅IÆyg?peN$d3T!D~J^pUBxQ!p1^!88Yf7o?vhk:t!ڴiS g1矴iӆ :gӦMY&]իWy5k$-vA/^=zd;wҶm[V^m7I d3ӧ_s8OOExxeWM" hΜwQ+wI q'DBeF ۷ߩL̘1{f;wĈ\Jʔ͍y._lr IDAT 44 Һuk4h]w.`wD~ؾ}?00!'W_uxݻw/LӴiSWnnݺÇJUf pQ(2'jO'5U7 ťp>N BUDwe,n)"";wuVT#uȐ!]n= qFs[)ŴilS3f0eȐ!<6IJJȑ#Z5kؼ/ /Y #"" _[8p0^{5ׯoN޸q;v0~x.^h믿Ҿ},+B||GӇUnbǎ\|\V3T 8k_ƿ\޽׸L5wB-[.[HX!D&;jBUDm*%,.󓇇3f0rFas72y۷/[γRRRmOOO>c^z%`իǘ1c uU-quG^"o-#I۳gOV^M6m ;ixYf aaaK,f2|d„ L4jժvі,YG}5L>>yiӆի;4ӓڵkǏ N:QticׯGjjsD%=z՜-Lh_àA}FJ*+{ !8X6\_B!"֧œZ*9L"ӓYfOrΝ;G~? cyڴiST)vϟW_e„ ZEA͚5jh߼y~ZbŊT^#G85OdϋW; MVJEX/PP|BwwB_}uβ'#n/(7+!EaG_݌3hԨQy͇ٳ0^z5*_ڵ+|w?Ӯ];|AZlPwUZ5Ɨ+Wо}q C s%K~Dm9"kג B!7kQ,*!DpuB!D>0-Y2oe> s2C bŊDV^kFi۶-ƍcƍ$$$k<źCvY6';=GdD ϣ– 0o_11. G!Çor׍ZGl7^Q4HV!DQd80uCرTR%/֚cǎl2G&Mׯ{W|_޺e#3G;wa-8rB4`tF;!!ٳ0"!(O?BZhj` BI !( SUaN3׈y!$$?yѡCMHH`ƍ<쳌=fwoooC;55$SXw*;Gwq#_}}"mx/Zv}unW#(8C!B]v1gg}K.-xyfϞͮ]Xx1 <<O,,_AkމJ|7}ttױs+TMD~.\ľB#Gn+\1. GQ$Q+ RRx!0vC%55g]a\˗/wQdIZ }gΜq:9#(/d4n2|م"WRR4~Μ1xE! !\@yD)R KRJRR͔R\B;ۂ mfΜIٲe3gvǏ3~xWiS*U:uѣw&''[lҨQ#C?r ΡuD2/dFw0ua$UjbΫ^ZGG`BASx6so(j[T# ?\BqMf4h͚5RJL<_r%-Zs=uk3 DGGSBLc&+oPa߾}ٳ{ס(BTSo?xNoZB!]KfȐٺew,q. K"=ߕR#BM)&B7n0dRRִiS d׾}{wn?~<Ǐ/8sL;hm뮻 /WfΜIRRRs;ݛ_"F?瀴cm'gϺDBÇoN&8.$6S x[)56B!`ќ={f֬YxxdaرԮ]܎gȐ!$&&Y<[laÆ e?؂ժUD6}݆Z$wվkѣGO?!Cwh:b-0IٱB7tӧ )+ZG械.&Oֺ'Re0q`&)ksr72Z"noƊ+|nɒ%lذVJ1m4BBBl/Vs̡cǎĢܷtR7oNvrӧO{{QT)6lH*UÃ˗/֭[}xwW^̜9waFas|VXhQ6m4.]ݻ}~_M07o(]4+VgݺhzLDD5{Iq牍MHMt>zZGpAhB7"ZZ_TJ1TI-&cz5bذaܹ3۶mcŊ_Sb<ʕ+lڴɡua& #GXnZÔ}}}?>ƍc͚5َcʔ)oߞ!lBآuE"fE'/i۶,uh~:ǰtS3׵pHn@k}تh*RRRrsB)uRRd>];kRZ>)(W!D7n'O4={vêlJM6grN W^믿L2َd֬YZG}uy???}]/^LmX"o}{ =ׯ_7)khu@^nHa<6z| ۶]L! 4~2GѲft']:b$idGF(0ռm4*eH+.0¼PkgR z7[=D)5 b֓;RR]ohfC_EBn16JX;| ZGegRgS_7Q)uX,ZOڡ{Rc:9%Px:M)uvazZg*n$(ʗ/ҥKAAAvRR>,>/$$靰|g8qg3dauaʔ)\p;vp!.^ȥKt s]wQvm^Zj[իG}@JJ 111Đlcxxx+G>:u/IÆ ;5EhтTbbbx"~~~+W%3yQC;44ԩ:bFǁwƖϟ=ϧOOS!!)[e#$Ϡ .ZsJ2 $HlY]õZ@ ! IԺ6l(ZVvf tcRj Ě?9dJ/[&j@/TcL}ۙW QJvPLm-4LQJ?Ư ˯R& Z<鏺 VJ=^+B3___5ɳ5BBBDoJJ 7կoy:"z/M8X !!ӧo[~.EEuĊ !\uҽ&9X @)PkJ滔R p`/`RJk'9LL8$R:}T`/$b2'iwaډ{kJ>VN< B䩛7o2c C_Ν]()YhP? gj![*t ^I, !D&uJ)O/$lCe?7j>ELr[ubŘݧ`y Le4u"@J4[J)our>. <}΢1v3 ,t"8Mj91W!ȑx?nyȑ#΅B!(?%!N)1Zk~@ LZN?mͦVOַ]HkM)c٬X)6B7W^=x m35?_ (J!B!H]hLIݹZk )ekRhcIZNz'81Q[9q֚8pX)t5-RJ}ޞW !B!Be]SH ޢ] rs-oGSJblU3Rŀfy?)ZπVOߟk !B!B!Z7>|dR*Δ2VZ4' qV\mjwTJ97wd>nk !B!B%Z]^nsU;L)*YKn-m^sdbz9 % h]!B!B$QFdUS)UKuʒRJaJd71vT\miV/) K[8jSJRJ=J{dl21IBԇ7Z'0&JJ_eLIZ_2aJUJQJMSJuQJUSJn]TTIk-G/V!JLL4?\B!"y:a;@L ]YZoSJMFZtS$s$ pE_#rZ=JUNzV\0̲C)9!-MR?;СC.HT;dsB?+ZGdL IԺ!uR#`ERoiOHcĞZr:Q>/}ݞdD,Դֿ*aYk]jR2_5T f17!0nhB!(, >g$I+Bd"1y}!q uD+H6T4Õ\^LZrکTJ>670Gk}ݢ2XGZz+&c:Ԫ"P S_g\bïYE#qZ|9:Qk}訔?ec pJkmS9\bz@a!%kv~!ݒ%Ku5 IDATzA@@Nya޽ܾ{hڴ #RquT J!)SsWyG.)$jzzј~qut^!'PjO٘3 S)xSMVg]jfLI\0uS)J)Le%eLI$Bq"##1۷o/Zߘ3g=`IԊ,)˘~WRH!(n@R?͵a]-b:L)iwZa|Nb!BBMȶ@1*RJ BBReQL1 .P!/'hx=zK2f[ tP*r0Z눃t'Z!@ejO*!BWQ* r^S 6 Cx²$B58p~b9~tU)SL;"99+WFҥvZZk^۷ /nX+!!!ۛ`~/2seJ(A```|D(YXezҧOJɒBQ>x}̚u5k.3 V*Y#0BM~["{^>$̞x(ڲe [l1[l~$%%w߱b ϭ[J*t҅={RD ׾u+WdŊ;v۷oAƍԩݺuU2,))oM6m6._lxlٲ<iӆGT2>/Ĵs;uDm>ʾ}شi{!::90Xbԯ_g}J*eoVRSSYr%k֬a׮]$''ٲeyڵ+:׮]clٲG͕+WK4!!!s=nݚN:9ݹs'=3 ,2T)GSFIBQTyr e96v": C,|DEEuV=jsuƌÊ+_4i R~}֭KJJ 7n4(8|0>Æ 6>5 ~0/^Gy5jPzu|||8tQQQDb||<,_nݺq%p(н{w2pwgڵ N:u],Yk׮qY?η~k?dذa|vy)I^^=5kFƍ g߾}lٲ6mdY4mڔzQzu={;ww^x5ӦMFvR4lؐM޽={ Yfv\r1qSn]*UD@@;w3gΰi&?n+ªU^zy/5X;06ze~ ! Oeذ?X6:DZGػ_XDBᦾ RSSQJѿ^yL5d7n_믿fh ୷ޢ}ֈa澅 ҿ,k|'=cǎbŊ6m߰a̻o2d| 9}1U ھ}:L^ܹsug Ɯ9s/}6mbݺu<ٮ5vL;pˈ# ޖ-[:֭[|μ,&MлwoZnim˖-رc)Y;vXlقW_^^̙cH%)h׮=M6ͲFȑ#Yr%SNʕ+ܾ}'xbT%BeI !w(OO;ܹ5"+\B2n;w.Æ wɴ#uԨQ\x ֮]k3I ,X@b}|YvIf̘a苈?̔ԤI֬Yc{)/_zyL2lٲ;t8XHHo]v5 3#Gݍ۲eK J*e8Q|k.$->ȢE Hl4{lΝKͳ=ӓ]o9e,re*`.lܪ]z, ! 22  V*b*l$Q+B~mf;r)`N 8 *d97888[vrII1J :thqʰ`%'Pĉ _}3ԩ=v >ʛoi۰aCω|}ѯ_?C_A,@vXOK!h.kLg+窘 I !n#SB[܊+ҳg𲸸8VXa{뭷icǎ:gϞ5u'ŋiӦ>Rnܸ?l{饗^K.+Wι s0=p@S>rg{#|||VB^Ã~ sdɒzUݺu wcqtR*5`V #B!;j߾kdRe\Oa!} !(nY6Rskb8jժ-[}-;#MYjҤXQ *HDEEqQ_۷IJJTӆvaV߿ЮYùx[RSS9z(̙3ܾ}8l|rayPիW=L.?$$$p!(L~DRX߿>>r܅B!Oo̿kvDvIV!DQdxfK3ZjgYɋkؓ̈# IԠ c=m+W:-^N߼ys$m˖-޽;> %Jd} ~H HQ4)J"jqqw\ 0^s3;{|1{wrmRR4ګuRDBP(g@1'!Yz%BPV14~yMP( y IErk,y% BbBWaBBBeBBBB* y)ٳ2n~[4v>brڵ ?sukժvET(lFx 9q\ !?*LP(sh"N|}:SOiϟ?iܸqXqØ>b\rN=qr~ݺu5ۧOfǎ4l}^麗.]l96K?˗7ޕ1NjZN*T( BP( ӬfUP p. CF}0EJ|4[Bw\)[ !n[1) 4ɓVEJ*E&M4e&L --NSH+W /]fۈ]رc5(Y$Ӕ͘1;v0Q?6#ѿOfNWm:!+g׮]+DFjC)@y +[;7ǡP( >%0kGrk,y%eB|B1 2z8 \̤?0 X)'%|WW(nˍ; {߿f{߾}?]z5Q6*Uh7ntn~ƍl޼P_]tl;%.^~QFRJ?ژ;]jj*G6$Bg?G5dPZ5]HLLtwHNNc>u~\ABm@@)Nʝ;w/WE r]9Q( wQ&ƑQBBkl} < xK)H)+J)@5TV( cl26mdI:7M6ӧeiiiر;dZz435 .dӦMvK)>} ,;vRJۗ?nӭ[7DVKGʕ5} <7G_pW_}?P_i>s ?Qzq|G 5GC?}WIJ_yЀ9ܹs^5vCO͚55D ~GZ(Z3h+||+95^~<5UQ 0R"lʏի-رc9uG5-]?W^y'|*UPD <<|u֙ !hݺ!|1fBBB۷8p !!!4nܘ:uPH8޽{͟G˖-ٰa 4H#*￴hтиqcʕ+Ǎ78tbΜ9fJ*?~yt>F5j?#*U"00P#VX^7?~BCC2elݺunݚRV-ʖ-Kll,f޽̝;wM͛7g۶m$%b<6&=TDBP(,Z(֍!]uűKRF%<B|ܟ3 " ']MKqEe+w#̝;{sי5kfr[_%K䭷bڴi沴4bׯj?~<ݻw7 RJVX+ kk~~V!'??47--y1o<}+WcR~}zСX.^g}ȑ# СCh6jH# 07jx###2s 8qUR6 3wFb !¼sVf%*̙ ݻU"EA#""3& w"5݄Q`:Q)>> S(?5ff pbŊ1k,{=|||\ڇ/O?zf„ <.S^=Ə`|9r$v?]2vX .Tua޼yVɺO?}Nch"*Vh/0._^x^^^|4hܴiS,X瓛\޽}R/مxf(ZTy(L„ ̯ׯl'<<\so߾=x(VLhn#/~iiRʓYݱ?ff)1?1. &? vB@C)aq7)ek@4 %t(IXRʛ:ϧ$p8 R:S@=Z)s&(>J"Z c:@@&2}O%PgSSһØ}OoO_a[)1BO0"- u@Ji,Ac[wO>6g([, 64o$W¼mD8Bh܏#<==ywݻ7'<<beҤI~i{9 pAǎi۶-'QQQ˗5ž}tЁg}'zj]fUϏVZѫW/V @%4'#:wLӦM2e k׮8J*t҅^zEjj?K{2i$uرc9rM5jЮ];ziq<<<4r{G~∍… fGeXosY 4jԈN:ѱcG٠AMkƑ=  BP(2CBư*ehfB"!DQ ()0|@??8R:B%0ܢ)zcmqL0!70xl3Rv׏%`EQy{ &vfI)P !^s`D\ q23-VRnؿ~RYLxj IDATg+R\+m 8c6zLRnuq<RNjD0?^)CKxr!¾to`ڴjU2Gpӧ|2W\ˋ… @  DFFrEJ(?+V$r'?~x tҔ-[}pY"##B@2e ̻͙3gߟG}nBHNv܊kHz_L$c=yDBaYf1zhkƇ~#R~}=ߔ,`~{f̙ITŃѣ5UC_~8"Ń7D7ǥ ˤ"jC'"-9=!DvT7&!ORʻ7𦃪% @!D V9h_UWƚ;7XG@[R4B֭[DGGse;555Mrr2\tɦ|VHKK3IN~ nݺETTW\{صk׈ʶ/!EDYd!D&1ђ9<Aw%Rd``K ]/ߍ@ODh0Ef$"+F/ϲY`"xI!D-22I)w tEu@)e i~f|zz?ӭN !~$FIi$<ޕRjrI)ku;++toT!F5E{ x.fvk] (o?Ń#}g>G^ Tk "9, RdQGZZ$<<]vK\\w?Nҥa k׮7~*Tweؼyۛ&MбcGZje(17|Ip8`+@dd$˖-cڵĘ!OOOj׮M۶mҥKGGG`V^Mt=g,oooTBNh߾=Ed/qQٱc111i:OOOUFy嗩^^Z -}YP 'Opvvܙ`tٳpkNh),X5kҠAu#H.k3F#9pSNvZl5 PT)hٲ%/ŋ7-[ebbb4b/ 6瞣C111oRJQ9ŋ?7Ei׮K,__n>&Rxq*WLӦMyꩧX~e6o msEmVJ.]9￉"..N#zxxDzhӦ M65>Ef"##ߡ|D۶mԩK"##Y`}ʕ޽}Ϛ59mo<{dbYD8"C1yf0OJӉ02wL蓉)2ө`!tlG_.R젭cZn()''R d1)eSBE2_Sץ4ѷA$PEJisF21)SNS%꧷62[)@G}Y6s)mNT2!¾4@׮0fsn Ba˗s[yӜ3)e\aR2w2rH/Cyoߞ>,S͒8`PX1vɭ[Yj}4nܘ/iiӦ7nHr6m'OvW|yƍOl>c)%gfҤIiРK>6l vmҲeKƌPl޼9s4˜SҪU+MYbb"| [lш"$$9Uuvqh+VZt'[櫯rXرc5JHGɒ%>|8:tp}xWZTƎqQref̘t[n1f-Zd8K.|oLLe˖Lf?dN:ehkfܸq&^|E"#=Z`VXl7b/Tdvy1~xn|A7FSNl޼7޸'<̜9fΝ;,1%Q'SY[}ъIPgJ)`-B|HM[e)G #HuO= ,lHMGoIPWdR1HY6oNT3^⤗r &Qْ~"OL K.5T(˷ߞifo"m^Ν;믆P믿ҹsg7۷޽S"-֭&(8qS˫Ϟ=K^غ5gs~=کٓ 6ג%K 6lcǎEreV^mHHII᧟~"$$p`֭oߞ+VZʞʡC֋k׮N.\`Ȑ!;%)))kN'O$$$$ ӧ .ti|n֭s~:wLDDDq(҂|6̦PQY'Z}ҩez,h9p{ h)HRdNKg*I)TX\:@E5ɾ+6+LB,>(~%3R2^\9F8n=a) "l)@jdܸ{W| >QQI̟Qre֭Kpp0Ϝ9ի5bɓ'4hsiyg}Ƒ#GSt3&M:Ar'7Rd!H"у_~١06l04pvbѢEP,^0-ߟ>}iǎ{.Ce͚{[Νcܸq|gϗ_~Iv4?ɭlڴiLpa*))#FtRig9y$_Zxqf̘AZ4۷'55>ŋsu͛gOoooBBB2`̜9,ܝ8qӧ3h mz--ZjCCC;F(Q}}:ɓ'z?כw^ܹs 6L#ϟaÆѫW/ Of…Vb%III 2D#zyy=zXy@w֍Ç3h Ξ=k.>}:>,9xt 5-]6'NB Vbcc4h8֭[lj'슘III̟+ٿ>,[6+4i҄&MLxG< 3OOOOڷoOHHOTf̘t_:hٳtYSVfM K;(냬c1c-Kg]>6(s6^{{m>Bya-y~ Zc/OW%pZ1QJQ(Ǡx2& 3_~iW( >|~^p( *Ė-[:tSыŋ?^Ӕϝ{dD/_%KMN?~&O̫)?>kooo̙c%Zү_?ƍ);tK.5ԟQƌʔ)Ò%KD <==/ \[vqF>#|}||x:T 7|G᯿N*UcҾ}{M>j9kC,X3fke* ڭ3k,Μ9)0a]Az̙3{^RJ>SdAJɺm۶/6EZ0Eϝ;??`)ٽ{FhmԨv*`ٲe4hK9Ɍ34i 4pˋW_}I&i> 6p>v1*T@ג Obϝ? w+WaQE\o& ދx"w;"(P%1?dg߾}Fx =z>|92YhVQm۶m۶YlY>cMى'ϝLJ>ad7={jsyeU.6VӸqcCpڬY3$Wjj*ׯw^z9u4˗Yv_wO/}LdXXNn0c 7T9S|9loK6*q_٥:~DNGtU=l#O29y\BJx# !„ƍ4R#-ƍ;W( ֭QX'U0^^^Vс Gᥗ^r VXTR <==yם_"{!N0xyV\wcǎNBпlyM+?')Tה9t+'OTT^zm[lJ;ݾuV>͙E"44Tcǎ!a\NjBx75$ GLJݻ;>cEAv0bvidԩTR%TdP+H)P,#ޠYA?7ڄ_E-w)V0's8&x?Y@ХXxA={}K Ń͉76JHXP *\l!S2)#/"3o_v͐pڢE gPbE,/+#RCBBȟ?7oN"FMs9~HڊlvNX:uC/n֬uwƍ6V\YrJ?]_z%˞Xk;t耏.?$;BBB iS2ȗ/իW7]իW9z(Ǐʕ+ܼy;wXvx9ɓ'v7o$99j̧OkY/_̔x+X#AdqKo)ŋBP|yOcQq +V,^t;ӵkW7`wıc8v ܼy$w7>mtLߝh˖-cTwynݺERʧs? N}gtj=%FKsÉ.#[&Tyia !DyyM#?BRA "l0`NYgZ՗S(3dY|,e9i$''3|V\i,}.moCժU5iLLmK*e?W[Qzϟ'>>}VZooovRRxX+VPҥKYlwX08ի$̙ի9zKwͦrASxq43#:ZWKUV5jժ!ЈN J2|Xbt 2tPM˗/3a&NHpp0M6~4h__96mb…lݺUc,ܫym%#r[#Gjx饗(*/6SĞz~ N&7? G?=iT=BxI)aAg !D`1(ȃHa52Fq7n`Ȑ!lܸ1Kqx,{+iw ߟ{A:u0a[mH9j݀b>ע9!KRʵv߻B݀ev0.Sfm (1%gM6"٬F+5_} duܹFh>~135+7/J_;mWd'Nꫯڌ*[,K???)׽G(֬Yr߅ D:޻M}_pa٭[ cD#Ο?OHH&v IDAT@`` ˗H"o{%Éݻ۷F(̠B ,Y<ޢEjŪ_gF 5ɒÃ6m0j(l۶m۶1ft]s$csŃ+VhѢe䲔D-xE?ʵ˗y75e˖~JVPBAk2KBB@)toj{ !>tW4PIW y) !fE󠟺6k5B+*QR&  C~X > C0b=c;w;uoH"̜97~QBRBLY6GZO:,–P&!*nWx'& !eQVB R:=/()#`L?I) !]-?BR:kگ}H)Bl,SNB\R6/!D`2/=,m?) ))JWRT&.]˕+tۘ4C,\P[j˗ի;~VI2ʕ+VYn]^zEjgCQe/kS~8wիlذ}X&ҏ5{S4h@xb_mݺհłޗ:9}Ք?~z믿/iԨfSۚ+Wc߭[OS־}{}R}P H)V=󥒘2?4mԻ)>Wѧ-)Rs^B!GE.8l01lb#q|afܴʘ>g>71E?)N!e@ %,11_VPZ13&L`Pg(jp֬YPr7o'2Gy$ۄ^zI}qltPo$nԩ.=w-R!+1c G4ؾ};۶ms5k˓;w> hӦƗjH"휼-[f(>7x駭|g̘T[)%ӦM3'8pޠAƎkx_Aܹ/RH)?* w)!E%)()ûrPi#aH)kC$P)јbiL`vVX/K)ߐR:PX eh"]jϏ1ba5P(*ǎ]S՟@c)CO°JV޸5kvoq|$'';l2n޽fϞMBBzGʔ޵kW<ji-n߾ȑ#IK[- ֭[elYŕ0yZ裏fG=4K:mۜ\¤I<ϠA43A>}4eɧw2l0^  *FJf}֟0YN{1UxLJ9FJi(ݫUL_|s0E5vJ)R:Eu1Eg(PF: Ǫ?ۻ|RʻRJ`:G0 0]GߤQ))] ԍͨQom(<"&, Mn,R c~6circS(H hdI =z"!N LPd;~.]vm9h+e)YF/ ^+Vdf޼y׭;%سfbmz&M… t9ӥhD@zm?# 2DgziْŋH/?̜936WK.N 붨Qf{Μ9"yܹs{K|w|GO>ӼG׮]MMM?ZmI~4IIIӇ'Nmsu `%0{xyİcƌwVq MY-ONNfǎ3K,bNGVw><~F4׳gڵkG||S}}i>#g,G~1fFaez2:,Yҩ%%%ok1c ڇ$oܩҽ_rs5S?]msmԷ>׎bi%t_dUO r~~ )CO ėy޽RTgGɗO}*gbē]F'n^ 88X,vȐ!_^zQbE+Ɖ'8tׯgӦMm۶RdmѢE\2wfΝtܙݻSn]jԨA\\?ۛ?p͛7gӦM?]ҷo_֭K:u{.cΝ̝;MO?j龻i֬۷gʕ}ѹsgBBB̟ŋٻw/[neٲe)*YfsקI&cǎe֭T\"##9|0[lь˕߾}{+@ŋ/H͚5)UŊ 7owܙ3gű4^u:uDnݨP :tkך<<}={lҥ9rPzuʔ)CLL f׮]f:ӓӣG]7gd,YB2eY&III8p@3WlY\ 3شiդG&Mwi;vo)&JU( R^"&+/dF>Μ9ʴo_; EŻLɢEa`$e btI!n:2z!ͨW_}-[fÃɓ'Ӯ];9{,_~e)ط~e{ ><ȍ7:u /`?W=z4111ި(ƍuZB0vXZnYuVsZj;c-[}jSSSٷvnڧzJ#.\/^zǕҥKKyРA)S& J)Y~=ׯ;uD\\F NNNf1 6dd}NCbbY)y8qbn#Fk׮h߳gr+_˖-5B-СCټyƟѣ 83f̘ժU믿& ZOOO{=>c_tiϟohOLgڴi<3./_>f͚O?Tgȑߥ\ۛ3g|92dʔ)CXXe˖u/!Z|/Gرc9Kƍ3f E~ ?6 Z .SNJ$ vX'44'RxqIϞ=={UQR4 ~';]6˖-gu} v6߷ul?}ؾ};;vŋv?~ׯOvر#s8|i04PzufΜɁ8|0ݻ$VRfʕ+xb~MFLL͉Mҹsgs4͸-=QV-^-ԩ1!00S9~8xyyQti*VHV4ׅ\;QD s \!*==ʡXP(,"l,;o ehZ[%Dp -y">%=hӦ={'%BGv-5k3;wV[dK0̄a@GUorZ.]ԩS\pbŊ@PPSBFfѴiSvbŬ2>} .pE|||(UUTŦMw/ƍŸ8bbbB@ɒ%RJBKHH̙3M`` ˗D"##ʗ/oW ˗)Q9%HOܺuSNqe# @/i3$$$ťKs%J 00+fy߹IHHҥK$$$ 4S*W|_ٳg)\0j Bҳ/ V !Zrj2WfL[P#uig3ս+NnA[O͚$Iow}7_ovezk6|s6l3" ׿srw?>z6SmteA7xhYi +I+ht?2k_v^< q*{ssڈj^u7oIe˸袋袋_uU9y _8ΙMye2P+I] Ѣ0 IDAT^#IR;tru8$I?G=\t&< Խv^*ITC=$I-lMUg2TuZIY[|dw/;߹ I _[*aS}LgRTݲWH${ZIҔY;8wq]w-cF$i";w>sί^Zf~3YLizD}^%#I>m}/$i*C-V^.^$ y_Q8OL*2kw7ja>4!Eg/orir$2kz|_I40-z,X^ɬ-WNɴS؋D$i{!0EC=E~ =8;[$I`îkU/YVrl ';f/ 6mgd,I,0ń8_R$o2#9[{Ҥ4TK^D33}{$MX햁9gYH4Adn^,)a㎻yIZxy-7ͬ-mqY{uv3$iJ lբypjӑ$iȬ]m1\ $Iwݵ׿bN;~{[ܦU-*㝌$MP~Yu^fm~2$iɬ еN׿"%&I?^uW];3kW)IZ ^9HQMH_rI42k =t+~£f$Icr17\w/6]YOMzj3k Q>)I҄`6}}emڦi$iD2k\6tm|3W>q)wk%I~x9֍\;&yde~Qafi[_ ~*Q#IDD}-mB.Ϭث|VFK%-pYq.}ﻂ8./n{DI4R~[{|7FI҄QXE2k~JPD|9-wͬ]|$I#!giKӃvZZ 7Ɇdf33$I%3?k ܳ?Aza[|0v~R2"whӬP WZ`ڽc$M0mD_/[4Y;HOD}&غHt)pdDS\Ѥyqfmm$Y[ |MiQ`I"O&䏓;ڴmӳ,$I+$OsZ~' Igʬ=k_xَEZ;f4kɬ,~1kkg.}4q6n#zXM+*I2kQ؉bsM?7ρCiw$i=B1g踍by2k3)f6m7CBmmYIDuݪ[9)^%3F~צu3k,IJ[i?FD}:Ev6g_l 7 8KF4,g;6mxU_/oɥ 2kW*=I@LqzҘ(7rSiޜY~S$I=G9`\$IHh 3k?n ݕO&c;}wi2k &սE$FDLT> ػH4uri(j3k>aG?2$ibo L˫6m?gH^ؼ~%"I &wQ Ŏ'u9*_}I҄QE=n6aOu\j68H _k%Iۿ۷iP[~dMm¦?mo/ۄ%O+zȬ=Ls+Dm&I&6Zxmґ$i`>&v̨%MZiúS)p̬)‘mڏ)7$IkYM$Iu8q#3kKtUȬHإm¦QnD}n^.O3kG Ȭ] &dwO$M /-{$I*6!ߩ^P Y=.BQh$Kx8 XC蟀7{B5w[dDݏEJ4IE5mXN$V *m>Y[S#*d־|Dԟ91$iEW/`F;2k?ʬ|MHߏܣ$Iz$r]ړ ڄ]Y; 05́"cIҨDԟx[7{eoV}%[8%#INB"bd"IҀrk>菱5(>^fmJ*I]?XY;v"_>EY2ksJ$i%D*]S3$BD}yً=2ko, ebs/RyOά]9&H})7X{?Y;}S=rC2ij+wJ܌б"`Qt &_Ȭ=84 nˬ>Iz("֥o}Wf~cR$iҋϢKlK)Gͅ;s< i l9/(ZhFEYc@?7AQ7k,!S|u$I7O},Oi$i 7cdK+6m֤}U}lϤy:$5K#.sНO~3IW_XEne|x s$i-#q Tlaj=TҠpDfNd)wv`>#IZ(R{$i IQܳBcF}s5_s$EkofNfo |8# $iB0wIO$i |(tB G)nXrDڒ>3Dԟ|bʹ>#IHpGm3F$IJhGQYZoB{ځ^f$i;Ea$%WKHG_~v:H4%p1E=Ʋ S lI&埛Vڷ%8̬]߿Qؚzx1gU _,IVp?u[3k׀Pۍzۓ4u$7;2k; 6$VτƦ?jl$iR[ܞY['mV$IUDp mfd $I#GS%I$i9t;"6>%IX$II$"6^ I@P+I$IPD4f9IZI$IwV$IB$I$ML@ظIH4Y$I &"6^M?8$ $I44[`)S`"3\>c6>$fLji ƒ$I-X$I $"\tQ`<83q3 p2Q̕$iJP+I$IPAtp8<:3<3O̗\6{$IB$I$Me!ρdW2~哙+I: $I4ql53_ @f.c$ISU]D%I$I=<ۀ;I*gJ$I$IRY$I$I>P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$f;I$iPEL 2>TDJ9UČpiet}J$MtΨ$IҔ#bǪ{艛1Q]DcDl"毕Yc0> .ǍA$IZI$MUcx,#⊈UD|$"c$Ipj%I4pCD)I$iPF$Io*ء>_q[fMdWr]IB$Io"booGyywϲ2CA$i$IZf X^^ZثI$i9V$I/3F5KO澈SƯOQo3%"x2יýekolDl V>63uLڎ>*`;e(nkGwc^L>2sAy}?D`:Oyݘ? I4%Y$I 2\}rX 1cNkM "OQltWD+3Ohgw'u;K˛ĜTo աϖ"bS*M ee0jZx_f^Ѧw-M>ޤ:t}_IԖKH$Iu* [E6X]pviCL 8'"$Ij$I4"bu`ʥ`˂f<8l_EQN~DQ!R s]3+qv[`>Jcm3sC`m`J xo/,8xRfΡx_ -Q:h;nt pņt3)CD<8xB$Mij%I$3j?nmy~6Cfd̼b˸MwfWeE!e4?M) C-3?7dÙ9x>p>k1Vcpt9В@f<[Zo\씙?[˯͙yJl7I4,J$is*:xMDYg捍uZ>\պK#_^zkD=G{[ %vguo"y LS 2[͂2}c<{+'d[}oC#bfˁwf-ڿ{:$IMY$I ؗb ١>/ 8 E0\l<53on7`975:6;)GM$\.kR;jeqŕKt+09V=\UE$IP+I$?]2}f^P9﶐:j̤Q)&"> DA5*C{t~TgnED {nҕ*mg@V ]r>$IP+IApefx1"M=8="w7c+CIuG5fȡfWl3cq׷1nKG$IRkj%I42sAD ؋bolHu#s] iSͳXcij܃c$IRGj%I42шwfDe Toq*[y&VMڗUWbMX bND*7jg1{A|Q+ںr2 $Ic$I42jK_Ɵ/F^OaMooԤ1v]9*0+>޾ۺ_*K]tc$IRGj%I)֭:rh[] oo3\$!ۛ7;OV]`Dn,{ u :ʥs[J$5 $Iwߪ\duVmfSp]k3{nDѦ`>&17V[3b-^^ЈزU ~ƶ{:̪Û5yH$eV$Iv z5Un7{]D6"Z.Yϋb)& W\Ҥ?W8xhyZf|p^D>JZ7DƝ_[̬+I4LL$I*e-'#'lcD.f]/WW7Slе5-YOuV> |UD:xJW[<">t0ˆbePM"vbEe^RlC!1QEFB%"..=7V߱_$[j%IXY?jDč$@3k'P}7,;x}88Xؿ!??"17E^PCFQTBm9C E\$,J$i=Eٮ];#-SKӛ~+P ] bӁ_e} Xs'P>ݕbew3.W"v*}y2@Db+e| EQ KC4몈x:;`;:g-_Z?eZRRހ8P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$,J$I$IRY$I$I>P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$,J$I$IRY$I$I>P+I$"bՈXU"b݈'#bzDVkA*1{kFDkGČ1gZf% DĪK$  $I""v]""vaNG"⊈82"0+㿳~D/_Eĉ>"qP\DsUѴ7)_K"b `DDS;jD3"Ύe"baD*"^ߩhu^;">WQD8~K"\gF]VƟY^;8"~x\IQ3"/GR߃Fķ#i]jD="w~gEć"b.2")_ۥ}Wڱ'I[dfs$IRDĉ娹 IDAT/g$ 3rl8$3Ok1>cZ3C-gBxIn?v88X3s~>vNW8mp!̼E.Qख़yADL_ޟ-#۔Ԧe61DDm6aˀ/iY+{'mXbe7dc$IZy$I& 06(kP.U>:wUt E2Ie~O-PѤcJ??nZm lI~zn'_r5׾bXDS$ 0c1&qQ9q%OMgQ XI> g qӀUb;xN_=L11fJc5}}0E&ǁ_oJg4%K! 8^/4=kxrXkr}wnE1}(ZC9!fL6J6c[m~k+^ ,(׍{e:/Q+I4ޒ5^̢2+0&`̼IIMb?Ջ<3 48Xg4kf&@â6!]VDS|sf>,>3̣F_F1KQ&ru.Rqf~ 36w#C(W7&E3;[q`f^x13e%b3\ q9b!͖μ>&3mtf^?i^~ݫۛ>N>8t+VI$Y$ILX׵wV?u~u-}93iB5Ѹ! Wz=Ve=@(]~ZQf^*,^Rthi~Bc[}3s ZC06yfM[1U+Ee( ly~C߮v鷺w2sJS}Dy!̼Ucf> ql5{#i|>Rpnug*矈T7ͧ).Ogx$I LL$i0خ1"6dxåGDs(>Mg4yb(6t|}zM(C)kzuB ] @Dl fg];Uίblj9X yTcvM^wR|͠xڹrq˨a׍0qS[ĵs-bK"̡`҈]E߉0d.$I0j%IM7 |w%ƘMBm}Tmh32siDpz_iC[>%]+n̎nWU OuuƬ6qּ̻"xO ?q C57x]Xs$IDj%IgUX1LlVUڪKofQI4,J$ʅq7=lX7*?~S'@օ]ߨ>윈X+3v,̉Z"{kZĵu'3o'1 xCv][nf},V@/I8ݬ+%Ibj1bÈة]@DWfzc.nh~mgbG,-(3*X$IB$IZasѸhC1<l\'uG>XtrY ׆}vDTarco\1Z5F&K'V3O; o:7Èvjץ}uDx%ǐ$IZZI$]?:,זسMgFijY(Ƙ̼8oWi r"q#F-bZ_-Q3\8Cߌmkf\j\9{Dlx.ʥo7-KD="Y̼8r;8Y~O7w1$IPj%ITYz Eċ"bX+"E'Ӂ]:t ɟGg#b;F ޹Xz<.paDsD<1"֏WR"NC#Q #bψ2swW[Gķ"]DFQsvIfb$Ij)3/)?3`Ǡ )f~hy$تff ` 6 =W؛bf3(&B:4ؼ^^t)b.3[Nfk\i_+\w_)^3#g+9k/̻<1Sl545"vX"b!pEHV$nf#mn1ؼg6/ ni>nV;ۀ3s^{G#" wlwE>$iY$IRO*jjiUP+I$I$Igj%I$I$,J$I$IRY$I$I>$I40W3ז$IdbV$I=^<42_$Id$I$Igj%I$I$,J$I$IRY$I$I>P+I$I$I}fV$I$IB$I$I$ZI$I$I3 $I$Igj%I$I$,J$I$IRY$I$I>P+I$I$I}fV$I$IlF$M ifz@5)Im 7#?0&H4-n/;2kj^%IB"6_Jc?efA.$M9 .N⭅ZIRW"ӁRgoF$B$I=8 8UfcձZIR[e8+IcV>zptfmh;s31IRK+`V$I5G?Q_m4Y$=NDYf?4&H4l lR+"dn&7$Q_8xn[\Rˬ-$IR+Uལf̼s,$io f.j, 4"[gvyM3kW^$3 $NY~2kvB$ >Ȭ-$IRW,JW;tx~fOLLTD=ҹHf־bV$I42kv !|uईF,J: ؿC"5g:#I$IȬ-Ϭ} C/#3[XQ?hf~ك$I$I2k:C\-JҀo |CE+{$I$IZf:9f j%i|ݦ}p@fޤ#I$IY[!*-J?bV(Һ$I$I#Tkv/Zy`F7gԫd$I$Ij2k )6ᄋM'#kU/XQp`f~֫|$I$I2k7G `ZIkӶh$I$i|KFg =P+I 6Ozf^#I$ITWW6!=P+Ia_q;J\$I$IӀߵ B$ ڴ4nsI$IM+#B$MyU(fԶrRr$I$i,iѶ<=KG/{kh{8h"k$i?>.>g<ܙY[:D$I2k"g/k?0B$M}i;#p2cʏ<شz>e$ Q1H$#wGc0$II.ΨAy3zfȾⷥoFow`QX$SӀ_ Yt,$iMB$ Mڴҳ,TD}s`?^ܷ*ɜEl0!b<$MGuGsgd ݩ<>Qh Y{dTIH4,vG#ÿ-~ Kgd.e>"/I9bv.tB6]gSE%+IXlw޿&-X_ {+Eu!p Xk5)IR+Wܺ!GhON6M7~/%ISAD;[[4~Z/$P[,N}˸K?^sEZI:q?-$Ic6m죰$t5S~3)Ob$Mb(IҸrF$I#QFHmog'`VQɡ |[}9^}Pӆ"ocz$+ $u)$"wQǿNO% D#JQAD ^x,* t RU !$c7aْ%d7y<0s̖$wN봾m͠|0!" N֗TJH*!"G@Bb!A)|1]N`o"B ϱ/iSm릩B!D!Z!"J/#f1.L!&ovmw[`R|,!"IV!pA.@OӥԁB4Y~ $(%X؂.B! !N({0Pj͠L]BK l#fn2VTm+"ۓ_fB!Jj;w#_M.L!c|TzN.I!B!L  ]eߓ'$ٷ B!j?zM>>ZB)$P+Bh ¼P"ⲏ$B[/w@mRu|!vIV!TKipqH!|6WOk󕊍ᒄBzB!P*.ôdW$BWҮ|8~@ soW&DSJ*E"@>"p86kjB$P+B. жa^!"#W7:(B!+}6!4T8" Pn*S)wj}BHV!Kvg/%0@gpT΢5'.<*_/M~+DX-eN k uS*Cr/sk(B֯p[TJ^KBxAB!iyJE^ZɋX"Ŷ8y1)R^qKd4]ke .q{^鸁I+jp%@oW%DSJE.iENU~PJZԅ !<&Z!R]&};g",Z[+P  !|Jb#5D{ӵ:w|^Ȇ~eZXbi=/%DfRJ~Rl;'~hmˇ%(K FccȂ@B\M@?iW;p>\ѝR2RΕT7U&80MwVD륉l6[:=W$oW%DPJbxZVXT]`,DŽ~BB!r@lF2/'sk߶`VGID|(|DF !rTNN|UNƉWILt^fJSVuxF^RV)4(XÀ)ӺT*vCr]Bd~:hO{r"fR;0=s']Bk)Jkz`-yCrՑ'/cԜ|k RlԫW]Ҿ}iʗ/H!YR!Dnt n=GX/]̿5f򊚌z`-[lu< !DPNBJņc@SZbX pWS}۷boz}@f*vZ*ɃVsDG !mg<#7slYo{n9<| Vi-ZqR+6]@#kf/m8 ˮZ_`+Z@[,ť@ :7Jp,uz+e?OZm5}ÝN]̀@) 8 hz2uD` W\ZZZ֎ ²9uNۜ'K9X>h+3zRqaɨBuM#;Gi?]VgOrJmuҬ!/kv_uooYb+cSTd;Hd뜳|hY[Z9u TAZ* oќIVJ-Fh`@+v'`R* <ur>H2UJmZZ_޶iڇRYK;9vR;WԔR5KڙJOqf_+`ـ.8(Nˁϵ֫=.0hrN)5`' IDATBӵ_L ɩynF m =57 ¯9x/#F"Oc^ɑ34rV(M56 w7)j%{e\iRj+S)m[Ko4΃`^)& iV+Z(Opأ<`~ORJ= l7SAZh9BR8 %pW)U5e+B+)[뎹#/q_S>^_ ջ}>CR0jTaz.RBw  aLWCq,hՉ좋Cn 47x)R80 nn (>r KhR,Jܮ#̼\Ta/ wX8*QXj &E)5KV99hTk7xˇ+?52#K~N*jz3?@B*=K6ΦzR;G%8X~ !%lYg fF~ߌ+rg"~Р͕(Pc ZԽ.Ptk@u9uCu5,ǧ=or+H DicEm]O` =(.jU`i"X$x+XFkk[`lL5)Ȁ5[ SYk_Qu5sQKR$M>[T s>,e#h+jhik aɰn|k1g/%6\khKM4wJ B*=&;jц_*_ 6t[r>ZBd&NlʤI>xznFVRKE`#bm)fdYaہZZ@ ,tٚ*@DmSzZZKG֣\no&,{lz5HkKkFk}zl~n73Zh,Jk=Ek}fZkWk8QNn `>ܫ\Vk}Pk=K`mVC-ֳՅZ_Z%s WeS4XZ/7oD>e:]?ٚjB:J`yK7h^ѕAoZvdGysOUj-!OO>Y;/߭2y7Sqwʄ?3}+ujEv&ke(a U|Wi]ubOjo&]Zc٨̶lCA,褵vl .h~6Сk^iOd0l,ujx,Av[3vTA,.wwZoPJ7BušC|?V-Я˕+(\8GB;i+ya/.]}^皆xV{bw.dϚ,!SS '?5?}DZOi,pmyS_gzcGgldQJ̥#>0g40Kf-s;zc62&Xlӕ9K= !ȍeM{b>z})~…퉌̰Bdk=zg躆Nj0`JGH/SD~CO/|mojOZ';X Z-n2q38 f;9K4XϺ;W"0S!S{Ñ0͵n- !ȍҷ/&>5jNS]U2K)1#Ûo֡W [*IZP"R1 8tJX6ֲ5ϓshypwз6/psnd1۬>\rֺf竟R5w6;ˈ/Ne~^=nَjBFijFYÄR0}zK7-|"L룝OwЗU8͵J/h"9砯lmڸWMmGHg<]{@ES1\/'t\hb_!MrodNRJeTܓS๳B([ ?.U(?\GB4 ?OD2m QHF]f\Ü mm\qAGe\w7gsadC7[n?ZuX>`JR2I8VBۤV""=8p0k4 [N^=G1^m0iEMF#)} 31఩;6N2(LGGrq\n>o_7]>Z$ZV@Q70 +Nn7gǒe_ Kv!Z!M%i#y͚Ъ"g=ძEq,=`DNe}/DvԮLfzc>NVJO5Ȭaυ[u% 0KJjԒfƗ% !m'է^g >ZBr Rq["! 18'AY0v Sncjr= ^#wǵnE O'RJ~0 ?Z/ .}fRJ>@!Z!Mz pXkײYBnڳWJ 4l/;plGk3Rh'J"@mSY+HzKS{Q-`cКvE`pHkg{,l93֐SHV!s VB5P˄"g3j/IWF\36!g\)kjti۔RERSV~KTJ`y|ldԋDS{:H_+v=^ljWJ <&Z!-j|ӵNBj*V4sD$c6x9!דoA!D4Xfk)¼=RhdHJ)u.iꞭvT5xX)U"a *ٴijߛDJ߄nt9'&⻀lKB!DaC}>ZB8ą9? %U9+ƚo`R>OΧ* Kvڪ]PJqT,A,*jR0z[)ȪVJ>Rr.Y3bw4Vk}zʓ9+^QJٖjB?w₱ArB8R| ?_Aw'XUB֧@馆VlTOTRR*0%p4g*r%ߔR]ShnCvWes6:W,a)_a{˲ Z^JNl/9IiQjk6պR^mj`Þ= QX)j :&;~B?vZ(ג!!)N~'55v`` .9HMMhh(JI6_Nd~CBB>7ƍխBLT Ne n4#>n{Ҿ!f=YR!zRc P\QiР۶mKo[ pE"̝;9spA:Ĺsrl-SNL>uU?̴iKѥk׮'O&+?kºu^GgKqeNRB>` ־<}l'(iI`es|1[ֺW7XOv < S1ZJ\M hlr&xFk=ٝL*p>ed:BFw@ ͥp]#ǒB!sBÇi׮=z`֬Ylڴ.Hk7ҿnS۬5s !~ecСpPD;5#F0 6Lwĉ Aڠ {1իGLL1]ۣMm `.]yŢS2:֭$JIU 57x,]Bko++ۅ%qz^Ro7SXZ0swPHTTK~ގ9kʔ)wj͛'ѿ""Z/>҇+B!Dn#Z!B!t]w!!!͛7DZ5 PɅka[B!r !B&sXb>ZlwݕBN7 }O.RF!YBB!m7oѣ>}$?ѣGIJJ󧦦#G8~#qGܼF޻pׯ_ϲ91ϯ-GΟ?Ç99k׈\xq4n|u;**>ZB!rLL!^9y$SLa۷/=@Jʕ۷/#***q~-?+V̙3K(A6mѣ;vj?/˗{n\B(Z(UTuִnݚʕ+{}2r1>CRSS)«Jpp0#Fp>|8?P={6/fʕ={p{LL mڴ[ntţ+XpaziӦtWnj3زe /_6ٽ{wLݞ'O4lo>;/WS}:ݺu9FtǙ6mӦM~L8Zju+WK/f/^ŋ}:ӧOnݺ|4hilG}Zӽ{wvA=ϧ~ʤIx5jAAwms k4۷o]]}ڣGk78tOLLdլ^wy_~#G Zt)C q}yM㉏g˖-|ᇄpJ.}W|a^~>N/vo'BMJ!#>>[M_xxXKNNfe0lƍ4mڔKf8իmۖ)S Һ:>/4i]6ׯRJ>On\i6oLf>wݺu4hyywxGzruQV-f͚v9+W0j(zIbbbg͚EΝ=L3.))~0t:{,{N?ʕu4lؐrʱm66l?h}RxqJ+3fϞ=,^8]Z5:uֹvkʕt.ZV-5jDʕ)W7vȑ#͛?̙3?0x`RRn]vmۖvZÇYx1Ν;}iĶmA$%Yy7d샫|0!~AkKVL#Z!BɓvGv ={`ȑ3$>7n][nL02ejY~g%%%ѻwoo&י8q_wɰ#G/v͙coq&MѣG9P;fBBB<Ϟ=$@tt43gΤEv w}3SSS4hvxnm{~ǎo f͚rm۶IO>G4m;ŋjΜ9 _@ӧӧ!H[xqƍG~^ʰaØ2eJz߬Yh׮s8ϤI e˖eʕ-[Xx1ӧOc*2KMo|I+j n!Bd>)} B曆rvAZ[Nz3rHCȑ#7o]V&Mضm}`ڴio͸5kƘ1c\r=qe86#)))7hK.1c Cɓ=*}G Ço>qaaamӬpi7on>,ZdZKC0D 9ָqc.wQ[R%C3g[..Oj^w_FqСګllٲ㞶WOJ-Z%Kz4_F ?K.ytҥKܹWBC#Gq8 o6:ubՆޜ (ۘU;c=>ZB!r2jU!~%@R<>9sՕǏ^x΃Ν'O}]C)3goPF ZnMӦMiܸ1l|'7n̂ (\m vs(s\O+V$444=رcTZ5}LRR[nuŋ\rŗvkt Pm(Ba&Z!BdȜM@-22ϟ77nƍ=3yꩧߘ5k_kپ};>AAA4i҄Ν;ӥKK0_&ޡC̙cW/7+9BE󜘘Hbb[͛ɓ}:çOaÆnsРA|gŗ̯T>L;9P[@Kz!Ξ=k-!!ĥJstܙ-[)JŊg d_|$-n@BW\ 7C˪YS:E!9>B!K$'w=< p{ <>;RRR0sL,X@ҥʕ+6l+V'p[m۶qaϓ._lh+ȟ?ɛ7]y]k|_r;=}iٲ%{o߾vi[Geĉoߞ*Ut;;`Aٲ.U5hnZۇ͇B!<'B!p)44eϟDڵkn 6۶mKʕ=sZ.]йsg6o… YhvBk ֚?yh"26?#F=q͛7gٲeԨQó;Ichk΄娞#23b.|9{p/S*hѢ|L0%KpB/_48a:t:uj/+(Q (roz^1UUܻ׵B!r !% 0\N~1Nzgںuk^z%RzQ^=yΝ;ǪUXl˖-|=w>(;vp;@XvmV\I֭9u`ۢE ~'֭+#qt{F`3s=gk5ߗHmI _rTx„ Y6"E߿?'%%m۶|r/_ڵkӦMYf?x; _>͕+*VÜ>]'"HI(T͓-^ KB!D6$Z!Bdx@7=Xb|%22=zУG֮][o]VuJ09t B!r'Q+B իW$fǎnmҤ?{<ߝҸqc~'ڵkg߰aTWlٲ}.]]v/T% zꆾ-[xO[iOK4vb>Z5'BB!wN```zԩS|Wn?a;K*E˖- }#F0lhklfVT)V^m,11xs}B gϞh>}vVX}q@@={h &L0_pѣvڜ^{駟ZB!jBh:t`7n&Nlڴׯ󄳵sYv]\9Γ&**UVQf$z!f͚9̛`m۶ͣ54k.qСn:ȑ# }]t1upǑ#G'WVr'Oޣ\rlݺcǎQtiz-Zkz)Cuxx]=ꜨFhOWcFFVZn:_ȑ#ٴiݺuaÆ-[۷aNjW۴e˖ 8Уr ?O-h޼9=קdɒDDDpeΝ;ǟYlk֬ɰٳg=z4o 6cǎԭ[իSpaBBBtNbL2M6+zGSiKdŊꤦZreomB6{:%".xB!B!ƌÁ7o^zӧy7ˆVj>k@m޼yY|9=ŋ?~<Ǐ8iӘ6mZz_@@Zk5v˜1cEɴu(PKҭ[7-[X>,ׯ_gS}e̙}IIIo.P 駟`xO:ň#1bD:t(Z̪UF޽y'Xpad^[i}ϗS 8C 1lj*2kݡfݺu[pǎy3u-hKԯ+{fW q/_!9>B!yq_ bنl=[iC%669)?ѣ)XW(Tmڴqx[XXcSSSn/_NvZ+yeѢEv5W_~e~mM:O>( #..#F.HB8q"&L  bvΞf͚|L  `ڵ4hs4lؐRJeXbY6((aÆ1;Vƒ} \ٲR嘡#Q7 BdkJTRR*F)/mQJS4wd !~,2qÞo8uBBB۷/>˖-H۶mygi߾=`)ЬY1ժN`` Fgĉl޼i[˗e˖mۖ;: N8>=pժU:uZBCCiܸ1?0s+YNC݀shh(sc߾} 5ktqVHH>,dɒ%=zcǎ`x;[+00c2h xbn+WLn>|8n7WL?~뜏uB6}~yRβBdJņζ?S)b{|xΞ=իW)PTP%Jx}ޛ7or .?~"""Zje<ʔ*/fԨr?Mds^@.ի2nYO{VFOK/ے+O)Uxϴփݜ, 0)>t:9tֺRK6誔 lZ hTgiݺL)5c5HkR0 (ЉZkT$I'7?;B!pc&a||2SddӍ|Qf;rB QP!U PBΙ7o^>,7*_<˗SD f',I)){_z7Tex*<~<3vؙIjBb9rG+B_Ɵ oF-@LLŊ]4<"j$/ZQԃZЉX.OsYzZXcꮴ HuGAZ|ٮ%j(< Ǧ/m.'a,w0Hk]Ycc=X'z|k; Zs , !~R?㣕![oC;*3j}wpkED̻g̓[7bӥeS4O7ډLͥ \1l~mى$smFJ)Ok /Z1"@B:`hϟG+BW JR|"DG'0V@XBኄ~Ɯ)Y( :_iW{𶩻kx˝ avT=RM3ϙiwB,nO٘jB?ץ-[Ns!D.4oCS AA)DE]0-]j0)Y0 hpcy^#Mڻq9v:@Zr{SkslJB!B ZÂnAB=lhW죕xdɳwh%B?`[8E)RغU%S/N'`CnkȦEk|m~15=j␪@M; ڕ=8l,ôp!B^:YDz3pEBܾW^yW^y9_fӆ-Q"4Z[%|~b" !r;UH#bX6,VkB7aX y7;!NM۴;) (cӾwq~s <]'@*%#=8v IV!WgߺjժxViJ!om>V*e҄ޤPk\/p !| 42+Rj j3 r}GZ=J-@kW0?'!J@m.#BlbT :n{>ZB{3}>C_7}ɓdhǟ/ࣕ!:Uku14h L)&+ 4 tsܥۜgmA R*#cn匇D2jBl?٘Gۛ6&.zU᪄·F@Jʭg6^&ܱ1B5`0b0`:=!! !`B0ӱic KluinjE,iUtig̙ٕ-={= jsruݒtTιl2p 076 ιOrluwKMij]@ w͏hw: Ƹ&"2v4Bҁ)i# ,/t,N9e0IFD:3+֍_IjZ#jԊH][ ~ ؤ+x.ksfvq٫!/nh9vy} GՉ!w)cs_&G""Q^^5L[7`@=l; j5VD{9wsn ލh;pM7D,5ϣl ^]x2F^!fM`"""m}7s_>5πt,^go [wmNȠv]Qn""9>Y;-1Q#|/mkB0u!rέM`u+;!lԊ1!ws}oMdb]/O/ [7rd5C$G;.==|$peu "s.3b1E:Wk朋6BǍ){sn+I6w}mQP+""# IDATR WDZj`JN>y [d""{XhfO35l+Z6'>}-" /'~øqm[upl)"Ҧkfl%~hmsZOll4fv3vM챈xmrU?B? |bfuIbf wC Z6.xÇ[dI1cƼki1i\}G\yTW'\ѦҊ$&zXgfEf6:'fv0z߱O@~H|mf=cnf6~gf: !BGˎƛ|ܧ ݩsxj`lfHijfgx#C"RGBƈH딞k_{l_uk'O{uL;kSon4O#jEDDځ Fȯ=@ po2vlo8`֩* <ߵӧkqn\4""㜻g #)\n=p7M,@Nv-BWjHSDF9vGw{Fo/9Vi ^z}vҶ(iG=3BQifs3fcؗ8y&LD^Iꩈ9 2yf!KGm7hP \PN^|s*/7BԀJHq} | <`f]j7Qos1vՐcNrB`snM@y4\ pBs?FxxR^@&Pw}:64pܴ=DAH;sܞK# N]ԩ+II1ƌىOĄ u.*4[9s/W^Y%18>"5;XeDpߵፄ~h-ZHVDDꟿ.{_ &p̜3q 0='ʥg,RR44^EE kזvm)k֔vm)%%߉ZGThCE*{ """MOAH;6jF^|` 7L:O9ظ˘;7""&%߿ΝZ0|(onZiz jEDD:Ç`-3{Yo^ލ9 !"r`ݪ1ëR6o o߂$DDDD3"""ȾֱuzG,ԅ=ot0еkQС5ddpƍ)lߝ۷0=JAH5Gg-|uWرUP\lTTuf'"FA^K;;:wvdgX"GwxBu:Ԋt`'0,](Ϊ@{%"z̛^RiEEƜ9WD`TVjSP+"""CAHQi73IRDDZ 72UDvvez$"""흂ZӦ,uPX̙I쑈H͝ʕ.$FDDD:"""ܐ^\~ԗay'rKRDDL[׿fz,JRDDD#PP+"""eo--5MˈH5}z?{,yAAЫs):u}W_ib1X/N3vȐt\HGVDDDn-lgj~]0",Mzz F64?%"""eUkGfZuUUc^oceQRA- +4HsQP+"""j&^fغbDz)+SX+"Su5kcLfNùjg)fQl@CDDDGAg1&~Ie=7o^秱~Uo5א{vDpVLeΜ4fJ3@t.[!K''""", jEDD$!'Oo} {.>Ku ^ȑ5[5imCDZPM ,^Cz(f{]Yć`}%O"""Ҳ$l>yI nt$ӦĶ=;;:u Щ8/ϑ"غ(.J((0*+cM^s ~eea}nKRODDD$YԊH3b(f =%FmWYiYcYdVD+;#3dբ%2VDDQP+"""b43X/21g[J5RSSH8p#sC"""CSy<`U5)|` /1};k%{"eeUү_mw-6Q\_++"""-KA4njX1#qyuյl y獤PQg/""Ȩ&+dwA6lBeeOye z犈HPP+""""5q{n_Qы+gժa'ԔUCWDDD_J; """)}zu~z""zE'}"""Ҟ)f3nRr3/fRX"" (-ܾ^͸QK#I"""lҫ9vԒuKJRoDDZ,.8ԊH:ut- $+Fk4 ;u?=ԊH:}ur `̝s{$":̝3@OݶqA$G"""L jEDDYegTs[jՊHVT˲e;ΨNRDDD$ԊH谹1lݜ93g軙H)fb;~/lݺu]IꑈH,Zԛ5k~[HGVDDDZ{-͞ wMRDDZކ ]]*N$b"""Zi1p**/;g̘1$JDelۖ{uU ә۲%wEYYFz%"|3xQ冭9mwIꕈ6 jEDD4c9h~غNL7wJRDD^AAo61Sf$W""")xa2x=Yt$JD,_ދޫџ^HkVDDD";i7<R5k(_|1*խ*/܅3w&OcF,&QމHkVDDDKN]::}}_^}u~e/v-XЯo^?nI蝈vitl)w5`#=2(ڊtfޅǨQ4hfI쬈Hyeݙ:g07йI蝈 jEDDUٽfξm\II&fΜ9ׯ~6ӻRSIꭈtt55)[וիjUw**ңؽ~61nHK2ιdG&"""j8d [R>2<ŋ{xqoRSSH^EdgW]INN%$7Q^AYYW&wanTWǮ9'|̵~z""U W` jEDDUJ'LJş_9VVMM Vy#"efVѶ"cSb%=5GwLGfHdf;os3"iUlo{#i-,9dGZiʸwziX^l:#lcH;("kN9Oɐ^H[ \?~ A-pXAm]'V j=t@Am;VDDDZA=x7x񛼿` ?˳S&"\n[9y:;tVDDDڄnjX1#q߅o>L;e0[ 9%"NgRvFm;(bȥL܈HQP+"""mk=xm5c}Q.eI蕈'+٩s i)+;5ιώ0@/9.N ?P[Mz] ι;Ϧffx}\ZO.xeι8fc7v?8n(u닗uUrmqmѾ5ة@o XiKt jEDD]IMqz80+Y܃1-p898I EtνhfɄg٬(y9p>:sYp#p^V.9W? 8X0w8zof) dmҩ{]:EYQ_h2Yfvsm)ltA|1{)'^p^@w-ιfv^ xDӁ U:G᜻1J~~BV.^Uy{<x碴jk OwmیV _Bk8环o0fL$CsRbCQ77.3 v kVfOچ S_ iދ6=O0af6x_~ <@s"1(i66<望؄8q3ɨ'8n990B o`ytM }omjV"j_Xܢ8m㽾Uf` D׮oE~7ot:W;݂ǖHOf$/?V{~h,#R-f}Y=!-ĩ mw)xm7Bq3,/Ϋ'_ fs~qL0/Gy_ŷwH3RP+""""""8^ ܄Y>^ 'ι%x{ !n և}XTO1zv9%q  ['xN4;k_O<khf>Y4%Bq3?QX"u{C0ٵ!٪ /1Nq6̢ԡfx=ފWw`_Ãh&8;&̢60^xYJ~X3ˊx 4z~O@/@AH~h3˜Yof2] L"8YW?Sp+r]3`fD've=CXffCxޗۑ D3{ꌆ4?fvqsP̎3!!Ȉ.KP[3?94=QΣM9ȱ( 8 /t,0f0U@9:p2hqps<@ι hn`+s!~Cp«#fffKEx%ogιǀ (4ef}afx_LpBPGTXDh&s R&f649dl  +^9>>/՞}x}fM15x%B/%зBC.i<1>3foQ2cK3QP+""""""95xMц7hQfs{j'Hzot*ι1Pc[]'LjιM! ^;#$#k_exKVxl1xa-rέNpf&^ {,ޤ_+>x5~|q' Ux`y`{y eKιfWsw"`rϘ #8gι>xצȟY9 o~9M쁉@z(i֥VDDQP+""A}AJ$Z$K7bitZN)g ioXMVC;rx&iD6UnKp.A=S%5rWەT8>br^q̘EDDD$HAH NkGd=l!M-mEL}?ҷVvp~/wgpa}IZSrEUj2aHAH;J~hEDDDZ-"""""5O S0_:b|.+@DDDDZvu\+?/i7svJOeۗ{u="""""ؒ a'퓝PH pӄ4sstKDDDD"$I#ځ=4*VDDD5RP+""""ҎvIp4,>v]SʂУS ɓvĖ jXUP-5d=:0d4h_*_bCq[kH32{}֊L/~ KУS %iCry% j(* Чk*2Oӽ), 0薛B^쌖:ТkR kX 5l+wBTAfigԊH4sa?}p<|i> jkVYʆ:Er㉝u9)cr6nʄ}aBm' J*\vYq{fq9L'+Z Q^?|rTu3_r>}O1?ف@s]Q T )k4{*IwobWٓO+ƤKtI%5QY{dr͸N+'׾,-ھ0g)[ybzI;s؜_} ͭLoVWEm5';Qۈ5 jEDDMZjE0Ĝ6s9j8Wkf/ěq)_#lVxnz;_/Enӻpc#'ezo~W?Q3 U^E([n 5꘱lऻ71saus?5y㺄 ^*~|}+_ݝCg}U4{Wyzf);g0uUX=ʚr4)'tcuvU7rŤug Ka? o탏tߴm" Km) 0iV)}R%򯋺ֲ#EDDZ331lqMJv$1aHDDDڍWp7 ic~]5uCAM kG oi*1K7VsB^Sy^wvm"'J-5uF^A=1s9fH^X#o5 ToH|zoj5jOj>\O҆rwn9\DD'p[;"ӈZi J}fɅrЮ ΢ZTYL|v8΍k:e%6"/#8zD&FfϠ v)9),X[_Wnm5M8WO wO;32Kfj毮%|iÿϗVr]X_Q9wS~ݓ]z+eN)o6^韟FlckcjKxkSU`b_yJG^V%7*wɠwT毮%i f/~眻'imιOkafםs&?mZi^yѡHO _C{1wOmom܊5[cgw#sZ4_:sN\ޝ ozsʩ7k i9jxڦ{;sμ7uH#>޷9lAfu=1fp͸Novɟ2=8uߦb4~W?\69;x|:0<5 Q9ol>\ȓ3J?|i%7O7."""Ү\qT^҆J1]Na'9vBH2!պ^Wn]!m4Gv|tCp=ᷕ_6ԫސChWv'%{zoevsG6TF?6ΑzʐQ z i#{p8CNݺ=H;~t˿/ɏJMߞܙ_^O/BDDDSP+"""Ff30$}KrS.J&?}[vv>Jcx=hƍ샂kY*lڍ1# o9sArT9SWtY9ҙpDi[7CzqyGɝ2zx*>""""Z)vGcs%,3͸輰u*znj5#l%1Zzޏa}=1j>X^.޾ 8+]-lks9h̰x׬…uĈxvcZCKȫw$m_G}盎0F^ߞҙkEf?=&:4%32f6Uzf6vSF6!fvsGcw1ͬa1AߢeY1,濎u4Tw̦ffp#z ̬['fKߖ>vkVDDDڍˎlg^ulkuKG] oCK˥Z8jfyE#E4]^V67/8i)ᑣ6el{F̅+`,*۽q@u}Ǻ"Mg5mr[`+fve'`#0X3;6~/:`-ff&tߟYx54+{3{~t3~?o_Dlhsfffיw` !Ӷlf^ӥf3{~XRYw ~1Oow3J^4q1 3۹}8\Gnϙ!q}R#o?̊"[lkf''z>O67"kN4Cfv3_dM5#(m٥f6Կn-{KYi21i7v۩a F6/dܨowf-|l-sT8i_T\WUZerU沦B%'~#6*pM9U*6m QVp׬"bnq Okp=g55,2QntIa_vf,+њ|ЗoTv?OFmH83xIg` x'>N$l;b4!`639wk8V&Bя2CjQH`ބJcb?r⴫54}p@ =Q@_ }}‘!k*{H3;97̆Exs3;9ICQN{F%ι7"Bk1~R`0p5^8ޮ)v1i BYR8 |nyYKy)tI!?/^?"9"iPT>:.y)I]Wpʽ?n)+!薛B~n rSH ҍ„ᦥ6%]qY،R5j@5Z*`s.HVj'Y\䜫s9hhBx^p?㍶~`f#XX!߷jQsl:?zg9b1b=+2}ވg#CZV38 %0nА6tl"ވxg'5"x6fv>^ގV7ˋ~7:5ُf]w].0<_mfWF_Zaƅg[TҦs^WЈ8#BCE*5odmsop%lE׍u}5G BG "A0!TՎ ~Rn >f4;i">8dh&֥t"MἐǿqF;!ŻH3QO-b=+1xL3J"= %CZnݯu}SޏX=|kGwKiP)[憿葵O&ѬQQiSn1;hp: 4!kBrι f6`:TMp;.ūEw{85Z8YOѧEι-y$&q5^X #'&8< m ^ПMz6 3K+0IxOD6/~[_^A_d_U tַ`f~FW!^m6OA U5E5xXoׄ(?g_>_ZVOs. %7a.)dUpΊ j< 4L?U s- IDATS/%؏iGĞy@N.l@P9ڊ jW6`J*K7V38{Gbq篩jԇ-"흙l NxAZ>iCKpr W<zF7U.O8fK W{&̦9>aM2՜BCʖ>vC-:*̬|xZo{t$tfv"BՆMԚYr?'X*$f1"zp #6H`A7c:Ya;VDDDmryUگVTդH3T7L\)у3ԯo$:fWV#N<>\@ ժu"jjVkwn[׺.u_{[Uj]ժ(.XTTP Hqf$$|ޯ׼3;<9gLyݻ/w}g('\3yqh!7:f;xU۾c*Ly&,M?Gv:WVYYjk>*Od,Y̓7q7D|7?&jdݟ]h@iIl-ZM Ew!z:Z#|s@LO8'69w>Keӷy߅* }Y.$.sJ8DaH^K@s(Ie[v6;lZvqG Tf, N_-(7lk\O[wizZ%iޕ*$I=Ƶ,('['SA^4G kQwV>Ve' w~tJ~0"VM~79:>o81mBFz>Vq><{Wp؄ay=&~h}|tJfֶMS*HՠطvӪ/\eVX#Uүq]\ \csQonS1BI$Jr`¹1ƫz]=h})z[]qN{r1PWsꍴ$i'!Dr4tK$mʹ$io`@BH]"p-I9$7J~ |RH$uoz&n:9w!3uTKkw\{nz9+o0^o_[ơ9éΚML;xuT낇`1=I&tzH. !.B9e-Gt}1x}_oΎO_N1>|LC*t8*1!#Gv ]P]6G'M۩U3Q+IzoܴsOUܯԯS=:8}I3k9Iw%y&;s.?[(6 IXqI$wl6h=ӄ<=Bbu1M?8 [z$kw50-WK!qQefg?DsYpTOgijmZtÆB5\Z^+; 21{e['=XQ&Wc3;ۥmz›N$iCuc6K6ꑚQ~T/|)lvuVa5G8fIΪ??}/Z@soy8ePɩ#\prVvn wVmq}<rݢ:jxK6jIRθ!)*xU fr޹XjnE}+N$3#6aNn5ۺQW/]ϙ!rӫ5Y]o=? _}/Zȯ+he37LY>.+h Un6u%Qxqٕ~ujƅn'%=RB6Ƹx(X1-MV澬_!l[uŨ:>N!uҲKM8Ӟ#Cߗ@==j%IRp>60cz>xBحw`zjzzchnE뢁'TrOoWmj|vP[#z`Y3^7׵ꗚ:E'qׇp؏oHv+yh߳V2:hZȬF^#9B+}ɶcb8=ׄLWahv] \Ǿ{$G(/?9}/\ȂM,o涩mjvo|M׏!mjN.'8~g/(N[eYK-m7'{Թ59$C?N 4h6^ !8}c!Ӏ{2t/[Ot]m}<1ƹm>BdGێ!~B$!8]@?BbgŹ;pA :-X&S!$7\o=~+6I=$Q[BxɵVg$|BFC_$yM͐i$$琴WXc|Eb$pHR6ߐzr?1Bx8=t+>dr:Pl:Bp];? fsl1ƺB8GpҬ~B_1n,0Ktv\z[Hcʙv鈍;;r!ǹGBQ՟EB?FEMl}<{<AzGvy73,I֎+Z9rI<mkHUw|{(gde#.o[s=luK6oq>xOot;0F[; .;܃W_|?? B$UלZM.$J$Cй! !BN|8 'R;۸K&IԦomn1ɴQ<BXBx&x$I6LZZ Tc!H$Nࣴg$eOEr3?ENDHK2u`jayaj«!$gA+Ӌ#?/rljCcz;!ҷ$ۑ|yJ?ΗH B!BXFR)~6a2{Y] MGI^!I ,x+~\<̣5,ZQ!'C !&9 I_Ǿ{ +j%IR2zr?{^\MWX*"?1c?X&砱%t3z:f؏+^s,O߷"Ӱ^o_N=o:j8uU]΍_ ֩yky~V ޮ1zq>}ԇ1t@77R?0.ד}s1}Z\U]ΟW&Uqëxez^m1yvkޜ?NޯӓT*Յevߡ7|oV7ϙ 嫛U]{]*Z%jnWvHUYA~e\y :fM]#4 .kj5[yYuTo[WϘN,ld@V^՗aYΞ;t@y6l`a}C{ۯg0JY}zvыoߛ#-)?1gHq^N2yO |^#IU@$P Lj3I jI-3mv]cl7c\B8r9^ARxI6c!M4.0y_"QEpD"!}IH3|17$y{f&yW/ӌFs{%I%sg?~$Hn[f{BQ'Ug$ Q]t/̊}! Hh3vw:i!IچPSMe8m,15;P_;y}ӹ1ɱ۞K*gKokRn>w"ImLD_$՝{&Z^Ϸr{Hr܇'|y=IK1ƅ1y~=t!i7{L !$_1vNoORIxy_ I1>qL_޶>s@.$޳b3cƐIhwۚjw[ZQ+Iz^QVd"Wg \[JYֽdS% !ί:P>JEo`Ri$I $I1M_i֢FNE$IRLJ$Ǹ[rfq"?%^7+ ?VwG$IR+$IRpyWܽ+^oX9ڋX76{=7=kv*I$mY&j%IcխhnESg9.Ӄ8؁9I$I[ZIRPBWc)ipRo6ؔs>w_.>q {ϾR $ieVTjVfZkRf[6oD}=ҟҟUk#yUԭh"6w`>./vًؒ+;'IR$̝yK3mT#^0 |lJ>ge%hUe/v4Nb++v$u;V'Iz։$LJJ" $oފZIVD$ĘjBңvŚ>wxf11Ir2Q+I*Efb!I_ޑk+2OŘZYx$ID$=Cz27몙1ohÑ$I[iZ-+IaVTrbLE̲U$<1НŊE|$ $6{n4S3$I1Q+I*USSgfEG$uZ}kIVD$$ŘZ9yaN!I%m$igVT6T:u|1$I]hf=<xHRv/;9I~׃JO$*IVD$dŘZ.|͓$IOO,6(b8$D$] <{oNEG$mnDl}$Iy3Q+I*i1jdϻw$i2 _.,b8$D$Ip Pœ݊$I2){1.R($D$ŘZ \YoW$Iےٕ۟FgW1I _$%~f]5޷_Ñ$Ioi1HHILJĘj,,1o(4P$IR+/u,1nx/1~TĐ$I,&j%Ij#k)@Ϗ[-nP$i8Obޙ_,bH$m6$#w3W} 7=G#$Ik?s<8!Ԛ"%If3Q+IRbLuf.bD$yK0k;djN1NÒ$K$)3Gb og;5z7*IJӳF_ٷFejc"%IR1Q+IR1y!μ$I%OΡ}gZc"%IR2Q+IR'bL1Y\5]tO]$Ic?óbL[$Ir&j%IS˪ti\}hlW$I]i8>5~1^)RX$m1U)IRbL  v}/y_i$I=J?k7}UGŘZR$Iڢ EŘB~m$C8OqpgpX'$˹pXo7cL]_$IVJ bL- e%ɟ~C$Iۊ/OM`_;|tҶ)/Ȕw1ۭbt6p5!$mb*/b[rmEgO] +TVZIST^B(8@e]VE*aG IR5$1;xYIZ$Ęnn?QcN(`4P]%IRB6}L1BQ706PqIDAT$i+fVnmj*iIڎJF$I$d3.1\Ԩ$IƘ$i+cj-V&I$I*!e@$I$IJZI$I$I*2$I$ITd&j%I$I$LJ$I$IR$I$I"3Q+I$I$IEfV$I$ID$I$I$ZI$I$I*2$I$ITd&j%I$I$LJ$I$IR$I$I"3Q+I=ۺzw[$I$*Ǻu&j%1X!x$I$I*ar[hVz9%!I$IN6Ǻ$I$I-WD$|w[$I$j^cjZIr>حۢ$I$tc]-ZIȱnB$IuBuD$s+1$I$IŘz cH_$I$i3P3c]`VJN($I$I*=cj6RqWuPnD$IB 9l{D$'E9_BM`$I$I*CrpZI*17pJ7#I$IRBh9ĉZI*Wr<$I$I=܏9֟`VJD%U9$I$mj |>ǐGcLݛZI*-?XpA7"I$IRB͇:vvLJR 1a? G$I$ہn15&j%x*1OvO8$I$mBc ک1-$i+B3"p S$I$! 18>[iE$SIC$I$IƄPspw+j%Ps:pSC.n1ռe$I$iB́y SrnD$jsscLݳC$I$iBx <284ڜ5Q+I-@ ",wĘ L$ID5#I GOƘZ>LJ`C>>u`2*0wI$I%! Fo;~|#mVB.\#ۑ$I$; w_sl!Bm$I$IS(􉅖JzSNf7I$I eMI҂B.9I$I6~cjlD$S! IRe;H$ITlKĘz+6hVTj&'o4[$I$L1եh$mcFoۧ*Zp$I$&mnoScL%wbKIENDB`./AppStream-0.4.0/docs/html/images/pure_architecture.png0000664000175000017500000057044212227021732023352 0ustar matthiasmatthiasPNG  IHDR9BsBIT|d pHYsbbtEXtSoftwarewww.inkscape.org< IDATxwU8drd *pqQ^kXE].bp]" b"A@A`%Ha[#5]O=TUz^3U}Ͻ+v=HT`m``C`}`ֱ~ۿ+ -AI$Ilpp*s'I-,Ij"l x*0gI$ITbb4̑ 9I4`$ ]Ăv层H$I\K\9xH>&ih">l9t$I$I#f<:d$IRX|4 x°s$I$iޓ9a'"IgM@E, s$I$i-sa'"IcM@D,8$I$Izwd9s)I⛤h}OM58#6$I$I``wʖ [$Iӓ7IX-9=G%wbȕ'&I$IE,x =xyݍ'&I⛤FE,) pȟ$I$IC`]B9rK_$I}aMRc"v!dཙ#OV$I$M  > C#'+I4o oU xE$I$ISOĂ]oV 9xY'$I ;I3Ƈ^x;x7I$Il9s+G-IgID^oYǔ$I$I", |\fǔ$IR,I;+vi8,sJ$I#b]>9rI$IuY|T[ĂU_ti#?+I$I/DYI:Md7Xx$I$i|tqI4E9MR- uȋ@J$I$M{ N^ޥ2G4$IR&нvpr$I$i8yz"6KN$ 3$,b4%sd%I$I`c:4{6swJ$U7Iu| o&I$IRZݥٲ$i&' DN@:$I$T'P>_O$i &WoKwg,D2$I$Dfs$IBMRe Vٹ#PJ$I$h >A3G6$IR|ԋg2q ]C$I٢U)%I1w HVs2G.H&Y/"Xc3~DD|Xc2G$Mo#fM̾YJI$uaMR% ŷS$I-6H$I1NK-b2G_F)e'%U3Op6D$IEfDlD°$IRO}ސ]$M|TUYoY8D$IEDllw `c`|*"{ ̼K$̑ ~0A}_(%I4oڻϝ&I}{=mjf.~F?\\s,I$MiL\|xr$I&Bf8x%e۠4 l97nP.$i$U7I꓈xp,sMDĻ3;NHҴ6ߋg$|$ipIIU8MkDė1 oGĎNF$iwI4$U7IjPD\[v~冝$I 7IoX8,$iC2;N2"vv2$I3@>K&eсd!IXD,Pwm3uIH$>w.I`$I"bEt9N`!p/`X:V $I$I &IGp+-.~ܐAD l<xl`'\%A$I$g$I$" <g_̿L̼uk{/̒S5W~%"I$I$IRD\Ty v{p$쥸ӳ3;/~)7l*I$IOH$ǧ7׭ayd o2zf l|xt9H$I$M$Iom3|>'%3N(I$Io$I jkgay5*39I$I)$IRC"b>o+N3]2g_ ;$I$IY|$IjM/{'`d4a#I$I4L$I#|sf>DN7_v.$I$IbM$i"b9LoR|837|$I$I$IvP.SBf<cȩH$I$ 7II)ŷ^JiK(P8\$I$I$IXfyL)ywŰs$I$IN@$iՀ&{226a!I$I4$I; Xf " MD6:6V++w׵k3!=De5(3oWz̼a( K$I,eM$Xx$x[f>T> EĊ3ZS&uy3& "bM%)}Fm4$I$io$I]3Ihꈈ{hfܯ|Қup0?eF[Sj332sQ4""^|ǰ{)GĮ{8V)Ż "$Iۓ8K:E}5zHǐ$I4CX|$I5=$4%mG)vTU;p(` ,eK##קXnMҏ݁ÁJu?G׀wg}v{\tƐ$I4Cv$IMDfyIHGہ2[DC`"b,ey~~/x$I4kX|$IA_A?LDꇈ 8Xol 0" ;EN[S#1%I$iF&IԻj8D&f_l3|:~؉4%"O67#b!!I$IӞ7IfZ3\d>RS"b=gaL F>Nd"`JA~ްsiy9NB$IZ$i*zShQ5ԟ$I$$Iq54Ip:̦k(Ed_{I;L"u"b\4~3zh7yD#b% 5\u̼v,q+.m_Qu7I$I37I߮?5TSDb]]|83ϪAf^ \ RSu8 Wl{%ppZfefi,vJaj^.1|w6ƽ 3V/+I$Ij{I$UWwf΅f!MD3s:ei5yWk9ͩl?v̓{)uG2/ &/I$I7I|,"bནӆR%3̏Ϣ,ثec""ͬt2̦ScO$I7IJ"b`4TG zK?*3ߙliy1 5l6;̬v߯kLG$Ifш\cT*7;6W$I$U`M$oV"b+`{N#b|c?]c#bd"I$I3T*I4Y|twϢyPojeq}ʥW?v~]#f~YH$I cM$=n4 Y|̻h~ңy㰓7uB$Ifo$I,LYHc+2}ɤy}ɢ7 ;1^#fƳ$I$IR5֌s$ \DlcؕȥO~cEo,oՈ$I$$I26Ec Eo~;P|YH$I cM$oNfzۯߗ,zs˰cG"$I4X|$I⛦mk\x3gM[f&pa#I$II;Iin}&l\#fNDn&QEĊYy܄{8DcD$If7o$IU3nFٰFbjYE& slI$I$IR5֌a ,N5+y<$I$i@,I$US6,."b`a1 xK$I$IR5uo5N`vM$I4KX|$IZH[a LQ~$I$ @%I[|ئ,,I$I4D$IpomLD%I$I"o$IdfW wia' I$IlfM$khv$I$fs$I4RkD,E4ֈyXt"Sa' I$I,I$Uq+54:ŷ33$I$irII&&P1nYH$I4KY|$I(3Ϋ&s&pOuB$IY$IRo~X31L1d==mԏ\$I$I,I$nm`&&ۯeqX$IfX|$IAffM"M16$I$I7IޝY3nؼL-Ħ$I$i6&IԻՌDqFB$IY$IRnXd1\R#$I$I &IԣLo0i,WIDlՏd$I$IM,I$U kƾ7"h2]f> F˚Ev$I$IR 8fZ%#ƳzMB$I&$IR}GL"_"b2vF"b3[T#$I)$IRMysFIJ 4eY kĽD8M$IҴgM$ir>4]6TQ[l߯ʈX|4WG"$IT7IINwDM3f}8lعb_"E{ [H$IR]$I&[* #I 3t:+lgzHD׌t+GIJ/sQ-ԈyAYH$IRM$I>Gc.ppT."v.>OٷNSTkf{k/tDī)K~Xk)k+6$I$`M$Ax~GĔ)nEqpaj25× ՈoN=nd$I$o$I ̻nMX>{ZS7$I$$IRdeKrup8!"}[."v[S=5 橔uH'~k?wk :i5\ך1l1V$IPL%c$IfaD8hj&[mCtQ ljdԓ߉D7s)EC#dXֲe}'Sfif p7 Sf 0"oՙyn\$I$B$I(3ό)Ɩk״#ZzʞIQN6?@) :6v eYK IpPcD \\k18"vFyj̇"Xݓj>1_,I$I$IReb$`>eIq q]ܡEčM-CGQ k 3y0`a'"I$I$I|2]ʬNBf=> 2!,3oOPfjJ$IҴ1g H$yeV)evRQs a'!I$I&I4@y2mf(32wNFG({} i62!E$I&I4`YEY~aӰG̣2sRwhfxpװeBf"I$IX|$I̼93nv> >eC3NF;v. vIy o^I$IӔ7I!S-mE;e>yհd2 뇝O쑙;eNH3s2v>$I4o$IS@f-3 J!g-3̼| Yy=ppÐe+3a'e擁gw9%I$I$I{ !)N6̛(3̣snV@#fGfafYfXxpp#~$If$IZ.X~);(7?h?4nVH#Uzh~%Ҕ\Lk딈ؐR;xBbng?Sv IDAT{0x>cT-}X+2@Dlok+˷^_C]R$IRe$ILʌs"b%)Ǔ-('W0eB%9e ;dΡ2hX؍xX{CAYBϥC.W0$3?9!3i$I4P$I|2[-)3+yۃ~:n̿ ЌZ@D666<+R0}Si*$I$I$I *\:qƑ$I$i $I$I$IҬ`M$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!$I$I$IX|$I$I$IbM$I$I$Ij7I$I$I$!s$I4("s0mWݚWL~`_k݀ڮ031%I$I,I$i68w/m8h3:kW/;]~pYǔ$I$iqII"bcXaعI$I$Il7I^qݺ~ҴGOn3GڮӐґ$I$IS7I"b]`q~|4XѺlLBo376k?B)_fj ?P)ˇxom{uf>S^s.s4'9ʔ]`M}'dJ"bcpzpIfP1~sڔ[)3o>:~,3o9Vcu(mydǑ$I4X|kʉ%.+[*oETOD x+4~rGOc2V=ϵ973xO ,?/ZEsښ%39AsK;ޥWS Og'U=Ȉ%p,p|c/e7ZHy|, <x.m'Gekk"beg++ci > D'K[7PXܱK[ϕg@_vij$3/j9a?߂Gq*FrAm4/W=_̼Jl+%mW}33?^5~~Oi]ܰgDDEfi=ﭙZR^g6ɟ"g_Q39+WS^{A #b UDgQfA}@b:-)+=QUgUbXvk3=ڮp1n z|;3qZP^>?wOROFe)M+I$iz&IW璓/dU;ZrBKuj}}JQ湭oۡ*)EH,p@DeQx0Uh:xqcOԶ2nOno27]2+t/:`*NఈxKf[}Dg10"ugI#yR%{/~_Zg)mtK)+ߗ80"^kͮ*\UiVG=Əgk\n3K9uktW."v<6ٺ+"U:c׮׾'vkJ) By8 3snP^/W Y剃YaQ^'2=)+,?]0smkޟNy-YvW>Oyߪvnjp"S{GHlMy/< x5r/DƔv̫+%I$i q7IZ4=EX:.Rsy(ev^gQf>9SbLVfx=pAD6;Y8 oJ{1kc"5ƜxϘ E,}")ՔGJщk2 Qf|ڔ&tװWSNz/qv2d'Jm1k(6o];up%ؙ8۴-~'o]g MQogc5s?kEʲ+.2kk7%;N2󶦓j-}-FT<>y[o;R;ikpJDB]W(B!1ܺ\l繭1V?obcf^_gSf.3pdkԟPpf+^q[Q}b}f5Q^O5~fD5RBʲ~NyFw+ʗ__|$If/_ l:('onG 0Nvdc=#>H9vo}/17;L3rop[+NPN_ ?~9zxxxxxx߾iٔbKғ \rwe])kzuev~5xwPo<OVlqFϐxVf|/zIDl7A=췔Rn3ƋCf~%3]?pwOW0zb`<.3smʌ%ҹTqyQ3<33]}C׍e?Gsxl&359s;3dY[D.cWme5̏^/}1Fe9M3^Usӭî2<93<^~K2$3?ݥXz֮d[잙] YzOf3랣y[f~$3wGʌYgQ^ox۽#"V'8D[I$I37I~^q[EΠ,z6]EĶ >]-[c6r,})3'ZmxSN7ݙYi؄2;̿TK)KVK.`,kC>9{dS2s!pxkʿv\>u4N:._Re!zwj=SPf^Au3T7 ?3'k)ڽD"b#:r;$3'd֗*q}[:._GY:Ot>ME'de=g)3Rl%LyER\bFPf.qcǺ$I$M#e?v_}DWwm(3. ue(':M̼f~4?̟8';.5N0z}"e6t~Yj/Eē(K.0^(Ė4"6igax^K21BVߏC8u̼JVsWК)Ԅڏ3G=Ϛ\JKs5*_PhP?q^!G({U:[οi>P%Ȏzne"}m+OcqJƑ$Ig$izyо EŹ}"b-G,TqP~Rmɨa|'ϭ1 ^sXsv)Ugd=Di?\%5K[2_Wt\~mصX0:qK|gnDz)/2,eO&L/3obTUshuhG8 ,M(E=,bLYBrҢuރrY⡎^$Io4t~{YoKd/}hYʌn:޹BL=1[M1hۭf M5CMF k]D,ϋ#gˈ:"~~1zI'M{?Z~qy1\}F"e1r}moJdtV!Vsd,=#x3P#"Xv~:gW9@oD>y;suODNqzXO#e-{FzAW [$I4M$ISAD<ع'o|K/wթsAVkc㍧s `뎉EԟɴJD,c:O*"^طD,udvmWֱ(". 4c\; Fo.@1xՒ7EGۮ u<S?2.{| ]f?{; zE6\y ~٣S;""n~J)D$IfOH9̬:xl֬ftuXwgDcͳ]9س:^"bRa'wr_'N{*UDDWğb * vi EzޫRC -@(g;ݙ$ٙ|vvffΜz|KWfof 1܈ihƛ= p)&raN鮷ұULw#ڷl =u oXci:x.wl7 Чtp(R+eѽ1&g!nf=Qu`u%v0{үc*&"""""SDD&٘"%'*le }qҒy-F KzS:Y'AeӛTTRFON溟yzJ4NJ|w?.$[8T,[fw=)U׾Z'lӃ\"Ci#"HSd.`/`/3 714@S ת>̔LST8tG=,b+gCg'"""""S(DD& -Wv1 wS!}qz2l̕n o'ӓr枂yYqUѱ \-ooSwz 3[ c)=g\V^kA'ց>W$͠7xƁXp̪CODpGE%DDd1y_[+z& w*NK2z5_ w1_!xedG[q݉W" -im:NT;Ͳ D|2tAA=:Oy`1"+17;zLϓt 2`x*^:?{hdP~+[Xo@?""""""@7o/`xnu`U`^$̚n>6۴*i{Yէw|dOfo&}bJ"~B{ ie+.e.ܿ^~8w&p^VoHOn2{V\  iǪeReAۉ*ז!)9y+`-Z>Anmxzk7&keCoJeYx13."""""S8DD} w׹?= ػI'+YZ_8PI1ղ++=lT[BSaFm҈ ֯UhfB2]5{U2mA?zrҋdJiպ۝B=.)Хnu-x^8i $ۙdJwU2!ֵ(7= ح[ςW';wr'(&"24fuͦ]T1e%٬U:3_5<3_,3f~܋)oxR&- Rǒ*eyi)Jce(h3JE%5'޹BF1.Hz\V bw e0o%t/goGGvq= IDAT9zz2u3+U2{H;s=-/+{lk6'e&wG㸲GG%>^̪A{-=>^ȀRMDdhKd{Lo5Ygfִt-B:nxXn6[7p7wƛٗ:ٞ-jf2F*2NrcS}Llv+ٚw+UP2IOlڪ2l&mbf~hۘܐL/L3,t{emf-ٱ~ 0_niꄻ~l3jFmyOcG,3Ni/NߴWZJOf_1xٚU~ p]23[sSOl>3\"qӦ|3[efvL:̶f&c͙Ĺg6kl!3"7#ݲTtv|lfxۏߪb93v7ȹ [.7Knw>KO[WDDDDD&eKcnd~;q>of_2ROm"H3{ w kܼIw<(ߘ8) fuA|ďKo>!¹ DWd=C3د+7MburxN{~@}@?27kV3Ӊ&2Vn+jmefw'9(UJS؂M}X uf"@*1lD̕EKvyNif7 Gs4f@\٩ԏ4#pGcIy68z͹8wkם 5p\=}p#~&ז{,uMh,z?vDFS~Wf{kbĵ굯 G×#2eM?l#L>j"S|WϽMx(ے?gffyl_K\#\%ڵ?&*g af7c>EvG}uff~oF$e_I<T."2qN|[fw࿉71`P>r-"""""SDDp.1Vlz$Qff.!nKQ2?7lf7,Xd$c<= lOkL?+iz"[p.mIdlRȬ# ߉mffXl/4Q+(CvmKs^궥׾%O3YyIٷAʂL4<8ϻ$q~<l=gݟϮ}糽hCdjwhf9dV=-;ok~<ؙ7Yol}Rv=>qx66 @y>:m#1#u*c~""C- V"dv/*uf ۺ4,ٿ}/Sͼ@Z+hUz'+!qs61~?K57D JG~LgD Lɲxo;vZ"&x~ ۙ_#ڕs+2ZI|gU}LSSL=j~go/"cڂ>Ed*6pz+pD@DFYU]nn`emAD ׬c ݽEe>G/'lC۵q;\ OUN #o;XWDDDDD&S|f#ʰ6~/7ݽO"3RW 2N+ݔuˀl"l>"9Y:miecf'66 J3fl尮nq#G3[(5onO}* 'm,#fvX\%[_sjJ|,5;f Fӗ %n@%%YD)h,}O@M~F쏍bY!WWecEVA:f?/QovYD n+bĹr*pׂw'Ѧד_/ӿOq9?qlEd{HڽMs/'ˏFE)喻8ݯjD}ˮ}ǚ-Hq}]5/eq7&2&٩Ξ'ˁ ƳCD`W]$ĵެZYWO片#6/S؁lSY?Ӧ?*s1;ˍ߭GD_$I 3;ܘȜߎD1wjwOnoq`U387V'ΗgO$2 ~q[K; nW:7lzn7D΁zUoJgfvw?CMKoo4{b0 k_*&h*SμYd'LAow=vIf)nrZW,D)ϼ*҆,H1GIN-}5ʂ-Cv? @^^gv>.+ T@mL_DDDDDzCcHL%kWMMK}G JH?(&""-H3[:HfUloS32uf6V>>~RMDDڙ x̮7]1 rfvp\yڼ1l6c+^~Vt=fvmf34[̖01˽0pjo)""""""""2јo""RC3{xxp```bixX3{!ki]" ,<%I~R&Gke9Gwxz=DDDDDDDDD|#:EAm~7 X {}Ͳo?hZ`X`[w]:줈38ڔ:C`ew6!pTx<[aOJDDDDDDDDD&""^f,!0/0'00Ad?4ME$)G77NܸۛGc}4!TfRDDDDDDDD|al"Np''"""""""""TvRDDDDDDDDDDDDK|DDDDDDDDDDDDDD7.QMDDDDDDDDDDDDK|DDDDDDDDDDDDDD7.QMDDDDDDDDDDDDK|DDDDDDDDDDDDDdtuq#̶ͺݏlRYq]{տ?fOMdV(;3>}3ss+%MQ21R֏Ys `,p;p pG{dmEdxܵ$p-pi{""NesR?fgz9m *DD&wfv p:p^dlc(oM,l afǹ.e |0mf^ey.Nr+p(DE^}翀2)""""""""GcLF?g:˜ټfv)@jxkf6H 3B2<J[337_,v]J_o#EDDDDDDDd 7Rf_;؝ɟ- \,X$YL'U[޼yf6a_dҏ`,}6&M\Jd&O/Qf,DDDDDDDDdE` [&.2}\O{(Sl«i /7-)C`[qf6Q/A<!ʮجjV3/ i->ׁ߻&m V>KmцH;M0X> L>t{wGߣ%Fo23h ] /7['Wٕo{Gfv_U/# h =wۆ?A~EoVKOIM7vڞLYTvRDdp;c2oa* n l , B2p3piՌ#3[?7.w.jx\ YGc==UA|͉c<\\Os3e _{p?i[=tP2Vπom3;_o޷ ۏm&o}"t3Xof{Jwvf'ƜX 1Ĺwv7Z݁9q~DOy+*}ȵ0kne f6l,H\GGwo>m̐uu\05]e2M0y`5` 3 EZwJ;ef+"gw=Hg[ls`dnV/W Y  \L\;.%kfh-๬rz5\1!}8";<1 1^Vrˁ۰-ݓ~ x #+)\vUk(z-zw њg)ެߌ"}_t- 51a4ޱ (wK/j??x΃)E7>A[׾ǘA=vL9&?7bLvMWد'hNH[ced;すzq^`;^z饗^z*;)"2Q0Tv-I49r+cSv3۩E~x}vkwf UX4k4Nfe6F"#,ZƱӶ4f͟ڥm_Bdb7|~ߥF2PCf&GYU,Id;igf7)pwE3p/i0wwd6 [21O7 /p`_.3[~bf;t\ļde>K܌/kZ$kkiU$ɼ֙pUYmLuK,pCWk{߱Acf#i_Uep2pjk 7Sck73;J̾\F\(n֯z̆Y?9<p4pQSnٮUEDDDd줈aقyϴ[)+y.Qh)ݬcfy;7sFD}mēkkR Q- B̏< &J\lf;m:{DgoN d]9.'wYD38 7{E3Q2qt <l8_hq=M_ԗ<Ȕ}x.G\'-3+pm7m3GOK]s PQق^^V D:ݧ!b_H˗5V Hxb?rs&(7jծYehOק7="2}nfycSf=S^fdfv d*wqeDnD"%k٩y_$l\ƸDGFG|y_&j +DhKS$3[8=DʛmN3jIoc^${sjHdu >]`P$NFDDDDDPMDdQ2Zt!EOg,gw#ր޲a]'Ϟη5Yf,[ ogd13W=-pcݓ (o1OJo4vOc 'n^Q^a̝~n2h3ptz 3[-8m:R!%2l1!Ε㋎3p"qfrz+O7_'ʧo'3,p1;v?-۠- ˯Ido?N*X2eg5Z] Bb"Dl|@@ꯋע[_Y׉Gu0SH";fu"zh펡o?%qu<Q7sD3 '{Y;jZR>6Mt!3[8O|.sZ5`fx{ RzD{Zw?ESu.4mӱ)l!7J}E`gwŶo{̷eyjf]>ؾ]CVfv'}݈󣬽v"""""U ŧEDrmV=,〕Jd7V$[(!Gd,Ec`$/@?w'> o@Nl$ӧZ޲wR. ΗNeuO 27}wWTvߚ̞81فf6(Iro Xw/C쳝C}~t_@|?oSlԟc#ޗemOfIQ5w2}Rݘ?lۀHd˯IvϺciR^vuvw ׫~\[֟}{'[ZIpݿZt w7'oWbS9غ(]f.Zn}X(֣>pNfL&- emݜXqoGQ; XxMoY[U IDAT5N^Zfoٶ'yK3^6- e}z8LLW+MDDDDo""Sl/OZò'w۵? fpu{+'If%VkdFw~%1[|_ڵQf@ZzX7m =徴NDdBxxif?5~%=Zum-̗Jl/Yq.sVz.ȲrDJ3 Ooԗ{_+^?NͬUWX>̼ \^1wW~{~\ƠtYGȂijYf,0-#woYJ2;q ?jw"^تvr"C/פiIV`nPRYWev/{sѦgE5*0{qDDDDDo""f]kG3TcD}?Ee; b;i9SGDVBh`5 qh]_GRtF̆@@녢EcGQFVQkmYɆĘ="Jgfdhwwٕ`չYUÏ,Ne6~صo:ј\6-]O>pISMDd4pQ<׀eu>q1^u&nTZttK[>ݏ!Ι-Ulu/=1̬E>,s=2OGB2Qv1-VIǔ|ۏY$?TX9fvP@Mkf˚Ff3vοh<頩tMZB0ߪ&SYUk*.='GјN2=4>QTf&+܍ |i+l6Z0KnF?@f"""""bdn1>?K,ި|X?d,o!wysVs'wݗL/d%{;h+]g~z r5;+̟*,El4V4QQ_r,8WWf/l`u"%V8^v˺ܭˀ"IwgŌh =lQ]:1:\P5 ww3;{n>7Wl;LS:ɘ >k-(0+p^O0'r1eJ2m|27;wdf?%TY(]AxC1 $VDfvq^ݟ`]kA8*qͤ%L&""""J7ӫ4ka|pmWZz{nebfӔCP lxKotu2}O20`u8]Gμ; kEAQ]nh,@[Q_5rٌĘa6Hff]fi\7;OӝD1L'A3^ tmffJIKNi4H{'Iw~Lm7Ƕf2ܽ߭VUf6 !}`~lj֩zMNweOeur\W uK "ߒnVCj5#y Aa;-ef6윽0ߌ:x(S)pV*=7߉}lz3[p6ozJ!tNL&ߒE~[7jF1ElJfEUiVS3Teft^ZnAz~hS7UcR_* 쯢cE7_~,h̒R<ݐAh`{7|b׋Ϙ٭f֬lkM'Cee6IGn^l6FTTGgWўw 1g <>kfvj6ROdӁ<}׿Ѕz-i0o_':}P$-ʢNt\tfr?q DV`}5;>[r}s聒f62L@o|$jLu?"""""U)MDd WٖDЧVjb u[hLAn){s 暢ߴIDFB3v[Og777OcK}W9 몬T}ԗ.n-;f ߖ69:g08y[Z/t٢e$x(^'r4H5q^\Z,nd1%?;`p Dٶ5cSD&`(8r3i2`&t{2PߍYlW VNm{]y}gL*[,kf6m+pnVw1ĹT4|AjrY9^̦`2c Y\ ؕ>x?T""SS{y?6fҌEߥ`^T*, t+ݖIw?w&0eқ_Gfdhæ#f62}S}5&È^,hX/%/W&i̬gZp;D./ nLGNzmWwHs6w?7%JmKsڈS2r4Blg9ͬlE[ i`%w/q}EzMǒ[Vmf%<,:*ۮȈ*=v tZz2> !@7)\vd|DVUt|̬(K _MKA[iy7G=2x"0\JlY\UOX/i_Ҍ dzXi5>wߟ(ysjZ"3.^'0fӆ1.YUMstl8mY@b}bջ<[z)wŻؗr7ٝVo:V:;6@O4V`fdrm["yU?=.8 ]޷-\C}Ukنԏ:U DD~pE2;E79dzշ&0OoLd[ͬi[M*s[Ee\v;}}1*>2~ E_> ʂ}^Wuu*+8&]tJ}YX Lǔ5@ Yi&5tRlѭH[slmΪv|["@\c Di*$1Nni|hju`RYUOQ_z=ddkp|zL&˦O fzNu*̖qf˩ ojk/-~I'ӝI#Jvye&L:DYiGfV'}I0pZb#i P`i{e_9vdyX{f2}E:E}!}x'}}d2׬74הmlžBZtNJA}ٙ|-ll۬s[k-JzWoXtnll ˧Q7;Cjv~$NaDDDDD*QMDd*ӘvHRq&ǜ[_4-e'ߴ1d/+0-S3ƛrJǖcfW2eK*=:U.9Y˛46-pU͐4i);f5NeS^YOz[gP9ʮ=i1{T2,,sxdvkVE$Y);?b?zBP2VKn,hf&[K~LoofEepڞR+VeM<$*5lBw}2A,ynnLof^CDDDD DD.'sQ0[d/;٘OuVfvU}b{FV'ϣXz;3o/f ߸M2&ZAW~{XNs7e5ٲDɿ풷^*[~*=3p[I~3[̮!2QZp$-("Xz}/fv})ì:xSsh;fvT 7,r_X!1bD4c*1f]Yel3Jr̚~(|Cim]3kW0DJkҠЁfvDlAmk3۳f AeުTɼ=e?~{he36jZ.ڂ>gfge*Mʂҡf2e-}Leӱ~O>TbDƼGfPQf6mbf4˨]F奀 ,83'nofИ*iwb_CiOf-cfsX6 fv?1&]8x̮0d1df#lI3~<|`[?r94%ձfvZvl efW/pI6 ΃^f6I{`,pM2 Șd@>|YNӹiu`3/Kv~FԽ2#tC k;bnJ. ̞i{'PuOikڵE0f}Ggf0,_3[* $MkҼ5{fN]3%JΔ{c`l"3O[<4vnx̆VԏAăi݁3[)&_Φwh2QوJ'f}_`s~~;㕺",R!~lB>){RY 3M^B! O:̞"sHc>@՗JTZ2Da|8|Eg/7'̞!2YZsc$iqpb4p}mGU/}4Tgݽg̞ vfv^5(RLi˺ L3@XvEs_lseᾘY; ,m8;!mZ5ֲd-3{ M {s:p07tQwݨX<֚]מ'Mk?fGlo"V{Pd:"XrPqL.Eَuk׮  ѸO' @WSOgkI^o#41?Ӯw-{0]g 2؏49Ei?w癆{7[oeӵ~Tef:x/7DhyW/NFdJ9{cfV =}Nx<1CDDDD-eLed}n:[DFQ͡ԜDYuOj>"J'ŀ(=lI֖OxYߚu'˴U`!` "&0e`j*{z>Q? 7#wߗNOGDcNoI~JwCEs?q,ۈ@D;o_rR;uтDZ"4^vm_ Q_εf4Ql]",JB&o1˳ʶ%fcO.!oΌ,kZ{[8fV8v#Qpm#Ox{8Y]֦qO~B?+q<jAf[Qv!Nd 7 vtN#Edi MroW ĵsouI_ 8MطE=-kP?F"ı1DDDDD:d?vY'l .hwW"qmO<JPCwߋ(yŁ'}l&'@q3g2"/:8d[]7nDX37˖wk]M!9p.8)Mt'}%wo:ΞG"1%n0QqIwO@ꦝv)X"cqIwow/ Į@]Wq>CӘ&oο2%JnKqݔ? Joح󸈻C?m ˕^Zz 瀯٘q%V%>O8;DpL%6{"3,bߖ>7H\I,{cVnqvx{2ZwOt6Ed2gvZ3 23FdM $J 'dOW}R#nNgޟ( tDAnWSD&IvSxA5q6"2z&>ľ|+QssYo77Ϙ5f63,qBE#΍׈ӏMC쇅cvM$ndXdj}/GN6DF\uԉ 1CAD3Ϊ=to2DĵCToUenC7fHu&T>mM}}dg%\eA/ͲdяiUcs6z28?ǀ-J\k>.Xy~׶;xn}cVbfKAy׉|]2j읲T석LfpiB7iK7v7iI߸uA쒈LDz6' k^"U(&""2yPIT=nn1  Pkm`_!9D rU IDAT RwDDDDDRMDDdIZODDDDz GrODDDDDZf; """;̎ &GK5ck"""""(&""2rH, +ꮳj-I}bM$I$I$Io$I$I$IR|$I$I$I$I$I$I'$I$I$I>1&I$I$I$7I$I$I$O I$I$I$I}bM$I$I$I&{$ID̆G3sdG$I$I3$i%#b:"vDʓ=.Nndr#I$I$7I"bSHM<8]7RI$I$IZ|i$"AŁuU}Ѝ*UJ|ʸpW}?>ΕvKf>6>{U=SLJbye>r-t$I$I2&ISZ'cp,"2㴵*𞆢{3} 76`߫Vf1N[/l,ް{~D1̼q{=Xs/`jEߪNKhwcu EO5O(`?`Jై8&0gXx|` J q\.ZgOef25 e]ad敽>٧ccMD vXxozmz69߁*8}p5%ӸqO7˪sy\]f'oGy/ٗr̬v=,/<#/um,l(zxG'x XawF572O]i+92Oj_R۽(Uh(_h5s%H$I0yIZD̞C!=,r"&E'dCykhptJ`̼I5ݜV>Sڙyk6LCd>*s,&:L *gwk(43O?d;_O2B֍s3sq>%(4⥙ؚxnҦyg滺-9r=8mn۱4X13M9VnW\>f\#sY~T[_kulfFDa`^"0<1+Sg> M1"^ PtVfs(fnjm-OI[|6rfWH&"f |k*'f:rHÑ$I-h_E4mo_x6*幌x&"e#^^2*]d\eul7A.iw): Ar~5ށ^tisOk] ,wFwǁtx2K#mkN~txs彝SypQDqf`GiF"J*FgQRDYl?PR-E><=)3PR,/ LIaؘ(7k <83(7ÕU+T}LI9b#efݮ/QAYה0 x)ؠ@̢mtp*[^kh}J -(^y"`jZJrʹ=KD2vDs)Aދ)?+WcftĂ}$37zj[Xo>doVL|XnN4u{?eMƸT1vE&$IEi'%i {>pIDD+"b>|cS?3_$Vݙ|*Y=U[ ڟnؾ"3,VPf*eM5 &4ʬ //pu`f=(3E_.oP7坬f'2,F <+3?*'k7^_q>.4)ͩj{ dܣM#02mΕ1\90"+[7 U}mÈX 0~ɷ4l?F9kx(%%gY,N<>kxkM fIj|ofo%I$IZ| FIUvOD"bf㚪fVN/6k̼ztcGg J:kQ֌kWo.3IGy1%pMs[=y?0VCAmV>|}FY _d5ܪG׊RU0V+ޡˠPTSfוHΕ/d;9 }V2 xԶK'e̮[eVm'ek^;̇;_??I$I9$i̛)iW}nFĊv%ۈt֬W?_wQX0c<Ӄ31JFoVx>a{$e7=uշj[tW'L4>l+3άoެne?F5S_2ԭ@ z6i Ln?b.a̿t7C׉z9=&F}VgV>wvQ2uI$I5o4Md홹;%}qz<tP3T/uYvGj.m!VZZ2FgV'wDG3*Y+5'm9^Wu8vY; P9vxN|GCцtg]̰ 5 t^B5jG;J~Ff_I6bӈ& S?_5)I$Io4dO3󹔠Ɍqj#]mZV55Ӻ57^D,פN{ ON =Fꚰ*_좥_F'#?Wng3=cv/q5yZj.mTm3̚{=Wmw|}Զ_WvFtǧ*{UCQ8G\ɵFĻ#bH$IH[}IT'T7"b.V-pD%3bF?ah]30oXDDR.DSlsjm 0.QvܤΪt|ú#Vh^;G QzSD\G+L___lq_c}\Q۞ CwRˎ&[v(p[Dfփd;E\ybNϕG^kyADxRUp cTcV7ʺ7l |jtut%Ff=ɾ-ۀ"S2ވxVq*Xf;2xd%o:IHD@YpLj՗N2̈3?{nҩN̼V$Lc3"Wya#As;̼hw %q:K4l_Wig#DUы;#bu`7f6:pRDl]$I$igIIZdc5՛nm?#[jGZCIkeY|%ZUtM6|Jm h7iwJ̹|wfnO iΨʚYΕ=[?"♵:GԶk43eLwdiyLfn [.$I$IS7IZtgmQvs=RKyEfA4Qɸ]ml[۾.3բnֶZ;kfMs%3flJ#G~(3G<Ҥ~+m}kRd毀0v=rK$I4p$iK[ԊooQ #bjv`_?m%SO^t~ADZڴ٨ ꯧ0z3Mԫ+D*̩mPvzfa)̜|Vjm8I$I:$ijk'FOu<а,0&hNm{,3v׊;®]p:h QϨ75`J}߲MUAkPP"_DUEbl}ൽq^/$I$- IXDpJ]kV?3\+~[=Rg^D,+~s7E޽Ujͽi!"Vz;3̼k}:UnT+8TDp:>o}6=Yʜtk7l-eMDDO)Xcǿ~Ƽ^$I$IZX|o9qRD<'"ھGČ8rax_d 33#Ȉh6UDl_~{=S\w@Do\蓌 3~D I_KG![qOG#bmӵ3?}xa{xbYSjޑu-3rvu:z~ԊW4pMc"]+Ge[:9fN7l?x{N\v KR^gGt GU]߭OE9X"bsJ$I$IhIҔ vgD\\nMJ'P֟ڨI;WD % u1eܪM'/aA=ώeeJआ(IIw OJU'[{Q2Jciqe&޵k`C`+Y Xz)f+߀:/qlL0𱡍KD |?#٢ x3cSF˓OzV Y_+P'"kRj`e PΙF-\ٗr>͹% Εc]]fg{VE3]kqKJ E/ ,My|6<>;{5; ϮnwF?)SfSJI8ʺ$I$- I>]w7̼]̼0"kuu2jȗ)G jmP#6\T-G ,[|UyM"38imխWvI, e+Rͼ3='jqխ%-Ҕ}u̹w&%e)3nnJZ#b#`]Je)kCY6kdՁ(}?ek(럭UݖGn4DĺTkPmyd"b)@I լ"3wlvO-x2fx2^JmJ(I$ITo$I$I$IR|$I$I$I$I$I$I'$I$I$I>1&I$I$I$7I$I$I$O Im/6QH$IhkwI4$u6($I$IZf$i Im;QH$Ih[v%I|ԉv_$I$M7Io:7I$I&_$I I-m;M$IkwI4$um-bv e$$I$-$I Ij+s\q,l;H$I(ږ$i|ԩko($I$isw$iH I7&I$Is$Io:uFEd(#$I$iR}ެMv%IҐ|ԑYnhSo$I$_7T%I`MR7lB$IEK>K!2&RX1YC$I$IsmrR)n M c $I$-"}ξy]$M$u,s6x$I$IZUwhS$I" I֧m1{0#I$I¨\}|j)%IbMRW2g]ڦS0I$IVGQ>_s$IB I{m1{a F$IIy6R>K)e;0MՁ3#f/;I$Ip>GI\=sI4|ԫ%pRx$I$I֪'Q>O>rI4|ԓYw;I$I |ncrI4|4AD>xЃ$I$i>7|$IS7I=˜pp1M$I$IK7P>?~$I"3'{ Y@DUvONG=^$I$bRWuP}>欳;*I4Q|4a?/#fM ;@o$I.b:,.o$M$E欏wjW1"6$I$iڊ p]|-INJ*]y]vYV,  X*X33p%I$IٛK3g=2QI~3&tguq`onבH$I4Ex{+&{ $ IX x5~`Zٶ$I$ix[s&{ $ I4ilާI$I4> 9+'{0$i0 I껈>oYo$Ii陳4ك$IgMRD {KL 9߫$I$Iy,s#I ڒ&,"f/_6֩n#e$Iy&IԻ,4ڕ$I$I$i IID| 8x@]< }I$IEFydC$ifL$M/LDoM$I[2$icMR"bj}/I$IgϛH$ 7I8 xcs;+I$Ik?%I&iB"bE`H`>5|]ڒEΙydC$i:[ZyJ$ix +kCVx6~ (3벿́cP3r̛鯟"bZ\`̼w.\A'\Ly:Z5"~X+!3%IONI$M{TW" ń|/4 Al Ed1E]DlXOM>)3ڧ$#%X%fA>|>3ork'؁f'&p|"dJU s<|89" \P+~r?g4J ff=I0c u`J:Ñ =N-6EXD Iox4In}%`auOH vxcD:E |oPR~NV̖{- ,7{+/laՁG<IҢrr"b%INJItL9)i"bYZ!/ gUR58_r`m`c`?`_F\89"V0)i7h&৔7PfT=BI-%UV6^EIE7R{[8m lO n])ckif^.D[?ge=}$IDĖF$I0&W'P.~<}lO:b`Z>lf>8N#IV}oWdM= %>wdf_h֚eTyM 7"6KI8nx)ZuyqCAYĪ(߮x} kS..6khfΈ8Mq,$~o$igII]w6Kٙy[ݤlYLŁo26v}(<x/ňذñyfc.36.mSն?NY7QRdqh(U Ef-3jOJ{6V3%I$u%">G{w6gIICWC݇ w36Y_wPf~xSxxsgyw7ciUNכ폈5Kݟ vZf\P& 158$I'xVϖ$IZ|@D"b8<"~_n5 q}?("v&{\P:֬[S2V#}-ShI56bXV__+8fuo?2k̹aLs3o~"c\2vj'~6)u؃$-2ڥq@G!I4&"fPR_lۤʣcݙ6m}'vs3Ԉ \Ur#q[f>ɸ~苅e$ZHiMڻ?"Nޗ׏kg26EZ'NٰEH33󁉍PK06xh @Zޚ+ޑwMWPf7x36cYVvlEh[IٵMʦ}? O>^kd eG/=1H"o$ITcM}QfNv{G1q>زžz0nd͚iceԢ|cӇ5Zrx}f0N) .΂`Y7.Gs#תS&>JIھ]`|}034 "68lVm. A{I&;g{[fb,ŁÀO gh_ IzbFc<3)k $I0vRV}<5 C_dV(Z׳,Ո3՝lqfM}xj$OWZg֊;i/lV+>c-M:cAkۓ:uBD%Ij]@F!I4E8M52md6MWPM[iOnqm,H`}6Θ\x^6G |l6:x fp!;JJ)Aײ W"̼~&MDuk.p@pDpgf VJ@DVm/ީI}jW|Fj'ƮAK >,odtXpF}~fV{a72shkU W+{XK  A[d$Id3ZxA׀76Yq ฆ $Vf^:{DW}Af^Hw?ڨgssf]ثM)kSվ[gf[SBDdm|%i"bgYM.mR֓| " LJݮuFG"E}|&$"P0e[3!z8kg_hϵF~G$i0~PukMGU_Pf6z`41Z6gR҆v TLם4CwxI^=wնfVXZ̛}2x+e qcDGV)'C}ǙwpcU_`ڮ?tEʎ^&k{q,$IS7wz4D7|]ulʈ%)3oWˁC33;*Iꫣ{8>]x "=MAfe͎jm|ݻunOED6 c 3]ֈ vCYM}Wf>6%Ijt$/I4%|S?\i|2SjP}=3rf^\S+~f4a_ۀ}3>G~=uD<}mbMʖ`,͎̼>3CYt\x#׈xΠW"`[h?-"01| 7R[~<3=~%IJ|/"Vh_M$iz1~kQ7H?D;z8t.p@f֟[Ij؃AN\IYYm4;nh2< Xxm]qDpCk; 3.i( >k<>>%IK3$IҔcMuf1%5Ipc*c\]^8Ï 9IWL~o6ozT۞Gd5&56"33Ùwf Gy~<䰙A+"6vL9YsbmȈj\ Gf~ВWHSOJb=M{M&Y/I[P߭ff}=Ir"bhuf~mԃoGbݤ0{Z^cY-"f52&#bxFZ2[ ~of6 8N%{(iwж$I=NafOI$M:o/\v3T&peI݇6&|~^ |mmUsz5HrEw/U({IDZco"bczFı]4s3%6|~f$IC)3!깁2|ɆD&I+oĬ5sکX8X/5 "^܇c'w^mS-"֧֮O_5)ۆ)|'EfF, <8ؿV^0"^RJ4;UL <_8;D$I4&Mz=Zm]?} ؾn<ICmoN.^4^ؤu/j2Ušp56̤$iZ-آ>1"&?$IҔ7ibz1 H"a=:?3!I m\ˁ97"~PؠOy-oHD }04[sm~v+3QWԶ$I2U.P}6}JM[k(Cf$Izj^fij͘gԊ/X:x19m>IRDll&7dFf^9AEċIFfReVlR2z ]{hkz#OVI4DbK#Y?Ur~]m|$i!`IMնiF3GFD <Xaq|Yw eQn}43O$iЎm΂45֤$3\U+>:"vjvjŏS}\Z"96"b~¶Mns/mezzHi)IҠϴ2πږ$I*oG{Gm4Ԉxzck{MAǀLZ[ 6{Jme,Içy$ICaMƦA{kl\n`Z4 ?aYO)IS݁[fTDz8'3HÁU'cJ[87"鴝Xܭ2=<Ձ_FaL+G(k#n|3~/glm~с5OMI߀y^D>>$Ij/7Dr64N-"#S.PU_>TuFf=5=w;Of>H0\ lfCu|k3s?ʚhpQD|balD3;C2GGį"bK-EĖAo@,oqvD㦅_DGY|: 8v 8-3{Y2dzjKIK ŘxIIgM? _m/|tDM dIM Ɇ=ˁG#fqQ[3sv<.`Gq.B%Sk ""kݘ 쟙$i(2qvw|khF4pwîToK(n֦XIkjNyPD\@%,;ݭ;@D\Kw 匪h=̾&r]_kT_$iVJinDD/<k`f9$iafMS^fΫ&cerukJ>X+_ذV鬺Pf,<ʅћ:cB"b?&32$iaAZf>TO x=%6"gTN78ǁWEUת,CJ>%M̬,I&?{&YY&l~&0 fIJD*9At1"hV]kf%ꖂ Hp`ϸ(ItM TKMMUuUuU9}yTa\F&ǀ x&"^B1ŧha%`Oh4ρC2v |?]'d]II+%= ]iIt)GYb#욹88I(FXwNB.>7uPxwnz#3K)$NLI۪| "[řy)piD bZNGSLc=&1 p4OH*|8"}M45WҸ`KMUe;NsGLjpWwdo\[$5ҋ}D'뀝kJHRDEl=kYz†3s pvDlX^QݸH+1U 8xE#sxv£?(֊KoC1Zp_݈$it3Sn Eh_[3;wPF`$*IBƜ3ыVDF;yTFB{HuV2G2^\G$5WSLmت2sI3#bsr+p:Pthb-ݛ(mSs̺SmG{yvw4 s^f^/5ٷ^UU̬brdM+ >?ص2`zw۸$IcgMjCɷA;hԂZlrH4T"b9Fќ:IaSF[;׭*[|[ij= x[)#b6Śg/9[f^55Ţ̒8M$IFf28$I,\M1lAfF%Iɷ "tL$I$I|i[Ǻ$Mt~26ܦ3j%I$IʑoҀEQ:8 3orH4:50$I$IoEqV?,3f<48$I$Iz4  pT?13$i21&I$I0& @D:>8IҤcM$I$I=RE B`53t7*It.k{]O_l<XXxx=pyfW|+Uz,3ՔYX93kb(3k'5WSΞ23{NI$I4q|4`-vh(IZ$"bGx%4ވ88%3j{Pz)o:v=joa5ʣLD>WiFb "W23[=$IR7T>v$I!("AՅy[CɪH=KEĔ/ौl-8wUpZHUlDm\kˆ=_oq QekgkI$I7_"bFNWw3IZ~ȱu)peDz=njrtsoV\kҌꊈȽ)]NC$I$IҰw5pMqbf~!IdJmE:v4& 2s x>pfMU)FKճ``&3_fk|ǧkPu-yYGo{eźʲϑD6I$I4|zw10c$֒o=r2">Q֙yNf.>̃)g֥gվ l̯d-Fe棙y&9kՎfS/Mf.̧*&kxKB1|Cf^Up{fG̫ac %I$IxgMJC=u#\ݨ$I 0|d*eW/~SDptw#$Um"bFí|]WܝN];yεWyGro:۷S83CCN9ڿQ$I$IRߘ|:Pi̝lAV)%I حα"$t9K[ا18fe-V_Un޴zɾC$I$LI9إz 2.#IZO+#b^DX[ɷX3"> 8Q'e_>oWnP75Lqy,bGfT lD}5$I$I]eMjSDɲZ4̼!I ZeD ,)VwFĹ9pJ|f{K'."vN}uf^נM5ۻD5j7bV&~UhyKI$I^0&!"ayU7$[5ȳS6fe_25"b1%"1Bա'jr7GDԹΪqψdݻhEĻ\oZDۻڼN-Ӂ*I"bSXK$I$)I/"I?HI$I$71|:[Fҹ:zeCp sաK+Fop",;j{ ];nb̼V]Հ=9p^<5E%I$Ii'QD i6M[3sIw$vN=\ХsP$j[IU]x`/)Gs3gf\/)a;2ݕz\oIfl|bdﻒ$I$i`vi҈3;!3o$"F`13}݈VD@1Ul`E˔u[W8pGI؝gb͖[6Sg\|873*%V)n$))|ϮPfL`] 36-jծ_fE-IStiu$I'oRq$pBU^Wu9$IR"hz]/_v#I$IҜvRj "yCa&$i37x$I$IR+LIuDt9)3rH1̿׍_V,$I$ILI5"b60A$Ka'):dH$I$I2&U<`%3t7*IR tr>?3v0$I$ILIK;إz 2.#I̼ N9)I$I|*"H> .3orH;+z$I$I&$os:~Xf^x$I=sz$I$IR[LiҋpRf$I=׵X| =^$I$Im1I-"fYT8Iݘw4I$I$M8&4iE `aoޒK$>x$IïA%I$I|ӄGwPi̼IGr̼H$I$I& 8Ξ'g]I$I$I$MB&4Elb`V/nD$I$I$i6"РMٰzSo0l7;ԉE%^UCR< ~m⑤Im1p/p';+3K20i2[Dy2`.ŗzEe6Lظ\Yj(^oI=/QAqK!N&K87HIz2K7 8iBh-E\tfT5෣;ة_9~p.u):TOb`#4-H,(bT$I-2&I_(g}%A#M4}OEW #+0h[|VXq:8%?`DQ8}бHƫ[(f8k,=EԦ'3Kw 8i[-< 8$źmR]C1b+=4gQ, IE҃f<(o=$I$2K:iK-z/b 8xX(0si c;Oz!x xPY$8 $I=7A"g=MEbc.q14g of?3h4(FN> |)矔"'[K(y4+sMo'32KKzp !&pGUwVwPܣ]K$Ie9`Rt^߯$QޒŹNbx,==P% rkR|8Xu)֊\k 8pVf}";'~m'=;hJ2) {8F{ IDATףXwl1\7QKQ~!0xnU.af^&I$w"s`o,=ګؤɷ?S4v2rq%!VvWൕ:<7{iOp-p }6JQ^k)vVC"gZb|?U$IX"+9-T-07&M0]KUJ;۬z/EB!e孁(im~&ٯnEp,p`dE7vl6]YQo4D}6Y7Q vM @fD%I$iXD> |SPJs-"QkXnW *'{Xe E褞5EΡyo\qI}ZxwfE5|*:bF^Y?QI$IF݀ M]B1KS2iޓvģk}.xEhݺ*gSLm_,=$Mz))Q8b2|Q(vlRk{3KO'*I$I,!͖v9!ttBƭocPt1{;$u2Ag}j(F,\Dyp*pH ş\z$ը;^-T.~(ڤ$I!0ػI^j[DsA}IꢈKZ(~"aׁwP6d卽H(oD6V-D=#pm"_,_H$I_"ʫ[4(r+yfia߂ƙ)V(d EhM0,|[gU4t"OMI[]("+Sz`5cC D$IYz <РF45- p(E"Q~Q[f}ihD_ \k}xI6r4,*zBi>$I$i(^ƙ4>|(E҆=8<1tnBfuM-X'sJ:Q>8XIg2KW%(On^РȮ$Iq.|2O,x[Dy:M=C{]Mz* p1ybOe~ٟ2u{"D%IcQQ`5)vCf/w"g48|af~#I$i(VS2Kw7*iixx7IIff`o&V.(OTQ|扷%LIO*'^Ey5Y`b~"I$ib,=L} G7FME 6J,֝$2K [2 x":g2Gd׏`$2KMBzqR7 Y]?$I4p[cs4^4ME7csp~,]{b҇p*3qFfiIZF)?G"@$I$M,%F?ƃF}bh#lqB, (ُxdHV42Kرf}k$I$u O (JޱD_I݇9_%i"8x`\bćQE_K1n`SE |8ouADy3IZQyZX~бHR%p_fC'׈m |!IC-2#?^Ѡ5#i( \lޠ晥/(O~CI` Jz/p=0ASK!~#I҈~:Wd\4<_fALD3z8j㑆Yݑoix8ě(HD0E-'Ɖ7Ϛx4eQ>ƽ2W =^<($E߮kl<؈$ihM֯դ])Fl&?P!7^`-m*IQ^+| (+`M:1x9ඈ/"o?69nߢƁz#mR (IGN'`B#4ntf~#IYZQ>n"3_Tcvw5 IҤS/G[ii̙3Zٳg3XkXa}UA&x}CY`$M|i(fF^{ff֫2fCc-G?ZWǣ6lp (<Ρ,O㑆Uȷ78p7I'7S7JQh#8ěIg#kM?F57IRE7/=:39 kl NƩYkkhQrp%w3oޝ,^ԈWG8}D,t=p^"G|X쿻QH&+(:,x[eufGwmdM`ڴ`{ەWj|nDyG= 62|(/դ'3K {$ F#~11( lߤȑEȿzX:5'$iB(Ⱦ3w?xw=t#f̨d$S} |p; YDy>h$'T*zШk{$ TۯX`.?1tycYIt$"#ʧfݕߔW]DMl LTGMk#ʯPh~6kX~fɞ& ;r -c,4T2KnRd<%IꪈkFL N:qfL>4H뭷<睷#F5)F4$UI5kPIf~#{"qBcA45zralK2KK$ fyoI%%-+G7u[wpAI SҗB$5D  .*P=/23&X⹹=6ssp/srM+{k̓%#9.bFԢ4ML)'#b&;PM1=;ffQ.݌SnUy,3kmwP>e~˵LQ;SVa{_fc UE'1<;I4啁GN:vFIT +L+_8Z|M >6$M(l٤̸m^ :*ވ ~fGiS<7fD,~̳zje(سA=&7ybMq/"vVlyocY-V{,".Nh#HDyj{x~S*):bE38/= QXf(嵦oT$ F6z;Y$i[oym9YM GDO,<ؤl WYc\5#B`v[ 8(_Ax"bND\ 7_xqi.&ZM M]QYn܊"\u[7G1hMvbY="Ne{^̢X5} [;"KDl9V1xp*mm[D E#vwZ^RN %GW_}9m1$ijswM>;p$Q$ir>5z7zb)M{|nf 01Inmrٽt&}ZDL1EQL3;i'Y1AVb 0A%?S."zs(ujr{-4{."LE5GzOI $I)`~pcfϞ1h$I-;|vQnPHhɷ;Hl]o!u̕3s<37̑wNX_Fꅳ{ *Śo+g*Ess<͟frQ٪>@DGbC'Q2&)FFzJ'vc ؤ6gZqf@ٱX oRL)ZI45VlRPW9K` 3(NS"9']M5J4E`xӛ`DvL~ջ}DL[DMDv3|gf,3e楙|pLmY/Wwe 2Pfn уbmHD)lGVKg:,b;6cYeR%Gf*3˙ysf.yf~"3ZiQfjU)g?gkXO)j/33:g*/d)GERox`ƿ&LJ A{KdW҈rs$ȄJQl2&lKܼdՙ:S4k5'1b 5 Uf^F|k"-2" X;ZnKfT]ESW6Kվ-,hzWe;۩׆df~dy"\LLI&FT-߱V+W7A48b]Dd7ZY0_dFfxSYzbJzV(7Zj&T (Eڹ{kG95NpSHv)T;TŔJ\$*}nfv<5m)%tz\JW/|$MVWo|zqimVa=׬҈ʃG1AFE ,;烈 "f;SY3S-uxLVLf>^SfC 63Oi!5)q7f+Q ph1*"f{Pcn4isKO;03)E#>L2vU)~S(~/R"-vG5*ِ?u;-g*gV=7Y\ԝ@k,3}0ɷX`xFUgVsdX˻jQ0+Z`) lP~-R&FG?wp2X x q庳(<<#8כXm=};Žl-dSx/3h3)@%HM5(~?Q~fRn<63sn,=Q~egV(,YEqɷW $iUsF6r"& |V~^DzkZogy-K/V p&"e(FlLiqNGqDgh;y:"|"3[uYb˕}DӞsrD pf^:Q[=^SWV^d=^)c[RϏo<'lRw0YmxAc-%%< >9FoXڱyUEıM: Xfg۸u)u3(fٿWm2-{E,lEDN}gSLӪ}ODڝ$"bGڪ]OQܓ7b4i"!٬y]amj1F:f;Zϧ}OUE)uƇs(^#U(+U;cP1JClTE'?T=n,Q^{ӧ7k&$ l-L ,{S[mƲ#PN/5T5j J(FAL)l>M+=Aqm WgfH cX8xSD93/iZ5= 7F[\efހ=7.&(EP҈xy;SdF*Zp8 3€50"EݙF PZg )ic]{U{Y ծ҂F=Tkޗ"b{<* AD|xwS\F+(k͒YS2&zV&^E-7p(qV6"NtiD8Gd_lLi/Rݓ4?StܩѨS嫁ˁ?,=&PaZh IV/~/ODyzfɥ>B1O=f31zeG\I6TD,\βɞ*c>˲ S:Vp%o ~7LJ*#>M۽[\oiZu~x[ z/E9 !r#ڕ箁OH{N-V[Hs!z0m""U|ƟkMnDיe{#h M{c { 7z!_R#}03q,VY˲hrum0d'5} wTPp Cbb'~ߚk8q4:tOrINJBo`HWW"3wH\Td0 4v IDAT͚%3`qG=`z `8mߨ.V[`S "rz|(s#Y@XV??Hwt,4԰=tVJ}h4uGh:뇴7|;/B h}" PDZO995b}$"3Ћ˖hTK{R}-ktkDR*+IA8QDƓl̂'1"r10- NDzN6bl mD"2ǻuF qw+fp 9HJ^wt-UK䢋Pr!*W.HʅX  xJCzaoROzk mѴ4RJ(9 fQfYz~VB]E[cw"2q*u`Y~6jAbRtƺGD^D .jJ5Q>H/sBR" ݝ`Oy+Z]9{Xn%ݳ:󜬍X"rʏ˜,sJzT"ots}u{WEº.D1zh) J){7c[^w>^,E4p#2v'YO-X @Y:C#"h U"+_>+,IF%hԨIImCn#OJBTRЯ_d=nU^;")&Dt͜e 'Oԩyg6 Ε3>^(^<w`Fr߬Dhm@GDD7vXzxVQիf{ܵYsCIEDn5bhD]:.zѺO)znec锩LA#"SD:43(<TjܑX#uݔRΎb5Jqn=eT,(-"!ˇdEd / Gǣ| =?DE/kSsGOr蕣y?|Tƻ/{o]$W5K|+_xTpV!mm=d|<@Nm̙Mׯ67ToCQp7OkWW0}zx*˻MF{X)r%(HN`LNSN駟rzHC^zٞϩSRlzH CuRR*`ciDxBQJ-> c;ocu MʺY|~HG  Q~#]G]_(+B/TnX:6$`ܝ!PJ棼Ts-iH/UJyťZ]o0yx}&~αujRǔRі^7sdkAd%GgQ$g#s ezi"u%c+N 97knADj-S'"[1dKq 4v' |E0nשּׁp֦ۻ2> (-xS*Ddn%J5Jћ}Nȕu~͠@FFޱӛ+;2w}2ڧTIc g3bD}5Kv[7 9\zi1÷^ɍ7ݹ.HJ]F|3s2bĈ1iҤe8u# HĊeVu%HnD<& Vc;Ɲ b"R mYX)p78)HDPn>דPoGkc=__HED~6@?}n{m8Ѯ%j aV" n\ gM "'Ʊx"7 ,+1>#x>'_.9 D$%csK'/]r`8˨_(&4dƌ] km{Y〧:")w)@Ό2G`0 g qqfb7r\v JTԇJvhWLK]+ɑcH]`7WXkKs GNbRjRjR*`Kg-+Yum, fn@ gN \1~1KPJPJVJt)tr )OJіo#*pO&=tؑ~>´eiFK f }:gwgOm!I)L!.=1}zSn5`8Kh()&C*3;R!Yq@ŝ.'? lȻ`rDRjC6-̙Mԩ2 MCn >^>)wqt`H904`0 C. Z`rKsѲWLùh%mW,'NC1k{PJDCqr&oŭN, ~~%UlX5nY9_)B[^d5J@/Snﻜy7Dt_f?8a⛈DЏV wkyCHʍ<{5X56 YDq_޽k:-ZKߋt̡ `0r ƪ$Vgc>glPH)]e((q f9`Ϧs3!Rꨈ,.ǔRbŭ]_\K.G|"R}|Lb2(bHc/!e>SJv*vWc0 ^yyܾ FZ]}}Uy")Tgc}piRSS9qE!11|!Cɒ%IHpۇ[?Ν;)\0Efd_k֓?;v,xl{SNsN)BB9!pm)\G%55D-ms!@t)7ОPJ97 Y(c!7C.ߜjHRḵ!Y׹z{п3JnH>rRϑު:1v0p~ ~ԑ>B%T|+ Xuh7!y4] Q(+\kJ#" ~ T|{QmWBҗ ")qH|v}4H`M\yeI>r:v\ĺu\O5ER*9 9z(c֬Y,_۷sNNJAhРW^y%۷X1sҥK:uj0]vmڵkhc,\~(QkS~}޽~;.R]v ΝɓIMMO@ӦM[|}X`>SOξ}iaދ-ʥ^ʭ5\C|||Vĉ̟?Yf}vvɓi^G+;HNNҢf޽}mׯ_O?4s=wAfϞ͏?ȪUؾ};>>11 rWs뭷fhya fW7|6R曶̿ﰲNb^x!5k駟2m4m6ŋaÆtԉu `+Z(͛7SNT3R?m/Rc;,#9؅7wcRꔈɾ,/4)NL 1[(O߬#]|;ҿ8wEL7Z)}YD&ffS%;ҥK0k׮e̘1t˖-i׮ׯk׮\ҵݻ8q"~)wy'z`AR8WlYvyg{G+`w^Zg۷}Jӧ3}t.b Frlݺ?̙3ÇG-{qϟyС={*9A(Osw&,X&qAfΜ̙3y޽;w}w:`-Z!C9=1rH L=}t5|ޛoi#ٳ'u]ww^vܹs]ݷo'O{殻 $@zy@)qəm34t7"vlD)u ֑Yr;HF%=gLGxE`ݴpdGyZk_K`. p) )> Mg,]U^X)"-cV9ɥ,C"xV *PJnW-;OVJߠ֚9H8bo9Nbbyb}Tkc̜93]ɑ#G6l]tYeմi&R &бcG;<ȭQxs2w\.m>i(9Yh[زe }›Ǐ{Ce^dK/+9ٻw/{o߾Y42MN41Nk׮ݻ7ݺ .dPO.]ШQ#_c֭od„ k_q뭷FB9q{fʔ)g8Y6qhN cEYv pk,Do "wa)(xMk03n\""O(gA_J[Yo;ۄ2[GD =]NEz6vG!<A`lN뜲"g7J!y]DdRjD0z3 Tm@퐼Dd/#󞈴>^p9xЯKIl9Ų(㵌FH8REd$=$Z1`__D>uA_")Jp rd{-K/„ 1 qq3TlkH2:˩kɓ.uRZ5/NBB۷ogӦMX~?m4Jn_ssv~ʔ)CӦM_>UTaժU,Zݻw͛7={o^`Æ vIxUWqSNl¢E3g6m ٺu+<SLrJ)q-[f/UT\p^ŋ]fݻ'x"EDh9}iРգF(Q k.6mʕ+omb9s۷/kE KLMMeҤIsIIIzkyF=@FS\pŊ#_|lݺM6h"fϞmRZ,֊^of׮]vO;Dw^uf5K.m?~6lHڵ^:۷ogٲe6>E4hЀ.]{ZjQB֮]uRۗ&MkR7N[k>݀aK -!K5"Rj׊@>qjRjK"տEWZu~QJ-P D$U)5O["R =i psfzxCDO)y;Xggp F se ?/yJ)8HَRꄈ ǾP|QJT@D:nRjjS-7rوRj =6re8`=專TJ^ڲt!ڭ-QA[=2RG>`{RjvW^Y_i7FXۜ'Vξqs 7+ެ^O?FI۶m}~5k% 2bMt߰aC^o΃>Ț5kkZhANg.پ};(WGs۶m9z(O>$?oݺu :{g˄ 3ǾS~}}]O ԰aCv#vq%/V={=˖-oeʔ Kzxi֬Y… ߿?K, ߟ-Z[蕤$ g̘Qx]<6 ˒%K2tP9P4hUV7ޠFae,X@.]lq܆ BÆ Yb7pwFcǎ_~Ao7nݺ!wb'"Nj^V`dVBD/"I" z1@)k(݁E;WD/"?G,x+$/"c興H""MsDn_'\E$ND[F-RVʡEm"2ED:HHE<9N+gE5ItWǩuh҈XwEi""ELQڭًRv|X*"ELxMK9f1?Z[`H q !"E! ,!yhטDskN 9cusJj"ruGDnieΨZn]QJmEߏ 05߭9"*'"O`#RcZ*7фr9XD,#""UDiYl @$!n+T(Ȱau7ʛ`pw4lh[/LI9?iҤ | ~'ի;P^`R*bLhkD IDAT>&RL>c[2_ժU" ୷KcƌYŚ#G0W]ucǎ(%''3a7_:袋{*VoA&=ogҤIlғ%b 3f ˗=z'f0iܸ1?nꫯDGfƌ( dQvN:EÆ 2eZuZ+o1Ю3z뭈}g/|ՐQJŊ!2yoUme˖`d2TJuʐ.q'ONf͂״iӧO:5zɗϹNѢE2d-ZرӧsGgϞ*U||<}aS}i>cy-rJ9p@0G>}(P z|Ԃ ꫯruq䈿0F\\C Yf:C?:uH?)bGBίSpa ̛6m;vҥ kMɓ'ڵ+_|EPl^d ^NN{Noy/_͛ӬR+W'pKtЁ> hٷi&vܙߖc<#t9LzHp!h$g2ː"#Bԉ>RfumTJU?EDj?=J?OjA7M|;@b~b@w(/R[DڕMSJJ"r ڜ2*ȿ7G($[Yqf tSJeV.(HSt сʣhZ豯9"/kXRUhR8mhQ;ӑ2GD.C[q)rv/sc=uFSJX]Rb,fhaʋ/yǟ>_n)p˖-<31Э[7[ f}c֭U+-@^{-G?ϟ?B4ʗ/O5ϴ˗`2K[o;"mEw}FWaHv7RWY a7 [D&/gFBtE9)k3pьQD dm|}7h&:siJgs޶}]oB5n'-7t?XAUx _h~l3.KX]W߁>y8RǔRI1iæSF)u KV`:grw:qUNE o!} A[vS]mWJG2#eR-ڝ嗄i;"o(_xvf`hY(z=X|0hj)D[ B[ua1*G'NA)VG_#D$-Bh\sIܥV¼~ gNejF>ZٽowW -ZجRSSٸq>p)-Zd{|6YM,v:ǏgɽtRT)l?0zhz/^8z,y.&|_uU;Tu [i׬Ps.U։H{]A{YC}p@o)"0#"""zMf"o&A0+C4/7?F͢oeA%KkZ/yC}1txVy YYj@DcAA[C[ˀEt R1\4@^fJ4; hC)u g}ЦIhhg  X:V_MVQ@"zAt-zH8'8fxc-~nXqlF \R9#][{;دgW|yt-zrӁoR}mC8yšLKHknȚkZ.=@mfx~ZHpp o :7|Aϱs^]^Zs$h& Z~r=kUV]Qk{?:3,'iF/'H>F#ɬqIL܄Z1+DקioY TJf'w]DRbiٲ =3GKUx/|Tg. PJ~z֬Yƍ9x YxسgY:׷˦MXыp(=+FJXn]0oɒ%TTW;z0uFݺuύ7zj6l'NNb͚5^Cq!}f |UWѱcGFk'"k.]:S}UPsYg_$%%E(~^?<#[ AC c9O)54V@oHvzL;S("^S+i *GR "_*jd̂4>g&M6Xs[9=dӬ#+Ykl; %1l4YD,nmJ ͭV3|8!k*+[84 PuU}ѻг6P9Hjj*F۶e޽Z$%%'%"EPLe[ٲe}PzueKի9|[H(LDN9ȑ#={cǎѭ[7N;֟]-"qRJ ְ\()bUJJM).aZHR'Vy .U@ǻ#lmVPO(&zJHs>~]|c7`0 p#Rx NLC.Usn@!r3f&6l8ȺB$RDg̬Yl^xM6e;vD;v[lӶo[|[~}5iWN}ΝQ6tң\9͛7۬ɢgRRR| F͌3鸸8^{5J,{l#G֭/+F!8j* eC$C%pu"-Ar Բ_ENF:~q)Sܑޓ~9 nYFV83ml7`0 p" s"3m45jn;6,ΥֆԊT?ȑ#Mo>y':J)oJHH[nСC=6Ǐg;w^i۶M;|g^nrӧ{7~xVoQti (L9rėWѢE)SL0}1fϞA8x('}w<}YO,Y Aly=CϟaÆɕ+Wҿ `IRەR/M]!EX(B\Hcv\8TfͭBl 22N!gޣ `0 Ùǭ82{M=zԘy阶|8M4ԩS 4QF >> /~-7dH…=9ԅc^/"Lݿ?={,,|rkg/28@n8yd0aÆ<TB߾}ѣG0o4nܘ-ZdxCNZ!"7.AG| -Jح^~P^]I&HQ?n\8Mݬ2җ߱Fívh}6o1o`0 lChmrΝL?98Cne2cǂB")+(>xGƏϞ=;؉'h߾=wy'm۶RJ˗+Wl2L’%Kț7/͛7gڴi>_6ml۴iӘ;w.uԡta)_|ELw҅9hsN:sWSR%?YlǏ^RJQR%ϟkW^{XX1ei6m_lU{9."?,(0GH"X)Kj@hJ)-3;܄&+FV$nf1X!㌊ `0 YHJyY ]F"jy۱~P^Lϛ7o\r&6,XWe0Pp7OovGK7o9)_ʈ#l5a|8}fqƅ ,^8tڕ'~ 3@+UoBM/̚aE<=89΍.e69DR_L.ZF)Dd3PU">bk3[ `0 Цg6qĨ*Ud^zLmr@ ].vň#8~xyRX1 u]Dze2>|8>,o:u0|pʕػ|?͛ӼETR #uڵkλݓCҰaC_@-x:t(GqUP!C6mxw}/_>Ǝ˻|gzt֍2~xOn˕+k%\۟y'$$0|pڵkѣ:Axb>^!QJɩ\ޥtBJ1p1ND v,BWrGv$+Œ2Bg*ҋ6 0`0 `8[Whys7"\yeIrp8~ػ矟Sck׮iӆ3w\WAΣUV<*U Be],QAEԪUQF_Ԫ^:۷ڵk3uTFԩSm.]֭[cyGKjԨ_~ɘ1cOY~}XŋӺukyʖ-p#(=-[d̜9V?@Rhժbrl|>[ѢEѣ> ?3۶mc۶ml߾Ņϛ7//2۷,\'NZ*7t?EC\pm%KLwuԱYUPRqQ~`^rr2O?t}Rzuĉy+V`TRVVDl'"EZbE_s@ժUm# cGun1xp߾sJ)g~V VJO,.: )Nȯ!wC|']l3pGHIPJy-!"CގSs D$u[*yL6']DR*"^T8`8It3:xB$e#Rc62(زe ֭$%%LJ2ɓٳg0ݲeKx [Ǐ~zvɾ}(Y$˗,섲qF`lٲ϶2J)6l;HMMH")Sի1 6eCINNjժ1wEb[DRRR0ߙȩSؼy3ׯĉ$%%Qti'͐<"fHSmS$cHaJu~2GWvJ~wPmt$z7QMDE{pRꨟ>= }JCRJuP~`LHIRj%!ٿ(b[DJcWJcPS@_w>ɚr{Σy,`0 `0uT5*1dCj*vɁȗ/ŋXb/^e3;v`ӦMlݺ8J,Iݺucf͢blٲݻwSD ʖ-\pF4n\"T|Cǐ2F䙭]8?.G͚5Y3{+UT (:Ө\rʖ-;RJ1 Xsm^9D$77ŷ(y5"RD)5p#"R-P›Fc`PJƈHs?Gn3R<|Z4^pdO$eg`0 p.,4Ѹoǖs7zncז׹sgZlVvtJ* 6,>N<ĉ4iG8Gc4nܘMҬY0wR Zmd /PPmys=+Wڬbj֬ɫ#Gо}`:>>)SSN?fux7nLݩ[n>q!~m m 4]hQZj?LŊzi̙3'Xg+P=wxTU:HRVE\XVe5VKQ,Q־* ^B$3 soIy?3sϙ L{{Cync)|*B*Q)ƻ4PU~#"̀u=HDQ՟'"mہiױ8`t p V|wUU !@vd!TODoN} 7Sʓǁ+?*x~\  U Yc1Sy69{ɔm۶UV9e?0'pBLҶmF^ظqcNYǎŋo=Ê+bgMƴiӘ7oÇ_vm1EiӦ\ezʕx UN%sNԩq2339s&~-?0rKľΝK^ذaC:;vfĉ<\tEY3]vկjݺ*%ξoF_XlI@J͛Dia1Rn7'')!Z8v:0ODK، U@^ ȗl`np}KWuoH)D;Dd.`[{=4,àEN\p/;cu|Kݹ!.uۖXc1S%r咨_B%΀?>+{/~J߾}=Zj1||c'--믿m۶X`ϻ$kԨbpHjuՔHm o??̢| cIӷ&bTo-"SpÝg_/(,\0Z \[#"K3\zD< Fb>KUGY@,f1c)RDRjew\JM2`~ᜲ_sO?Jx=СC|ӦM1cFqٲeyW93rխZ*UVE{Ջٳg{VekѢ-Z`̘1s't~z=Xdffp%ORZ5OMҥKz-x≜=o΄ ٳg>LzNRR{;kذ! 6sΌ=aÆ}voߞO ^`߾Lv+W+Jc1ݴi+ʆkV^/: xHMU L q)嫺\KN}{E_M@m {vMU8}(b\jMKI{ /}UNDN:ofǸ2`fV plȡ|3c19̓5qzܹ3g9W_ٳsAphzرߓ}s=y[8#xK /0d-@Э[7 Nݙ9sg_'F y~V#b_)W >xƍs|}0m& cLwo&fy_'QKU4"R:T|@UUg3MDWہD PG~x `8mk/g|; c1cc6,?0m7o5./Ν;x(]Iؿ֭[ӦF92y˶ew"qVIŊӧOLuOmɒ%ddd~yOz\wu!]lڴ)ze r^aH</LVZ:_c)f8DVETO^kGL` |@0nk%6c15U<UlNa$+V矧\r9e?sΊq1mڡ,D"INNG7tS̯'LŊ7daw7FRLn֘T뽨JzTMcNKzW|ǨQ Fyo ?c2œ;{11c1|pQ|E<裞c2jԨ\iN:uT hҤx̜9@J֭[UN:܂ڵ+WzʺtW__~y\MlBUUHM]1ƘBnL }R+1^W1c1&)9sPT<-_|\zfϞg}S_Ѯ];zꕧĢqԫW5kA=8ӹ93VZ$5n8uaŊ9ǻv YoٲeIII{l| kԨA?jg" ^TdV,I8\ٳ9 1Ƙx  .z9Qc1$+c1cJbJ*yO?… IKKu裏+.]AѳgOOw}w}GRR'x"ڵCvi1S,LD 樣8p d=ZjQL WЙSb)D (6ZVr!ǷGl7c)2~e'&y SYIc1cLQSloGQGȑ#sÆ c)1q 8гY,,X1c[i۶-)))L0[~IJJlٲr۽{qŻ-?ͥ9|IIB u &f&O1Ƙfe@RMJp),f1c)j=d-ݻwg\veTT)l}1uT|Atœ9s +QJ$@*-k?97-:oc)>|fyV2)Q1oc1SB|⋹U}iӦ#6u2bΝ˸q馛h֬Y˖-磏>:bc,V9^n]~)fTS~e~&+K72p+V'b,&OӃ3;,f1c1%@zz:<YY3E;_Pʔ)CN0`&Mb֬Y >nݺQ7kOqcMWzu ӂo&/̈8c1l~oݻ3b)UMWճ]=&s,f1Ƙ|#"EdvDc Zdzvڌ=ړ0ʸ#VZtڕ!C0c ^;w2nܸ dÆ q]cΝݻ7?eՔu@]W^Yĉ5Ƙ&3Sy>w%hHƘۙ-*N`SX| P݉1Ɣ"rpB U3=.w`2ht|0Q1sѣC!J*s=G۶mӧC9/Ҿ}{ڷoRGTʕٶmofNŋö]wWjժQ~}㏜?={|ɓ'L1Hjo`Tv/NkwtGf1&[V2`b>o)6Ƙo\*"@g P(MD"R5ō1@j o"?JD i "=$zLc߼y1bm۶~y9粲xHOI?slٲu˗/9.L#uYcƜz233W_} eՔpmؿ?o?>cϞ=y|5+TSքif9,VRt>Z@|1ƘW}`Jx"11svA^ b?Gy fՔ@W}*c>wgnh1@6b6˖yOeK̨1W%-ϫPmdpppж i1&_B <.܂U&_Tu_1!2F;/^ xūf͚ԪU+q1mڴcaaoߞロQrxbzꩴn|\wut҅-ZDm3aƎ)K?S=~-tޝ*Ums䡇/UVT\ݻwh"&Oo@ hԨQĽɦM$p,\|wՔ+CR1Ƙòi~FZ%3ӳxpjʴ0M1 b xp~/ E1Ƙ\0fSp+K3@Gϧɉ1_~a뮻ݻw 2dOwAN"^{~`dddp3q| \ڵѣG3zh4h@v8S+W&##[f>c/_iߺukvmڴy9©*ÇgT\5jxVuޝop]6#G䮻Cۼۈjb͹҇4iӦyoՐSMIx~qcf F^رٷ/K.)C45$, Wv[[(#pCcLR7P ocow}L6mxMJJbĈt%g5kK/XHKKc1?x饗|gٻw|׮]ڵSߠ s9_|}z^ʦMc)yrV?szd tL27|ֲeKj֬pW{Qv[n_-Br2"cʔ)\yTX1d2ep{ѽ{wvޫ+N)9MRMhKCy ܜ9mۯL.Mcc1>bԨ\v,+p)1O AEUuRRW@`91X/ " pEޫޏVxf=DN}́.`T?5X|>J_5Sq7c#0\Sw}zvy7nHӦM=viԭ[7q 6իW޽\A5kz ʭʊ+={6gfժUlٲt23SV-[CtܙW#<Ϛ5kذaׯg˖-deڒԿGϩNn^eʔK K.͛7kX/99C2h ̙úuHOOzԩSO ƥZ{{߾L>|RVPNyˑ\cqTnKcJ e˖l޼Me6mofݺ?#5݌{}E5@ƘAp7vT sy5"Umuܾsb7)Uõ2ⲪzPDM4? X \Ua\ fVՈj"r 08?nvviAEU59p2rhW513Ü2'*F0S+AEUC{/VՈH+܄KqXdj~T}PUFR\+[kU9>WaH}_۷(U'7fyx&ܳp~8<=UuimaIo99H*\`:ՔwpT{YgQV^Tdeem6Tʕ+kqF:vs\zu~hKv>rvsĈ13?USvE|$ \)x),dbW]5GsXHl7r@?`v`\^}7@p _y^wB;o xjc0U`eCc5( uqO { k .[/ҋŪ2Yq),_;Ƙ""9W'u,QҪ@PmT앷^Rա11?=:E6pvPq3NH`{pi%'_ y[Xnοgf$ 511Ɣ0+W$99J*E ܹ͡R ]t)!L5e;VH&WN1%Mn:Ք OQ28:Df9VU"r"jLmCaL,@\D *܍Þ".%0_UMDq{O&*@Dd*5R][qCwU};L+~'"UoT W1H_poD k!"/EQ}|+pCYk3Vkk@U\U}Ed2nGd"^UߺPI3z~nqS%{-TUk]tMn#bFx(Rfc >W_. >233I&1b1 n?rv?o UW՝q_;n38&Hs_mF1Ƙ|s)бcGʕufȐ!)c1Sd^# zNUUAtk[VhVp+ZᝡJ33yLU#;}݂clKl0gH#U]Y'vE}sf61p M@r4 UR!n&eUe?P0gnω#U."ˁclwiѫcr@Wb&"kqHvejP4oYrZ.?ϥ4b <wG~"2}*fa,c ʕcǎtORc1Ƙ"6p_ญ?ؾ;nrqė͘,Vȩ6Moٸ. yC;w[^Uq(oWh=8\5b܏Θ.޷#&UO2>p{bY{`\sHD^pГ7 x c Z]X." ^X87)"!O1c1SҌP \1VqD\JP]@ytpnAαL;T55Ppa5ꤠk %J]n.5.myU'~`#L74 *Z˃N<ڸ=ވв[ .=߂kU< Pb`6F?nW 7N߃K𪐥-c<+Q6zԘ"X;6< \{.(|,"c mh§ (:`xƳ[P\R*ǐ{z*I#W"1c1ƘbOUEEAU͈NDx[U*FzD.{Ε2皸{6de+_C".!" t 3r="2{ o?0TDM8[H[];S:fZ׈JU*  볈7be>\S'"pMfzҵGH_rDG\bgUz =YCUȩ}¯d,8tC+U/3= 4c1cOR`V W~nQսy~:9"_U ~_u=m = q|ūT`?M%x *)$%RMBUoU?cWxD*'@_qsZC.1yFa_=8@^#wiec1c1 ޖ"*Dn5 % 8߁wˋ?cidiGqȱ[H/;4u}eBU +IDbXȌ,"k KU/H<cBܫ "R5~ o) ]@gy Lv +r8K1c1ƘjG:eX;~>\gx (s|oY]kF~cĪ˫<*" cm("D1rG3?e9迲Dt|<4|cz~u{ 0QD0RDj?DdTc߮Qw+>nܰD  3S #"g,"G&(^vEd\&"EN/cmo1c1Ɣ4TE$g;8MiO8}S,0/|o uJ."Eb96{U&"r ҀA!5JUHU]mAq"rZ-!NlsVx+~w<.݆K?ܵ:LsE$"r|í1c1Ƙh\ϵ {DHp&x;,C[m~=Bt*P><։.Ks~%",\pTlOMJ&͡sD*\@rW"[{}VcLD"2xWI3:22 ,ǽ5;& n0P?!}d+ SwS8 T\ 8%e;p52ؾl$sw`+$uO1!K,G9nѢN1cp[Fd=z ,p.|UK G*8wWUwOu#ICEk>nY(uҘ ucFU%"+G4c lYJTU]w[]wti#>ƘB-{["ffɵ:ED⾋?N(M[ <[W`0AD>9{Y{}~VM1^ 1Uʯ}DxLDN}FV`.EdUk0ƷvMU 3kKG,_ +.y .W؋ -81i\uU9|w 4h3g97n:uJLQ Zlcm]a1Yn{i@bOqjg9ڬ(g (Jx3k|+d7XG=mStEA'1q/9sHMB3cih~S2cI*{GpT=*V,EVU8r$'vr$'QGm)cLɒlzq~6mφ j^~}Opզ@H j QՃlsw\VDCv=Lh-c1&vMc`1cL"K>h|Vrw^-??ONٲvp0/̗_nL`H#)K7"co6({JAe಻ßh 1cL Ddq_Dc1&DR^D[ҺuU6Y0Ƙ4hP=ҳgCv`M)} IDAT拉ͮrpHXjJKW^Y1cV1f*"רLM0 %UK?iB708<sEߌ1Sҝx* 裪S h<Ƙbjl޼9u$''/Y>K~z222hР͛7{ԯ_?U3ggn:J*EZر#W\qu=tROܹsٲe *UիӸqcl:ꨈ/`ǎsg:uD ž߹s'3g_elذ 6I*UUm۶SNx1>,X~ʢEظq#IIIԩSƍs饗Ү];$o̜9e*T@*UhҤ ۷sϥZ&0lܸ[z͛7}79hҤI󙙙,XkyǎuQTZ-[Ҿ}{>lʕ+Ә͑#Z8'S-s3ƘVb) ;;~bʽ%DRPMy!C4EnWAw2U}>\;[5W+8 x`FZtYc1&v+{U՟czsN/"]t7oo߾|ڬZ3f0vXx J*3k, ʕ+s_r%? > 7xc>w\ʼyB_z5?&LZj}tMƚǏB \};j@t̘1|g!ύ5*b;3}*O/1c۷GޖfܹԨQ[nn-sd L[1p` ^bf1%qUbgf. (&)<%}Iշ[x3ŋӥK`;Ӈwy=z ۷oW^k|ʳ>7۷SOq뭷gϞ;?CeΜ9Qo͛ 7[ow .s!o~˗/窫bʔ-9r$oV[}ӭ[7<{8~a&N5l֭nc8: o5j7YcJҌӆnk\|H} )[i\l/"D{Yl>Q-l1cJ$U "倚G%`;lTUM81׎;뮻زe "BFhٲ%ʢEHKK#-O?uٓɓ'+S ͚5EpBOK#FpsI'E_VV{O?{,͚5iӦ۷ŋxbݛSo̙tMtiIIIn -ZstҜp V|P<͚5裏|lذիWl2sfffZjQ n_Ϟ=s*T@VhӦ d,Z~U:uhѢקJ*ɓٻw/_>^{-]t5 [oફS T4W cL!sXz/G",MLQ߁~@3GTJ{l6lgZ`/o磏> xT>,C kE/?xL>Crg x|T^=|׮]Q;w`!PFoS:·ziӦqwF 4lؐ#G z?;"eZ_cǎe\wuor o6]v.!0DR"B*)Ixi,cofuVl5ԣ8UU@}}t͉6 ԿW\^#53TeUm[< <<\ $T~ߘ ; c1cLt҅nݺES~}."OYZ}e˖Q]vqVV}]6r }%))ݺukEmwիGrr|1bl„ Q۽:;b$q*x|ɞ l,n=ܜ}1y<m۶iܸqo…a|&Z 7 >،sΩAc M8㎫] !"NUUWTTU}OUӣ_ߌ1c1&!ʖ-/Pi?xʨmK*k5/ի/rK.Ͱa $k׮ڧjժPZ5*Vhk׮Xf|S*: 44GWQ!Dx W3.@oB0 !B!Ct|+nZjE@@@]nBÛ ~iC-00^zѳgOZBBB=z4fͲ4ctAtR[DD7t={e˖Y- {=UW]E޽ѣ\rw;wn+er p TnY!eOϞawn:;JyIB\t$&B!(oR\ ? [oW\QٳIHHk2gڷooi|bb幪Wnx|h׮łyh7nXdd$π[=zO?pl >x;GY(S2ѣviC!DQ"W^w R*B\R&!B!Dy۵o__ wJi%֭X~7,o9|屹.SNqヂ;S'==V0mر\wuXl?#iiiWVNJJ^^~evwܹs޽9sh"RhтˏOǎ{Y`Aޱ5kp3bڷoOPP mڴ7xCAllj֬Iw}Ç3PVǎcӦMΛyݻn9nݺQre233۽{w4h@͚5P͚5e˖ǧQF߿5C aРAߐ2!!5k0f̘eVعs.XU (AA~T*_֭['N(Ո'N%;߄(=J!H)In Zg)f {!iT8ws,BB*.]ve„ ><`ҥ,]+Rn]BCC9wǏѣ={\wqӦMyǶmƶm<_b!ddd$?;sN{1TBFPv"+X駟&==V `Ĉ̌GB 4oޜ,|鯦M2rHqs=>}Պs8̝;yN HHH !x PjՈwo{8Uƣ>ʴi򎥥gy?x`C-00ӯ__zz:&Mbԯ_0bcc9v\͚57{ﵵfQ֢eC=:u*:(TAAA4o޼W$D1hoB I;)BXj:\o'Jk}Zk=KA¾U5YS>Օe~; .4reeeql9x[hhy1c^#Сtoon)8p Fٚ+? ꪫ6lk~`ƍn.3f~|JΝ'II1WRlS**Pf̀|z qa{ɻ 6$D1mLQdBa |1ežXkT)qJr+k viv]> Z J^`ρ7ଇD<[k%UZCaCf9k$:Qc3]6mYx MZ☯ R@[& Rp5Yk}'ʆѹeV[ڴi˙9s&7iP[;3`֬Ycɒ%$&&ȑ#G, /`Ō7g3tPCJʂ^: ,`DGG9iPP׿x *P]=zb ƍŋZ*r Æ 3ߟ_|{9s$''[Jc9p@u믿 穧߰#Rj4ڹk(*#7?/qb*nZ``> 7UJZkoAcWMk#gہO>v+^ZVcpsi/-B!J v*$Ssn or?VJ ,o Hy +A^ʵj *BR}%z̥=߁7W%J)˗x 7O84 %ofCq]KR`!oŤnkcoBQl<4!B! !>2_¾Nk]bAns*⬉1|]` tqR{0磌 L8waYJ;Mb=/sS s5}wܚ3M%8SFM|53+g =8,vùӭ*p ~S'q-9ΟR)AgzRs~s8S?z>O RU` &W3Y蔳s~q:* lv[e!(~IIg{C#(B!.BvR! ,5\n:6b ¹lR3`9k)`R.>V1J/p^u9K)5@kxϜ洔RohlZw'*V U9^ g-7gv~]J쪔jޒ&L+3\=sRsq>R[uL>z,?MTJ}3[0zwR}MwoPǥ}Nkۆ5?6a ϧ@ر [$(^SĒiH>QZυɓl߾#GΝ;Gpp0kצCt҅ve.11۷ùoXd 6m"114BCCiР={W^YOԐ5y׉H׮ylw}իIHH ))`ԩCdd$}vڶ΢t)~~g>̱cǨY&u֥cǎ~ԬYHg۶m̙3TV5krWҹsg:vsp'Xgcz聟D oڵ˰fjժQN:vu]G-(?>vn:֮]K||<| m:|h>c¹hZq/ W''Zog逧TZ>* pkFUyM֖j)~˜tqSpO3w.IkϘO Z{ImdYCQZX_^s'ݵZU˱Dx;?i5S*7i?=JJ!ą+66>}pz huR\mJEޅ |W/lܸZ]vtlN.ŋy饗}aʔ)9s~ -;kq뭷Z/>>={֭ի5k&M"##+2d_Gh"Ǝwѿ^|E8p Vʻƌ>T8p >l۶-za/^/_5k׮ 6֭[x=vY{,ݥK>zܤ$0|Kύ;w'kͷ?~<}]}+W?ΠAR\ݳI&1u%C p0qDf͚Źs缎 ᥗ^,##?>L5kƘ1c $66o=QJEū&k5B!i'B<Kp<1<_@kZH@R5+3ƙr~Zl: ϛ_-d/G Ap~k?S{[gq>TJYk4/XyLsGΒ]*9bJW;a¾-o?dر_r `֭oL:;CYɩSׯӧOx玿#Gx6m޽{9xМDQII!7!ߜo:SYnqxjfkw[k?Ik]) |nqMmkUJ<⩯7Z뿕Rqgkq|6sPJY/Wkq>qaZ\g)*{_B\p6mJcŊ$CIRZ+00-Zp饗J`` Ga޽~ڵks-8gZk^~ebbgnذ!W\qM4a׮]lٲ%/`ӧSF |IsN6|Y&۷M6$$$yfpvgС5~x-2gr о}{"""سg[l!!eӦMkRJ4oޜ-ZJPPOtwPk͔)SY&>(`QML~[ժUiժ͚5zH||ķ~5jԠ{ԫW,_ x^.\H l\ټ lڴ)XHHZaÆÉkP}:wW\Æ cc@"##[.ίHLLnBOoB!oٻtRUpsbb=Ǟjnm80>k蟀1Qkm#v 򲳬3\)֗go`/fy81VܹvcRk|#RpXcT$ ?Egx:TiBϭʭJ.]Xs†sα`>#CfĈt9m~7UӧO.szj %DFFҪU+󥦦{ رc<e?#-o_]Ek̘1pFL6c:ʼn'Xxtݻ7~;T\c?_͔)S ;Fu]GÆI ۹o#""+00>}СCu222O>}z^@p0tPV\^/FiORZ5X`$v^x{-jZZcƌ᫯2_d޼yT`… ZbnLUJݤ͋&ZGĥN#|BOIlhx{^J˹nݚUV1qDu3σ>ҥK]5B>&7ִiSK7H jժwp0j yΜ9 88Yfy 4nܘEѶm[wyKƑȑ# p6lȢE֡ԩ ,nݺԪFb >z5 ]wŲe˸K={9sYOdd$W7ߤSN^o EEEh"_ߙX&O:{9NU2k,^|E7zϳzj}QƌcxG1p@ CBB?~<Kwoܸ/uj^櫯m>Ҳ|tBk̈́ n:JS oj7+̮w}7umڴw5ۺu+[l= /5\O͚5 _.+.k֬!>>pl4nK/?RF0C ͊`>CC8BB}4୷2+5[|rÎK &Щ~~~^j <ݻ{ޗ_~-Ylllڴ)Fw}GX#ᅴ¯oֺCVQ~IM!DycH)f[aj{Zחw)%9sijY#e9968S>ZZo#XCI>o`*f@o- Q)5C)ի' ss'Nc$˱u!jΜ.l:w^5Q:ud߾}ZV]}^wu҅H1;BBB{, cc .5ڵcGk3ڵkGϞ=cYnڰkرcnAo' m[n-sf͚ehݛ^… &kԨ-UJ6gڵ+ܭbŊni^]C .!ąCoB!o<]]ߥgɻmj_A2RYI9Nȹję~AJks * ++’%P+ o18w`b_eٲeYHKK?$$vpBBB sY̷UV[lll5jR իv|<́B;֭[ҥK_IJJ=رp8X|9ׯ/PSge6m TϛD23]SZeo>c;S#uz}ᣏ>2gΜ9̛7vqӵkWڶmk)BrAk]OnEc9kxxojRJZ'Zۿ׺8r+ RsEQ\+j;Sez zR.wCo…QIJENNO0|v{]XlA2D?uאժU#$$`NUBpp)IHHVrK鍧~E|35?<LHHժU3< ZgaYA,^:!!!TZp-vζ|3SXumns,((@;̯LΞ=K@@@cr''W_}5| #F`Æ dddrJV\R;ꫯhlBuRj"@4poQ̡ꤵ6$Z;R^.F MX]UZr?9^/-hT˴YJo1dWpuVeGh2AB\<~1)Sb͇Gj4sdȐ!O`` 7pzK.>ƍcS1+́;_9 VOuμq8<쳆[@@=zgϞDFF5`2m4&LPuTJJ =!VzuzMϞ=ԩ[ճ>˷~[K\ zZWYJظqcΝˆ 駟9pǾZk6lwɣ>Ë=@((~|B! p9W)T)Uy2 cNT;V VMZ%Hk}V)5x-9^q)8s};$.xZG}TkM|ݽ4o^9B\v:ŋ/)ZG-%]͛ځ̚5:X_b ̼Wӧ9qժU5yǐn&.*U3w;|`eٹsg^ߟSҭ[7K ԩS P """,&MЯ5nr_oBCC Gg~ݟ9s,*Vh<~R ;:uDN9r$?`ڵ[u8̜9 ҪEEoB!9{MR'L@)utt{f)iKj*p;kE]`[ IDATP)] RfJ ZxԾQ)b.R7+֖/{ .6驯ZGTt~lͳnc„tSIŋeiDEmi?IqZdŊȑ#-¯0 |vKuXF 9b;@@TTs/hm9tСoP ~'Cwߵxԯ]vk f͚յZ?p}(šI&yU5۷o>cٲeǏW^E^oOQʸBaz/8` bRCRu}C)UK)Rj_u<͙ 5Q)JoZ |k>Q< 3Ý?R< qPJIEcݷJ)R+Y)|tr9U\6622222~~~4o󭽁eZkve8֦M[簢uֆvVVs>|mW/;v0K+--Ͱ#Ϗ;Z)RSSciE.3cbb ~ԓp 5`mh_eR.'2{lî EAoB! Z/[pOWg _JJR*&*>ϩvg K˟δ֋9Ý9WJݤG)?LhBk=8۔R+WJݪQ)/'5K) *iZCwJJ=J8i3x@)?ԔvTלJ 85_=YkVGWZGew)Sby晭dd|s84c嗷sRpQ%"nbr%XuV[o[Cy|6m29s ԅ˗/ucspE۷vjLszӧ}sMT+W<~]+4t+mw8Z9˓N:q7BGoB!MZ.kmpX{ ?A) =%J>>6 ̙g&"ua:u|>sb~xݓˀy8Q|MuOIWlrCTp |sw8#{MwHJyᛯ?ʽn !A6q19yO<3:iuQ\2y파 N:eyرESo̙dg[Np_|˖-ѣϟoR߹sg[>;wnh駆xhYp dcǍgym̵5 b„ +i\c3f̰8bN+rJ[?@JJs7M41}BM|B! @kg" gPg9A4)g Z3x"pO)Zr̀[u5@zMh`Hig7Ν'׿`F{DŽӾ}+pv².:~~~n6mdi?Pdoyw޽{*To߾;w|򉥾[laɒ%c0, ,]د-`~;OK6lV{͊Zjvv8qcǎY_NC'N^|8pbK ;vGNC3##r ɓ3ps\zEҰgC;<\j QBJkJE8q^8w\gu8c-Z{%|J8w݌3s@&`Bݫm6Ǐ\vr$` *wub>݋vo9k,oZz+:݀v@uSד.`)~\~a|NZ][LcY> [)5h 4̹si܃9u:|,"F@_Me`(Ӵ: P*z;0HI9o䭷ZѷoR]Y³nĉs>:JЖ-Zsμo :fҥeδ^8Æ bŊ>w͝;ozٞo̙3mذ]6k֌^, .͛ӭ[7CZQFQR%uŋ9rZlɺun;H`V\K/d{.p`ٳgsY>G Ç3|CPl̙?@k.iW^y%7p!)Sp ysNvсswc=Ɣ)/Y&M0d`РA9beH_zx>nVW۶m_5kcyB$7!rbrny)q9wO TEs_am/G *az`}![Pб9Gf|964y.kIuP??b|ڃ;2 :9Im pBkUu Q)g@:@VV6Ç_yKiB%9,|p8]YZG}\JK}|yp=/?w{aܹ4-[$& (5jġC੧bС'Yvv6,\Yf֨QvzTXd&Ó߿?-Zì\wygUJ1f_ԛoM7ݔW̙3`Æ \s5ԩS-7lxkm޼xW^yP{̙3+/*V%\Bll.W,m۞ϼp8_3f #C͛ӹs\HM!(&9W, /`ƌxf̈iMm)=ZG* p{衇3gNޱݻw3`hԨڵv&֦Mn&MDvv6&MbҤIФI]@@>5j԰5_PPGkŋYx1hт<'6lW^ye~N;ׯτ xbZk>>&66'yFU,ڴiÐ!C O?M`` 5RJڵLcƍ=|礦O~z֯|m_= ;1.{V\w?o߾TVƍsYV+W_eÆ e>0`a֭[yꩧ^zԨQT>̹sngʔ)<#$&8rJV\IZWYYY};w_߿?/B?x`z!ñ46oK*UҥK׵kWFMŊ糘gdde *< n&ƏOJ}l\oJ)z)ъ!CУGİuV[߾}ymPfMf̘Q@ѣiժ'Nm6bbb ???^z%xYZhW_}q:{,l޼ jҤ _~%mڴq/99m۶sNw}73f̠rʶ- b۶m][ra[xx8s̡u֥J!DQB!BZG7ɮ>`ʔXzXܹew||i`4pQq%2tdffB;w..kٷ]v|'9 櫭 *o0yd"""W^|wEv{,\:w嗳pRkuwҭ[7u˖-  ?&::}\mժ~!ߕN>}ҵkW"""|tUvm,Y«Jpp~*Tka… 4--aaa,\SҶmۼ4(ꪫx-Շ gż;4jg *бcGϟϸq/{IݦO /^k90X~}yVXAvt=:BS0ۧZGjS*}_y_OKp9R*1ݻjYB2O%^^wF(xQ=(] <} ׸qC6èXQi֬]{e㞺8ZGIZc@DNXX%֮\edd{nKll,ԪU0tB uŋK/cHyzЎ?N͚5iР=zf͚拏gϞyuzjCf=Jrr2ժUN:DFFҤIE/))+Wra;FHHaaatСHw={]v޽{9y$5k֤vtԉM\EԩSKll,ΝVZsuP.O?8t)))dffRV-j׮Mxx8[nݺ>}X~=IIIGZhذ!]v4eeecHNN&55iܸ1mڴy5 jx͹7zT*z>p&k5BQ.B!BRu `RS7ǁ:t!!:_h߾z)V |u"^/uPDNJY_|lG`` ڵ+ v 6_~%6_Aq<\ve\ve>WQZ*:twㅠVZzv&MsaUXӾ}R[CRצԊIM!B!R`ܹ; qtR+R%'Dqq84۷`T~(uW0~/7 }QV$@B !ޤ#]zG ҤXa  Ed &"H!B@B$$vg6wv;[뵯d;;;yl0wdz>^""3%o-DJT,%k`2c~F>6 ؏ 6X70+4eD~Q"Ӹ|o;̳Nf9V} {&ٓ 1aJ"|o"䛈H3[N.7sfO=54o|cdd%2xp 0rҗ͞s>}.~:i0i,Ǝc?cƌnsv*\+an&nҊH7aBQ)f%DH7s&<ؑ f7ӛHҒW7禴8}v2;8HFf}$N&0>gjb9ɱ T׎j+ԿiQ{Ӣ=7,5=i>lm8== |C~[d''J4=xDD`DyCsJ髖0obӢ]ԤUDJysӀf-գj%"MFOw,ر1f̧V%""t}E*jkKJtZ¼힛i -1{a`ܧ͎KDUΏoZ+Ɗ[(@HL#*;5zIl*&"ùyd6Q0iBm2^i^8""mG%")|zhb,""m,?xٳbQ×OQBWDm>8}oF`[o5^{/^?#F(?_‡,<}=I+ ɷr*S)_q6{Sv.3 KiOfnyY5`ny˚7lf0"",$iE:/""ܝ&#^vp}1IǸf*~9̞ FDm ,ZfM%'u^D 4L+ FDD^P~^5H[zYZy 0~gM>t)&"RZX黲H㞛Bh ͛ JDD2ev-i- ID"۽2,F!"җoWlV ""&x 뼈HsJ_v[wtt H;7n,3=CJw"bsӁ+,WLJHfXlhb8uqϽT*GbiC;:.""">s'_~uKNDŞ~ 4GO/L=i Z$e <㞛дHG'EDJt=7i܅I@O_?om`""}-Cg&_xBR3oքxDDڊYހ}+,ғJUJmc_i nIypP-c*kMc⦅&60>dڴ9ykp+̚Q%+- MDJ|sύGDQa~VyWf""6~L㸔9M^oj""ҫ6Yr/r⋟68^llc\u;Y;>jQh"RAJ-{w2W^DW1"csOwEVJ~,_)("ҫ'*Qܔf L(DDsϽ lWsSwߧ9;'"˸ÝwN`͔);E%򇖙Dbɷ+?7*&" Ta $CWVeiTfM(DDOpMv^~=OpA2r;7uAPs:O>93|{?޼k.k]d|Sis^\,>p\urQY~a` 0"z/J߁UXdsS͊GD+,塇>?d98=bC,?ҥvxDՀ~Ihu6䞛ոDDZ'~o{R3\`#"gQ>pROHE/3]=DDssߛ!TY0Ԩ5hE#1b@ P"ND32e6&|d֬JwgjN&ӥYDr~䞻aQY~) Y`=\oH,WEDz @rtĐ,}^uϭ IDATxDD*وoOHDǙលxW%Vr8a9{͌GK "+GrlEDz,5)2&[ּDD,x=|=E=f=R]x\C,;&a|%`:c8!g {@#ZD(|0\Yaݧms3HK "kR8 e?06C9{k""U/$*:\m,?ýTOskrH"""6""[9{nzY.`rmxDYVFWRDCJD;WYf$dX=SHE*%f6'&6+1{o@7i+Q *&""_.3f"6"tR'"ңWnWXF3M VVgTYfH#7ty߻nF< P$fMDDDDDDzAe)&P6pSm,Bi. М2•,q3i ޔ2J"""""}G{nTS#*&"*yי&$1'x[bss4'aprn5/՜DDc_+lDf{&7'^F}Y~f#"""""Y~`2M74¸?*,pY~i(v|%ǹkBH-GhfŖ!$TLDz @`*{ !5L_8H`7 ЬXDzZz{ Sag[eH#We?~ۄZ=4Տ&f5HGTY,܍).wY~x3^ `2u=`Dzoc,Y݊JDOTYI ڃ{**}Y+MID.fͪ,z3pZ#jD241K甙pDzoK?TYl~fD%DDFTi`* 㞛ʉ=UYPj&#"Y@1BJ^uyj e},J3,??e=RCQR%"'ШfE؇H? $ `/:U\`seLDD`OܧT7Yf=XyS3SH:枛M;߉0>Жi#"0pȝ|=B#kOO݀հ7k76*+?aIZq=՟3 fcoUX";͊G'2*WQ}ۀ^k"")Naqo54"}u w~{DCSְ=scX0˯N(HE窕>,o*,4{nfsN7i h \ _ED*0M>-UjO{ʍ'~|U>'0{nJ>,#d'rMmX`m, uv;yQH;28KHխۼXkk\eppnTLD$f}_X/jSYh7WL;\aHbNhLUNƵSՒkKIUP< `UM&7zҒ+Xmp=p+p4H* R:8=waCe_&|bq_ "}f US:{CGUYCLr}' GDz̒oz|OeqnលY`"ҫD%o7&܌]LpݛelY~ev`:V ZA4rn{ױ q<2(*!'0NMJDDDDDZ,?88ReلJhx`"H7'^2i&!7x|6`ikf c-MHErcIw?pϽ ڙunfO5~Ɖ{ y_*z9p-p{L%'J.wf526i,P`W```V=H#c2O۰$tY.T,B+}cME232Aek{xB/E"\zkO$܋nW1NHNC`*qR*',""""^҄k[Sle`OۙG(4,6o_v߆HD7Ssku Q4ӯ UDDZyBV!z_ձH[8TCCԯɷy;M١HcL ܜVۙw"\ou,"gܠDe%p"iZm-S`s+S&">~:e7`u[^cs[LOf O>"hzmގ-4;'e``Kv6Yh=*A|&]]q8#\owϽxzJ#*"""""e쟶:ޤeɷ ,?؉ XH0x(_ۛY~(+! Pk#`& !v{n| ܃PnF$"""""E԰xF E-oqfp+KÀ~NDZ`N,p{nr+:8*I,L?xJVTJxS˜+KGeGHWio20o~oniP"9Db7aosKR|ҠD$Kc s3Z#j075NNQ1ssZH_ףo""""""""lAM`UwWJSTQDDDDDDDDޭDDDDٔ|{XKi̘2;F>Q4zHS?-EDDDMDDDDDDDD2cfk&.Hoo"""""""" 3ېZfQ+i%DDDDDDDD$+~XSi!n3x`?v͍JDDDMDDDDDDDD oÀ41QMDDDDDDDDPdEDDDzn1E FD%"""&""""""""ݵ?o4!RMDDDDDDDD֒*=)"""NHl7*VS7鎴iH""""mB=DDDDDDDD.ff`XuSJDDDz)|zmE EDDD-盈c}iJHjf6 cYQNH=|""""6|zEDDDڒNH*f$0sD%"""MDDDDDDDD:% ܗ:8XDDDDڊo""""""""VV%#UzRDDDz%DDDDDDDDffE`6mѶDDDDڂo""""""""FֽMDDDzsV """"""""=pe}Ni|Z@7.oSDDDe:V1~PEIV]ED0kp`6ji`"""""L*ypg-"""T}줙 lALavwi(ٶ Bҭ ;ܽ9H3BFx 4`3>i>|3_b9F&"nl=4'pߛy`"""""RfM ő~y/""">ff'gwc3ӁliOf&p z77upO~T"""""a`Iw߲i^|t8#x`28,#8p_АEDZ̶n+1]BBm >ARWJw!HӘ ۤ(TUCDDDzs7PFTwXaݕ J>^ 8ml `PbF z 3|%pbMl#f2SM؏H䛙\OqPB-ɳ-n*"laE`Ĭ pNbTDDDDDZF5aWc5 :e3$*ۄsךق TD}\JU&}\wl("""""bfќMڗHC`ĴSz6![˄7li3?؏P3[k+f6F f@?:˛|Mkaf~1,^z?s{93K36`fk$&F֑v{p0'1WffXt'\f*:7emEr>7>75s#:+FF)R,͊G%/}m~Eyج;p7c"""=ġ|""""Ue'l(.oK>]xX*6-`rۍhMD`e:K[:&w/pc?ڄsx?v^u ܝpM [&wN$\ Šc:El~unEڅ'YI:1 |)6zw* 5B|ˋ=YW3[Ѐ#w?;6gg`xlO ~kqlGx |; xPvj~X/6"lޏp|73wlj4S~IeNݓ 54.>找OwF Hs@DDD{y'Wǁmg%W'# uƻ*!Wm4M7kk]1 b[&.a,j&K>`ۿ4q//Ը+u IZ_߃:(w[0fdF^u*9|.&J Tp1ЯxWƢhi0'$jK ܘb 5oE^ˬwӀ%U7"woWO>lvDӇ ,W7Jq|'zֺwU~Q߰?TH,w!-DZsV21\-szFOlK8衇Gif~z衇zG+mWvvIxrVC_74-!R'^$ҵԟذHa N3ۂp=[ŁUi'ykͻ=F8JEtlBRnLz^ք:+;R=|T|W0fӄy.1?ـK>qOiw3iBZR ȹ,xЋnf,ٿ R lf?= }[Pfij 6 }v ɽg"_ٍ⛐J浥%[n/ J%Az ~2PX#z^$ ^ -CHG:+7pl^$=S\2kFP&B")BI UbHxOlW݉wÄ.7 ߽N~V K:XBJ%c4bw{f {hBO8 Bh("RQ4ꮉNx_ձ+m|p?"tG3[S:izՃp3.Y،qE} +l.,B %ݿkɴqT(odР`ľfGTXg#:sm+YvrvoYo`Ix,oQX ,Xe_ɲm%ܜ.7''wz4:${:]팷ז+,,;Y8gYoBr#5ƘgZxuq2.KHOOW쇐9*%c%NBC*J_*ẃA+)ǴqZvt-qT%d \t|KvM2FBw8έa'ϻ+dt$T,]o?W 49:_oإ47!t-]{tF1}_NꡇDw˜\@- N>z衇z衇'V =%q[!Yg[Ʃc(n!&Vp =M&&#$(~ݟ)LzKF.;2vwp9n5 4 www?r&7+m<*SwKBϜiRCJc󬯙YB`Gw?u_0*m<* -w\n=w; paYڜⲑOݫc w?ʢR\.vk95{&9MwMCh\hdllr:Km c764HS).I>VV4Vfef[Dcvmsw3[?ہ 1lo3̆7q߅.׬KfgfgHObfkJ5^F,w?]j CEDDDQoOMx6[εQ/ZLq( .WõLL&Cuݻk'Bj]9Jҽ|xsSSd럒x alZ&;NXn7Ckj~K(?Y-rRE5^7\3gֲ`+ZtqZ͹lpqhۆP6~wg+G=NOLJE+9=12ZnيIt\\R|'&=>?O|^jiAs,zθdZ0ʼni8]_]F%41BccB3#3~Tf*=q ef+[f6!zq[~%D>ej^aYQoGfv%+^d̆مtA.3ۤ6Ǝ3GBg ^>5YچD"=DwGU_4{>w&TQzSTƒ%aZiiZUV%&/Ua/'|5j=Jn_mUu[\)tӼW_ym;oڿS wEqC#ٓHz쯙5R*|De+,%J6ߣf%80J e՟7ձ,Nm%?@ GJ_u3KWboV2JOY`䲥&+x*Zo׸$SW([=v#/|4ťx 'Y^엄rk"'3KR .IU3lr 6-ӭ}f!x$%z!U3KެuPo6!!Unt%oS\9/𢙥z@rI՗jvCDDD$ޔ|+U #JhHSv!m䒭,.ɱK/фZg\'X'WNYfLLFnez$HMJzIz^J71qR~i539JyJ]KU!,lf/oOoYgϔƷbi M}oMet#Bjs^JHY&39혢PEQv3f\r֚L 4c`fzc/aV1-jfVG1j!T~m=Fq(vnh$wРT>-DEK;DU R]dmQbf&XZ$Ԟv|2-i˿&vnr'|th:F5F ;)p;FVSq*(W}zWr]D6W|Z:&5`EʗS*."""""e%/MG! crlU nI$%ZmZ1i-Z_c;.5yέ֒(",6lf ӵ. d/wGww?ݿ@.2]Q=`f)ace3˴hl<2 J}}豞./if_+~0`kAxRɷxmix咛DG]wc;~+^oP""""""I-H>z[}?1ovF^4ZdIMƗ'{;Wߢkω,^EdZtܜ揤kK2nVz9+1kFG=?/I8LP]r%fǞ/l^o=XX4ޚɥ> $B 0dio}w?8+d%fV*Q?B4jZgqZI% ;\O9"""""[4Zrnnt-u'iCɇ"*cPfH%ɞ4F<\lI`j5Kw&fVOOFi&p`f+%&'.6fRK"P.hs"w wx4N5 |/S\%`*0*PT߉ɇܗH%gYZp)IMvS>S%/\lVϹxU{F)\z}clָ"""""[W1.2u٘<]=k{Yҿr.\+FƦjdlY^RJxnGgƞ-is$]0g׳=3\G^op%ViǀbPknCmɿEAr쳯vهp#w7lSK ~/,٫֫eA e(1oQGF{n06{dkURQbhؤщEa5Y%q._vNKXo_Kϡ_DDDDDaz]<x0m)53n'wO]of٘-DόB=Yf h}=(f~1MZ2uO0Ef~%o̖^T kOzM&o'$r˺c&&df߭wY^ۥr{5z' 3[uGSKm p]{3Rlߣ S3psΪq[$]^a?Q<>@kZ3[櫾(poHv1%3KVHX بޫ%w,XDDDDDDuɷt.Xx~Z挙 1ʒ-}Kyd(nyY3K +̖6ƾhDs ZbZ 1gm֓NOL2pML,6&?O'5QjNLΫ 0]~3}Eh\w B- O|38`$7.7l`-0l3{8?~ifWkIGAגWX_,y[iKO(q$#ϿCH]f(~_w/_dfYC4+;ѿlr2>Xο|T(kfS8q=w7-}AlRc,"""""ww3ۛlج/vvv%$.o`ُ)gy 3zG/aa^X ؒƔ7w7A^0_vmb~pmNXBOQ"//̈́^90DDDDDDW& n^Bq#J*8~< w.'ZG24qF n n2Foޖc۹Gf-p3oM$]˿JsB"tج~w+o`7w?3Gn!/Xyk*i(px((*`sՒG3sXѣ'fv !Ynl 3IhSH2Wf !?~sʟw{D=jkq20~+l!oE8f?IhhQ fvAs+Gۺ~{Y;~ Bx˴vzo %$^0F~te[ wFI M$T+YcV"$0'Il60l.[iVTo(wGZ`Þx+pu,4xL/ 4=bzXB+ZMw XFBR7x(nQ+U -)!&x+p1#$1+-KOFZv$ޚ˭^OzK2;fw?ЀeT xڂ UGH^tB/{D3ݱIɱ^&P-v|pBxs_֙K(y <=Y OK wO=MhtПK2sѤ"$$NHCHg6Z4+Ѥ13_; """""[EXv%Hܕe $hss e-EgHkm q L# `~?ul&1>+}Bywr?'H @HIo ?@A""(**H"EJJキHg;;w[k_3<;;;g{Q}3;H=_'y] k+o;˙Yż+&w8Hq!9qq!<~__3;*zN'^4\^s`jfmnRMv9Wjfv6q";*OƝe{'=4LWiDJMN3p;ehfNG+wDo} TXe*qv Z ^kw$.f:$PPvn0s^;U&[|,ůrۚC{`/hK)?M3A&ћ+;TWU1WfwRm|+I4x>S8?wTk_s:y\8s;}(l2MH)}\ 횒-}idtjKwlf[(k.I5t$wo OV'U9?`9b .|D{= 0⦅L☝Yk'0Dc3^c8y_$b# =^ht̖%>7F1n5egKca5>OVglLk1<0x?W~X:VlpsDDDD>|'&"""Ro""""1DDDDDDDDDDDDD:o""""""""""""" H(&"""""""""""" 4o""""""""""""" H Hrv&"""""""""""" 4o""""""""""""" H(&"""""""""""" 4o""""""""""""" H(&"""""""""""" 4o""""""""""""" 2 }m JͺgV(&pjc~'"1Sp*X?5k?Ԝ։Hl Uj~gWGDDDDDDD'RM:酀Iʟ옚 pL76iBD̆#@`8{5QD|VK7cf#ݓɱ~s2vUwo}v"ρwU5nlf'x' IDAT[ 32qp pO[_=l1`7`3`Q`(0x175`[`i=6 x TcއwOlayތxg+% 0p_Ve+&cI~W \T3SwME&W9 vҦ±>0qOQɾm $n|x_Ȼ"""""wYϾ>$=}@&VbPdoH7afG {m ܓu+&ݒ!.lo_mn $]n( =L h(Q|Iw;J+l#~N60 /M[ߤ'魴9%GӉn٤M$mڶR||o"ePA;EgXX/5=W5DzA/l/w$Doq1ugH[i L)JShf-D83o҆?'ӯ!D`n%#lf6/;x{ ݟHY O7Ǫ#IuymY/SAt3[´Kifgx +=nqrSuDġfO?3# s4d'剔J4{ 9n>9 |1y>$s^wtI]A㫥D]޾Sꆇ$?ЮeKh =lgh=+%$"""""t{/R<Ԯj44s]M .ʎO7f,I\p>E Z*}<1z:dz][l O9Ղos?pK3(fv)]wD q]>̶'Wg~O۸d10DRe4'A-^t;g{Hf1be%[]&'i.%k%k%DoÀU\>#S+f$lED/(L]st&58㹝QIp\v"h 1z%M3ۜ8}ω@hw_?(yDDzw*>$R}DJQu!wuAc?iKz4)IZ}iw*Umul*۟@`\FHAtZ6jLgYي([=;li"(Xr ;55]%eoצf}Nʹ0 U[l-Y*Q``` DOÒYgNߑ㡥o6mK)"""""}o""""%~?NW';"ZZJDe*e-e[w߰JٿI1@JH/7eh K+-8yUdfӖ؉؜t#U8!-*_N^lz貥ڌRD`-3Ye3s[=),{MRK$IZH3SW{_H""""ky@+4?Rf)6=2U>SYf7}Z6)~=֢q^T>^%z*/WXv*e? Ƶ@¸lf6_?},\}!"""""}T rݝw <^n: 0Cb|'r^Pg;fF?cls q`q`^bͼ=c 'LJkaif<:'{tBC>I\H.1D QDz.m`fÀUc|>Ĥmwu-lňLw| M!һ=^3OqQm|lvb}=/6ky٣mDI/1>/D*C\^m"ѴG:UMcɣ UYXJY@ue-^`f[UYGw/=:25?YNQ-\ 1&Y%3 ɹ|Xl)q|VWc}cS R 8q8̞nCBSb*>K>Wl0iq5eC#XևfvKwmBWu`JiftjfK@7gߞDj&]cvT66M:)W>ުU>K+}Go^LΛYum3{4[(,8؆=ײ>,؅*3#3}O)3385 RwRcdכxo@+ݖAopqD[/8\0O*}_oob+ɲEs_`c*81^F(:..sQAρKUxTUo HwjV3o ,YJղ%,bfRw8YpqYe*Yo˟ZʎQRPՂ3eǛ+Sf̲yʔ[_6TO8snFGV-F.ݟ~>砪Gf9mPR7w-WĘ嗓Ǐ;Q*F\]-5E W907n'p/f $;nqqgfzF&61BjDr#Rokf{uljyXvp21|X%y ,MC2O²JD12Wғ@_N~ GQTฮX/SDො`fv>&~Y\ottjL ɍcmNܼRYa]A3[+1۾+V=EDDDDmvlanbBEf6Yv~Bʹ|Ofv$q^4If;V |w8 <@ۘ%!:ǘپN*= D\*%O#x A;)=BCf܍ sJGP1̆mܨLrmof:yH2﫳 oT)SX:8:)߄xmWcHmpj =&d_\JzKװ^VCgx}MTO=T(|KOk~dEٓ$q#YM{&/DDDDD7@!Ab#B()ss,o3; ~ȯN\DjfϬavJM?@^!~خN"0(x+y{Ӷhx{:iMd`tK=`v'.6z?l*L?$,xo3n ^}xަ//K>'q{I^AOۋDIۚܶ?Sx8yLrK6 Rp[ eߧr<83$уwe2$}4N|vLNw鞊כjM"^G:8O|{-qjc1e/L|Aq:U2eP_"0`oN=!]ͦdR$> <|J=]8Y" [z{{M)x,Kw0T)[ͣfWWR)BDG3}tV0,rڣZU^=k}Nzу`3J1Kf6WM,"""""Rv<FTXw_wzǁU 2 2U;( U9̾} o?̶gVXg8qte*ۼ>S~ e˔s!S3UN `u[{]a@Jv;4ѣ>f/uRe{gSrܯ~D`j*\LGy.#zn-U94)^nt|~^ *D:Ӏelgxn%劉J[2As5у[UXg"@Xr]Qu[':] USІG2 e +Q_W!Uu1ȭ?>U2eHYJ}6G{?M(9[U;!UˏJ- X~ zY(<]ԎGzǥGT{\mC=C=h֣S3uG-ݳ~ 1>PDJΡ7׽z"7@ڑ_XzڑQ_XnwB,yB'y=w?1d/kC9n"P1uO$zYTϸ]{d{KKSʭ1fMmUȾ/vjwsVw w?ݫcfʴYs?n6WA$zc<ơہ~ZgSK^u3fvaq=N>^;;~cߡ čVHlH\^'7*٢y5bѳ#SYgX=È n{^V0S>};1iouW8kù58׎-M[JY7%@~Ta[G+p6/f`\wոNL?WU[#K <=jnxw/;Ec}\iņ#3W3M5Sz3[HvݯFʎxHOcu}_>OqJN"R[Vv-9'gf u duDcgfljϽ=ZVpwj(#v~M-8%{h3;̞%__03;OuG۹~8}J23[%ZHG Ò u:/3;mlmmfWPzc lB.Yw@b;C.kA52 e+HnYjo$]%I}#TĹpS367!%i^mfta3mn^%8x"""""K)yP^{vbQl;Ij=3/+ef!Iﺞt(饺l2k(75b/Fo f4'r)Ӿ׉7]|dfO=A B/(פ2)f%R5F|'Xb?#č.1>!z Hv'"cY"fv?Fۘ}+ܐx&7gf+QW.S bl̻lgfٻI;L>N m\8#|ffsf6=iDou+Y}#v^-QroΕ-#;y6c%% :Z_\LE^rBf$h]]CoIh;EkaK=Z=DpYC,{fRMk fv0hh(D d ܭz'~D£\jM3$[uO|jbI`h}wmZ襵 8c9DPbE"CD,"kĹߩكi VA0ݯѶܒ޼?& +go4m4(y^rӽ#cԼk 4>#S.^8?l%%[9^4YE~ KT[p<1ކg`@+$i wߋSCn^9"؈t""""" tz/yR!NB2,'Rj,1Abf6 g0%;vW3~̏JmTcʸ-53x1ru̾ױ:٠cIgfi >'j5gCMU ]c@}a-t%{=CTqUOZϹ`t|VI_LNK-M,O- \mf?rܽSjYɔ"EM7B$cV#'YKow̖!Qޘ1$𗧞qɘo;`[D{j<{3k%!Dpq >%i7"R/M=6x^h&W){3mEs=~N#7/#ifv>Pxp}1h#ҧ/LI:1NDqanBDDDDD|elR w>- I= ~eӭҙ"Gev+qmBB&)$zԍƄ\&Nd'RG:꒞i~2A DoIql3{u|'pw7 wkgu=Y#I41acx&c^<:Z׋t1TSg7%7\Fm)سuL%IqEDDDD l Ig9*ſ ^Ƥf 7Jz:HoN.^:dK263@rz#3]ک}'zDz3Ŏye_:ө/=P!Pqwwߟ)2h$jdUD/Jˣm쎲=ݫ,Y]ύ2]s8f3֧HokRkgf?->cM-YL/gfXjL#u1uc\%3ݩRLo\Guv9uGzzZVNի59G3*1{z13[ l4o6iU/w݈sOv{rfv{`f_5jS`F5Fz?w'w=x~^5>#"""""S۷kɴ0jzhf"WO,XލkNc$i).w'Juofz'3'Iy*uJpOfհ.@w)zmfRO4<{!UcdOݢҲ牚fN:{iM}!=%SnH_o S0 }E1mLT[zWԥG&l鎲=_i clB[<5s.y.%^QdfcѨnvw{f6,fpTf>K 3;cb<+JMn9#3{6pS3;2k|8DDDDDDDD}!S3[1Gu3\? \}mZc0qevlY*4XoSfSNq,ۋ}*g23$1&{ofXdr6Wgvri窬YΦ8:h֛8Yn?@2Ūkf_s cf6Xop!o8OjD۪kfz3;JgHADDDDDDDDosEl$~&\46ylo3p'iǘ?ʥK.=,jָb 9ol!ŀWR}=1 ^@Mfkl;F~ )-f^f6.~jX2ߘYY S^Vaew5u(I}K̬dOd2tJ zp, ifk*lỴx|x̮L>W*sjfChF=3gy+h\~]n3p'0}O -S`8p <<, llɬq6݁ۈq2w0`A`E RKofwX7[!o{,%f?u~d 'evOkb !rl< Ws?*rfvp%P3?p \F\$_غDUGh @ FwΗ71l,Lq[?Yi46oˊu`UHܝ <%'ӈ`č3K58z'CS3܃ĸ'h!7/:""""""""UoAڈ4H)V-~ }f!p5m= .C1zwbf[I-Z.yKmqma{x23ۓܥ 8 t~Cqdp߬I'&)oK 3wE ޷fTSݽR%3ۉ8ӽWKGY2L|^v2I-pnU6v8@ն$c"6u;B4̹ʅYwϮV7y .Sul_D` O 'y_6)NO&>Zaw/slSpvdL^yh3[vҘbψckXf`}wmj[z{.V[|x:OqDDDDDDDDUڧZp 0H/Howx'f6Iq/YD%>"ezg$nluӑvT2~DJ¸Dsqn.t{SD]sO+Կi.I6!RG ǀH gV2bB%8*QDт3}J/іhK/ml"k:zKefK=X<9Ib<̩I )azVtϵ7 q>݌a,}Dͪ;[z{È̅T#3۹ˬ.=sԳLK%֤84bo.u:z\DjgaڞωW%Zyf68nEb`,31"5aRpQg uF}N"ҷ^ \$?NU#m̎NcՋ7GDDD[SLB>2"057qtZ@[Odfwzz5MҶ´|JzHPMDDD0[IIpj:mˉq_:Իs/fu5CruJ9i|, 4o""""""""""""" H(&"""""""""""" ]݆1!'Y 0ɬu4hX,;u-%ᶥk_o p苍oH02+&җ 4࿙iɬu )+ 0k[$""7ȖHEn(pp{3] ެW|n:[.q?׽E=EL7>̬uw&]oձ`EDD0{˻]^C7>ȬuE$]rguo#)&""""҇戈H2{?!"=o"""""}Y"@;z<>ohEDDDDF$G jthٍmHߠH`ֺ&19W\\Y&"""""cֺ r+\9W˽ej&[)&""""˙\]ivDDDDD X5*/Ԇ2 bf{V[m~DDDDD+NR}`ך0^B7^ʬu qosZ%"""""݅Y oAQ4LSMDDDD2k] x`LVHwdֺ!p5pb7;)=Hu"""""XfCkx;R7qoXxBS:E"=o"""""O+v?ro9Ƚjto-oV(vY랝$Ki'EDDDDz֍{+9˽j,fÀy2Z%ҳ盈H ꬆH 0L%#:E"=zTaf#R^u=""嘵JV-:I"""""Cn  (x {˔mHϠo"""HPxصiϬ?pr"r'pzÁc;9"=o"""""þJe]rg6FDDDDDz^ni:3#S(&"""";Pflঢ়'Y< PD2|ZY|{ U,llHOHϷACg6DDDDDDzπ?YYB@7o2_R7ikG (")>VJzH-_2070xg׹fc80x?SݯM-l , , &Iڗ}XaovJ-{ղ/6g_z*SYsɩ*bt__U큍EY+^y9*5kߞZ>x}!^QTm ww{e`zľ $i&ZaZۖY|ugEDDDDDz'ZV+xmHfm.bffD`/qGԶD-iۙ85kOm @V7l_օd[H-kuj0 ,Mw6cYf p8+w?L6ф)>3G{W![su4+`H*f'nsTr~#1,YeHgG:YPƂQM$Z'"$nGܠWxso}UD1k=yEMDD:DOs_xtr.جEf w^_0cOˍLJqm_3;?.B[Sx \UcfU(J`'?asÉyG3j-Rj⃁Ml<v~-FU3g԰H5K?}stfk,OfGk[wqDD:  3k]нeRg7HRMDD'-lgуDZu)NM8mq{sAc3w^v0`K'd D%e҃F<V1gTAwNfiuj4pŁ11]*[x;2k,<+mu"eT-l:R5}XX8I{AҲT^L96[0]+DUfk-Jsу$z<Ȼ!a&"Rfg̲͌}}h5k}Z*"- (&PI>DiAvuu 1pr7UJ3Y5~sKl'v҉ ?w73- LuIyU~È V^ $)?ɦDjjޱ?>/Y9IDzq- J>O5%v2˨`~"MVC%=Ν1en+d:&ٚ/7U9˼l4&SjQ@I2mUY@gڡ63{?3Ty-\fNm̬uLs!|}xsySMDkl_5M;LYy/xͬ'fC""6|MVQŶjhBf5w^Ƕ86:D2kݜ,X`Bre ""ң 4 INq:|>?x+AjDDDQMDD \d2ڇ '㜝|?3^ZVr|ǩه͖M9ˎ?vnWJ'hC \1<_2gNڥɬPb_Y .;ϣ""}yfb5_kgďa][&Hh7I'QyJ4J9KPsܽ; s.~$8UlX - 5r'\9ܽ=@q7$+\c[ rfZ!R޶p1)&"Gm4==0ki]Y"""@&""isձNf)[δ{o{ul]"ףfv3C2k}GUm -R( &E (E@AP\E/ޫ~X.6Ċ TEz'i3 sLd>M df^z8>(5\]3c5-_}kytZrKjT U h>ӧņ.L)T-zůϨLZQ "5ؘC2$`)H:;㚳mVQv ~E$PQ5+%"˥s)n*vY/MRJuHR7"Q <"*n=y]f;RJJoJ)~('w.[k+/D$y9(Ø_;}DD: LI2rɛkg;?/6guHD\JO$'0 u(cL/RYHTV2K+]s_ű@ r$y ̓x_)z]-:S*7}Rʝ&i˻nc:1EU`ʮr;M2gX)LƘs"2@7Ƙl 1fl Rp\ LUac~kp '%xs""I@qKsS Oc_RJe Ob}c7rKpgl)ʡSĜpNϛzgCGD D:Oi_{M$ދ`z=/8~م+kHsGhc*Y)2_W17\;]E$x~5le7aɵ/'1|\`";""X_x'Q q"2O~1zX_mMʙNgƘ~QxhoHcR?iܧt_NȇxVJߔRJcΰz=AX,STe_Us̟J)v.=(cޙڔ/ұn4[/4~, .ǷmRXAyX3=$r tW1îc@T ,"cƺo *% %"$k͏Tc}t0WpwƘ5>3?KbG= ||X`8~!`"r]T7R\^ wX'RIOS1Q^mٔ XY)ޣ$Ƶ`}2ƼCx;V̹TkcY("yw`/{0Gp`T3ƜLz3U]gU D1fA*uW+`}40TD:?NsMXůƘ+^c= -wy1[XNs"Rs!9RYߔRJmDR{  B.<}1r^]ޚҌ7o0ڕ])NDD>""QD^S:vD)|`8~2119|"]`C^N,ᛅu&ϵ].GmQC pHT#c/jL^7w]c~u6tLF ` 3Ͼ9Ƙ?N ::W5ن#,QoT Xu:)ˏȋ>%ގ]mno ,"R 3[;g<)"nc߮Lu;Ƙdc`GYw`?b#똉oܳ: u/;( )RkǡRJ,J$*x\ѳ +s?'r]wcaM,Jǎ7ѵkEڷ/G|O)rJKyS:2O%p!~yS!K ޘ 04gz̧'=L4cZ+vfX`9ƘV 9ykV@ `k6""anω{){<ou30lҥ<.Nɦt~cnDcnV*ү:*R""`q _ʕRJܝ5yfrgĿL!z /O?mѣ}? ]VR*sѺu9<ʤImRG|nYj1vTkfxs* U!"Rחܼg\ou4 ;ʻ|Wv4s1SJ)ΉL9{~N[xxހ]joRY<@%lɈ-(YҞ27>ACkdFQLk1iȤQ=7jԚmYcۍ^>w?-γk݇64Ɯ~rT'w^Z ?1EsݓL=srG,?wͮc=JweJ)T`}#ooi5V`]J) T 4x(' kB+خ=h5fȐkQJkküz]T<̑3aɌpc\ɵ&}.IsW3"cAox7]TV$ ~;~cRJeaa! Ґ~@L}ˢKG8}?qU=@c:r-B4ƘigM*ğ1^~Q/~?8STqnu/fޞXE WD>{D$X5r0pZD HaW6""Ru+[I 6 R*RJ)8gO~WJ)XI :gBOllu fƌ X;WJ֮]Y/F8;rfP')fSU$ʹ&; dr#TM~Eͽ~(7W03Q?gυ1<2\(uo)Y""oHWR_D8ʥ^㧰ο;wݎnGG\a ^a?֠B4R7n_Y=McLAc?ӐRCY`>(nҺ h|[z4w@sܜJ9Y8 /s`Y2g MD.4=R)e7RJ)MĿSǟcZsT8]?Jl\PR]޼LҞH\G)sĔ))S~3c۱,t2nʊ+η߶=ۦnq-*,|ν\lGG9V#mwˉ3R̉7Hηڎ) [0Wu_Q?+:;Nӗż(Ɗun)"%E!g1*Q $ ,sBA>7@>쨞L?,+tc.uT;i']JױR*{~RJ)Mx6HXܵhIǎ7\J)]TX}wZSN_tf䠴?uwҰ*4Mi(+"-|0Q1Vzvisykh9LsT-">s>yO$c}w-T67RJ)|ˀo5{K k(Tvkɟ?$|BY-ۍ%CCK݀y"gPn`M |ਞ`9B*׮]m)ϔk1 iOҘ^y_c6?;隷'[)uiM)RJ)R!(s/ʝ:qc_\R9Wyy{o捨XEB2ecaN9.5ֈ&""CD;'6gNW<7cIl+Sq X*"?"KD~]: ;1QG߼C]s=2R,x Su"kcD0 u(6nOacDdܒ|yD| P))J)RJ)63b۴5CyjϡR#T7W',ͱs(bWX"P(P*ف1f+Uo@eKvE$8+uK|-TƘ"&V#Qi`GX mK_ Iew;@U`:Phu^Tv%Gvb`#pwXϓ;-1pePuKM ɜ56D<>@K-%c.z򮺊usJ4ϗ 1E`*֙r-\OcR| [?Ƙ-"R+=*r0M;RJ)R4/.VJLk1ul 5ڄ-hE*cNc 4kw?V`bu\js~msc.lK61fs 1_` MSd s+`_M11~UJeM)RJ)h#fRйsy]T } IDAT>u!LW&I咧`;/ܽR/p*=cvHV`.t]|i@n`);Hmta,<l ,NnΏu%=bڌts{O8'"Ud+b8N32GV:1X!հ0T a" îkR?O fc֦$Dd"V:;^ˉܮNXA?RYߔRJ)R*@bXdRY:u*)TըQI""y[¼[cSY #ʹsRm?f*WСwG;wf׮]Iu̘1ХK}oߞDW\I1j* ĢE^ߺu+ , **bŊoЯ_?C2uԤĉѣ;w䡇bjϳv͢E1b7믿oi5kKȑ#9rk[cذaI{^z)}ũS:t(9/_~֭[̙3yڵ+Æ r>ϱb }YVZm+{ѥKƍ$5kѴU, I61O\GK\RJ)rM;RJ)R*'|B=oL4zy|c  EޜN8?Oǎ} ]pロ󩽻hmW_,[Mo5j`ٲez>Nƍ 9?~g}6mp̙4;o<ׯ5|rׯ<_Nj*W|5?L3gO{ndoɹpBڴ%wk0&\RJ)rRJ)R v 4ȣdɒ4nܘuw^/_1ư{nzAӦM/!!|I&ESfMnf.\uX~=ϟOj7k,ڵk… qg޼yPڶmK)^8߿}~lB|| ?0.]eӼysNJ…mټysҵTÆ _/_ `K;wnƌÃ>~ǎs=ڵ+Ve|7=ocĈHs&-[^{{{믿`Ȑ!)R$ٵ>|3vX?Q>sy[@`ܸqΝֶ|,_S.QZXt\)—_~I=ʚ5kR E.]l;oK3;Ŵm޽x˗/* f_~o߾8qW#a-u7xr8qןD̚5cDzf͚LӢU. y5j0æ7fxeJ) 4RJ)RJ)hUVP!f͚5PjU.]JÆ Nl2z-[K/ĪU?;ѣG?ddN>P|S *U_|M6KË/s=g Ov3)R гgO@Ŋ5k;ve…~͝ի3fzV`\x>|m=6m?kI+uV^ydҥ 7njժIuw>66Yf%CBB7o^7 &Mĺu[jX[VUqRJ)ThM)RJ)npgڴiwy;#~%J_@~ڂP͚5wM6U'x'>|׶Ѷrn^\BϞ=裏r'|5̙ƍmuQQQԪU+~AAA|DDD PcƌIu=_~e͛gĸq(W\}#""luGz~m)QׯO Zkxx_Q{-vL+vRJ)ShM)RJ)np}-VhQSߒ%K2p@۱c[R944Χ["Ψ~k+Wʙ8y$wu-fT޽{7=]voߞ-[tϪ1Tώ"pw؃~-ҹ*<)R*RJ)RJNϾ>_N Jqܔ%\g\\.]so';XNW\Iɓ1b HMtt4Çu/^!C8fVUIږk1jߓL_[9WRJJw)RJ) hK羞Qw뭷Kǔ;Kfԩ,_S2m4lْlիWӢE zȑ# y}oR9**˗/3zhr w`sZPٟ@mZ^[^WAt Cɒ%kwf'{MD߿??SLaڴi̝;#̙3?a7ƍ_2KJ7wޏE 1ƕfʔRJ)]iM)RJ)n`E;ƥKț7_-w܄s#Grm5_Z5nܘƍ3tP;w.söƌCdd$osDEE'|T7f._w}׫p¶?"S7%{>*O<ʕ+O}qFol F=UO1ywM0a/_fĉ~KEO\\߁]v8nJ\r4h@ ;;q޽; ț7/mڴM6>}aÆcǎv䥗^⫯ :?=֭7pJbʛ4+R*RJ)RJ&NWEv஻MFll_sfڵkӷo_[ƍ4mu3f̠C\pqBBBleuFXŊmu_c۰cXIಈA"R5v۵p"r8󘈼cy@JlIRJ)RJ)oAJlu*}aڵ'|m6iSe*W'N;t-ZW^,Yk,..M61j(ڶmM7￟l]vѯ_?"""ӧSNM6uYFIV8~xR}2eڵ_/9=z`Ʉ^";RMyʃM6[|7L8v/)^xR9>>ݻӿvik{ƌC:uصkG}D |`Uظqc~g|E-ZD֭=3ڵG_|4裏U|M#G3`ʔ)C믿믿z4k֌Çi&ۿ/^LnomL=~/Ӷz"";XZY74 ЪwF]'h t>3t.s IDATf๣j%0 v݁F.we9ug Ƙi1&ٝo"8:->p0+ oaՁQ\]w xxォRJe}z RJ)RJ)ˤIhժgΜI;v,cǎ%_|Ԯ]{ra[ߧ~B uVl׮cǎo߾I?~<Ǐ'44rQX1^ɓ'9t_:u*龀P+U ŋ9rk|244c~g8uܙiӦѥK.]֭[iѢsΥ\r^૯m;w.sھk׮ @%4i:uܹskiȑ9rɹsؽ{w׏~}_|+IڅWreƍQ_}DyaڴitܙUV%o۶'xRJQdI8uǎ9}eaɒ%,Y0*VH ѣ>|'Nxڵ+=XeOf[:>}ߊ!4fh[WuH8L[cV3-M8=AEcDG>/]-"c~wr)@cG`qO9+1 _')ÝƘY扏`^Ƙ?}]+2stRJeM)RJ)cƌ+VŋY|GgϞ >#,Z*Ux\%::˗_gϞdo|qV^ͼyX|9{-ZiӦѺukEv1c̴hZh,Qdd$97;d-[ھ}X|97ooyCBB]˖-ܹsuWSNј1cB̛:u6mڤ?߿FGGk֬Youwt@_|oQiii-;S+W=QLLx }wK~n__|Ν={4ٳ/ki6oҩ>H<󌢢>+sJHqǭѰ[;J72ZJ':tAcDI5.i6kݒv7]emYiYlYVꦢl,6}miGci&6teY(c_LeX|@`,V-c!iX3]dYsz_A'1ɪ4Dy7o5 t-S?MswRnn4h M2E'pBP!Y{>SVV T\\XhȐ!=z&MzzjرC{Unn|2e&OlGQOeYVZK*77WJHHP5vXtI`}ٚ;wn .~V ,ЦM-ǣLM0Azj)32׫+WjŊSAA^էO5Jcǎ՘1cB{5k(77Wڻw~iĉ:#B /~{8cbn-Q/? 9MM ֭r/ѻ[8}|55gr c.=zвv}Zg,˺*s\ޞ,yw1H>`L˲ gKzP!e5bqc$5+)ӲGҙ,+OXc[uO .需ֺC7bJ9zHa#3ܶSJK.˯ۧO͞=r4m4M{6cNSvucbbtYgu5{*˥#=8YRfIrS) Os/k: $3])˒:i)5vw Gr&I'oWnn}enCvwIGK:&Yw$ͳ,k{ bdDN ,ZmY5IU[Op/kIIWܟDc˲,oۻD,0XJJjbE˳@VQW_TMpRS+Yhͨ0U,Yus$ne(uwMR1 cLZ+i rwiճN=iI4cҡ`O0&t[t@#<~Yfܹ;tXD Wmm[M ) 9ܕ> cEɲ71oK:BLI?th ;$\lc̏,Z>9rK:Y"eY~I_O҉NuP!}%=obYVMc7kY-_u,+3_Y/]~6ޟv 1$яl4[wEں`?ׯCzhߢׯ6ԓ,+ϲ,˺ڲfHZIۙƘ=}1 +cFH:^u̵%j|^#|0\F͝{բEN:pnrT\0`\ûv}{w0UҽY:>xhz38t;yOR~ﲀ[K%55CvUhYS˷DZF@k=P͘1o߾. #mb!3mhaOŲ,'ߢ;bYGM;ٮ}j۳AHʀnw @{F9 SOnZZƊ 2,Yyv&MSNP+GEqXQtl2 tggc% :x=^oK@ |0޷DWo" W!C7{om)N S%vi&[y_Rk1&ОceYk$n4 \5T{y_\ORnI{4Ƥcs,DoP˫_#g{Z46v-÷0UQjs1&D1%0<}-˲$]'qZ;LrcQi4^ l {&ZU#7Ó%}ey1#1RdoUק.=S |jk}V{ۘ1> SE&.η(i\c̿1ccM1f1hcc>=ɑtK',k &i1}cƘIƘ>neiD.IwIӁw^ԸHI5e˲^@cfwc1cY))KMC>dL0 g~MVaE$£YVllPM#\}bmXRmtݳMj&|+"| GO}WTc*%]dYVqk',Iji"eYƘ$.oT-N5k:A "DJ|8 yEa /lvGTсwװ46wm-4 YOI3$ Sno;϶0R{OjչKҙ64>I.7(pAzoW^٢t퇅2|SCݶ6֯_3g[8ݕeY?3<'gH:ARVQ],os[*i1G.w֮W. IJz۲mm\"KR0P |I $,+@OnY|cIKPj} "<>eYm\;٧ g "Xzt]ikZU/H~U?g+jkr$+˲6H 韒dI4`WuJ-ieY{w.T&DReY9!~r~;W1IUs#)FuHҖP?˲r @Iռ}]GyfYE};uM\!tsK>VEEC3!]rIM"4e.lk^/Kuk/۸ "|4_sr9t-|첏U[kh>fZ` $3k5j@C;U8Iz͚1crsT.#zWfuaY㭬8PpNj|{|wQǿ&_]:Lup͜y23T1ުVsWyylHљg]:@G#|nt%պcO'wm~}.}.i 5hP JO w(/('RUɩTNNvʕmG9nWV] t47V+7-m9Ao8,KZPk68tC}я>맘lNv aoЍ2PoM>P/,9Ts). l-ӤI$y<Җ-/ S5 |`MG.Pk|8MZ<)e22?ާq: j[i]bbRRW44OO^Y5R{KǏ<ңˍ ghCJJ˯$K22»[0id^prK3nӋ&793d-#ܰoE`?#}f5.Ԙ0Ue***~'FG{շoY+=P'ߡ丆N*O> cE|>mc+L zO9mmlɒhw[4J ociܸ]a$oЃx2Ozv{@oRSc'߃#F*):L zX0sʕQ OTYr4aa4g'! -KzX2$e6/wG0Uz"7\N`ml^^y%FB|ƌ@DهmGn_…s}66ݤ$~x|->oK|vԏR>̯VLu~QvR7oЋMw?]z8=Ll .7/m„: a nߓbat:To}Y7|0-6aK}5~W4tɚqnMZΥnQl[ ¦lۙat7~=zIWO{G6'?ߡŋxhC|+9Rr_))-%$XKFeeFee?TVS^oǺ\>Gci&mۃR gO7ͯjv +yI rciĈ\Mb#lZǚ{^J@W|exNo,?DO/O$uD.Ԙ1{\r@Fh9o9oRiUV7+%&hB \>}J#z ʊX %(.y3@GhSJ|.:j.:jjN=TS7Rbbjj8X)8bc݊s+.VnSptAat7@Hb\>][ I,)S)3H~eEp pX2 wb ST *o#x=hr؞=,aIop]K5uK]ղ=^vvxdbdIz:7@<~b<55QOi]vc>at%7@Fyumu놆,%% ڳǾSN;W۶MUnnZȱzpTcѻW2ov;m6mla"޽ɱaXހ p@`m8A;v S5~Wd>znzoorĈl{Fؚ56*L@l:@EEI/\'"|T.~*FKoXtdX166sz!|QtWRr2F>h]oBoq4cڼyP*:gL! T7@rojx7;*\^SKUIImyaށ P IDATa25_Wb~̲.oUTjIIϚYw,LUp#|tC9d}|ݺZd|>^Rpd;& 6z^:̩[(6kW}dUTĆ28p[ ԢEv\-5%xTp虮<~F/9V~y|xqq{oFÛZ5\EEIM; zw Ce 4K~V~M2;Ӵ~JKoHw\]6D Sw>KV=fAڼyFUff+T)4xMѮ]}eYMk9o@"|t޸ =d~0xuu֭u*.έBef)#i)t ߨ2Viڽ;]yyMϞI_Xua; |t cˏVLߠ|xQ*k_uu*+k$V\\r|=eIQ ,{:J]TlW7L?Fs]8M_uĨ2 CO/֙S] poH,ҭ?^VoFiڃUVM 2,YS6눃eZ Rku⣿Ԣ 4w(}nv& wzj:@3n#$ "F˧S'lөՏU)4AI)IT^Y>G$ƺ50B*40+ wY |Dj'Vk|fAK6QA o@!|:ABt7 o@!|:ABt7 o@qб>]#3!lj}O]1ϒ߰oa"x^4 oswV97%+VZӣ^m󪲶!,ϥo}]MGc[<Ӌ+4kOJWuwtsO/-Q~ЩT+ w؇ X͋%}] Rj~i\fN$UXzmY^XR;ܪi;uόj׵7f{}F;}]Uy=8dK3'GCbu@_f*}VmfBteFiִ8͜iagwUPްH9-IC2vUy|lrkj}"K|]FGg358ʪzzQX^ƝiHK%h␺@E߽^Z|R=禄|kk4weю|qF'я9!k_U,w>_l $??܆ι_Q:"Ukj}V{K':Cc5{Z;"ۅ -#oG9Sl[P; ȧG>(cg&R 2ReU5)ǫM9z =*F_{vnyT}W>־kz֊jEA8]lIY_FZ\|YaãooǍ~?۩KKjG %¯׾k_Uaz49"j k @w5:Ƽ>stּٓdhZq^-k%i _TZ ޚZZZاגm6D) y|aNSk1/|QY+h6x dY}tc!]#??ЉS(]oе{ _b]xa[U;ݚ<xt"R.}H_]X3jKǥ*˭kmSDe;u cc4yhq*5ޡZKY{˫QTT9hoRps} y.}X~NU%׫-{ZݭCڲnG9_NS_ bN#GDk(Kv*)(ԧ^_Wۦbs"j\VW>U$L=i\V|mn-{kYz*߾?xLVj3FᡱzPeFi@ChN\Qm #faRIqHlB|J64 iN^%]X^ޑe4sjgFi(Ej Qŷӱ;fWFx/./t9xpmb,u]\/NI5'&j.LcV7KUY[W؞bnOiz[ %84U G+1ѓT~PU ѤQc_ Jk=ǥߜ ǫ3Ocm-KBW% [tn'J%utcy@~=nh؃ICi:& :e|50۫˞,gkR86Vo @i폿=A i~IqzT0UYn]xDYu8&qcD۵'%2l[cҗw[巤_hahimoR] g$ɫAKKTT4%]t ,#ѡOo+k=xâizW}ڬ-/~Q,o?84Vѿm(ee~ujRTԽ4'CGhZ'0])}rk&[c'Ѳ,j2ecMƆqimlabo'yuk@yIz>MƎoo[gpWO\it$7@C?Im3ԿfŖok{Ƥ6N܌jXmioZO5yXhQm݇7L>QX?$]vl޻OP"6Վ :]}M5݃ͱ,5 ].82l\Ч||*i ={MA0ң)p\^Zg=۞_FulrC]l.хGHE朜щsK*;,6>em|lqM:/uI~n :CJCGl7;Zg+w%\pFڵ''*5>?5;%5FpCٞm'LW+yGkA Shf_"QU(.82޶dSi?e}}u=-)y}ҧ!Lׁt_ Ԣp鐞*M\GRGr˯{lvĈ&5IF2=e*.S'&]s\wF˲ܶxZtGu@DN b]Ǝe|v[Un+ |l|TUk)p}ܧVE}ƴ=}bG[әhE`)>2t攎ۚպmʯKަSJv mzNI:d`o|嶭/٩Bd|΍9-=ђ͵GEk{} 2~ct~(nں[)eUzzQmiR-=>} ;R͹^uWz>:л+*JmiߺfE-߳{9Oυ1D_X"k_ ?~߮Uca+cO-y߱c; ϩV~D 7@(QrCō߸[y/j['uz?nϲ*vfSF;~[˟,Rni~|Öa<$c ȧG>(zWh\_d:h-o70}aIFŕ 5͇<ŕ~&!JR$FRZC ':j?mх3Aj|,0M[-}]f>\l8zKNݯx\ӭ499di ߳;5Nk=ݨ] C`7qQ͇07Zb ތ~uj=`zmt+%A#ܾڈ2RԱclŞb^*{nGﮮn{}Fpihk+S4Z>/ħ[#|t _t|殴.M ͰGC_XҚot זUi;:)4'Cg/usmp*{vKA+M_xd{ޟ+故quMK`Oq괉)Noo4^ -l@r{-]Lj ˰>.7a}kk.޹&;R+,TIU׆;N$v}T]$+ &β>ԗYOӒlg*je!uwжUR/yzkpwdnjpݕt?on[z*?k=7E1ڃ{ z<:]8=^Py{ږn=R~4Nx'6o^C'KTurړ˫g$ʕ]\IU'$5zKFkwyr[~U7ՅsN4{ZuhomM}S2:hG-֮†0.蹟C naVغ-r됛rux61V Vb+/k.VUnON'i6d{b{C_Ti75 16FD_SNT\WNOk;fj<;lxtK(o7ih:,N=W^oQ]EF_dyG/K'k䗤:^1z'I-ꂉ|(>w7tԽZVׯPlTCп~3u"Ӌ*{vJ1!o}rk?x_^5 +Z1F/\qĘ .g>hԑZV_ _`I@S'-o'ՇSZB/}S>M2k7m,Ciz4I yRlۚJ?OjPpX4%5_{=6z4xFRcPS;@7}?ft>,<'$4U2CQNW(%}oE%9tZ 6D:u?HѣzkE*kbG/NIe&4s6KW{ε6D͚_)+T^Ӵ)NwDI=4Q/!/zgUmu+'ON͚_-I)o.s K*-T_jִv:lxu%IC5|mR?9tdD=q[]6IbtX99Nqѽ8݊z㊿@a;$ k桋,kΫ]\Ne%;g-fz{.h3Y6z]Sy)NtgPVl{PFꔎƊ+U^OU&;40թΐCا /٩%g~2Z3S(>iSGy~TIqF}ߥ9E*M9UPQ6 ũQ\PMmɐ55gr;.hG,kί Rb ֔#uĈι@ :஽fGLs*3cώ4zpSu9Qy@4| XKj(I[8Po[ma}) mci@Ju |[sgv}YUWǢIDATFL|CY?WhA:uPb*ZǣՆݝ5ihT*@oBovw637t 7-Rn0$JZWOh{W~UXW\QzCҜ:vtN+c]9{| (je81uw;f@45 ũK%ć l,K)('."eͩT*I%o*ܿI@!|HRvqRr%0ol7@L~ < 89TZ*wTkb]ta 8ontХ 0o7@Dw C_Sg[~Z8rR'ioK ||98uz*w>4tr˚ g=)7e!i$f^gx J jkpG+I5ZaXkBsWm27^}+F@/>|jYsև<7JI{$iުQ0WUȮE"YС 3AkK @2SLt*PlQB u(b- bˋt@^D)2&5O.M;$̜{~swWr-Im. 3oIIYjJqG<|R%MvL JW'(ImTÉ7k7LI.h. o,Ko,.xq+Jj2sozSe^;ٸybéKo>b$6x oύIM?8_='^~jn<2r)&3;O:R$sHwo;P'+>ǟkd$W6 xoS)INN!Ip݇rۢY͆'}vq{#%9}=|R|&IJO\5'K5 ^23΃GNW&SJH.PtH)I$/|t55 ^pY9cGN7$9#HY$%I==5}ܬxq#0p|oOPFFgRd&`):z('Gd@=<،f0&ͻ0onV+Rh2(:$&+Iz9O`6O8!C2T%II$_h6z)FA)I>I~Ӥ|ubιmo+8|Ք|r]%x)ԥh@(FI)R?HI$ɥ7Ή^~chCtF_602z2Q76 (+$'Y$<9kVCt92”I>PJ|RۓN4IkԜz)}?l8FsYVGfI#K&9zEQ|RG[Ie9Ofӛ@|g}&ջ,=RK74%vN)^䌪jKWz;ܺhV~xfN;c?~o{ќ>3pL~|mkKrY)fݠ|h@)/PU\dPr]~ofTN:9diN l2!?~Yg\R$IРR;QUS|%ɁC={7g]l~m๜t9di9j84Yarn,xܲhV_۫m)ɹKh ` (~U&$d$Y28-K_5y~+20uM޲&SWnz2*M(}aI|aJWM oUS^9=sZ{<$.~@0FRoIr]몪$dNLO嫦䖇o=&N(6T 8]aĬZEI$YXJz ` *^$7WU$GdkwBL~mKw-'8& l`,QqCI>ΪVmIf &d8])$Ios &Y^Jl|1%3 M~|Q@(Co!7t :D|Q@(Co!76I]MU(=f>)`Zꮦ1Nmyƃ61NMt>m7؆ zۊ6s1U#ɞmo v|{GWSY{k)(=fjjW#m曒foMI WJ%RgfnfSUL6?f7} ̏ۻG%fma7@/P@kWMH ?j3_RJhW@P@+~,6gWUkj7Z'$9Ͳ[N«P@|jsU՚l[Y(?\6k> O'6k7R/b7/&Jݒ|Z씪j6˛8S\|@*m֎OrU-${K z D)$mgUd=[Ifmm z wm7K7w'&jߒLζKWJƱj5w|x;~R纓 zN@*3`,.DƠjw^:ɉ79>}Z_ώK5Id^)O4Z\IlJrr) XU&$";.de /^?FTUk _$93ۿM}ϋ>|qZg&zv|q$kܞdAK_l說$''9%#J2 Ɖj{ImNroez=8L~;ސdFc$Mrk>e&Wt67Gt`L.tU7g59[p^ Ɔ]J@S8UU)I>ϓLi8Ќǒ|1 sU;YI~/[EINru)Ʀ@?QIjUIKrf%I$YPJXyo)WUUd$>ï{5 hg(3I<5:diR?`67N&49IENDB`./AppStream-0.4.0/docs/html/images/architecture.svg0000664000175000017500000005450512227021732022327 0ustar matthiasmatthias image/svg+xml - Ratings- Comments desktop-files app-data.xml app-data-icons.tar.gz Composeserver Mirror Existingmetadata package file Client SoftwareCenter OCS Server PackageKit - extract metadata- construct metadata xapian database oauth Rebuild onrepo-enable, etc priority,stemming Rebuild onrepo-compose ./AppStream-0.4.0/docs/html/images/pure_architecture.svg0000664000175000017500000005574312227021732023367 0ustar matthiasmatthias image/svg+xml - Ratings- Comments desktop-files app-data.xml app-data-icons Composeserver Repo onMirror Existingmetadata package file Client OCS Server OCS APIoauth Rebuild onrepo-compose Server Screen Shot One server perdistro or 3rdparty repo One or oneper distro http http Aggregates multible sources:Repos, OCS servers and possibly Screen shot servers ./AppStream-0.4.0/docs/html/images/appstream-logo.png0000664000175000017500000005314312227021732022561 0ustar matthiasmatthiasPNG  IHDRbKGD pHYs  tIME  9%=,tEXtCommentCreated with GIMPW IDATxw\u&Uսv9` I%)S-K$ykKo^e=OdIdki%QY(FD 0yz Ug3=({MO99U?h#+v{m'k3.R>V{~"|IID1"VDСH@t#uXJ+fa?'#px1毰`Ii7l ikhѩAqcؾ?c9z[kZxU,:9tO93rmo}qgO _ +t{03Ҍ0%B)bDJtEы4>}KY|r(>n LNpeNJBGa}[J+[T$Mנ()E%^.dp~AG"eF <\CJzE99$x_znAɊ0sC1/eaQ쩘m +[pFN0|۷-5 )EE.! 9Lf]6P(; '"jLǭL>P#-gw>NcLć&#'oRDk{αXͬHTx3;ʳ?V< 6FJ#a3-[' Ք^G|c;Mh4:55`69^ F:baA4 D"QB!+FJ^&<բԀx]Jї8g#+4Y5@6 @x֩+M}םmYgu)(<᜕h0Y^,!F@@ٱ335Ju6 Taq>_̓iYں ĸ,\Jf7ij%JJ"PPfgjbxK]ty/El)7P[ȼXnq_29 !ggL;;WMq҃MB~C̎LFjxm7jڥ5F/WsVVfu ѵJ0L(Ge*Qgm:|}0pSU5T_ɍ[v:ꣳ:y`݉Nh,|]6;8NMuSZ.PߒG\| }@'1ggPx-Hَb+ ;qgzzzuT)Ye|ݹCЗwTM!/2J[ࠑ~`xZ[3m 圩?ȝ{+u|;&r=,u1338b 7!NDQmEȖ'+{J"!݉jo5g:k6u[Fb˨ $*B#Mi5*zs[H&2m4EtC@1_ 49bũڑ/_0Uyȸ10E=bH׿^8eM FFGY,4ZjƝ :>#TP.`5 2նcceb9,RHapq8;ZY0;*P\c!OIDL~>s׵,_ۼ~WmƘ>ҾcYj.22ȿl2۸vut δ=y`vD8!,Ȅ'`G"ȩzʆ V:vK5fO?t{纭Fm2ԯ%Ύ GδQu v%}{p([n3sekM#Zǒ=uf!>oQt5|uN#NR2 sRT)1=:Ꙭ,-ѯi6-~53,qP#UץHWEcNCî' :ƼlhѕRhHh!actEkD$lYF;f&MQET>DM _yOqQ2_;mhm24&  c {^}Ry-TȎMXRiRsR%2DX\ז|fWͶn@lCkװ_|LZ.SFdi~$ϐUԜN@lѤ;Nkw|eM&wPG, V>R܅10A0)?SwwURu6Elx񞦘3_Q ߪOO9?PHHamߞ3irn?<1vS")tu ߜLxD 3y8ojoU63lqGz-8ځljՃCh@xQ-]NjB3zZ3KixN) +z8p"j CC rle}sݓ=qiElN:-4KL躎K-aHiVڣ `h9~Yٳ ڌtWE e47Tip m103ml_p|ʀDr@ 2!w1VشqӨ;\sI :H* LZA3s4A'EL|ٌ hj=7֢4\ l}XC}UN^@BG4}~ "ϻN)̰(fd'j0psn5b$) 3e-v)NEF [AVT_s*iZ,o^Uv;MIDRW;wA;GzIJ/5x+[ִlfnع;yޱΆ9OWu$U `b۶#G՞!6)2So2ϯ[n!w|zIyRP'9&1>Gh (8 #y9m92L;hQlJ>!C$,@E7wYs0[U% Lc jh@eQ3X11u;œ߅=|luSn47Afr9TuFfz7E\"bo$+"AkX#;^+GjcC{4?20vHS~NM0es׸(Q!u䞝٪syzfWQC;o|{{{8=Yf(`zq MђCq@&{R5j.M&%2F3̱C,jSg5zmR\RdN:㥽o& ӣb%TRx9Zд1ݶXONO2\BEvql;soy-5Zt#6S |J\3U: D&oۯܨR*תi8i3?|JqR" NtQ͘-N6z-ZYJ^$=ٿCoT9lI" SvBi Șsx]J5)j3_yk6;r?=}\6>Gʐ~88N *)nlO޾nJV?/zZPN׷( .c,iZ4)x28JX?*U5 A$ɹ8zXf[6 2=3ægYɓs򎓃{>HT{a=qNe_1Wt^T ֝C:Z^8t4Ӊζmۦu¬ 0.G7b?$٢@>GFSwuWg'RLJrN̹TyV*PjS[dSZ+'uTE]Ȣ# '?L`цn'0b s8ccvmncr2yAQ_s >вoy?yy&4i@@S=atK!є"1kP5^]U֪*.Kw\c͏MB!Epu澽{E~zRo8sљr[\8mnUUO [9g ^wTuFm+RL9NɈŢPJ18|>P_ tƴb|"buӻvRqD?ee ]8ʀD]Z,.vƘR2I8Ypz4[PUXp5 xti3_z'bT 5i?}%bvp~ݳ̿gOM5!GHȘ-1;P%I޽{וK%{M'*W볮gYeA)q aw]Ran>F dF_ʔ z^GD{z_tvc 7x~XQ7PlIϼ]̟W/pU]%T^ǟF4;},)8Fk2aGc}C wmjlu\9uhrUMq<"p4 </~]ㄛ,STQ"RaLD}mOյ5{!1ipHn|CkB^mJM6SA;YZKsUрҾj%t{Qw| 2 a}|+yu?yzyyӛڊO?SGcX"\E'>*8hBG}4JDQ\_)_RtٲdBЩJ@꯾СCo6 -F2ɘ~꺮JwR6۫EI>?G?^;o2IУ֬J}]˼F"DivbƜxzzKw1,i{PY{w}5V~F`bUV潞 0#OЦMmD-N&vQ8cd1vb_'qhf#*i }PGD~ww7-7L6UI$1&-!{nj)X2ٔ{dA]œ>ou%7T1 ƘBQwf-HS1˘X+s=ǒHbcѸlg^AäU$#Bj:n熍-;U19v44;6 (+zsNga:?qYd2g *pxD4js]]]#SSSO==@7JZ"w|%C0\IGq/CJ_Jⷮq*#X!V%&1T)LΤX+L RLE-ef5= Q.ܾ'k+JGgʍRmCk&ݍ>6 תgYln7**>SgnvjOEق~{O}sA]zk| tz{9Uy5bqqKLpCp6-cd Ǫ1@WKUF}d80!Ǔ!cm,?nF];Pñk)>R߆[oe7BziUk8\m&&8RQ 8KEuPXXX)Cfm2BځU؟אttR-8@(urssDtlkU\e%^1\"T%HEPД]LCg} 0-2aeS9>Wf*KGumק+,ݐRBُ z:G"ǟ0rq3 3S"A*BMbq HLJ,96uq_C.o_(:f%'"h؄+XR28lK8UJkB`J: 3yFiedz+x^ر~kkD8dӝ7>/4Ry^Z IDATR(lES4Kh4o^7J](ݮɲs"|E 9lc?ْ4b'"J)cxGךλ__3Tf* &iK%ܱX}Xն[wV |2y !yXeT[{рT$U)_R'\!`EMPLL:ᇞ~|hz\X) 8@ Da`„0Cd =^]dlUiΝd[" T4,|'+0yD!wft{4ՀUfu΍}z,R5MI [U155QWd̐ kCr'}-ל+R˾ Am )5ʜsnXq;%}H@J -Aqw!0^_̲yun5,ss-C@c10S0[;%*oØˡA6CΡ9'FbMIvYʔe7|jNtkc۟>2*{Ⅳ0$jSuL^BfMaxRUV`S $ȓ粍20RV(7ډx9:Y٢DcQ$+ C H`9cIi1{_1CApJ!xDA r`mh7=6wǻ'otӝv9ʒw}HPDiuUw4Wzzz@SpouјzfuGݽڹ#VbF( ) m ` @xe,0F1IIU[hٵۅDn JyRT!B>ùL$s/9$;60>DJ5vCpn-33T"[nhkO'f4hcS'λ…()SxfL\&Pf ޛ&|;٧?̓ۘ vkt}o,%mFk޵[HUs5GuX* 4KH*ZY HE` "(iAUuUpf;x~∛I<s<2ɾSǾSY?k⦌B$XȬ8c,\ UUZ~t]UPP]^k8p|wDzkQ>UXhopqm2dU(;y/R`/4?p}4ӓj)tPzP1PgC=p\;׫ ^`ls") OlXv0 K fi-`V$,)vj7l܍1tT%1 "_h2gY,+ e | ۖݸDqܚ|ztoyq/>o>)msLb+;6Fg}LEmKIRYc7`@C:njY  |_)+l8|40a%Yj $p >0Z8!H|U'QYʑ\_9cs]m 3cg+:{zN~dj.͎~$1OklL{5QbǬVf(-1,fb~&'S~~{CVc^NVBؖ@0 gxNA* 0RKK "bJ/q_*r}EŲBYF!9g AxL >cySl&ae#7Ųo؇T}\lkvKyew v ӕQCY#,k"%xS"zLFM՜{΄;e3 a EECBL!Bg3Y.Hz?ߡ2e"eE8P{*Ӧ">1a[Uo\χT$}IʓJJETBr̞*֏;(幂æ8gzlJ*ȗw|EЉt""HS@(醳1&c\q3Ąi+#3 +BeǽTLr7w}"o1u#%,jUA+3 Hpcb@ a0ĸY PDp}C"O|ُNE+Qrrʓ/{*_vdaMNJb ڧx傢yQ ŝ}ŝG6cNkJ(ϱ+S0hn²0Ì!; RJ2rQv7h4lUch-x(W.f9k*Q+קְm%*Z-QqV_=RېN|rA|5VcyQE@j52El 1,lq΄!C狵5Q[d4[2X V0__1S̗1(xdA"f Q,K[lѫZr_' beq9([h`1] U{naښ;/qZUX& ̈́6aIkƚ ۶HF-?f4LH)SғfI 4cp %=6c\Bs`X%G(˳JV0,5UDjU,猋ʽVq8)SPaADqC4B1f!J&n2b+Qre0 w¤$l=dPdY)KME}UKͳR`@h&@hJT|Q$RWJ[Y*a`L aeIŸ %=To]{%WX(_*-FV8b*cQM,=( aTZ*SzF$I%UHJB^YPT9?+2_\-o10Vj_(AP0$M#t܂/ g 8},+&s]sw#!2Dxhlٕ31c,Rq%} 1&.tXb%V`  -HQc&\Uq9JP[}{=:霋NЗbOs']xvmTJm_mp`NJ7+)c9rik%%rc);,gF.t0L) x-֙D%cI̿6ةCہjK_g | crԷrH.k^ 8[fElA ²qmV ίߐfSs{w#Zk-z/"3QDt#")Ϟ)a0Vմ vt9?b[-s ]lh~)[H5=76%c/3J[] Q٭ДV)F JvВ.Q,Y4]ddta%@)|, 1ab򅊭*.G[m"x‰i|'qb#h*|wvkS c *oG9y V)!KN]9BKErcŐ"5ƪG-v<\g /_x}Y w޳ I?˕Ĉ ko}KDlT@8-/}Ϋ1qAE c߳;kQN5cߢfg˫XF,ɅM/+,؇'q?/~%J>{g0y QTԂ^Eb "vN~@`1|-W51|ﺪ0Iżb<w)0.㼋~G s|H*b9]Mp[o؊hT0k˿ۻ~[;/ }ʌW1p%H`ERMxtG`Os0SVk/zhҠRvwEb-`t6V7BOD!w;|ER\=BnD#ݷn{_߅T(@"'4,lmBpO/:Jk:_{>{~?A]2WWmu&M,4+^frggMXi_3YL?wg^ -?OXƋgܷ? V4 ƾϼ'!#unb HB/IWi+O_IUЩi\QE] XICό#q^Oo?~dzOG %+ki2|>xY۰+9|"<Sj+wř[WZT< 4?ՎUVwTsZۋ+K lŒM>CSC-vOö*>E_Fk<&Cbl>tIbX=~GT^/`߁C <gѝBMnp3ȕs4i/=l͎ϕ\, O/EdXT{q|'}_DɑHDLlJKd?r~H#ٺ oiQ.Pz>- '7 yWZk# lK) '?F'0!jN__|xWɖLI?GҒ~q WfG^{kМ v$N5-|3E˖p5س1(2B 验M\!P^I]Re ,r# Z+  z9MxmxzdlML/(3. (bJΔ!aUw s."zUpHV^dq<@}'Zw }7tj ,)Hz&Uh{R([/J+ XŷYo^ Mvڰ)ZX1`{Ϗbv /0WZPab0$V^E8^_(͗|xًrÇ1?X+*^Y<փ`%yZbY31#`r+̴ׂ+#R+4uHFy ýc7GV͹><<"!;GF8crJQ|ay訏7'*2 h /rL%8+WW EƷ rGΖ YR¿4IDAT!!=7wQ93L2 I"*nejZ]vS{֖zmjhKEq7@EA6UD@BIf93'3Q>yLf̙{~&mP0#(Y)ڱ^Fq~y^xF~qˏ8ya72zGLPLI. uT5l{v:V0W0uLA fgID.{Hd >b:{sIUS}$cKܙ@>^"j4z{4SK \ȟ8} !N `i pc WO AGhf?̹JGhهoEl c8<IiD]9Md2 }qp_ӥxXvRAL#njE} ._\MXяNaԭ.DJtSdTiTJ2ُ̥LKvVfN RyRJ^wmoh$LH^=NG$mSIDR6;% F՝l^0 uzIXW;5ޛ2Y7B.=5-^:+7-PĐcb4l^D{.:n?K  ?+E楣bi3kdizB4ӈnN48.l 6+@9}P~ޤKJTΰμ]vFs)} \^m8s%6Tŭ)=*ޟR2 VI}p];xrNAZH 2_2qy4tMci^|-ϡ73GrIt'Y%-|xt+SR6x_`TE 1휤ܺ[SvYx<&nfʘ<}%]3n09*Dsy'pj.!!SX-w |Mcu}fӦDKFIb0iI٣=>$~B e+5!1)#z S&3)Zͷ&,(}[ȣۗ͌I5L[j kK:Me鼾n^DUf=/]&i:AEDb&-{ (eʕQUgX @zT.)D!Xih?uyJ5ֶ԰`Qt]ΧlirJ0$.aI8DJjd!hhjg*~p@/Xfl%X>+u3;3oY3yL]9=s" j;HcR{lśՏW_O39"@jڋJ'43ۯ٭iKbLХ(*%ˀփeIGbl]g'a&JDef[vCBzu[2$X'j៫ cPӋ:S.2PQMk+6Zz* Z%Uhr,N,NZ6/!;۩LLKA/$Oϣ3,)t$ͭ5X!>,eۡix'F4\(%wЭӍKVfbLYJ*p%P}DBh,IUlb^@]dI:0pT>gMKBX40"u٫( !#2鱨ab9.Φ&ƶ,{h>1(`Cذ{Xn]JDX @1ov8m\]1wCGޣ x.9{XO`ׁ|nt~R[wʈt%,Mtܕ\t.>(5VF{&~JѥO8aDJ۱8o}#.ADB~tbi 2Q L HQ+"1b2 Aw-3 ]31E}Xu f*\ɒ_ πǗz-'3Oz9G P{B(DPMmp뵀xi^zgg!5}WF\(sdRfPd^,*>@`G3URގbT03R9cp㫒 3وY4~LU]JOwF ze7+P9'O`-`snǬ?)-ЊӈN"&8w߻gj_mbQJ|QJGF, R"Tʬ*"!\ۖZK{LR1{ӵ쪂$CHXؙ>W ~~}]=r&o4bOUG9{<3״7:YF2ȗ~gĠhoQQl V GQbvXD(0ȓfk8K$ UXS*λeK͝*B (ryd^{PX9l˃Q{Š?=ZƮR)OU˸pT>ntM }0ēKb*3ơoR i6X[5RBJHM !D̚<-7=sKؿo= 3QE!\ !@2TFRVLiD1ba:b=2@_0ňvqe4:6=s zgF]Bxi;Ӱ^][ [gܠ HxT,#^^1BX| ܷ}G0hOݚDB!b"˘5Qy@B-܀+(TVv蠽+*s7@f1TTTP[,yu}iލ'q%I6 )&Qݏ8JRMOѥlAȻ7>yæ PZvoh*'-P7HW(J9P#d6D4R}fϢ0kֱag!G+wq1T\_|F3]Ů&Q0b*gжo3Lbݯ]9V\AeL nԇ*gU:M4AOse }юǥq/PT?ƚ[4gV~zex>!!,B+((_ lo'];oOY"V%s1*;(K'ؤ$P"7L&V@MQVv{Nj MK!3v Ma_h [*A]')w|ݴIuKJmOFZJʒ,p(su/ Θ\lXלhxܒϑ]r ߙV?MgXY&9G]E/嚋w%.#j4!5 e!c9nnR}|Um IlmP T ͝#BM{xa9F rMtt\N`ʥI|g/9(;Pɘ?+y\2()fs푸c !#Bh kH\b6=6RcO{ `{;,3jbXL3lVQQU1.ͭ ŌC!ju=,[ *5+-lDŽ)_a]cui Fqވܤ`uԮEh.˻R*\z++:gk~߯✒] V{R3? @G[oR<359qLvMGUklDBPT55eWfD)%(y[.8N(02 b@P~@ץl5Mn?9Lj ]QJΗ\i6=OzO~;r:@) Nɏ;A_)P||pH[š&SΩujZp崣IENDB`./AppStream-0.4.0/docs/html/sect-AppStream-Metadata-AppData.html0000664000175000017500000001720512227021732024417 0ustar matthiasmatthias 2.2. AppData XML files

2.2. AppData XML files

2.2.1. Introduction

Every software center that exists allows the user to look at screenshots and a long description of the application before it is installed. For most users it allows them to answer the question Do I want to install this application?. Traditionally in Linux distributions, we have none of this data for the vast majority of our desktop user-installable applications. The packages-descriptions are describing all contents of a package, and not just a single application. They are also often written in a technical language and refer to other packages, which makes it hard for beginners to understand what the application they want to install really does. Additionally, if you are not using Debian or Ubuntu, the package descriptions are often untranslated. Also, packages do not provide some metadata users might be interested in before installing an application.
To solve this, we have defined a new data file, which the upstream project can optionally translate using the same technique as Desktop files or GSetting schemas. The AppData specification is a subset of the AppStream metadata (see Section 2.1, “AppStream XML files”).
The AppData files override any values which are automatically fetched by the AppStream data generator. Applications can ship one or more files in /usr/share/appdata/%{id}.appdata.xml.

2.2.2. File specification

The file should contain something like this:
<?xml version="1.0" encoding="UTF-8"?>
<application>
 <id type="desktop">gnome-power-statistics.desktop</id>
 <licence>GPL-2+</licence>
 <name>Power Statistics</name>
 <summary>Observe power management</summary>
 <description>
  <p>
   Power Statistics is a program used to view historical and current battery
   information and will show programs running on your computer using power.
  </p>
  <p>Example list:</p>
  <ul>
   <li>First item</li>
   <li>Second item</li>
  </ul>
  <p>
  You probably only need to install this application if you are having problems
  with your laptop battery, or are trying to work out what programs are using
  significant amounts of power.
  </p>
 </description>
 <screenshots>
  <screenshot type="default" width="800" height="600">http://www.hughsie.com/en_US/main.png</screenshot>
  <screenshot width="800" height="600">http://www.hughsie.com/en_US/preferences.png</screenshot>
 </screenshots>
 <url type="homepage">http://www.gnome.org/projects/en_US/gnome-power-manager</url>
 <project_group>GNOME</project_group>
</application>

Warning

This draft is not finished yet and might change in future. If you want to ship AppData files right now, please also take a look at the AppData draft which is currently being implemented by GNOME.
./AppStream-0.4.0/docs/html/Common_Content/0000775000175000017500000000000012227021732020570 5ustar matthiasmatthias./AppStream-0.4.0/docs/html/Common_Content/css/0000775000175000017500000000000012227021732021360 5ustar matthiasmatthias./AppStream-0.4.0/docs/html/Common_Content/css/default.css0000644000175000017500000000012212227021732023507 0ustar matthiasmatthias@import url("common.css"); @import url("overrides.css"); @import url("lang.css"); ./AppStream-0.4.0/docs/html/Common_Content/css/print.css0000644000175000017500000000030012227021732023215 0ustar matthiasmatthias@import url("common.css"); @import url("overrides.css"); @import url("lang.css"); #tocframe { display: none; } body.toc_embeded { margin-left: 30px; } .producttitle { color: #336699; } ./AppStream-0.4.0/docs/html/Common_Content/css/lang.css0000644000175000017500000000002412227021732023005 0ustar matthiasmatthias/* place holder */ ./AppStream-0.4.0/docs/html/Common_Content/css/common.css0000644000175000017500000005042612227021732023367 0ustar matthiasmatthias* { widows: 2 !important; orphans: 2 !important; } body, h1, h2, h3, h4, h5, h6, pre, li, div { line-height: 1.29em; } body { background-color: white; margin:0 auto; font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; font-size:12px; max-width:55em; color:black; } body.toc_embeded { /*for web hosting system only*/ margin-left: 300px; } object.toc, iframe.toc { /*for web hosting system only*/ border-style:none; position:fixed; width:290px; height:99.99%; top:0; left:0; z-index: 100; border-style:none; border-right:1px solid #999; } /* Hide web menu */ body.notoc { margin-left: 3em; } iframe.notoc { border-style:none; border: none; padding: 0em; position:fixed; width: 21px; height: 29px; top: 0px; left:0; overflow: hidden; margin: 0em; margin-left: -3px; } /* End hide web menu */ /* desktop styles */ body.desktop { margin-left: 26em; } body.desktop .book > .toc { display:block; width:24em; height:99%; position:fixed; overflow:auto; top:0px; left:0px; padding-left:1em; background-color:#EEEEEE; } .toc { line-height:1.35em; } .toc .glossary, .toc .chapter, .toc .appendix { margin-top:1em; } .toc .part { margin-top:1em; display:block; } span.glossary, span.appendix { display:block; margin-top:0.5em; } div { padding-top:0px; } div.section { padding-top:1em; } p, div.para, div.formalpara { padding-top:0px; margin-top:0.3em; padding-bottom:0px; margin-bottom:1em; } /*Links*/ a { outline: none; } a:link { text-decoration:none; border-bottom: 1px dotted ; color:#3366cc; } a:visited { text-decoration:none; border-bottom: 1px dotted ; color:#003366; } div.longdesc-link { float:right; color:#999; } .toc a, .qandaset a { font-weight:normal; border:none; } .toc a:hover, .qandaset a:hover { border-bottom: 1px dotted; } /*headings*/ h1, h2, h3, h4, h5, h6 { color: #336699; margin-top: 0em; margin-bottom: 0em; background-color: transparent; page-break-inside: avoid; page-break-after: avoid; } h1 { font-size:2.0em; } .titlepage h1.title { font-size: 3.0em; padding-top: 1em; text-align:left; } .book > .titlepage h1.title { text-align:center; } .article > .titlepage h1.title { text-align:center; } .set .titlepage > div > div > h1.title { text-align:center; } .producttitle { margin-top: 0em; margin-bottom: 0em; font-size: 3.0em; font-weight: bold; background: #003d6e url(../images/h1-bg.png) top left repeat-x; color: white; text-align: center; padding: 0.7em; } .titlepage .corpauthor { margin-top: 1em; text-align: center; } .section h1.title { font-size: 1.6em; padding: 0em; color: #336699; text-align: left; background: white; } h2 { font-size:1.6em; } h2.subtitle, h3.subtitle { margin-top: 1em; margin-bottom: 1em; font-size: 1.4em; text-align: center; } .preface > div > div > div > h2.title { margin-top: 1em; font-size: 2.0em; } .appendix h2 { margin-top: 1em; font-size: 2.0em; } h3 { font-size:1.3em; padding-top:0em; padding-bottom:0em; } h4 { font-size:1.1em; padding-top:0em; padding-bottom:0em; } h5 { font-size:1em; } h6 { font-size:1em; } h5.formalpara { font-size:1em; margin-top:2em; margin-bottom:.8em; } .abstract h6 { margin-top:1em; margin-bottom:.5em; font-size:2em; } /*element rules*/ hr { border-collapse: collapse; border-style:none; border-top: 1px dotted #ccc; width:100%; margin-top: 3em; } /* web site rules */ ul.languages, .languages li { display:inline; padding:0em; } .languages li a { padding:0em .5em; text-decoration: none; } .languages li p, .languages li div.para { display:inline; } .languages li a:link, .languages li a:visited { color:#444; } .languages li a:hover, .languages li a:focus, .languages li a:active { color:black; } ul.languages { display:block; background-color:#eee; padding:.5em; } /*supporting stylesheets*/ /*unique to the webpage only*/ .books { position:relative; } .versions li { width:100%; clear:both; display:block; } a.version { font-size:2em; text-decoration:none; width:100%; display:block; padding:1em 0em .2em 0em; clear:both; } a.version:before { content:"Version"; font-size:smaller; } a.version:visited, a.version:link { color:#666; } a.version:focus, a.version:hover { color:black; } .books { display:block; position:relative; clear:both; width:100%; } .books li { display:block; width:200px; float:left; position:relative; clear: none ; } .books .html { width:170px; display:block; } .books .pdf { position:absolute; left:170px; top:0px; font-size:smaller; } .books .pdf:link, .books .pdf:visited { color:#555; } .books .pdf:hover, .books .pdf:focus { color:#000; } .books li a { text-decoration:none; } .books li a:hover { color:black; } /*products*/ .products li { display: block; width:300px; float:left; } .products li a { width:300px; padding:.5em 0em; } .products ul { clear:both; } /*revision history*/ .revhistory { display:block; } .revhistory table { background-color:transparent; border-color:#fff; padding:0em; margin: 0; border-collapse:collapse; border-style:none; } .revhistory td { text-align :left; padding:0em; border: none; border-top: 1px solid #fff; font-weight: bold; } .revhistory .simplelist td { font-weight: normal; } .revhistory .simplelist { margin-bottom: 1.5em; margin-left: 1em; } .revhistory table th { display: none; } /*credits*/ .authorgroup div { clear:both; text-align: center; } h3.author { margin: 0em; padding: 0em; padding-top: 1em; } .authorgroup h4 { padding: 0em; margin: 0em; padding-top: 1em; margin-top: 1em; } .author, .editor, .translator, .othercredit, .contrib { display: block; } .revhistory .author { display: inline; } .othercredit h3 { padding-top: 1em; } .othercredit { margin:0em; padding:0em; } .releaseinfo { clear: both; } .copyright { margin-top: 1em; } /* qanda sets */ .answer { margin-bottom:1em; border-bottom:1px dotted #ccc; } .qandaset .toc { border-bottom:1px dotted #ccc; } .question { font-weight:bold; } .answer .data, .question .data { padding-left: 2.6em; } .answer label, .question label { float:left; font-weight:bold; } /* inline syntax highlighting */ .perl_Alert { color: #0000ff; } .perl_BaseN { color: #007f00; } .perl_BString { color: #5C3566; } .perl_Char { color: #ff00ff; } .perl_Comment { color: #FF00FF; } .perl_DataType { color: #0000ff; } .perl_DecVal { color: #00007f; } .perl_Error { color: #ff0000; } .perl_Float { color: #00007f; } .perl_Function { color: #007f00; } .perl_IString { color: #5C3566; } .perl_Keyword { color: #002F5D; } .perl_Operator { color: #ffa500; } .perl_Others { color: #b03060; } .perl_RegionMarker { color: #96b9ff; } .perl_Reserved { color: #9b30ff; } .perl_String { color: #5C3566; } .perl_Variable { color: #0000ff; } .perl_Warning { color: #0000ff; } /*Lists*/ ul { padding-left:1.6em; list-style-image:url(../images/dot.png); list-style-type: circle; } ul ul { list-style-image:url(../images/dot2.png); list-style-type: circle; } ol { list-style-image:none; list-style-type: decimal; } ol ol { list-style-type: lower-alpha; } ol.arabic { list-style-type: decimal; } ol.loweralpha { list-style-type: lower-alpha; } ol.lowerroman { list-style-type: lower-roman; } ol.upperalpha { list-style-type: upper-alpha; } ol.upperroman { list-style-type: upper-roman; } dt { font-weight:bold; margin-bottom:0em; padding-bottom:0em; } dd { margin:0em; margin-left:2em; padding-top:0em; padding-bottom: 1em; } li { padding-top:0px; margin-top:0em; padding-bottom:0px; margin-bottom:0.4em; } li p, li div.para { padding-top:0px; margin-top:0em; padding-bottom:0px; margin-bottom:0.3em; } /*images*/ img { display:block; margin: 2em 0; } .inlinemediaobject, .inlinemediaobject img { display:inline; margin:0em; } .figure img { display:block; margin:0; page-break-inside: avoid; } .figure .title { margin:0em; margin-bottom:2em; padding:0px; } /*document modes*/ .confidential { background-color:#900; color:White; padding:.5em .5em; text-transform:uppercase; text-align:center; } .longdesc-link { display:none; } .longdesc { display:none; } .prompt { padding:0em .3em; } /*user interface styles*/ .screen .replaceable { } .guibutton, .guilabel { font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-weight: bold; white-space: nowrap; } .example { background-color: #ffffff; border-left: 3px solid #aaaaaa; padding-top: 1em; padding-bottom: 0.1em; } .example h6 { padding-left: 10px; } .example-contents { padding-left: 10px; background-color: #ffffff; } .example-contents .para { /* padding: 10px;*/ } /*terminal/console text*/ .computeroutput, .option { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-weight:bold; } .replaceable { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-style: italic; } .command, .filename, .keycap, .classname, .literal { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-weight:bold; } /* no bold in toc */ .toc * { font-weight: inherit; } pre { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; display:block; background-color: #f5f5f5; color: #000000; border: 1px solid #aaaaaa; margin-bottom: 0.3em; padding:.5em 1em; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ font-size: 0.9em; } pre .replaceable, pre .keycap { } code { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; /* white-space: nowrap;*/ white-space: pre-wrap; word-wrap: break-word; font-weight:bold; } .parameter code { display: inline; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ } /*Notifications*/ div.warning:before { content:url(../images/warning.png); padding-left: 5px; } div.note:before { content:url(../images/note.png); padding-left: 5px; } div.important:before { content:url(../images/important.png); padding-left: 5px; } div.warning, div.note, div.important { color: black; margin: 0em; padding: 0em; background: none; background-color: white; margin-bottom: 1em; border-bottom: 1px solid #aaaaaa; page-break-inside: avoid; } div.warning h2, div.note h2,div.important h2 { margin: 0em; padding: 0em; color: #eeeeec; padding-top: 0px; padding-bottom: 0px; height: 1.4em; line-height: 1.4em; font-size: 1.4em; display:inline; } div.admonition_header { clear: both; margin: 0em; padding: 0em; margin-top: -3.3em; padding-left: 58px; line-height: 1.0em; font-size: 1.0em; } div.warning div.admonition_header { background: url(../images/red.png) top left repeat-x; background-color: #590000; } div.note div.admonition_header { background: url(../images/green.png) top right repeat-x; background-color: #597800; } div.important div.admonition_header { background: url(../images/yellow.png) top right repeat-x; background-color: #a6710f; } div.warning p, div.warning div.para, div.note p, div.note div.para, div.important p, div.important div.para { padding: 0em; margin: 0em; } div.admonition { border: none; border-left: 1px solid #aaaaaa; border-right: 1px solid #aaaaaa; padding:0em; margin:0em; padding-top: 1.5em; padding-bottom: 1em; padding-left: 2em; padding-right: 1em; background-color: #eeeeec; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; } /*Page Title*/ #title { display:block; height:45px; padding-bottom:1em; margin:0em; } #title a.left{ display:inline; border:none; } #title a.left img{ border:none; float:left; margin:0em; margin-top:.7em; } #title a.right { padding-bottom:1em; } #title a.right img { border:none; float:right; margin:0em; margin-top:.7em; } /*Table*/ div.table { page-break-inside: avoid; } table { border:1px solid #6c614b; width:100%; border-collapse:collapse; } table.simplelist, .calloutlist table { border-style: none; } table th { text-align:left; background-color:#6699cc; padding:.3em .5em; color:white; } table td { padding:.15em .5em; } table tr.even td { background-color:#f5f5f5; } table th p:first-child, table td p:first-child, table li p:first-child, table th div.para:first-child, table td div.para:first-child, table li div.para:first-child { margin-top:0em; padding-top:0em; display:inline; } th, td { border-style:none; vertical-align: top; border: 1px solid #000; } .simplelist th, .simplelist td { border: none; } table table td { border-bottom:1px dotted #aaa; background-color:white; padding:.6em 0em; } table table { border:1px solid white; } td.remarkval { color:#444; } td.fieldval { font-weight:bold; } .lbname, .lbtype, .lbdescr, .lbdriver, .lbhost { color:white; font-weight:bold; background-color:#999; width:120px; } td.remarkval { width:230px; } td.tname { font-weight:bold; } th.dbfield { width:120px; } th.dbtype { width:70px; } th.dbdefault { width:70px; } th.dbnul { width:70px; } th.dbkey { width:70px; } span.book { margin-top:4em; display:block; font-size:11pt; } span.book a{ font-weight:bold; } span.chapter { display:block; margin-top:0.5em; } table.simplelist td, .calloutlist table td { border-style: none; } /*Breadcrumbs*/ #breadcrumbs ul li.first:before { content:" "; } #breadcrumbs { color:#900; padding:3px; margin-bottom:25px; } #breadcrumbs ul { margin-left:0; padding-left:0; display:inline; border:none; } #breadcrumbs ul li { margin-left:0; padding-left:2px; border:none; list-style:none; display:inline; } #breadcrumbs ul li:before { content:"\0020 \0020 \0020 \00BB \0020"; color:#333; } /*index*/ .glossary h3, .index h3 { font-size: 2em; color:#aaa; margin:0em; } .indexdiv { margin-bottom:1em; } .glossary dt, .index dt { color:#444; padding-top:.5em; } .glossary dl dl dt, .index dl dl dt { color:#777; font-weight:normal; padding-top:0em; } .index dl dl dt:before { content:"- "; color:#ccc; } /*changes*/ .footnote { font-size: .7em; margin:0em; color:#222; } table .footnote { } sup { color:#999; margin:0em; padding:0em; line-height: .4em; font-size: 1em; padding-left:0em; } .footnote { position:relative; } .footnote sup { color:#e3dcc0; position:absolute; left: .4em; } .footnote sup a:link, .footnote sup a:visited { color:#92917d; text-decoration:none; } .footnote:hover sup a { text-decoration:none; } .footnote p,.footnote div.para { padding-left:2em; } .footnote a:link, .footnote a:visited { color:#00537c; } .footnote a:hover { } /**/ div.chapter { margin-top:3em; page-break-inside: avoid; } div.preface { page-break-inside: avoid; } div.section { margin-top:1em; page-break-inside: auto; } div.note .replaceable, div.important .replaceable, div.warning .replaceable, div.note .keycap, div.important .keycap, div.warning .keycap { } ul li p:last-child, ul li div.para:last-child { margin-bottom:0em; padding-bottom:0em; } /*document navigation*/ .docnav a, .docnav strong { border:none; text-decoration:none; font-weight:normal; } .docnav { list-style:none; margin:0em; padding:0em; position:relative; width:100%; padding-bottom:2em; padding-top:1em; border-top:1px dotted #ccc; } .docnav li { list-style:none; margin:0em; padding:0em; display:inline; font-size:.8em; } .docnav li:before { content:" "; } .docnav li.previous, .docnav li.next { position:absolute; top:1em; } .docnav li.up, .docnav li.home { margin:0em 1.5em; } .docnav li.previous { left:0px; text-align:left; } .docnav li.next { right:0px; text-align:right; } .docnav li.previous strong, .docnav li.next strong { height:22px; display:block; } .docnav { margin:0 auto; text-align:center; } .docnav li.next a strong { background: url(../images/stock-go-forward.png) top right no-repeat; padding-top:3px; padding-bottom:4px; padding-right:28px; font-size:1.2em; } .docnav li.previous a strong { background: url(../images/stock-go-back.png) top left no-repeat; padding-top:3px; padding-bottom:4px; padding-left:28px; padding-right:0.5em; font-size:1.2em; } .docnav li.home a strong { background: url(../images/stock-home.png) top left no-repeat; padding:5px; padding-left:28px; font-size:1.2em; } .docnav li.up a strong { background: url(../images/stock-go-up.png) top left no-repeat; padding:5px; padding-left:28px; font-size:1.2em; } .docnav a:link, .docnav a:visited { color:#666; } .docnav a:hover, .docnav a:focus, .docnav a:active { color:black; } .docnav a { max-width: 10em; overflow:hidden; } .docnav a:link strong { text-decoration:none; } .docnav { margin:0 auto; text-align:center; } ul.docnav { margin-bottom: 1em; } /* Reports */ .reports ul { list-style:none; margin:0em; padding:0em; } .reports li{ margin:0em; padding:0em; } .reports li.odd { background-color: #eeeeee; margin:0em; padding:0em; } .reports dl { display:inline; margin:0em; padding:0em; float:right; margin-right: 17em; margin-top:-1.3em; } .reports dt { display:inline; margin:0em; padding:0em; } .reports dd { display:inline; margin:0em; padding:0em; padding-right:.5em; } .reports h2, .reports h3{ display:inline; padding-right:.5em; font-size:10pt; font-weight:normal; } .reports div.progress { display:inline; float:right; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; margin:0em; margin-top:-1.3em; padding:0em; border:none; } /*uniform*/ body.results, body.reports { max-width:57em ; padding:0em; } /*Progress Bar*/ div.progress { display:block; float:left; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; height:1em; } div.progress span { height:1em; float:left; } div.progress span.translated { background:#6c3 url(../images/shine.png) top left repeat-x; } div.progress span.fuzzy { background:#ff9f00 url(../images/shine.png) top left repeat-x; } /*Results*/ .results ul { list-style:none; margin:0em; padding:0em; } .results li{ margin:0em; padding:0em; } .results li.odd { background-color: #eeeeee; margin:0em; padding:0em; } .results dl { display:inline; margin:0em; padding:0em; float:right; margin-right: 17em; margin-top:-1.3em; } .results dt { display:inline; margin:0em; padding:0em; } .results dd { display:inline; margin:0em; padding:0em; padding-right:.5em; } .results h2, .results h3 { display:inline; padding-right:.5em; font-size:10pt; font-weight:normal; } .results div.progress { display:inline; float:right; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; margin:0em; margin-top:-1.3em; padding:0em; border:none; } /* Dirty EVIL Mozilla hack for round corners */ pre { -moz-border-radius:11px; -webkit-border-radius:11px; border-radius: 11px; page-break-inside: avoid; } .example { -moz-border-radius:0px; -webkit-border-radius:0px; border-radius: 0px; page-break-inside: avoid; } .package, .citetitle { font-style: italic; } .titlepage .edition { color: #336699; background-color: transparent; margin-top: 1em; margin-bottom: 1em; font-size: 1.4em; font-weight: bold; text-align: center; } span.remark { background-color: #ff00ff; } .draft { background-image: url(../images/watermark-draft.png); background-repeat: repeat-y; background-position: center; } .foreignphrase { font-style: inherit; } dt { clear:both; } dt img { border-style: none; max-width: 112px; } dt object { max-width: 112px; } dt .inlinemediaobject, dt object { display: inline; float: left; margin-bottom: 1em; padding-right: 1em; width: 112px; } dl:after { display: block; clear: both; content: ""; } .toc dd { padding-bottom: 0em; margin-bottom: 1em; padding-left: 1.3em; margin-left: 0em; } div.toc > dl > dt { padding-bottom: 0em; margin-bottom: 0em; margin-top: 1em; } .strikethrough { text-decoration: line-through; } .underline { text-decoration: underline; } .calloutlist img, .callout { padding: 0em; margin: 0em; width: 12pt; display: inline; vertical-align: middle; } .stepalternatives { list-style-image: none; list-style-type: none; } ./AppStream-0.4.0/docs/html/Common_Content/images/0000775000175000017500000000000012227021732022035 5ustar matthiasmatthias./AppStream-0.4.0/docs/html/Common_Content/images/14.png0000644000175000017500000000077712227021732023000 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g9j;l ./AppStream-0.4.0/docs/html/Common_Content/images/18.svg0000644000175000017500000001170612227021732023011 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/11.svg0000644000175000017500000000405212227021732022776 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/note.png0000644000175000017500000000302112227021732023502 0ustar matthiasmatthiasPNG  IHDR00WIDATxՙ{lSUE`4!!* c= r0j@ޠq`dY@P0yTX1{uXuv=nk{I>Y۝ss#D ywRo3Ax1Xph 5 L_JbԘp6֛ _ppA¢/(=3jHg-f]32i4:2J.a ~@v~ҙT":EvjqX]j0v~yv{%8܅qTђB-NrwZbYD[ť4c|W=V c7I#%u4or pC@񋩲"pL F#(4* Zzhkɷ:k34:|1;j;$x ip8:FJSQ w>887PAjqw0_Z3}i62cq*M~GMZ& ?zw}G0hsEIФN|`7FSqmXu9.*7ڂʭ y&p4ȁFjn) QR)8~( SVVo%'Fj2P/Y@ݕ /a.%`IkѾ,< s Zͣ_oT ̂(ߴlxޓ8p\l$R:Cb[/I ;T&V{ufŨע KqVQ[kVRUPF}@'Pp1HZFr[gR;&"ʕ I`w8kTb .1)(xƓSaquɭjc`#|+N\h$Y@62^+UXષK\ʫlR,D4"$2 5t%XW+?IN@oI״DFWI>٘9(|b eR\.q,˗;1<][+zE٘*/}6-:[lRSyx٭z\-_HYotN k(!bStVF@&= [SɟD`o +"-ů\/O>.[ݥ;6C σg=QiI |K` 4qlQ%|B}d4 gV#nˎ M=I(,b5ѥ߫RU% < 8јYS@,`2pWK ),17=3ߏD\-9A!,qYy"EdBq}U@~f 2O(0$N( k |4`j YIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/1.svg0000644000175000017500000000247212227021732022721 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/note.svg0000644000175000017500000000525412227021732023527 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/36.svg0000644000175000017500000001362512227021732023013 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/stock-go-back.png0000644000175000017500000000112312227021732025162 0ustar matthiasmatthiasPNG  IHDRĴl;IDATxڵϋa̜m׶v((vy,l:x@gA>l o/񍊻ݮ- 6&N&?mLw!d23]i#@ bsMǿ!<J>ͨbH$_L>_kxŌx< _BR)fbqQA|:pꘋۨ&* xFR- HUxal@e Fꄽ*KL@s]rb}D{_\r#HeϬuySMLd 5J调YdJ cqa+g^Zڛ?78̉IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/watermark-draft.png0000644000175000017500000004150312227021732025637 0ustar matthiasmatthiasPNG  IHDRߊC IDATxك FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUطМߍh;qMrvp֤p#9ENrp2.(MAVg(B ====<[˳w==~/]ik:F҅t=MdH7ӵ4=eפ\fS>t6m/PO3Z^KiW.G|}I0sn3`gT:!ߐF6|"LUwަt?Um4z !ISYKi#t,uhxޤZ'i[ Uˬ|)|c~jWKVِM'Gc-vj<duC8P|]\.|K0OS-r> 6w+U|-†/]l pCySXC 8slejMLH,B PT0!bp>Ȱ&RV|`˚YlV bDˆ~{?e~{>ox=rvJ\5F;E\~W`1N)*a>G`>G ~&XևhNG->=1M}SJ) lWb,D D'a gsP"7q'1)R0KQ >/QEx98ǿN)J0_6XLç)J[N)J fXLz 1_9H8R*AA| I3ӹF,)R <,%XDmX}:O[RJ~h -F1Ga!A #|=JwuqJ)TCq4 ݴ PC4PE)R1 n\&f!Bn#~.5~dz6w7X)LwJ)T? ^yЎW1~\EpEN)jeeۙe\pg V8R*j3Yv Ѐ`~2RJE|in1ULG:z}>gᨐShiXN)U׌sW:&w/4EpRJ)VX۞-echr e#RjPa5m<:pY^KhXnbSJ)5|r A'6`d/˃V <={FRjP h =d [`l/˳*y"O)^XN)Ԁ7a!rtV/ۀNX ..c 9Rjc.b^U5Ysy߽ )0|6bҍ:Jz<`< XPRJ _bt`;R~v8,zR y6,&'0/15%}"4R`y^yXLbuka t%>aYjqJ)?{$u]qKw'rMu#Ȅ# j Ihp.*fטVbt:*g9dHf XsjY(Qf@L)]āpw"-w|޷9Y}w?oU' Hb1m0}]a)\(D~ z r`U0$~KaR] =s<]ZC7,.XܗklAX7R~ HnǙ,ed9XJ%h-RJyq[Dta?<5#GR] Pf7R2e݁9<.xi+N2օ/<ȧįCSw L RJev7т2'^o,"cMXw/=-2b8 .owN~SJ)'KVB4D~TXx꾆 Qa%x<.H𦼗aeDŽ2Oa w9')X< 'Go{z7Ľ,u^V$x8L)X7]pO~SJ)UKXFvǚYXӧwÊ8l9LH?KIEj RJU7,#ЄZO)'Fns؃<`~ *>^ ,bMFJ)R}3>5t"vp1/-oJ4 g`),W c;Fn!K*j?@` *X RJ ?8= \Xa1 "<ǏJ3Va}yX R%]^>>Un)~8 ܃<kz %刑gahp- Ka'jREu\^{VaG=]Ƙ}x1 l=́RJ)r-6X[QoJ)('TxLxMbwހ@) /QXF:0 f-c'X S_ s؏w{$,9RJF'XD2ߕ UZ}a%]X_5v \x 0u-C@)NZ +S3.qx۵^/vXC[~ 7֥wcPVOǜ߂p[R|&vR qxјh*ceFMXw =ss ,(TU>%+=,t=؄,ߩ_`E,qDtBb@[ Ϟ:4VGܓ;${> ,?W'GMd[+E^a&(,8b3aUO/SA)נ V[Ls EtfV9g"u᱗V Xh[5xVa7xћaedx;WI~V`pPIף!j8,d|OFf&]* <\,±ޔ&x<}%F&<{0#ޕ`kcs~,tg}~s K)uFn"nt=-A1a c"3RclC{G_G/Ϟ @)|-tB~XK`Ա0јwc1r_WRIr0|)]6y^KKҕR8ִV{#'X(zfX?igfG^)oЇ|}ai8do^:8~vץ ՅB*ƵXlqk"b$Eڪ!)&ڀ%(}[_T5n p)W.;f̽3g<Bfr;sF3ʚb -Ź=ax":-؀QסVօ&X8Zώ\FBUG C' e$V̶R >=O'OPFSeMX =hPWh/4$OGY4{AnSBg4zRh4 (k=˰P馄kG/ $ DMzt'O/6PFxh45Mo?&y3x$"0NrZ7V$UxG! -4F㪬#{5ca،b6a]t&\zC,bLrZ'އ8#j4AYSc%z_Ǜ203yԆJ??86˳sIh4E+k iC9Y]Dwayvl$4h4M˚:rS=:,Hڗz,Bqk1}]cмFqZ4O0L@IK8t#=w Ih4 |[Ga?O CJ#G!)XRXK|QQh4eMځ=.kڌ zp*Z#mX5xb`)QJpncB XYÈ"㪍F8-kjfAYSqʘE\0f;GXfHA5&arqo$ h47t8~u-8)-hh XZ.xR6HG#U@>16E9֠@$4h4s8x\EH )yR,Eb^/\j\FLE( M6FN0x 2!YFi IM\qYqB+: ޅY,q1$g{'A,=l%7BFb$?LGI@Ǐ|2B /@b, =MbU bFTn 3=*qGߌ<{!ֆ[ ']Xǿ/x;agy2G`%gX^Ǖ+bm@O؃"AO8Wr! `K|kP 볱vLCX,0;!Jva<,]; [!Wǚt%xp A<ޘ(*Kxɶkg@Rw}* i,KlNlp,zcUsn݃cY`]4[VAq-T؋(nmͫ#C}E{K-iITA <@rĸ ϑO! XwVgX\V {8 )(f"dx̪9Fz8;c $$"Y,/ֆGd&{lW_Ѻ$zdz4^E gs) & |gXئZmPxG%$eʭIBFfX@2b gYO[Z9Wù}6ABvX,O| a_2ФxY8J{YAif*9^~Yv fJ}wi7qt[+H1Ţ{_U|}D@g Z;b,AeE? Sc)CЈg=D0yo J梕X,_QV18W"==&Q6Y97'cD6 w%Ī݌% 9.c!/1XQ |s0ۘ6ZoD"u% ?(ShHw=sud=̎Rua'78)/p%TQjd51 Qt0%t9+/@X,^-(7%cxDt+ [#GM u LZl,)7](h>4M38p˘x : Kg1 {C*_JWbY,/XQ/^ 5?J}{h ob>e8p!cJ1[ !3Wr,KQRq(4=DX$x'dY[ sEe, Yinz0Laie6CݎY0a#/OށtG;Od-.p@TB|iG3lxodY[ӎj/h;b8~J -V8Aa02&L'qCeL2HD9FjMAFR` C !j~8y$iϏSb9LA;>DQFW,:>d<1`[ӞU+Z$}q|39h4ff;`i1=M_}6Q kGLYHyXi2ZU&EJ/BӄHKrL!cʷ\\wWBbX]4E9@ٸh4Flb4$E|A֣s1b?*_P-،rq1 kP 8a zzx[)8 HҊO4A_ab+A;q#,ۚ$B8ݰwy~7Z^G\ku( Xc02i^qy O`L,.= %g(n`~:B4 ?5kyskx |h? i 1,Ň-|g!Z(c1RS4JF a#n4|NZ>r  :}?$_}N/7Kk `Y(331Kch?C1UdXRjk=aHq  X9(\|< Ē xRۚj4X& hՍX b9xL >\p {Q؆[۷` $l;PF,AhODTo蘌 h78+ݎ 5؃l6]T#ۿEDLEcXο `HF17ah%Y(+ЗyLXNj,h&mEG/> HF$8o}rdzÝ%w"oz\ ˀFB$Bj B/c{#ߍIhlCkP8xoߌ?BR[Wh5}.uUjjcFb iQq{D4CcQ^~}mwbb2F\V6qOG`uF!TMna~CcR at5Q!IX,D1ٸ W;x*>P͋H gObhLmXg|Aڨ2/Vk}PbHO7-A}v8v*AhOYޑ|>7Ր6  уj; hTsQ{E'$qc< !8Xyx%u+\ x7xۣ8 ?FG#K 5m5;xgB\LjsLrx3$6so3 w{Jk2 %t5iPpODgY̎gB,E`$"E |li4Br[hns گi~j`e}iV8HVUD6v{)i4Snn2 !5!g d͜ea8Q64Ӗ\Ltt9 xB1AZגrEfE7s>=Fc;wT/:: uhJAЬ8˕҆dlX'͜t4M;?ptn1h4VܶDL}=nr,9HT -6* 30oB|5@T[7BGOVŘ_oڇᎏKvOCRhbQxƻa$G0{6X]*F1hBY䦝_f1 mS8䔏c {2ć4G5#ӱ{*,@-Ē]J8~-!u[@\(Y1* *tj|K."FewTb B $ªh]vxech&静{=w% srsGR{}|T^3Mfl@91 O~#}Bx_VdzX*oǷK8h4+%[WCRx"g$^X<Dp&@Br8Ϳţ?ZΕE\xC8g Al?h45OǴ5,EU Dx@Jla-GM@d;܋Qu؛bQY)Wr큿Y.xzFcL6`GZ/ !ñPﺶVy"u*25ŊعZ8# 3^ZH K[h#qv9ltT-lc͂x|Fa6(w<K~8Fcb?M(Oף_"ƦYU z$jTP`XzHN N6&~ d ˳k5 Y$kWd&8C=N*+p+d>OZSEouoBhB{%vs 4fEu:I@vOW b=K0 1"9&ԋг4ifL-^#xc9!qU 6>R#x] Ãho4$WmFnxRex.MBc.$`u/jEWhB8Pǝhg4^>@$0~/BRD̵ֿtFF'>fB f@tN^HۇjTfQ?p΍xShX_l4S_쌈4Qy؜E!s|>q: !H+&==b;ĒCx'FԗAQEk\Mϓ?OKZ?[ڀѮEіmM|J3*5U) *@/q9U1[%%0Z:r[ӭUq{2+~\`*it<Naj y} |tqF>Ƈkc_x7Cb61a؀bPlMkbDh4'6RZшÐ6gm1Ǖqؿ9U=1hfmMYnk#F܄֡QҤUQ7 ؟phXh4Me8aշg1_`r>3fzb֖N~mY~8h4h&QM1C8vmh&Kbl4Tzc^9E5]8$@oa6c%3&Ijٙ!|I!mp8a`[Ӊۚ~sF/B~?uhq ~Ca"=?$ Mp|}}l:h4 W{?$ o8tr8RqHLδeEG܏F3C~N.Bh4b EtcvSl{XUx"jQX-Sfpb5ߠ!b"ۚ>Kqh4y;ߚCWl(8Fp A,y$B;xeW2&'-etb! k#Ģè4}wz;0:F>Gc/x!@_fqlb߅ю_o#!,FNr@k|Ӊ(8~! 1$lj8ArtQm6$@ch49d&~yh'c 6mIKg?miª0a"(˜ᏈG毢[܂A4fؖD]qj33G!(9?`+"Bw?{s<='y¥=_.s<>95A)f!h4dm %p>5CmuhcVC=~׆>hoA/CR 1M8;a/ēCah4=vAz,b%[nbno2vCzI{5+*iL8 qΈX1ftUY2ynp%\xH'svFJBm;xͰ^l@ǒ0V }#Fzr#=n^zTĢqF"c-$m(XW?谗yA8dFcp+>{y.E+ijY9AЎۙAs!|ۊtuNǕIQh4.HFm!ž/K<Ћz6bU1Mb;Ҝ; K,}|.`3ē.ư@h,&ILG5hlj Kq:wZc=q`~1s̞>2.8ЀY߻n19lD?-: lEFX[dl-D=g#3owhz?O@h޶8!gIH4ZwWC<3']rtmDŽS%}kPh4rHLlAH UYC<9=ql0 Yj@KSߏDģ: 4&ۭUZ\ ~Z#ݸ\h4vzH¾G5?$k! {p?{ bFI"3M=nh>cfY;!p1TRǴ[NM;xnkgFƒC z2h8;$  q,;b{:b( !`ish4MOp= PKH7b $Zz/q' Cjh-*Rt>yn;#h4>x;wHD_,uL8|;I}WգIUH B 16mMwz^o1JFIk b낄( O :l>x}3jxLOi[<7yF9U$ksKkБiIؿuEY{;_bmk&Fs Arx*|7qx1nE&h4oߝDg 5LGbʲ~"\p ~FsԗAry_>P*-ul+)LdR_ mĨ@hNx18a2鄄1bikUJfwbi;0W_ ۚ繭6\h4MĮ.숰H=ԴbhAp$ c7St2o~?~mM5xbhUercjTlb! I4_)hY4R LQ1I,(Mj '̜)MDz6o?Cv9ܻ^/9s8{`ga 2(Qy;{ UFصu'vB؂eM!SJV:? 1,jenX"O{fHFxJ)NLzlaeXw1T*Bti )N0GΣW}{9Ə=o]fi%̑FBR*͹3a}x}:X&`8$V p`;0SJ)|ޜ-䇼Osf`Iv}i#C'Q<)}. :`O`V㸯JK`H= 1YXa.2=RqݸP4 db8c`2\$C_lq<zJ)?p!U (*h9T$a|=R~{,Cާ$w ?m0`IZT)sc>m%cȋ9`E)J!So%s h a#SJ)l>&s#?`I7Ffb.BOa=,)@Q }J-p 9HRJEzq(]5B#,}lnT*G1 iF U`tE0;.(9҄)Rq^a!{c"Jc `ˑce%E.MתR*χW\q6~*alER*[pc3M,$<A]B#x"s<ͻR1 4:~`Ep06R*e8 `qe=] Xnc>.)PO)TJCXi+/΄%'ȏO$̑ӘRJQt|iKbX`| sKSJ)*` rXNa"Fބuh9R~RJV})l؅2Ac9t+  cȏxSJ)|,>(='| *q'g4~9r3RJd~c`eMW 8nS+âE-% QxaHNh H((TFH*jlXLJIP\,ys8g{ >v}l}"dx-`Cw$fff]UǶa=R6L~,CqN#R|3xK#b[Q8(ylXS33Pih=X-r~?fc5K<LO2>юѐkxRǚY95+p/0^1OC33r -nebхAÇk:5133+cN;{qIDq|MzUrѫ{ю9Nŋx2DcMl,ܷ"a7\E\_X O!133AwrFb׎!ʬpUbff6C2}f!czdkЌ({МGe 2hE;b9l@&fffXpQChz#){Yx33 fa7EsW|nG.99k33* M؇pO`r6MOy}?bi;q opgbffV#"wb3p/y+:q.7) qlf $fffUvBØ)~w8mx30)Za`!>aE؊|t%fffUx`NЃ/Va^ʦna&Ab9.t_! ؅{P`#Ѝb'33*Hb!n<>|4d "JЉyY KqQAE_ p /2{!ػc(88@ Mr pW.N!El΁;Ã|XuuW}>׻uPT^C})؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUڃCA_;.B4IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/important.svg0000644000175000017500000000474412227021732024602 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/yellow.png0000644000175000017500000000025312227021732024054 0ustar matthiasmatthiasPNG  IHDRbsBITO pHYs B(xtEXtSoftwarewww.inkscape.org<)IDATc'g`Ci,b(8ġxA1aDIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/29.png0000644000175000017500000000133512227021732022775 0ustar matthiasmatthiasPNG  IHDR D8PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g6h7i8j;lxB3Hxb$u=;"BS,/X"> #!&+ꔪK(2Bcj Dէ8IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/green.png0000644000175000017500000000025212227021732023640 0ustar matthiasmatthiasPNG  IHDRbsBITO pHYs B(xtEXtSoftwarewww.inkscape.org<(IDATc(FQcC2j6#+ WIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/39.png0000644000175000017500000000141412227021732022774 0ustar matthiasmatthiasPNG  IHDR DVPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h7i8j9j:k;lbo*I.;r1}|LaV*,׌b@]jԆ-ƫdT]!y,NwsK; c@`docF E2'66맂@ A ||H3'1(}u 7.&eUt!C`3[њ1zKt*IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/20.png0000644000175000017500000000126312227021732022764 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h6h7i9j;l=m=n?oCrDsEsEtJwMzS~T[^cefgp{|ÊŏǓɖ˗˘˙̝ΟϡЧөԪխ֯װױرصڸۺݽ޿k tRNS2@Q(J>IDATxڭYS@r}߀}fHP/|/;UU;;;Wa9eўO\#&B;"b'?c YHr=K\'UxȫH^i[,W=G fb('R/V3Х "&WaHwe CnÒ-Jq7, 65 d]d9VGusc\McUxָ*>. zfyȪTop _,2j¸IH4s+FrU㨾^?2B>eR]IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/35.svg0000644000175000017500000001160012227021732023001 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/31.svg0000644000175000017500000000764212227021732023010 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/image_right.png0000644000175000017500000000321112227021732025015 0ustar matthiasmatthiasPNG  IHDR)K=4PIDATx{lUJE^.H!`AEQF"1F@$@1FADy%b4@aDݙJIyR孔[$7'wYv[Z8|{ιNsynoJ&  r!" e$$v=U[YZڰ]xEk8xiW_bKq#qk!NcT{WT?8:.$B>̱^wBcXCȕ`/ ÷E&mG!P*ucl_i_[ME@,د۩>~!p}zBXŌE9߁䠫S*ĞHF"$%Idu-Ѹـw[.[Gw ؕR㨘!XTlwKDh.G4ap<8 00a8[xt*c.SX '" ߁H^I}tDy[D!r`SZZQ^G;uErQfsTU[ y+U܋X%4z+dvN$BwrHpxAԂ;D7W9ACD!l1-jBB t* `:zpˠ$5Zz^D!z?Xւ$bm[9\*'~C!0^hm\v6U9(Sk,UBN`Yp G?`c)fNf"G(_hP#1Rm,Ldai,"Gc8jxTCu,8_ 1%E#FP6$p_<Qn,~0_zt3* "GR98,GG?CX{ùM`6X "ǵ߅*p^2n*1Kwik gsqr(5,6*y-cD#S9v~aie)`M󔙬DG<< ` ࡟pԲX->`PDI(GXOv>1 r;`0=oCϾf>"GӒc(Hz YM5X>_i3/uIUmL0`4'X0jW?S"q  U@'xtoy00iҜ Ad]9ACDA9?CyIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/22.svg0000644000175000017500000000667512227021732023015 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/17.png0000644000175000017500000000100012227021732022757 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g8j9j9k;l=m@pCrFtHvIvLyMy\^`efimy|}…œ͝Ψӳٷ۸ۻݽ tRNS2@Q(JIDATxڭn0#ZTW8űS,2%/ xK.VYYefM0N Zt)NrzI?U F|㎑T.9A8Mo{/gSx#Ph޼KOx0*XOYT Lff*Z__‰ȕ 5/n?oApAqCrGuIvLyMyQ}S~WY]`bgilmsyy}–˛͠ϧӰױسٸ۹ܽk tRNS2@Q(JIDATxڭkW0 XPPQ(w7$]_ғ<a\?a\@a\Aa]Ba]Ca]Da^Ea^Fb^Gbd[hhZljYmmcogEon^pperh=wpTzsV|gq}]}^}_aafgyzm}jru(?A+<.906~036v.:B+<''?BŲvž̯LбGվuͮ׶ϑrӕՙݺԖԗԙ՚ՙ֚֚יךכחט؛ٜٜl!&*.1246;;?CGKKDPTTVX\`cdimqu_acloy|~ނރ߆߇߅7SztRNSBCDEFGIDATxڽUXTAEv((v+&]vww'bww؅ (MX᜙u佛yR%RRqVk4ZN C1U UJo]( [mԇb!QTx ҷ7 M羲5)"=Qa{l>,*ZIԗEDLD\W@F#~3jR{J9)6 ;8IHsgRTBFGw[EG)YЄ .1"zF;蔘HIÔ.&; t'Ό3ӏ c|&T,wO  %[gvNw c<qBEaX0ä ` {( 4(*` V{R ` v{0 (2K߁9ihx RK j?s 8pH ;`@Z6-0K_4d@"NT7 9f_)9Q-}hD-NZCzmX͐sOE2SNu vs\NC$|$rV<&2ocLԧgܴ#fZA?14ĎTL>,&"XRŖ g(H~sh>Cv|9Dp=0ϸWwaQL}Pi>Ɓ17NTgz!?̀>,Fb w*fCo]4mCn =6 ZF8NR*_H IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/34.svg0000644000175000017500000001000712227021732023000 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/shine.png0000644000175000017500000000020412227021732023643 0ustar matthiasmatthiasPNG  IHDR< pHYs  tIME  bKGD̿IDATc?';0zD;zHM<]IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/32.png0000644000175000017500000000134312227021732022766 0ustar matthiasmatthiasPNG  IHDR D8PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h6h8j9j:k;l=n>n?o@pApAqCrDsEtFtGuIvMyMzQ}R}S~VWY]^`bglmsy~ŠŐǕʖ˗˛͠ϥҧӪիհױسٹYS tRNS2@Q(JMIDATxڭV@$! PTP 콡E((xv9{ζ+~EMSWp0D.`CاQ 60#PSagPS4j/vLcUEԷRJXp1GY<^4 |1E {1Y}VpWaJUC$>&Ce9"V&RG0|p|2N<>!GDG\y/UP2KqdVӎ$LQ@,*qVw'B˲##(nHGN>?;D-dIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/38.svg0000644000175000017500000001547612227021732023023 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/35.png0000644000175000017500000000133612227021732022773 0ustar matthiasmatthiasPNG  IHDR D5PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h8j9j9k:k;l=n>n?o@pApBqCrDsEtFtGuMyMzQ|Q}R}S~TV]^`bklmmqtux|~ˆÊŋŎǐǒɕʗ˙̥ҦӪիծװױزٳVk& tRNS2@Q(JKIDATxڭWSAE#PQT@s#"**'rĪ{勺fw_itaueႉT9QV_{Ѐ^W oA <.Ni_|s"de5Nq'RG3?= W5d` P(&2I>,wucuDFQaܖ crKkF}`kIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/12.svg0000644000175000017500000000535412227021732023005 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/1.png0000644000175000017500000000057512227021732022710 0ustar matthiasmatthiasPNG  IHDR DiPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g5h;lAqIvMyV_vϽ tRNS2@Q(JIDATxڭ F ~iBYMMkzHi)q;tc)cZ uG/t5{bQ@7V6ߟF%eR/Ek>C-(N! (ņ (x*8 A_RT4s #Gz! IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/5.svg0000644000175000017500000000447512227021732022732 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/15.png0000644000175000017500000000111512227021732022764 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g9j9k:k;l>n@pApBqCrGuLyMyMzQ|Q}S~T]`iklmqtuxy|}ˆËŎǒə̦Ӯױزٳٸ۽w8 tRNS2@Q(JIDATxڭR0EcɑA^B/"Zi{FpjWb!U+)tRF~_d-/5:?( dKIe}JìYH`׻F鴮?/ag0+^AQ= ҄G= a تʔ$({$,Վ ӭ ✖;89x c`ua"'7'nj= .Qjn?o@pEsJwMyP|V_i~ɕʞϟϧӵھ@ tRNS2@Q(JIDATxڭW0 NV@\ NwRr+~$RRD~&@$e{1Ğ)4H"c /)1b0uBwVXq|XewaZQsDB@2DOL)9Ii].IL ܐ>;|QC'cلv.sK^{qy5c$]A?IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/37.svg0000644000175000017500000000676312227021732023021 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/7.svg0000644000175000017500000000165712227021732022733 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/6.png0000644000175000017500000000106112227021732022704 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g5h7i= Kj%obۚˊhM>i1,ZD{d]xjԟY.PU$+T9kШ!r`ZfhclJϸvowṉq񸉫֑s- ԟ!X./A@{R }k++nӆ/ɱϙda?2n}V}*H@mU gX Z~UlEILƞBޖHĺ.Q{+&yEQ▶A]h@F=:>xČڇ2kη3De|a4Wa!v:!AIqě%&0.Ѯnt 5T=6xęb>KvBh>`jJ謹_v9>}Lۃ5r]>1 R''ChN 6d Ԧ[S5PbPxXcݍ!9cb;@ -t*!ۛ֯qRٶ)u%+YLkq=J<x,ȁs+' C%zvsXFLBsKꞞc];umҍuL*٢5ի1(@EG@l!xB0L9XǥeA;Ӎ..vA6 P-t;Q@XB/8\SB_Yb`o)Uo~[./?'&92&QHOfʾ} f9 i=!8~}LVQ%jG 41ȋR[!Av-1GOP‘۬hr Q @46p]7 ͝КD΃qSS8*/`2ZLW1#X,VJNBK\~֖ Ȯ0a>Tf.:){5™@`jtے*31@:H)i8.KG4 |;+$i{ j9D$| j [" 2$a;ᎆRgG3u\"=X] g=HB\"psIIXX#Zߘ C}:_JQBbS=cO''1ܷ߶=KpK)-ůKhQ2,j;;ctvcAAyVVXDGU$&G|wQT5E]~~|Ŋkz>bXVPr%)XE5O8.V44֚Aǧc# :fd\ze=#G,Iltcܦ!np2@A3CG! `Lhno ðs☘H,X QI)!ځRDɃ / :)6TbǗ>`>XlT :RoAHR>pjjjeeֹm6xz(os Au:ahrjvub¬'(ͭڴI]Y m4[cH3[wIPoCxl6'\@ ЪT?Nvg\.A(܃phxa.fdEEEbqGQ 8=o^'po8A/ՙqWT?x`-j3c6BPTZV-._1.nYv% " W㬎FFjH )jAekjy<FpL,_roo[$;%U?y.X{ܸm2A'i0=Y&WjJ\/0|xkL()/ gCķ,."Ѱ|i|u1\CMQYab63oĪb} E~ o1^o\PNxD"˕åSןA[At6K +7xk$cĴ+".$- ˖2j n $Lp o V+{A|ilYPj5N'+/,((Zׅ dg/{ -@(ҭO=U R~Vm1'/E̛ )z߾N2ہgrǂΏE "{ۉYtZ}11G?صW~>}ȑ; '+tJ-!{18Jms N>`dadxL9hv1zFI9pށIy@ cX2nq@ .[+-m[Rߦ7cƩ_eۦ ~bJO:_A4s} ;M@LXt+Sn=#vVr5k{X,O]MXtaDV ޺0a!r'Ts:` 8MH'h@Kwؑ",Z]@pyT"~%{bk̉ W< $[Z*+vvW9vrab* ·p!N䓿 !=x[1n adl܌Ap1\kPl[UӾ-4{'.>dW@Cgu Hq^ Cځ0Xҗ BYS^ ,C@-x}l #'|+2DfW=)hloXXh@#62CsҶ4}W_/?iuM'"IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/40.png0000644000175000017500000000123412227021732022764 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h6h9j=m=n?oCrDsEsEtIvLyMyMzO{S~T[^`gi}ÊōƍƓɖ˗˘˙̝ΟϠϡЧөԪխֱصڸۿM tRNS2@Q(J9IDATxڭgS@$! /`C{{{/(&F/<_}&*Iv}ߵt:M&ݗN8$xX>>xS G<+%D0yGrL惐p'LB,s/%,[gbsV.Y"U^J8a ({*J9} >h~OjJ8 .>b xg|LL#n@pApCrEsHvIwJwMyO{R}`q}ĊŎǙ̟ϩԫձرصڷۼ.~ tRNS2@Q(JIDATxڭ0 X1.{5^ j sz]M4uͯi+DH0IPHY>" 3*TES% 1t-<;fSƥyy @ ("H[- d p)>.M "h =bOHҸL)! w)۬wP"vԨ&mյ#}YcAQ9^q_w&d)/uIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/9.png0000644000175000017500000000105412227021732022711 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g5h6h=mCrEsEtGuIvKxLyS~UX`bceluvwŎǝΠϡЦӧӱضۼK4- tRNS2@Q(JIDATxڭN0EI;qK˾ZPvRpޮHcsJ) U\[N2Y2SRTHj#oTMt(G or~eǰw- Iޯ~O܂%.e&y'*m\F<AOv1E0P8-vȱEUI> ϼ.WzTpX[[uN~lCQ[26ᐄ;0 /mx'(+CIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/red.png0000644000175000017500000000023212227021732023310 0ustar matthiasmatthiasPNG  IHDRbsBITO pHYs B(xtEXtSoftwarewww.inkscape.org<IDATcXĀ_ BIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/15.svg0000644000175000017500000000601012227021732022776 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/28.png0000644000175000017500000000133712227021732022776 0ustar matthiasmatthiasPNG  IHDR D5PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h6h7i;l=m=n>n?o@pEsEtJwMzNzQ|Q}S~UVW[\ceefghjkpq{|}ċŏǐǕʖ˗˘˙̟ϠϣѦӭ֯װױرصںݻݽfӑ tRNS2@Q(JLIDATxڭR@*XQA^޻4#5Lܝ9gfoێ)R o=2SCh"QU"%r#M ]KАJdH=|NZ1WwGgOSd\/]=o|(%r:i [f0X*YN4(ypQ Ӡ$&-ðIa,+A ./AppStream-0.4.0/docs/html/Common_Content/images/stock-home.png0000644000175000017500000000131612227021732024613 0ustar matthiasmatthiasPNG  IHDRj MPLTEpppxxxfffkkkpppnnnsssooo+++nnnllloooppppppnnn***ooopppssstttttttttvvvrrrsssssssssrrrsssrrrssszzzppprrrssspppooooootttxxx jE-]E?Qީۮ PFSj3/˝irGz6I8 XEk)83iSw[P0r!df~a$#;:dC l'h#پv >n'P#HL{IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/17.svg0000644000175000017500000000317312227021732023007 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/23.svg0000644000175000017500000001111412227021732022776 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/28.svg0000644000175000017500000001322712227021732023012 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/25.png0000644000175000017500000000126512227021732022773 0ustar matthiasmatthiasPNG  IHDR D PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g6h7i9k:k;l=m=n>n?o@pApBqCrEsGuJwMyMzQ|Q}S~T]cefgklmpqtux{|ËŎǏǒɘ˙̙̟Ϧӭ֮ׯװױزٳٺݽLJ tRNS2@Q(J7IDATxڭS@ť$! OE, ر`PDxwpF}7oaڮkFe:@D)1pb|M$("Z*Zb5oznHãA$D􃬝ti?" +>3D8r|&IC`H A;+ޡ\)6e1FJgRBqjS prH7ˬO(.s-2M.}>lR9SeBS@H=O`nJYWQ ./AppStream-0.4.0/docs/html/Common_Content/images/40.svg0000644000175000017500000000603312227021732023001 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/dot2.png0000644000175000017500000000015712227021732023414 0ustar matthiasmatthiasPNG  IHDR TK6IDATxu 0]U:F&p#M!?[ E [ݷe?_wDpIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/20.svg0000644000175000017500000000720712227021732023003 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/34.png0000644000175000017500000000126012227021732022766 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h8j9j:k;lWj: !^?mBt.wP5k_09` h'8rSC@4ܜ2pTQ&N/^q9K8MZG=pS$f)\-oT$`Ao`d ;%N:GK}n(WNW?~_A3IIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/title_logo.svg0000644000175000017500000010152612227021732024722 0ustar matthiasmatthias BOOK PUBLISHING TOOL ./AppStream-0.4.0/docs/html/Common_Content/images/38.png0000644000175000017500000000144212227021732022774 0ustar matthiasmatthiasPNG  IHDR D\PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h8j9j:k;l=m=n>n?o@pCrDsEtFtGuJwMyMzNzQ|Q}R}UVW[\^`behjkmq|}~‰ĊŋŐǕʖ˗ˠϣѥҦӪիհױصڻb tRNS2@Q(JhIDATxڭkSRa9FP,nZV ejE`L ͜|3kͼ{в# ʁ0. C׫8Qv9|Cp^ 1?@ll SMaeI'`捤3fv>k.HTTyE1VbAQjK nIY1Xtx'd=X`d*`Uksm SJzϤNːx9Xn蓪 ]6ɒJKt0mk(=**&1ǖҐﱢfL7s^)rU_ ʍ/I;RuOt]y0'}gq}yLxIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/2.svg0000644000175000017500000000377612227021732022732 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/18.png0000644000175000017500000000121212227021732022765 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h9j;l=m>n@pEtJwLyMyMzNzQ|Q}UVW[\`ehijkmqy|}}‰ċŐǕʖ˗ˠϣѦӱصڸۻݽX tRNS2@Q(J'IDATxڭYS0i!mr⊊nUT<8TB3y$s7%W“Q$=fڅ: =!1|H H=*vNH +>e+ꈫ S]_'=WH9VAKu00 0O]wph ۴氊z HRZS|5A@Dm@H},|'<8#Q@') ƞ.5^o>> $o9njY2nVζ|~\<^IIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/37.png0000644000175000017500000000125012227021732022770 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h8j9j9k:k;l=m=n?o@pCrDsEtFtGuHvIvMyMzQ}R}V\^`befm|~ŠŐǕʗ˜͝ΥҨӪիհ׳ٷۻZT tRNS2@Q(J6IDATxڭWS@`(PT]"*?\7`f{3dsn߿yizu[jk",-ڏ#$B EW,d燐[.e,6$?pI15G|7ɭ !Ber!&nx~2zPC^ErE x. ./AppStream-0.4.0/docs/html/Common_Content/images/important.png0000644000175000017500000000346412227021732024565 0ustar matthiasmatthiasPNG  IHDR00WIDATxyPUU2sfiİ4B@ɪH-W I2e*4єV+ dE!1KE]}/'P3{9{XnpS?==J"* : y3%HFt"fyh0O/9ħ7C ýZBH{mLV*ؔ P^EIgņinC6\< ,6U)\+ib9H&A"aƅ,@Sx! F?"nrEfs1OBTڮ}K $u 6O#KE.,;w񋦡]X^إo`Cd>KS|*_7،,圬ViR-'?k6x7*vVV u/~5ex'x :X tU^24Va Zz1>tudrYZիjݡm;%c1ijohR.;呉`+8؈fh&]QG=OWb6Rc?CD,[<^ 9(/d!1e9k8S:F% naN+ ?B+77ޞA<}Lԗ-\9w,#]w|r 'uXhi LˋCl f*la6Cra>>߾ *Gr9 y/]5 Ҵ:s R6aaOh@_ʔ2S`>:,nYv'> 8TbU0<ƨb1V[i27. Q bL哯)kU{iO[MfŒ#Wi$Lҁb?F\7B$?:'= l/25|dY]tSs+gOMn8O+g==OF\SiD8ˬ|ں@pq@.v1ڶp$q/jk{ π{0 ?1@3Vj_Qgj%1!w !߰kV͢RۍB|fbN,b\p*-ŸeũЇ _;4Oӈm)fLTF?I[w$A8bQ"hvp9gzx )NvP8ؓ؞aX:M_.ɱ!8v0 =s%-Ū8g9@F${?.^ȷ!W>6f[ͯ9Ym%Bg9(J`NP+9%+&*urz q<# 9=L'zxXexv凑ұ,Q=n 7jS$zPXrF[ v #gN2׾`9!pvjw,/;ϲ$uC[є)O? ^&5icZR-;g;$yv*?w^WH:Q$= hklVxv%Ac]9>P{^R ./AppStream-0.4.0/docs/html/Common_Content/images/11.png0000644000175000017500000000070612227021732022765 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5h9j;lBqEsKxLyMyZ\`imy{}£ѭָ۽98 tRNS2@Q(JIDATxڭi0 eƀz}g3tD/I˺_a!I"y*A%Q`=3~ ľO"}3*_ST"E?o=uFQ5JU}F/Z">`$E9>၄lBxQ.p3'w.Z$H'ͩ1] $;Aڂ9 \Ŵ3&5BdM:n8Wνw_)%fIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/16.svg0000644000175000017500000001003512227021732023001 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/29.svg0000644000175000017500000001137612227021732023016 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/33.png0000644000175000017500000000136112227021732022767 0ustar matthiasmatthiasPNG  IHDR D;PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h7i8j9j:k;l=n?o@pCrDsEtFtGuIvJwLyMyMzQ}R}VW^`bchiimqu|~‰ĊŋŐǑȕʗ˥ҦөԪիհ׸ʽ tRNS2@Q(JXIDATxڭWW@$(Xcb/ 1s9;sw%٭inYwL;]drm 5ؚZPMy1UTBQIM'ϦƉi̢ϷYPq] +H:u$](s0 $.Bů29KTDT[᠛ 4I'#1`i.(eL|7E5Ԣ|EK@E&1WE&7ҤhxX1 @P |e N?䖅*AX 1x8raVjiX}n DbeIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/26.png0000644000175000017500000000131512227021732022770 0ustar matthiasmatthiasPNG  IHDR D&PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h6h7i9k:k;lE.fH]`+k upMaKQI1L@1˚xsPF -AzjXԸE칥 #]9^q_|D{B<IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/stock-go-up.png0000644000175000017500000000103412227021732024707 0ustar matthiasmatthiasPNG  IHDRĴl;IDATxڭҽKBQʊ^nK[cmAkAC8 !( )PCлy.8]N[(| y9 |{Kf5le2|vRT/bh4:PQ;2R;:,T3NJ>m'}^N#v[L&#RS߱ RS$ n k|>/?) @k*< [0ł M^笅 =gy秅 cݘΰcȋf6r0Y4&̧ . ъKx8&GKh%j 2XsB8㻫iգ 7:E ڍO$PIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/h1-bg.png0000644000175000017500000000106512227021732023441 0ustar matthiasmatthiasPNG  IHDRdmMbKGD=n pHYs  tIME 5-IDAT8UQ9GKz4u  DK 9|atzn—OMl|]/=ϼx;j30A@ ,{F,i!2kX[ף]<=*;_`vԙ;luSn=*7>7?A%AB:^Zʷ{*2y۠ns٭Ʉ~c!?ozRuI)aΪOG^"NXɟ ̾{񏏡݇5Ymmew->IiU?`9 oVQ#x3ӹzׯztj?v/Q+IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/3.png0000644000175000017500000000105412227021732022703 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g6h8j:k;l=nBqEsGuLyNzO{Q}UVW`abehjlmmsu†ÐǓɪխָ۹ܻ-Nd tRNS2@Q(JIDATxڭSR@46aCOh'YȎmfj{g/Ί*W89ӤVR'=Kyǰ<:~C׭뻧%3"/ h>1G׷M6 '$BYׅO V!Fu\qBg2 AI x,1DŽEJzlS`6JF8=c]UYbئ6LGk:{1}s*!<IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/title_logo.png0000644000175000017500000001310412227021732024701 0ustar matthiasmatthiasPNG  IHDRpd# IDATx|TžO%$H.HATP >G|<ӏ"`+xE"-$@B !@H=Mfwl 眼_v.ɶl|9g|?/3L94u7 RofUf ==MB96q/֘"6q:5+My.{eK^G &N!4[rfge _zD3_ÀO@ +.BvI3MD+Kiy M~/FUQOtfYf_Xpod< K[ؤ?DgKO'6fd+"i zh&q/oa`x{s]Oq˄V}]6ë _\"25zVȥ|WPel5  Řu`_u\47ʻ݆)WknƱhTp\5QƗ_ q?.NdDP.ssǣ0j 嬗8?+RՉ6_`7=la.g n&m|y^~Kyx o޽lQI5y #?Hiyқ+KF? d2+%|X|/_C!iR,y{֯T~bjs}o0;8T:UW_KKyYV.}!Vǣy Bk5oXZ4FA(_X?R 3)%zsFdyMEEFINdXljRryn30¹̏Z4oDs|TuW.VT9{bzW75lZ\5IO&>ۖU/*MUl+_4W%:vIsɜ9Mm+ɌŤpaO69)S{kӽbJWT MKuEU>44+ZKxJО\ (Ynet'ӗKfn 8o\ƇPD]Ԇl\iy%>}@WST[)Me]ϗ`MS'6:{|3gƜɥ͇:" `h;AjXFfQ߾}9NPt1T]!P hbc;^Ek5H+Kfl̤SA% WV!@ @)l{KԑaQݻb׮fղQC <(EvQ1eay2@,,Q3[09CL㇉3Ӊl+B3e0x xゝ`je'6ۀ)XUvYԫWΝUX5 GJ햛(@:B`^~Nx/e ;L0 :OQj 5aX;6pҹU\l6f 7ѱmQ {HB0 ay;07\DE|82TO*..Œz6H! ^&ȱGƎ~u _WUT._޶Z[{/ K0q= ľ}Nvo tJ))) )WosPBX E{1=(r%l6FS0X`gׂV>5D{Q?\MPVZY7,5<#)))uBIZZD$gcԫTy?`nT*S61L0cs_"kC5lK˼ҢIiD"|w_رĻgq> t#2A 30kGeEE/'ny-sBPw~To\&f~dnȿ7TVUjT[/\tR@y^zX&KZЀӅ [e0;; zd@f{8{Opv/<|I>:|ߪU55(zNWC8h̓3g촁U6̙dL[h|LL'%WvW_ \>ͭRk/VL=a8^7k`D?w woQV]u vVVVAAOj'ra:hz\AF!dк\)p<5W/ ø88`STI$ _6)*>sl29W3tac e%-m]~~)ώ„JJҬЈ={.=6j] o{4nT6'TS< o]JzB 8T@'ƊpIPZުXוxFݱ#꒚QĮ]!$OπM.=xҥbb&T2!Ձ2Zwzerk5:~UU_#\8rx7'bÏ0E9ȁrŻ /=gTW@''cS'gm}~ڴ<,a֏sEea'=zq B" [0^3gJ}:4~ZPWǒJE9k׮m۶!"եzzz+gϞ mhhkv1`A$駟Jwg͚E ǎuoo7ohL46Za{է؁:qFkkkRد_?՟P)SB''nG-0&L@gPl.mذa͚5حn g[1ԽVTTo>|3@ɽ{Meٜwfddra/% ۫X H,d@kjj80qđt9ҥK߿c߾}-[2uy;wn^6lx.|G 2qرcSN_A%x4@1[7n@o-X>CZ?h3gΡC`Z*JPIXgPpt<|A+++RG#!ڪSNzɱ{n{{{O?>3f aĈ(MǏ<0_5J+VйlڴI԰R۷o7<) T0ϟYIm, ^t|ƌLJ޼ySo,P\ku ֭[I%ҷ(T -$7n}ڵk(H@o߾M}OZ[ej toٲ,~B,-nͣ=&ػwW_}EN<ʕ+/^B }ӧrx\~--6Pzo4Q@pF믿D\S$-[mmm-=OXfpwW^ werT(~w2JӐ!C]_QV5 }aڵhL} k9 C_ u}b Ney`9BdzI8QAYYv9U^ лAډA[ ex5#%A9YȐvJK0 Ƹa^c-'%C^LQA9E1&%Ptx* \cxKzFx ':F$ECb]56#$:ڌNj$wIx+ \Bt=hѢ"* m/dC@ Ԝ@@@ I[z/IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/10.png0000644000175000017500000000113712227021732022763 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h6h9j;l=m?oCrDsEsEtLyMyMzS~T[^`gimy}ˆÊœɖ˗˘˝ΡЧөԪխֱصڸ۽޿I tRNS2@Q(JIDATxڭR0E`ZpNh5DxF/9/iWaeIxi?ƐI"XD5;_OnǨ 5D$δo-`䍨{Pt[~?PjGsR@Pmx-!Y`QP|Z &"dh>wvU( 4?X!3rmZ>Ur\2ⓧS%M%F %+_nƇM8 w=s`\#Z;>덓8+ wIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/14.svg0000644000175000017500000000421712227021732023004 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/8.svg0000644000175000017500000001040512227021732022723 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/13.png0000644000175000017500000000113212227021732022761 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h7i9j;l@pCrDsFtIvJwLyMyR}VW`chiimquy|}‰ċőȕʦөԸ۽*d5 tRNS2@Q(JIDATxڭiS0miӦe=@(^D?hc;|IfIvYW\_8wK^HsBv23_QW@5g8eTJ0?iIM-I̬]j!ڽW;Gz6:hRςP3\t1^V`Arx86NSJb̄-%&.n^i9&Iv( "oGD >Ên+qo]ZZk4c9q_ 5)4nIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/16.png0000644000175000017500000000114412227021732022767 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h9j9k:k;l;g&f_DQ 04wҖGK!",i2QVHj f'IDV"[YꌁWv7_ xO(;&C)glkBr$juYFtƁ1yhco~8w~zE7*lIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/8.png0000644000175000017500000000107412227021732022712 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g5h7i8j9jnBqFtGuP|R}XYadhijpqrs}ÇÍƤѭְ״ٶ۹ܹܼݿq tRNS2@Q(JIDATxڭSRA ta%r( ʡU&dj^tz&IO`H8$M)b이呂g|2M1*dWwHq•ռD|'50ia5&~s8KK0D1TΙp#Ox9d1<IOwY/J d (c$M1π&&ʘڨhtĨ xVʕOI`۸03-i  -rIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/3.svg0000644000175000017500000000625512227021732022726 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/24.png0000644000175000017500000000116312227021732022767 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g6h7ir1Ɯ2CV冠h}bhG]dM/\b9תHF9g)f`A5Q?؄,;뺝 l9wӺpO|d;WnIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/31.png0000644000175000017500000000120012227021732022755 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h8j9j:k;l=n?o@pBqCrDsEsEtFtGuKxMyMzQ}R}VZ\^`bm{~ŠŐǕʗˣѥҪիխְZ tRNS2@Q(J IDATxڭR0Ec). 5!:+ %,%3z٢U߿g*;$f1W_Qe%D81@80 pR!>-(K `myUI( @":)0w| &YEu?NOe`zP}l)|=ꑳ7fagRn8Wνw?8㪜HIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/19.png0000644000175000017500000000117212227021732022773 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g7i8j9j;lpOw^g%iIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/4.svg0000644000175000017500000000270112227021732022717 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/36.png0000644000175000017500000000140412227021732022770 0ustar matthiasmatthiasPNG  IHDR DJPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g5h8j9j9k:k;l-poX9j܃( a1znÁ195{cJIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/33.svg0000644000175000017500000001336312227021732023007 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/30.svg0000644000175000017500000001145612227021732023005 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/32.svg0000644000175000017500000001114412227021732023001 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/19.svg0000644000175000017500000001005512227021732023006 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/warning.svg0000644000175000017500000001274412227021732024231 0ustar matthiasmatthias image/svg+xml ./AppStream-0.4.0/docs/html/Common_Content/images/21.png0000644000175000017500000000106312227021732022763 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g5h6h7i;l=m=n?oBqEsJwKxMyS~Z\cefgp{|ǘ˙̟ϣѭ֯װױغݽPP tRNS2@Q(JIDATxڭR0Dcf8@衇[L/lΓfHh_EdY 1~VE0<3hv)Ka!շD[AaUmy$Gy ̝cBWˏE~÷w%R!p; ./AppStream-0.4.0/docs/html/Common_Content/images/23.png0000644000175000017500000000131312227021732022763 0ustar matthiasmatthiasPNG  IHDR D)PLTE1c3f4h2e3g3e3g3f3f3f3f3f3f5g5h6h7i9j;l=m=n?o@pCrDsEsFtIvJwLyMyR}S~VWcefghiipqu{|ċŏǑȕʘ˙̟Ϧөԭ֯װױظۺݽc# tRNS2@Q(JDIDATxڭgS@$! bWDA`Æ ^PQG,3Anfߛ-5ݴmSׂm5[|H!y$U.R9Yaڡ'7A]M9[4:K 8=A@0(F-/K2^XuʅQzik~8wjAYoIENDB`./AppStream-0.4.0/docs/html/Common_Content/images/6.svg0000644000175000017500000000652112227021732022725 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/dot.png0000644000175000017500000000014212227021732023324 0ustar matthiasmatthiasPNG  IHDR TK)IDATxڅ q #GuN$)9E9g*!IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/22.png0000644000175000017500000000124412227021732022765 0ustar matthiasmatthiasPNG  IHDR DPLTE1c3f4h2e3g3e3g3f3f3f3f3f3f4g5g6h7i;l=m=n>n?oApAqCrEsGuIvJwQ}S~WY]bcefglpsy{|ǖ˘˙̛͟Ϡϧӭ֯װױسٹܺݽUp tRNS2@Q(J2IDATxڭyS0-. /TTP|{7ҙ̼̾f7%e9J 6ufQ K.M"qh.%Y,Jܟř\iϱjb+A/I6 E 1[){T> 62X'b "P 6x7E,aXc1i^)VbgEb%ޱbAa-|Aai!F̰Q7mCrȍ [}6F vXVrC{Q ٦?IENDB`./AppStream-0.4.0/docs/html/Common_Content/images/10.svg0000644000175000017500000000566612227021732023011 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/39.svg0000644000175000017500000001364512227021732023020 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/Common_Content/images/9.svg0000644000175000017500000000655212227021732022734 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/chap-AppStream-Metadata.html0000664000175000017500000006303212227021732023063 0ustar matthiasmatthias Chapter 2. Application Metadata

Product SiteDocumentation Site

Chapter 2. Application Metadata

AppStream uses it's own XML metadata to describe applications. This chapter contains information about it.

2.1. AppStream XML files

2.1.1. Introduction

AppStream XML files are small textfiles describing all available applications in the distribution's package repositories. The XML files might be compressed with GZip.

2.1.2. File naming and location

The XML files must have an unique name, which is usually the distribution's name and version, combined with the name of the repository/origin. For example in Debian 8 (Jessie), the filename for the main repository component would be debian-jessie-main.xml.gz. For Fedora 20 (Heisenbug) updates it would be fedora-20-updates.xml.gz. 3rd-party repositories use a vendor name and repository-name combination, for example Ubuntu PPAs might get ppa-ubuntu12.04-username-foobar.xml.
There are two valid locations to store AppStream XML data. /usr/share/app-info/xmls stores all AppStream data which has been installed via software packages, while /var/cache/app-info/xmls stores application data which was downloaded by the package manager or placed there by other tools (e.g. Listaller). The XML files can either be plain files or be compressed with gzip. It is always a good idea to compress the files, because they tend to become quite large.

2.1.3. XML structure

The XML starts with an <applications> tag as root element. It has all the <application> elements as children. Data to fill the application elements is usually taken from their Desktop files and package data. However, if an application ships AppData files (see Section 2.2, “AppData XML files”), values defined there should override data from any other source. The <application> element must at least have an id, name, summary, pkgname and icon tag. All possible tags are:
<id/>
The <id type="desktop"> tag is the same name as the installed .desktop file for the application. Additional identifiers are possible later, but right now desktop is the only supported type.
<pkgname/>
The name of the package which needs to be installed in order to provide this application.
<name/>
The application name defined in the application's Desktop file.
<project_license/>
The <project_license> tag is indicating the license of your project/application. It should be a string in SPDX format. Licenses may be combined using and and or logic. Possible values include:
  • GPL-2
  • LGPL-3+ and GPL-3+
  • MIT
  • CC-BY-SA-2
  • ...
A full list of recognized licenses and their identifiers can be found at the SPDX OpenSource License Registry. For SPDX compatibility, versions with trailing dot-zeroes are considered to be equivalent to versions without (e.g., "2.0.0" is considered equal to "2.0" and "2").
Although the license tag is not mandatory, it is recommended to include it.
<summary/>
A short summary of the purpose and function of this application. Usually taken from the Desktop file, if the application does not ship an AppData file.
<description/>
A long description of the application. It is usually taken from the package descriptions or application's AppData files. The description might use markup. Right now, only paragraph, ordered list and unordered list are supported. An example description element might look like this:
<description>
  <p>
   Power Statistics is a program used to view historical and current battery
   information and will show programs running on your computer using power.
  </p>
  <p>Example list:</p>
  <ul>
   <li>First item</li>
   <li>Second item</li>
  </ul>
  <p>
  You probably only need to install this application if you are having problems
  with your laptop battery, or are trying to work out what programs are using
  significant amounts of power.
  </p>
 </description>
<url/>
Links of type homepage should be a link to the upstream homepage for the application. It is planned to allow links to application's FAQ and forums later.
<project_group/>
The <project_group> tag identifies a project with a specific upstream umbrella project. Known values include GNOME, KDE, XFCE, LXDE, Mozilla and MATE, although other umbrella projects like Yorba would make sense too.

Note

Applications should only identify with an umbrella project if you use all their infrastructure and policies, for instance string freezes dates, bugtracker and source control instance.
<icon/>
The <icon> tag describes the application's icon. It can be of the type stock, cached, local, or url.
stock icons are loaded from stock. The icon name should never include any file-extension or path.
cached icons are loaded from the AppStream icon cache. The icon tag should contain the icon file name, including it's extension.
local icons are reserved for AppStream data installed by local applications or via 3rd-party application installers, such as Listaller. They should specify a full file path.
remote icons loaded from a remote URL. This is currently not implemented anywhere, but might be used in future.
Examples of the different methods to specify an icon:
<icon type="stock">gimp</icon>
<icon type="cached">firefox.png</icon>
<icon type="local">/usr/share/pixmaps/foobar.png</icon>
<icon type="remote">http://example.com/icons/foobar.png</icon>
Multiple <icon/> tags might be combined for one application, e.g. to define a stock icon and a cached icon. Software-Centers should always prefer the stock icon, if it is available, and fall back to the other icon types if they can not find it. The libappstream library makes it easy to do that, if you are not accessing the Xapian database manually.
The AppStream Xapian database generator will prefer cached over local over remote icons when setting the non-stock icon for the application.
<mimetypes/>
This tag can contain one or more <mimetype> tags, describing the mime types this application supports. The data can usually be fetched from the Desktop files. Example:
<mimetypes>
    <mimetype>text/html</mimetype>
    <mimetype>image/jpeg</mimetype>
    <mimetype>application/rss+xml</mimetype>
 </mimetypes>
<appcategories/>
This tag can contain one or more <appcategory> tags, describing the categories this application is in. This data is usually taken from Desktop files, a list of categories can be found in the Freedesktop menu spec. Example:
<appcategories>
    <appcategory>GNOME</appcategory>
    <appcategory>GTK</appcategory>
    <appcategory>Network</appcategory>
    <appcategory>Telephony</appcategory>
</appcategories>
<keywords/>
This tag can contain one or more <keyword> tags, describing keywords for the application, to make it easier to find in a software center. The data is taken from Desktop files. Example:
<keywords>
  <keyword>IDE</keyword>
  <keyword>development</keyword>
  <keyword>programming</keyword>
</keywords>
<screenshots/>
This tag can contain one or more <screenshot> tags, describing screenshots which are available for the application. A screenshot tag my have the attribute type="default", marking it as the application's default screenshot, which primarily represents it in a software center.
Every <screenshot> is defined by several images of different sizes. All images should have their width and hight set as arguments. Also, one of the images shoukd be marked as type="source", indicating that it is the unscaled version of the screenshot. Images of type="thumbnail" define thumbnails of the screenshot.
Every image should have a full remote url set, usually pointing to a cache of images maintained by the distributor. Example:
<screenshots>
  <screenshot type="default">
    <image type="source" width="800" height="600">http://www.example.org/en_US/main.png</image>
    <image type="thumbnail" width="200" height="150">http://www.example.org/en_US/main-small.png</image>
  </screenshot>
  <screenshot>
     ....
  </screenshot>
</screenshots>
<compulsory_for_desktop/>
The <compulsory_for_desktop> tag indicates that the application which the data belongs to is essential for the functionality of the defined desktop environment. Examples for compulsory applications are the GNOME-Shell by the GNOME-Project, or the Plasma-Desktop by KDE, as well as things like iBus or the desktop login manager.
Software centers are expected to detect the running desktop environment and disable uninstallation for compulsory components of that desktop, so users will not be able to damage their currently running, primary desktop environment.
Multiple occurrences of the <compulsory_for_desktop> tag are allowed, so a project can be essential for many desktops. The distributor decides which applications should be made compulsory, however it is generally a good idea to follow upstream's recommendations on that matter.
A list of all allowed values for this tag is defined in the XDG Menu Specification. Software center applications will only recognize these values.

2.1.4. Example file

This is an example AppStream metadata file:
<?xml version="1.0"?>
<applications version="0.1">
    <application>
        <id type="desktop">firefox.desktop</id>
        <pkgname>firefox-bin</pkgname>
        <name>Firefox</name>
        <name lang="en_GB">Firefoux</name>
        <summary>Web browser</summary>
        <summary lang="fr_FR">Navigateur web</summary>
	<project_license>MPL-2</project_license>
        <keywords>
            <keyword>internet</keyword>
            <keyword>web</keyword>
            <keyword>browser</keyword>
            <keyword lang="fr_FR">navigateur</keyword>
        </keywords>
        <icon type="stock">web-browser</icon>
        <icon type="cached">firefox.png</icon>
        <appcategories>
            <appcategory>network</appcategory>
            <appcategory>web</appcategory>
        </appcategories>
        <mimetypes>
            <mimetype>text/html</mimetype>
            <mimetype>text/xml</mimetype>
            <mimetype>application/xhtml+xml</mimetype>
            <mimetype>application/vnd.mozilla.xul+xml</mimetype>
            <mimetype>text/mml</mimetype>
            <mimetype>application/x-xpinstall</mimetype>
            <mimetype>x-scheme-handler/http</mimetype>
            <mimetype>x-scheme-handler/https</mimetype>
        </mimetypes>
        <url type="homepage">http://www.mozilla.com</url>
        <screenshots>
            <screenshot type="default">
		<image type="source" width="800" height="600">http://www.awesomedistro.example.org/en_US/firefox.desktop/main.png</image>
		<image type="thumbnail" width="200" height="150">http://www.awesomedistro.example.org/en_US/firefox.desktop/main-small.png</image>
            </screenshot>
        </screenshots>
    </application>
    <!-- more applications here! -->
</applications>
./AppStream-0.4.0/docs/html/chap-AppStream-ManualPages.html0000664000175000017500000000416412227021732023541 0ustar matthiasmatthias Chapter 4. Manual pages

Product SiteDocumentation Site

Chapter 4. Manual pages

Manpages are not available at time.
./AppStream-0.4.0/docs/html/ix01.html0000664000175000017500000000333112227021732017315 0ustar matthiasmatthias Index

Product SiteDocumentation Site

Index

./AppStream-0.4.0/docs/html/api/0000775000175000017500000000000012227021732016417 5ustar matthiasmatthias./AppStream-0.4.0/docs/html/api/html/0000775000175000017500000000000012227021732017363 5ustar matthiasmatthias./AppStream-0.4.0/docs/html/api/html/appstream-AppstreamSearchQuery.html0000664000175000017500000012106512227021732026360 0ustar matthiasmatthias AppstreamSearchQuery

AppstreamSearchQuery

AppstreamSearchQuery — Class describing a query on the AppStream application database

Synopsis

#define             APPSTREAM_TYPE_SEARCH_QUERY
gboolean            appstream_search_query_get_search_all_categories
                                                        (AppstreamSearchQuery *self);
void                appstream_search_query_set_search_all_categories
                                                        (AppstreamSearchQuery *self);
void                appstream_search_query_set_categories_from_string
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *categories_str);
AppstreamSearchQuery * appstream_search_query_new       (const gchar *term);
const gchar *       appstream_search_query_get_search_term
                                                        (AppstreamSearchQuery *self);
void                appstream_search_query_set_search_term
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *value);
gchar **            appstream_search_query_get_categories
                                                        (AppstreamSearchQuery *self,
                                                         int *result_length1);
void                appstream_search_query_set_categories
                                                        (AppstreamSearchQuery *self,
                                                         gchar **value,
                                                         int value_length1);
struct              AppstreamSearchQuery;
struct              AppstreamSearchQueryClass;
#define             APPSTREAM_TYPE_DATABASE
gboolean            appstream_database_open             (AppstreamDatabase *self);
gboolean            appstream_database_db_exists        (AppstreamDatabase *self);
GPtrArray *         appstream_database_get_all_applications
                                                        (AppstreamDatabase *self);
GPtrArray *         appstream_database_find_applications
                                                        (AppstreamDatabase *self,
                                                         AppstreamSearchQuery *query);
GPtrArray *         appstream_database_find_applications_by_str
                                                        (AppstreamDatabase *self,
                                                         const gchar *search_str,
                                                         const gchar *categories_str);
void                appstream_database_refresh          (AppstreamDatabase *self,
                                                         GAsyncReadyCallback _callback_,
                                                         gpointer _user_data_);
gboolean            appstream_database_refresh_finish   (AppstreamDatabase *self,
                                                         GAsyncResult *_res_,
                                                         GError **error);
AppstreamDatabase * appstream_database_new              (void);
const gchar *       appstream_database_get_database_path
                                                        (AppstreamDatabase *self);
struct              AppstreamDatabase;
struct              AppstreamDatabaseClass;

Description

Details

APPSTREAM_TYPE_SEARCH_QUERY

#define APPSTREAM_TYPE_SEARCH_QUERY (appstream_search_query_get_type ())

The type for AppstreamSearchQuery.


appstream_search_query_get_search_all_categories ()

gboolean            appstream_search_query_get_search_all_categories
                                                        (AppstreamSearchQuery *self);

self :

the AppstreamSearchQuery instance

Returns :

TRUE if we search in all categories

appstream_search_query_set_search_all_categories ()

void                appstream_search_query_set_search_all_categories
                                                        (AppstreamSearchQuery *self);

Shortcut to set that we should search in all categories

self :

the AppstreamSearchQuery instance

appstream_search_query_set_categories_from_string ()

void                appstream_search_query_set_categories_from_string
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *categories_str);

Set the categories list from a string

self :

the AppstreamSearchQuery instance

categories_str :

 . Comma-separated list of category-names. [in]

appstream_search_query_new ()

AppstreamSearchQuery * appstream_search_query_new       (const gchar *term);

term :

 

appstream_search_query_get_search_term ()

const gchar *       appstream_search_query_get_search_term
                                                        (AppstreamSearchQuery *self);

Get and return the current value of the "search-term" property.

self :

the AppstreamSearchQuery instance to query

Returns :

the value of the "search-term" property

appstream_search_query_set_search_term ()

void                appstream_search_query_set_search_term
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *value);

Set the value of the "search-term" property to value.

self :

the AppstreamSearchQuery instance to modify

value :

the new value of the "search-term" property

appstream_search_query_get_categories ()

gchar **            appstream_search_query_get_categories
                                                        (AppstreamSearchQuery *self,
                                                         int *result_length1);

Get and return the current value of the "categories" property.

self :

the AppstreamSearchQuery instance to query

Returns :

the value of the "categories" property

appstream_search_query_set_categories ()

void                appstream_search_query_set_categories
                                                        (AppstreamSearchQuery *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "categories" property to value.

self :

the AppstreamSearchQuery instance to modify

value :

the new value of the "categories" property

struct AppstreamSearchQuery

struct AppstreamSearchQuery {
	GObject parent_instance;
	AppstreamSearchQueryPrivate * priv;
};

Class describing a query on the AppStream application database


struct AppstreamSearchQueryClass

struct AppstreamSearchQueryClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_SEARCH_QUERY. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure

APPSTREAM_TYPE_DATABASE

#define APPSTREAM_TYPE_DATABASE (appstream_database_get_type ())

The type for AppstreamDatabase.


appstream_database_open ()

gboolean            appstream_database_open             (AppstreamDatabase *self);

self :

the AppstreamDatabase instance

appstream_database_db_exists ()

gboolean            appstream_database_db_exists        (AppstreamDatabase *self);

self :

the AppstreamDatabase instance

Returns :

TRUE if the application database exists

appstream_database_get_all_applications ()

GPtrArray *         appstream_database_get_all_applications
                                                        (AppstreamDatabase *self);

self :

the AppstreamDatabase instance

appstream_database_find_applications ()

GPtrArray *         appstream_database_find_applications
                                                        (AppstreamDatabase *self,
                                                         AppstreamSearchQuery *query);

self :

the AppstreamDatabase instance

query :

 

appstream_database_find_applications_by_str ()

GPtrArray *         appstream_database_find_applications_by_str
                                                        (AppstreamDatabase *self,
                                                         const gchar *search_str,
                                                         const gchar *categories_str);

self :

the AppstreamDatabase instance

search_str :

 

categories_str :

 

appstream_database_refresh ()

void                appstream_database_refresh          (AppstreamDatabase *self,
                                                         GAsyncReadyCallback _callback_,
                                                         gpointer _user_data_);

Make a DBus call telling the system to refresh the internal database of available applications. AppStream uses the metadata provided by your distributor to regenerate the database.

See also: appstream_database_refresh_finish()

self :

the AppstreamDatabase instance

_callback_ :

callback to call when the request is satisfied. [scope async]

_user_data_ :

the data to pass to _callback_ function. [closure]

appstream_database_refresh_finish ()

gboolean            appstream_database_refresh_finish   (AppstreamDatabase *self,
                                                         GAsyncResult *_res_,
                                                         GError **error);

Make a DBus call telling the system to refresh the internal database of available applications. AppStream uses the metadata provided by your distributor to regenerate the database.

See also: appstream_database_refresh()

self :

the AppstreamDatabase instance

_res_ :

a GAsyncResult

error :

location to store the error occuring, or NULL to ignore. [error-domains GIOErrorEnum]

Returns :

TRUE if refresh was successfull.

appstream_database_new ()

AppstreamDatabase * appstream_database_new              (void);

appstream_database_get_database_path ()

const gchar *       appstream_database_get_database_path
                                                        (AppstreamDatabase *self);

Get and return the current value of the "database-path" property.

self :

the AppstreamDatabase instance to query

Returns :

the value of the "database-path" property

struct AppstreamDatabase

struct AppstreamDatabase {
	GObject parent_instance;
	AppstreamDatabasePrivate * priv;
};

Class to access the AppStream application database


struct AppstreamDatabaseClass

struct AppstreamDatabaseClass {
	GObjectClass parent_class;
	gboolean (*open) (AppstreamDatabase* self);
};

The class structure for APPSTREAM_TYPE_DATABASE. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure

open ()

virtual method called by appstream_database_open()
./AppStream-0.4.0/docs/html/api/html/annotation-glossary.html0000664000175000017500000000565512227021732024277 0ustar matthiasmatthias Annotation Glossary

Annotation Glossary

S

scope async

The callback is valid until first called.

I

in

Parameter for input. Default is transfer none.

C

closure

This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.

E

error-domains

Typed errors. Similar to throws in Java.

T

transfer none

Don't free data after the code is done.

./AppStream-0.4.0/docs/html/api/html/appstream-AppstreamDistroDetails.html0000664000175000017500000004221112227021732026672 0ustar matthiasmatthias AppstreamDistroDetails

AppstreamDistroDetails

AppstreamDistroDetails — Get details about the AppStream settings for the current distribution

Description

Details

APPSTREAM_TYPE_DISTRO_DETAILS

#define APPSTREAM_TYPE_DISTRO_DETAILS (appstream_distro_details_get_type ())

The type for AppstreamDistroDetails.


appstream_distro_details_config_distro_get_str ()

gchar *             appstream_distro_details_config_distro_get_str
                                                        (AppstreamDistroDetails *self,
                                                         const gchar *key);

self :

the AppstreamDistroDetails instance

key :

 

appstream_distro_details_config_distro_get_bool ()

gboolean            appstream_distro_details_config_distro_get_bool
                                                        (AppstreamDistroDetails *self,
                                                         const gchar *key);

self :

the AppstreamDistroDetails instance

key :

 

appstream_distro_details_new ()

AppstreamDistroDetails * appstream_distro_details_new   (void);

appstream_distro_details_get_distro_id ()

const gchar *       appstream_distro_details_get_distro_id
                                                        (AppstreamDistroDetails *self);

Get and return the current value of the "distro-id" property.

self :

the AppstreamDistroDetails instance to query

Returns :

the value of the "distro-id" property

appstream_distro_details_get_distro_name ()

const gchar *       appstream_distro_details_get_distro_name
                                                        (AppstreamDistroDetails *self);

Get and return the current value of the "distro-name" property.

self :

the AppstreamDistroDetails instance to query

Returns :

the value of the "distro-name" property

appstream_distro_details_get_distro_version ()

const gchar *       appstream_distro_details_get_distro_version
                                                        (AppstreamDistroDetails *self);

Get and return the current value of the "distro-version" property.

self :

the AppstreamDistroDetails instance to query

Returns :

the value of the "distro-version" property

appstream_distro_details_get_icon_repository_path ()

const gchar *       appstream_distro_details_get_icon_repository_path
                                                        (AppstreamDistroDetails *self);

Get and return the current value of the "icon-repository-path" property.

self :

the AppstreamDistroDetails instance to query

Returns :

the value of the "icon-repository-path" property

struct AppstreamDistroDetails

struct AppstreamDistroDetails {
	GObject parent_instance;
	AppstreamDistroDetailsPrivate * priv;
};

Get details about the AppStream settings for the current distribution


struct AppstreamDistroDetailsClass

struct AppstreamDistroDetailsClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_DISTRO_DETAILS. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure
./AppStream-0.4.0/docs/html/api/html/style.css0000644000175000017500000001210012227021732021225 0ustar matthiasmatthias.synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; border: solid 1px #d3d7cf; padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ background: #e6f3ff; border: solid 1px #729fcf; padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } @media screen { sup a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 3.2em; padding-bottom: 20em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; z-index: 10; } .navigation a, .navigation a:visited { /* tango:scarlet red 3 */ color: #a40000; } .navigation a:hover { /* tango:scarlet red 1 */ color: #ef2929; } td.shortcuts { /* tango:scarlet red 1 */ color: #ef2929; font-size: 80%; white-space: nowrap; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } .navigation .title { font-size: 200%; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } hr { /* tango:aluminium 3 */ color: #babdb6; background: #babdb6; border: none 0px; height: 1px; clear: both; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .warning { /* tango:orange 0/1 */ background: #ffeed9; border-color: #ffb04f; } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; border-color: #abf562; } .note, .warning { padding: 0.5em; border-width: 1px; border-style: solid; } .note h3, .warning h3 { margin-top: 0.0em } .note p, .warning p { margin-bottom: 0.0em } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-size: 80%; font-weight: normal; } /* code listings */ .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ .listing_code .programlisting .function { color: #000000; font-weight: bold; } .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .normal { color: #000000; } .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ .listing_code .programlisting .type { color: #000000; } .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; } .listing_lines pre, .listing_code pre { margin: 0px; } ./AppStream-0.4.0/docs/html/api/html/appstream.devhelp20000664000175000017500000003663612227021732023030 0ustar matthiasmatthias ./AppStream-0.4.0/docs/html/api/html/manpages.html0000664000175000017500000000332112227021732022043 0ustar matthiasmatthias AppStream Manual Pages

AppStream Manual Pages

appstream-index — Manage the AppStream application index
./AppStream-0.4.0/docs/html/api/html/home.png0000644000175000017500000000110212227021732021011 0ustar matthiasmatthiasPNG  IHDRשPLTE  $$$(((,,,000888<<<@@@OOOPPP[[[___```lll{{{?*tRNS  $(,4@GKSghkotwa7IDATxڭ[WP̳ij2LK<`[4jg8b袋y/5F~QЈJT*N/ q]1zJ+zD=94bv«1;ÈP= ]j*P got ׻>&*B@ $n?q nAC&ޙc~a|ZL\!CVF@ڐ~IENDB`./AppStream-0.4.0/docs/html/api/html/index.html0000664000175000017500000000571612227021732021371 0ustar matthiasmatthias LibAppStream Reference Manual

for libappstream 0.x. The latest version of this documentation can be found on-line at http://www.freedesktop.org/software/appstream/apidoc/.


appstream API Reference
AppstreamDistroDetails — Get details about the AppStream settings for the current distribution
AppstreamAppInfo — Class to store data describing an application in AppStream
AppstreamCategory — Description of an XDG Menu category
AppstreamSearchQuery — Class describing a query on the AppStream application database
AppstreamScreenshotService — Get access to a package screenshot service which matches the current distribution.
API Index
Index of deprecated API
Annotation Glossary
AppStream Manual Pages
appstream-index — Manage the AppStream application index
./AppStream-0.4.0/docs/html/api/html/right.png0000644000175000017500000000057412227021732021212 0ustar matthiasmatthiasPNG  IHDRש{PLTE ###+++@@@WtRNS (48@GX[ytIDATxڅ0 PS@XZ -%e I<`eA٬Z9(1'n/"U!Dhw$4QX$ AlXR^>8Mzmt>k7 O$ٞ=mVQ.JO9  IENDB`./AppStream-0.4.0/docs/html/api/html/up.png0000644000175000017500000000044312227021732020514 0ustar matthiasmatthiasPNG  IHDRw=IDATx!0Ȋ $11Dppʉɉɉ D%@ o%/!eg*/iY`]1@Y ʃ ( &b(&b'"r>b/#r>b/#~@ɇ<)V!@)ExR>~4 tE RkdX~4%2 M {ۙ~:[d9t) IENDB`./AppStream-0.4.0/docs/html/api/html/appstream-AppstreamAppInfo.html0000664000175000017500000014507412227021732025467 0ustar matthiasmatthias AppstreamAppInfo

AppstreamAppInfo

AppstreamAppInfo — Class to store data describing an application in AppStream

Synopsis

#define             APPSTREAM_TYPE_APP_INFO
gboolean            appstream_app_info_is_valid         (AppstreamAppInfo *self);
gchar *             appstream_app_info_to_string        (AppstreamAppInfo *self);
void                appstream_app_info_set_categories_from_str
                                                        (AppstreamAppInfo *self,
                                                         const gchar *categories_str);
AppstreamAppInfo *  appstream_app_info_new              (void);
const gchar *       appstream_app_info_get_pkgname      (AppstreamAppInfo *self);
void                appstream_app_info_set_pkgname      (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_name         (AppstreamAppInfo *self);
void                appstream_app_info_set_name         (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_name_original
                                                        (AppstreamAppInfo *self);
void                appstream_app_info_set_name_original
                                                        (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_summary      (AppstreamAppInfo *self);
void                appstream_app_info_set_summary      (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_description  (AppstreamAppInfo *self);
void                appstream_app_info_set_description  (AppstreamAppInfo *self,
                                                         const gchar *value);
gchar **            appstream_app_info_get_keywords     (AppstreamAppInfo *self,
                                                         int *result_length1);
void                appstream_app_info_set_keywords     (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);
const gchar *       appstream_app_info_get_url          (AppstreamAppInfo *self);
void                appstream_app_info_set_url          (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_desktop_file (AppstreamAppInfo *self);
void                appstream_app_info_set_desktop_file (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_icon         (AppstreamAppInfo *self);
void                appstream_app_info_set_icon         (AppstreamAppInfo *self,
                                                         const gchar *value);
gchar **            appstream_app_info_get_categories   (AppstreamAppInfo *self,
                                                         int *result_length1);
void                appstream_app_info_set_categories   (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);
gchar **            appstream_app_info_get_mimetypes    (AppstreamAppInfo *self,
                                                         int *result_length1);
void                appstream_app_info_set_mimetypes    (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);
struct              AppstreamAppInfo;
struct              AppstreamAppInfoClass;

Description

Details

APPSTREAM_TYPE_APP_INFO

#define APPSTREAM_TYPE_APP_INFO (appstream_app_info_get_type ())

The type for AppstreamAppInfo.


appstream_app_info_is_valid ()

gboolean            appstream_app_info_is_valid         (AppstreamAppInfo *self);

Check if the essential properties of this AppInfo instance are populated with useful data.

self :

the AppstreamAppInfo instance

appstream_app_info_to_string ()

gchar *             appstream_app_info_to_string        (AppstreamAppInfo *self);

self :

the AppstreamAppInfo instance

appstream_app_info_set_categories_from_str ()

void                appstream_app_info_set_categories_from_str
                                                        (AppstreamAppInfo *self,
                                                         const gchar *categories_str);

Set the categories list from a string

self :

the AppstreamAppInfo instance

categories_str :

 . Comma-separated list of category-names. [in]

appstream_app_info_new ()

AppstreamAppInfo *  appstream_app_info_new              (void);

appstream_app_info_get_pkgname ()

const gchar *       appstream_app_info_get_pkgname      (AppstreamAppInfo *self);

Get and return the current value of the "pkgname" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "pkgname" property

appstream_app_info_set_pkgname ()

void                appstream_app_info_set_pkgname      (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "pkgname" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "pkgname" property

appstream_app_info_get_name ()

const gchar *       appstream_app_info_get_name         (AppstreamAppInfo *self);

Get and return the current value of the "name" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "name" property

appstream_app_info_set_name ()

void                appstream_app_info_set_name         (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "name" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "name" property

appstream_app_info_get_name_original ()

const gchar *       appstream_app_info_get_name_original
                                                        (AppstreamAppInfo *self);

Get and return the current value of the "name-original" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "name-original" property

appstream_app_info_set_name_original ()

void                appstream_app_info_set_name_original
                                                        (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "name-original" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "name-original" property

appstream_app_info_get_summary ()

const gchar *       appstream_app_info_get_summary      (AppstreamAppInfo *self);

Get and return the current value of the "summary" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "summary" property

appstream_app_info_set_summary ()

void                appstream_app_info_set_summary      (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "summary" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "summary" property

appstream_app_info_get_description ()

const gchar *       appstream_app_info_get_description  (AppstreamAppInfo *self);

Get and return the current value of the "description" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "description" property

appstream_app_info_set_description ()

void                appstream_app_info_set_description  (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "description" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "description" property

appstream_app_info_get_keywords ()

gchar **            appstream_app_info_get_keywords     (AppstreamAppInfo *self,
                                                         int *result_length1);

Get and return the current value of the "keywords" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "keywords" property

appstream_app_info_set_keywords ()

void                appstream_app_info_set_keywords     (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "keywords" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "keywords" property

appstream_app_info_get_url ()

const gchar *       appstream_app_info_get_url          (AppstreamAppInfo *self);

Get and return the current value of the "url" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "url" property

appstream_app_info_set_url ()

void                appstream_app_info_set_url          (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "url" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "url" property

appstream_app_info_get_desktop_file ()

const gchar *       appstream_app_info_get_desktop_file (AppstreamAppInfo *self);

Get and return the current value of the "desktop-file" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "desktop-file" property

appstream_app_info_set_desktop_file ()

void                appstream_app_info_set_desktop_file (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "desktop-file" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "desktop-file" property

appstream_app_info_get_icon ()

const gchar *       appstream_app_info_get_icon         (AppstreamAppInfo *self);

Get and return the current value of the "icon" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "icon" property

appstream_app_info_set_icon ()

void                appstream_app_info_set_icon         (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "icon" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "icon" property

appstream_app_info_get_categories ()

gchar **            appstream_app_info_get_categories   (AppstreamAppInfo *self,
                                                         int *result_length1);

Get and return the current value of the "categories" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "categories" property

appstream_app_info_set_categories ()

void                appstream_app_info_set_categories   (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "categories" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "categories" property

appstream_app_info_get_mimetypes ()

gchar **            appstream_app_info_get_mimetypes    (AppstreamAppInfo *self,
                                                         int *result_length1);

Get and return the current value of the "mimetypes" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "mimetypes" property

appstream_app_info_set_mimetypes ()

void                appstream_app_info_set_mimetypes    (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "mimetypes" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "mimetypes" property

struct AppstreamAppInfo

struct AppstreamAppInfo {
	GObject parent_instance;
	AppstreamAppInfoPrivate * priv;
};

Class to store data describing an application in AppStream


struct AppstreamAppInfoClass

struct AppstreamAppInfoClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_APP_INFO. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure
./AppStream-0.4.0/docs/html/api/html/ch01.html0000664000175000017500000000523112227021732021005 0ustar matthiasmatthias appstream API Reference

appstream API Reference

AppstreamDistroDetails — Get details about the AppStream settings for the current distribution
AppstreamAppInfo — Class to store data describing an application in AppStream
AppstreamCategory — Description of an XDG Menu category
AppstreamSearchQuery — Class describing a query on the AppStream application database
AppstreamScreenshotService — Get access to a package screenshot service which matches the current distribution.
./AppStream-0.4.0/docs/html/api/html/left.png0000644000175000017500000000056512227021732021027 0ustar matthiasmatthiasPNG  IHDRש~PLTE(((;;;@@@v:tRNS $04 AppstreamScreenshotService

AppstreamScreenshotService

AppstreamScreenshotService — Get access to a package screenshot service which matches the current distribution.

Description

Details

APPSTREAM_TYPE_SCREENSHOT_SERVICE

#define APPSTREAM_TYPE_SCREENSHOT_SERVICE (appstream_screenshot_service_get_type ())

The type for AppstreamScreenshotService.


appstream_screenshot_service_get_thumbnail_url ()

gchar *             appstream_screenshot_service_get_thumbnail_url
                                                        (AppstreamScreenshotService *self,
                                                         const gchar *package_name);

Get the url of a screenshot thumbnail for the package.

self :

the AppstreamScreenshotService instance

package_name :

 . The name of the package which the screenshot belongs to. [in]

appstream_screenshot_service_get_screenshot_url ()

gchar *             appstream_screenshot_service_get_screenshot_url
                                                        (AppstreamScreenshotService *self,
                                                         const gchar *package_name);

Get the url of a screenshot for the package.

self :

the AppstreamScreenshotService instance

package_name :

 . The name of the package which the screenshot belongs to. [in]

appstream_screenshot_service_new ()

AppstreamScreenshotService * appstream_screenshot_service_new
                                                        (void);

appstream_screenshot_service_get_base_url ()

const gchar *       appstream_screenshot_service_get_base_url
                                                        (AppstreamScreenshotService *self);

Get and return the current value of the "base-url" property.

self :

the AppstreamScreenshotService instance to query

Returns :

the value of the "base-url" property

struct AppstreamScreenshotService

struct AppstreamScreenshotService {
	GObject parent_instance;
	AppstreamScreenshotServicePrivate * priv;
};

Get access to a package screenshot service which matches the current distribution.


struct AppstreamScreenshotServiceClass

struct AppstreamScreenshotServiceClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_SCREENSHOT_SERVICE. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure
./AppStream-0.4.0/docs/html/api/html/deprecated-api-index.html0000664000175000017500000000307512227021732024232 0ustar matthiasmatthias Index of deprecated API

Index of deprecated API

./AppStream-0.4.0/docs/html/api/html/appstream-settings.html0000664000175000017500000000536012227021732024107 0ustar matthiasmatthias settings

settings

settings

Synopsis

#define             APPSTREAM_ICON_PATH

Description

Details

APPSTREAM_ICON_PATH

#define APPSTREAM_ICON_PATH APPSTREAM_APPSTREAM_BASE_PATH "/icons"

The path where software icons (of not-installed software) are located.

./AppStream-0.4.0/docs/html/api/html/api-index-full.html0000664000175000017500000010174212227021732023074 0ustar matthiasmatthias API Index

API Index

A

AppstreamAppInfo, struct in AppstreamAppInfo
AppstreamAppInfoClass, struct in AppstreamAppInfo
appstream_app_info_get_categories, function in AppstreamAppInfo
appstream_app_info_get_description, function in AppstreamAppInfo
appstream_app_info_get_desktop_file, function in AppstreamAppInfo
appstream_app_info_get_icon, function in AppstreamAppInfo
appstream_app_info_get_keywords, function in AppstreamAppInfo
appstream_app_info_get_mimetypes, function in AppstreamAppInfo
appstream_app_info_get_name, function in AppstreamAppInfo
appstream_app_info_get_name_original, function in AppstreamAppInfo
appstream_app_info_get_pkgname, function in AppstreamAppInfo
appstream_app_info_get_summary, function in AppstreamAppInfo
appstream_app_info_get_url, function in AppstreamAppInfo
appstream_app_info_is_valid, function in AppstreamAppInfo
appstream_app_info_new, function in AppstreamAppInfo
appstream_app_info_set_categories, function in AppstreamAppInfo
appstream_app_info_set_categories_from_str, function in AppstreamAppInfo
appstream_app_info_set_description, function in AppstreamAppInfo
appstream_app_info_set_desktop_file, function in AppstreamAppInfo
appstream_app_info_set_icon, function in AppstreamAppInfo
appstream_app_info_set_keywords, function in AppstreamAppInfo
appstream_app_info_set_mimetypes, function in AppstreamAppInfo
appstream_app_info_set_name, function in AppstreamAppInfo
appstream_app_info_set_name_original, function in AppstreamAppInfo
appstream_app_info_set_pkgname, function in AppstreamAppInfo
appstream_app_info_set_summary, function in AppstreamAppInfo
appstream_app_info_set_url, function in AppstreamAppInfo
appstream_app_info_to_string, function in AppstreamAppInfo

C

AppstreamCategory, struct in AppstreamCategory
AppstreamCategoryClass, struct in AppstreamCategory
appstream_category_add_subcategory, function in AppstreamCategory
appstream_category_get_directory, function in AppstreamCategory
appstream_category_get_excluded, function in AppstreamCategory
appstream_category_get_icon, function in AppstreamCategory
appstream_category_get_included, function in AppstreamCategory
appstream_category_get_level, function in AppstreamCategory
appstream_category_get_name, function in AppstreamCategory
appstream_category_get_subcategories, function in AppstreamCategory
appstream_category_get_summary, function in AppstreamCategory
appstream_category_has_subcategory, function in AppstreamCategory
appstream_category_new, function in AppstreamCategory
appstream_category_remove_subcategory, function in AppstreamCategory

D

AppstreamDatabase, struct in AppstreamSearchQuery
AppstreamDatabaseClass, struct in AppstreamSearchQuery
appstream_database_db_exists, function in AppstreamSearchQuery
appstream_database_find_applications, function in AppstreamSearchQuery
appstream_database_find_applications_by_str, function in AppstreamSearchQuery
appstream_database_get_all_applications, function in AppstreamSearchQuery
appstream_database_get_database_path, function in AppstreamSearchQuery
appstream_database_new, function in AppstreamSearchQuery
appstream_database_open, function in AppstreamSearchQuery
appstream_database_refresh, function in AppstreamSearchQuery
appstream_database_refresh_finish, function in AppstreamSearchQuery
AppstreamDistroDetails, struct in AppstreamDistroDetails
AppstreamDistroDetailsClass, struct in AppstreamDistroDetails
appstream_distro_details_config_distro_get_bool, function in AppstreamDistroDetails
appstream_distro_details_config_distro_get_str, function in AppstreamDistroDetails
appstream_distro_details_get_distro_id, function in AppstreamDistroDetails
appstream_distro_details_get_distro_name, function in AppstreamDistroDetails
appstream_distro_details_get_distro_version, function in AppstreamDistroDetails
appstream_distro_details_get_icon_repository_path, function in AppstreamDistroDetails
appstream_distro_details_new, function in AppstreamDistroDetails

G

appstream_get_system_categories, function in AppstreamCategory

M

AppstreamMenuParser, struct in AppstreamCategory
AppstreamMenuParserClass, struct in AppstreamCategory
appstream_menu_parser_get_update_category_data, function in AppstreamCategory
appstream_menu_parser_new, function in AppstreamCategory
appstream_menu_parser_new_from_file, function in AppstreamCategory
appstream_menu_parser_parse, function in AppstreamCategory
appstream_menu_parser_ref, function in AppstreamCategory
appstream_menu_parser_set_update_category_data, function in AppstreamCategory
appstream_menu_parser_unref, function in AppstreamCategory

P

appstream_param_spec_menu_parser, function in AppstreamCategory

S

AppstreamScreenshotService, struct in AppstreamScreenshotService
AppstreamScreenshotServiceClass, struct in AppstreamScreenshotService
appstream_screenshot_service_get_base_url, function in AppstreamScreenshotService
appstream_screenshot_service_get_screenshot_url, function in AppstreamScreenshotService
appstream_screenshot_service_get_thumbnail_url, function in AppstreamScreenshotService
appstream_screenshot_service_new, function in AppstreamScreenshotService
AppstreamSearchQuery, struct in AppstreamSearchQuery
AppstreamSearchQueryClass, struct in AppstreamSearchQuery
appstream_search_query_get_categories, function in AppstreamSearchQuery
appstream_search_query_get_search_all_categories, function in AppstreamSearchQuery
appstream_search_query_get_search_term, function in AppstreamSearchQuery
appstream_search_query_new, function in AppstreamSearchQuery
appstream_search_query_set_categories, function in AppstreamSearchQuery
appstream_search_query_set_categories_from_string, function in AppstreamSearchQuery
appstream_search_query_set_search_all_categories, function in AppstreamSearchQuery
appstream_search_query_set_search_term, function in AppstreamSearchQuery

T

APPSTREAM_TYPE_APP_INFO, macro in AppstreamAppInfo
APPSTREAM_TYPE_CATEGORY, macro in AppstreamCategory
APPSTREAM_TYPE_DATABASE, macro in AppstreamSearchQuery
APPSTREAM_TYPE_DISTRO_DETAILS, macro in AppstreamDistroDetails
APPSTREAM_TYPE_MENU_PARSER, macro in AppstreamCategory
APPSTREAM_TYPE_SCREENSHOT_SERVICE, macro in AppstreamScreenshotService
APPSTREAM_TYPE_SEARCH_QUERY, macro in AppstreamSearchQuery

V

appstream_value_get_menu_parser, function in AppstreamCategory
appstream_value_set_menu_parser, function in AppstreamCategory
appstream_value_take_menu_parser, function in AppstreamCategory
./AppStream-0.4.0/docs/html/api/html/re06.html0000664000175000017500000001000612227021732021022 0ustar matthiasmatthias appstream-index

appstream-index

appstream-index — Manage the AppStream application index

Synopsis

appstream-index [COMMAND]

Description

This manual page documents briefly the appstream-index command.

appstream-index manages the AppStream index. The AppStream application index contains a list of all available applications for your distribution, matched with their native package names. It is generated using either AppStream-XML, Debian-DEP-11 or Ubuntu AppInstall data, which is provided by your distributor. The database is managed using a small DBus-activated daemon. This tool connects to the daemon and allows sending simple commands.

For more information about the AppStream project and the other components which are part of it, take a look at the AppStream pages at Freedesktop.org.

Options

--version

Display version number of appstream-index

--refresh

Recreate the AppStream database (useful if application data has changed).

You can use the --nowait option in combination with this parameter to not wait for the database update process to finish.

-s, --search TERM

Search the AppStream application database for a given search term.

See Also

pkcon (1).

AUTHOR

This manual page was written by Matthias Klumpp .

./AppStream-0.4.0/docs/html/api/html/re05.html0000664000175000017500000000736312227021732021035 0ustar matthiasmatthias appstream-index

appstream-index

appstream-index — Manage the AppStream application index

Synopsis

appstream-index [COMMAND]

Description

This manual page documents briefly the appstream-index command.

appstream-index manages the AppStream index. The AppStream application index contains a list of all available applications for your distribution, matched to their native package names. It is generated using either AppStream-XML, Debian-DEP-11 or Ubuntu AppInstall data, which is provided by your distributor. The database is managed using a small DBus-activated daemon. This tool connects to the daemon and allows sending simple commands.

Options

--version

Display version number of appstream-index

--refresh

Recreate the AppStream database (useful if application data has changed).

You can use the --nowait option in combination with this parameter to not wait for the database update process to finish.

-s, --search TERM

Search the AppStream application database for a given search term.

See Also

pkcon (1).

AUTHOR

This manual page was written by Matthias Klumpp .

./AppStream-0.4.0/docs/html/api/html/appstream-AppstreamCategory.html0000664000175000017500000014356412227021732025712 0ustar matthiasmatthias AppstreamCategory

AppstreamCategory

AppstreamCategory — Description of an XDG Menu category

Synopsis

#define             APPSTREAM_TYPE_CATEGORY
void                appstream_category_add_subcategory  (AppstreamCategory *self,
                                                         AppstreamCategory *cat);
void                appstream_category_remove_subcategory
                                                        (AppstreamCategory *self,
                                                         AppstreamCategory *cat);
gboolean            appstream_category_has_subcategory  (AppstreamCategory *self);
AppstreamCategory * appstream_category_new              (void);
const gchar *       appstream_category_get_name         (AppstreamCategory *self);
const gchar *       appstream_category_get_summary      (AppstreamCategory *self);
const gchar *       appstream_category_get_icon         (AppstreamCategory *self);
const gchar *       appstream_category_get_directory    (AppstreamCategory *self);
GList *             appstream_category_get_included     (AppstreamCategory *self);
GList *             appstream_category_get_excluded     (AppstreamCategory *self);
gint                appstream_category_get_level        (AppstreamCategory *self);
GList *             appstream_category_get_subcategories
                                                        (AppstreamCategory *self);
struct              AppstreamCategory;
struct              AppstreamCategoryClass;
#define             APPSTREAM_TYPE_MENU_PARSER
GList *             appstream_menu_parser_parse         (AppstreamMenuParser *self);
AppstreamMenuParser * appstream_menu_parser_new         (void);
AppstreamMenuParser * appstream_menu_parser_new_from_file
                                                        (const gchar *menu_file);
gboolean            appstream_menu_parser_get_update_category_data
                                                        (AppstreamMenuParser *self);
void                appstream_menu_parser_set_update_category_data
                                                        (AppstreamMenuParser *self,
                                                         gboolean value);
struct              AppstreamMenuParser;
gpointer            appstream_menu_parser_ref           (gpointer instance);
void                appstream_menu_parser_unref         (gpointer instance);
GParamSpec *        appstream_param_spec_menu_parser    (const gchar *name,
                                                         const gchar *nick,
                                                         const gchar *blurb,
                                                         GType object_type,
                                                         GParamFlags flags);
void                appstream_value_set_menu_parser     (GValue *value,
                                                         gpointer v_object);
gpointer            appstream_value_get_menu_parser     (const GValue *value);
void                appstream_value_take_menu_parser    (GValue *value,
                                                         gpointer v_object);
struct              AppstreamMenuParserClass;
GList *             appstream_get_system_categories     (void);

Description

Details

APPSTREAM_TYPE_CATEGORY

#define APPSTREAM_TYPE_CATEGORY (appstream_category_get_type ())

The type for AppstreamCategory.


appstream_category_add_subcategory ()

void                appstream_category_add_subcategory  (AppstreamCategory *self,
                                                         AppstreamCategory *cat);

self :

the AppstreamCategory instance

cat :

 

appstream_category_remove_subcategory ()

void                appstream_category_remove_subcategory
                                                        (AppstreamCategory *self,
                                                         AppstreamCategory *cat);

self :

the AppstreamCategory instance

cat :

 

appstream_category_has_subcategory ()

gboolean            appstream_category_has_subcategory  (AppstreamCategory *self);

self :

the AppstreamCategory instance

Returns :

TRUE if this category has any subcategory

appstream_category_new ()

AppstreamCategory * appstream_category_new              (void);

appstream_category_get_name ()

const gchar *       appstream_category_get_name         (AppstreamCategory *self);

Get and return the current value of the "name" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "name" property

appstream_category_get_summary ()

const gchar *       appstream_category_get_summary      (AppstreamCategory *self);

Get and return the current value of the "summary" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "summary" property

appstream_category_get_icon ()

const gchar *       appstream_category_get_icon         (AppstreamCategory *self);

Get and return the current value of the "icon" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "icon" property

appstream_category_get_directory ()

const gchar *       appstream_category_get_directory    (AppstreamCategory *self);

Get and return the current value of the "directory" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "directory" property

appstream_category_get_included ()

GList *             appstream_category_get_included     (AppstreamCategory *self);

Get and return the current value of the "included" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "included" property

appstream_category_get_excluded ()

GList *             appstream_category_get_excluded     (AppstreamCategory *self);

Get and return the current value of the "excluded" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "excluded" property

appstream_category_get_level ()

gint                appstream_category_get_level        (AppstreamCategory *self);

Get and return the current value of the "level" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "level" property

appstream_category_get_subcategories ()

GList *             appstream_category_get_subcategories
                                                        (AppstreamCategory *self);

Get and return the current value of the "subcategories" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "subcategories" property

struct AppstreamCategory

struct AppstreamCategory {
	GObject parent_instance;
	AppstreamCategoryPrivate * priv;
};

Description of an XDG Menu category


struct AppstreamCategoryClass

struct AppstreamCategoryClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_CATEGORY. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure

APPSTREAM_TYPE_MENU_PARSER

#define APPSTREAM_TYPE_MENU_PARSER (appstream_menu_parser_get_type ())

The type for AppstreamMenuParser.


appstream_menu_parser_parse ()

GList *             appstream_menu_parser_parse         (AppstreamMenuParser *self);

Parse the menu file

self :

the AppstreamMenuParser instance

Returns :

GList of Category objects found in the Menu, or NULL if there was an error

appstream_menu_parser_new ()

AppstreamMenuParser * appstream_menu_parser_new         (void);

Create a new MenuParser for the generic AppStream categories list


appstream_menu_parser_new_from_file ()

AppstreamMenuParser * appstream_menu_parser_new_from_file
                                                        (const gchar *menu_file);

Create a new MenuParser for an arbitrary menu file

menu_file :

 

appstream_menu_parser_get_update_category_data ()

gboolean            appstream_menu_parser_get_update_category_data
                                                        (AppstreamMenuParser *self);

Get and return the current value of the "update-category-data" property.

self :

the AppstreamMenuParser instance to query

Returns :

the value of the "update-category-data" property

appstream_menu_parser_set_update_category_data ()

void                appstream_menu_parser_set_update_category_data
                                                        (AppstreamMenuParser *self,
                                                         gboolean value);

Set the value of the "update-category-data" property to value.

self :

the AppstreamMenuParser instance to modify

value :

the new value of the "update-category-data" property

struct AppstreamMenuParser

struct AppstreamMenuParser {
	GTypeInstance parent_instance;
	volatile int ref_count;
	AppstreamMenuParserPrivate * priv;
};

Parser for XDG Menu files


appstream_menu_parser_ref ()

gpointer            appstream_menu_parser_ref           (gpointer instance);

Increases the reference count of object.

instance :

a AppstreamMenuParser.

Returns :

the same object

appstream_menu_parser_unref ()

void                appstream_menu_parser_unref         (gpointer instance);

Decreases the reference count of object. When its reference count drops to 0, the object is finalized (i.e. its memory is freed).

instance :

a AppstreamMenuParser.

appstream_param_spec_menu_parser ()

GParamSpec *        appstream_param_spec_menu_parser    (const gchar *name,
                                                         const gchar *nick,
                                                         const gchar *blurb,
                                                         GType object_type,
                                                         GParamFlags flags);

Creates a new GParamSpecBoxed instance specifying a APPSTREAM_TYPE_MENU_PARSER derived property.

See g_param_spec_internal() for details on property names.

name :

canonical name of the property specified

nick :

nick name for the property specified

blurb :

description of the property specified

object_type :

APPSTREAM_TYPE_MENU_PARSER derived type of this property

flags :

flags for the property specified

appstream_value_set_menu_parser ()

void                appstream_value_set_menu_parser     (GValue *value,
                                                         gpointer v_object);

Set the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to v_object.

appstream_value_set_menu_parser() increases the reference count of v_object (the GValue holds a reference to v_object). If you do not wish to increase the reference count of the object (i.e. you wish to pass your current reference to the GValue because you no longer need it), use appstream_value_take_menu_parser() instead.

It is important that your GValue holds a reference to v_object (either its own, or one it has taken) to ensure that the object won't be destroyed while the GValue still exists).

value :

a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type

v_object :

object value to be set

appstream_value_get_menu_parser ()

gpointer            appstream_value_get_menu_parser     (const GValue *value);

Get the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue.

value :

a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type

Returns :

object contents of value

appstream_value_take_menu_parser ()

void                appstream_value_take_menu_parser    (GValue *value,
                                                         gpointer v_object);

Sets the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to v_object and takes over the ownership of the callers reference to v_object; the caller doesn't have to unref it any more (i.e. the reference count of the object is not increased).

If you want the GValue to hold its own reference to v_object, use appstream_value_set_menu_parser() instead.

value :

a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type

v_object :

object value to be set

struct AppstreamMenuParserClass

struct AppstreamMenuParserClass {
	GTypeClass parent_class;
	void (*finalize) (AppstreamMenuParser *self);
};

The class structure for APPSTREAM_TYPE_MENU_PARSER. All the fields in this structure are private and should never be accessed directly.

GTypeClass parent_class;

the parent class structure

finalize ()


appstream_get_system_categories ()

GList *             appstream_get_system_categories     (void);

Get a GList of the default AppStream categories

self :

the (null) instance
./AppStream-0.4.0/docs/html/chap-AppStream-Services.html0000664000175000017500000001237612227021732023133 0ustar matthiasmatthias Chapter 3. Services

Product SiteDocumentation Site

Chapter 3. Services

AppStream provides some services to fetch additional data from.

3.1. Screenshot service

3.1.1. Introduction

To make give users an impression on how the application they are about to install will look like, screenshots are provided to software-centers via a web service.

3.1.2. Webservice

Distributors provide a service like debshots. They can either use the original debshots service, which does not only work for Debian but also any other distribution, or they can set up their own service which mimicks the debshots API.
In future, it is planned to allow applications to specify own screenshots via their AppData files.
In order to make a new screenshot service known to software-centers, distributors need to place information about their webservice in the config file of libappstream, whis is usually located at /etc/appstream.conf.

3.1.3. Client API

Software center applications can access the screenshot service either directly, or via the libappstream API. Simple example:
#include <glib.h>
#include <appstream.h>

gchar* get_screenshot_url (const gchar* pkgname, gboolean thumbnail) {
    AppstreamScreenshotService *scrservice;
    gchar *url;

    scrservice = appstream_screenshot_service_new ();
    if (thumbnail)
        /* return URL of a screenshot thumbnail */
        url = appstream_screenshot_service_get_thumbnail_url (scrservice, pkgname);
    else
        /* return URL of the full screenshot */
        url = appstream_screenshot_service_get_screenshot_url (scrservice, pkgname);
    g_object_unref (scrservice);

    return url;
}
./AppStream-0.4.0/docs/api/0000755000175000017500000000000012230763267015463 5ustar matthiasmatthias./AppStream-0.4.0/docs/api/appstream.types0000664000175000017500000000033312153423267020543 0ustar matthiasmatthiasappstream_app_info_get_type appstream_category_get_type appstream_database_get_type appstream_distro_details_get_type appstream_menu_parser_get_type appstream_screenshot_service_get_type appstream_search_query_get_type ./AppStream-0.4.0/docs/api/html.stamp0000664000175000017500000000001212230763261017462 0ustar matthiasmatthiastimestamp ./AppStream-0.4.0/docs/api/appstream-scan.c0000664000175000017500000010271112230763256020547 0ustar matthiasmatthias#include #include #include #include #include extern GType appstream_app_info_get_type (void); extern GType appstream_category_get_type (void); extern GType appstream_database_get_type (void); extern GType appstream_distro_details_get_type (void); extern GType appstream_menu_parser_get_type (void); extern GType appstream_screenshot_service_get_type (void); extern GType appstream_search_query_get_type (void); #ifdef GTK_IS_WIDGET_CLASS #include #endif GType object_types[8]; static GType * get_object_types (void) { gpointer g_object_class; gint i = 0; object_types[i++] = appstream_app_info_get_type (); object_types[i++] = appstream_category_get_type (); object_types[i++] = appstream_database_get_type (); object_types[i++] = appstream_distro_details_get_type (); object_types[i++] = appstream_menu_parser_get_type (); object_types[i++] = appstream_screenshot_service_get_type (); object_types[i++] = appstream_search_query_get_type (); object_types[i] = 0; /* reference the GObjectClass to initialize the param spec pool * potentially needed by interfaces. See http://bugs.gnome.org/571820 */ g_object_class = g_type_class_ref (G_TYPE_OBJECT); /* Need to make sure all the types are loaded in and initialize * their signals and properties. */ for (i=0; object_types[i]; i++) { if (G_TYPE_IS_CLASSED (object_types[i])) g_type_class_ref (object_types[i]); if (G_TYPE_IS_INTERFACE (object_types[i])) g_type_default_interface_ref (object_types[i]); } g_type_class_unref (g_object_class); return object_types; } /* * This uses GObject type functions to output signal prototypes and the object * hierarchy. */ /* The output files */ const gchar *signals_filename = "/home/matthias/Development/AppStream/docs/api/appstream.signals.new"; const gchar *hierarchy_filename = "/home/matthias/Development/AppStream/docs/api/appstream.hierarchy.new"; const gchar *interfaces_filename = "/home/matthias/Development/AppStream/docs/api/appstream.interfaces.new"; const gchar *prerequisites_filename = "/home/matthias/Development/AppStream/docs/api/appstream.prerequisites.new"; const gchar *args_filename = "/home/matthias/Development/AppStream/docs/api/appstream.args.new"; static void output_signals (void); static void output_object_signals (FILE *fp, GType object_type); static void output_object_signal (FILE *fp, const gchar *object_class_name, guint signal_id); static const gchar * get_type_name (GType type, gboolean * is_pointer); static void output_object_hierarchy (void); static void output_hierarchy (FILE *fp, GType type, guint level); static void output_object_interfaces (void); static void output_interfaces (FILE *fp, GType type); static void output_interface_prerequisites (void); static void output_prerequisites (FILE *fp, GType type); static void output_args (void); static void output_object_args (FILE *fp, GType object_type); int main (int argc, char *argv[]) { #if !GLIB_CHECK_VERSION(2,35,0) g_type_init(); #endif g_type_class_ref(G_TYPE_OBJECT); get_object_types (); output_signals (); output_object_hierarchy (); output_object_interfaces (); output_interface_prerequisites (); output_args (); return 0; } static void output_signals (void) { FILE *fp; gint i; fp = fopen (signals_filename, "w"); if (fp == NULL) { g_warning ("Couldn't open output file: %s : %s", signals_filename, g_strerror(errno)); return; } for (i = 0; object_types[i]; i++) output_object_signals (fp, object_types[i]); fclose (fp); } static gint compare_signals (const void *a, const void *b) { const guint *signal_a = a; const guint *signal_b = b; return strcmp (g_signal_name (*signal_a), g_signal_name (*signal_b)); } /* This outputs all the signals of one object. */ static void output_object_signals (FILE *fp, GType object_type) { const gchar *object_class_name; guint *signals, n_signals; guint sig; if (G_TYPE_IS_INSTANTIATABLE (object_type) || G_TYPE_IS_INTERFACE (object_type)) { object_class_name = g_type_name (object_type); signals = g_signal_list_ids (object_type, &n_signals); qsort (signals, n_signals, sizeof (guint), compare_signals); for (sig = 0; sig < n_signals; sig++) { output_object_signal (fp, object_class_name, signals[sig]); } g_free (signals); } } /* This outputs one signal. */ static void output_object_signal (FILE *fp, const gchar *object_name, guint signal_id) { GSignalQuery query_info; const gchar *type_name, *ret_type, *object_arg, *arg_name; gchar *pos, *object_arg_lower; gboolean is_pointer; gchar buffer[1024]; guint i, param; gint param_num, widget_num, event_num, callback_num; gint *arg_num; gchar signal_name[128]; gchar flags[16]; /* g_print ("Object: %s Signal: %u\n", object_name, signal_id);*/ param_num = 1; widget_num = event_num = callback_num = 0; g_signal_query (signal_id, &query_info); /* Output the signal object type and the argument name. We assume the type is a pointer - I think that is OK. We remove "Gtk" or "Gnome" and convert to lower case for the argument name. */ pos = buffer; sprintf (pos, "%s ", object_name); pos += strlen (pos); /* Try to come up with a sensible variable name for the first arg * It chops off 2 know prefixes :/ and makes the name lowercase * It should replace lowercase -> uppercase with '_' * GFileMonitor -> file_monitor * GIOExtensionPoint -> extension_point * GtkTreeView -> tree_view * if 2nd char is upper case too * search for first lower case and go back one char * else * search for next upper case */ if (!strncmp (object_name, "Gtk", 3)) object_arg = object_name + 3; else if (!strncmp (object_name, "Gnome", 5)) object_arg = object_name + 5; else object_arg = object_name; object_arg_lower = g_ascii_strdown (object_arg, -1); sprintf (pos, "*%s\n", object_arg_lower); pos += strlen (pos); if (!strncmp (object_arg_lower, "widget", 6)) widget_num = 2; g_free(object_arg_lower); /* Convert signal name to use underscores rather than dashes '-'. */ strncpy (signal_name, query_info.signal_name, 127); signal_name[127] = '\0'; for (i = 0; signal_name[i]; i++) { if (signal_name[i] == '-') signal_name[i] = '_'; } /* Output the signal parameters. */ for (param = 0; param < query_info.n_params; param++) { type_name = get_type_name (query_info.param_types[param] & ~G_SIGNAL_TYPE_STATIC_SCOPE, &is_pointer); /* Most arguments to the callback are called "arg1", "arg2", etc. GtkWidgets are called "widget", "widget2", ... GtkCallbacks are called "callback", "callback2", ... */ if (!strcmp (type_name, "GtkWidget")) { arg_name = "widget"; arg_num = &widget_num; } else if (!strcmp (type_name, "GtkCallback") || !strcmp (type_name, "GtkCCallback")) { arg_name = "callback"; arg_num = &callback_num; } else { arg_name = "arg"; arg_num = ¶m_num; } sprintf (pos, "%s ", type_name); pos += strlen (pos); if (!arg_num || *arg_num == 0) sprintf (pos, "%s%s\n", is_pointer ? "*" : " ", arg_name); else sprintf (pos, "%s%s%i\n", is_pointer ? "*" : " ", arg_name, *arg_num); pos += strlen (pos); if (arg_num) { if (*arg_num == 0) *arg_num = 2; else *arg_num += 1; } } pos = flags; /* We use one-character flags for simplicity. */ if (query_info.signal_flags & G_SIGNAL_RUN_FIRST) *pos++ = 'f'; if (query_info.signal_flags & G_SIGNAL_RUN_LAST) *pos++ = 'l'; if (query_info.signal_flags & G_SIGNAL_RUN_CLEANUP) *pos++ = 'c'; if (query_info.signal_flags & G_SIGNAL_NO_RECURSE) *pos++ = 'r'; if (query_info.signal_flags & G_SIGNAL_DETAILED) *pos++ = 'd'; if (query_info.signal_flags & G_SIGNAL_ACTION) *pos++ = 'a'; if (query_info.signal_flags & G_SIGNAL_NO_HOOKS) *pos++ = 'h'; *pos = 0; /* Output the return type and function name. */ ret_type = get_type_name (query_info.return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE, &is_pointer); fprintf (fp, "\n%s::%s\n%s%s\n%s\n%s\n\n", object_name, query_info.signal_name, ret_type, is_pointer ? "*" : "", flags, buffer); } /* Returns the type name to use for a signal argument or return value, given the GtkType from the signal info. It also sets is_pointer to TRUE if the argument needs a '*' since it is a pointer. */ static const gchar * get_type_name (GType type, gboolean * is_pointer) { const gchar *type_name; *is_pointer = FALSE; type_name = g_type_name (type); switch (type) { case G_TYPE_NONE: case G_TYPE_CHAR: case G_TYPE_UCHAR: case G_TYPE_BOOLEAN: case G_TYPE_INT: case G_TYPE_UINT: case G_TYPE_LONG: case G_TYPE_ULONG: case G_TYPE_FLOAT: case G_TYPE_DOUBLE: case G_TYPE_POINTER: /* These all have normal C type names so they are OK. */ return type_name; case G_TYPE_STRING: /* A GtkString is really a gchar*. */ *is_pointer = TRUE; return "gchar"; case G_TYPE_ENUM: case G_TYPE_FLAGS: /* We use a gint for both of these. Hopefully a subtype with a decent name will be registered and used instead, as GTK+ does itself. */ return "gint"; case G_TYPE_BOXED: /* The boxed type shouldn't be used itself, only subtypes. Though we return 'gpointer' just in case. */ return "gpointer"; case G_TYPE_PARAM: /* A GParam is really a GParamSpec*. */ *is_pointer = TRUE; return "GParamSpec"; #if GLIB_CHECK_VERSION (2, 25, 9) case G_TYPE_VARIANT: *is_pointer = TRUE; return "GVariant"; #endif default: break; } /* For all GObject subclasses we can use the class name with a "*", e.g. 'GtkWidget *'. */ if (g_type_is_a (type, G_TYPE_OBJECT)) *is_pointer = TRUE; /* Also catch non GObject root types */ if (G_TYPE_IS_CLASSED (type)) *is_pointer = TRUE; /* All boxed subtypes will be pointers as well. */ /* Exception: GStrv */ if (g_type_is_a (type, G_TYPE_BOXED) && !g_type_is_a (type, G_TYPE_STRV)) *is_pointer = TRUE; /* All pointer subtypes will be pointers as well. */ if (g_type_is_a (type, G_TYPE_POINTER)) *is_pointer = TRUE; /* But enums are not */ if (g_type_is_a (type, G_TYPE_ENUM) || g_type_is_a (type, G_TYPE_FLAGS)) *is_pointer = FALSE; return type_name; } /* This outputs the hierarchy of all objects which have been initialized, i.e. by calling their XXX_get_type() initialization function. */ static void output_object_hierarchy (void) { FILE *fp; gint i,j; GType root, type; GType root_types[8] = { G_TYPE_INVALID, }; fp = fopen (hierarchy_filename, "w"); if (fp == NULL) { g_warning ("Couldn't open output file: %s : %s", hierarchy_filename, g_strerror(errno)); return; } output_hierarchy (fp, G_TYPE_OBJECT, 0); output_hierarchy (fp, G_TYPE_INTERFACE, 0); for (i=0; object_types[i]; i++) { root = object_types[i]; while ((type = g_type_parent (root))) { root = type; } if ((root != G_TYPE_OBJECT) && (root != G_TYPE_INTERFACE)) { for (j=0; root_types[j]; j++) { if (root == root_types[j]) { root = G_TYPE_INVALID; break; } } if(root) { root_types[j] = root; output_hierarchy (fp, root, 0); } } } fclose (fp); } /* This is called recursively to output the hierarchy of a object. */ static void output_hierarchy (FILE *fp, GType type, guint level) { guint i; GType *children; guint n_children; if (!type) return; for (i = 0; i < level; i++) fprintf (fp, " "); fprintf (fp, "%s\n", g_type_name (type)); children = g_type_children (type, &n_children); for (i=0; i < n_children; i++) output_hierarchy (fp, children[i], level + 1); g_free (children); } static void output_object_interfaces (void) { guint i; FILE *fp; fp = fopen (interfaces_filename, "w"); if (fp == NULL) { g_warning ("Couldn't open output file: %s : %s", interfaces_filename, g_strerror(errno)); return; } output_interfaces (fp, G_TYPE_OBJECT); for (i = 0; object_types[i]; i++) { if (!g_type_parent (object_types[i]) && (object_types[i] != G_TYPE_OBJECT) && G_TYPE_IS_INSTANTIATABLE (object_types[i])) { output_interfaces (fp, object_types[i]); } } fclose (fp); } static void output_interfaces (FILE *fp, GType type) { guint i; GType *children, *interfaces; guint n_children, n_interfaces; if (!type) return; interfaces = g_type_interfaces (type, &n_interfaces); if (n_interfaces > 0) { fprintf (fp, "%s", g_type_name (type)); for (i=0; i < n_interfaces; i++) fprintf (fp, " %s", g_type_name (interfaces[i])); fprintf (fp, "\n"); } g_free (interfaces); children = g_type_children (type, &n_children); for (i=0; i < n_children; i++) output_interfaces (fp, children[i]); g_free (children); } static void output_interface_prerequisites (void) { FILE *fp; fp = fopen (prerequisites_filename, "w"); if (fp == NULL) { g_warning ("Couldn't open output file: %s : %s", prerequisites_filename, g_strerror(errno)); return; } output_prerequisites (fp, G_TYPE_INTERFACE); fclose (fp); } static void output_prerequisites (FILE *fp, GType type) { #if GLIB_CHECK_VERSION(2,1,0) guint i; GType *children, *prerequisites; guint n_children, n_prerequisites; if (!type) return; prerequisites = g_type_interface_prerequisites (type, &n_prerequisites); if (n_prerequisites > 0) { fprintf (fp, "%s", g_type_name (type)); for (i=0; i < n_prerequisites; i++) fprintf (fp, " %s", g_type_name (prerequisites[i])); fprintf (fp, "\n"); } g_free (prerequisites); children = g_type_children (type, &n_children); for (i=0; i < n_children; i++) output_prerequisites (fp, children[i]); g_free (children); #endif } static void output_args (void) { FILE *fp; gint i; fp = fopen (args_filename, "w"); if (fp == NULL) { g_warning ("Couldn't open output file: %s : %s", args_filename, g_strerror(errno)); return; } for (i = 0; object_types[i]; i++) { output_object_args (fp, object_types[i]); } fclose (fp); } static gint compare_param_specs (const void *a, const void *b) { GParamSpec *spec_a = *(GParamSpec **)a; GParamSpec *spec_b = *(GParamSpec **)b; return strcmp (g_param_spec_get_name (spec_a), g_param_spec_get_name (spec_b)); } /* Its common to have unsigned properties restricted * to the signed range. Therefore we make this look * a bit nicer by spelling out the max constants. */ /* Don't use "==" with floats, it might trigger a gcc warning. */ #define GTKDOC_COMPARE_FLOAT(x, y) (x <= y && x >= y) static gchar* describe_double_constant (gdouble value) { gchar *desc; if (GTKDOC_COMPARE_FLOAT (value, G_MAXDOUBLE)) desc = g_strdup ("G_MAXDOUBLE"); else if (GTKDOC_COMPARE_FLOAT (value, G_MINDOUBLE)) desc = g_strdup ("G_MINDOUBLE"); else if (GTKDOC_COMPARE_FLOAT (value, -G_MAXDOUBLE)) desc = g_strdup ("-G_MAXDOUBLE"); else if (GTKDOC_COMPARE_FLOAT (value, G_MAXFLOAT)) desc = g_strdup ("G_MAXFLOAT"); else if (GTKDOC_COMPARE_FLOAT (value, G_MINFLOAT)) desc = g_strdup ("G_MINFLOAT"); else if (GTKDOC_COMPARE_FLOAT (value, -G_MAXFLOAT)) desc = g_strdup ("-G_MAXFLOAT"); else{ /* make sure floats are output with a decimal dot irrespective of * current locale. Use formatd since we want human-readable numbers * and do not need the exact same bit representation when deserialising */ desc = g_malloc0 (G_ASCII_DTOSTR_BUF_SIZE); g_ascii_formatd (desc, G_ASCII_DTOSTR_BUF_SIZE, "%g", value); } return desc; } static gchar* describe_signed_constant (gsize size, gint64 value) { gchar *desc = NULL; switch (size) { case 2: if (sizeof (int) == 2) { if (value == G_MAXINT) desc = g_strdup ("G_MAXINT"); else if (value == G_MININT) desc = g_strdup ("G_MININT"); } break; case 4: if (sizeof (int) == 4) { if (value == G_MAXINT) desc = g_strdup ("G_MAXINT"); else if (value == G_MININT) desc = g_strdup ("G_MININT"); } if (value == G_MAXLONG) desc = g_strdup ("G_MAXLONG"); else if (value == G_MINLONG) desc = g_strdup ("G_MINLONG"); break; case 8: if (value == G_MAXINT64) desc = g_strdup ("G_MAXINT64"); else if (value == G_MININT64) desc = g_strdup ("G_MININT64"); break; default: break; } if (!desc) desc = g_strdup_printf ("%" G_GINT64_FORMAT, value); return desc; } static gchar* describe_unsigned_constant (gsize size, guint64 value) { gchar *desc = NULL; switch (size) { case 2: if (sizeof (int) == 2) { if (value == (guint64)G_MAXINT) desc = g_strdup ("G_MAXINT"); else if (value == G_MAXUINT) desc = g_strdup ("G_MAXUINT"); } break; case 4: if (sizeof (int) == 4) { if (value == (guint64)G_MAXINT) desc = g_strdup ("G_MAXINT"); else if (value == G_MAXUINT) desc = g_strdup ("G_MAXUINT"); } if (value == (guint64)G_MAXLONG) desc = g_strdup ("G_MAXLONG"); else if (value == G_MAXULONG) desc = g_strdup ("G_MAXULONG"); break; case 8: if (value == G_MAXINT64) desc = g_strdup ("G_MAXINT64"); else if (value == G_MAXUINT64) desc = g_strdup ("G_MAXUINT64"); break; default: break; } if (!desc) desc = g_strdup_printf ("%" G_GUINT64_FORMAT, value); return desc; } static gchar* describe_type (GParamSpec *spec) { gchar *desc; gchar *lower; gchar *upper; if (G_IS_PARAM_SPEC_CHAR (spec)) { GParamSpecChar *pspec = G_PARAM_SPEC_CHAR (spec); lower = describe_signed_constant (sizeof(gchar), pspec->minimum); upper = describe_signed_constant (sizeof(gchar), pspec->maximum); if (pspec->minimum == G_MININT8 && pspec->maximum == G_MAXINT8) desc = g_strdup (""); else if (pspec->minimum == G_MININT8) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXINT8) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_UCHAR (spec)) { GParamSpecUChar *pspec = G_PARAM_SPEC_UCHAR (spec); lower = describe_unsigned_constant (sizeof(guchar), pspec->minimum); upper = describe_unsigned_constant (sizeof(guchar), pspec->maximum); if (pspec->minimum == 0 && pspec->maximum == G_MAXUINT8) desc = g_strdup (""); else if (pspec->minimum == 0) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXUINT8) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_INT (spec)) { GParamSpecInt *pspec = G_PARAM_SPEC_INT (spec); lower = describe_signed_constant (sizeof(gint), pspec->minimum); upper = describe_signed_constant (sizeof(gint), pspec->maximum); if (pspec->minimum == G_MININT && pspec->maximum == G_MAXINT) desc = g_strdup (""); else if (pspec->minimum == G_MININT) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXINT) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_UINT (spec)) { GParamSpecUInt *pspec = G_PARAM_SPEC_UINT (spec); lower = describe_unsigned_constant (sizeof(guint), pspec->minimum); upper = describe_unsigned_constant (sizeof(guint), pspec->maximum); if (pspec->minimum == 0 && pspec->maximum == G_MAXUINT) desc = g_strdup (""); else if (pspec->minimum == 0) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXUINT) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_LONG (spec)) { GParamSpecLong *pspec = G_PARAM_SPEC_LONG (spec); lower = describe_signed_constant (sizeof(glong), pspec->minimum); upper = describe_signed_constant (sizeof(glong), pspec->maximum); if (pspec->minimum == G_MINLONG && pspec->maximum == G_MAXLONG) desc = g_strdup (""); else if (pspec->minimum == G_MINLONG) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXLONG) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_ULONG (spec)) { GParamSpecULong *pspec = G_PARAM_SPEC_ULONG (spec); lower = describe_unsigned_constant (sizeof(gulong), pspec->minimum); upper = describe_unsigned_constant (sizeof(gulong), pspec->maximum); if (pspec->minimum == 0 && pspec->maximum == G_MAXULONG) desc = g_strdup (""); else if (pspec->minimum == 0) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXULONG) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_INT64 (spec)) { GParamSpecInt64 *pspec = G_PARAM_SPEC_INT64 (spec); lower = describe_signed_constant (sizeof(gint64), pspec->minimum); upper = describe_signed_constant (sizeof(gint64), pspec->maximum); if (pspec->minimum == G_MININT64 && pspec->maximum == G_MAXINT64) desc = g_strdup (""); else if (pspec->minimum == G_MININT64) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXINT64) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_UINT64 (spec)) { GParamSpecUInt64 *pspec = G_PARAM_SPEC_UINT64 (spec); lower = describe_unsigned_constant (sizeof(guint64), pspec->minimum); upper = describe_unsigned_constant (sizeof(guint64), pspec->maximum); if (pspec->minimum == 0 && pspec->maximum == G_MAXUINT64) desc = g_strdup (""); else if (pspec->minimum == 0) desc = g_strdup_printf ("<= %s", upper); else if (pspec->maximum == G_MAXUINT64) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_FLOAT (spec)) { GParamSpecFloat *pspec = G_PARAM_SPEC_FLOAT (spec); lower = describe_double_constant (pspec->minimum); upper = describe_double_constant (pspec->maximum); if (GTKDOC_COMPARE_FLOAT (pspec->minimum, -G_MAXFLOAT)) { if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXFLOAT)) desc = g_strdup (""); else desc = g_strdup_printf ("<= %s", upper); } else if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXFLOAT)) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } else if (G_IS_PARAM_SPEC_DOUBLE (spec)) { GParamSpecDouble *pspec = G_PARAM_SPEC_DOUBLE (spec); lower = describe_double_constant (pspec->minimum); upper = describe_double_constant (pspec->maximum); if (GTKDOC_COMPARE_FLOAT (pspec->minimum, -G_MAXDOUBLE)) { if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXDOUBLE)) desc = g_strdup (""); else desc = g_strdup_printf ("<= %s", upper); } else if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXDOUBLE)) desc = g_strdup_printf (">= %s", lower); else desc = g_strdup_printf ("[%s,%s]", lower, upper); g_free (lower); g_free (upper); } #if GLIB_CHECK_VERSION (2, 12, 0) else if (G_IS_PARAM_SPEC_GTYPE (spec)) { GParamSpecGType *pspec = G_PARAM_SPEC_GTYPE (spec); gboolean is_pointer; desc = g_strdup (get_type_name (pspec->is_a_type, &is_pointer)); } #endif #if GLIB_CHECK_VERSION (2, 25, 9) else if (G_IS_PARAM_SPEC_VARIANT (spec)) { GParamSpecVariant *pspec = G_PARAM_SPEC_VARIANT (spec); gchar *variant_type; variant_type = g_variant_type_dup_string (pspec->type); desc = g_strdup_printf ("GVariant<%s>", variant_type); g_free (variant_type); } #endif else { desc = g_strdup (""); } return desc; } static gchar* describe_default (GParamSpec *spec) { gchar *desc; if (G_IS_PARAM_SPEC_CHAR (spec)) { GParamSpecChar *pspec = G_PARAM_SPEC_CHAR (spec); desc = g_strdup_printf ("%d", pspec->default_value); } else if (G_IS_PARAM_SPEC_UCHAR (spec)) { GParamSpecUChar *pspec = G_PARAM_SPEC_UCHAR (spec); desc = g_strdup_printf ("%u", pspec->default_value); } else if (G_IS_PARAM_SPEC_BOOLEAN (spec)) { GParamSpecBoolean *pspec = G_PARAM_SPEC_BOOLEAN (spec); desc = g_strdup_printf ("%s", pspec->default_value ? "TRUE" : "FALSE"); } else if (G_IS_PARAM_SPEC_INT (spec)) { GParamSpecInt *pspec = G_PARAM_SPEC_INT (spec); desc = g_strdup_printf ("%d", pspec->default_value); } else if (G_IS_PARAM_SPEC_UINT (spec)) { GParamSpecUInt *pspec = G_PARAM_SPEC_UINT (spec); desc = g_strdup_printf ("%u", pspec->default_value); } else if (G_IS_PARAM_SPEC_LONG (spec)) { GParamSpecLong *pspec = G_PARAM_SPEC_LONG (spec); desc = g_strdup_printf ("%ld", pspec->default_value); } else if (G_IS_PARAM_SPEC_LONG (spec)) { GParamSpecULong *pspec = G_PARAM_SPEC_ULONG (spec); desc = g_strdup_printf ("%lu", pspec->default_value); } else if (G_IS_PARAM_SPEC_INT64 (spec)) { GParamSpecInt64 *pspec = G_PARAM_SPEC_INT64 (spec); desc = g_strdup_printf ("%" G_GINT64_FORMAT, pspec->default_value); } else if (G_IS_PARAM_SPEC_UINT64 (spec)) { GParamSpecUInt64 *pspec = G_PARAM_SPEC_UINT64 (spec); desc = g_strdup_printf ("%" G_GUINT64_FORMAT, pspec->default_value); } else if (G_IS_PARAM_SPEC_UNICHAR (spec)) { GParamSpecUnichar *pspec = G_PARAM_SPEC_UNICHAR (spec); if (g_unichar_isprint (pspec->default_value)) desc = g_strdup_printf ("'%c'", pspec->default_value); else desc = g_strdup_printf ("%u", pspec->default_value); } else if (G_IS_PARAM_SPEC_ENUM (spec)) { GParamSpecEnum *pspec = G_PARAM_SPEC_ENUM (spec); GEnumValue *value = g_enum_get_value (pspec->enum_class, pspec->default_value); if (value) desc = g_strdup_printf ("%s", value->value_name); else desc = g_strdup_printf ("%d", pspec->default_value); } else if (G_IS_PARAM_SPEC_FLAGS (spec)) { GParamSpecFlags *pspec = G_PARAM_SPEC_FLAGS (spec); guint default_value; GString *acc; default_value = pspec->default_value; acc = g_string_new (""); while (default_value) { GFlagsValue *value = g_flags_get_first_value (pspec->flags_class, default_value); if (!value) break; if (acc->len > 0) g_string_append (acc, "|"); g_string_append (acc, value->value_name); default_value &= ~value->value; } if (default_value == 0) desc = g_string_free (acc, FALSE); else { desc = g_strdup_printf ("%d", pspec->default_value); g_string_free (acc, TRUE); } } else if (G_IS_PARAM_SPEC_FLOAT (spec)) { GParamSpecFloat *pspec = G_PARAM_SPEC_FLOAT (spec); /* make sure floats are output with a decimal dot irrespective of * current locale. Use formatd since we want human-readable numbers * and do not need the exact same bit representation when deserialising */ desc = g_malloc0 (G_ASCII_DTOSTR_BUF_SIZE); g_ascii_formatd (desc, G_ASCII_DTOSTR_BUF_SIZE, "%g", pspec->default_value); } else if (G_IS_PARAM_SPEC_DOUBLE (spec)) { GParamSpecDouble *pspec = G_PARAM_SPEC_DOUBLE (spec); /* make sure floats are output with a decimal dot irrespective of * current locale. Use formatd since we want human-readable numbers * and do not need the exact same bit representation when deserialising */ desc = g_malloc0 (G_ASCII_DTOSTR_BUF_SIZE); g_ascii_formatd (desc, G_ASCII_DTOSTR_BUF_SIZE, "%g", pspec->default_value); } else if (G_IS_PARAM_SPEC_STRING (spec)) { GParamSpecString *pspec = G_PARAM_SPEC_STRING (spec); if (pspec->default_value) { gchar *esc = g_strescape (pspec->default_value, NULL); desc = g_strdup_printf ("\"%s\"", esc); g_free (esc); } else desc = g_strdup_printf ("NULL"); } #if GLIB_CHECK_VERSION (2, 25, 9) else if (G_IS_PARAM_SPEC_VARIANT (spec)) { GParamSpecVariant *pspec = G_PARAM_SPEC_VARIANT (spec); if (pspec->default_value) desc = g_variant_print (pspec->default_value, TRUE); else desc = g_strdup ("NULL"); } #endif else { desc = g_strdup (""); } return desc; } static void output_object_args (FILE *fp, GType object_type) { gpointer class; const gchar *object_class_name; guint arg; gchar flags[16], *pos; GParamSpec **properties; guint n_properties; gboolean child_prop; gboolean style_prop; gboolean is_pointer; const gchar *type_name; gchar *type_desc; gchar *default_value; if (G_TYPE_IS_OBJECT (object_type)) { class = g_type_class_peek (object_type); if (!class) return; properties = g_object_class_list_properties (class, &n_properties); } #if GLIB_MAJOR_VERSION > 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 3) else if (G_TYPE_IS_INTERFACE (object_type)) { class = g_type_default_interface_ref (object_type); if (!class) return; properties = g_object_interface_list_properties (class, &n_properties); } #endif else return; object_class_name = g_type_name (object_type); child_prop = FALSE; style_prop = FALSE; while (TRUE) { qsort (properties, n_properties, sizeof (GParamSpec *), compare_param_specs); for (arg = 0; arg < n_properties; arg++) { GParamSpec *spec = properties[arg]; const gchar *nick, *blurb, *dot; if (spec->owner_type != object_type) continue; pos = flags; /* We use one-character flags for simplicity. */ if (child_prop && !style_prop) *pos++ = 'c'; if (style_prop) *pos++ = 's'; if (spec->flags & G_PARAM_READABLE) *pos++ = 'r'; if (spec->flags & G_PARAM_WRITABLE) *pos++ = 'w'; if (spec->flags & G_PARAM_CONSTRUCT) *pos++ = 'x'; if (spec->flags & G_PARAM_CONSTRUCT_ONLY) *pos++ = 'X'; *pos = 0; nick = g_param_spec_get_nick (spec); blurb = g_param_spec_get_blurb (spec); dot = ""; if (blurb) { int str_len = strlen (blurb); if (str_len > 0 && blurb[str_len - 1] != '.') dot = "."; } type_desc = describe_type (spec); default_value = describe_default (spec); type_name = get_type_name (spec->value_type, &is_pointer); fprintf (fp, "\n%s::%s\n%s%s\n%s\n%s\n%s\n%s%s\n%s\n\n\n", object_class_name, g_param_spec_get_name (spec), type_name, is_pointer ? "*" : "", type_desc, flags, nick ? nick : "(null)", blurb ? blurb : "(null)", dot, default_value); g_free (type_desc); g_free (default_value); } g_free (properties); #ifdef GTK_IS_CONTAINER_CLASS if (!child_prop && GTK_IS_CONTAINER_CLASS (class)) { properties = gtk_container_class_list_child_properties (class, &n_properties); child_prop = TRUE; continue; } #endif #ifdef GTK_IS_CELL_AREA_CLASS if (!child_prop && GTK_IS_CELL_AREA_CLASS (class)) { properties = gtk_cell_area_class_list_cell_properties (class, &n_properties); child_prop = TRUE; continue; } #endif #ifdef GTK_IS_WIDGET_CLASS #if GTK_CHECK_VERSION(2,1,0) if (!style_prop && GTK_IS_WIDGET_CLASS (class)) { properties = gtk_widget_class_list_style_properties (GTK_WIDGET_CLASS (class), &n_properties); style_prop = TRUE; continue; } #endif #endif break; } } ./AppStream-0.4.0/docs/api/ccomments/0000755000175000017500000000000012153423267017450 5ustar matthiasmatthias./AppStream-0.4.0/docs/api/ccomments/database.c0000664000175000017500000001432612230763255021370 0ustar matthiasmatthias/** * SECTION:database * @short_description: Class describing a query on the AppStream application database */ /** * APPSTREAM_TYPE_SEARCH_QUERY: * * The type for AppstreamSearchQuery. */ /** * appstream_search_query_get_search_all_categories: * @self: the AppstreamSearchQuery instance * * Returns: TRUE if we search in all categories */ /** * appstream_search_query_set_search_all_categories: * @self: the AppstreamSearchQuery instance * * Shortcut to set that we should search in all categories */ /** * appstream_search_query_set_categories_from_string: * @self: the AppstreamSearchQuery instance * @categories_str: (in):  . Comma-separated list of category-names * * Set the categories list from a string */ /** * appstream_search_query_new: * @term:   */ /** * AppstreamSearchQuery:search-term: */ /** * appstream_search_query_get_search_term: * @self: the AppstreamSearchQuery instance to query * * Get and return the current value of the "search-term" property. * * * * Returns: the value of the "search-term" property */ /** * appstream_search_query_set_search_term: * @self: the AppstreamSearchQuery instance to modify * @value: the new value of the "search-term" property * * Set the value of the "search-term" property to @value. * * */ /** * AppstreamSearchQuery:categories: * @result_length1: return location for the length of the property's value * @value_length1: length of the property's new value */ /** * appstream_search_query_get_categories: * @self: the AppstreamSearchQuery instance to query * * Get and return the current value of the "categories" property. * * * * Returns: the value of the "categories" property */ /** * appstream_search_query_set_categories: * @self: the AppstreamSearchQuery instance to modify * @value: the new value of the "categories" property * * Set the value of the "categories" property to @value. * * */ /** * AppstreamSearchQuery: * * Class describing a query on the AppStream application database */ /** * AppstreamSearchQueryClass: * @parent_class: the parent class structure * * The class structure for APPSTREAM_TYPE_SEARCH_QUERY. All the fields in this structure are private and should never be accessed directly. */ /** * APPSTREAM_TYPE_DATABASE: * * The type for AppstreamDatabase. */ /** * appstream_database_open: * @self: the AppstreamDatabase instance */ /** * appstream_database_db_exists: * @self: the AppstreamDatabase instance * * Returns: TRUE if the application database exists */ /** * appstream_database_get_all_applications: * @self: the AppstreamDatabase instance */ /** * appstream_database_find_applications: * @self: the AppstreamDatabase instance * @query:   */ /** * appstream_database_find_applications_by_str: * @self: the AppstreamDatabase instance * @search_str:   * @categories_str:   */ /** * appstream_database_new: */ /** * AppstreamDatabase:database-path: */ /** * appstream_database_get_database_path: * @self: the AppstreamDatabase instance to query * * Get and return the current value of the "database-path" property. * * * * Returns: the value of the "database-path" property */ /** * appstream_database_set_database_path: * @self: the AppstreamDatabase instance to modify * @value: the new value of the "database-path" property * * Set the value of the "database-path" property to @value. * * */ /** * AppstreamDatabase::error-code: * @database: the AppstreamDatabase instance that received the signal * @error_details:   */ /** * AppstreamDatabase::finished: * @database: the AppstreamDatabase instance that received the signal * @action_name:   * @success:   */ /** * AppstreamDatabase::authorized: * @database: the AppstreamDatabase instance that received the signal * @success:   */ /** * AppstreamDatabase: * * Class to access the AppStream application database */ /** * AppstreamDatabaseClass: * @open: virtual method called by appstream_database_open() * @parent_class: the parent class structure * * The class structure for APPSTREAM_TYPE_DATABASE. All the fields in this structure are private and should never be accessed directly. */ ./AppStream-0.4.0/docs/api/ccomments/screenshot-service.c0000664000175000017500000000361512230763255023436 0ustar matthiasmatthias/** * SECTION:screenshot-service * @short_description: Get access to a package screenshot service which matches the current distribution. */ /** * APPSTREAM_TYPE_SCREENSHOT_SERVICE: * * The type for AppstreamScreenshotService. */ /** * appstream_screenshot_service_get_thumbnail_url: * @self: the AppstreamScreenshotService instance * @package_name: (in):  . The name of the package which the screenshot belongs to * * Get the url of a screenshot thumbnail for the package. */ /** * appstream_screenshot_service_get_screenshot_url: * @self: the AppstreamScreenshotService instance * @package_name: (in):  . The name of the package which the screenshot belongs to * * Get the url of a screenshot for the package. */ /** * appstream_screenshot_service_new: */ /** * AppstreamScreenshotService:base-url: */ /** * appstream_screenshot_service_get_base_url: * @self: the AppstreamScreenshotService instance to query * * Get and return the current value of the "base-url" property. * * * * Returns: the value of the "base-url" property */ /** * AppstreamScreenshotService: * * Get access to a package screenshot service which matches the current distribution. */ /** * AppstreamScreenshotServiceClass: * @parent_class: the parent class structure * * The class structure for APPSTREAM_TYPE_SCREENSHOT_SERVICE. All the fields in this structure are private and should never be accessed directly. */ ./AppStream-0.4.0/docs/api/ccomments/settings.c0000664000175000017500000000564112230763255021464 0ustar matthiasmatthias/** * SECTION:settings * @short_description: Get details about the AppStream settings for the current distribution */ /** * APPSTREAM_TYPE_DISTRO_DETAILS: * * The type for AppstreamDistroDetails. */ /** * appstream_distro_details_get_icon_repository_paths: * @self: the AppstreamDistroDetails instance * * Returns list of icon-paths for software-center applications to use. Icons of software (even if it is not installed) are stored in these locations. * * Returns: (array length=result_length1): A NULL-terminated array of paths. */ /** * appstream_distro_details_config_distro_get_str: * @self: the AppstreamDistroDetails instance * @key:   */ /** * appstream_distro_details_config_distro_get_bool: * @self: the AppstreamDistroDetails instance * @key:   */ /** * appstream_distro_details_new: */ /** * AppstreamDistroDetails:distro-id: */ /** * appstream_distro_details_get_distro_id: * @self: the AppstreamDistroDetails instance to query * * Get and return the current value of the "distro-id" property. * * * * Returns: the value of the "distro-id" property */ /** * AppstreamDistroDetails:distro-name: */ /** * appstream_distro_details_get_distro_name: * @self: the AppstreamDistroDetails instance to query * * Get and return the current value of the "distro-name" property. * * * * Returns: the value of the "distro-name" property */ /** * AppstreamDistroDetails:distro-version: */ /** * appstream_distro_details_get_distro_version: * @self: the AppstreamDistroDetails instance to query * * Get and return the current value of the "distro-version" property. * * * * Returns: the value of the "distro-version" property */ /** * AppstreamDistroDetails: * * Get details about the AppStream settings for the current distribution */ /** * AppstreamDistroDetailsClass: * @parent_class: the parent class structure * * The class structure for APPSTREAM_TYPE_DISTRO_DETAILS. All the fields in this structure are private and should never be accessed directly. */ ./AppStream-0.4.0/docs/api/ccomments/app-info.c0000664000175000017500000002667012230763255021342 0ustar matthiasmatthias/** * SECTION:app-info * @short_description: Class to store data describing an application in AppStream */ /** * APPSTREAM_TYPE_APP_INFO: * * The type for AppstreamAppInfo. */ /** * appstream_app_info_is_valid: * @self: the AppstreamAppInfo instance * * Check if the essential properties of this AppInfo instance are populated with useful data. */ /** * appstream_app_info_to_string: * @self: the AppstreamAppInfo instance */ /** * appstream_app_info_set_categories_from_str: * @self: the AppstreamAppInfo instance * @categories_str: (in):  . Comma-separated list of category-names * * Set the categories list from a string */ /** * appstream_app_info_new: */ /** * AppstreamAppInfo:pkgname: */ /** * appstream_app_info_get_pkgname: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "pkgname" property. * * * * Returns: the value of the "pkgname" property */ /** * appstream_app_info_set_pkgname: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "pkgname" property * * Set the value of the "pkgname" property to @value. * * */ /** * AppstreamAppInfo:desktop-file: */ /** * appstream_app_info_get_desktop_file: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "desktop-file" property. * * * * Returns: the value of the "desktop-file" property */ /** * appstream_app_info_set_desktop_file: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "desktop-file" property * * Set the value of the "desktop-file" property to @value. * * */ /** * AppstreamAppInfo:name: */ /** * appstream_app_info_get_name: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "name" property. * * * * Returns: the value of the "name" property */ /** * appstream_app_info_set_name: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "name" property * * Set the value of the "name" property to @value. * * */ /** * AppstreamAppInfo:name-original: */ /** * appstream_app_info_get_name_original: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "name-original" property. * * * * Returns: the value of the "name-original" property */ /** * appstream_app_info_set_name_original: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "name-original" property * * Set the value of the "name-original" property to @value. * * */ /** * AppstreamAppInfo:summary: */ /** * appstream_app_info_get_summary: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "summary" property. * * * * Returns: the value of the "summary" property */ /** * appstream_app_info_set_summary: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "summary" property * * Set the value of the "summary" property to @value. * * */ /** * AppstreamAppInfo:description: */ /** * appstream_app_info_get_description: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "description" property. * * * * Returns: the value of the "description" property */ /** * appstream_app_info_set_description: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "description" property * * Set the value of the "description" property to @value. * * */ /** * AppstreamAppInfo:keywords: * @result_length1: return location for the length of the property's value * @value_length1: length of the property's new value */ /** * appstream_app_info_get_keywords: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "keywords" property. * * * * Returns: the value of the "keywords" property */ /** * appstream_app_info_set_keywords: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "keywords" property * * Set the value of the "keywords" property to @value. * * */ /** * AppstreamAppInfo:icon: */ /** * appstream_app_info_get_icon: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "icon" property. * * * * Returns: the value of the "icon" property */ /** * appstream_app_info_set_icon: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "icon" property * * Set the value of the "icon" property to @value. * * */ /** * AppstreamAppInfo:icon-url: */ /** * appstream_app_info_get_icon_url: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "icon-url" property. * * * * Returns: the value of the "icon-url" property */ /** * appstream_app_info_set_icon_url: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "icon-url" property * * Set the value of the "icon-url" property to @value. * * */ /** * AppstreamAppInfo:homepage: */ /** * appstream_app_info_get_homepage: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "homepage" property. * * * * Returns: the value of the "homepage" property */ /** * appstream_app_info_set_homepage: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "homepage" property * * Set the value of the "homepage" property to @value. * * */ /** * AppstreamAppInfo:categories: * @result_length1: return location for the length of the property's value * @value_length1: length of the property's new value */ /** * appstream_app_info_get_categories: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "categories" property. * * * * Returns: the value of the "categories" property */ /** * appstream_app_info_set_categories: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "categories" property * * Set the value of the "categories" property to @value. * * */ /** * AppstreamAppInfo:mimetypes: * @result_length1: return location for the length of the property's value * @value_length1: length of the property's new value */ /** * appstream_app_info_get_mimetypes: * @self: the AppstreamAppInfo instance to query * * Get and return the current value of the "mimetypes" property. * * * * Returns: the value of the "mimetypes" property */ /** * appstream_app_info_set_mimetypes: * @self: the AppstreamAppInfo instance to modify * @value: the new value of the "mimetypes" property * * Set the value of the "mimetypes" property to @value. * * */ /** * AppstreamAppInfo: * * Class to store data describing an application in AppStream */ /** * AppstreamAppInfoClass: * @parent_class: the parent class structure * * The class structure for APPSTREAM_TYPE_APP_INFO. All the fields in this structure are private and should never be accessed directly. */ ./AppStream-0.4.0/docs/api/ccomments/menudir.c0000664000175000017500000002756212230763255021275 0ustar matthiasmatthias/** * SECTION:menudir * @short_description: Description of an XDG Menu category */ /** * APPSTREAM_TYPE_CATEGORY: * * The type for AppstreamCategory. */ /** * appstream_category_add_subcategory: * @self: the AppstreamCategory instance * @cat:   */ /** * appstream_category_remove_subcategory: * @self: the AppstreamCategory instance * @cat:   */ /** * appstream_category_has_subcategory: * @self: the AppstreamCategory instance * * Returns: TRUE if this category has any subcategory */ /** * appstream_category_new: */ /** * AppstreamCategory:name: */ /** * appstream_category_get_name: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "name" property. * * * * Returns: the value of the "name" property */ /** * appstream_category_set_name: * @self: the AppstreamCategory instance to modify * @value: the new value of the "name" property * * Set the value of the "name" property to @value. * * */ /** * AppstreamCategory:summary: */ /** * appstream_category_get_summary: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "summary" property. * * * * Returns: the value of the "summary" property */ /** * AppstreamCategory:icon: */ /** * appstream_category_get_icon: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "icon" property. * * * * Returns: the value of the "icon" property */ /** * appstream_category_set_icon: * @self: the AppstreamCategory instance to modify * @value: the new value of the "icon" property * * Set the value of the "icon" property to @value. * * */ /** * AppstreamCategory:directory: */ /** * appstream_category_get_directory: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "directory" property. * * * * Returns: the value of the "directory" property */ /** * appstream_category_set_directory: * @self: the AppstreamCategory instance to modify * @value: the new value of the "directory" property * * Set the value of the "directory" property to @value. * * */ /** * AppstreamCategory:included: */ /** * appstream_category_get_included: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "included" property. * * * * Returns: the value of the "included" property */ /** * AppstreamCategory:excluded: */ /** * appstream_category_get_excluded: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "excluded" property. * * * * Returns: the value of the "excluded" property */ /** * AppstreamCategory:level: */ /** * appstream_category_get_level: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "level" property. * * * * Returns: the value of the "level" property */ /** * appstream_category_set_level: * @self: the AppstreamCategory instance to modify * @value: the new value of the "level" property * * Set the value of the "level" property to @value. * * */ /** * AppstreamCategory:subcategories: */ /** * appstream_category_get_subcategories: * @self: the AppstreamCategory instance to query * * Get and return the current value of the "subcategories" property. * * * * Returns: the value of the "subcategories" property */ /** * AppstreamCategory: * * Description of an XDG Menu category */ /** * AppstreamCategoryClass: * @parent_class: the parent class structure * * The class structure for APPSTREAM_TYPE_CATEGORY. All the fields in this structure are private and should never be accessed directly. */ /** * APPSTREAM_TYPE_MENU_PARSER: * * The type for AppstreamMenuParser. */ /** * appstream_menu_parser_parse: * @self: the AppstreamMenuParser instance * * Parse the menu file * * Returns: GList of Category objects found in the Menu, or NULL if there was an error */ /** * appstream_menu_parser_new: * * Create a new MenuParser for the generic AppStream categories list */ /** * appstream_menu_parser_new_from_file: * @menu_file:   * * Create a new MenuParser for an arbitrary menu file */ /** * AppstreamMenuParser:update-category-data: */ /** * appstream_menu_parser_get_update_category_data: * @self: the AppstreamMenuParser instance to query * * Get and return the current value of the "update-category-data" property. * * * * Returns: the value of the "update-category-data" property */ /** * appstream_menu_parser_set_update_category_data: * @self: the AppstreamMenuParser instance to modify * @value: the new value of the "update-category-data" property * * Set the value of the "update-category-data" property to @value. * * */ /** * AppstreamMenuParser: * * Parser for XDG Menu files */ /** * appstream_menu_parser_ref: * @instance: a AppstreamMenuParser. * * Increases the reference count of @object. * * Returns: the same @object */ /** * appstream_menu_parser_unref: * @instance: a AppstreamMenuParser. * * Decreases the reference count of @object. When its reference count drops to 0, the object is finalized (i.e. its memory is freed). */ /** * appstream_param_spec_menu_parser: * @name: canonical name of the property specified * @nick: nick name for the property specified * @blurb: description of the property specified * @object_type: APPSTREAM_TYPE_MENU_PARSER derived type of this property * @flags: flags for the property specified * * Creates a new GParamSpecBoxed instance specifying a APPSTREAM_TYPE_MENU_PARSER derived property. * * See g_param_spec_internal() for details on property names. */ /** * appstream_value_set_menu_parser: * @value: a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type * @v_object: object value to be set * * Set the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to @v_object. * * appstream_value_set_menu_parser() increases the reference count of @v_object (the GValue holds a reference to @v_object). If you do not wish to increase the reference count of the object (i.e. you wish to pass your current reference to the GValue because you no longer need it), use appstream_value_take_menu_parser() instead. * * It is important that your GValue holds a reference to @v_object (either its own, or one it has taken) to ensure that the object won't be destroyed while the GValue still exists). */ /** * appstream_value_get_menu_parser: * @value: a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type * * Get the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue. * * Returns: object contents of @value */ /** * appstream_value_take_menu_parser: * @value: a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type * @v_object: object value to be set * * Sets the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to @v_object and takes over the ownership of the callers reference to @v_object; the caller doesn't have to unref it any more (i.e. the reference count of the object is not increased). * * If you want the GValue to hold its own reference to @v_object, use appstream_value_set_menu_parser() instead. */ /** * AppstreamMenuParserClass: * @parent_class: the parent class structure * * The class structure for APPSTREAM_TYPE_MENU_PARSER. All the fields in this structure are private and should never be accessed directly. */ /** * appstream_get_system_categories: * @self: the (null) instance * * Get a GList of the default AppStream categories */ ./AppStream-0.4.0/docs/api/appstream-undeclared.txt0000664000175000017500000000023312153212130022302 0ustar matthiasmatthiasappstream_category_set_directory appstream_category_set_icon appstream_category_set_level appstream_category_set_name appstream_database_set_database_path ./AppStream-0.4.0/docs/api/appstream-sections.txt0000644000175000017500000001303312230763255022042 0ustar matthiasmatthias
settings AppstreamDistroDetails APPSTREAM_TYPE_DISTRO_DETAILS appstream_distro_details_get_icon_repository_paths appstream_distro_details_config_distro_get_str appstream_distro_details_config_distro_get_bool appstream_distro_details_new appstream_distro_details_get_distro_id appstream_distro_details_get_distro_name appstream_distro_details_get_distro_version AppstreamDistroDetails AppstreamDistroDetailsClass APPSTREAM_IS_DISTRO_DETAILS APPSTREAM_IS_DISTRO_DETAILS_CLASS APPSTREAM_DISTRO_DETAILS APPSTREAM_DISTRO_DETAILS_CLASS APPSTREAM_DISTRO_DETAILS_GET_CLASS appstream_distro_details_get_type AppstreamDistroDetailsPrivate appstream_distro_details_construct
app-info AppstreamAppInfo APPSTREAM_TYPE_APP_INFO appstream_app_info_is_valid appstream_app_info_to_string appstream_app_info_set_categories_from_str appstream_app_info_new appstream_app_info_get_pkgname appstream_app_info_set_pkgname appstream_app_info_get_desktop_file appstream_app_info_set_desktop_file appstream_app_info_get_name appstream_app_info_set_name appstream_app_info_get_name_original appstream_app_info_set_name_original appstream_app_info_get_summary appstream_app_info_set_summary appstream_app_info_get_description appstream_app_info_set_description appstream_app_info_get_keywords appstream_app_info_set_keywords appstream_app_info_get_icon appstream_app_info_set_icon appstream_app_info_get_icon_url appstream_app_info_set_icon_url appstream_app_info_get_homepage appstream_app_info_set_homepage appstream_app_info_get_categories appstream_app_info_set_categories appstream_app_info_get_mimetypes appstream_app_info_set_mimetypes AppstreamAppInfo AppstreamAppInfoClass APPSTREAM_IS_APP_INFO APPSTREAM_IS_APP_INFO_CLASS APPSTREAM_APP_INFO APPSTREAM_APP_INFO_CLASS APPSTREAM_APP_INFO_GET_CLASS appstream_app_info_get_type AppstreamAppInfoPrivate appstream_app_info_construct
screenshot-service AppstreamScreenshotService APPSTREAM_TYPE_SCREENSHOT_SERVICE appstream_screenshot_service_get_thumbnail_url appstream_screenshot_service_get_screenshot_url appstream_screenshot_service_new appstream_screenshot_service_get_base_url AppstreamScreenshotService AppstreamScreenshotServiceClass APPSTREAM_IS_SCREENSHOT_SERVICE APPSTREAM_IS_SCREENSHOT_SERVICE_CLASS APPSTREAM_SCREENSHOT_SERVICE APPSTREAM_SCREENSHOT_SERVICE_CLASS APPSTREAM_SCREENSHOT_SERVICE_GET_CLASS appstream_screenshot_service_get_type AppstreamScreenshotServicePrivate appstream_screenshot_service_construct
database AppstreamSearchQuery APPSTREAM_TYPE_SEARCH_QUERY appstream_search_query_get_search_all_categories appstream_search_query_set_search_all_categories appstream_search_query_set_categories_from_string appstream_search_query_new appstream_search_query_get_search_term appstream_search_query_set_search_term appstream_search_query_get_categories appstream_search_query_set_categories AppstreamSearchQuery AppstreamSearchQueryClass APPSTREAM_TYPE_DATABASE appstream_database_open appstream_database_db_exists appstream_database_get_all_applications appstream_database_find_applications appstream_database_find_applications_by_str appstream_database_new appstream_database_get_database_path appstream_database_set_database_path AppstreamDatabase AppstreamDatabaseClass APPSTREAM_IS_SEARCH_QUERY APPSTREAM_IS_SEARCH_QUERY_CLASS APPSTREAM_SEARCH_QUERY APPSTREAM_SEARCH_QUERY_CLASS APPSTREAM_SEARCH_QUERY_GET_CLASS appstream_search_query_get_type APPSTREAM_IS_DATABASE APPSTREAM_IS_DATABASE_CLASS APPSTREAM_DATABASE APPSTREAM_DATABASE_CLASS APPSTREAM_DATABASE_GET_CLASS appstream_database_get_type AppstreamSearchQueryPrivate appstream_search_query_construct AppstreamDatabasePrivate appstream_database_construct
menudir AppstreamCategory APPSTREAM_TYPE_CATEGORY appstream_category_add_subcategory appstream_category_remove_subcategory appstream_category_has_subcategory appstream_category_new appstream_category_get_name appstream_category_set_name appstream_category_get_summary appstream_category_get_icon appstream_category_set_icon appstream_category_get_directory appstream_category_set_directory appstream_category_get_included appstream_category_get_excluded appstream_category_get_level appstream_category_set_level appstream_category_get_subcategories AppstreamCategory AppstreamCategoryClass APPSTREAM_TYPE_MENU_PARSER appstream_menu_parser_parse appstream_menu_parser_new appstream_menu_parser_new_from_file appstream_menu_parser_get_update_category_data appstream_menu_parser_set_update_category_data AppstreamMenuParser appstream_menu_parser_ref appstream_menu_parser_unref appstream_param_spec_menu_parser appstream_value_set_menu_parser appstream_value_get_menu_parser appstream_value_take_menu_parser AppstreamMenuParserClass appstream_get_system_categories APPSTREAM_IS_CATEGORY APPSTREAM_IS_CATEGORY_CLASS APPSTREAM_CATEGORY APPSTREAM_CATEGORY_CLASS APPSTREAM_CATEGORY_GET_CLASS appstream_category_get_type APPSTREAM_IS_MENU_PARSER APPSTREAM_IS_MENU_PARSER_CLASS APPSTREAM_MENU_PARSER APPSTREAM_MENU_PARSER_CLASS APPSTREAM_MENU_PARSER_GET_CLASS appstream_menu_parser_get_type AppstreamCategoryPrivate appstream_category_construct appstream_menu_parser_construct_from_file AppstreamMenuParserPrivate appstream_menu_parser_construct
./AppStream-0.4.0/docs/api/cscan/0000755000175000017500000000000012230763255016547 5ustar matthiasmatthias./AppStream-0.4.0/docs/api/cscan/appstream.types0000664000175000017500000000000012115147462021617 0ustar matthiasmatthias./AppStream-0.4.0/docs/api/cscan/appstream-decl-list.txt0000664000175000017500000000000012115147462023150 0ustar matthiasmatthias./AppStream-0.4.0/docs/api/cscan/appstream-overrides.txt0000664000175000017500000000000012115147462023272 0ustar matthiasmatthias./AppStream-0.4.0/docs/api/cscan/appstream-decl.txt0000664000175000017500000000000012115147462022177 0ustar matthiasmatthias./AppStream-0.4.0/docs/api/appstream-unused.txt0000664000175000017500000000004612115147463021517 0ustar matthiasmatthiasappstream_get_system_categories(self) ./AppStream-0.4.0/docs/api/appstream-decl-list.txt0000644000175000017500000001212012230761573022070 0ustar matthiasmatthias
appstream AppstreamScreenshotService AppstreamMenuParser AppstreamCategory AppstreamDatabase AppstreamSearchQuery AppstreamAppInfo AppstreamDistroDetails AppstreamDistroDetails AppstreamDistroDetailsClass AppstreamAppInfo AppstreamAppInfoClass AppstreamSearchQuery AppstreamSearchQueryClass AppstreamDatabase AppstreamDatabaseClass AppstreamCategory AppstreamCategoryClass AppstreamMenuParser AppstreamMenuParserClass AppstreamScreenshotService AppstreamScreenshotServiceClass appstream_distro_details_new appstream_distro_details_construct appstream_distro_details_get_icon_repository_paths appstream_distro_details_config_distro_get_str appstream_distro_details_config_distro_get_bool appstream_distro_details_get_distro_id appstream_distro_details_get_distro_name appstream_distro_details_get_distro_version appstream_app_info_new appstream_app_info_construct appstream_app_info_is_valid appstream_app_info_to_string appstream_app_info_set_categories_from_str appstream_app_info_get_pkgname appstream_app_info_set_pkgname appstream_app_info_get_desktop_file appstream_app_info_set_desktop_file appstream_app_info_get_name appstream_app_info_set_name appstream_app_info_get_name_original appstream_app_info_set_name_original appstream_app_info_get_summary appstream_app_info_set_summary appstream_app_info_get_description appstream_app_info_set_description appstream_app_info_get_keywords appstream_app_info_set_keywords appstream_app_info_get_icon appstream_app_info_set_icon appstream_app_info_get_icon_url appstream_app_info_set_icon_url appstream_app_info_get_homepage appstream_app_info_set_homepage appstream_app_info_get_categories appstream_app_info_set_categories appstream_app_info_get_mimetypes appstream_app_info_set_mimetypes appstream_search_query_new appstream_search_query_construct appstream_search_query_get_search_all_categories appstream_search_query_set_search_all_categories appstream_search_query_set_categories_from_string appstream_search_query_get_search_term appstream_search_query_set_search_term appstream_search_query_get_categories appstream_search_query_set_categories appstream_database_new appstream_database_construct appstream_database_open appstream_database_db_exists appstream_database_get_all_applications appstream_database_find_applications appstream_database_find_applications_by_str appstream_database_get_database_path appstream_category_new appstream_category_construct appstream_category_add_subcategory appstream_category_remove_subcategory appstream_category_has_subcategory appstream_category_get_name appstream_category_get_summary appstream_category_get_icon appstream_category_get_directory appstream_category_get_included appstream_category_get_excluded appstream_category_get_level appstream_category_get_subcategories appstream_menu_parser_ref appstream_menu_parser_unref appstream_param_spec_menu_parser appstream_value_set_menu_parser appstream_value_take_menu_parser appstream_value_get_menu_parser appstream_menu_parser_new appstream_menu_parser_construct appstream_menu_parser_new_from_file appstream_menu_parser_construct_from_file appstream_menu_parser_parse appstream_menu_parser_get_update_category_data appstream_menu_parser_set_update_category_data appstream_get_system_categories appstream_screenshot_service_new appstream_screenshot_service_construct appstream_screenshot_service_get_thumbnail_url appstream_screenshot_service_get_screenshot_url appstream_screenshot_service_get_base_url APPSTREAM_APP_INFO APPSTREAM_APP_INFO_CLASS APPSTREAM_APP_INFO_GET_CLASS APPSTREAM_CATEGORY APPSTREAM_CATEGORY_CLASS APPSTREAM_CATEGORY_GET_CLASS APPSTREAM_DATABASE APPSTREAM_DATABASE_CLASS APPSTREAM_DATABASE_GET_CLASS APPSTREAM_DISTRO_DETAILS APPSTREAM_DISTRO_DETAILS_CLASS APPSTREAM_DISTRO_DETAILS_GET_CLASS APPSTREAM_IS_APP_INFO APPSTREAM_IS_APP_INFO_CLASS APPSTREAM_IS_CATEGORY APPSTREAM_IS_CATEGORY_CLASS APPSTREAM_IS_DATABASE APPSTREAM_IS_DATABASE_CLASS APPSTREAM_IS_DISTRO_DETAILS APPSTREAM_IS_DISTRO_DETAILS_CLASS APPSTREAM_IS_MENU_PARSER APPSTREAM_IS_MENU_PARSER_CLASS APPSTREAM_IS_SCREENSHOT_SERVICE APPSTREAM_IS_SCREENSHOT_SERVICE_CLASS APPSTREAM_IS_SEARCH_QUERY APPSTREAM_IS_SEARCH_QUERY_CLASS APPSTREAM_MENU_PARSER APPSTREAM_MENU_PARSER_CLASS APPSTREAM_MENU_PARSER_GET_CLASS APPSTREAM_SCREENSHOT_SERVICE APPSTREAM_SCREENSHOT_SERVICE_CLASS APPSTREAM_SCREENSHOT_SERVICE_GET_CLASS APPSTREAM_SEARCH_QUERY APPSTREAM_SEARCH_QUERY_CLASS APPSTREAM_SEARCH_QUERY_GET_CLASS APPSTREAM_TYPE_APP_INFO APPSTREAM_TYPE_CATEGORY APPSTREAM_TYPE_DATABASE APPSTREAM_TYPE_DISTRO_DETAILS APPSTREAM_TYPE_MENU_PARSER APPSTREAM_TYPE_SCREENSHOT_SERVICE APPSTREAM_TYPE_SEARCH_QUERY AppstreamAppInfoPrivate AppstreamCategoryPrivate AppstreamDatabasePrivate AppstreamDistroDetailsPrivate AppstreamMenuParserPrivate AppstreamScreenshotServicePrivate AppstreamSearchQueryPrivate appstream_app_info_get_type appstream_category_get_type appstream_database_get_type appstream_distro_details_get_type appstream_menu_parser_get_type appstream_screenshot_service_get_type appstream_search_query_get_type
./AppStream-0.4.0/docs/api/xml/0000755000175000017500000000000012230763256016261 5ustar matthiasmatthias./AppStream-0.4.0/docs/api/xml/api-index-deprecated.xml0000644000175000017500000000042712230763256022762 0ustar matthiasmatthias ]> ./AppStream-0.4.0/docs/api/xml/appstream-doc.bottom0000644000175000017500000000033312230763256022245 0ustar matthiasmatthias ./AppStream-0.4.0/docs/api/xml/screenshot-service.xml0000644000175000017500000002310512230763256022617 0ustar matthiasmatthias ]> AppstreamScreenshotService 3 APPSTREAM Library AppstreamScreenshotService Get access to a package screenshot service which matches the current distribution. Synopsis #define APPSTREAM_TYPE_SCREENSHOT_SERVICE gchar * appstream_screenshot_service_get_thumbnail_url (AppstreamScreenshotService *self, const gchar *package_name); gchar * appstream_screenshot_service_get_screenshot_url (AppstreamScreenshotService *self, const gchar *package_name); AppstreamScreenshotService * appstream_screenshot_service_new (void); const gchar * appstream_screenshot_service_get_base_url (AppstreamScreenshotService *self); struct AppstreamScreenshotService; struct AppstreamScreenshotServiceClass; Description Details APPSTREAM_TYPE_SCREENSHOT_SERVICE APPSTREAM_TYPE_SCREENSHOT_SERVICE #define APPSTREAM_TYPE_SCREENSHOT_SERVICE (appstream_screenshot_service_get_type ()) The type for AppstreamScreenshotService. appstream_screenshot_service_get_thumbnail_url () appstream_screenshot_service_get_thumbnail_url gchar * appstream_screenshot_service_get_thumbnail_url (AppstreamScreenshotService *self, const gchar *package_name); Get the url of a screenshot thumbnail for the package. self : the AppstreamScreenshotService instance package_name :  . The name of the package which the screenshot belongs to. [in] appstream_screenshot_service_get_screenshot_url () appstream_screenshot_service_get_screenshot_url gchar * appstream_screenshot_service_get_screenshot_url (AppstreamScreenshotService *self, const gchar *package_name); Get the url of a screenshot for the package. self : the AppstreamScreenshotService instance package_name :  . The name of the package which the screenshot belongs to. [in] appstream_screenshot_service_new () appstream_screenshot_service_new AppstreamScreenshotService * appstream_screenshot_service_new (void); appstream_screenshot_service_get_base_url () appstream_screenshot_service_get_base_url const gchar * appstream_screenshot_service_get_base_url (AppstreamScreenshotService *self); Get and return the current value of the "base-url" property. self : the AppstreamScreenshotService instance to query Returns :the value of the "base-url" property struct AppstreamScreenshotService AppstreamScreenshotService struct AppstreamScreenshotService { GObject parent_instance; AppstreamScreenshotServicePrivate * priv; }; Get access to a package screenshot service which matches the current distribution. struct AppstreamScreenshotServiceClass AppstreamScreenshotServiceClass struct AppstreamScreenshotServiceClass { GObjectClass parent_class; }; The class structure for APPSTREAM_TYPE_SCREENSHOT_SERVICE. All the fields in this structure are private and should never be accessed directly. GObjectClass parent_class; the parent class structure ./AppStream-0.4.0/docs/api/xml/appstream-doc.top0000644000175000017500000000000012230763256021532 0ustar matthiasmatthias./AppStream-0.4.0/docs/api/xml/api-index-full.xml0000644000175000017500000006435512230763256021636 0ustar matthiasmatthias ]> A AppstreamAppInfo, struct in AppstreamAppInfo AppstreamAppInfoClass, struct in AppstreamAppInfo appstream_app_info_get_categories, function in AppstreamAppInfo appstream_app_info_get_description, function in AppstreamAppInfo appstream_app_info_get_desktop_file, function in AppstreamAppInfo appstream_app_info_get_homepage, function in AppstreamAppInfo appstream_app_info_get_icon, function in AppstreamAppInfo appstream_app_info_get_icon_url, function in AppstreamAppInfo appstream_app_info_get_keywords, function in AppstreamAppInfo appstream_app_info_get_mimetypes, function in AppstreamAppInfo appstream_app_info_get_name, function in AppstreamAppInfo appstream_app_info_get_name_original, function in AppstreamAppInfo appstream_app_info_get_pkgname, function in AppstreamAppInfo appstream_app_info_get_summary, function in AppstreamAppInfo appstream_app_info_is_valid, function in AppstreamAppInfo appstream_app_info_new, function in AppstreamAppInfo appstream_app_info_set_categories, function in AppstreamAppInfo appstream_app_info_set_categories_from_str, function in AppstreamAppInfo appstream_app_info_set_description, function in AppstreamAppInfo appstream_app_info_set_desktop_file, function in AppstreamAppInfo appstream_app_info_set_homepage, function in AppstreamAppInfo appstream_app_info_set_icon, function in AppstreamAppInfo appstream_app_info_set_icon_url, function in AppstreamAppInfo appstream_app_info_set_keywords, function in AppstreamAppInfo appstream_app_info_set_mimetypes, function in AppstreamAppInfo appstream_app_info_set_name, function in AppstreamAppInfo appstream_app_info_set_name_original, function in AppstreamAppInfo appstream_app_info_set_pkgname, function in AppstreamAppInfo appstream_app_info_set_summary, function in AppstreamAppInfo appstream_app_info_to_string, function in AppstreamAppInfo C AppstreamCategory, struct in AppstreamCategory AppstreamCategoryClass, struct in AppstreamCategory appstream_category_add_subcategory, function in AppstreamCategory appstream_category_get_directory, function in AppstreamCategory appstream_category_get_excluded, function in AppstreamCategory appstream_category_get_icon, function in AppstreamCategory appstream_category_get_included, function in AppstreamCategory appstream_category_get_level, function in AppstreamCategory appstream_category_get_name, function in AppstreamCategory appstream_category_get_subcategories, function in AppstreamCategory appstream_category_get_summary, function in AppstreamCategory appstream_category_has_subcategory, function in AppstreamCategory appstream_category_new, function in AppstreamCategory appstream_category_remove_subcategory, function in AppstreamCategory D AppstreamDatabase, struct in AppstreamSearchQuery AppstreamDatabaseClass, struct in AppstreamSearchQuery appstream_database_db_exists, function in AppstreamSearchQuery appstream_database_find_applications, function in AppstreamSearchQuery appstream_database_find_applications_by_str, function in AppstreamSearchQuery appstream_database_get_all_applications, function in AppstreamSearchQuery appstream_database_get_database_path, function in AppstreamSearchQuery appstream_database_new, function in AppstreamSearchQuery appstream_database_open, function in AppstreamSearchQuery AppstreamDistroDetails, struct in AppstreamDistroDetails AppstreamDistroDetailsClass, struct in AppstreamDistroDetails appstream_distro_details_config_distro_get_bool, function in AppstreamDistroDetails appstream_distro_details_config_distro_get_str, function in AppstreamDistroDetails appstream_distro_details_get_distro_id, function in AppstreamDistroDetails appstream_distro_details_get_distro_name, function in AppstreamDistroDetails appstream_distro_details_get_distro_version, function in AppstreamDistroDetails appstream_distro_details_get_icon_repository_paths, function in AppstreamDistroDetails appstream_distro_details_new, function in AppstreamDistroDetails G appstream_get_system_categories, function in AppstreamCategory M AppstreamMenuParser, struct in AppstreamCategory AppstreamMenuParserClass, struct in AppstreamCategory appstream_menu_parser_get_update_category_data, function in AppstreamCategory appstream_menu_parser_new, function in AppstreamCategory appstream_menu_parser_new_from_file, function in AppstreamCategory appstream_menu_parser_parse, function in AppstreamCategory appstream_menu_parser_ref, function in AppstreamCategory appstream_menu_parser_set_update_category_data, function in AppstreamCategory appstream_menu_parser_unref, function in AppstreamCategory P appstream_param_spec_menu_parser, function in AppstreamCategory S AppstreamScreenshotService, struct in AppstreamScreenshotService AppstreamScreenshotServiceClass, struct in AppstreamScreenshotService appstream_screenshot_service_get_base_url, function in AppstreamScreenshotService appstream_screenshot_service_get_screenshot_url, function in AppstreamScreenshotService appstream_screenshot_service_get_thumbnail_url, function in AppstreamScreenshotService appstream_screenshot_service_new, function in AppstreamScreenshotService AppstreamSearchQuery, struct in AppstreamSearchQuery AppstreamSearchQueryClass, struct in AppstreamSearchQuery appstream_search_query_get_categories, function in AppstreamSearchQuery appstream_search_query_get_search_all_categories, function in AppstreamSearchQuery appstream_search_query_get_search_term, function in AppstreamSearchQuery appstream_search_query_new, function in AppstreamSearchQuery appstream_search_query_set_categories, function in AppstreamSearchQuery appstream_search_query_set_categories_from_string, function in AppstreamSearchQuery appstream_search_query_set_search_all_categories, function in AppstreamSearchQuery appstream_search_query_set_search_term, function in AppstreamSearchQuery T APPSTREAM_TYPE_APP_INFO, macro in AppstreamAppInfo APPSTREAM_TYPE_CATEGORY, macro in AppstreamCategory APPSTREAM_TYPE_DATABASE, macro in AppstreamSearchQuery APPSTREAM_TYPE_DISTRO_DETAILS, macro in AppstreamDistroDetails APPSTREAM_TYPE_MENU_PARSER, macro in AppstreamCategory APPSTREAM_TYPE_SCREENSHOT_SERVICE, macro in AppstreamScreenshotService APPSTREAM_TYPE_SEARCH_QUERY, macro in AppstreamSearchQuery V appstream_value_get_menu_parser, function in AppstreamCategory appstream_value_set_menu_parser, function in AppstreamCategory appstream_value_take_menu_parser, function in AppstreamCategory ./AppStream-0.4.0/docs/api/xml/app-info.xml0000644000175000017500000013304312230763256020520 0ustar matthiasmatthias ]> AppstreamAppInfo 3 APPSTREAM Library AppstreamAppInfo Class to store data describing an application in AppStream Synopsis #define APPSTREAM_TYPE_APP_INFO gboolean appstream_app_info_is_valid (AppstreamAppInfo *self); gchar * appstream_app_info_to_string (AppstreamAppInfo *self); void appstream_app_info_set_categories_from_str (AppstreamAppInfo *self, const gchar *categories_str); AppstreamAppInfo * appstream_app_info_new (void); const gchar * appstream_app_info_get_pkgname (AppstreamAppInfo *self); void appstream_app_info_set_pkgname (AppstreamAppInfo *self, const gchar *value); const gchar * appstream_app_info_get_desktop_file (AppstreamAppInfo *self); void appstream_app_info_set_desktop_file (AppstreamAppInfo *self, const gchar *value); const gchar * appstream_app_info_get_name (AppstreamAppInfo *self); void appstream_app_info_set_name (AppstreamAppInfo *self, const gchar *value); const gchar * appstream_app_info_get_name_original (AppstreamAppInfo *self); void appstream_app_info_set_name_original (AppstreamAppInfo *self, const gchar *value); const gchar * appstream_app_info_get_summary (AppstreamAppInfo *self); void appstream_app_info_set_summary (AppstreamAppInfo *self, const gchar *value); const gchar * appstream_app_info_get_description (AppstreamAppInfo *self); void appstream_app_info_set_description (AppstreamAppInfo *self, const gchar *value); gchar ** appstream_app_info_get_keywords (AppstreamAppInfo *self, int *result_length1); void appstream_app_info_set_keywords (AppstreamAppInfo *self, gchar **value, int value_length1); const gchar * appstream_app_info_get_icon (AppstreamAppInfo *self); void appstream_app_info_set_icon (AppstreamAppInfo *self, const gchar *value); const gchar * appstream_app_info_get_icon_url (AppstreamAppInfo *self); void appstream_app_info_set_icon_url (AppstreamAppInfo *self, const gchar *value); const gchar * appstream_app_info_get_homepage (AppstreamAppInfo *self); void appstream_app_info_set_homepage (AppstreamAppInfo *self, const gchar *value); gchar ** appstream_app_info_get_categories (AppstreamAppInfo *self, int *result_length1); void appstream_app_info_set_categories (AppstreamAppInfo *self, gchar **value, int value_length1); gchar ** appstream_app_info_get_mimetypes (AppstreamAppInfo *self, int *result_length1); void appstream_app_info_set_mimetypes (AppstreamAppInfo *self, gchar **value, int value_length1); struct AppstreamAppInfo; struct AppstreamAppInfoClass; Description Details APPSTREAM_TYPE_APP_INFO APPSTREAM_TYPE_APP_INFO #define APPSTREAM_TYPE_APP_INFO (appstream_app_info_get_type ()) The type for AppstreamAppInfo. appstream_app_info_is_valid () appstream_app_info_is_valid gboolean appstream_app_info_is_valid (AppstreamAppInfo *self); Check if the essential properties of this AppInfo instance are populated with useful data. self : the AppstreamAppInfo instance appstream_app_info_to_string () appstream_app_info_to_string gchar * appstream_app_info_to_string (AppstreamAppInfo *self); self : the AppstreamAppInfo instance appstream_app_info_set_categories_from_str () appstream_app_info_set_categories_from_str void appstream_app_info_set_categories_from_str (AppstreamAppInfo *self, const gchar *categories_str); Set the categories list from a string self : the AppstreamAppInfo instance categories_str :  . Comma-separated list of category-names. [in] appstream_app_info_new () appstream_app_info_new AppstreamAppInfo * appstream_app_info_new (void); appstream_app_info_get_pkgname () appstream_app_info_get_pkgname const gchar * appstream_app_info_get_pkgname (AppstreamAppInfo *self); Get and return the current value of the "pkgname" property. self : the AppstreamAppInfo instance to query Returns :the value of the "pkgname" property appstream_app_info_set_pkgname () appstream_app_info_set_pkgname void appstream_app_info_set_pkgname (AppstreamAppInfo *self, const gchar *value); Set the value of the "pkgname" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "pkgname" property appstream_app_info_get_desktop_file () appstream_app_info_get_desktop_file const gchar * appstream_app_info_get_desktop_file (AppstreamAppInfo *self); Get and return the current value of the "desktop-file" property. self : the AppstreamAppInfo instance to query Returns :the value of the "desktop-file" property appstream_app_info_set_desktop_file () appstream_app_info_set_desktop_file void appstream_app_info_set_desktop_file (AppstreamAppInfo *self, const gchar *value); Set the value of the "desktop-file" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "desktop-file" property appstream_app_info_get_name () appstream_app_info_get_name const gchar * appstream_app_info_get_name (AppstreamAppInfo *self); Get and return the current value of the "name" property. self : the AppstreamAppInfo instance to query Returns :the value of the "name" property appstream_app_info_set_name () appstream_app_info_set_name void appstream_app_info_set_name (AppstreamAppInfo *self, const gchar *value); Set the value of the "name" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "name" property appstream_app_info_get_name_original () appstream_app_info_get_name_original const gchar * appstream_app_info_get_name_original (AppstreamAppInfo *self); Get and return the current value of the "name-original" property. self : the AppstreamAppInfo instance to query Returns :the value of the "name-original" property appstream_app_info_set_name_original () appstream_app_info_set_name_original void appstream_app_info_set_name_original (AppstreamAppInfo *self, const gchar *value); Set the value of the "name-original" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "name-original" property appstream_app_info_get_summary () appstream_app_info_get_summary const gchar * appstream_app_info_get_summary (AppstreamAppInfo *self); Get and return the current value of the "summary" property. self : the AppstreamAppInfo instance to query Returns :the value of the "summary" property appstream_app_info_set_summary () appstream_app_info_set_summary void appstream_app_info_set_summary (AppstreamAppInfo *self, const gchar *value); Set the value of the "summary" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "summary" property appstream_app_info_get_description () appstream_app_info_get_description const gchar * appstream_app_info_get_description (AppstreamAppInfo *self); Get and return the current value of the "description" property. self : the AppstreamAppInfo instance to query Returns :the value of the "description" property appstream_app_info_set_description () appstream_app_info_set_description void appstream_app_info_set_description (AppstreamAppInfo *self, const gchar *value); Set the value of the "description" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "description" property appstream_app_info_get_keywords () appstream_app_info_get_keywords gchar ** appstream_app_info_get_keywords (AppstreamAppInfo *self, int *result_length1); Get and return the current value of the "keywords" property. self : the AppstreamAppInfo instance to query Returns :the value of the "keywords" property appstream_app_info_set_keywords () appstream_app_info_set_keywords void appstream_app_info_set_keywords (AppstreamAppInfo *self, gchar **value, int value_length1); Set the value of the "keywords" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "keywords" property appstream_app_info_get_icon () appstream_app_info_get_icon const gchar * appstream_app_info_get_icon (AppstreamAppInfo *self); Get and return the current value of the "icon" property. self : the AppstreamAppInfo instance to query Returns :the value of the "icon" property appstream_app_info_set_icon () appstream_app_info_set_icon void appstream_app_info_set_icon (AppstreamAppInfo *self, const gchar *value); Set the value of the "icon" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "icon" property appstream_app_info_get_icon_url () appstream_app_info_get_icon_url const gchar * appstream_app_info_get_icon_url (AppstreamAppInfo *self); Get and return the current value of the "icon-url" property. self : the AppstreamAppInfo instance to query Returns :the value of the "icon-url" property appstream_app_info_set_icon_url () appstream_app_info_set_icon_url void appstream_app_info_set_icon_url (AppstreamAppInfo *self, const gchar *value); Set the value of the "icon-url" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "icon-url" property appstream_app_info_get_homepage () appstream_app_info_get_homepage const gchar * appstream_app_info_get_homepage (AppstreamAppInfo *self); Get and return the current value of the "homepage" property. self : the AppstreamAppInfo instance to query Returns :the value of the "homepage" property appstream_app_info_set_homepage () appstream_app_info_set_homepage void appstream_app_info_set_homepage (AppstreamAppInfo *self, const gchar *value); Set the value of the "homepage" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "homepage" property appstream_app_info_get_categories () appstream_app_info_get_categories gchar ** appstream_app_info_get_categories (AppstreamAppInfo *self, int *result_length1); Get and return the current value of the "categories" property. self : the AppstreamAppInfo instance to query Returns :the value of the "categories" property appstream_app_info_set_categories () appstream_app_info_set_categories void appstream_app_info_set_categories (AppstreamAppInfo *self, gchar **value, int value_length1); Set the value of the "categories" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "categories" property appstream_app_info_get_mimetypes () appstream_app_info_get_mimetypes gchar ** appstream_app_info_get_mimetypes (AppstreamAppInfo *self, int *result_length1); Get and return the current value of the "mimetypes" property. self : the AppstreamAppInfo instance to query Returns :the value of the "mimetypes" property appstream_app_info_set_mimetypes () appstream_app_info_set_mimetypes void appstream_app_info_set_mimetypes (AppstreamAppInfo *self, gchar **value, int value_length1); Set the value of the "mimetypes" property to value. self : the AppstreamAppInfo instance to modify value : the new value of the "mimetypes" property struct AppstreamAppInfo AppstreamAppInfo struct AppstreamAppInfo { GObject parent_instance; AppstreamAppInfoPrivate * priv; }; Class to store data describing an application in AppStream struct AppstreamAppInfoClass AppstreamAppInfoClass struct AppstreamAppInfoClass { GObjectClass parent_class; }; The class structure for APPSTREAM_TYPE_APP_INFO. All the fields in this structure are private and should never be accessed directly. GObjectClass parent_class; the parent class structure ./AppStream-0.4.0/docs/api/xml/annotation-glossary.xml0000644000175000017500000000213312230763256023015 0ustar matthiasmatthias ]> Annotation Glossary A array Parameter points to an array of items. I in Parameter for input. Default is transfer none. T transfer none Don't free data after the code is done. ./AppStream-0.4.0/docs/api/xml/settings.xml0000644000175000017500000003321112230763256020643 0ustar matthiasmatthias ]> AppstreamDistroDetails 3 APPSTREAM Library AppstreamDistroDetails Get details about the AppStream settings for the current distribution Synopsis #define APPSTREAM_TYPE_DISTRO_DETAILS gchar ** appstream_distro_details_get_icon_repository_paths (AppstreamDistroDetails *self); gchar * appstream_distro_details_config_distro_get_str (AppstreamDistroDetails *self, const gchar *key); gboolean appstream_distro_details_config_distro_get_bool (AppstreamDistroDetails *self, const gchar *key); AppstreamDistroDetails * appstream_distro_details_new (void); const gchar * appstream_distro_details_get_distro_id (AppstreamDistroDetails *self); const gchar * appstream_distro_details_get_distro_name (AppstreamDistroDetails *self); const gchar * appstream_distro_details_get_distro_version (AppstreamDistroDetails *self); struct AppstreamDistroDetails; struct AppstreamDistroDetailsClass; Description Details APPSTREAM_TYPE_DISTRO_DETAILS APPSTREAM_TYPE_DISTRO_DETAILS #define APPSTREAM_TYPE_DISTRO_DETAILS (appstream_distro_details_get_type ()) The type for AppstreamDistroDetails. appstream_distro_details_get_icon_repository_paths () appstream_distro_details_get_icon_repository_paths gchar ** appstream_distro_details_get_icon_repository_paths (AppstreamDistroDetails *self); Returns list of icon-paths for software-center applications to use. Icons of software (even if it is not installed) are stored in these locations. self : the AppstreamDistroDetails instance Returns :A NULL-terminated array of paths. [array length=result_length1] appstream_distro_details_config_distro_get_str () appstream_distro_details_config_distro_get_str gchar * appstream_distro_details_config_distro_get_str (AppstreamDistroDetails *self, const gchar *key); self : the AppstreamDistroDetails instance key :   appstream_distro_details_config_distro_get_bool () appstream_distro_details_config_distro_get_bool gboolean appstream_distro_details_config_distro_get_bool (AppstreamDistroDetails *self, const gchar *key); self : the AppstreamDistroDetails instance key :   appstream_distro_details_new () appstream_distro_details_new AppstreamDistroDetails * appstream_distro_details_new (void); appstream_distro_details_get_distro_id () appstream_distro_details_get_distro_id const gchar * appstream_distro_details_get_distro_id (AppstreamDistroDetails *self); Get and return the current value of the "distro-id" property. self : the AppstreamDistroDetails instance to query Returns :the value of the "distro-id" property appstream_distro_details_get_distro_name () appstream_distro_details_get_distro_name const gchar * appstream_distro_details_get_distro_name (AppstreamDistroDetails *self); Get and return the current value of the "distro-name" property. self : the AppstreamDistroDetails instance to query Returns :the value of the "distro-name" property appstream_distro_details_get_distro_version () appstream_distro_details_get_distro_version const gchar * appstream_distro_details_get_distro_version (AppstreamDistroDetails *self); Get and return the current value of the "distro-version" property. self : the AppstreamDistroDetails instance to query Returns :the value of the "distro-version" property struct AppstreamDistroDetails AppstreamDistroDetails struct AppstreamDistroDetails { GObject parent_instance; AppstreamDistroDetailsPrivate * priv; }; Get details about the AppStream settings for the current distribution struct AppstreamDistroDetailsClass AppstreamDistroDetailsClass struct AppstreamDistroDetailsClass { GObjectClass parent_class; }; The class structure for APPSTREAM_TYPE_DISTRO_DETAILS. All the fields in this structure are private and should never be accessed directly. GObjectClass parent_class; the parent class structure ./AppStream-0.4.0/docs/api/xml/menudir.xml0000644000175000017500000012057612230763256020461 0ustar matthiasmatthias ]> AppstreamCategory 3 APPSTREAM Library AppstreamCategory Description of an XDG Menu category Synopsis #define APPSTREAM_TYPE_CATEGORY void appstream_category_add_subcategory (AppstreamCategory *self, AppstreamCategory *cat); void appstream_category_remove_subcategory (AppstreamCategory *self, AppstreamCategory *cat); gboolean appstream_category_has_subcategory (AppstreamCategory *self); AppstreamCategory * appstream_category_new (void); const gchar * appstream_category_get_name (AppstreamCategory *self); const gchar * appstream_category_get_summary (AppstreamCategory *self); const gchar * appstream_category_get_icon (AppstreamCategory *self); const gchar * appstream_category_get_directory (AppstreamCategory *self); GList * appstream_category_get_included (AppstreamCategory *self); GList * appstream_category_get_excluded (AppstreamCategory *self); gint appstream_category_get_level (AppstreamCategory *self); GList * appstream_category_get_subcategories (AppstreamCategory *self); struct AppstreamCategory; struct AppstreamCategoryClass; #define APPSTREAM_TYPE_MENU_PARSER GList * appstream_menu_parser_parse (AppstreamMenuParser *self); AppstreamMenuParser * appstream_menu_parser_new (void); AppstreamMenuParser * appstream_menu_parser_new_from_file (const gchar *menu_file); gboolean appstream_menu_parser_get_update_category_data (AppstreamMenuParser *self); void appstream_menu_parser_set_update_category_data (AppstreamMenuParser *self, gboolean value); struct AppstreamMenuParser; gpointer appstream_menu_parser_ref (gpointer instance); void appstream_menu_parser_unref (gpointer instance); GParamSpec * appstream_param_spec_menu_parser (const gchar *name, const gchar *nick, const gchar *blurb, GType object_type, GParamFlags flags); void appstream_value_set_menu_parser (GValue *value, gpointer v_object); gpointer appstream_value_get_menu_parser (const GValue *value); void appstream_value_take_menu_parser (GValue *value, gpointer v_object); struct AppstreamMenuParserClass; GList * appstream_get_system_categories (void); Description Details APPSTREAM_TYPE_CATEGORY APPSTREAM_TYPE_CATEGORY #define APPSTREAM_TYPE_CATEGORY (appstream_category_get_type ()) The type for AppstreamCategory. appstream_category_add_subcategory () appstream_category_add_subcategory void appstream_category_add_subcategory (AppstreamCategory *self, AppstreamCategory *cat); self : the AppstreamCategory instance cat :   appstream_category_remove_subcategory () appstream_category_remove_subcategory void appstream_category_remove_subcategory (AppstreamCategory *self, AppstreamCategory *cat); self : the AppstreamCategory instance cat :   appstream_category_has_subcategory () appstream_category_has_subcategory gboolean appstream_category_has_subcategory (AppstreamCategory *self); self : the AppstreamCategory instance Returns :TRUE if this category has any subcategory appstream_category_new () appstream_category_new AppstreamCategory * appstream_category_new (void); appstream_category_get_name () appstream_category_get_name const gchar * appstream_category_get_name (AppstreamCategory *self); Get and return the current value of the "name" property. self : the AppstreamCategory instance to query Returns :the value of the "name" property appstream_category_get_summary () appstream_category_get_summary const gchar * appstream_category_get_summary (AppstreamCategory *self); Get and return the current value of the "summary" property. self : the AppstreamCategory instance to query Returns :the value of the "summary" property appstream_category_get_icon () appstream_category_get_icon const gchar * appstream_category_get_icon (AppstreamCategory *self); Get and return the current value of the "icon" property. self : the AppstreamCategory instance to query Returns :the value of the "icon" property appstream_category_get_directory () appstream_category_get_directory const gchar * appstream_category_get_directory (AppstreamCategory *self); Get and return the current value of the "directory" property. self : the AppstreamCategory instance to query Returns :the value of the "directory" property appstream_category_get_included () appstream_category_get_included GList * appstream_category_get_included (AppstreamCategory *self); Get and return the current value of the "included" property. self : the AppstreamCategory instance to query Returns :the value of the "included" property appstream_category_get_excluded () appstream_category_get_excluded GList * appstream_category_get_excluded (AppstreamCategory *self); Get and return the current value of the "excluded" property. self : the AppstreamCategory instance to query Returns :the value of the "excluded" property appstream_category_get_level () appstream_category_get_level gint appstream_category_get_level (AppstreamCategory *self); Get and return the current value of the "level" property. self : the AppstreamCategory instance to query Returns :the value of the "level" property appstream_category_get_subcategories () appstream_category_get_subcategories GList * appstream_category_get_subcategories (AppstreamCategory *self); Get and return the current value of the "subcategories" property. self : the AppstreamCategory instance to query Returns :the value of the "subcategories" property struct AppstreamCategory AppstreamCategory struct AppstreamCategory { GObject parent_instance; AppstreamCategoryPrivate * priv; }; Description of an XDG Menu category struct AppstreamCategoryClass AppstreamCategoryClass struct AppstreamCategoryClass { GObjectClass parent_class; }; The class structure for APPSTREAM_TYPE_CATEGORY. All the fields in this structure are private and should never be accessed directly. GObjectClass parent_class; the parent class structure APPSTREAM_TYPE_MENU_PARSER APPSTREAM_TYPE_MENU_PARSER #define APPSTREAM_TYPE_MENU_PARSER (appstream_menu_parser_get_type ()) The type for AppstreamMenuParser. appstream_menu_parser_parse () appstream_menu_parser_parse GList * appstream_menu_parser_parse (AppstreamMenuParser *self); Parse the menu file self : the AppstreamMenuParser instance Returns :GList of Category objects found in the Menu, or NULL if there was an error appstream_menu_parser_new () appstream_menu_parser_new AppstreamMenuParser * appstream_menu_parser_new (void); Create a new MenuParser for the generic AppStream categories list appstream_menu_parser_new_from_file () appstream_menu_parser_new_from_file AppstreamMenuParser * appstream_menu_parser_new_from_file (const gchar *menu_file); Create a new MenuParser for an arbitrary menu file menu_file :   appstream_menu_parser_get_update_category_data () appstream_menu_parser_get_update_category_data gboolean appstream_menu_parser_get_update_category_data (AppstreamMenuParser *self); Get and return the current value of the "update-category-data" property. self : the AppstreamMenuParser instance to query Returns :the value of the "update-category-data" property appstream_menu_parser_set_update_category_data () appstream_menu_parser_set_update_category_data void appstream_menu_parser_set_update_category_data (AppstreamMenuParser *self, gboolean value); Set the value of the "update-category-data" property to value. self : the AppstreamMenuParser instance to modify value : the new value of the "update-category-data" property struct AppstreamMenuParser AppstreamMenuParser struct AppstreamMenuParser { GTypeInstance parent_instance; volatile int ref_count; AppstreamMenuParserPrivate * priv; }; Parser for XDG Menu files appstream_menu_parser_ref () appstream_menu_parser_ref gpointer appstream_menu_parser_ref (gpointer instance); Increases the reference count of object. instance : a AppstreamMenuParser. Returns :the same object appstream_menu_parser_unref () appstream_menu_parser_unref void appstream_menu_parser_unref (gpointer instance); Decreases the reference count of object. When its reference count drops to 0, the object is finalized (i.e. its memory is freed). instance : a AppstreamMenuParser. appstream_param_spec_menu_parser () appstream_param_spec_menu_parser GParamSpec * appstream_param_spec_menu_parser (const gchar *name, const gchar *nick, const gchar *blurb, GType object_type, GParamFlags flags); Creates a new GParamSpecBoxed instance specifying a APPSTREAM_TYPE_MENU_PARSER derived property. See g_param_spec_internal() for details on property names. name : canonical name of the property specified nick : nick name for the property specified blurb : description of the property specified object_type : APPSTREAM_TYPE_MENU_PARSER derived type of this property flags : flags for the property specified appstream_value_set_menu_parser () appstream_value_set_menu_parser void appstream_value_set_menu_parser (GValue *value, gpointer v_object); Set the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to v_object. appstream_value_set_menu_parser() increases the reference count of v_object (the GValue holds a reference to v_object). If you do not wish to increase the reference count of the object (i.e. you wish to pass your current reference to the GValue because you no longer need it), use appstream_value_take_menu_parser() instead. It is important that your GValue holds a reference to v_object (either its own, or one it has taken) to ensure that the object won't be destroyed while the GValue still exists). value : a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type v_object : object value to be set appstream_value_get_menu_parser () appstream_value_get_menu_parser gpointer appstream_value_get_menu_parser (const GValue *value); Get the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue. value : a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type Returns :object contents of value appstream_value_take_menu_parser () appstream_value_take_menu_parser void appstream_value_take_menu_parser (GValue *value, gpointer v_object); Sets the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to v_object and takes over the ownership of the callers reference to v_object; the caller doesn't have to unref it any more (i.e. the reference count of the object is not increased). If you want the GValue to hold its own reference to v_object, use appstream_value_set_menu_parser() instead. value : a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type v_object : object value to be set struct AppstreamMenuParserClass AppstreamMenuParserClass struct AppstreamMenuParserClass { GTypeClass parent_class; void (*finalize) (AppstreamMenuParser *self); }; The class structure for APPSTREAM_TYPE_MENU_PARSER. All the fields in this structure are private and should never be accessed directly. GTypeClass parent_class; the parent class structure finalize () appstream_get_system_categories () appstream_get_system_categories GList * appstream_get_system_categories (void); Get a GList of the default AppStream categories self : the (null) instance ./AppStream-0.4.0/docs/api/xml/database.xml0000644000175000017500000006651212230763256020561 0ustar matthiasmatthias ]> AppstreamSearchQuery 3 APPSTREAM Library AppstreamSearchQuery Class describing a query on the AppStream application database Synopsis #define APPSTREAM_TYPE_SEARCH_QUERY gboolean appstream_search_query_get_search_all_categories (AppstreamSearchQuery *self); void appstream_search_query_set_search_all_categories (AppstreamSearchQuery *self); void appstream_search_query_set_categories_from_string (AppstreamSearchQuery *self, const gchar *categories_str); AppstreamSearchQuery * appstream_search_query_new (const gchar *term); const gchar * appstream_search_query_get_search_term (AppstreamSearchQuery *self); void appstream_search_query_set_search_term (AppstreamSearchQuery *self, const gchar *value); gchar ** appstream_search_query_get_categories (AppstreamSearchQuery *self, int *result_length1); void appstream_search_query_set_categories (AppstreamSearchQuery *self, gchar **value, int value_length1); struct AppstreamSearchQuery; struct AppstreamSearchQueryClass; #define APPSTREAM_TYPE_DATABASE gboolean appstream_database_open (AppstreamDatabase *self); gboolean appstream_database_db_exists (AppstreamDatabase *self); GPtrArray * appstream_database_get_all_applications (AppstreamDatabase *self); GPtrArray * appstream_database_find_applications (AppstreamDatabase *self, AppstreamSearchQuery *query); GPtrArray * appstream_database_find_applications_by_str (AppstreamDatabase *self, const gchar *search_str, const gchar *categories_str); AppstreamDatabase * appstream_database_new (void); const gchar * appstream_database_get_database_path (AppstreamDatabase *self); struct AppstreamDatabase; struct AppstreamDatabaseClass; Description Details APPSTREAM_TYPE_SEARCH_QUERY APPSTREAM_TYPE_SEARCH_QUERY #define APPSTREAM_TYPE_SEARCH_QUERY (appstream_search_query_get_type ()) The type for AppstreamSearchQuery. appstream_search_query_get_search_all_categories () appstream_search_query_get_search_all_categories gboolean appstream_search_query_get_search_all_categories (AppstreamSearchQuery *self); self : the AppstreamSearchQuery instance Returns :TRUE if we search in all categories appstream_search_query_set_search_all_categories () appstream_search_query_set_search_all_categories void appstream_search_query_set_search_all_categories (AppstreamSearchQuery *self); Shortcut to set that we should search in all categories self : the AppstreamSearchQuery instance appstream_search_query_set_categories_from_string () appstream_search_query_set_categories_from_string void appstream_search_query_set_categories_from_string (AppstreamSearchQuery *self, const gchar *categories_str); Set the categories list from a string self : the AppstreamSearchQuery instance categories_str :  . Comma-separated list of category-names. [in] appstream_search_query_new () appstream_search_query_new AppstreamSearchQuery * appstream_search_query_new (const gchar *term); term :   appstream_search_query_get_search_term () appstream_search_query_get_search_term const gchar * appstream_search_query_get_search_term (AppstreamSearchQuery *self); Get and return the current value of the "search-term" property. self : the AppstreamSearchQuery instance to query Returns :the value of the "search-term" property appstream_search_query_set_search_term () appstream_search_query_set_search_term void appstream_search_query_set_search_term (AppstreamSearchQuery *self, const gchar *value); Set the value of the "search-term" property to value. self : the AppstreamSearchQuery instance to modify value : the new value of the "search-term" property appstream_search_query_get_categories () appstream_search_query_get_categories gchar ** appstream_search_query_get_categories (AppstreamSearchQuery *self, int *result_length1); Get and return the current value of the "categories" property. self : the AppstreamSearchQuery instance to query Returns :the value of the "categories" property appstream_search_query_set_categories () appstream_search_query_set_categories void appstream_search_query_set_categories (AppstreamSearchQuery *self, gchar **value, int value_length1); Set the value of the "categories" property to value. self : the AppstreamSearchQuery instance to modify value : the new value of the "categories" property struct AppstreamSearchQuery AppstreamSearchQuery struct AppstreamSearchQuery { GObject parent_instance; AppstreamSearchQueryPrivate * priv; }; Class describing a query on the AppStream application database struct AppstreamSearchQueryClass AppstreamSearchQueryClass struct AppstreamSearchQueryClass { GObjectClass parent_class; }; The class structure for APPSTREAM_TYPE_SEARCH_QUERY. All the fields in this structure are private and should never be accessed directly. GObjectClass parent_class; the parent class structure APPSTREAM_TYPE_DATABASE APPSTREAM_TYPE_DATABASE #define APPSTREAM_TYPE_DATABASE (appstream_database_get_type ()) The type for AppstreamDatabase. appstream_database_open () appstream_database_open gboolean appstream_database_open (AppstreamDatabase *self); self : the AppstreamDatabase instance appstream_database_db_exists () appstream_database_db_exists gboolean appstream_database_db_exists (AppstreamDatabase *self); self : the AppstreamDatabase instance Returns :TRUE if the application database exists appstream_database_get_all_applications () appstream_database_get_all_applications GPtrArray * appstream_database_get_all_applications (AppstreamDatabase *self); self : the AppstreamDatabase instance appstream_database_find_applications () appstream_database_find_applications GPtrArray * appstream_database_find_applications (AppstreamDatabase *self, AppstreamSearchQuery *query); self : the AppstreamDatabase instance query :   appstream_database_find_applications_by_str () appstream_database_find_applications_by_str GPtrArray * appstream_database_find_applications_by_str (AppstreamDatabase *self, const gchar *search_str, const gchar *categories_str); self : the AppstreamDatabase instance search_str :   categories_str :   appstream_database_new () appstream_database_new AppstreamDatabase * appstream_database_new (void); appstream_database_get_database_path () appstream_database_get_database_path const gchar * appstream_database_get_database_path (AppstreamDatabase *self); Get and return the current value of the "database-path" property. self : the AppstreamDatabase instance to query Returns :the value of the "database-path" property struct AppstreamDatabase AppstreamDatabase struct AppstreamDatabase { GObject parent_instance; AppstreamDatabasePrivate * priv; }; Class to access the AppStream application database struct AppstreamDatabaseClass AppstreamDatabaseClass struct AppstreamDatabaseClass { GObjectClass parent_class; gboolean (*open) (AppstreamDatabase* self); }; The class structure for APPSTREAM_TYPE_DATABASE. All the fields in this structure are private and should never be accessed directly. GObjectClass parent_class; the parent class structure open () virtual method called by appstream_database_open() ./AppStream-0.4.0/docs/api/sgml.stamp0000664000175000017500000000001112230763256017463 0ustar matthiasmatthiastimestamp./AppStream-0.4.0/docs/api/appstream-docs.xml0000664000175000017500000000276312230761665021141 0ustar matthiasmatthias ]> LibAppStream Reference Manual for libappstream 0.x. The latest version of this documentation can be found on-line at http://www.freedesktop.org/software/appstream/apidoc/. appstream API Reference API Index Index of deprecated API AppStream Manual Pages ./AppStream-0.4.0/docs/api/html/0000755000175000017500000000000012230763262016422 5ustar matthiasmatthias./AppStream-0.4.0/docs/api/html/appstream-AppstreamSearchQuery.html0000644000175000017500000010472312230763261025420 0ustar matthiasmatthias AppstreamSearchQuery

AppstreamSearchQuery

AppstreamSearchQuery — Class describing a query on the AppStream application database

Synopsis

#define             APPSTREAM_TYPE_SEARCH_QUERY
gboolean            appstream_search_query_get_search_all_categories
                                                        (AppstreamSearchQuery *self);
void                appstream_search_query_set_search_all_categories
                                                        (AppstreamSearchQuery *self);
void                appstream_search_query_set_categories_from_string
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *categories_str);
AppstreamSearchQuery * appstream_search_query_new       (const gchar *term);
const gchar *       appstream_search_query_get_search_term
                                                        (AppstreamSearchQuery *self);
void                appstream_search_query_set_search_term
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *value);
gchar **            appstream_search_query_get_categories
                                                        (AppstreamSearchQuery *self,
                                                         int *result_length1);
void                appstream_search_query_set_categories
                                                        (AppstreamSearchQuery *self,
                                                         gchar **value,
                                                         int value_length1);
struct              AppstreamSearchQuery;
struct              AppstreamSearchQueryClass;
#define             APPSTREAM_TYPE_DATABASE
gboolean            appstream_database_open             (AppstreamDatabase *self);
gboolean            appstream_database_db_exists        (AppstreamDatabase *self);
GPtrArray *         appstream_database_get_all_applications
                                                        (AppstreamDatabase *self);
GPtrArray *         appstream_database_find_applications
                                                        (AppstreamDatabase *self,
                                                         AppstreamSearchQuery *query);
GPtrArray *         appstream_database_find_applications_by_str
                                                        (AppstreamDatabase *self,
                                                         const gchar *search_str,
                                                         const gchar *categories_str);
AppstreamDatabase * appstream_database_new              (void);
const gchar *       appstream_database_get_database_path
                                                        (AppstreamDatabase *self);
struct              AppstreamDatabase;
struct              AppstreamDatabaseClass;

Description

Details

APPSTREAM_TYPE_SEARCH_QUERY

#define APPSTREAM_TYPE_SEARCH_QUERY (appstream_search_query_get_type ())

The type for AppstreamSearchQuery.


appstream_search_query_get_search_all_categories ()

gboolean            appstream_search_query_get_search_all_categories
                                                        (AppstreamSearchQuery *self);

self :

the AppstreamSearchQuery instance

Returns :

TRUE if we search in all categories

appstream_search_query_set_search_all_categories ()

void                appstream_search_query_set_search_all_categories
                                                        (AppstreamSearchQuery *self);

Shortcut to set that we should search in all categories

self :

the AppstreamSearchQuery instance

appstream_search_query_set_categories_from_string ()

void                appstream_search_query_set_categories_from_string
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *categories_str);

Set the categories list from a string

self :

the AppstreamSearchQuery instance

categories_str :

 . Comma-separated list of category-names. [in]

appstream_search_query_new ()

AppstreamSearchQuery * appstream_search_query_new       (const gchar *term);

term :

 

appstream_search_query_get_search_term ()

const gchar *       appstream_search_query_get_search_term
                                                        (AppstreamSearchQuery *self);

Get and return the current value of the "search-term" property.

self :

the AppstreamSearchQuery instance to query

Returns :

the value of the "search-term" property

appstream_search_query_set_search_term ()

void                appstream_search_query_set_search_term
                                                        (AppstreamSearchQuery *self,
                                                         const gchar *value);

Set the value of the "search-term" property to value.

self :

the AppstreamSearchQuery instance to modify

value :

the new value of the "search-term" property

appstream_search_query_get_categories ()

gchar **            appstream_search_query_get_categories
                                                        (AppstreamSearchQuery *self,
                                                         int *result_length1);

Get and return the current value of the "categories" property.

self :

the AppstreamSearchQuery instance to query

Returns :

the value of the "categories" property

appstream_search_query_set_categories ()

void                appstream_search_query_set_categories
                                                        (AppstreamSearchQuery *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "categories" property to value.

self :

the AppstreamSearchQuery instance to modify

value :

the new value of the "categories" property

struct AppstreamSearchQuery

struct AppstreamSearchQuery {
	GObject parent_instance;
	AppstreamSearchQueryPrivate * priv;
};

Class describing a query on the AppStream application database


struct AppstreamSearchQueryClass

struct AppstreamSearchQueryClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_SEARCH_QUERY. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure

APPSTREAM_TYPE_DATABASE

#define APPSTREAM_TYPE_DATABASE (appstream_database_get_type ())

The type for AppstreamDatabase.


appstream_database_open ()

gboolean            appstream_database_open             (AppstreamDatabase *self);

self :

the AppstreamDatabase instance

appstream_database_db_exists ()

gboolean            appstream_database_db_exists        (AppstreamDatabase *self);

self :

the AppstreamDatabase instance

Returns :

TRUE if the application database exists

appstream_database_get_all_applications ()

GPtrArray *         appstream_database_get_all_applications
                                                        (AppstreamDatabase *self);

self :

the AppstreamDatabase instance

appstream_database_find_applications ()

GPtrArray *         appstream_database_find_applications
                                                        (AppstreamDatabase *self,
                                                         AppstreamSearchQuery *query);

self :

the AppstreamDatabase instance

query :

 

appstream_database_find_applications_by_str ()

GPtrArray *         appstream_database_find_applications_by_str
                                                        (AppstreamDatabase *self,
                                                         const gchar *search_str,
                                                         const gchar *categories_str);

self :

the AppstreamDatabase instance

search_str :

 

categories_str :

 

appstream_database_new ()

AppstreamDatabase * appstream_database_new              (void);

appstream_database_get_database_path ()

const gchar *       appstream_database_get_database_path
                                                        (AppstreamDatabase *self);

Get and return the current value of the "database-path" property.

self :

the AppstreamDatabase instance to query

Returns :

the value of the "database-path" property

struct AppstreamDatabase

struct AppstreamDatabase {
	GObject parent_instance;
	AppstreamDatabasePrivate * priv;
};

Class to access the AppStream application database


struct AppstreamDatabaseClass

struct AppstreamDatabaseClass {
	GObjectClass parent_class;
	gboolean (*open) (AppstreamDatabase* self);
};

The class structure for APPSTREAM_TYPE_DATABASE. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure

open ()

virtual method called by appstream_database_open()
./AppStream-0.4.0/docs/api/html/annotation-glossary.html0000644000175000017500000000500612230763261023323 0ustar matthiasmatthias Annotation Glossary

Annotation Glossary

A

array

Parameter points to an array of items.

I

in

Parameter for input. Default is transfer none.

T

transfer none

Don't free data after the code is done.

./AppStream-0.4.0/docs/api/html/index.sgml0000644000175000017500000003742512230763261020427 0ustar matthiasmatthias ./AppStream-0.4.0/docs/api/html/appstream-AppstreamDistroDetails.html0000644000175000017500000004321112230763261025731 0ustar matthiasmatthias AppstreamDistroDetails

AppstreamDistroDetails

AppstreamDistroDetails — Get details about the AppStream settings for the current distribution

Description

Details

APPSTREAM_TYPE_DISTRO_DETAILS

#define APPSTREAM_TYPE_DISTRO_DETAILS (appstream_distro_details_get_type ())

The type for AppstreamDistroDetails.


appstream_distro_details_get_icon_repository_paths ()

gchar **            appstream_distro_details_get_icon_repository_paths
                                                        (AppstreamDistroDetails *self);

Returns list of icon-paths for software-center applications to use. Icons of software (even if it is not installed) are stored in these locations.

self :

the AppstreamDistroDetails instance

Returns :

A NULL-terminated array of paths. [array length=result_length1]

appstream_distro_details_config_distro_get_str ()

gchar *             appstream_distro_details_config_distro_get_str
                                                        (AppstreamDistroDetails *self,
                                                         const gchar *key);

self :

the AppstreamDistroDetails instance

key :

 

appstream_distro_details_config_distro_get_bool ()

gboolean            appstream_distro_details_config_distro_get_bool
                                                        (AppstreamDistroDetails *self,
                                                         const gchar *key);

self :

the AppstreamDistroDetails instance

key :

 

appstream_distro_details_new ()

AppstreamDistroDetails * appstream_distro_details_new   (void);

appstream_distro_details_get_distro_id ()

const gchar *       appstream_distro_details_get_distro_id
                                                        (AppstreamDistroDetails *self);

Get and return the current value of the "distro-id" property.

self :

the AppstreamDistroDetails instance to query

Returns :

the value of the "distro-id" property

appstream_distro_details_get_distro_name ()

const gchar *       appstream_distro_details_get_distro_name
                                                        (AppstreamDistroDetails *self);

Get and return the current value of the "distro-name" property.

self :

the AppstreamDistroDetails instance to query

Returns :

the value of the "distro-name" property

appstream_distro_details_get_distro_version ()

const gchar *       appstream_distro_details_get_distro_version
                                                        (AppstreamDistroDetails *self);

Get and return the current value of the "distro-version" property.

self :

the AppstreamDistroDetails instance to query

Returns :

the value of the "distro-version" property

struct AppstreamDistroDetails

struct AppstreamDistroDetails {
	GObject parent_instance;
	AppstreamDistroDetailsPrivate * priv;
};

Get details about the AppStream settings for the current distribution


struct AppstreamDistroDetailsClass

struct AppstreamDistroDetailsClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_DISTRO_DETAILS. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure
./AppStream-0.4.0/docs/api/html/style.css0000644000175000017500000001210012230763261020265 0ustar matthiasmatthias.synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; border: solid 1px #d3d7cf; padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ background: #e6f3ff; border: solid 1px #729fcf; padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } @media screen { sup a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 3.2em; padding-bottom: 20em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; z-index: 10; } .navigation a, .navigation a:visited { /* tango:scarlet red 3 */ color: #a40000; } .navigation a:hover { /* tango:scarlet red 1 */ color: #ef2929; } td.shortcuts { /* tango:scarlet red 1 */ color: #ef2929; font-size: 80%; white-space: nowrap; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } .navigation .title { font-size: 200%; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } hr { /* tango:aluminium 3 */ color: #babdb6; background: #babdb6; border: none 0px; height: 1px; clear: both; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .warning { /* tango:orange 0/1 */ background: #ffeed9; border-color: #ffb04f; } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; border-color: #abf562; } .note, .warning { padding: 0.5em; border-width: 1px; border-style: solid; } .note h3, .warning h3 { margin-top: 0.0em } .note p, .warning p { margin-bottom: 0.0em } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-size: 80%; font-weight: normal; } /* code listings */ .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ .listing_code .programlisting .function { color: #000000; font-weight: bold; } .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .normal { color: #000000; } .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ .listing_code .programlisting .type { color: #000000; } .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; } .listing_lines pre, .listing_code pre { margin: 0px; } ./AppStream-0.4.0/docs/api/html/appstream.devhelp20000664000175000017500000003666212230763261022067 0ustar matthiasmatthias ./AppStream-0.4.0/docs/api/html/manpages.html0000644000175000017500000000333512230763261021106 0ustar matthiasmatthias AppStream Manual Pages

AppStream Manual Pages

appstream-index — Manage the AppStream application index
./AppStream-0.4.0/docs/api/html/home.png0000644000175000017500000000107512230763261020062 0ustar matthiasmatthiasPNG  IHDRשPLTE  $$$(((,,,000888<<<@@@OOOPPP[[[___```lll{{{?*tRNS  $(,4@GKSghkotwa7IDATx[7@^E b'q!DdocDY Ώ&}О,sTa}y&C`+ CLn9P;as.'A2t7غ o/;n5iI+4a`-;#`ȲW̐rRX`vGA?\q҆*BM5aDy%h8[f{р߽CVF3IENDB`./AppStream-0.4.0/docs/api/html/index.html0000644000175000017500000000572612230763261020430 0ustar matthiasmatthias LibAppStream Reference Manual

for libappstream 0.x. The latest version of this documentation can be found on-line at http://www.freedesktop.org/software/appstream/apidoc/.


appstream API Reference
AppstreamDistroDetails — Get details about the AppStream settings for the current distribution
AppstreamAppInfo — Class to store data describing an application in AppStream
AppstreamCategory — Description of an XDG Menu category
AppstreamSearchQuery — Class describing a query on the AppStream application database
AppstreamScreenshotService — Get access to a package screenshot service which matches the current distribution.
API Index
Index of deprecated API
Annotation Glossary
AppStream Manual Pages
appstream-index — Manage the AppStream application index
./AppStream-0.4.0/docs/api/html/right.png0000644000175000017500000000057412230763261020252 0ustar matthiasmatthiasPNG  IHDRש{PLTE ###+++@@@WtRNS (48@GX[ytIDATxڅ0 PS@XZ -%e I<`eA٬Z9(1'n/"U!Dhw$4QX$ AlXR^>8Mzmt>k7 O$ٞ=mVQ.JO9  IENDB`./AppStream-0.4.0/docs/api/html/up.png0000644000175000017500000000044212230763261017553 0ustar matthiasmatthiasPNG  IHDRw=IDATx!@ H0(46` l$n$ pl]Hʆy ެ+$G턈)5E.LEAUUY" yX"|5•3"n9#"|;0#7#eYRD!~/_"4 Y!@)Esi:( imKO1(Cǹٹ>m RB/)1 mtArt)_&IENDB`./AppStream-0.4.0/docs/api/html/appstream-AppstreamAppInfo.html0000644000175000017500000015676412230763262024536 0ustar matthiasmatthias AppstreamAppInfo

AppstreamAppInfo

AppstreamAppInfo — Class to store data describing an application in AppStream

Synopsis

#define             APPSTREAM_TYPE_APP_INFO
gboolean            appstream_app_info_is_valid         (AppstreamAppInfo *self);
gchar *             appstream_app_info_to_string        (AppstreamAppInfo *self);
void                appstream_app_info_set_categories_from_str
                                                        (AppstreamAppInfo *self,
                                                         const gchar *categories_str);
AppstreamAppInfo *  appstream_app_info_new              (void);
const gchar *       appstream_app_info_get_pkgname      (AppstreamAppInfo *self);
void                appstream_app_info_set_pkgname      (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_desktop_file (AppstreamAppInfo *self);
void                appstream_app_info_set_desktop_file (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_name         (AppstreamAppInfo *self);
void                appstream_app_info_set_name         (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_name_original
                                                        (AppstreamAppInfo *self);
void                appstream_app_info_set_name_original
                                                        (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_summary      (AppstreamAppInfo *self);
void                appstream_app_info_set_summary      (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_description  (AppstreamAppInfo *self);
void                appstream_app_info_set_description  (AppstreamAppInfo *self,
                                                         const gchar *value);
gchar **            appstream_app_info_get_keywords     (AppstreamAppInfo *self,
                                                         int *result_length1);
void                appstream_app_info_set_keywords     (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);
const gchar *       appstream_app_info_get_icon         (AppstreamAppInfo *self);
void                appstream_app_info_set_icon         (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_icon_url     (AppstreamAppInfo *self);
void                appstream_app_info_set_icon_url     (AppstreamAppInfo *self,
                                                         const gchar *value);
const gchar *       appstream_app_info_get_homepage     (AppstreamAppInfo *self);
void                appstream_app_info_set_homepage     (AppstreamAppInfo *self,
                                                         const gchar *value);
gchar **            appstream_app_info_get_categories   (AppstreamAppInfo *self,
                                                         int *result_length1);
void                appstream_app_info_set_categories   (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);
gchar **            appstream_app_info_get_mimetypes    (AppstreamAppInfo *self,
                                                         int *result_length1);
void                appstream_app_info_set_mimetypes    (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);
struct              AppstreamAppInfo;
struct              AppstreamAppInfoClass;

Description

Details

APPSTREAM_TYPE_APP_INFO

#define APPSTREAM_TYPE_APP_INFO (appstream_app_info_get_type ())

The type for AppstreamAppInfo.


appstream_app_info_is_valid ()

gboolean            appstream_app_info_is_valid         (AppstreamAppInfo *self);

Check if the essential properties of this AppInfo instance are populated with useful data.

self :

the AppstreamAppInfo instance

appstream_app_info_to_string ()

gchar *             appstream_app_info_to_string        (AppstreamAppInfo *self);

self :

the AppstreamAppInfo instance

appstream_app_info_set_categories_from_str ()

void                appstream_app_info_set_categories_from_str
                                                        (AppstreamAppInfo *self,
                                                         const gchar *categories_str);

Set the categories list from a string

self :

the AppstreamAppInfo instance

categories_str :

 . Comma-separated list of category-names. [in]

appstream_app_info_new ()

AppstreamAppInfo *  appstream_app_info_new              (void);

appstream_app_info_get_pkgname ()

const gchar *       appstream_app_info_get_pkgname      (AppstreamAppInfo *self);

Get and return the current value of the "pkgname" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "pkgname" property

appstream_app_info_set_pkgname ()

void                appstream_app_info_set_pkgname      (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "pkgname" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "pkgname" property

appstream_app_info_get_desktop_file ()

const gchar *       appstream_app_info_get_desktop_file (AppstreamAppInfo *self);

Get and return the current value of the "desktop-file" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "desktop-file" property

appstream_app_info_set_desktop_file ()

void                appstream_app_info_set_desktop_file (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "desktop-file" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "desktop-file" property

appstream_app_info_get_name ()

const gchar *       appstream_app_info_get_name         (AppstreamAppInfo *self);

Get and return the current value of the "name" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "name" property

appstream_app_info_set_name ()

void                appstream_app_info_set_name         (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "name" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "name" property

appstream_app_info_get_name_original ()

const gchar *       appstream_app_info_get_name_original
                                                        (AppstreamAppInfo *self);

Get and return the current value of the "name-original" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "name-original" property

appstream_app_info_set_name_original ()

void                appstream_app_info_set_name_original
                                                        (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "name-original" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "name-original" property

appstream_app_info_get_summary ()

const gchar *       appstream_app_info_get_summary      (AppstreamAppInfo *self);

Get and return the current value of the "summary" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "summary" property

appstream_app_info_set_summary ()

void                appstream_app_info_set_summary      (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "summary" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "summary" property

appstream_app_info_get_description ()

const gchar *       appstream_app_info_get_description  (AppstreamAppInfo *self);

Get and return the current value of the "description" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "description" property

appstream_app_info_set_description ()

void                appstream_app_info_set_description  (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "description" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "description" property

appstream_app_info_get_keywords ()

gchar **            appstream_app_info_get_keywords     (AppstreamAppInfo *self,
                                                         int *result_length1);

Get and return the current value of the "keywords" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "keywords" property

appstream_app_info_set_keywords ()

void                appstream_app_info_set_keywords     (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "keywords" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "keywords" property

appstream_app_info_get_icon ()

const gchar *       appstream_app_info_get_icon         (AppstreamAppInfo *self);

Get and return the current value of the "icon" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "icon" property

appstream_app_info_set_icon ()

void                appstream_app_info_set_icon         (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "icon" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "icon" property

appstream_app_info_get_icon_url ()

const gchar *       appstream_app_info_get_icon_url     (AppstreamAppInfo *self);

Get and return the current value of the "icon-url" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "icon-url" property

appstream_app_info_set_icon_url ()

void                appstream_app_info_set_icon_url     (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "icon-url" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "icon-url" property

appstream_app_info_get_homepage ()

const gchar *       appstream_app_info_get_homepage     (AppstreamAppInfo *self);

Get and return the current value of the "homepage" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "homepage" property

appstream_app_info_set_homepage ()

void                appstream_app_info_set_homepage     (AppstreamAppInfo *self,
                                                         const gchar *value);

Set the value of the "homepage" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "homepage" property

appstream_app_info_get_categories ()

gchar **            appstream_app_info_get_categories   (AppstreamAppInfo *self,
                                                         int *result_length1);

Get and return the current value of the "categories" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "categories" property

appstream_app_info_set_categories ()

void                appstream_app_info_set_categories   (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "categories" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "categories" property

appstream_app_info_get_mimetypes ()

gchar **            appstream_app_info_get_mimetypes    (AppstreamAppInfo *self,
                                                         int *result_length1);

Get and return the current value of the "mimetypes" property.

self :

the AppstreamAppInfo instance to query

Returns :

the value of the "mimetypes" property

appstream_app_info_set_mimetypes ()

void                appstream_app_info_set_mimetypes    (AppstreamAppInfo *self,
                                                         gchar **value,
                                                         int value_length1);

Set the value of the "mimetypes" property to value.

self :

the AppstreamAppInfo instance to modify

value :

the new value of the "mimetypes" property

struct AppstreamAppInfo

struct AppstreamAppInfo {
	GObject parent_instance;
	AppstreamAppInfoPrivate * priv;
};

Class to store data describing an application in AppStream


struct AppstreamAppInfoClass

struct AppstreamAppInfoClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_APP_INFO. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure
./AppStream-0.4.0/docs/api/html/ch01.html0000644000175000017500000000524112230763262020045 0ustar matthiasmatthias appstream API Reference

appstream API Reference

AppstreamDistroDetails — Get details about the AppStream settings for the current distribution
AppstreamAppInfo — Class to store data describing an application in AppStream
AppstreamCategory — Description of an XDG Menu category
AppstreamSearchQuery — Class describing a query on the AppStream application database
AppstreamScreenshotService — Get access to a package screenshot service which matches the current distribution.
./AppStream-0.4.0/docs/api/html/left.png0000644000175000017500000000055612230763261020067 0ustar matthiasmatthiasPNG  IHDRש~PLTE(((;;;@@@v:tRNS $04 AppstreamScreenshotService

AppstreamScreenshotService

AppstreamScreenshotService — Get access to a package screenshot service which matches the current distribution.

Description

Details

APPSTREAM_TYPE_SCREENSHOT_SERVICE

#define APPSTREAM_TYPE_SCREENSHOT_SERVICE (appstream_screenshot_service_get_type ())

The type for AppstreamScreenshotService.


appstream_screenshot_service_get_thumbnail_url ()

gchar *             appstream_screenshot_service_get_thumbnail_url
                                                        (AppstreamScreenshotService *self,
                                                         const gchar *package_name);

Get the url of a screenshot thumbnail for the package.

self :

the AppstreamScreenshotService instance

package_name :

 . The name of the package which the screenshot belongs to. [in]

appstream_screenshot_service_get_screenshot_url ()

gchar *             appstream_screenshot_service_get_screenshot_url
                                                        (AppstreamScreenshotService *self,
                                                         const gchar *package_name);

Get the url of a screenshot for the package.

self :

the AppstreamScreenshotService instance

package_name :

 . The name of the package which the screenshot belongs to. [in]

appstream_screenshot_service_new ()

AppstreamScreenshotService * appstream_screenshot_service_new
                                                        (void);

appstream_screenshot_service_get_base_url ()

const gchar *       appstream_screenshot_service_get_base_url
                                                        (AppstreamScreenshotService *self);

Get and return the current value of the "base-url" property.

self :

the AppstreamScreenshotService instance to query

Returns :

the value of the "base-url" property

struct AppstreamScreenshotService

struct AppstreamScreenshotService {
	GObject parent_instance;
	AppstreamScreenshotServicePrivate * priv;
};

Get access to a package screenshot service which matches the current distribution.


struct AppstreamScreenshotServiceClass

struct AppstreamScreenshotServiceClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_SCREENSHOT_SERVICE. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure
./AppStream-0.4.0/docs/api/html/deprecated-api-index.html0000644000175000017500000000307512230763262023271 0ustar matthiasmatthias Index of deprecated API

Index of deprecated API

./AppStream-0.4.0/docs/api/html/appstream-settings.html0000644000175000017500000000536012230763262023146 0ustar matthiasmatthias settings

settings

settings

Synopsis

#define             APPSTREAM_ICON_PATH

Description

Details

APPSTREAM_ICON_PATH

#define APPSTREAM_ICON_PATH APPSTREAM_APPSTREAM_BASE_PATH "/icons"

The path where software icons (of not-installed software) are located.

./AppStream-0.4.0/docs/api/html/api-index-full.html0000644000175000017500000010175412230763262022136 0ustar matthiasmatthias API Index

API Index

A

AppstreamAppInfo, struct in AppstreamAppInfo
AppstreamAppInfoClass, struct in AppstreamAppInfo
appstream_app_info_get_categories, function in AppstreamAppInfo
appstream_app_info_get_description, function in AppstreamAppInfo
appstream_app_info_get_desktop_file, function in AppstreamAppInfo
appstream_app_info_get_homepage, function in AppstreamAppInfo
appstream_app_info_get_icon, function in AppstreamAppInfo
appstream_app_info_get_icon_url, function in AppstreamAppInfo
appstream_app_info_get_keywords, function in AppstreamAppInfo
appstream_app_info_get_mimetypes, function in AppstreamAppInfo
appstream_app_info_get_name, function in AppstreamAppInfo
appstream_app_info_get_name_original, function in AppstreamAppInfo
appstream_app_info_get_pkgname, function in AppstreamAppInfo
appstream_app_info_get_summary, function in AppstreamAppInfo
appstream_app_info_is_valid, function in AppstreamAppInfo
appstream_app_info_new, function in AppstreamAppInfo
appstream_app_info_set_categories, function in AppstreamAppInfo
appstream_app_info_set_categories_from_str, function in AppstreamAppInfo
appstream_app_info_set_description, function in AppstreamAppInfo
appstream_app_info_set_desktop_file, function in AppstreamAppInfo
appstream_app_info_set_homepage, function in AppstreamAppInfo
appstream_app_info_set_icon, function in AppstreamAppInfo
appstream_app_info_set_icon_url, function in AppstreamAppInfo
appstream_app_info_set_keywords, function in AppstreamAppInfo
appstream_app_info_set_mimetypes, function in AppstreamAppInfo
appstream_app_info_set_name, function in AppstreamAppInfo
appstream_app_info_set_name_original, function in AppstreamAppInfo
appstream_app_info_set_pkgname, function in AppstreamAppInfo
appstream_app_info_set_summary, function in AppstreamAppInfo
appstream_app_info_to_string, function in AppstreamAppInfo

C

AppstreamCategory, struct in AppstreamCategory
AppstreamCategoryClass, struct in AppstreamCategory
appstream_category_add_subcategory, function in AppstreamCategory
appstream_category_get_directory, function in AppstreamCategory
appstream_category_get_excluded, function in AppstreamCategory
appstream_category_get_icon, function in AppstreamCategory
appstream_category_get_included, function in AppstreamCategory
appstream_category_get_level, function in AppstreamCategory
appstream_category_get_name, function in AppstreamCategory
appstream_category_get_subcategories, function in AppstreamCategory
appstream_category_get_summary, function in AppstreamCategory
appstream_category_has_subcategory, function in AppstreamCategory
appstream_category_new, function in AppstreamCategory
appstream_category_remove_subcategory, function in AppstreamCategory

D

AppstreamDatabase, struct in AppstreamSearchQuery
AppstreamDatabaseClass, struct in AppstreamSearchQuery
appstream_database_db_exists, function in AppstreamSearchQuery
appstream_database_find_applications, function in AppstreamSearchQuery
appstream_database_find_applications_by_str, function in AppstreamSearchQuery
appstream_database_get_all_applications, function in AppstreamSearchQuery
appstream_database_get_database_path, function in AppstreamSearchQuery
appstream_database_new, function in AppstreamSearchQuery
appstream_database_open, function in AppstreamSearchQuery
AppstreamDistroDetails, struct in AppstreamDistroDetails
AppstreamDistroDetailsClass, struct in AppstreamDistroDetails
appstream_distro_details_config_distro_get_bool, function in AppstreamDistroDetails
appstream_distro_details_config_distro_get_str, function in AppstreamDistroDetails
appstream_distro_details_get_distro_id, function in AppstreamDistroDetails
appstream_distro_details_get_distro_name, function in AppstreamDistroDetails
appstream_distro_details_get_distro_version, function in AppstreamDistroDetails
appstream_distro_details_get_icon_repository_paths, function in AppstreamDistroDetails
appstream_distro_details_new, function in AppstreamDistroDetails

G

appstream_get_system_categories, function in AppstreamCategory

M

AppstreamMenuParser, struct in AppstreamCategory
AppstreamMenuParserClass, struct in AppstreamCategory
appstream_menu_parser_get_update_category_data, function in AppstreamCategory
appstream_menu_parser_new, function in AppstreamCategory
appstream_menu_parser_new_from_file, function in AppstreamCategory
appstream_menu_parser_parse, function in AppstreamCategory
appstream_menu_parser_ref, function in AppstreamCategory
appstream_menu_parser_set_update_category_data, function in AppstreamCategory
appstream_menu_parser_unref, function in AppstreamCategory

P

appstream_param_spec_menu_parser, function in AppstreamCategory

S

AppstreamScreenshotService, struct in AppstreamScreenshotService
AppstreamScreenshotServiceClass, struct in AppstreamScreenshotService
appstream_screenshot_service_get_base_url, function in AppstreamScreenshotService
appstream_screenshot_service_get_screenshot_url, function in AppstreamScreenshotService
appstream_screenshot_service_get_thumbnail_url, function in AppstreamScreenshotService
appstream_screenshot_service_new, function in AppstreamScreenshotService
AppstreamSearchQuery, struct in AppstreamSearchQuery
AppstreamSearchQueryClass, struct in AppstreamSearchQuery
appstream_search_query_get_categories, function in AppstreamSearchQuery
appstream_search_query_get_search_all_categories, function in AppstreamSearchQuery
appstream_search_query_get_search_term, function in AppstreamSearchQuery
appstream_search_query_new, function in AppstreamSearchQuery
appstream_search_query_set_categories, function in AppstreamSearchQuery
appstream_search_query_set_categories_from_string, function in AppstreamSearchQuery
appstream_search_query_set_search_all_categories, function in AppstreamSearchQuery
appstream_search_query_set_search_term, function in AppstreamSearchQuery

T

APPSTREAM_TYPE_APP_INFO, macro in AppstreamAppInfo
APPSTREAM_TYPE_CATEGORY, macro in AppstreamCategory
APPSTREAM_TYPE_DATABASE, macro in AppstreamSearchQuery
APPSTREAM_TYPE_DISTRO_DETAILS, macro in AppstreamDistroDetails
APPSTREAM_TYPE_MENU_PARSER, macro in AppstreamCategory
APPSTREAM_TYPE_SCREENSHOT_SERVICE, macro in AppstreamScreenshotService
APPSTREAM_TYPE_SEARCH_QUERY, macro in AppstreamSearchQuery

V

appstream_value_get_menu_parser, function in AppstreamCategory
appstream_value_set_menu_parser, function in AppstreamCategory
appstream_value_take_menu_parser, function in AppstreamCategory
./AppStream-0.4.0/docs/api/html/re06.html0000644000175000017500000000733412230763262020073 0ustar matthiasmatthias appstream-index

appstream-index

appstream-index — Manage the AppStream application index

Synopsis

appstream-index [COMMAND]

Description

This manual page documents briefly the appstream-index command.

appstream-index manages the AppStream index. The AppStream application index contains a list of all available applications for your distribution, matched with their native package names. It is generated using either AppStream-XML, Debian-DEP-11 or Ubuntu AppInstall data, which is provided by your distributor. The database is managed using a small DBus-activated daemon. This tool connects to the daemon and allows sending simple commands.

For more information about the AppStream project and the other components which are part of it, take a look at the AppStream pages at Freedesktop.org.

Options

--version

Display version number of appstream-index

-s, --search TERM

Search the AppStream application database for a given search term.

See Also

pkcon (1).

AUTHOR

This manual page was written by Matthias Klumpp .

./AppStream-0.4.0/docs/api/html/re05.html0000644000175000017500000000736312230763262020074 0ustar matthiasmatthias appstream-index

appstream-index

appstream-index — Manage the AppStream application index

Synopsis

appstream-index [COMMAND]

Description

This manual page documents briefly the appstream-index command.

appstream-index manages the AppStream index. The AppStream application index contains a list of all available applications for your distribution, matched to their native package names. It is generated using either AppStream-XML, Debian-DEP-11 or Ubuntu AppInstall data, which is provided by your distributor. The database is managed using a small DBus-activated daemon. This tool connects to the daemon and allows sending simple commands.

Options

--version

Display version number of appstream-index

--refresh

Recreate the AppStream database (useful if application data has changed).

You can use the --nowait option in combination with this parameter to not wait for the database update process to finish.

-s, --search TERM

Search the AppStream application database for a given search term.

See Also

pkcon (1).

AUTHOR

This manual page was written by Matthias Klumpp .

./AppStream-0.4.0/docs/api/html/appstream-AppstreamCategory.html0000644000175000017500000014504212230763262024742 0ustar matthiasmatthias AppstreamCategory

AppstreamCategory

AppstreamCategory — Description of an XDG Menu category

Synopsis

#define             APPSTREAM_TYPE_CATEGORY
void                appstream_category_add_subcategory  (AppstreamCategory *self,
                                                         AppstreamCategory *cat);
void                appstream_category_remove_subcategory
                                                        (AppstreamCategory *self,
                                                         AppstreamCategory *cat);
gboolean            appstream_category_has_subcategory  (AppstreamCategory *self);
AppstreamCategory * appstream_category_new              (void);
const gchar *       appstream_category_get_name         (AppstreamCategory *self);
const gchar *       appstream_category_get_summary      (AppstreamCategory *self);
const gchar *       appstream_category_get_icon         (AppstreamCategory *self);
const gchar *       appstream_category_get_directory    (AppstreamCategory *self);
GList *             appstream_category_get_included     (AppstreamCategory *self);
GList *             appstream_category_get_excluded     (AppstreamCategory *self);
gint                appstream_category_get_level        (AppstreamCategory *self);
GList *             appstream_category_get_subcategories
                                                        (AppstreamCategory *self);
struct              AppstreamCategory;
struct              AppstreamCategoryClass;
#define             APPSTREAM_TYPE_MENU_PARSER
GList *             appstream_menu_parser_parse         (AppstreamMenuParser *self);
AppstreamMenuParser * appstream_menu_parser_new         (void);
AppstreamMenuParser * appstream_menu_parser_new_from_file
                                                        (const gchar *menu_file);
gboolean            appstream_menu_parser_get_update_category_data
                                                        (AppstreamMenuParser *self);
void                appstream_menu_parser_set_update_category_data
                                                        (AppstreamMenuParser *self,
                                                         gboolean value);
struct              AppstreamMenuParser;
gpointer            appstream_menu_parser_ref           (gpointer instance);
void                appstream_menu_parser_unref         (gpointer instance);
GParamSpec *        appstream_param_spec_menu_parser    (const gchar *name,
                                                         const gchar *nick,
                                                         const gchar *blurb,
                                                         GType object_type,
                                                         GParamFlags flags);
void                appstream_value_set_menu_parser     (GValue *value,
                                                         gpointer v_object);
gpointer            appstream_value_get_menu_parser     (const GValue *value);
void                appstream_value_take_menu_parser    (GValue *value,
                                                         gpointer v_object);
struct              AppstreamMenuParserClass;
GList *             appstream_get_system_categories     (void);

Description

Details

APPSTREAM_TYPE_CATEGORY

#define APPSTREAM_TYPE_CATEGORY (appstream_category_get_type ())

The type for AppstreamCategory.


appstream_category_add_subcategory ()

void                appstream_category_add_subcategory  (AppstreamCategory *self,
                                                         AppstreamCategory *cat);

self :

the AppstreamCategory instance

cat :

 

appstream_category_remove_subcategory ()

void                appstream_category_remove_subcategory
                                                        (AppstreamCategory *self,
                                                         AppstreamCategory *cat);

self :

the AppstreamCategory instance

cat :

 

appstream_category_has_subcategory ()

gboolean            appstream_category_has_subcategory  (AppstreamCategory *self);

self :

the AppstreamCategory instance

Returns :

TRUE if this category has any subcategory

appstream_category_new ()

AppstreamCategory * appstream_category_new              (void);

appstream_category_get_name ()

const gchar *       appstream_category_get_name         (AppstreamCategory *self);

Get and return the current value of the "name" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "name" property

appstream_category_get_summary ()

const gchar *       appstream_category_get_summary      (AppstreamCategory *self);

Get and return the current value of the "summary" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "summary" property

appstream_category_get_icon ()

const gchar *       appstream_category_get_icon         (AppstreamCategory *self);

Get and return the current value of the "icon" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "icon" property

appstream_category_get_directory ()

const gchar *       appstream_category_get_directory    (AppstreamCategory *self);

Get and return the current value of the "directory" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "directory" property

appstream_category_get_included ()

GList *             appstream_category_get_included     (AppstreamCategory *self);

Get and return the current value of the "included" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "included" property

appstream_category_get_excluded ()

GList *             appstream_category_get_excluded     (AppstreamCategory *self);

Get and return the current value of the "excluded" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "excluded" property

appstream_category_get_level ()

gint                appstream_category_get_level        (AppstreamCategory *self);

Get and return the current value of the "level" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "level" property

appstream_category_get_subcategories ()

GList *             appstream_category_get_subcategories
                                                        (AppstreamCategory *self);

Get and return the current value of the "subcategories" property.

self :

the AppstreamCategory instance to query

Returns :

the value of the "subcategories" property

struct AppstreamCategory

struct AppstreamCategory {
	GObject parent_instance;
	AppstreamCategoryPrivate * priv;
};

Description of an XDG Menu category


struct AppstreamCategoryClass

struct AppstreamCategoryClass {
	GObjectClass parent_class;
};

The class structure for APPSTREAM_TYPE_CATEGORY. All the fields in this structure are private and should never be accessed directly.

GObjectClass parent_class;

the parent class structure

APPSTREAM_TYPE_MENU_PARSER

#define APPSTREAM_TYPE_MENU_PARSER (appstream_menu_parser_get_type ())

The type for AppstreamMenuParser.


appstream_menu_parser_parse ()

GList *             appstream_menu_parser_parse         (AppstreamMenuParser *self);

Parse the menu file

self :

the AppstreamMenuParser instance

Returns :

GList of Category objects found in the Menu, or NULL if there was an error

appstream_menu_parser_new ()

AppstreamMenuParser * appstream_menu_parser_new         (void);

Create a new MenuParser for the generic AppStream categories list


appstream_menu_parser_new_from_file ()

AppstreamMenuParser * appstream_menu_parser_new_from_file
                                                        (const gchar *menu_file);

Create a new MenuParser for an arbitrary menu file

menu_file :

 

appstream_menu_parser_get_update_category_data ()

gboolean            appstream_menu_parser_get_update_category_data
                                                        (AppstreamMenuParser *self);

Get and return the current value of the "update-category-data" property.

self :

the AppstreamMenuParser instance to query

Returns :

the value of the "update-category-data" property

appstream_menu_parser_set_update_category_data ()

void                appstream_menu_parser_set_update_category_data
                                                        (AppstreamMenuParser *self,
                                                         gboolean value);

Set the value of the "update-category-data" property to value.

self :

the AppstreamMenuParser instance to modify

value :

the new value of the "update-category-data" property

struct AppstreamMenuParser

struct AppstreamMenuParser {
	GTypeInstance parent_instance;
	volatile int ref_count;
	AppstreamMenuParserPrivate * priv;
};

Parser for XDG Menu files


appstream_menu_parser_ref ()

gpointer            appstream_menu_parser_ref           (gpointer instance);

Increases the reference count of object.

instance :

a AppstreamMenuParser.

Returns :

the same object

appstream_menu_parser_unref ()

void                appstream_menu_parser_unref         (gpointer instance);

Decreases the reference count of object. When its reference count drops to 0, the object is finalized (i.e. its memory is freed).

instance :

a AppstreamMenuParser.

appstream_param_spec_menu_parser ()

GParamSpec *        appstream_param_spec_menu_parser    (const gchar *name,
                                                         const gchar *nick,
                                                         const gchar *blurb,
                                                         GType object_type,
                                                         GParamFlags flags);

Creates a new GParamSpecBoxed instance specifying a APPSTREAM_TYPE_MENU_PARSER derived property.

See g_param_spec_internal() for details on property names.

name :

canonical name of the property specified

nick :

nick name for the property specified

blurb :

description of the property specified

object_type :

APPSTREAM_TYPE_MENU_PARSER derived type of this property

flags :

flags for the property specified

appstream_value_set_menu_parser ()

void                appstream_value_set_menu_parser     (GValue *value,
                                                         gpointer v_object);

Set the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to v_object.

appstream_value_set_menu_parser() increases the reference count of v_object (the GValue holds a reference to v_object). If you do not wish to increase the reference count of the object (i.e. you wish to pass your current reference to the GValue because you no longer need it), use appstream_value_take_menu_parser() instead.

It is important that your GValue holds a reference to v_object (either its own, or one it has taken) to ensure that the object won't be destroyed while the GValue still exists).

value :

a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type

v_object :

object value to be set

appstream_value_get_menu_parser ()

gpointer            appstream_value_get_menu_parser     (const GValue *value);

Get the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue.

value :

a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type

Returns :

object contents of value

appstream_value_take_menu_parser ()

void                appstream_value_take_menu_parser    (GValue *value,
                                                         gpointer v_object);

Sets the contents of a APPSTREAM_TYPE_MENU_PARSER derived GValue to v_object and takes over the ownership of the callers reference to v_object; the caller doesn't have to unref it any more (i.e. the reference count of the object is not increased).

If you want the GValue to hold its own reference to v_object, use appstream_value_set_menu_parser() instead.

value :

a valid GValue of APPSTREAM_TYPE_MENU_PARSER derived type

v_object :

object value to be set

struct AppstreamMenuParserClass

struct AppstreamMenuParserClass {
	GTypeClass parent_class;
	void (*finalize) (AppstreamMenuParser *self);
};

The class structure for APPSTREAM_TYPE_MENU_PARSER. All the fields in this structure are private and should never be accessed directly.

GTypeClass parent_class;

the parent class structure

finalize ()


appstream_get_system_categories ()

GList *             appstream_get_system_categories     (void);

Get a GList of the default AppStream categories

self :

the (null) instance
./AppStream-0.4.0/docs/api/appstream-overrides.txt0000664000175000017500000000000012115147462022203 0ustar matthiasmatthias./AppStream-0.4.0/docs/api/appstream-decl.txt0000644000175000017500000005275612230761573021142 0ustar matthiasmatthias APPSTREAM_TYPE_DISTRO_DETAILS #define APPSTREAM_TYPE_DISTRO_DETAILS (appstream_distro_details_get_type ()) APPSTREAM_DISTRO_DETAILS #define APPSTREAM_DISTRO_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPSTREAM_TYPE_DISTRO_DETAILS, AppstreamDistroDetails)) APPSTREAM_DISTRO_DETAILS_CLASS #define APPSTREAM_DISTRO_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPSTREAM_TYPE_DISTRO_DETAILS, AppstreamDistroDetailsClass)) APPSTREAM_IS_DISTRO_DETAILS #define APPSTREAM_IS_DISTRO_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPSTREAM_TYPE_DISTRO_DETAILS)) APPSTREAM_IS_DISTRO_DETAILS_CLASS #define APPSTREAM_IS_DISTRO_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPSTREAM_TYPE_DISTRO_DETAILS)) APPSTREAM_DISTRO_DETAILS_GET_CLASS #define APPSTREAM_DISTRO_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPSTREAM_TYPE_DISTRO_DETAILS, AppstreamDistroDetailsClass)) APPSTREAM_TYPE_APP_INFO #define APPSTREAM_TYPE_APP_INFO (appstream_app_info_get_type ()) APPSTREAM_APP_INFO #define APPSTREAM_APP_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPSTREAM_TYPE_APP_INFO, AppstreamAppInfo)) APPSTREAM_APP_INFO_CLASS #define APPSTREAM_APP_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPSTREAM_TYPE_APP_INFO, AppstreamAppInfoClass)) APPSTREAM_IS_APP_INFO #define APPSTREAM_IS_APP_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPSTREAM_TYPE_APP_INFO)) APPSTREAM_IS_APP_INFO_CLASS #define APPSTREAM_IS_APP_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPSTREAM_TYPE_APP_INFO)) APPSTREAM_APP_INFO_GET_CLASS #define APPSTREAM_APP_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPSTREAM_TYPE_APP_INFO, AppstreamAppInfoClass)) APPSTREAM_TYPE_SEARCH_QUERY #define APPSTREAM_TYPE_SEARCH_QUERY (appstream_search_query_get_type ()) APPSTREAM_SEARCH_QUERY #define APPSTREAM_SEARCH_QUERY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPSTREAM_TYPE_SEARCH_QUERY, AppstreamSearchQuery)) APPSTREAM_SEARCH_QUERY_CLASS #define APPSTREAM_SEARCH_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPSTREAM_TYPE_SEARCH_QUERY, AppstreamSearchQueryClass)) APPSTREAM_IS_SEARCH_QUERY #define APPSTREAM_IS_SEARCH_QUERY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPSTREAM_TYPE_SEARCH_QUERY)) APPSTREAM_IS_SEARCH_QUERY_CLASS #define APPSTREAM_IS_SEARCH_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPSTREAM_TYPE_SEARCH_QUERY)) APPSTREAM_SEARCH_QUERY_GET_CLASS #define APPSTREAM_SEARCH_QUERY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPSTREAM_TYPE_SEARCH_QUERY, AppstreamSearchQueryClass)) APPSTREAM_TYPE_DATABASE #define APPSTREAM_TYPE_DATABASE (appstream_database_get_type ()) APPSTREAM_DATABASE #define APPSTREAM_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPSTREAM_TYPE_DATABASE, AppstreamDatabase)) APPSTREAM_DATABASE_CLASS #define APPSTREAM_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPSTREAM_TYPE_DATABASE, AppstreamDatabaseClass)) APPSTREAM_IS_DATABASE #define APPSTREAM_IS_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPSTREAM_TYPE_DATABASE)) APPSTREAM_IS_DATABASE_CLASS #define APPSTREAM_IS_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPSTREAM_TYPE_DATABASE)) APPSTREAM_DATABASE_GET_CLASS #define APPSTREAM_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPSTREAM_TYPE_DATABASE, AppstreamDatabaseClass)) APPSTREAM_TYPE_CATEGORY #define APPSTREAM_TYPE_CATEGORY (appstream_category_get_type ()) APPSTREAM_CATEGORY #define APPSTREAM_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPSTREAM_TYPE_CATEGORY, AppstreamCategory)) APPSTREAM_CATEGORY_CLASS #define APPSTREAM_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPSTREAM_TYPE_CATEGORY, AppstreamCategoryClass)) APPSTREAM_IS_CATEGORY #define APPSTREAM_IS_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPSTREAM_TYPE_CATEGORY)) APPSTREAM_IS_CATEGORY_CLASS #define APPSTREAM_IS_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPSTREAM_TYPE_CATEGORY)) APPSTREAM_CATEGORY_GET_CLASS #define APPSTREAM_CATEGORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPSTREAM_TYPE_CATEGORY, AppstreamCategoryClass)) APPSTREAM_TYPE_MENU_PARSER #define APPSTREAM_TYPE_MENU_PARSER (appstream_menu_parser_get_type ()) APPSTREAM_MENU_PARSER #define APPSTREAM_MENU_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPSTREAM_TYPE_MENU_PARSER, AppstreamMenuParser)) APPSTREAM_MENU_PARSER_CLASS #define APPSTREAM_MENU_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPSTREAM_TYPE_MENU_PARSER, AppstreamMenuParserClass)) APPSTREAM_IS_MENU_PARSER #define APPSTREAM_IS_MENU_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPSTREAM_TYPE_MENU_PARSER)) APPSTREAM_IS_MENU_PARSER_CLASS #define APPSTREAM_IS_MENU_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPSTREAM_TYPE_MENU_PARSER)) APPSTREAM_MENU_PARSER_GET_CLASS #define APPSTREAM_MENU_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPSTREAM_TYPE_MENU_PARSER, AppstreamMenuParserClass)) APPSTREAM_TYPE_SCREENSHOT_SERVICE #define APPSTREAM_TYPE_SCREENSHOT_SERVICE (appstream_screenshot_service_get_type ()) APPSTREAM_SCREENSHOT_SERVICE #define APPSTREAM_SCREENSHOT_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPSTREAM_TYPE_SCREENSHOT_SERVICE, AppstreamScreenshotService)) APPSTREAM_SCREENSHOT_SERVICE_CLASS #define APPSTREAM_SCREENSHOT_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPSTREAM_TYPE_SCREENSHOT_SERVICE, AppstreamScreenshotServiceClass)) APPSTREAM_IS_SCREENSHOT_SERVICE #define APPSTREAM_IS_SCREENSHOT_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPSTREAM_TYPE_SCREENSHOT_SERVICE)) APPSTREAM_IS_SCREENSHOT_SERVICE_CLASS #define APPSTREAM_IS_SCREENSHOT_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPSTREAM_TYPE_SCREENSHOT_SERVICE)) APPSTREAM_SCREENSHOT_SERVICE_GET_CLASS #define APPSTREAM_SCREENSHOT_SERVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPSTREAM_TYPE_SCREENSHOT_SERVICE, AppstreamScreenshotServiceClass)) AppstreamDistroDetails struct _AppstreamDistroDetails { GObject parent_instance; AppstreamDistroDetailsPrivate * priv; }; AppstreamDistroDetailsClass struct _AppstreamDistroDetailsClass { GObjectClass parent_class; }; AppstreamAppInfo struct _AppstreamAppInfo { GObject parent_instance; AppstreamAppInfoPrivate * priv; }; AppstreamAppInfoClass struct _AppstreamAppInfoClass { GObjectClass parent_class; }; AppstreamSearchQuery struct _AppstreamSearchQuery { GObject parent_instance; AppstreamSearchQueryPrivate * priv; }; AppstreamSearchQueryClass struct _AppstreamSearchQueryClass { GObjectClass parent_class; }; AppstreamDatabase struct _AppstreamDatabase { GObject parent_instance; AppstreamDatabasePrivate * priv; }; AppstreamDatabaseClass struct _AppstreamDatabaseClass { GObjectClass parent_class; gboolean (*open) (AppstreamDatabase* self); }; AppstreamCategory struct _AppstreamCategory { GObject parent_instance; AppstreamCategoryPrivate * priv; }; AppstreamCategoryClass struct _AppstreamCategoryClass { GObjectClass parent_class; }; AppstreamMenuParser struct _AppstreamMenuParser { GTypeInstance parent_instance; volatile int ref_count; AppstreamMenuParserPrivate * priv; }; AppstreamMenuParserClass struct _AppstreamMenuParserClass { GTypeClass parent_class; void (*finalize) (AppstreamMenuParser *self); }; AppstreamScreenshotService struct _AppstreamScreenshotService { GObject parent_instance; AppstreamScreenshotServicePrivate * priv; }; AppstreamScreenshotServiceClass struct _AppstreamScreenshotServiceClass { GObjectClass parent_class; }; appstream_distro_details_get_type GType void appstream_distro_details_new AppstreamDistroDetails * void appstream_distro_details_construct AppstreamDistroDetails * GType object_type appstream_distro_details_get_icon_repository_paths gchar ** AppstreamDistroDetails* self appstream_distro_details_config_distro_get_str gchar * AppstreamDistroDetails* self, const gchar* key appstream_distro_details_config_distro_get_bool gboolean AppstreamDistroDetails* self, const gchar* key appstream_distro_details_get_distro_id const gchar * AppstreamDistroDetails* self appstream_distro_details_get_distro_name const gchar * AppstreamDistroDetails* self appstream_distro_details_get_distro_version const gchar * AppstreamDistroDetails* self appstream_app_info_get_type GType void appstream_app_info_new AppstreamAppInfo * void appstream_app_info_construct AppstreamAppInfo * GType object_type appstream_app_info_is_valid gboolean AppstreamAppInfo* self appstream_app_info_to_string gchar * AppstreamAppInfo* self appstream_app_info_set_categories_from_str void AppstreamAppInfo* self, const gchar* categories_str appstream_app_info_get_pkgname const gchar * AppstreamAppInfo* self appstream_app_info_set_pkgname void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_desktop_file const gchar * AppstreamAppInfo* self appstream_app_info_set_desktop_file void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_name const gchar * AppstreamAppInfo* self appstream_app_info_set_name void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_name_original const gchar * AppstreamAppInfo* self appstream_app_info_set_name_original void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_summary const gchar * AppstreamAppInfo* self appstream_app_info_set_summary void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_description const gchar * AppstreamAppInfo* self appstream_app_info_set_description void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_keywords gchar ** AppstreamAppInfo* self, int* result_length1 appstream_app_info_set_keywords void AppstreamAppInfo* self, gchar** value, int value_length1 appstream_app_info_get_icon const gchar * AppstreamAppInfo* self appstream_app_info_set_icon void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_icon_url const gchar * AppstreamAppInfo* self appstream_app_info_set_icon_url void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_homepage const gchar * AppstreamAppInfo* self appstream_app_info_set_homepage void AppstreamAppInfo* self, const gchar* value appstream_app_info_get_categories gchar ** AppstreamAppInfo* self, int* result_length1 appstream_app_info_set_categories void AppstreamAppInfo* self, gchar** value, int value_length1 appstream_app_info_get_mimetypes gchar ** AppstreamAppInfo* self, int* result_length1 appstream_app_info_set_mimetypes void AppstreamAppInfo* self, gchar** value, int value_length1 appstream_search_query_get_type GType void appstream_search_query_new AppstreamSearchQuery * const gchar* term appstream_search_query_construct AppstreamSearchQuery * GType object_type, const gchar* term appstream_search_query_get_search_all_categories gboolean AppstreamSearchQuery* self appstream_search_query_set_search_all_categories void AppstreamSearchQuery* self appstream_search_query_set_categories_from_string void AppstreamSearchQuery* self, const gchar* categories_str appstream_search_query_get_search_term const gchar * AppstreamSearchQuery* self appstream_search_query_set_search_term void AppstreamSearchQuery* self, const gchar* value appstream_search_query_get_categories gchar ** AppstreamSearchQuery* self, int* result_length1 appstream_search_query_set_categories void AppstreamSearchQuery* self, gchar** value, int value_length1 appstream_database_get_type GType void appstream_database_new AppstreamDatabase * void appstream_database_construct AppstreamDatabase * GType object_type appstream_database_open gboolean AppstreamDatabase* self appstream_database_db_exists gboolean AppstreamDatabase* self appstream_database_get_all_applications GPtrArray * AppstreamDatabase* self appstream_database_find_applications GPtrArray * AppstreamDatabase* self, AppstreamSearchQuery* query appstream_database_find_applications_by_str GPtrArray * AppstreamDatabase* self, const gchar* search_str, const gchar* categories_str appstream_database_get_database_path const gchar * AppstreamDatabase* self appstream_category_get_type GType void appstream_category_new AppstreamCategory * void appstream_category_construct AppstreamCategory * GType object_type appstream_category_add_subcategory void AppstreamCategory* self, AppstreamCategory* cat appstream_category_remove_subcategory void AppstreamCategory* self, AppstreamCategory* cat appstream_category_has_subcategory gboolean AppstreamCategory* self appstream_category_get_name const gchar * AppstreamCategory* self appstream_category_get_summary const gchar * AppstreamCategory* self appstream_category_get_icon const gchar * AppstreamCategory* self appstream_category_get_directory const gchar * AppstreamCategory* self appstream_category_get_included GList * AppstreamCategory* self appstream_category_get_excluded GList * AppstreamCategory* self appstream_category_get_level gint AppstreamCategory* self appstream_category_get_subcategories GList * AppstreamCategory* self appstream_menu_parser_ref gpointer gpointer instance appstream_menu_parser_unref void gpointer instance appstream_param_spec_menu_parser GParamSpec * const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags appstream_value_set_menu_parser void GValue* value, gpointer v_object appstream_value_take_menu_parser void GValue* value, gpointer v_object appstream_value_get_menu_parser gpointer const GValue* value appstream_menu_parser_get_type GType void appstream_menu_parser_new AppstreamMenuParser * void appstream_menu_parser_construct AppstreamMenuParser * GType object_type appstream_menu_parser_new_from_file AppstreamMenuParser * const gchar* menu_file appstream_menu_parser_construct_from_file AppstreamMenuParser * GType object_type, const gchar* menu_file appstream_menu_parser_parse GList * AppstreamMenuParser* self appstream_menu_parser_get_update_category_data gboolean AppstreamMenuParser* self appstream_menu_parser_set_update_category_data void AppstreamMenuParser* self, gboolean value appstream_get_system_categories GList * void appstream_screenshot_service_get_type GType void appstream_screenshot_service_new AppstreamScreenshotService * void appstream_screenshot_service_construct AppstreamScreenshotService * GType object_type appstream_screenshot_service_get_thumbnail_url gchar * AppstreamScreenshotService* self, const gchar* package_name appstream_screenshot_service_get_screenshot_url gchar * AppstreamScreenshotService* self, const gchar* package_name appstream_screenshot_service_get_base_url const gchar * AppstreamScreenshotService* self AppstreamMenuParserPrivate AppstreamSearchQueryPrivate AppstreamScreenshotServicePrivate AppstreamCategoryPrivate AppstreamDatabasePrivate AppstreamAppInfoPrivate AppstreamDistroDetailsPrivate ./AppStream-0.4.0/docs/api/appstream-undocumented.txt0000644000175000017500000000453612230761574022717 0ustar matthiasmatthias63% symbol docs coverage. 91 symbols documented. 16 symbols incomplete. 54 not documented. AppstreamAppInfo () AppstreamAppInfo:categories AppstreamAppInfo:description AppstreamAppInfo:desktop-file AppstreamAppInfo:homepage AppstreamAppInfo:icon AppstreamAppInfo:icon-url AppstreamAppInfo:keywords AppstreamAppInfo:mimetypes AppstreamAppInfo:name AppstreamAppInfo:name-original AppstreamAppInfo:pkgname AppstreamAppInfo:summary AppstreamCategory () AppstreamCategory:directory AppstreamCategory:excluded AppstreamCategory:icon AppstreamCategory:included AppstreamCategory:level AppstreamCategory:name AppstreamCategory:subcategories AppstreamCategory:summary AppstreamDatabase () AppstreamDatabase::authorized AppstreamDatabase::error-code AppstreamDatabase::finished AppstreamDatabase:database-path AppstreamDistroDetails () AppstreamDistroDetails:distro-id AppstreamDistroDetails:distro-name AppstreamDistroDetails:distro-version AppstreamMenuParser () AppstreamMenuParser:update-category-data AppstreamMenuParserClass (finalize) AppstreamScreenshotService () AppstreamScreenshotService:base-url AppstreamSearchQuery () AppstreamSearchQuery:categories AppstreamSearchQuery:search-term appstream_app_info_get_categories (result_length1) appstream_app_info_get_keywords (result_length1) appstream_app_info_get_mimetypes (result_length1) appstream_app_info_new appstream_app_info_set_categories (value_length1) appstream_app_info_set_keywords (value_length1) appstream_app_info_set_mimetypes (value_length1) appstream_app_info_to_string appstream_category_add_subcategory appstream_category_has_subcategory appstream_category_new appstream_category_remove_subcategory appstream_database_db_exists appstream_database_find_applications appstream_database_find_applications_by_str appstream_database_get_all_applications appstream_database_new appstream_database_open appstream_distro_details_config_distro_get_bool appstream_distro_details_config_distro_get_str appstream_distro_details_new appstream_screenshot_service_new appstream_search_query_get_categories (result_length1) appstream_search_query_get_search_all_categories appstream_search_query_new appstream_search_query_set_categories (value_length1) app-info:Long_Description database:Long_Description menudir:Long_Description screenshot-service:Long_Description settings:Long_Description ./AppStream-0.4.0/data/0000755000175000017500000000000012230763267014673 5ustar matthiasmatthias./AppStream-0.4.0/data/categories.xml0000644000175000017500000003056112230763267017547 0ustar matthiasmatthias Accessories kde-utilities.directory Utility Accessibility Universal Access kde-utilities-accessibility.directory Accessibility Settings Developer Tools applications-development Development devel restricted/devel universe/devel multiverse/devel emacs.desktop Debugging applications-debugging Debugging Graphic Interface Design applications-interfacedesign GUIDesigner IDEs applications-ide IDE Localization preferences-desktop-locale Translation Profiling applications-profiling Profiling Version Control applications-versioncontrol RevisionControl Web Development applications-internet kde-development-webdevelopment.directory WebDevelopment Education kde-education.directory Education Science Science & Engineering applications-science Science Engineering Astronomy applications-astronomy Astronomy Biology applications-biology Biology Chemistry applications-science Chemistry Computer Science & Robotics computer ArtificialIntelligence ComputerScience Robotics Electronics cpu Electronics Engineering applications-engineering Engineering Geography applications-geography Geography Geology applications-geology Geology Geoscience Mathematics applications-mathematics kde-edu-mathematics.directory DataVisualization Math NumericalAnalysis Physics applications-physics Physics Fonts preferences-desktop-font fonts Games kde-games.directory Game Arcade applications-arcade kde-games-arcade.directory ArcadeGame Board Games applications-boardgames kde-games-board.directory BoardGame Card Games applications-cardgames kde-games-card.directory CardGame Puzzles applications-puzzles kde-games-logic.directory LogicGame Role Playing meeting-attending RolePlaying Simulation input-gaming Simulation Sports SportsGames.directory applications-toys SportsGame Graphics kde-graphics.directory Graphics 3D applications-3D 3DGraphics Drawing applications-drawing VectorGraphics Painting & Editing preferences-desktop-color RasterGraphics Photography camera-photo Photography Publishing applications-publishing Publishing Scanning & OCR scanner Scanning OCR Viewers layer-visible-on Viewer Internet kde-internet.directory Network Chat applications-chat InstantMessaging File Sharing preferences-system-network-sharing FileTransfer Mail view-pim-mail Email Web Browsers applications-webbrowsers WebBrowser Multimedia kde-multimedia.directory AudioVideo Office kde-office.directory Office Themes & Tweaks preferences-other Settings ./AppStream-0.4.0/data/cmake/0000755000175000017500000000000012230763267015753 5ustar matthiasmatthias./AppStream-0.4.0/data/cmake/MacroEnsureVersion.cmake0000644000175000017500000001173512230763267022555 0ustar matthiasmatthias# This file defines the following macros for developers to use in ensuring # that installed software is of the right version: # # MACRO_ENSURE_VERSION - test that a version number is greater than # or equal to some minimum # MACRO_ENSURE_VERSION_RANGE - test that a version number is greater than # or equal to some minimum and less than some # maximum # MACRO_ENSURE_VERSION2 - deprecated, do not use in new code # # MACRO_ENSURE_VERSION # This macro compares version numbers of the form "x.y.z" or "x.y" # MACRO_ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) # will set FOO_VERSION_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION # Leading and trailing text is ok, e.g. # MACRO_ENSURE_VERSION( "2.5.31" "flex 2.5.4a" VERSION_OK) # which means 2.5.31 is required and "flex 2.5.4a" is what was found on the system # Copyright (c) 2006, David Faure, # Copyright (c) 2007, Will Stephenson # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # MACRO_ENSURE_VERSION_RANGE # This macro ensures that a version number of the form # "x.y.z" or "x.y" falls within a range defined by # min_version <= found_version < max_version. # If this expression holds, FOO_VERSION_OK will be set TRUE # # Example: MACRO_ENSURE_VERSION_RANGE3( "0.1.0" ${FOOCODE_VERSION} "0.7.0" FOO_VERSION_OK ) # # This macro will break silently if any of x,y,z are greater than 100. # # Copyright (c) 2007, Will Stephenson # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # NORMALIZE_VERSION # Helper macro to convert version numbers of the form "x.y.z" # to an integer equal to 10^4 * x + 10^2 * y + z # # This macro will break silently if any of x,y,z are greater than 100. # # Copyright (c) 2006, David Faure, # Copyright (c) 2007, Will Stephenson # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # CHECK_RANGE_INCLUSIVE_LOWER # Helper macro to check whether x <= y < z # # Copyright (c) 2007, Will Stephenson # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. MACRO(NORMALIZE_VERSION _requested_version _normalized_version) STRING(REGEX MATCH "[^0-9]*[0-9]+\\.[0-9]+\\.[0-9]+.*" _threePartMatch "${_requested_version}") if (_threePartMatch) # parse the parts of the version string STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" _major_vers "${_requested_version}") STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" _minor_vers "${_requested_version}") STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" _patch_vers "${_requested_version}") else (_threePartMatch) STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+" "\\1" _major_vers "${_requested_version}") STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)" "\\1" _minor_vers "${_requested_version}") set(_patch_vers "0") endif (_threePartMatch) # compute an overall version number which can be compared at once MATH(EXPR ${_normalized_version} "${_major_vers}*10000 + ${_minor_vers}*100 + ${_patch_vers}") ENDMACRO(NORMALIZE_VERSION) MACRO(MACRO_CHECK_RANGE_INCLUSIVE_LOWER _lower_limit _value _upper_limit _ok) if (${_value} LESS ${_lower_limit}) set( ${_ok} FALSE ) elseif (${_value} EQUAL ${_lower_limit}) set( ${_ok} TRUE ) elseif (${_value} EQUAL ${_upper_limit}) set( ${_ok} FALSE ) elseif (${_value} GREATER ${_upper_limit}) set( ${_ok} FALSE ) else (${_value} LESS ${_lower_limit}) set( ${_ok} TRUE ) endif (${_value} LESS ${_lower_limit}) ENDMACRO(MACRO_CHECK_RANGE_INCLUSIVE_LOWER) MACRO(MACRO_ENSURE_VERSION requested_version found_version var_too_old) NORMALIZE_VERSION( ${requested_version} req_vers_num ) NORMALIZE_VERSION( ${found_version} found_vers_num ) if (found_vers_num LESS req_vers_num) set( ${var_too_old} FALSE ) else (found_vers_num LESS req_vers_num) set( ${var_too_old} TRUE ) endif (found_vers_num LESS req_vers_num) ENDMACRO(MACRO_ENSURE_VERSION) MACRO(MACRO_ENSURE_VERSION2 requested_version2 found_version2 var_too_old2) MACRO_ENSURE_VERSION( ${requested_version2} ${found_version2} ${var_too_old2}) ENDMACRO(MACRO_ENSURE_VERSION2) MACRO(MACRO_ENSURE_VERSION_RANGE min_version found_version max_version var_ok) NORMALIZE_VERSION( ${min_version} req_vers_num ) NORMALIZE_VERSION( ${found_version} found_vers_num ) NORMALIZE_VERSION( ${max_version} max_vers_num ) MACRO_CHECK_RANGE_INCLUSIVE_LOWER( ${req_vers_num} ${found_vers_num} ${max_vers_num} ${var_ok}) ENDMACRO(MACRO_ENSURE_VERSION_RANGE) ./AppStream-0.4.0/data/cmake/documentation.cmake0000644000175000017500000000775312230763267021642 0ustar matthiasmatthias# Copyright (C) 2009 Julian Andres Klode . # Licensed under GPLv3 or later. macro(add_debiandoc target sourcefiles installdest) foreach(file ${sourcefiles}) get_filename_component(relfile ${file} NAME) string(REPLACE ".sgml" "" manual ${relfile}) get_filename_component(absolute ${file} ABSOLUTE) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html COMMAND debiandoc2html ${absolute} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${file} ) set(commands ${commands} ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html) if (NOT ${installdest} EQUAL "" ) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html DESTINATION ${installdest}) endif (NOT ${installdest} EQUAL "" ) endforeach(file ${sourcefiles}) add_custom_target(${target} ALL DEPENDS ${commands}) endmacro(add_debiandoc target sourcefiles installdest) macro(add_po4a type master po target deps) add_custom_command(OUTPUT ${target} COMMAND po4a-translate --keep 0 -f ${type} -m ${master} -p ${po} -l ${target} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${deps} ${master} ${po}) endmacro(add_po4a type master po target deps) # Macro for XML man pages. macro(add_xml_manpages target manpages translations entities) foreach(manpage ${manpages}) string(LENGTH ${manpage} manpage_length) math(EXPR manpage_length ${manpage_length}-1) string(SUBSTRING ${manpage} ${manpage_length} 1 section) get_filename_component(manpage_name "${manpage}" NAME) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${manpage_name} COMMAND xmlto man ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml ) set(commands ${commands} ${CMAKE_CURRENT_BINARY_DIR}/${manpage_name}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${manpage_name} DESTINATION share/man/man${section}) # Add the translations for the manpage. foreach(translation ${translations}) set(entities) # transdir = shortcut to the output directory for translations. set(transdir ${CMAKE_CURRENT_BINARY_DIR}/${translation}) foreach(entity ${entities}) add_custom_command(OUTPUT ${transdir}/${entity} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${CMAKE_COMMAND} -E make_directory ${transdir} COMMAND ${CMAKE_COMMAND} -E copy ${entity} ${transdir}) set(ent_cmds ${ent_cmds} ${transdir}/${entity}) endforeach(entity ${entities}) add_po4a(docbook ${manpage}.xml po/${translation}.po ${transdir}/${manpage}.xml "${ent_cmds}") add_custom_command(OUTPUT ${transdir}/${manpage} COMMAND xmlto -o ${transdir} man ${transdir}/${manpage}.xml WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${transdir}/${manpage}.xml) set(nls-cmd ${nls-cmd} ${transdir}/${manpage}) install(FILES ${transdir}/${manpage} DESTINATION share/man/${translation}/man${section}) endforeach(translation ${translations}) endforeach(manpage ${manpages}) add_custom_target(${target} ALL DEPENDS ${commands}) # Sort the list of the translations. #list(SORT nls-cmd) add_custom_target(nls-${target} ALL DEPENDS ${nls-cmd}) endmacro(add_xml_manpages manpages) macro(add_manpages target manpages translations) foreach(man ${manpages}) string(LENGTH ${man} manpage_length) math(EXPR manpage_length ${manpage_length}-1) string(SUBSTRING ${man} ${manpage_length} 1 section) install(FILES ${man} DESTINATION share/man/man${section}) if (USE_NLS) foreach(translation ${translations}) set(transdir ${CMAKE_CURRENT_BINARY_DIR}/${translation}) add_po4a(man ${man} po/${translation}.po ${transdir}/${man} "") install(FILES ${transdir}/${man} DESTINATION share/man/${translation}/man${section}) set(files ${files} ${transdir}/${man}) endforeach(translation ${translations}) endif(USE_NLS) endforeach(man ${manpages}) add_custom_target(${target} ALL DEPENDS ${files}) endmacro(add_manpages target manpages translations) ./AppStream-0.4.0/data/cmake/FindDBus.cmake0000644000175000017500000000420312230763267020412 0ustar matthiasmatthias# - Try to find the low-level D-Bus library # Once done this will define # # DBUS_FOUND - system has D-Bus # DBUS_INCLUDE_DIR - the D-Bus include directory # DBUS_ARCH_INCLUDE_DIR - the D-Bus architecture-specific include directory # DBUS_LIBRARIES - the libraries needed to use D-Bus # Copyright (c) 2008, Kevin Kofler, # modeled after FindLibArt.cmake: # Copyright (c) 2006, Alexander Neundorf, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if (DBUS_INCLUDE_DIR AND DBUS_ARCH_INCLUDE_DIR AND DBUS_LIBRARIES) # in cache already SET(DBUS_FOUND TRUE) else (DBUS_INCLUDE_DIR AND DBUS_ARCH_INCLUDE_DIR AND DBUS_LIBRARIES) IF (NOT WIN32) FIND_PACKAGE(PkgConfig) IF (PKG_CONFIG_FOUND) # use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls pkg_check_modules(_DBUS_PC QUIET dbus-1) ENDIF (PKG_CONFIG_FOUND) ENDIF (NOT WIN32) FIND_PATH(DBUS_INCLUDE_DIR dbus/dbus.h ${_DBUS_PC_INCLUDE_DIRS} /usr/include /usr/include/dbus-1.0 /usr/local/include ) FIND_PATH(DBUS_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h ${_DBUS_PC_INCLUDE_DIRS} /usr/lib${LIB_SUFFIX}/include /usr/lib${LIB_SUFFIX}/dbus-1.0/include /usr/lib64/include /usr/lib64/dbus-1.0/include /usr/lib/include /usr/lib/dbus-1.0/include ) FIND_LIBRARY(DBUS_LIBRARIES NAMES dbus-1 dbus PATHS ${_DBUS_PC_LIBDIR} ) if (DBUS_INCLUDE_DIR AND DBUS_ARCH_INCLUDE_DIR AND DBUS_LIBRARIES) set(DBUS_FOUND TRUE) endif (DBUS_INCLUDE_DIR AND DBUS_ARCH_INCLUDE_DIR AND DBUS_LIBRARIES) if (DBUS_FOUND) if (NOT DBus_FIND_QUIETLY) message(STATUS "Found D-Bus: ${DBUS_LIBRARIES}") endif (NOT DBus_FIND_QUIETLY) else (DBUS_FOUND) if (DBus_FIND_REQUIRED) message(FATAL_ERROR "Could NOT find D-Bus") endif (DBus_FIND_REQUIRED) endif (DBUS_FOUND) MARK_AS_ADVANCED(DBUS_INCLUDE_DIR DBUS_ARCH_INCLUDE_DIR DBUS_LIBRARIES) endif (DBUS_INCLUDE_DIR AND DBUS_ARCH_INCLUDE_DIR AND DBUS_LIBRARIES) ./AppStream-0.4.0/data/cmake/vala/0000755000175000017500000000000012230763267016676 5ustar matthiasmatthias./AppStream-0.4.0/data/cmake/vala/ParseArguments.cmake0000644000175000017500000000232012230763267022635 0ustar matthiasmatthias## # This is a helper Macro to parse optional arguments in Macros/Functions # It has been taken from the public CMake wiki. # See http://www.cmake.org/Wiki/CMakeMacroParseArguments for documentation and # licensing. ## macro(parse_arguments prefix arg_names option_names) set(DEFAULT_ARGS) foreach(arg_name ${arg_names}) set(${prefix}_${arg_name}) endforeach(arg_name) foreach(option ${option_names}) set(${prefix}_${option} FALSE) endforeach(option) set(current_arg_name DEFAULT_ARGS) set(current_arg_list) foreach(arg ${ARGN}) set(larg_names ${arg_names}) list(FIND larg_names "${arg}" is_arg_name) if(is_arg_name GREATER -1) set(${prefix}_${current_arg_name} ${current_arg_list}) set(current_arg_name ${arg}) set(current_arg_list) else(is_arg_name GREATER -1) set(loption_names ${option_names}) list(FIND loption_names "${arg}" is_option) if(is_option GREATER -1) set(${prefix}_${arg} TRUE) else(is_option GREATER -1) set(current_arg_list ${current_arg_list} ${arg}) endif(is_option GREATER -1) endif(is_arg_name GREATER -1) endforeach(arg) set(${prefix}_${current_arg_name} ${current_arg_list}) endmacro(parse_arguments) ./AppStream-0.4.0/data/cmake/vala/UseVala.cmake0000644000175000017500000004232712230763267021250 0ustar matthiasmatthias#- Use module for Vala # Provides functions to compile Vala and Genie sources. It is assumed that # FindVala.cmake has already been loaded. Refer to FindVala.cmake for # information on how to use Vala in your CMake project. #============================================================================= # Copyright 2009-2010 Michael Wild, Kitware Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distributed this file outside of CMake, substitute the full # License text for the above reference.) include(ParseArguments) macro(ensure_vala_version version) parse_arguments(ARGS "" "MINIMUM;MAXIMUM;EXACT" ${ARGN}) set(compare_message "") set(error_message "") if(ARGS_MINIMUM) set(compare_message "a minimum ") set(error_message "or greater ") elseif(ARGS_MAXIMUM) set(compare_message "a maximum ") set(error_message "or less ") endif(ARGS_MINIMUM) message(STATUS "checking for ${compare_message}Vala version of ${version}" ) unset(version_accepted) # MINIMUM is the default if no option is specified if(ARGS_EXACT) if(${VALA_VERSION} VERSION_EQUAL ${version} ) set(version_accepted TRUE) endif(${VALA_VERSION} VERSION_EQUAL ${version}) elseif(ARGS_MAXIMUM) if(${VALA_VERSION} VERSION_LESS ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) set(version_accepted TRUE) endif(${VALA_VERSION} VERSION_LESS ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) else(ARGS_MAXIMUM) if(${VALA_VERSION} VERSION_GREATER ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) set(version_accepted TRUE) endif(${VALA_VERSION} VERSION_GREATER ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version}) endif(ARGS_EXACT) if (NOT version_accepted) message(FATAL_ERROR "Vala version ${version} ${error_message}is required." ) endif(NOT version_accepted) endmacro(ensure_vala_version) # target properties define_property(TARGET PROPERTY PUBLIC_VAPI_FILE BRIEF_DOCS ".vapi file generated by either GENERATE_VAPI or LIBRARY option." FULL_DOCS "If a Vala target is created with GENERATE_VAPI or the LIBRARY " "option, the location of the generated public .vapi file is stored in this " "property.") define_property(TARGET PROPERTY INTERNAL_VAPI_FILE BRIEF_DOCS ".vapi file generated by the GENERATE_INTERNAL_VAPI option." FULL_DOCS "If a Vala target is created with GENERATE_INTERNAL_VAPI option, " "the location of the generated internal .vapi file is stored in this " "property.") define_property(TARGET PROPERTY VAPI_FILES BRIEF_DOCS ".vapi files required to link against this library." FULL_DOCS "Names the .vapi file describing the C GLib/GObject interface " "defined by a Vala library in the Vala language such that it can be used " "by other Vala code and all other .vapi files this library depends on.") define_property(TARGET PROPERTY VALA_PACKAGE_DEPENDENCIES BRIEF_DOCS "Dependencies from Vala targets used with PACKAGES" FULL_DOCS "Target names of Vala libraries that have been passed using the " "PACKAGES option of vala_precompile, vala_add_executable or " "vala_add_library on which this target depends. This property is " "inherited by other targets that list this target in their " "PACKAGES option.") define_property(TARGET PROPERTY VALA_C_SOURCES BRIEF_DOCS "The generated C-sources" FULL_DOCS "The functions vala_add_executable and vala_add_library store in " "this property the paths of the generated C-sources as returned by " "vala_precompile.") # include directories include_directories(${VALA_INCLUDE_DIRS}) # compiler flags set(VALA_COMPILE_FLAGS "" CACHE STRING "Flags used by the Vala compiler") set(VALA_COMPILE_FLAGS_DEBUG "-g" CACHE STRING "Flags used by the Vala compiler during debug builds") set(VALA_COMPILE_FLAGS_MINSIZEREL "" CACHE STRING "Flags used by the Vala compiler during release minsize builds") set(VALA_COMPILE_FLAGS_RELEASE "" CACHE STRING "Flags used by the Vala compiler during release builds") set(VALA_COMPILE_FLAGS_RELWITHDEBINFO "-g" CACHE STRING "Flags used by the Vala compiler during release with Debug Info builds") mark_as_advanced(VALA_COMPILE_FLAGS VALA_COMPILE_FLAGS_DEBUG VALA_COMPILE_FLAGS_MINSIZEREL VALA_COMPILE_FLAGS_RELEASE VALA_COMPILE_FLAGS_RELWITHDEBINFO) function(vala_precompile target outvar) set(in_files) set(out_files) set(result) set(vala_pkg_opts) set(depends) set(depends_vapis) set(vapi_arguments) set(header_arguments) set(valid_args PACKAGES LIBRARY COMPILE_FLAGS VAPI_DIRS GENERATE_HEADER GENERATE_INTERNAL_HEADER GENERATE_VAPI GENERATE_INTERNAL_VAPI CUSTOM_VAPIS BASE_DIR OUTPUT_DIR COMMENT ) _vala_parse_arguments(ARGS "${valid_args}" "" ${ARGN}) # deal with PACKAGES foreach(pkg ${ARGS_PACKAGES}) # if it is a target, the user wants us to do things automagically if(TARGET "${pkg}") # add the target and its own dependencies to the list depends list(APPEND depends ${pkg}) get_target_property(pkg_depends ${pkg} VALA_PACKAGE_DEPENDENCIES) if(pkg_depends) list(APPEND depends ${pkg_depends}) endif() else() # otherwise just put --pkg list(APPEND vala_pkg_opts "--pkg=${pkg}") endif() endforeach() # get the vapis of the dependencies foreach(d ${depends}) get_target_property(vapi_file ${d} VAPI_FILES) if(vapi_file) list(APPEND depends_vapis "${vapi_file}") endif() endforeach() # deal with OUTPUT_DIR (make it absolute if its not) and ensure it exists if(NOT ARGS_OUTPUT_DIR) set(${ARGS_OUTPUT_DIR} "${CMAKE_CURRENT_BINARY_DIR}") endif() if(NOT IS_ABSOLUTE "${ARGS_OUTPUT_DIR}") set(ARGS_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARGS_OUTPUT_DIR}") endif() if(NOT IS_DIRECTORY "${ARGS_OUTPUT_DIR}") file(MAKE_DIRECTORY "${ARGS_OUTPUT_DIR}") endif() # deal with LIBRARY. if GENERATE_VAPI is not specified, add it here if(ARGS_LIBRARY) list(APPEND VALA_COMPILE_FLAGS "--library=${ARGS_LIBRARY}") if(NOT ARGS_GENERATE_VAPI) set(ARGS_GENERATE_VAPI "${ARGS_LIBRARY}.vapi") endif() endif() # deal with CUSTOM_VAPIS. ensure every vapi shows up only once set(vapi_files ${ARGS_CUSTOM_VAPIS} ${depends_vapis}) if(vapi_files) list(REMOVE_DUPLICATES vapi_files) endif() # deal with COMPILE_FLAGS if(ARGS_COMPILE_FLAGS) list(APPEND VALA_COMPILE_FLAGS "${ARGS_COMPILE_FLAGS}") endif() # deal with VAPI_DIRS if(ARGS_VAPI_DIRS) set(VALA_VAPI_DIRS "${ARGS_VAPI_DIRS}") endif() set(vala_vapidir_opts) foreach(vapidir ${VALA_VAPI_DIRS}) list(APPEND vala_vapidir_opts "--vapidir=${vapidir}") endforeach() # deal with BASE_DIR and make it absolute if(NOT ARGS_BASE_DIR) set(ARGS_BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") endif() if(NOT IS_ABSOLUTE "${ARGS_BASE_DIR}") set(ARGS_BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${ARGS_BASE_DIR}") endif() # treat source files foreach(src ${ARGS_DEFAULT_ARGS}) if(NOT IS_ABSOLUTE "${src}") get_filename_component(src "${src}" ABSOLUTE) endif() list(APPEND in_files "${src}") file(RELATIVE_PATH out_file "${ARGS_BASE_DIR}" "${src}") string(REGEX REPLACE "\\.(vala|gs)$" ".c" out_file "${ARGS_OUTPUT_DIR}/${CMAKE_CFG_INTDIR}/${out_file}") # remove back-references get_filename_component(out_file "${out_file}" ABSOLUTE) list(APPEND out_files "${out_file}") list(APPEND result "${out_file}") endforeach() # deal with GENERATE_INTERNAL_VAPI (make absolute if necessary and create # destination directory) if(ARGS_GENERATE_INTERNAL_VAPI) # Header and internal header is needed to generate internal vapi if (NOT ARGS_GENERATE_HEADER) set(ARGS_GENERATE_HEADER ${ARGS_GENERATE_VAPI}) endif() if (NOT ARGS_GENERATE_INTERNAL_HEADER) set(ARGS_GENERATE_INTERNAL_HEADER ${ARGS_GENERATE_HEADER}_internal) endif() if(NOT IS_ABSOLUTE "${ARGS_GENERATE_INTERNAL_VAPI}") set(ARGS_GENERATE_INTERNAL_VAPI "${ARGS_OUTPUT_DIR}/${ARGS_GENERATE_INTERNAL_VAPI}") endif() get_filename_component(_genvapidir "${ARGS_GENERATE_INTERNAL_VAPI}" PATH) list(APPEND out_files "${ARGS_GENERATE_INTERNAL_VAPI}") set(vapi_arguments "--internal-vapi=${ARGS_GENERATE_INTERNAL_VAPI}") endif() # the same for GENERATE_VAPI if(ARGS_GENERATE_VAPI) if(NOT IS_ABSOLUTE "${ARGS_GENERATE_VAPI}") set(ARGS_GENERATE_VAPI "${ARGS_OUTPUT_DIR}/${ARGS_GENERATE_VAPI}") endif() list(APPEND out_files "${ARGS_GENERATE_VAPI}") set(vapi_arguments "--vapi=${ARGS_GENERATE_VAPI}") endif() # deal with GENERATE_HEADER, making absolute and creating output dir if(ARGS_GENERATE_HEADER) if(NOT IS_ABSOLUTE "${ARGS_GENERATE_HEADER}") set(ARGS_GENERATE_HEADER "${ARGS_OUTPUT_DIR}/${ARGS_GENERATE_HEADER}") endif() list(APPEND out_files "${ARGS_GENERATE_HEADER}") list(APPEND header_arguments "--header=${ARGS_GENERATE_HEADER}") list(APPEND result "${ARGS_GENERATE_HEADER}") endif() # the same for GENERATE_INTERNAL_HEADER if(ARGS_GENERATE_INTERNAL_HEADER) if(NOT IS_ABSOLUTE "${ARGS_GENERATE_INTERNAL_HEADER}") set(ARGS_GENERATE_INTERNAL_HEADER "${ARGS_OUTPUT_DIR}/${CMAKE_CFG_INTDIR}/${ARGS_GENERATE_INTERNAL_HEADER}") endif() list(APPEND out_files "${ARGS_GENERATE_INTERNAL_HEADER}") list(APPEND header_arguments "--internal-header=${ARGS_GENERATE_INTERNAL_HEADER}") list(APPEND result "${ARGS_GENERATE_INTERNAL_HEADER}") endif() # allow override of COMMENT if(NOT ARGS_COMMENT) set(ARGS_COMMENT "Precompiling Vala target ${target}") endif() # create a .cmake file to drive the precompiling # (sadly, this is required for multi-configuration IDE's to support # VALA_COMPILE_FLAGS_ flags) set(driver_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${target}.dir/precompile.cmake") if(CMAKE_CONFIGURATION_TYPES) set(config_types ${CMAKE_CONFIGURATION_TYPES}) else() set(config_types Debug Release RelWithDebInfo MinSizeRel ${CMAKE_BUILD_TYPE}) list(REMOVE_DUPLICATES config_types) endif() set(vala_config_flags) foreach(c IN LISTS config_types) string(TOUPPER ${c} cc) set(v VALA_COMPILE_FLAGS_${cc}) set(vala_config_flags "${vala_config_flags}set(${v} \"${${v}}\")\n") endforeach() set(command "\${VALA_COMPILER}" -C ${header_arguments} ${vapi_arguments} -b "${ARGS_BASE_DIR}" -d "${ARGS_OUTPUT_DIR}/\${CMAKE_CFG_INTDIR}" ${vala_vapidir_opts} ${vala_pkg_opts} @VALA_COMPILE_FLAGS@ ${in_files} ${vapi_files} ) configure_file("${VALA_CMAKE_DIR}/ValaDriver.cmake.in" "${driver_file}" @ONLY) # create the actual command to precompile (don't list out_files in the OUTPUT # but use a stamp file instead, because valac only updates changed files) set(stamp_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${target}.dir/precompile.stamp") if(NOT CMAKE_CFG_INTDIR STREQUAL .) set(stamp_file "${stamp_file}.${CMAKE_CFG_INTDIR}") endif() if(CMAKE_GENERATOR MATCHES "Makefiles$") set(verbose "$(VERBOSE)") else() set(verbose 1) endif() add_custom_command(OUTPUT ${stamp_file} COMMAND "${CMAKE_COMMAND}" -DVALA_COMPILER:FILEPATH=${VALA_COMPILER} -DCMAKE_CFG_INTDIR:STRING=${CMAKE_CFG_INTDIR} -DVERBOSE:STRING=${verbose} -P "${driver_file}" COMMAND "${CMAKE_COMMAND}" -E touch "${stamp_file}" DEPENDS "${VALA_COMPILER}" ${in_files} ${ARGS_CUSTOM_VAPIS} "${driver_file}" WORKING_DIRECTORY "${ARGS_OUTPUT_DIR}" COMMENT "${ARGS_COMMENT}" VERBATIM ) # mark the products as GENERATED and for automatic cleaning set_source_files_properties(${out_files} PROPERTIES GENERATED TRUE) set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${out_files}) # add custom target to depend on add_custom_target(${target} DEPENDS ${stamp_file}) # have it depend on the targets in PACKAGES and their dependencies if(depends) add_dependencies(${target} ${depends}) endif() # set our own dependencies property set_property(TARGET ${target} APPEND PROPERTY VALA_PACKAGE_DEPENDENCIES ${depends}) # add the internal vapi to the list of vapis this library requires (if it is one) if(ARGS_GENERATE_INTERNAL_VAPI) list(APPEND vapi_files "${ARGS_GENERATE_INTERNAL_VAPI}") elseif(ARGS_GENERATE_VAPI) # otherwise use the public vapi list(APPEND vapi_files "${ARGS_GENERATE_VAPI}") endif() # set the properties describing this Vala target set_target_properties(${target} PROPERTIES VAPI_FILES "${vapi_files}" PUBLIC_VAPI_FILE "${ARGS_GENERATE_VAPI}" INTERNAL_VAPI_FILE "${ARGS_GENERATE_INTERNAL_VAPI}" ) # propagate generated sources and headers to caller scope set(${outvar} "${result}" PARENT_SCOPE) endfunction() function(vala_add_executable name) set(valid_args PACKAGES VAPI_DIRS CUSTOM_VAPIS BASE_DIR COMPILE_FLAGS OUTPUT_DIR COMMENT) _vala_parse_arguments(ARGS "${valid_args}" "" ${ARGN}) # repack the arguments set(ARGS) foreach(v ${valid_args}) if(ARGS_${v}) list(APPEND ARGS ${v} "${ARGS_${v}}") endif() endforeach() # precompile vala_precompile(${name}_precompile C_SOURCES ${ARGS_DEFAULT_ARGS} ${ARGS}) # add the executable target add_executable(${name} ${C_SOURCES}) # declare the dependency and inherit the custom properties vala_add_dependencies(${name} ${name}_precompile) # set the VALA_C_SOURCES property set_target_properties(${name} PROPERTIES VALA_C_SOURCES "${C_SOURCES}") # link against VALA_LIBRARIES target_link_libraries(${name} ${VALA_LIBRARIES}) endfunction() function(vala_add_library name type) set(valid_args LIBRARY PACKAGES VAPI_DIRS CUSTOM_VAPIS GENERATE_VAPI GENERATE_HEADER GENERATE_INTERNAL_HEADER BASE_DIR COMPILE_FLAGS OUTPUT_DIR COMMENT) _vala_parse_arguments(ARGS "${valid_args}" "" ${ARGN}) # repack the arguments set(ARGS) foreach(v ${valid_args}) if(ARGS_${v}) list(APPEND ARGS ${v} "${ARGS_${v}}") endif() endforeach() # deal with type being a source file if(NOT type MATCHES "^(STATIC|SHARED|MODULE)") list(INSERT ARGS_DEFAULT_ARGS 0 "${type}") set(type) endif() # deal with LIBRARY set(library_args) if(NOT ARGS_LIBRARY) set(library_args LIBRARY ${name}) endif() # precompile vala_precompile(${name}_precompile C_SOURCES ${ARGS_DEFAULT_ARGS} ${library_args} ${ARGS}) # add the library target add_library(${name} ${type} ${C_SOURCES}) # declare dependency and inherit custom properties vala_add_dependencies(${name} ${name}_precompile) # inherit library specific properties get_target_property(vapi ${name} PUBLIC_VAPI) get_target_property(ivapi ${name} INTERNAL_VAPI) set_target_properties(${name} PROPERTIES VALA_C_SOURCES "${C_SOURCES}" PUBLIC_VAPI "${vapi}" INTERNAL_VAPI "${ivapi}" ) # link against VALA_LIBRARIES target_link_libraries(${name} ${VALA_LIBRARIES}) endfunction() function(vala_add_dependencies target) # inherit custom properties set(vapi_files) set(pkg_deps) foreach(dep ${ARGN}) if(TARGET ${dep}) get_property(is_vala_target TARGET ${dep} PROPERTY VAPI_FILES SET) if(is_vala_target) get_target_property(v ${dep} VAPI_FILES) get_target_property(p ${dep} VALA_PACKAGE_DEPENDENCIES) list(APPEND vapi_files ${v}) list(APPEND pkd_deps ${p}) endif() else() message(SEND_ERROR "Dependency ${dep} is not a top-level target") endif() endforeach() set_property(TARGET ${target} APPEND PROPERTY VAPI_FILES ${vapi_files}) set_property(TARGET ${target} APPEND PROPERTY VALA_PACKAGE_DEPENDENCIES ${pkg_deps}) add_dependencies(${target} ${ARGN}) endfunction() ## # This is a helper Macro to parse optional arguments in Macros/Functions. It # has been taken from the public CMake wiki. See # http://www.cmake.org/Wiki/CMakeMacroParseArguments for documentation and # licensing. ## function(_vala_parse_arguments prefix arg_names option_names) # initialize set(DEFAULT_ARGS) foreach(arg_name ${arg_names}) set(result_${arg_name}) endforeach() foreach(option ${option_names}) set(result_${option} FALSE) endforeach() # parse set(current_arg_name DEFAULT_ARGS) set(current_arg_list) foreach(arg ${ARGN}) set(larg_names ${arg_names}) list(FIND larg_names "${arg}" is_arg_name) if(is_arg_name GREATER -1) set(result_${current_arg_name} ${current_arg_list}) set(current_arg_name ${arg}) set(current_arg_list) else(is_arg_name GREATER -1) set(loption_names ${option_names}) list(FIND loption_names "${arg}" is_option) if(is_option GREATER -1) set(result_${arg} TRUE) else(is_option GREATER -1) set(current_arg_list ${current_arg_list} ${arg}) endif() endif() endforeach() set(result_${current_arg_name} ${current_arg_list}) # propagate to caller scope foreach(arg_name DEFAULT_ARGS ${arg_names}) set(${prefix}_${arg_name} ${result_${arg_name}} PARENT_SCOPE) endforeach() foreach(option ${option_names}) set(${prefix}_${option} ${result_${option}} PARENT_SCOPE) endforeach() endfunction() ./AppStream-0.4.0/data/cmake/vala/FindVala.cmake0000644000175000017500000003123012230763267021363 0ustar matthiasmatthias# - Find and use the Vala compiler. # # This module locates the Vala compiler and related tools and provides a set of # functions which can be used to compile Vala (.vala) and Genie (.gs) sources. # Typical usage could be # find_package(Vala REQUIRED) # include("${VALA_USE_FILE}") # include_directories(${VALA_INCLUDE_DIRS}) # vala_add_executable(myexe source.vala) # This first line finds the Vala compiler installation and the second line # includes utility functions. The last line creates the executable myexe from # source.vala. Similarly, the function vala_add_library is available to create # libraries. For more sophisticated needs the function vala_precompile # generates C sources and headers from a given list of Vala and Genie sources # which then can be further processed using other CMake facilities. If you do # so, please note that you should use vala_add_dependencies instead of the # plain add_dependencies to create the dependencies in order for the # specialized target properties and dependencies of the Vala targets to be # properly propagated. # # The module provides the optional component "Development" which also finds the # Vala development header and library. This component is only required if you # want to use the Vala compiler infrastructure inside your program. # # vala_precompile( ... # [LIBRARY ] # [PACKAGES ...] # [VAPI_DIRS ...] # [CUSTOM_VAPIS ...] # [GENERATE_VAPI ] # [GENERATE_INTERNAL_VAPI ] # [GENERATE_HEADER ] # [GENERATE_INTERNAL_HEADER ] # [BASE_DIR ] # [COMPILE_FLAGS

Product SiteDocumentation Site