diff options
37 files changed, 4916 insertions, 258 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index da915692f..79389b100 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,9 +1,19 @@ -CHANGES.txt - 2009-02-03 +CHANGES.txt - 2009-02-10 ------------------------ CHANGES IN CUPS V1.4b3 - Documentation fixes (STR #3044, STR #3057) + - Clicking on "Select Another Make/Manufacturer" in the web interface + incorrectly added the printer (STR #3095) + - The scheduler no longer uses programs with insecure file + permissions. + - httpAssembleURI*() did not escape backslashes in hostnames. + - The dnssd backend did not unquote "full names" before creating the + device URI. + - The scheduler now supports JobRetryInterval values less than 10 + seconds. + - Updated the Spanish localization (STR #3090) - The scheduler did not redo Bonjour/DNS-SD registrations when updating them failed. - The "authenticated" policy incorrectly required authentication for diff --git a/backend/dnssd.c b/backend/dnssd.c index ec32bba48..97c0d6071 100644 --- a/backend/dnssd.c +++ b/backend/dnssd.c @@ -3,7 +3,7 @@ * * DNS-SD discovery backend for the Common UNIX Printing System (CUPS). * - * Copyright 2008 by Apple Inc. + * Copyright 2008-2009 by Apple Inc. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -122,6 +122,7 @@ main(int argc, /* I - Number of command-line args */ struct timeval timeout; /* Timeout for select() */ cups_array_t *devices; /* Device array */ cups_device_t *device; /* Current device */ + char uriName[1024]; /* Unquoted fullName for URI */ /* @@ -297,8 +298,10 @@ main(int argc, /* I - Number of command-line args */ else if (strcasecmp(best->name, device->name) || strcasecmp(best->domain, device->domain)) { + unquote(uriName, best->fullName, sizeof(uriName)); + httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri), - schemes[best->type], NULL, best->fullName, 0, + schemes[best->type], NULL, uriName, 0, best->cups_shared ? "/cups" : "/"); cupsBackendReport("network", device_uri, best->make_and_model, @@ -319,8 +322,10 @@ main(int argc, /* I - Number of command-line args */ if (best) { + unquote(uriName, best->fullName, sizeof(uriName)); + httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri), - schemes[best->type], NULL, best->fullName, 0, + schemes[best->type], NULL, uriName, 0, best->cups_shared ? "/cups" : "/"); cupsBackendReport("network", device_uri, best->make_and_model, diff --git a/backend/usb-darwin.c b/backend/usb-darwin.c index 23b7baecd..fe2dabdd3 100644 --- a/backend/usb-darwin.c +++ b/backend/usb-darwin.c @@ -1,7 +1,7 @@ /* * "$Id: usb-darwin.c 7953 2008-09-17 01:43:19Z mike $" * -* Copyright 2005-2008 Apple Inc. All rights reserved. +* Copyright 2005-2009 Apple Inc. All rights reserved. * * IMPORTANT: This Apple software is supplied to you by Apple Computer, * Inc. ("Apple") in consideration of your agreement to the following @@ -1241,56 +1241,83 @@ static kern_return_t load_classdriver(CFStringRef driverPath, printer_interface_t intf, classdriver_t ***printerDriver) { - kern_return_t kr = kUSBPrinterClassDeviceNotOpen; - classdriver_t **driver = NULL; - CFStringRef bundle = (driverPath == NULL ? kUSBGenericTOPrinterClassDriver : driverPath); + kern_return_t kr = kUSBPrinterClassDeviceNotOpen; + classdriver_t **driver = NULL; + CFStringRef bundle = driverPath ? driverPath : kUSBGenericTOPrinterClassDriver; + char bundlestr[1024]; /* Bundle path */ + struct stat bundleinfo; /* File information for bundle */ + CFURLRef url; /* URL for driver */ + CFPlugInRef plugin = NULL; /* Plug-in address */ - if (bundle != NULL) + + CFStringGetCString(bundle, bundlestr, sizeof(bundlestr), kCFStringEncodingUTF8); + + /* + * Validate permissions for the class driver... + */ + + if (stat(bundlestr, &bundleinfo)) { - CFURLRef url = CFURLCreateWithFileSystemPath(NULL, bundle, kCFURLPOSIXPathStyle, true); - CFPlugInRef plugin = (url != NULL ? CFPlugInCreate(NULL, url) : NULL); + fprintf(stderr, "Unable to load class driver \"%s\": %s", bundlestr, + strerror(errno)); + return (kr); + } + else if (bundleinfo.st_mode & S_IWOTH) + { + fprintf(stderr, "Unable to load class driver \"%s\": insecure file " + "permissions (0%o)", bundlestr, bundleinfo.st_mode); + return (kr); + } + + /* + * Try loading the class driver... + */ - if (url != NULL) - CFRelease(url); + url = CFURLCreateWithFileSystemPath(NULL, bundle, kCFURLPOSIXPathStyle, true); - if (plugin != NULL) + if (url) + { + plugin = CFPlugInCreate(NULL, url); + CFRelease(url); + } + else + plugin = NULL; + + if (plugin) + { + CFArrayRef factories = CFPlugInFindFactoriesForPlugInTypeInPlugIn(kUSBPrinterClassTypeID, plugin); + if (factories != NULL && CFArrayGetCount(factories) > 0) { - CFArrayRef factories = CFPlugInFindFactoriesForPlugInTypeInPlugIn(kUSBPrinterClassTypeID, plugin); - if (factories != NULL && CFArrayGetCount(factories) > 0) + CFUUIDRef factoryID = CFArrayGetValueAtIndex(factories, 0); + IUnknownVTbl **iunknown = CFPlugInInstanceCreate(NULL, factoryID, kUSBPrinterClassTypeID); + if (iunknown != NULL) { - CFUUIDRef factoryID = CFArrayGetValueAtIndex(factories, 0); - IUnknownVTbl **iunknown = CFPlugInInstanceCreate(NULL, factoryID, kUSBPrinterClassTypeID); - if (iunknown != NULL) + kr = (*iunknown)->QueryInterface(iunknown, CFUUIDGetUUIDBytes(kUSBPrinterClassInterfaceID), (LPVOID *)&driver); + if (kr == kIOReturnSuccess && driver != NULL) { - kr = (*iunknown)->QueryInterface(iunknown, CFUUIDGetUUIDBytes(kUSBPrinterClassInterfaceID), (LPVOID *)&driver); - if (kr == kIOReturnSuccess && driver != NULL) - { - classdriver_t **genericDriver = NULL; - if (driverPath != NULL && CFStringCompare(driverPath, kUSBGenericTOPrinterClassDriver, 0) != kCFCompareEqualTo) - kr = load_classdriver(NULL, intf, &genericDriver); + classdriver_t **genericDriver = NULL; + if (driverPath != NULL && CFStringCompare(driverPath, kUSBGenericTOPrinterClassDriver, 0) != kCFCompareEqualTo) + kr = load_classdriver(NULL, intf, &genericDriver); - if (kr == kIOReturnSuccess) - { - (*driver)->interface = intf; - (*driver)->Initialize(driver, genericDriver); + if (kr == kIOReturnSuccess) + { + (*driver)->interface = intf; + (*driver)->Initialize(driver, genericDriver); - (*driver)->plugin = plugin; - (*driver)->interface = intf; - *printerDriver = driver; - } + (*driver)->plugin = plugin; + (*driver)->interface = intf; + *printerDriver = driver; } - (*iunknown)->Release(iunknown); } - CFRelease(factories); + (*iunknown)->Release(iunknown); } + CFRelease(factories); } } - char bundlestr[1024]; - CFStringGetCString(bundle, bundlestr, sizeof(bundlestr), kCFStringEncodingUTF8); fprintf(stderr, "DEBUG: load_classdriver(%s) (kr:0x%08x)\n", bundlestr, (int)kr); - return kr; + return (kr); } diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c index b0b3ae23e..9c3e67a8a 100644 --- a/cgi-bin/admin.c +++ b/cgi-bin/admin.c @@ -1057,9 +1057,10 @@ do_am_printer(http_t *http, /* I - HTTP connection */ return; } - else if (!file && !cgiGetVariable("PPD_NAME")) + else if (!file && + (!cgiGetVariable("PPD_NAME") || cgiGetVariable("SELECT_MAKE"))) { - if (modify) + if (modify && !cgiGetVariable("SELECT_MAKE")) { /* * Get the PPD file... @@ -1136,7 +1137,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */ if ((var = cgiGetVariable("CURRENT_MAKE")) == NULL) var = cgiGetVariable("PPD_MAKE"); - if (var) + if (var && !cgiGetVariable("SELECT_MAKE")) { const char *make_model; /* Make and model */ @@ -1144,8 +1145,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_TEXT, "ppd-make", NULL, var); - if ((make_model = cgiGetVariable("CURRENT_MAKE_AND_MODEL")) != NULL && - !cgiGetVariable("SELECT_MAKE")) + if ((make_model = cgiGetVariable("CURRENT_MAKE_AND_MODEL")) != NULL) ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_TEXT, "ppd-make-and-model", NULL, make_model); } @@ -1457,14 +1457,18 @@ do_config_server(http_t *http) /* I - HTTP connection */ *share_printers,/* SHARE_PRINTERS value */ *user_cancel_any, /* USER_CANCEL_ANY value */ - *browse_web_if, /* BrowseWebIF value */ - *preserve_job_history, + *browse_web_if = NULL, + /* BrowseWebIF value */ + *preserve_job_history = NULL, /* PreserveJobHistory value */ - *preserve_job_files, + *preserve_job_files = NULL, /* PreserveJobFiles value */ - *max_clients, /* MaxClients value */ - *max_jobs, /* MaxJobs value */ - *max_log_size; /* MaxLogSize value */ + *max_clients = NULL, + /* MaxClients value */ + *max_jobs = NULL, + /* MaxJobs value */ + *max_log_size = NULL; + /* MaxLogSize value */ char local_protocols[255], /* BrowseLocalProtocols */ remote_protocols[255]; diff --git a/conf/cupsd.conf.in b/conf/cupsd.conf.in index 2db713576..63ea89e76 100644 --- a/conf/cupsd.conf.in +++ b/conf/cupsd.conf.in @@ -34,7 +34,6 @@ DefaultAuthType Basic # Restrict access to the admin pages... <Location /admin> -@ENCRYPTION_REQUIRED@ Order allow,deny </Location> diff --git a/config-scripts/cups-3264.m4 b/config-scripts/cups-3264.m4 index 46d85f38b..43c466487 100644 --- a/config-scripts/cups-3264.m4 +++ b/config-scripts/cups-3264.m4 @@ -3,7 +3,7 @@ dnl "$Id$" dnl dnl 32/64-bit library support stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2006 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -14,7 +14,7 @@ dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl dnl Setup support for separate 32/64-bit library generation... -AC_ARG_ENABLE(32bit, [ --enable-32bit generate 32-bit libraries on 32/64-bit systems, default=no]) +AC_ARG_ENABLE(32bit, [ --enable-32bit generate 32-bit libraries on 32/64-bit systems]) INSTALL32="" LIB32CUPS="" @@ -28,7 +28,7 @@ AC_SUBST(LIB32CUPSIMAGE) AC_SUBST(LIB32DIR) AC_SUBST(UNINSTALL32) -AC_ARG_ENABLE(64bit, [ --enable-64bit generate 64-bit libraries on 32/64-bit systems, default=no]) +AC_ARG_ENABLE(64bit, [ --enable-64bit generate 64-bit libraries on 32/64-bit systems]) INSTALL64="" LIB64CUPS="" diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4 index 8fcc1fb85..ed68d9c3c 100644 --- a/config-scripts/cups-common.m4 +++ b/config-scripts/cups-common.m4 @@ -78,7 +78,7 @@ fi dnl Static library option... INSTALLSTATIC="" -AC_ARG_ENABLE(static, [ --enable-static install static libraries, default=no]) +AC_ARG_ENABLE(static, [ --enable-static install static libraries]) if test x$enable_static = xyes; then echo Installing static libraries... @@ -92,7 +92,7 @@ AC_SEARCH_LIBS(crypt, crypt) AC_SEARCH_LIBS(getspent, sec gen) LIBMALLOC="" -AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo turn on malloc debug information, default=no]) +AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging]) if test x$enable_mallinfo = xyes; then SAVELIBS="$LIBS" @@ -105,7 +105,7 @@ fi AC_SUBST(LIBMALLOC) dnl Check for libpaper support... -AC_ARG_ENABLE(libpaper, [ --enable-libpaper turn on libpaper support, default=no]) +AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support]) if test x$enable_libpaper = xyes; then AC_CHECK_LIB(paper,systempapername, @@ -180,7 +180,7 @@ dnl See if we have the removefile(3) function for securely removing files AC_CHECK_FUNCS(removefile) dnl See if we have libusb... -AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing, default=auto]) +AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing]) LIBUSB="" AC_SUBST(LIBUSB) @@ -201,7 +201,7 @@ if test $check_libusb = yes; then fi dnl See if we have libwrap for TCP wrappers support... -AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support, default=no]) +AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support]) LIBWRAP="" AC_SUBST(LIBWRAP) @@ -234,7 +234,7 @@ AC_SUBST(CUPSDLIBS) dnl See if we have POSIX ACL support... SAVELIBS="$LIBS" LIBS="" -AC_ARG_ENABLE(acl, [ --enable-acl enable POSIX ACL support, default=auto]) +AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support]) if test "x$enable_acl" != xno; then AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT)) CUPSDLIBS="$CUPSDLIBS $LIBS" @@ -248,7 +248,7 @@ else DBUSDIR="" fi -AC_ARG_ENABLE(dbus, [ --enable-dbus enable DBUS support, default=auto]) +AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support]) AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ], DBUSDIR="$withval") diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4 index c33d9a5e2..b51d7cc5c 100644 --- a/config-scripts/cups-compiler.m4 +++ b/config-scripts/cups-compiler.m4 @@ -20,11 +20,11 @@ OPTIM="" AC_SUBST(INSTALL_STRIP) AC_SUBST(OPTIM) -AC_ARG_WITH(optim, [ --with-optim="flags" set optimization flags ]) -AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging, default=no]) -AC_ARG_ENABLE(debug_guards, [ --enable-debug-guards turn on debug guards, default=no]) -AC_ARG_ENABLE(debug_printfs, [ --enable-debug-printfs turn on debug printfs, default=no]) -AC_ARG_ENABLE(unit_tests, [ --enable-unit-tests turn on unit tests, default=no]) +AC_ARG_WITH(optim, [ --with-optim set optimization flags ]) +AC_ARG_ENABLE(debug, [ --enable-debug build with debugging symbols]) +AC_ARG_ENABLE(debug_guards, [ --enable-debug-guards build with memory allocation guards]) +AC_ARG_ENABLE(debug_printfs, [ --enable-debug-printfs build with CUPS_DEBUG_LOG support]) +AC_ARG_ENABLE(unit_tests, [ --enable-unit-tests build and run unit tests]) dnl For debugging, keep symbols, otherwise strip them... if test x$enable_debug = xyes; then @@ -53,10 +53,8 @@ fi AC_SUBST(UNITTESTS) dnl Setup general architecture flags... -AC_ARG_WITH(archflags, [ --with-archflags="flags" - set default architecture flags ]) -AC_ARG_WITH(ldarchflags, [ --with-ldarchflags="flags" - set default program architecture flags ]) +AC_ARG_WITH(archflags, [ --with-archflags set default architecture flags ]) +AC_ARG_WITH(ldarchflags, [ --with-ldarchflags set program architecture flags ]) if test -z "$with_archflags"; then ARCHFLAGS="" @@ -79,18 +77,16 @@ AC_SUBST(ARCHFLAGS) AC_SUBST(LDARCHFLAGS) dnl Setup support for separate 32/64-bit library generation... -AC_ARG_WITH(arch32flags, [ --with-arch32flags="flags" - specifies 32-bit architecture flags]) +AC_ARG_WITH(arch32flags, [ --with-arch32flags set 32-bit architecture flags]) ARCH32FLAGS="" AC_SUBST(ARCH32FLAGS) -AC_ARG_WITH(arch64flags, [ --with-arch64flags="flags" - specifies 64-bit architecture flags]) +AC_ARG_WITH(arch64flags, [ --with-arch64flags set 64-bit architecture flags]) ARCH64FLAGS="" AC_SUBST(ARCH64FLAGS) dnl Read-only data/program support on Linux... -AC_ARG_ENABLE(relro, [ --enable-relro use GCC relro option, default=no]) +AC_ARG_ENABLE(relro, [ --enable-relro build with the GCC relro option]) dnl Update compiler options... CXXLIBS="${CXXLIBS:=}" @@ -103,7 +99,7 @@ RELROFLAGS="" AC_SUBST(RELROFLAGS) LIBCUPSORDER="libcups.order" -AC_ARG_WITH(libcupsorder, [ --with-libcupsorder libcups secorder file, default=libcups.order], +AC_ARG_WITH(libcupsorder, [ --with-libcupsorder set libcups secorder file, default=libcups.order], if test -f "$withval"; then LIBCUPSORDER="$withval" fi) @@ -111,7 +107,7 @@ AC_SUBST(LIBCUPSORDER) LIBCUPSIMAGEORDER="libcupsimage.order" AC_ARG_WITH(libcupsimageorder, [ --with-libcupsimagesorder - libcupsimage secorder file, default=libcupsimage.order], + set libcupsimage secorder file, default=libcupsimage.order], if test -f "$withval"; then LIBCUPSIMAGEORDER="$withval" fi) diff --git a/config-scripts/cups-defaults.m4 b/config-scripts/cups-defaults.m4 index a0c365ad3..53359e2a9 100644 --- a/config-scripts/cups-defaults.m4 +++ b/config-scripts/cups-defaults.m4 @@ -4,7 +4,7 @@ dnl dnl Default cupsd configuration settings for the Common UNIX Printing System dnl (CUPS). dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 2006-2007 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -66,7 +66,7 @@ AC_SUBST(CUPS_ACCESS_LOG_LEVEL) AC_DEFINE_UNQUOTED(CUPS_DEFAULT_ACCESS_LOG_LEVEL, "$CUPS_ACCESS_LOG_LEVEL") dnl Default Browsing -AC_ARG_ENABLE(browsing, [ --enable-browsing enable Browsing by default, default=yes]) +AC_ARG_ENABLE(browsing, [ --disable-browsing disable Browsing by default]) if test "x$enable_browsing" = xno; then CUPS_BROWSING="No" AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSING, 0) @@ -123,8 +123,8 @@ AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS, "$CUPS_BROWSE_REMOTE_PROTOCOLS") dnl Default BrowseShortNames -AC_ARG_ENABLE(browse_short, [ --enable-browse-short-names - enable BrowseShortNames by default, default=yes]) +AC_ARG_ENABLE(browse_short, [ --disable-browse-short-names + disable BrowseShortNames by default]) if test "x$enable_browse_short" = xno; then CUPS_BROWSE_SHORT_NAMES="No" AC_DEFINE_UNQUOTED(CUPS_DEFAULT_BROWSE_SHORT_NAMES, 0) @@ -135,7 +135,8 @@ fi AC_SUBST(CUPS_BROWSE_SHORT_NAMES) dnl Default DefaultShared -AC_ARG_ENABLE(default_shared, [ --enable-default-shared enable DefaultShared by default, default=yes]) +AC_ARG_ENABLE(default_shared, [ --disable-default-shared + disable DefaultShared by default]) if test "x$enable_default_shared" = xno; then CUPS_DEFAULT_SHARED="No" AC_DEFINE_UNQUOTED(CUPS_DEFAULT_DEFAULT_SHARED, 0) @@ -146,8 +147,8 @@ fi AC_SUBST(CUPS_DEFAULT_SHARED) dnl Default ImplicitClasses -AC_ARG_ENABLE(implicit, [ --enable-implicit-classes - enable ImplicitClasses by default, default=yes]) +AC_ARG_ENABLE(implicit, [ --disable-implicit-classes + disable ImplicitClasses by default]) if test "x$enable_implicit" = xno; then CUPS_IMPLICIT_CLASSES="No" AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IMPLICIT_CLASSES, 0) @@ -159,7 +160,7 @@ AC_SUBST(CUPS_IMPLICIT_CLASSES) dnl Default UseNetworkDefault AC_ARG_ENABLE(use_network_default, [ --enable-use-network-default - enable UseNetworkDefault by default, default=auto]) + set UseNetworkDefault to Yes by default]) if test "x$enable_use_network_default" != xno; then AC_MSG_CHECKING(whether to use network default printers) if test "x$enable_use_network_default" = xyes -o $uname != Darwin; then @@ -362,28 +363,17 @@ fi AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SMB_CONFIG_FILE, "$CUPS_DEFAULT_SMB_CONFIG_FILE") dnl Default MaxCopies value... -AC_ARG_WITH(max-copies, [ --with-max-copies set default max copies value, default=auto ], +AC_ARG_WITH(max-copies, [ --with-max-copies set default max copies value, default=9999 ], CUPS_MAX_COPIES="$withval", - if test "x$uname" = xDarwin; then - CUPS_MAX_COPIES="9999" - else - CUPS_MAX_COPIES="100" - fi) + CUPS_MAX_COPIES="9999") AC_SUBST(CUPS_MAX_COPIES) AC_DEFINE_UNQUOTED(CUPS_DEFAULT_MAX_COPIES, $CUPS_MAX_COPIES) dnl Default raw printing state -AC_ARG_ENABLE(raw_printing, [ --enable-raw-printing enable raw printing by default, default=auto]) +AC_ARG_ENABLE(raw_printing, [ --disable-raw-printing do not allow raw printing by default]) if test "x$enable_raw_printing" != xno; then - AC_MSG_CHECKING(whether to enable raw printing) - if test "x$enable_raw_printing" = xyes -o $uname = Darwin; then - DEFAULT_RAW_PRINTING="" - AC_MSG_RESULT(yes) - else - DEFAULT_RAW_PRINTING="#" - AC_MSG_RESULT(no) - fi + DEFAULT_RAW_PRINTING="" else DEFAULT_RAW_PRINTING="#" fi @@ -410,7 +400,7 @@ AC_SUBST(CUPS_SNMP_ADDRESS) AC_SUBST(CUPS_SNMP_COMMUNITY) dnl New default port definition for IPP... -AC_ARG_WITH(ipp-port, [ --with-ipp-port set default port number for IPP ], +AC_ARG_WITH(ipp-port, [ --with-ipp-port set port number for IPP, default=631 ], DEFAULT_IPP_PORT="$withval", DEFAULT_IPP_PORT="631") @@ -418,8 +408,8 @@ AC_SUBST(DEFAULT_IPP_PORT) AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT) dnl Filters -AC_ARG_ENABLE(bannertops, [ --enable-bannertops build with default banner filter, default=auto ]) -AC_ARG_ENABLE(texttops, [ --enable-texttops build with default text filter, default=auto ]) +AC_ARG_ENABLE(bannertops, [ --enable-bannertops always build the banner filter ]) +AC_ARG_ENABLE(texttops, [ --enable-texttops always build the text filter ]) if test "x$enable_bannertops" = xno; then BANNERTOPS="" diff --git a/config-scripts/cups-dnssd.m4 b/config-scripts/cups-dnssd.m4 index d35eb316c..fcc4e0040 100644 --- a/config-scripts/cups-dnssd.m4 +++ b/config-scripts/cups-dnssd.m4 @@ -7,7 +7,7 @@ dnl http://www.dns-sd.org dnl http://www.multicastdns.org/ dnl http://developer.apple.com/networking/bonjour/ dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl dnl These coded instructions, statements, and computer programs are the dnl property of Apple Inc. and are protected by Federal copyright @@ -16,7 +16,7 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(dnssd, [ --enable-dnssd turn on DNS Service Discovery support, default=yes]) +AC_ARG_ENABLE(dnssd, [ --disable-dnssd disable DNS Service Discovery support]) AC_ARG_WITH(dnssd-libs, [ --with-dnssd-libs set directory for DNS Service Discovery library], LDFLAGS="-L$withval $LDFLAGS" DSOFLAGS="-L$withval $DSOFLAGS",) diff --git a/config-scripts/cups-gssapi.m4 b/config-scripts/cups-gssapi.m4 index 968a5fe36..0a3458b03 100644 --- a/config-scripts/cups-gssapi.m4 +++ b/config-scripts/cups-gssapi.m4 @@ -3,7 +3,7 @@ dnl "$Id$" dnl dnl GSSAPI/Kerberos library detection. dnl -dnl Copyright 2007 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 2006-2007 by Easy Software Products. dnl dnl This file contains Kerberos support code, copyright 2006 by @@ -16,7 +16,7 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(gssapi, [ --enable-gssapi turn on GSSAPI support, default=yes]) +AC_ARG_ENABLE(gssapi, [ --disable-gssapi disable GSSAPI support]) LIBGSSAPI="" diff --git a/config-scripts/cups-image.m4 b/config-scripts/cups-image.m4 index 58ed255ff..f25d58732 100644 --- a/config-scripts/cups-image.m4 +++ b/config-scripts/cups-image.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-image.m4 6649 2007-07-11 21:46:42Z mike $" dnl dnl Image library/filter stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2006 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -14,7 +14,7 @@ dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl dnl See if we want the image filters included at all... -AC_ARG_ENABLE(image, [ --enable-image turn on image filters, default=auto]) +AC_ARG_ENABLE(image, [ --enable-image always build the image filters]) IMGFILTERS="" if test "x$enable_image" != xno; then @@ -30,9 +30,9 @@ fi AC_SUBST(IMGFILTERS) dnl Check for image libraries... -AC_ARG_ENABLE(jpeg, [ --enable-jpeg turn on JPEG support, default=yes]) -AC_ARG_ENABLE(png, [ --enable-png turn on PNG support, default=yes]) -AC_ARG_ENABLE(tiff, [ --enable-tiff turn on TIFF support, default=yes]) +AC_ARG_ENABLE(jpeg, [ --disable-jpeg disable JPEG support]) +AC_ARG_ENABLE(png, [ --disable-png disable PNG support]) +AC_ARG_ENABLE(tiff, [ --disable-tiff disable TIFF support]) LIBJPEG="" LIBPNG="" diff --git a/config-scripts/cups-launchd.m4 b/config-scripts/cups-launchd.m4 index 02d89843b..a6a893235 100644 --- a/config-scripts/cups-launchd.m4 +++ b/config-scripts/cups-launchd.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $" dnl dnl launchd stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2005 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -14,7 +14,7 @@ dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(launchd, [ --enable-launchd turn on launchd support, default=yes]) +AC_ARG_ENABLE(launchd, [ --disable-launchd disable launchd support]) DEFAULT_LAUNCHD_CONF="" LAUNCHDLIBS="" diff --git a/config-scripts/cups-ldap.m4 b/config-scripts/cups-ldap.m4 index 742a4bcce..678faed07 100644 --- a/config-scripts/cups-ldap.m4 +++ b/config-scripts/cups-ldap.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-ldap.m4 7800 2008-07-25 21:01:34Z mike $" dnl dnl LDAP configuration stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 2003-2006 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -13,7 +13,7 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(ldap, [ --enable-ldap turn on LDAP support, default=yes]) +AC_ARG_ENABLE(ldap, [ --disable-ldap disable LDAP support]) AC_ARG_WITH(ldap-libs, [ --with-ldap-libs set directory for LDAP library], LDFLAGS="-L$withval $LDFLAGS" DSOFLAGS="-L$withval $DSOFLAGS",) diff --git a/config-scripts/cups-libtool.m4 b/config-scripts/cups-libtool.m4 index c88f41426..614548f37 100644 --- a/config-scripts/cups-libtool.m4 +++ b/config-scripts/cups-libtool.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $" dnl dnl Libtool stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2005 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -13,14 +13,13 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported=LIBTOOL_PATH - turn on building with libtool (UNSUPPORTED!), default=no], +AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported + build with libtool (UNSUPPORTED!)], [if test x$enable_libtool_unsupported != xno; then LIBTOOL="$enable_libtool_unsupported" enable_shared=no - echo "WARNING: libtool is not supported or endorsed by Easy Software Products." - echo " WE DO NOT PROVIDE TECHNICAL SUPPORT FOR LIBTOOL PROBLEMS." - echo " (even if you have a support contract)" + echo "WARNING: libtool is not supported or endorsed by Apple Inc." + echo " WE DO NOT PROVIDE SUPPORT FOR LIBTOOL PROBLEMS." else LIBTOOL="" fi]) diff --git a/config-scripts/cups-pam.m4 b/config-scripts/cups-pam.m4 index ef2e9c3ec..1b554a411 100644 --- a/config-scripts/cups-pam.m4 +++ b/config-scripts/cups-pam.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $" dnl dnl PAM stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2005 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -13,8 +13,8 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(pam, [ --enable-pam turn on PAM support, default=yes]) -AC_ARG_WITH(pam_module, [ --with-pam-module specify the PAM module to use, default=auto]) +AC_ARG_ENABLE(pam, [ --disable-pam disable PAM support]) +AC_ARG_WITH(pam_module, [ --with-pam-module specify the PAM module to use]) dnl Don't use PAM with AIX... if test $uname = AIX; then diff --git a/config-scripts/cups-pap.m4 b/config-scripts/cups-pap.m4 index 56d1b852f..e3509011a 100644 --- a/config-scripts/cups-pap.m4 +++ b/config-scripts/cups-pap.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-pam.m4 5466 2006-04-26 19:52:27Z mike $" dnl dnl PAP (AppleTalk) stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 2006 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -15,12 +15,12 @@ dnl # Currently the PAP backend is only supported on MacOS X with the AppleTalk # SDK installed... -AC_ARG_ENABLE(pap, [ --enable-pap build with AppleTalk support, default=auto]) +AC_ARG_ENABLE(pap, [ --enable-pap build with AppleTalk support]) PAP="" AC_SUBST(PAP) -if test x$enable_pap != xno -a $uname = Darwin; then +if test x$enable_pap = xyes -a $uname = Darwin; then AC_CHECK_HEADER(netat/appletalk.h,[ PAP="pap" AC_CHECK_HEADER(AppleTalk/at_proto.h)]) diff --git a/config-scripts/cups-pdf.m4 b/config-scripts/cups-pdf.m4 index eaa004f59..51d46cfb7 100644 --- a/config-scripts/cups-pdf.m4 +++ b/config-scripts/cups-pdf.m4 @@ -13,37 +13,54 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(pdftops, [ --enable-pdftops build pdftops filter, default=auto ]) +AC_ARG_WITH(pdftops, [ --with-pdftops set pdftops filter (gs,pdftops,none), default=pdftops ]) PDFTOPS="" +CUPS_PDFTOPS="" +CUPS_GHOSTSCRIPT="" -if test "x$enable_pdftops" != xno; then - AC_PATH_PROG(CUPS_PDFTOPS, pdftops) - if test "x$CUPS_PDFTOPS" != x; then - AC_DEFINE(HAVE_PDFTOPS) +case "x$with_pdftops" in + x) # Default/auto + if test $uname != Darwin; then + AC_PATH_PROG(CUPS_PDFTOPS, pdftops) + if test "x$CUPS_PDFTOPS" != x; then + AC_DEFINE(HAVE_PDFTOPS) + PDFTOPS="pdftops" + else + AC_PATH_PROG(CUPS_GHOSTSCRIPT, gs) + if test "x$CUPS_GHOSTSCRIPT" != x; then + AC_DEFINE(HAVE_GHOSTSCRIPT) + PDFTOPS="pdftops" + fi + fi fi - AC_DEFINE_UNQUOTED(CUPS_PDFTOPS, "$CUPS_PDFTOPS") + ;; + xgs) AC_PATH_PROG(CUPS_GHOSTSCRIPT, gs) if test "x$CUPS_GHOSTSCRIPT" != x; then AC_DEFINE(HAVE_GHOSTSCRIPT) + PDFTOPS="pdftops" + else + AC_MSG_ERROR(Unable to find gs program!) + exit 1 fi - AC_DEFINE_UNQUOTED(CUPS_GHOSTSCRIPT, "$CUPS_GHOSTSCRIPT") + ;; - if test "x$CUPS_PDFTOPS" != x -o "x$CUPS_GHOSTSCRIPT" != x; then - AC_MSG_CHECKING(whether to build pdftops filter) - if test x$enable_pdftops = xyes -o $uname != Darwin; then - PDFTOPS="pdftops" - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - elif test x$enable_pdftops = xyes; then - AC_MSG_ERROR(Unable to find pdftops or gs programs!) + xpdftops) + AC_PATH_PROG(CUPS_PDFTOPS, pdftops) + if test "x$CUPS_PDFTOPS" != x; then + AC_DEFINE(HAVE_PDFTOPS) + PDFTOPS="pdftops" + else + AC_MSG_ERROR(Unable to find pdftops program!) exit 1 fi -fi + ;; +esac +AC_DEFINE_UNQUOTED(CUPS_PDFTOPS, "$CUPS_PDFTOPS") +AC_DEFINE_UNQUOTED(CUPS_GHOSTSCRIPT, "$CUPS_GHOSTSCRIPT") AC_SUBST(PDFTOPS) dnl diff --git a/config-scripts/cups-sharedlibs.m4 b/config-scripts/cups-sharedlibs.m4 index e4ca18dc0..09c55f897 100644 --- a/config-scripts/cups-sharedlibs.m4 +++ b/config-scripts/cups-sharedlibs.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $" dnl dnl Shared library support for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2005 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -16,7 +16,7 @@ dnl PICFLAG=1 DSOFLAGS="${DSOFLAGS:=}" -AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries, default=yes]) +AC_ARG_ENABLE(shared, [ --disable-shared do not create shared libraries]) if test x$enable_shared != xno; then case "$uname" in diff --git a/config-scripts/cups-slp.m4 b/config-scripts/cups-slp.m4 index 89f87468c..36a00b7f1 100644 --- a/config-scripts/cups-slp.m4 +++ b/config-scripts/cups-slp.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-slp.m4 7241 2008-01-22 22:34:52Z mike $" dnl dnl OpenSLP configuration stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2005 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -13,7 +13,7 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(slp, [ --enable-slp turn on SLP support, default=yes]) +AC_ARG_ENABLE(slp, [ --disable-slp disable SLP support]) AC_ARG_WITH(openslp-libs, [ --with-openslp-libs set directory for OpenSLP library], LDFLAGS="-L$withval $LDFLAGS" DSOFLAGS="-L$withval $DSOFLAGS",) diff --git a/config-scripts/cups-ssl.m4 b/config-scripts/cups-ssl.m4 index f5335562c..a3b4ccf9d 100644 --- a/config-scripts/cups-ssl.m4 +++ b/config-scripts/cups-ssl.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $" dnl dnl OpenSSL/GNUTLS stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007-2008 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2007 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -13,7 +13,7 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(ssl, [ --enable-ssl turn on SSL/TLS support, default=yes]) +AC_ARG_ENABLE(ssl, [ --disable-ssl disable SSL/TLS support]) AC_ARG_ENABLE(cdsassl, [ --enable-cdsassl use CDSA for SSL/TLS support, default=first]) AC_ARG_ENABLE(gnutls, [ --enable-gnutls use GNU TLS for SSL/TLS support, default=second]) AC_ARG_ENABLE(openssl, [ --enable-openssl use OpenSSL for SSL/TLS support, default=third]) @@ -26,7 +26,6 @@ AC_ARG_WITH(openssl-includes, [ --with-openssl-includes set directory for OpenS SSLFLAGS="" SSLLIBS="" -ENCRYPTION_REQUIRED="" if test x$enable_ssl != xno; then dnl Look for CDSA... @@ -34,10 +33,6 @@ if test x$enable_ssl != xno; then if test $uname = Darwin; then AC_CHECK_HEADER(Security/SecureTransport.h, [ SSLLIBS="-framework CoreFoundation -framework Security" - # MacOS X doesn't (yet) come with pre-installed encryption - # certificates for CUPS, so don't enable encryption on - # /admin just yet... - #ENCRYPTION_REQUIRED=" Encryption Required" AC_DEFINE(HAVE_SSL) AC_DEFINE(HAVE_CDSASSL) @@ -68,7 +63,6 @@ if test x$enable_ssl != xno; then if test "x$LIBGNUTLSCONFIG" != x; then SSLLIBS=`$LIBGNUTLSCONFIG --libs` SSLFLAGS=`$LIBGNUTLSCONFIG --cflags` - ENCRYPTION_REQUIRED=" Encryption Required" AC_DEFINE(HAVE_SSL) AC_DEFINE(HAVE_GNUTLS) fi @@ -95,7 +89,6 @@ if test x$enable_ssl != xno; then AC_CHECK_LIB(ssl,SSL_new, [SSLFLAGS="-DOPENSSL_DISABLE_OLD_DES_SUPPORT" SSLLIBS="-lssl $libcrypto" - ENCRYPTION_REQUIRED=" Encryption Required" AC_DEFINE(HAVE_SSL) AC_DEFINE(HAVE_LIBSSL)],, $libcrypto) @@ -116,7 +109,6 @@ fi AC_SUBST(SSLFLAGS) AC_SUBST(SSLLIBS) -AC_SUBST(ENCRYPTION_REQUIRED) EXPORT_SSLLIBS="$SSLLIBS" AC_SUBST(EXPORT_SSLLIBS) diff --git a/config-scripts/cups-threads.m4 b/config-scripts/cups-threads.m4 index 2dfa8beff..aa07c8950 100644 --- a/config-scripts/cups-threads.m4 +++ b/config-scripts/cups-threads.m4 @@ -3,7 +3,7 @@ dnl "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $" dnl dnl Threading stuff for the Common UNIX Printing System (CUPS). dnl -dnl Copyright 2007 by Apple Inc. +dnl Copyright 2007-2009 by Apple Inc. dnl Copyright 1997-2005 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -13,7 +13,7 @@ dnl which should have been included with this file. If this file is dnl file is missing or damaged, see the license at "http://www.cups.org/". dnl -AC_ARG_ENABLE(threads, [ --enable-threads enable multi-threading support]) +AC_ARG_ENABLE(threads, [ --disable-threads disable multi-threading support]) have_pthread=no PTHREAD_FLAGS="" diff --git a/cups/dest.c b/cups/dest.c index 4ee574e52..9417bddc1 100644 --- a/cups/dest.c +++ b/cups/dest.c @@ -130,7 +130,7 @@ cupsAddDest(const char *name, /* I - Destination name */ { int i; /* Looping var */ cups_dest_t *dest; /* Destination pointer */ - cups_dest_t *parent; /* Parent destination */ + cups_dest_t *parent = NULL; /* Parent destination */ cups_option_t *doption, /* Current destination option */ *poption; /* Current parent option */ diff --git a/cups/http-support.c b/cups/http-support.c index 7bcdd4fca..a8b6b2e41 100644 --- a/cups/http-support.c +++ b/cups/http-support.c @@ -292,7 +292,7 @@ httpAssembleURI( * Otherwise, just copy the host string... */ - ptr = http_copy_encode(ptr, host, end, ":/?#[]@", NULL, + ptr = http_copy_encode(ptr, host, end, ":/?#[]@\\", NULL, encoding & HTTP_URI_CODING_HOSTNAME); if (!ptr) diff --git a/cups/testi18n.c b/cups/testi18n.c index 0ea419d3a..139dd2ff5 100644 --- a/cups/testi18n.c +++ b/cups/testi18n.c @@ -3,7 +3,7 @@ * * Internationalization test for Common UNIX Printing System (CUPS). * - * Copyright 2007-2008 by Apple Inc. + * Copyright 2007-2009 by Apple Inc. * Copyright 1997-2006 by Easy Software Products. * * These coded instructions, statements, and computer programs are the @@ -35,6 +35,82 @@ /* + * Local globals... + */ + +static const char * const lang_encodings[] = + { /* Encoding strings */ + "us-ascii", "iso-8859-1", + "iso-8859-2", "iso-8859-3", + "iso-8859-4", "iso-8859-5", + "iso-8859-6", "iso-8859-7", + "iso-8859-8", "iso-8859-9", + "iso-8859-10", "utf-8", + "iso-8859-13", "iso-8859-14", + "iso-8859-15", "windows-874", + "windows-1250", "windows-1251", + "windows-1252", "windows-1253", + "windows-1254", "windows-1255", + "windows-1256", "windows-1257", + "windows-1258", "koi8-r", + "koi8-u", "iso-8859-11", + "iso-8859-16", "mac-roman", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "windows-932", "windows-936", + "windows-949", "windows-950", + "windows-1361", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "unknown", "unknown", + "euc-cn", "euc-jp", + "euc-kr", "euc-tw", + "jis-x0213" + }; + + +/* * Local functions... */ @@ -77,6 +153,54 @@ main(int argc, /* I - Argument Count */ cups_utf32_t utf32dest[1024]; /* UTF-32 destination string */ + if (argc > 1) + { + int i; /* Looping var */ + cups_encoding_t encoding; /* Source encoding */ + + + if (argc != 3) + { + puts("Usage: ./testi18n [filename charset]"); + return (1); + } + + if ((fp = fopen(argv[1], "rb")) == NULL) + { + perror(argv[1]); + return (1); + } + + for (i = 0, encoding = CUPS_AUTO_ENCODING; + i < (int)(sizeof(lang_encodings) / sizeof(lang_encodings[0])); + i ++) + if (!strcasecmp(lang_encodings[i], argv[2])) + { + encoding = (cups_encoding_t)i; + break; + } + + if (encoding == CUPS_AUTO_ENCODING) + { + fprintf(stderr, "%s: Unknown character set!\n", argv[2]); + return (1); + } + + while (fgets(line, sizeof(line), fp)) + { + if (cupsCharsetToUTF8(utf8dest, line, sizeof(utf8dest), encoding) < 0) + { + fprintf(stderr, "%s: Unable to convert line: %s", argv[1], line); + return (1); + } + + fputs((char *)utf8dest, stdout); + } + + fclose(fp); + return (0); + } + /* * Make sure we have a symbolic link from the data directory to a * "charmaps" directory, and then point the library at it... @@ -93,7 +217,7 @@ main(int argc, /* I - Argument Count */ errors = 0; - if ((fp = fopen("utf8demo.txt", "r")) == NULL) + if ((fp = fopen("utf8demo.txt", "rb")) == NULL) { perror("utf8demo.txt"); return (1); diff --git a/cups/transcode.c b/cups/transcode.c index de9526916..b0382e14a 100644 --- a/cups/transcode.c +++ b/cups/transcode.c @@ -1506,7 +1506,7 @@ get_sbcs_charmap( goto sbcs_error; unichar = strtol(s, NULL, 16); - if (unichar < 0 || unichar > 0xffff) + if (unichar < 0 || unichar > 0x10ffff) goto sbcs_error; /* @@ -1682,7 +1682,7 @@ get_vbcs_charmap( goto vbcs_error; unichar = strtol(s, NULL, 16); - if (unichar < 0 || unichar > 0xffff) + if (unichar < 0 || unichar > 0x10ffff) goto vbcs_error; i ++; @@ -1704,7 +1704,7 @@ get_vbcs_charmap( leadchar = (cups_sbcs_t)(legchar >> 16); vmap->lead3char[leadchar] = leadchar; } - else if (legchar > 0xff) + else { leadchar = (cups_sbcs_t)(legchar >> 8); vmap->lead2char[leadchar] = leadchar; diff --git a/data/jis-x0213.txt b/data/jis-x0213.txt index 9e11395ce..826c9b6d4 100644 --- a/data/jis-x0213.txt +++ b/data/jis-x0213.txt @@ -1,4 +1,36 @@ # JIS-X0213 aka Shift JIS character mapping table +0x00 0x0000 +0x01 0x0001 +0x02 0x0002 +0x03 0x0003 +0x04 0x0004 +0x05 0x0005 +0x06 0x0006 +0x07 0x0007 +0x08 0x0008 +0x09 0x0009 +0x0a 0x000a +0x0b 0x000b +0x0c 0x000c +0x0d 0x000d +0x0e 0x000e +0x0f 0x000f +0x10 0x0010 +0x11 0x0011 +0x12 0x0012 +0x13 0x0013 +0x14 0x0014 +0x15 0x0015 +0x16 0x0016 +0x17 0x0017 +0x18 0x0018 +0x19 0x0019 +0x1a 0x001a +0x1b 0x001b +0x1c 0x001c +0x1d 0x001d +0x1e 0x001e +0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 @@ -94,6 +126,70 @@ 0x7c 0x007c 0x7d 0x007d 0x7e 0x203e +0x7f 0x007f +0xa1 0xff61 +0xa2 0xff62 +0xa3 0xff63 +0xa4 0xff64 +0xa5 0xff65 +0xa6 0xff66 +0xa7 0xff67 +0xa8 0xff68 +0xa9 0xff69 +0xaa 0xff6a +0xab 0xff6b +0xac 0xff6c +0xad 0xff6d +0xae 0xff6e +0xaf 0xff6f +0xb0 0xff70 +0xb1 0xff71 +0xb2 0xff72 +0xb3 0xff73 +0xb4 0xff74 +0xb5 0xff75 +0xb6 0xff76 +0xb7 0xff77 +0xb8 0xff78 +0xb9 0xff79 +0xba 0xff7a +0xbb 0xff7b +0xbc 0xff7c +0xbd 0xff7d +0xbe 0xff7e +0xbf 0xff7f +0xc0 0xff80 +0xc1 0xff81 +0xc2 0xff82 +0xc3 0xff83 +0xc4 0xff84 +0xc5 0xff85 +0xc6 0xff86 +0xc7 0xff87 +0xc8 0xff88 +0xc9 0xff89 +0xca 0xff8a +0xcb 0xff8b +0xcc 0xff8c +0xcd 0xff8d +0xce 0xff8e +0xcf 0xff8f +0xd0 0xff90 +0xd1 0xff91 +0xd2 0xff92 +0xd3 0xff93 +0xd4 0xff94 +0xd5 0xff95 +0xd6 0xff96 +0xd7 0xff97 +0xd8 0xff98 +0xd9 0xff99 +0xda 0xff9a +0xdb 0xff9b +0xdc 0xff9c +0xdd 0xff9d +0xde 0xff9e +0xdf 0xff9f 0x8140 0x3000 0x8141 0x3001 0x8142 0x3002 @@ -122,7 +218,7 @@ 0x8159 0x3006 0x815a 0x3007 0x815b 0x30fc -0x815c 0x2015 +0x815c 0x2014 0x815d 0x2010 0x815e 0xff0f 0x815f 0x005c @@ -202,6 +298,17 @@ 0x81aa 0x2191 0x81ab 0x2193 0x81ac 0x3013 +0x81ad 0xff07 +0x81ae 0xff02 +0x81af 0xff0d +0x81b0 0x007e +0x81b1 0x3033 +0x81b2 0x3034 +0x81b3 0x3035 +0x81b4 0x303b +0x81b5 0x303c +0x81b6 0x30ff +0x81b7 0x309f 0x81b8 0x2208 0x81b9 0x220b 0x81ba 0x2286 @@ -210,6 +317,14 @@ 0x81bd 0x2283 0x81be 0x222a 0x81bf 0x2229 +0x81c0 0x2284 +0x81c1 0x2285 +0x81c2 0x228a +0x81c3 0x228b +0x81c4 0x2209 +0x81c5 0x2205 +0x81c6 0x2305 +0x81c7 0x2306 0x81c8 0x2227 0x81c9 0x2228 0x81ca 0x00ac @@ -217,6 +332,17 @@ 0x81cc 0x21d4 0x81cd 0x2200 0x81ce 0x2203 +0x81cf 0x2295 +0x81d0 0x2296 +0x81d1 0x2297 +0x81d2 0x2225 +0x81d3 0x2226 +0x81d4 0xff5f +0x81d5 0xff60 +0x81d6 0x3018 +0x81d7 0x3019 +0x81d8 0x3016 +0x81d9 0x3017 0x81da 0x2220 0x81db 0x22a5 0x81dc 0x2312 @@ -232,6 +358,13 @@ 0x81e6 0x2235 0x81e7 0x222b 0x81e8 0x222c +0x81e9 0x2262 +0x81ea 0x2243 +0x81eb 0x2245 +0x81ec 0x2248 +0x81ed 0x2276 +0x81ee 0x2277 +0x81ef 0x2194 0x81f0 0x212b 0x81f1 0x2030 0x81f2 0x266f @@ -240,7 +373,26 @@ 0x81f5 0x2020 0x81f6 0x2021 0x81f7 0x00b6 +0x81f8 0x266e +0x81f9 0x266b +0x81fa 0x266c +0x81fb 0x2669 0x81fc 0x25ef +0x8240 0x25b7 +0x8241 0x25b6 +0x8242 0x25c1 +0x8243 0x25c0 +0x8244 0x2197 +0x8245 0x2198 +0x8246 0x2196 +0x8247 0x2199 +0x8248 0x21c4 +0x8249 0x21e8 +0x824a 0x21e6 +0x824b 0x21e7 +0x824c 0x21e9 +0x824d 0x2934 +0x824e 0x2935 0x824f 0xff10 0x8250 0xff11 0x8251 0xff12 @@ -251,6 +403,13 @@ 0x8256 0xff17 0x8257 0xff18 0x8258 0xff19 +0x8259 0x29bf +0x825a 0x25c9 +0x825b 0x303d +0x825c 0xfe46 +0x825d 0xfe45 +0x825e 0x25e6 +0x825f 0x2022 0x8260 0xff21 0x8261 0xff22 0x8262 0xff23 @@ -277,6 +436,12 @@ 0x8277 0xff38 0x8278 0xff39 0x8279 0xff3a +0x827a 0x2213 +0x827b 0x2135 +0x827c 0x210f +0x827d 0x33cb +0x827e 0x2113 +0x8280 0x2127 0x8281 0xff41 0x8282 0xff42 0x8283 0xff43 @@ -303,6 +468,10 @@ 0x8298 0xff58 0x8299 0xff59 0x829a 0xff5a +0x829b 0x30a0 +0x829c 0x2013 +0x829d 0x29fa +0x829e 0x29fb 0x829f 0x3041 0x82a0 0x3042 0x82a1 0x3043 @@ -386,6 +555,14 @@ 0x82ef 0x3091 0x82f0 0x3092 0x82f1 0x3093 +0x82f2 0x3094 +0x82f3 0x3095 +0x82f4 0x3096 +0x82f5 0x304b +0x82f6 0x304d +0x82f7 0x304f +0x82f8 0x3051 +0x82f9 0x3053 0x8340 0x30a1 0x8341 0x30a2 0x8342 0x30a3 @@ -472,6 +649,14 @@ 0x8394 0x30f4 0x8395 0x30f5 0x8396 0x30f6 +0x8397 0x30ab +0x8398 0x30ad +0x8399 0x30af +0x839a 0x30b1 +0x839b 0x30b3 +0x839c 0x30bb +0x839d 0x30c4 +0x839e 0x30c8 0x839f 0x0391 0x83a0 0x0392 0x83a1 0x0393 @@ -496,6 +681,14 @@ 0x83b4 0x03a7 0x83b5 0x03a8 0x83b6 0x03a9 +0x83b7 0x2664 +0x83b8 0x2660 +0x83b9 0x2662 +0x83ba 0x2666 +0x83bb 0x2661 +0x83bc 0x2665 +0x83bd 0x2667 +0x83be 0x2663 0x83bf 0x03b1 0x83c0 0x03b2 0x83c1 0x03b3 @@ -520,6 +713,44 @@ 0x83d4 0x03c7 0x83d5 0x03c8 0x83d6 0x03c9 +0x83d7 0x03c2 +0x83d8 0x24f5 +0x83d9 0x24f6 +0x83da 0x24f7 +0x83db 0x24f8 +0x83dc 0x24f9 +0x83dd 0x24fa +0x83de 0x24fb +0x83df 0x24fc +0x83e0 0x24fd +0x83e1 0x24fe +0x83e2 0x2616 +0x83e3 0x2617 +0x83e4 0x3020 +0x83e5 0x260e +0x83e6 0x2600 +0x83e7 0x2601 +0x83e8 0x2602 +0x83e9 0x2603 +0x83ea 0x2668 +0x83eb 0x25b1 +0x83ec 0x31f0 +0x83ed 0x31f1 +0x83ee 0x31f2 +0x83ef 0x31f3 +0x83f0 0x31f4 +0x83f1 0x31f5 +0x83f2 0x31f6 +0x83f3 0x31f7 +0x83f4 0x31f8 +0x83f5 0x31f9 +0x83f6 0x31f7 +0x83f7 0x31fa +0x83f8 0x31fb +0x83f9 0x31fc +0x83fa 0x31fd +0x83fb 0x31fe +0x83fc 0x31ff 0x8440 0x0410 0x8441 0x0411 0x8442 0x0412 @@ -553,6 +784,21 @@ 0x845e 0x042d 0x845f 0x042e 0x8460 0x042f +0x8461 0x23be +0x8462 0x23bf +0x8463 0x23c0 +0x8464 0x23c1 +0x8465 0x23c2 +0x8466 0x23c3 +0x8467 0x23c4 +0x8468 0x23c5 +0x8469 0x23c6 +0x846a 0x23c7 +0x846b 0x23c8 +0x846c 0x23c9 +0x846d 0x23ca +0x846e 0x23cb +0x846f 0x23cc 0x8470 0x0430 0x8471 0x0431 0x8472 0x0432 @@ -586,6 +832,19 @@ 0x848f 0x044d 0x8490 0x044e 0x8491 0x044f +0x8492 0x30f7 +0x8493 0x30f8 +0x8494 0x30f9 +0x8495 0x30fa +0x8496 0x22da +0x8497 0x22db +0x8498 0x2153 +0x8499 0x2154 +0x849a 0x2155 +0x849b 0x2713 +0x849c 0x2318 +0x849d 0x2423 +0x849e 0x23ce 0x849f 0x2500 0x84a0 0x2502 0x84a1 0x250c @@ -618,6 +877,690 @@ 0x84bc 0x2525 0x84bd 0x2538 0x84be 0x2542 +0x84bf 0x3251 +0x84c0 0x3252 +0x84c1 0x3253 +0x84c2 0x3254 +0x84c3 0x3255 +0x84c4 0x3256 +0x84c5 0x3257 +0x84c6 0x3258 +0x84c7 0x3259 +0x84c8 0x325a +0x84c9 0x325b +0x84ca 0x325c +0x84cb 0x325d +0x84cc 0x325e +0x84cd 0x325f +0x84ce 0x32b1 +0x84cf 0x32b2 +0x84d0 0x32b3 +0x84d1 0x32b4 +0x84d2 0x32b5 +0x84d3 0x32b6 +0x84d4 0x32b7 +0x84d5 0x32b8 +0x84d6 0x32b9 +0x84d7 0x32ba +0x84d8 0x32bb +0x84d9 0x32bc +0x84da 0x32bd +0x84db 0x32be +0x84dc 0x32bf +0x84e5 0x25d0 +0x84e6 0x25d1 +0x84e7 0x25d2 +0x84e8 0x25d3 +0x84e9 0x203c +0x84ea 0x2047 +0x84eb 0x2048 +0x84ec 0x2049 +0x84ed 0x01cd +0x84ee 0x01ce +0x84ef 0x01d0 +0x84f0 0x1e3e +0x84f1 0x1e3f +0x84f2 0x01f8 +0x84f3 0x01f9 +0x84f4 0x01d1 +0x84f5 0x01d2 +0x84f6 0x01d4 +0x84f7 0x01d6 +0x84f8 0x01d8 +0x84f9 0x01da +0x84fa 0x01dc +0x8540 0x20ac +0x8541 0x00a0 +0x8542 0x00a1 +0x8543 0x00a4 +0x8544 0x00a6 +0x8545 0x00a9 +0x8546 0x00aa +0x8547 0x00ab +0x8548 0x00ad +0x8549 0x00ae +0x854a 0x00af +0x854b 0x00b2 +0x854c 0x00b3 +0x854d 0x00b7 +0x854e 0x00b8 +0x854f 0x00b9 +0x8550 0x00ba +0x8551 0x00bb +0x8552 0x00bc +0x8553 0x00bd +0x8554 0x00be +0x8555 0x00bf +0x8556 0x00c0 +0x8557 0x00c1 +0x8558 0x00c2 +0x8559 0x00c3 +0x855a 0x00c4 +0x855b 0x00c5 +0x855c 0x00c6 +0x855d 0x00c7 +0x855e 0x00c8 +0x855f 0x00c9 +0x8560 0x00ca +0x8561 0x00cb +0x8562 0x00cc +0x8563 0x00cd +0x8564 0x00ce +0x8565 0x00cf +0x8566 0x00d0 +0x8567 0x00d1 +0x8568 0x00d2 +0x8569 0x00d3 +0x856a 0x00d4 +0x856b 0x00d5 +0x856c 0x00d6 +0x856d 0x00d8 +0x856e 0x00d9 +0x856f 0x00da +0x8570 0x00db +0x8571 0x00dc +0x8572 0x00dd +0x8573 0x00de +0x8574 0x00df +0x8575 0x00e0 +0x8576 0x00e1 +0x8577 0x00e2 +0x8578 0x00e3 +0x8579 0x00e4 +0x857a 0x00e5 +0x857b 0x00e6 +0x857c 0x00e7 +0x857d 0x00e8 +0x857e 0x00e9 +0x8580 0x00ea +0x8581 0x00eb +0x8582 0x00ec +0x8583 0x00ed +0x8584 0x00ee +0x8585 0x00ef +0x8586 0x00f0 +0x8587 0x00f1 +0x8588 0x00f2 +0x8589 0x00f3 +0x858a 0x00f4 +0x858b 0x00f5 +0x858c 0x00f6 +0x858d 0x00f8 +0x858e 0x00f9 +0x858f 0x00fa +0x8590 0x00fb +0x8591 0x00fc +0x8592 0x00fd +0x8593 0x00fe +0x8594 0x00ff +0x8595 0x0100 +0x8596 0x012a +0x8597 0x016a +0x8598 0x0112 +0x8599 0x014c +0x859a 0x0101 +0x859b 0x012b +0x859c 0x016b +0x859d 0x0113 +0x859e 0x014d +0x859f 0x0104 +0x85a0 0x02d8 +0x85a1 0x0141 +0x85a2 0x013d +0x85a3 0x015a +0x85a4 0x0160 +0x85a5 0x015e +0x85a6 0x0164 +0x85a7 0x0179 +0x85a8 0x017d +0x85a9 0x017b +0x85aa 0x0105 +0x85ab 0x02db +0x85ac 0x0142 +0x85ad 0x013e +0x85ae 0x015b +0x85af 0x02c7 +0x85b0 0x0161 +0x85b1 0x015f +0x85b2 0x0165 +0x85b3 0x017a +0x85b4 0x02dd +0x85b5 0x017e +0x85b6 0x017c +0x85b7 0x0154 +0x85b8 0x0102 +0x85b9 0x0139 +0x85ba 0x0106 +0x85bb 0x010c +0x85bc 0x0118 +0x85bd 0x011a +0x85be 0x010e +0x85bf 0x0143 +0x85c0 0x0147 +0x85c1 0x0150 +0x85c2 0x0158 +0x85c3 0x016e +0x85c4 0x0170 +0x85c5 0x0162 +0x85c6 0x0155 +0x85c7 0x0103 +0x85c8 0x013a +0x85c9 0x0107 +0x85ca 0x010d +0x85cb 0x0119 +0x85cc 0x011b +0x85cd 0x010f +0x85ce 0x0111 +0x85cf 0x0144 +0x85d0 0x0148 +0x85d1 0x0151 +0x85d2 0x0159 +0x85d3 0x016f +0x85d4 0x0171 +0x85d5 0x0163 +0x85d6 0x02d9 +0x85d7 0x0108 +0x85d8 0x011c +0x85d9 0x0124 +0x85da 0x0134 +0x85db 0x015c +0x85dc 0x016c +0x85dd 0x0109 +0x85de 0x011d +0x85df 0x0125 +0x85e0 0x0135 +0x85e1 0x015d +0x85e2 0x016d +0x85e3 0x0271 +0x85e4 0x028b +0x85e5 0x027e +0x85e6 0x0283 +0x85e7 0x0292 +0x85e8 0x026c +0x85e9 0x026e +0x85ea 0x0279 +0x85eb 0x0288 +0x85ec 0x0256 +0x85ed 0x0273 +0x85ee 0x027d +0x85ef 0x0282 +0x85f0 0x0290 +0x85f1 0x027b +0x85f2 0x026d +0x85f3 0x025f +0x85f4 0x0272 +0x85f5 0x029d +0x85f6 0x028e +0x85f7 0x0261 +0x85f8 0x014b +0x85f9 0x0270 +0x85fa 0x0281 +0x85fb 0x0127 +0x85fc 0x0295 +0x8640 0x0294 +0x8641 0x0266 +0x8642 0x0298 +0x8643 0x01c2 +0x8644 0x0253 +0x8645 0x0257 +0x8646 0x0284 +0x8647 0x0260 +0x8648 0x0193 +0x8649 0x0153 +0x864a 0x0152 +0x864b 0x0268 +0x864c 0x0289 +0x864d 0x0258 +0x864e 0x0275 +0x864f 0x0259 +0x8650 0x025c +0x8651 0x025e +0x8652 0x0250 +0x8653 0x026f +0x8654 0x028a +0x8655 0x0264 +0x8656 0x028c +0x8657 0x0254 +0x8658 0x0251 +0x8659 0x0252 +0x865a 0x028d +0x865b 0x0265 +0x865c 0x02a2 +0x865d 0x02a1 +0x865e 0x0255 +0x865f 0x0291 +0x8660 0x027a +0x8661 0x0267 +0x8662 0x025a +0x8663 0x00e6 +0x8664 0x01fd +0x8665 0x1f70 +0x8666 0x1f71 +0x8667 0x0254 +0x8668 0x0254 +0x8669 0x028c +0x866a 0x028c +0x866b 0x0259 +0x866c 0x0259 +0x866d 0x025a +0x866e 0x025a +0x866f 0x1f72 +0x8670 0x1f73 +0x8671 0x0361 +0x8672 0x02c8 +0x8673 0x02cc +0x8674 0x02d0 +0x8675 0x02d1 +0x8676 0x0306 +0x8677 0x203f +0x8678 0x030b +0x8679 0x0301 +0x867a 0x0304 +0x867b 0x0300 +0x867c 0x030f +0x867d 0x030c +0x867e 0x0302 +0x8680 0x02e5 +0x8681 0x02e6 +0x8682 0x02e7 +0x8683 0x02e8 +0x8684 0x02e9 +0x8685 0x02e9 +0x8686 0x02e5 +0x8687 0x0325 +0x8688 0x032c +0x8689 0x0339 +0x868a 0x031c +0x868b 0x031f +0x868c 0x0320 +0x868d 0x0308 +0x868e 0x033d +0x868f 0x0329 +0x8690 0x032f +0x8691 0x02de +0x8692 0x0324 +0x8693 0x0330 +0x8694 0x033c +0x8695 0x0334 +0x8696 0x031d +0x8697 0x031e +0x8698 0x0318 +0x8699 0x0319 +0x869a 0x032a +0x869b 0x033a +0x869c 0x033b +0x869d 0x0303 +0x869e 0x031a +0x869f 0x2776 +0x86a0 0x2777 +0x86a1 0x2778 +0x86a2 0x2779 +0x86a3 0x277a +0x86a4 0x277b +0x86a5 0x277c +0x86a6 0x277d +0x86a7 0x277e +0x86a8 0x277f +0x86a9 0x24eb +0x86aa 0x24ec +0x86ab 0x24ed +0x86ac 0x24ee +0x86ad 0x24ef +0x86ae 0x24f0 +0x86af 0x24f1 +0x86b0 0x24f2 +0x86b1 0x24f3 +0x86b2 0x24f4 +0x86b3 0x2170 +0x86b4 0x2171 +0x86b5 0x2172 +0x86b6 0x2173 +0x86b7 0x2174 +0x86b8 0x2175 +0x86b9 0x2176 +0x86ba 0x2177 +0x86bb 0x2178 +0x86bc 0x2179 +0x86bd 0x217a +0x86be 0x217b +0x86bf 0x24d0 +0x86c0 0x24d1 +0x86c1 0x24d2 +0x86c2 0x24d3 +0x86c3 0x24d4 +0x86c4 0x24d5 +0x86c5 0x24d6 +0x86c6 0x24d7 +0x86c7 0x24d8 +0x86c8 0x24d9 +0x86c9 0x24da +0x86ca 0x24db +0x86cb 0x24dc +0x86cc 0x24dd +0x86cd 0x24de +0x86ce 0x24df +0x86cf 0x24e0 +0x86d0 0x24e1 +0x86d1 0x24e2 +0x86d2 0x24e3 +0x86d3 0x24e4 +0x86d4 0x24e5 +0x86d5 0x24e6 +0x86d6 0x24e7 +0x86d7 0x24e8 +0x86d8 0x24e9 +0x86d9 0x32d0 +0x86da 0x32d1 +0x86db 0x32d2 +0x86dc 0x32d3 +0x86dd 0x32d4 +0x86de 0x32d5 +0x86df 0x32d6 +0x86e0 0x32d7 +0x86e1 0x32d8 +0x86e2 0x32d9 +0x86e3 0x32da +0x86e4 0x32db +0x86e5 0x32dc +0x86e6 0x32dd +0x86e7 0x32de +0x86e8 0x32df +0x86e9 0x32e0 +0x86ea 0x32e1 +0x86eb 0x32e2 +0x86ec 0x32e3 +0x86ed 0x32fa +0x86ee 0x32e9 +0x86ef 0x32e5 +0x86f0 0x32ed +0x86f1 0x32ec +0x86fb 0x2051 +0x86fc 0x2042 +0x8740 0x2460 +0x8741 0x2461 +0x8742 0x2462 +0x8743 0x2463 +0x8744 0x2464 +0x8745 0x2465 +0x8746 0x2466 +0x8747 0x2467 +0x8748 0x2468 +0x8749 0x2469 +0x874a 0x246a +0x874b 0x246b +0x874c 0x246c +0x874d 0x246d +0x874e 0x246e +0x874f 0x246f +0x8750 0x2470 +0x8751 0x2471 +0x8752 0x2472 +0x8753 0x2473 +0x8754 0x2160 +0x8755 0x2161 +0x8756 0x2162 +0x8757 0x2163 +0x8758 0x2164 +0x8759 0x2165 +0x875a 0x2166 +0x875b 0x2167 +0x875c 0x2168 +0x875d 0x2169 +0x875e 0x216a +0x875f 0x3349 +0x8760 0x3314 +0x8761 0x3322 +0x8762 0x334d +0x8763 0x3318 +0x8764 0x3327 +0x8765 0x3303 +0x8766 0x3336 +0x8767 0x3351 +0x8768 0x3357 +0x8769 0x330d +0x876a 0x3326 +0x876b 0x3323 +0x876c 0x332b +0x876d 0x334a +0x876e 0x333b +0x876f 0x339c +0x8770 0x339d +0x8771 0x339e +0x8772 0x338e +0x8773 0x338f +0x8774 0x33c4 +0x8775 0x33a1 +0x8776 0x216b +0x877e 0x337b +0x8780 0x301d +0x8781 0x301f +0x8782 0x2116 +0x8783 0x33cd +0x8784 0x2121 +0x8785 0x32a4 +0x8786 0x32a5 +0x8787 0x32a6 +0x8788 0x32a7 +0x8789 0x32a8 +0x878a 0x3231 +0x878b 0x3232 +0x878c 0x3239 +0x878d 0x337e +0x878e 0x337d +0x878f 0x337c +0x8793 0x222e +0x8798 0x221f +0x8799 0x22bf +0x879d 0x2756 +0x879e 0x261e +0x879f 0x4ff1 +0x87a0 0x2000b +0x87a1 0x3402 +0x87a2 0x4e28 +0x87a3 0x4e2f +0x87a4 0x4e30 +0x87a5 0x4e8d +0x87a6 0x4ee1 +0x87a7 0x4efd +0x87a8 0x4eff +0x87a9 0x4f03 +0x87aa 0x4f0b +0x87ab 0x4f60 +0x87ac 0x4f48 +0x87ad 0x4f49 +0x87ae 0x4f56 +0x87af 0x4f5f +0x87b0 0x4f6a +0x87b1 0x4f6c +0x87b2 0x4f7e +0x87b3 0x4f8a +0x87b4 0x4f94 +0x87b5 0x4f97 +0x87b6 0xfa30 +0x87b7 0x4fc9 +0x87b8 0x4fe0 +0x87b9 0x5001 +0x87ba 0x5002 +0x87bb 0x500e +0x87bc 0x5018 +0x87bd 0x5027 +0x87be 0x502e +0x87bf 0x5040 +0x87c0 0x503b +0x87c1 0x5041 +0x87c2 0x5094 +0x87c3 0x50cc +0x87c4 0x50f2 +0x87c5 0x50d0 +0x87c6 0x50e6 +0x87c7 0xfa31 +0x87c8 0x5106 +0x87c9 0x5103 +0x87ca 0x510b +0x87cb 0x511e +0x87cc 0x5135 +0x87cd 0x514a +0x87ce 0xfa32 +0x87cf 0x5155 +0x87d0 0x5157 +0x87d1 0x34b5 +0x87d2 0x519d +0x87d3 0x51c3 +0x87d4 0x51ca +0x87d5 0x51de +0x87d6 0x51e2 +0x87d7 0x51ee +0x87d8 0x5201 +0x87d9 0x34db +0x87da 0x5213 +0x87db 0x5215 +0x87dc 0x5249 +0x87dd 0x5257 +0x87de 0x5261 +0x87df 0x5293 +0x87e0 0x52c8 +0x87e1 0xfa33 +0x87e2 0x52cc +0x87e3 0x52d0 +0x87e4 0x52d6 +0x87e5 0x52db +0x87e6 0xfa34 +0x87e7 0x52f0 +0x87e8 0x52fb +0x87e9 0x5300 +0x87ea 0x5307 +0x87eb 0x531c +0x87ec 0xfa35 +0x87ed 0x5361 +0x87ee 0x5363 +0x87ef 0x537d +0x87f0 0x5393 +0x87f1 0x539d +0x87f2 0x53b2 +0x87f3 0x5412 +0x87f4 0x5427 +0x87f5 0x544d +0x87f6 0x549c +0x87f7 0x546b +0x87f8 0x5474 +0x87f9 0x547f +0x87fa 0x5488 +0x87fb 0x5496 +0x87fc 0x54a1 +0x8840 0x54a9 +0x8841 0x54c6 +0x8842 0x54ff +0x8843 0x550e +0x8844 0x552b +0x8845 0x5535 +0x8846 0x5550 +0x8847 0x555e +0x8848 0x5581 +0x8849 0x5586 +0x884a 0x558e +0x884b 0xfa36 +0x884c 0x55ad +0x884d 0x55ce +0x884e 0xfa37 +0x884f 0x5608 +0x8850 0x560e +0x8851 0x563b +0x8852 0x5649 +0x8853 0x5676 +0x8854 0x5666 +0x8855 0xfa38 +0x8856 0x566f +0x8857 0x5671 +0x8858 0x5672 +0x8859 0x5699 +0x885a 0x569e +0x885b 0x56a9 +0x885c 0x56ac +0x885d 0x56b3 +0x885e 0x56c9 +0x885f 0x56ca +0x8860 0x570a +0x8861 0x2123d +0x8862 0x5721 +0x8863 0x572f +0x8864 0x5733 +0x8865 0x5734 +0x8866 0x5770 +0x8867 0x5777 +0x8868 0x577c +0x8869 0x579c +0x886a 0xfa0f +0x886b 0x2131b +0x886c 0x57b8 +0x886d 0x57c7 +0x886e 0x57c8 +0x886f 0x57cf +0x8870 0x57e4 +0x8871 0x57ed +0x8872 0x57f5 +0x8873 0x57f6 +0x8874 0x57ff +0x8875 0x5809 +0x8876 0xfa10 +0x8877 0x5861 +0x8878 0x5864 +0x8879 0xfa39 +0x887a 0x587c +0x887b 0x5889 +0x887c 0x589e +0x887d 0xfa3a +0x887e 0x58a9 +0x8880 0x2146e +0x8881 0x58d2 +0x8882 0x58ce +0x8883 0x58d4 +0x8884 0x58da +0x8885 0x58e0 +0x8886 0x58e9 +0x8887 0x590c +0x8888 0x8641 +0x8889 0x595d +0x888a 0x596d +0x888b 0x598b +0x888c 0x5992 +0x888d 0x59a4 +0x888e 0x59c3 +0x888f 0x59d2 +0x8890 0x59dd +0x8891 0x5a13 +0x8892 0x5a23 +0x8893 0x5a67 +0x8894 0x5a6d +0x8895 0x5a77 +0x8896 0x5a7e +0x8897 0x5a84 +0x8898 0x5a9e +0x8899 0x5aa7 +0x889a 0x5ac4 +0x889b 0x218bd +0x889c 0x5b19 +0x889d 0x5b25 +0x889e 0x525d 0x889f 0x4e9c 0x88a0 0x5516 0x88a1 0x5a03 @@ -3583,6 +4526,49 @@ 0x9870 0x6e7e 0x9871 0x7897 0x9872 0x8155 +0x9873 0x20b9f +0x9874 0x5b41 +0x9875 0x5b56 +0x9876 0x5b7d +0x9877 0x5b93 +0x9878 0x5bd8 +0x9879 0x5bec +0x987a 0x5c12 +0x987b 0x5c1e +0x987c 0x5c23 +0x987d 0x5c2b +0x987e 0x378d +0x9880 0x5c62 +0x9881 0xfa3b +0x9882 0xfa3c +0x9883 0x216b4 +0x9884 0x5c7a +0x9885 0x5c8f +0x9886 0x5c9f +0x9887 0x5ca3 +0x9888 0x5caa +0x9889 0x5cba +0x988a 0x5ccb +0x988b 0x5cd0 +0x988c 0x5cd2 +0x988d 0x5cf4 +0x988e 0x21e34 +0x988f 0x37e2 +0x9890 0x5d0d +0x9891 0x5d27 +0x9892 0xfa11 +0x9893 0x5d46 +0x9894 0x5d47 +0x9895 0x5d53 +0x9896 0x5d4a +0x9897 0x5d6d +0x9898 0x5d81 +0x9899 0x5da0 +0x989a 0x5da4 +0x989b 0x5da7 +0x989c 0x5db8 +0x989d 0x5dcb +0x989e 0x541e 0x989f 0x5f0c 0x98a0 0x4e10 0x98a1 0x4e15 @@ -4993,69 +5979,6 @@ 0x9ffa 0x6eef 0x9ffb 0x6f32 0x9ffc 0x6ecc -0xa1 0xff61 -0xa2 0xff62 -0xa3 0xff63 -0xa4 0xff64 -0xa5 0xff65 -0xa6 0xff66 -0xa7 0xff67 -0xa8 0xff68 -0xa9 0xff69 -0xaa 0xff6a -0xab 0xff6b -0xac 0xff6c -0xad 0xff6d -0xae 0xff6e -0xaf 0xff6f -0xb0 0xff70 -0xb1 0xff71 -0xb2 0xff72 -0xb3 0xff73 -0xb4 0xff74 -0xb5 0xff75 -0xb6 0xff76 -0xb7 0xff77 -0xb8 0xff78 -0xb9 0xff79 -0xba 0xff7a -0xbb 0xff7b -0xbc 0xff7c -0xbd 0xff7d -0xbe 0xff7e -0xbf 0xff7f -0xc0 0xff80 -0xc1 0xff81 -0xc2 0xff82 -0xc3 0xff83 -0xc4 0xff84 -0xc5 0xff85 -0xc6 0xff86 -0xc7 0xff87 -0xc8 0xff88 -0xc9 0xff89 -0xca 0xff8a -0xcb 0xff8b -0xcc 0xff8c -0xcd 0xff8d -0xce 0xff8e -0xcf 0xff8f -0xd0 0xff90 -0xd1 0xff91 -0xd2 0xff92 -0xd3 0xff93 -0xd4 0xff94 -0xd5 0xff95 -0xd6 0xff96 -0xd7 0xff97 -0xd8 0xff98 -0xd9 0xff99 -0xda 0xff9a -0xdb 0xff9b -0xdc 0xff9c -0xdd 0xff9d -0xde 0xff9e -0xdf 0xff9f 0xe040 0x6f3e 0xe041 0x6f13 0xe042 0x6ef7 @@ -7036,3 +7959,3467 @@ 0xeaa2 0x7464 0xeaa3 0x51dc 0xeaa4 0x7199 +0xeaa5 0x5653 +0xeaa6 0x5de2 +0xeaa7 0x5e14 +0xeaa8 0x5e18 +0xeaa9 0x5e58 +0xeaaa 0x5e5e +0xeaab 0x5ebe +0xeaac 0xf928 +0xeaad 0x5ecb +0xeaae 0x5ef9 +0xeaaf 0x5f00 +0xeab0 0x5f02 +0xeab1 0x5f07 +0xeab2 0x5f1d +0xeab3 0x5f23 +0xeab4 0x5f34 +0xeab5 0x5f36 +0xeab6 0x5f3d +0xeab7 0x5f40 +0xeab8 0x5f45 +0xeab9 0x5f54 +0xeaba 0x5f58 +0xeabb 0x5f64 +0xeabc 0x5f67 +0xeabd 0x5f7d +0xeabe 0x5f89 +0xeabf 0x5f9c +0xeac0 0x5fa7 +0xeac1 0x5faf +0xeac2 0x5fb5 +0xeac3 0x5fb7 +0xeac4 0x5fc9 +0xeac5 0x5fde +0xeac6 0x5fe1 +0xeac7 0x5fe9 +0xeac8 0x600d +0xeac9 0x6014 +0xeaca 0x6018 +0xeacb 0x6033 +0xeacc 0x6035 +0xeacd 0x6047 +0xeace 0xfa3d +0xeacf 0x609d +0xead0 0x609e +0xead1 0x60cb +0xead2 0x60d4 +0xead3 0x60d5 +0xead4 0x60dd +0xead5 0x60f8 +0xead6 0x611c +0xead7 0x612b +0xead8 0x6130 +0xead9 0x6137 +0xeada 0xfa3e +0xeadb 0x618d +0xeadc 0xfa3f +0xeadd 0x61bc +0xeade 0x61b9 +0xeadf 0xfa40 +0xeae0 0x6222 +0xeae1 0x623e +0xeae2 0x6243 +0xeae3 0x6256 +0xeae4 0x625a +0xeae5 0x626f +0xeae6 0x6285 +0xeae7 0x62c4 +0xeae8 0x62d6 +0xeae9 0x62fc +0xeaea 0x630a +0xeaeb 0x6318 +0xeaec 0x6339 +0xeaed 0x6343 +0xeaee 0x6365 +0xeaef 0x637c +0xeaf0 0x63e5 +0xeaf1 0x63ed +0xeaf2 0x63f5 +0xeaf3 0x6410 +0xeaf4 0x6414 +0xeaf5 0x6422 +0xeaf6 0x6479 +0xeaf7 0x6451 +0xeaf8 0x6460 +0xeaf9 0x646d +0xeafa 0x64ce +0xeafb 0x64be +0xeafc 0x64bf +0xeb40 0x64c4 +0xeb41 0x64ca +0xeb42 0x64d0 +0xeb43 0x64f7 +0xeb44 0x64fb +0xeb45 0x6522 +0xeb46 0x6529 +0xeb47 0xfa41 +0xeb48 0x6567 +0xeb49 0x659d +0xeb4a 0xfa42 +0xeb4b 0x6600 +0xeb4c 0x6609 +0xeb4d 0x6615 +0xeb4e 0x661e +0xeb4f 0x663a +0xeb50 0x6622 +0xeb51 0x6624 +0xeb52 0x662b +0xeb53 0x6630 +0xeb54 0x6631 +0xeb55 0x6633 +0xeb56 0x66fb +0xeb57 0x6648 +0xeb58 0x664c +0xeb59 0x231c4 +0xeb5a 0x6659 +0xeb5b 0x665a +0xeb5c 0x6661 +0xeb5d 0x6665 +0xeb5e 0x6673 +0xeb5f 0x6677 +0xeb60 0x6678 +0xeb61 0x668d +0xeb62 0xfa43 +0xeb63 0x66a0 +0xeb64 0x66b2 +0xeb65 0x66bb +0xeb66 0x66c6 +0xeb67 0x66c8 +0xeb68 0x3b22 +0xeb69 0x66db +0xeb6a 0x66e8 +0xeb6b 0x66fa +0xeb6c 0x6713 +0xeb6d 0xf929 +0xeb6e 0x6733 +0xeb6f 0x6766 +0xeb70 0x6747 +0xeb71 0x6748 +0xeb72 0x677b +0xeb73 0x6781 +0xeb74 0x6793 +0xeb75 0x6798 +0xeb76 0x679b +0xeb77 0x67bb +0xeb78 0x67f9 +0xeb79 0x67c0 +0xeb7a 0x67d7 +0xeb7b 0x67fc +0xeb7c 0x6801 +0xeb7d 0x6852 +0xeb7e 0x681d +0xeb80 0x682c +0xeb81 0x6831 +0xeb82 0x685b +0xeb83 0x6872 +0xeb84 0x6875 +0xeb85 0xfa44 +0xeb86 0x68a3 +0xeb87 0x68a5 +0xeb88 0x68b2 +0xeb89 0x68c8 +0xeb8a 0x68d0 +0xeb8b 0x68e8 +0xeb8c 0x68ed +0xeb8d 0x68f0 +0xeb8e 0x68f1 +0xeb8f 0x68fc +0xeb90 0x690a +0xeb91 0x6949 +0xeb92 0x235c4 +0xeb93 0x6935 +0xeb94 0x6942 +0xeb95 0x6957 +0xeb96 0x6963 +0xeb97 0x6964 +0xeb98 0x6968 +0xeb99 0x6980 +0xeb9a 0xfa14 +0xeb9b 0x69a5 +0xeb9c 0x69ad +0xeb9d 0x69cf +0xeb9e 0x3bb6 +0xeb9f 0x3bc3 +0xeba0 0x69e2 +0xeba1 0x69e9 +0xeba2 0x69ea +0xeba3 0x69f5 +0xeba4 0x69f6 +0xeba5 0x6a0f +0xeba6 0x6a15 +0xeba7 0x2373f +0xeba8 0x6a3b +0xeba9 0x6a3e +0xebaa 0x6a45 +0xebab 0x6a50 +0xebac 0x6a56 +0xebad 0x6a5b +0xebae 0x6a6b +0xebaf 0x6a73 +0xebb0 0x23763 +0xebb1 0x6a89 +0xebb2 0x6a94 +0xebb3 0x6a9d +0xebb4 0x6a9e +0xebb5 0x6aa5 +0xebb6 0x6ae4 +0xebb7 0x6ae7 +0xebb8 0x3c0f +0xebb9 0xf91d +0xebba 0x6b1b +0xebbb 0x6b1e +0xebbc 0x6b2c +0xebbd 0x6b35 +0xebbe 0x6b46 +0xebbf 0x6b56 +0xebc0 0x6b60 +0xebc1 0x6b65 +0xebc2 0x6b67 +0xebc3 0x6b77 +0xebc4 0x6b82 +0xebc5 0x6ba9 +0xebc6 0x6bad +0xebc7 0xf970 +0xebc8 0x6bcf +0xebc9 0x6bd6 +0xebca 0x6bd7 +0xebcb 0x6bff +0xebcc 0x6c05 +0xebcd 0x6c10 +0xebce 0x6c33 +0xebcf 0x6c59 +0xebd0 0x6c5c +0xebd1 0x6caa +0xebd2 0x6c74 +0xebd3 0x6c76 +0xebd4 0x6c85 +0xebd5 0x6c86 +0xebd6 0x6c98 +0xebd7 0x6c9c +0xebd8 0x6cfb +0xebd9 0x6cc6 +0xebda 0x6cd4 +0xebdb 0x6ce0 +0xebdc 0x6ceb +0xebdd 0x6cee +0xebde 0x23cfe +0xebdf 0x6d04 +0xebe0 0x6d0e +0xebe1 0x6d2e +0xebe2 0x6d31 +0xebe3 0x6d39 +0xebe4 0x6d3f +0xebe5 0x6d58 +0xebe6 0x6d65 +0xebe7 0xfa45 +0xebe8 0x6d82 +0xebe9 0x6d87 +0xebea 0x6d89 +0xebeb 0x6d94 +0xebec 0x6daa +0xebed 0x6dac +0xebee 0x6dbf +0xebef 0x6dc4 +0xebf0 0x6dd6 +0xebf1 0x6dda +0xebf2 0x6ddb +0xebf3 0x6ddd +0xebf4 0x6dfc +0xebf5 0xfa46 +0xebf6 0x6e34 +0xebf7 0x6e44 +0xebf8 0x6e5c +0xebf9 0x6e5e +0xebfa 0x6eab +0xebfb 0x6eb1 +0xebfc 0x6ec1 +0xec40 0x6ec7 +0xec41 0x6ece +0xec42 0x6f10 +0xec43 0x6f1a +0xec44 0xfa47 +0xec45 0x6f2a +0xec46 0x6f2f +0xec47 0x6f33 +0xec48 0x6f51 +0xec49 0x6f59 +0xec4a 0x6f5e +0xec4b 0x6f61 +0xec4c 0x6f62 +0xec4d 0x6f7e +0xec4e 0x6f88 +0xec4f 0x6f8c +0xec50 0x6f8d +0xec51 0x6f94 +0xec52 0x6fa0 +0xec53 0x6fa7 +0xec54 0x6fb6 +0xec55 0x6fbc +0xec56 0x6fc7 +0xec57 0x6fca +0xec58 0x6ff9 +0xec59 0x6ff0 +0xec5a 0x6ff5 +0xec5b 0x7005 +0xec5c 0x7006 +0xec5d 0x7028 +0xec5e 0x704a +0xec5f 0x705d +0xec60 0x705e +0xec61 0x704e +0xec62 0x7064 +0xec63 0x7075 +0xec64 0x7085 +0xec65 0x70a4 +0xec66 0x70ab +0xec67 0x70b7 +0xec68 0x70d4 +0xec69 0x70d8 +0xec6a 0x70e4 +0xec6b 0x710f +0xec6c 0x712b +0xec6d 0x711e +0xec6e 0x7120 +0xec6f 0x712e +0xec70 0x7130 +0xec71 0x7146 +0xec72 0x7147 +0xec73 0x7151 +0xec74 0xfa48 +0xec75 0x7152 +0xec76 0x715c +0xec77 0x7160 +0xec78 0x7168 +0xec79 0xfa15 +0xec7a 0x7185 +0xec7b 0x7187 +0xec7c 0x7192 +0xec7d 0x71c1 +0xec7e 0x71ba +0xec80 0x71c4 +0xec81 0x71fe +0xec82 0x7200 +0xec83 0x7215 +0xec84 0x7255 +0xec85 0x7256 +0xec86 0x3e3f +0xec87 0x728d +0xec88 0x729b +0xec89 0x72be +0xec8a 0x72c0 +0xec8b 0x72fb +0xec8c 0x247f1 +0xec8d 0x7327 +0xec8e 0x7328 +0xec8f 0xfa16 +0xec90 0x7350 +0xec91 0x7366 +0xec92 0x737c +0xec93 0x7395 +0xec94 0x739f +0xec95 0x73a0 +0xec96 0x73a2 +0xec97 0x73a6 +0xec98 0x73ab +0xec99 0x73c9 +0xec9a 0x73cf +0xec9b 0x73d6 +0xec9c 0x73d9 +0xec9d 0x73e3 +0xec9e 0x73e9 +0xec9f 0x7407 +0xeca0 0x740a +0xeca1 0x741a +0xeca2 0x741b +0xeca3 0xfa4a +0xeca4 0x7426 +0xeca5 0x7428 +0xeca6 0x742a +0xeca7 0x742b +0xeca8 0x742c +0xeca9 0x742e +0xecaa 0x742f +0xecab 0x7430 +0xecac 0x7444 +0xecad 0x7446 +0xecae 0x7447 +0xecaf 0x744b +0xecb0 0x7457 +0xecb1 0x7462 +0xecb2 0x746b +0xecb3 0x746d +0xecb4 0x7486 +0xecb5 0x7487 +0xecb6 0x7489 +0xecb7 0x7498 +0xecb8 0x749c +0xecb9 0x749f +0xecba 0x74a3 +0xecbb 0x7490 +0xecbc 0x74a6 +0xecbd 0x74a8 +0xecbe 0x74a9 +0xecbf 0x74b5 +0xecc0 0x74bf +0xecc1 0x74c8 +0xecc2 0x74c9 +0xecc3 0x74da +0xecc4 0x74ff +0xecc5 0x7501 +0xecc6 0x7517 +0xecc7 0x752f +0xecc8 0x756f +0xecc9 0x7579 +0xecca 0x7592 +0xeccb 0x3f72 +0xeccc 0x75ce +0xeccd 0x75e4 +0xecce 0x7600 +0xeccf 0x7602 +0xecd0 0x7608 +0xecd1 0x7615 +0xecd2 0x7616 +0xecd3 0x7619 +0xecd4 0x761e +0xecd5 0x762d +0xecd6 0x7635 +0xecd7 0x7643 +0xecd8 0x764b +0xecd9 0x7664 +0xecda 0x7665 +0xecdb 0x766d +0xecdc 0x766f +0xecdd 0x7671 +0xecde 0x7681 +0xecdf 0x769b +0xece0 0x769d +0xece1 0x769e +0xece2 0x76a6 +0xece3 0x76aa +0xece4 0x76b6 +0xece5 0x76c5 +0xece6 0x76cc +0xece7 0x76ce +0xece8 0x76d4 +0xece9 0x76e6 +0xecea 0x76f1 +0xeceb 0x76fc +0xecec 0x770a +0xeced 0x7719 +0xecee 0x7734 +0xecef 0x7736 +0xecf0 0x7746 +0xecf1 0x774d +0xecf2 0x774e +0xecf3 0x775c +0xecf4 0x775f +0xecf5 0x7762 +0xecf6 0x777a +0xecf7 0x7780 +0xecf8 0x7794 +0xecf9 0x77aa +0xecfa 0x77e0 +0xecfb 0x782d +0xecfc 0x2548e +0xed40 0x7843 +0xed41 0x784e +0xed42 0x784f +0xed43 0x7851 +0xed44 0x7868 +0xed45 0x786e +0xed46 0xfa4b +0xed47 0x78b0 +0xed48 0x2550e +0xed49 0x78ad +0xed4a 0x78e4 +0xed4b 0x78f2 +0xed4c 0x7900 +0xed4d 0x78f7 +0xed4e 0x791c +0xed4f 0x792e +0xed50 0x7931 +0xed51 0x7934 +0xed52 0xfa4c +0xed53 0xfa4d +0xed54 0x7945 +0xed55 0x7946 +0xed56 0xfa4e +0xed57 0xfa4f +0xed58 0xfa50 +0xed59 0x795c +0xed5a 0xfa51 +0xed5b 0xfa19 +0xed5c 0xfa1a +0xed5d 0x7979 +0xed5e 0xfa52 +0xed5f 0xfa53 +0xed60 0xfa1b +0xed61 0x7998 +0xed62 0x79b1 +0xed63 0x79b8 +0xed64 0x79c8 +0xed65 0x79ca +0xed66 0x25771 +0xed67 0x79d4 +0xed68 0x79de +0xed69 0x79eb +0xed6a 0x79ed +0xed6b 0x7a03 +0xed6c 0xfa54 +0xed6d 0x7a39 +0xed6e 0x7a5d +0xed6f 0x7a6d +0xed70 0xfa55 +0xed71 0x7a85 +0xed72 0x7aa0 +0xed73 0x259c4 +0xed74 0x7ab3 +0xed75 0x7abb +0xed76 0x7ace +0xed77 0x7aeb +0xed78 0x7afd +0xed79 0x7b12 +0xed7a 0x7b2d +0xed7b 0x7b3b +0xed7c 0x7b47 +0xed7d 0x7b4e +0xed7e 0x7b60 +0xed80 0x7b6d +0xed81 0x7b6f +0xed82 0x7b72 +0xed83 0x7b9e +0xed84 0xfa56 +0xed85 0x7bd7 +0xed86 0x7bd9 +0xed87 0x7c01 +0xed88 0x7c31 +0xed89 0x7c1e +0xed8a 0x7c20 +0xed8b 0x7c33 +0xed8c 0x7c36 +0xed8d 0x4264 +0xed8e 0x25da1 +0xed8f 0x7c59 +0xed90 0x7c6d +0xed91 0x7c79 +0xed92 0x7c8f +0xed93 0x7c94 +0xed94 0x7ca0 +0xed95 0x7cbc +0xed96 0x7cd5 +0xed97 0x7cd9 +0xed98 0x7cdd +0xed99 0x7d07 +0xed9a 0x7d08 +0xed9b 0x7d13 +0xed9c 0x7d1d +0xed9d 0x7d23 +0xed9e 0x7d31 +0xed9f 0x7d41 +0xeda0 0x7d48 +0xeda1 0x7d53 +0xeda2 0x7d5c +0xeda3 0x7d7a +0xeda4 0x7d83 +0xeda5 0x7d8b +0xeda6 0x7da0 +0xeda7 0x7da6 +0xeda8 0x7dc2 +0xeda9 0x7dcc +0xedaa 0x7dd6 +0xedab 0x7de3 +0xedac 0xfa57 +0xedad 0x7e28 +0xedae 0x7e08 +0xedaf 0x7e11 +0xedb0 0x7e15 +0xedb1 0xfa59 +0xedb2 0x7e47 +0xedb3 0x7e52 +0xedb4 0x7e61 +0xedb5 0x7e8a +0xedb6 0x7e8d +0xedb7 0x7f47 +0xedb8 0xfa5a +0xedb9 0x7f91 +0xedba 0x7f97 +0xedbb 0x7fbf +0xedbc 0x7fce +0xedbd 0x7fdb +0xedbe 0x7fdf +0xedbf 0x7fec +0xedc0 0x7fee +0xedc1 0x7ffa +0xedc2 0xfa5b +0xedc3 0x8014 +0xedc4 0x8026 +0xedc5 0x8035 +0xedc6 0x8037 +0xedc7 0x803c +0xedc8 0x80ca +0xedc9 0x80d7 +0xedca 0x80e0 +0xedcb 0x80f3 +0xedcc 0x8118 +0xedcd 0x814a +0xedce 0x8160 +0xedcf 0x8167 +0xedd0 0x8168 +0xedd1 0x816d +0xedd2 0x81bb +0xedd3 0x81ca +0xedd4 0x81cf +0xedd5 0x81d7 +0xedd6 0xfa5c +0xedd7 0x4453 +0xedd8 0x445b +0xedd9 0x8260 +0xedda 0x8274 +0xeddb 0x26aff +0xeddc 0x828e +0xeddd 0x82a1 +0xedde 0x82a3 +0xeddf 0x82a4 +0xede0 0x82a9 +0xede1 0x82ae +0xede2 0x82b7 +0xede3 0x82be +0xede4 0x82bf +0xede5 0x82c6 +0xede6 0x82d5 +0xede7 0x82fd +0xede8 0x82fe +0xede9 0x8300 +0xedea 0x8301 +0xedeb 0x8362 +0xedec 0x8322 +0xeded 0x832d +0xedee 0x833a +0xedef 0x8343 +0xedf0 0x8347 +0xedf1 0x8351 +0xedf2 0x8355 +0xedf3 0x837d +0xedf4 0x8386 +0xedf5 0x8392 +0xedf6 0x8398 +0xedf7 0x83a7 +0xedf8 0x83a9 +0xedf9 0x83bf +0xedfa 0x83c0 +0xedfb 0x83c7 +0xedfc 0x83cf +0xee40 0x83d1 +0xee41 0x83e1 +0xee42 0x83ea +0xee43 0x8401 +0xee44 0x8406 +0xee45 0x840a +0xee46 0xfa5f +0xee47 0x8448 +0xee48 0x845f +0xee49 0x8470 +0xee4a 0x8473 +0xee4b 0x8485 +0xee4c 0x849e +0xee4d 0x84af +0xee4e 0x84b4 +0xee4f 0x84ba +0xee50 0x84c0 +0xee51 0x84c2 +0xee52 0x26e40 +0xee53 0x8532 +0xee54 0x851e +0xee55 0x8523 +0xee56 0x852f +0xee57 0x8559 +0xee58 0x8564 +0xee59 0xfa1f +0xee5a 0x85ad +0xee5b 0x857a +0xee5c 0x858c +0xee5d 0x858f +0xee5e 0x85a2 +0xee5f 0x85b0 +0xee60 0x85cb +0xee61 0x85ce +0xee62 0x85ed +0xee63 0x8612 +0xee64 0x85ff +0xee65 0x8604 +0xee66 0x8605 +0xee67 0x8610 +0xee68 0x270f4 +0xee69 0x8618 +0xee6a 0x8629 +0xee6b 0x8638 +0xee6c 0x8657 +0xee6d 0x865b +0xee6e 0xf936 +0xee6f 0x8662 +0xee70 0x459d +0xee71 0x866c +0xee72 0x8675 +0xee73 0x8698 +0xee74 0x86b8 +0xee75 0x86fa +0xee76 0x86fc +0xee77 0x86fd +0xee78 0x870b +0xee79 0x8771 +0xee7a 0x8787 +0xee7b 0x8788 +0xee7c 0x87ac +0xee7d 0x87ad +0xee7e 0x87b5 +0xee80 0x45ea +0xee81 0x87d6 +0xee82 0x87ec +0xee83 0x8806 +0xee84 0x880a +0xee85 0x8810 +0xee86 0x8814 +0xee87 0x881f +0xee88 0x8898 +0xee89 0x88aa +0xee8a 0x88ca +0xee8b 0x88ce +0xee8c 0x27684 +0xee8d 0x88f5 +0xee8e 0x891c +0xee8f 0xfa60 +0xee90 0x8918 +0xee91 0x8919 +0xee92 0x891a +0xee93 0x8927 +0xee94 0x8930 +0xee95 0x8932 +0xee96 0x8939 +0xee97 0x8940 +0xee98 0x8994 +0xee99 0xfa61 +0xee9a 0x89d4 +0xee9b 0x89e5 +0xee9c 0x89f6 +0xee9d 0x8a12 +0xee9e 0x8a15 +0xee9f 0x8a22 +0xeea0 0x8a37 +0xeea1 0x8a47 +0xeea2 0x8a4e +0xeea3 0x8a5d +0xeea4 0x8a61 +0xeea5 0x8a75 +0xeea6 0x8a79 +0xeea7 0x8aa7 +0xeea8 0x8ad0 +0xeea9 0x8adf +0xeeaa 0x8af4 +0xeeab 0x8af6 +0xeeac 0xfa22 +0xeead 0xfa62 +0xeeae 0xfa63 +0xeeaf 0x8b46 +0xeeb0 0x8b54 +0xeeb1 0x8b59 +0xeeb2 0x8b69 +0xeeb3 0x8b9d +0xeeb4 0x8c49 +0xeeb5 0x8c68 +0xeeb6 0xfa64 +0xeeb7 0x8ce1 +0xeeb8 0x8cf4 +0xeeb9 0x8cf8 +0xeeba 0x8cfe +0xeebb 0xfa65 +0xeebc 0x8d12 +0xeebd 0x8d1b +0xeebe 0x8daf +0xeebf 0x8dce +0xeec0 0x8dd1 +0xeec1 0x8dd7 +0xeec2 0x8e20 +0xeec3 0x8e23 +0xeec4 0x8e3d +0xeec5 0x8e70 +0xeec6 0x8e7b +0xeec7 0x28277 +0xeec8 0x8ec0 +0xeec9 0x4844 +0xeeca 0x8efa +0xeecb 0x8f1e +0xeecc 0x8f2d +0xeecd 0x8f36 +0xeece 0x8f54 +0xeecf 0x283cd +0xeed0 0x8fa6 +0xeed1 0x8fb5 +0xeed2 0x8fe4 +0xeed3 0x8fe8 +0xeed4 0x8fee +0xeed5 0x9008 +0xeed6 0x902d +0xeed7 0xfa67 +0xeed8 0x9088 +0xeed9 0x9095 +0xeeda 0x9097 +0xeedb 0x9099 +0xeedc 0x909b +0xeedd 0x90a2 +0xeede 0x90b3 +0xeedf 0x90be +0xeee0 0x90c4 +0xeee1 0x90c5 +0xeee2 0x90c7 +0xeee3 0x90d7 +0xeee4 0x90dd +0xeee5 0x90de +0xeee6 0x90ef +0xeee7 0x90f4 +0xeee8 0xfa26 +0xeee9 0x9114 +0xeeea 0x9115 +0xeeeb 0x9116 +0xeeec 0x9122 +0xeeed 0x9123 +0xeeee 0x9127 +0xeeef 0x912f +0xeef0 0x9131 +0xeef1 0x9134 +0xeef2 0x913d +0xeef3 0x9148 +0xeef4 0x915b +0xeef5 0x9183 +0xeef6 0x919e +0xeef7 0x91ac +0xeef8 0x91b1 +0xeef9 0x91bc +0xeefa 0x91d7 +0xeefb 0x91fb +0xeefc 0x91e4 +0xef40 0x91e5 +0xef41 0x91ed +0xef42 0x91f1 +0xef43 0x9207 +0xef44 0x9210 +0xef45 0x9238 +0xef46 0x9239 +0xef47 0x923a +0xef48 0x923c +0xef49 0x9240 +0xef4a 0x9243 +0xef4b 0x924f +0xef4c 0x9278 +0xef4d 0x9288 +0xef4e 0x92c2 +0xef4f 0x92cb +0xef50 0x92cc +0xef51 0x92d3 +0xef52 0x92e0 +0xef53 0x92ff +0xef54 0x9304 +0xef55 0x931f +0xef56 0x9321 +0xef57 0x9325 +0xef58 0x9348 +0xef59 0x9349 +0xef5a 0x934a +0xef5b 0x9364 +0xef5c 0x9365 +0xef5d 0x936a +0xef5e 0x9370 +0xef5f 0x939b +0xef60 0x93a3 +0xef61 0x93ba +0xef62 0x93c6 +0xef63 0x93de +0xef64 0x93df +0xef65 0x9404 +0xef66 0x93fd +0xef67 0x9433 +0xef68 0x944a +0xef69 0x9463 +0xef6a 0x946b +0xef6b 0x9471 +0xef6c 0x9472 +0xef6d 0x958e +0xef6e 0x959f +0xef6f 0x95a6 +0xef70 0x95a9 +0xef71 0x95ac +0xef72 0x95b6 +0xef73 0x95bd +0xef74 0x95cb +0xef75 0x95d0 +0xef76 0x95d3 +0xef77 0x49b0 +0xef78 0x95da +0xef79 0x95de +0xef7a 0x9658 +0xef7b 0x9684 +0xef7c 0xf9dc +0xef7d 0x969d +0xef7e 0x96a4 +0xef80 0x96a5 +0xef81 0x96d2 +0xef82 0x96de +0xef83 0xfa68 +0xef84 0x96e9 +0xef85 0x96ef +0xef86 0x9733 +0xef87 0x973b +0xef88 0x974d +0xef89 0x974e +0xef8a 0x974f +0xef8b 0x975a +0xef8c 0x976e +0xef8d 0x9773 +0xef8e 0x9795 +0xef8f 0x97ae +0xef90 0x97ba +0xef91 0x97c1 +0xef92 0x97c9 +0xef93 0x97de +0xef94 0x97db +0xef95 0x97f4 +0xef96 0xfa69 +0xef97 0x980a +0xef98 0x981e +0xef99 0x982b +0xef9a 0x9830 +0xef9b 0xfa6a +0xef9c 0x9852 +0xef9d 0x9853 +0xef9e 0x9856 +0xef9f 0x9857 +0xefa0 0x9859 +0xefa1 0x985a +0xefa2 0xf9d0 +0xefa3 0x9865 +0xefa4 0x986c +0xefa5 0x98ba +0xefa6 0x98c8 +0xefa7 0x98e7 +0xefa8 0x9958 +0xefa9 0x999e +0xefaa 0x9a02 +0xefab 0x9a03 +0xefac 0x9a24 +0xefad 0x9a2d +0xefae 0x9a2e +0xefaf 0x9a38 +0xefb0 0x9a4a +0xefb1 0x9a4e +0xefb2 0x9a52 +0xefb3 0x9ab6 +0xefb4 0x9ac1 +0xefb5 0x9ac3 +0xefb6 0x9ace +0xefb7 0x9ad6 +0xefb8 0x9af9 +0xefb9 0x9b02 +0xefba 0x9b08 +0xefbb 0x9b20 +0xefbc 0x4c17 +0xefbd 0x9b2d +0xefbe 0x9b5e +0xefbf 0x9b79 +0xefc0 0x9b66 +0xefc1 0x9b72 +0xefc2 0x9b75 +0xefc3 0x9b84 +0xefc4 0x9b8a +0xefc5 0x9b8f +0xefc6 0x9b9e +0xefc7 0x9ba7 +0xefc8 0x9bc1 +0xefc9 0x9bce +0xefca 0x9be5 +0xefcb 0x9bf8 +0xefcc 0x9bfd +0xefcd 0x9c00 +0xefce 0x9c23 +0xefcf 0x9c41 +0xefd0 0x9c4f +0xefd1 0x9c50 +0xefd2 0x9c53 +0xefd3 0x9c63 +0xefd4 0x9c65 +0xefd5 0x9c77 +0xefd6 0x9d1d +0xefd7 0x9d1e +0xefd8 0x9d43 +0xefd9 0x9d47 +0xefda 0x9d52 +0xefdb 0x9d63 +0xefdc 0x9d70 +0xefdd 0x9d7c +0xefde 0x9d8a +0xefdf 0x9d96 +0xefe0 0x9dc0 +0xefe1 0x9dac +0xefe2 0x9dbc +0xefe3 0x9dd7 +0xefe4 0x2a190 +0xefe5 0x9de7 +0xefe6 0x9e07 +0xefe7 0x9e15 +0xefe8 0x9e7c +0xefe9 0x9e9e +0xefea 0x9ea4 +0xefeb 0x9eac +0xefec 0x9eaf +0xefed 0x9eb4 +0xefee 0x9eb5 +0xefef 0x9ec3 +0xeff0 0x9ed1 +0xeff1 0x9f10 +0xeff2 0x9f39 +0xeff3 0x9f57 +0xeff4 0x9f90 +0xeff5 0x9f94 +0xeff6 0x9f97 +0xeff7 0x9fa2 +0xeff8 0x59f8 +0xeff9 0x5c5b +0xeffa 0x5e77 +0xeffb 0x7626 +0xeffc 0x7e6b +0xf040 0x20089 +0xf041 0x4e02 +0xf042 0x4e0f +0xf043 0x4e12 +0xf044 0x4e29 +0xf045 0x4e2b +0xf046 0x4e2e +0xf047 0x4e40 +0xf048 0x4e47 +0xf049 0x4e48 +0xf04a 0x200a2 +0xf04b 0x4e51 +0xf04c 0x3406 +0xf04d 0x200a4 +0xf04e 0x4e5a +0xf04f 0x4e69 +0xf050 0x4e9d +0xf051 0x342c +0xf052 0x342e +0xf053 0x4eb9 +0xf054 0x4ebb +0xf055 0x201a2 +0xf056 0x4ebc +0xf057 0x4ec3 +0xf058 0x4ec8 +0xf059 0x4ed0 +0xf05a 0x4eeb +0xf05b 0x4eda +0xf05c 0x4ef1 +0xf05d 0x4ef5 +0xf05e 0x4f00 +0xf05f 0x4f16 +0xf060 0x4f64 +0xf061 0x4f37 +0xf062 0x4f3e +0xf063 0x4f54 +0xf064 0x4f58 +0xf065 0x20213 +0xf066 0x4f77 +0xf067 0x4f78 +0xf068 0x4f7a +0xf069 0x4f7d +0xf06a 0x4f82 +0xf06b 0x4f85 +0xf06c 0x4f92 +0xf06d 0x4f9a +0xf06e 0x4fe6 +0xf06f 0x4fb2 +0xf070 0x4fbe +0xf071 0x4fc5 +0xf072 0x4fcb +0xf073 0x4fcf +0xf074 0x4fd2 +0xf075 0x346a +0xf076 0x4ff2 +0xf077 0x5000 +0xf078 0x5010 +0xf079 0x5013 +0xf07a 0x501c +0xf07b 0x501e +0xf07c 0x5022 +0xf07d 0x3468 +0xf07e 0x5042 +0xf080 0x5046 +0xf081 0x504e +0xf082 0x5053 +0xf083 0x5057 +0xf084 0x5063 +0xf085 0x5066 +0xf086 0x506a +0xf087 0x5070 +0xf088 0x50a3 +0xf089 0x5088 +0xf08a 0x5092 +0xf08b 0x5093 +0xf08c 0x5095 +0xf08d 0x5096 +0xf08e 0x509c +0xf08f 0x50aa +0xf090 0x2032b +0xf091 0x50b1 +0xf092 0x50ba +0xf093 0x50bb +0xf094 0x50c4 +0xf095 0x50c7 +0xf096 0x50f3 +0xf097 0x20381 +0xf098 0x50ce +0xf099 0x20371 +0xf09a 0x50d4 +0xf09b 0x50d9 +0xf09c 0x50e1 +0xf09d 0x50e9 +0xf09e 0x3492 +0xf140 0x5108 +0xf141 0x203f9 +0xf142 0x5117 +0xf143 0x511b +0xf144 0x2044a +0xf145 0x5160 +0xf146 0x20509 +0xf147 0x5173 +0xf148 0x5183 +0xf149 0x518b +0xf14a 0x34bc +0xf14b 0x5198 +0xf14c 0x51a3 +0xf14d 0x51ad +0xf14e 0x34c7 +0xf14f 0x51bc +0xf150 0x205d6 +0xf151 0x20628 +0xf152 0x51f3 +0xf153 0x51f4 +0xf154 0x5202 +0xf155 0x5212 +0xf156 0x5216 +0xf157 0x2074f +0xf158 0x5255 +0xf159 0x525c +0xf15a 0x526c +0xf15b 0x5277 +0xf15c 0x5284 +0xf15d 0x5282 +0xf15e 0x20807 +0xf15f 0x5298 +0xf160 0x2083a +0xf161 0x52a4 +0xf162 0x52a6 +0xf163 0x52af +0xf164 0x52ba +0xf165 0x52bb +0xf166 0x52ca +0xf167 0x351f +0xf168 0x52d1 +0xf169 0x208b9 +0xf16a 0x52f7 +0xf16b 0x530a +0xf16c 0x530b +0xf16d 0x5324 +0xf16e 0x5335 +0xf16f 0x533e +0xf170 0x5342 +0xf171 0x2097c +0xf172 0x2099d +0xf173 0x5367 +0xf174 0x536c +0xf175 0x537a +0xf176 0x53a4 +0xf177 0x53b4 +0xf178 0x20ad3 +0xf179 0x53b7 +0xf17a 0x53c0 +0xf17b 0x20b1d +0xf17c 0x355d +0xf17d 0x355e +0xf17e 0x53d5 +0xf180 0x53da +0xf181 0x3563 +0xf182 0x53f4 +0xf183 0x53f5 +0xf184 0x5455 +0xf185 0x5424 +0xf186 0x5428 +0xf187 0x356e +0xf188 0x5443 +0xf189 0x5462 +0xf18a 0x5466 +0xf18b 0x546c +0xf18c 0x548a +0xf18d 0x548d +0xf18e 0x5495 +0xf18f 0x54a0 +0xf190 0x54a6 +0xf191 0x54ad +0xf192 0x54ae +0xf193 0x54b7 +0xf194 0x54ba +0xf195 0x54bf +0xf196 0x54c3 +0xf197 0x20d45 +0xf198 0x54ec +0xf199 0x54ef +0xf19a 0x54f1 +0xf19b 0x54f3 +0xf19c 0x5500 +0xf19d 0x5501 +0xf19e 0x5509 +0xf19f 0x553c +0xf1a0 0x5541 +0xf1a1 0x35a6 +0xf1a2 0x5547 +0xf1a3 0x554a +0xf1a4 0x35a8 +0xf1a5 0x5560 +0xf1a6 0x5561 +0xf1a7 0x5564 +0xf1a8 0x20de1 +0xf1a9 0x557d +0xf1aa 0x5582 +0xf1ab 0x5588 +0xf1ac 0x5591 +0xf1ad 0x35c5 +0xf1ae 0x55d2 +0xf1af 0x20e95 +0xf1b0 0x20e6d +0xf1b1 0x55bf +0xf1b2 0x55c9 +0xf1b3 0x55cc +0xf1b4 0x55d1 +0xf1b5 0x55dd +0xf1b6 0x35da +0xf1b7 0x55e2 +0xf1b8 0x20e64 +0xf1b9 0x55e9 +0xf1ba 0x5628 +0xf1bb 0x20f5f +0xf1bc 0x5607 +0xf1bd 0x5610 +0xf1be 0x5630 +0xf1bf 0x5637 +0xf1c0 0x35f4 +0xf1c1 0x563d +0xf1c2 0x563f +0xf1c3 0x5640 +0xf1c4 0x5647 +0xf1c5 0x565e +0xf1c6 0x5660 +0xf1c7 0x566d +0xf1c8 0x3605 +0xf1c9 0x5688 +0xf1ca 0x568c +0xf1cb 0x5695 +0xf1cc 0x569a +0xf1cd 0x569d +0xf1ce 0x56a8 +0xf1cf 0x56ad +0xf1d0 0x56b2 +0xf1d1 0x56c5 +0xf1d2 0x56cd +0xf1d3 0x56df +0xf1d4 0x56e8 +0xf1d5 0x56f6 +0xf1d6 0x56f7 +0xf1d7 0x21201 +0xf1d8 0x5715 +0xf1d9 0x5723 +0xf1da 0x21255 +0xf1db 0x5729 +0xf1dc 0x2127b +0xf1dd 0x5745 +0xf1de 0x5746 +0xf1df 0x574c +0xf1e0 0x574d +0xf1e1 0x21274 +0xf1e2 0x5768 +0xf1e3 0x576f +0xf1e4 0x5773 +0xf1e5 0x5774 +0xf1e6 0x5775 +0xf1e7 0x577b +0xf1e8 0x212e4 +0xf1e9 0x212d7 +0xf1ea 0x57ac +0xf1eb 0x579a +0xf1ec 0x579d +0xf1ed 0x579e +0xf1ee 0x57a8 +0xf1ef 0x57d7 +0xf1f0 0x212fd +0xf1f1 0x57cc +0xf1f2 0x21336 +0xf1f3 0x21344 +0xf1f4 0x57de +0xf1f5 0x57e6 +0xf1f6 0x57f0 +0xf1f7 0x364a +0xf1f8 0x57f8 +0xf1f9 0x57fb +0xf1fa 0x57fd +0xf1fb 0x5804 +0xf1fc 0x581e +0xf240 0x5820 +0xf241 0x5827 +0xf242 0x5832 +0xf243 0x5839 +0xf244 0x213c4 +0xf245 0x5849 +0xf246 0x584c +0xf247 0x5867 +0xf248 0x588a +0xf249 0x588b +0xf24a 0x588d +0xf24b 0x588f +0xf24c 0x5890 +0xf24d 0x5894 +0xf24e 0x589d +0xf24f 0x58aa +0xf250 0x58b1 +0xf251 0x2146d +0xf252 0x58c3 +0xf253 0x58cd +0xf254 0x58e2 +0xf255 0x58f3 +0xf256 0x58f4 +0xf257 0x5905 +0xf258 0x5906 +0xf259 0x590b +0xf25a 0x590d +0xf25b 0x5914 +0xf25c 0x5924 +0xf25d 0x215d7 +0xf25e 0x3691 +0xf25f 0x593d +0xf260 0x3699 +0xf261 0x5946 +0xf262 0x3696 +0xf263 0x26c29 +0xf264 0x595b +0xf265 0x595f +0xf266 0x21647 +0xf267 0x5975 +0xf268 0x5976 +0xf269 0x597c +0xf26a 0x599f +0xf26b 0x59ae +0xf26c 0x59bc +0xf26d 0x59c8 +0xf26e 0x59cd +0xf26f 0x59de +0xf270 0x59e3 +0xf271 0x59e4 +0xf272 0x59e7 +0xf273 0x59ee +0xf274 0x21706 +0xf275 0x21742 +0xf276 0x36cf +0xf277 0x5a0c +0xf278 0x5a0d +0xf279 0x5a17 +0xf27a 0x5a27 +0xf27b 0x5a2d +0xf27c 0x5a55 +0xf27d 0x5a65 +0xf27e 0x5a7a +0xf280 0x5a8b +0xf281 0x5a9c +0xf282 0x5a9f +0xf283 0x5aa0 +0xf284 0x5aa2 +0xf285 0x5ab1 +0xf286 0x5ab3 +0xf287 0x5ab5 +0xf288 0x5aba +0xf289 0x5abf +0xf28a 0x5ada +0xf28b 0x5adc +0xf28c 0x5ae0 +0xf28d 0x5ae5 +0xf28e 0x5af0 +0xf28f 0x5aee +0xf290 0x5af5 +0xf291 0x5b00 +0xf292 0x5b08 +0xf293 0x5b17 +0xf294 0x5b34 +0xf295 0x5b2d +0xf296 0x5b4c +0xf297 0x5b52 +0xf298 0x5b68 +0xf299 0x5b6f +0xf29a 0x5b7c +0xf29b 0x5b7f +0xf29c 0x5b81 +0xf29d 0x5b84 +0xf29e 0x219c3 +0xf09f 0x5b96 +0xf0a0 0x5bac +0xf0a1 0x3761 +0xf0a2 0x5bc0 +0xf0a3 0x3762 +0xf0a4 0x5bce +0xf0a5 0x5bd6 +0xf0a6 0x376c +0xf0a7 0x376b +0xf0a8 0x5bf1 +0xf0a9 0x5bfd +0xf0aa 0x3775 +0xf0ab 0x5c03 +0xf0ac 0x5c29 +0xf0ad 0x5c30 +0xf0ae 0x21c56 +0xf0af 0x5c5f +0xf0b0 0x5c63 +0xf0b1 0x5c67 +0xf0b2 0x5c68 +0xf0b3 0x5c69 +0xf0b4 0x5c70 +0xf0b5 0x21d2d +0xf0b6 0x21d45 +0xf0b7 0x5c7c +0xf0b8 0x21d78 +0xf0b9 0x21d62 +0xf0ba 0x5c88 +0xf0bb 0x5c8a +0xf0bc 0x37c1 +0xf0bd 0x21da1 +0xf0be 0x21d9c +0xf0bf 0x5ca0 +0xf0c0 0x5ca2 +0xf0c1 0x5ca6 +0xf0c2 0x5ca7 +0xf0c3 0x21d92 +0xf0c4 0x5cad +0xf0c5 0x5cb5 +0xf0c6 0x21db7 +0xf0c7 0x5cc9 +0xf0c8 0x21de0 +0xf0c9 0x21e33 +0xf0ca 0x5d06 +0xf0cb 0x5d10 +0xf0cc 0x5d2b +0xf0cd 0x5d1d +0xf0ce 0x5d20 +0xf0cf 0x5d24 +0xf0d0 0x5d26 +0xf0d1 0x5d31 +0xf0d2 0x5d39 +0xf0d3 0x5d42 +0xf0d4 0x37e8 +0xf0d5 0x5d61 +0xf0d6 0x5d6a +0xf0d7 0x37f4 +0xf0d8 0x5d70 +0xf0d9 0x21f1e +0xf0da 0x37fd +0xf0db 0x5d88 +0xf0dc 0x3800 +0xf0dd 0x5d92 +0xf0de 0x5d94 +0xf0df 0x5d97 +0xf0e0 0x5d99 +0xf0e1 0x5db0 +0xf0e2 0x5db2 +0xf0e3 0x5db4 +0xf0e4 0x21f76 +0xf0e5 0x5db9 +0xf0e6 0x5dd1 +0xf0e7 0x5dd7 +0xf0e8 0x5dd8 +0xf0e9 0x5de0 +0xf0ea 0x21ffa +0xf0eb 0x5de4 +0xf0ec 0x5de9 +0xf0ed 0x382f +0xf0ee 0x5e00 +0xf0ef 0x3836 +0xf0f0 0x5e12 +0xf0f1 0x5e15 +0xf0f2 0x3840 +0xf0f3 0x5e1f +0xf0f4 0x5e2e +0xf0f5 0x5e3e +0xf0f6 0x5e49 +0xf0f7 0x385c +0xf0f8 0x5e56 +0xf0f9 0x3861 +0xf0fa 0x5e6b +0xf0fb 0x5e6c +0xf0fc 0x5e6d +0xf29f 0x5e6e +0xf2a0 0x2217b +0xf2a1 0x5ea5 +0xf2a2 0x5eaa +0xf2a3 0x5eac +0xf2a4 0x5eb9 +0xf2a5 0x5ebf +0xf2a6 0x5ec6 +0xf2a7 0x5ed2 +0xf2a8 0x5ed9 +0xf2a9 0x2231e +0xf2aa 0x5efd +0xf2ab 0x5f08 +0xf2ac 0x5f0e +0xf2ad 0x5f1c +0xf2ae 0x223ad +0xf2af 0x5f1e +0xf2b0 0x5f47 +0xf2b1 0x5f63 +0xf2b2 0x5f72 +0xf2b3 0x5f7e +0xf2b4 0x5f8f +0xf2b5 0x5fa2 +0xf2b6 0x5fa4 +0xf2b7 0x5fb8 +0xf2b8 0x5fc4 +0xf2b9 0x38fa +0xf2ba 0x5fc7 +0xf2bb 0x5fcb +0xf2bc 0x5fd2 +0xf2bd 0x5fd3 +0xf2be 0x5fd4 +0xf2bf 0x5fe2 +0xf2c0 0x5fee +0xf2c1 0x5fef +0xf2c2 0x5ff3 +0xf2c3 0x5ffc +0xf2c4 0x3917 +0xf2c5 0x6017 +0xf2c6 0x6022 +0xf2c7 0x6024 +0xf2c8 0x391a +0xf2c9 0x604c +0xf2ca 0x607f +0xf2cb 0x608a +0xf2cc 0x6095 +0xf2cd 0x60a8 +0xf2ce 0x226f3 +0xf2cf 0x60b0 +0xf2d0 0x60b1 +0xf2d1 0x60be +0xf2d2 0x60c8 +0xf2d3 0x60d9 +0xf2d4 0x60db +0xf2d5 0x60ee +0xf2d6 0x60f2 +0xf2d7 0x60f5 +0xf2d8 0x6110 +0xf2d9 0x6112 +0xf2da 0x6113 +0xf2db 0x6119 +0xf2dc 0x611e +0xf2dd 0x613a +0xf2de 0x396f +0xf2df 0x6141 +0xf2e0 0x6146 +0xf2e1 0x6160 +0xf2e2 0x617c +0xf2e3 0x2285b +0xf2e4 0x6192 +0xf2e5 0x6193 +0xf2e6 0x6197 +0xf2e7 0x6198 +0xf2e8 0x61a5 +0xf2e9 0x61a8 +0xf2ea 0x61ad +0xf2eb 0x228ab +0xf2ec 0x61d5 +0xf2ed 0x61dd +0xf2ee 0x61df +0xf2ef 0x61f5 +0xf2f0 0x2298f +0xf2f1 0x6215 +0xf2f2 0x6223 +0xf2f3 0x6229 +0xf2f4 0x6246 +0xf2f5 0x624c +0xf2f6 0x6251 +0xf2f7 0x6252 +0xf2f8 0x6261 +0xf2f9 0x6264 +0xf2fa 0x627b +0xf2fb 0x626d +0xf2fc 0x6273 +0xf340 0x6299 +0xf341 0x62a6 +0xf342 0x62d5 +0xf343 0x22ab8 +0xf344 0x62fd +0xf345 0x6303 +0xf346 0x630d +0xf347 0x6310 +0xf348 0x22b4f +0xf349 0x22b50 +0xf34a 0x6332 +0xf34b 0x6335 +0xf34c 0x633b +0xf34d 0x633c +0xf34e 0x6341 +0xf34f 0x6344 +0xf350 0x634e +0xf351 0x22b46 +0xf352 0x6359 +0xf353 0x22c1d +0xf354 0x22ba6 +0xf355 0x636c +0xf356 0x6384 +0xf357 0x6399 +0xf358 0x22c24 +0xf359 0x6394 +0xf35a 0x63bd +0xf35b 0x63f7 +0xf35c 0x63d4 +0xf35d 0x63d5 +0xf35e 0x63dc +0xf35f 0x63e0 +0xf360 0x63eb +0xf361 0x63ec +0xf362 0x63f2 +0xf363 0x6409 +0xf364 0x641e +0xf365 0x6425 +0xf366 0x6429 +0xf367 0x642f +0xf368 0x645a +0xf369 0x645b +0xf36a 0x645d +0xf36b 0x6473 +0xf36c 0x647d +0xf36d 0x6487 +0xf36e 0x6491 +0xf36f 0x649d +0xf370 0x649f +0xf371 0x64cb +0xf372 0x64cc +0xf373 0x64d5 +0xf374 0x64d7 +0xf375 0x22de1 +0xf376 0x64e4 +0xf377 0x64e5 +0xf378 0x64ff +0xf379 0x6504 +0xf37a 0x3a6e +0xf37b 0x650f +0xf37c 0x6514 +0xf37d 0x6516 +0xf37e 0x3a73 +0xf380 0x651e +0xf381 0x6532 +0xf382 0x6544 +0xf383 0x6554 +0xf384 0x656b +0xf385 0x657a +0xf386 0x6581 +0xf387 0x6584 +0xf388 0x6585 +0xf389 0x658a +0xf38a 0x65b2 +0xf38b 0x65b5 +0xf38c 0x65b8 +0xf38d 0x65bf +0xf38e 0x65c2 +0xf38f 0x65c9 +0xf390 0x65d4 +0xf391 0x3ad6 +0xf392 0x65f2 +0xf393 0x65f9 +0xf394 0x65fc +0xf395 0x6604 +0xf396 0x6608 +0xf397 0x6621 +0xf398 0x662a +0xf399 0x6645 +0xf39a 0x6651 +0xf39b 0x664e +0xf39c 0x3aea +0xf39d 0x231c3 +0xf39e 0x6657 +0xf39f 0x665b +0xf3a0 0x6663 +0xf3a1 0x231f5 +0xf3a2 0x231b6 +0xf3a3 0x666a +0xf3a4 0x666b +0xf3a5 0x666c +0xf3a6 0x666d +0xf3a7 0x667b +0xf3a8 0x6680 +0xf3a9 0x6690 +0xf3aa 0x6692 +0xf3ab 0x6699 +0xf3ac 0x3b0e +0xf3ad 0x66ad +0xf3ae 0x66b1 +0xf3af 0x66b5 +0xf3b0 0x3b1a +0xf3b1 0x66bf +0xf3b2 0x3b1c +0xf3b3 0x66ec +0xf3b4 0x3ad7 +0xf3b5 0x6701 +0xf3b6 0x6705 +0xf3b7 0x6712 +0xf3b8 0x23372 +0xf3b9 0x6719 +0xf3ba 0x233d3 +0xf3bb 0x233d2 +0xf3bc 0x674c +0xf3bd 0x674d +0xf3be 0x6754 +0xf3bf 0x675d +0xf3c0 0x233d0 +0xf3c1 0x233e4 +0xf3c2 0x233d5 +0xf3c3 0x6774 +0xf3c4 0x6776 +0xf3c5 0x233da +0xf3c6 0x6792 +0xf3c7 0x233df +0xf3c8 0x8363 +0xf3c9 0x6810 +0xf3ca 0x67b0 +0xf3cb 0x67b2 +0xf3cc 0x67c3 +0xf3cd 0x67c8 +0xf3ce 0x67d2 +0xf3cf 0x67d9 +0xf3d0 0x67db +0xf3d1 0x67f0 +0xf3d2 0x67f7 +0xf3d3 0x2344a +0xf3d4 0x23451 +0xf3d5 0x2344b +0xf3d6 0x6818 +0xf3d7 0x681f +0xf3d8 0x682d +0xf3d9 0x23465 +0xf3da 0x6833 +0xf3db 0x683b +0xf3dc 0x683e +0xf3dd 0x6844 +0xf3de 0x6845 +0xf3df 0x6849 +0xf3e0 0x684c +0xf3e1 0x6855 +0xf3e2 0x6857 +0xf3e3 0x3b77 +0xf3e4 0x686b +0xf3e5 0x686e +0xf3e6 0x687a +0xf3e7 0x687c +0xf3e8 0x6882 +0xf3e9 0x6890 +0xf3ea 0x6896 +0xf3eb 0x3b6d +0xf3ec 0x6898 +0xf3ed 0x6899 +0xf3ee 0x689a +0xf3ef 0x689c +0xf3f0 0x68aa +0xf3f1 0x68ab +0xf3f2 0x68b4 +0xf3f3 0x68bb +0xf3f4 0x68fb +0xf3f5 0x234e4 +0xf3f6 0x2355a +0xf3f7 0xfa13 +0xf3f8 0x68c3 +0xf3f9 0x68c5 +0xf3fa 0x68cc +0xf3fb 0x68cf +0xf3fc 0x68d6 +0xf440 0x68d9 +0xf441 0x68e4 +0xf442 0x68e5 +0xf443 0x68ec +0xf444 0x68f7 +0xf445 0x6903 +0xf446 0x6907 +0xf447 0x3b87 +0xf448 0x3b88 +0xf449 0x23594 +0xf44a 0x693b +0xf44b 0x3b8d +0xf44c 0x6946 +0xf44d 0x6969 +0xf44e 0x696c +0xf44f 0x6972 +0xf450 0x697a +0xf451 0x697f +0xf452 0x6992 +0xf453 0x3ba4 +0xf454 0x6996 +0xf455 0x6998 +0xf456 0x69a6 +0xf457 0x69b0 +0xf458 0x69b7 +0xf459 0x69ba +0xf45a 0x69bc +0xf45b 0x69c0 +0xf45c 0x69d1 +0xf45d 0x69d6 +0xf45e 0x23639 +0xf45f 0x23647 +0xf460 0x6a30 +0xf461 0x23638 +0xf462 0x2363a +0xf463 0x69e3 +0xf464 0x69ee +0xf465 0x69ef +0xf466 0x69f3 +0xf467 0x3bcd +0xf468 0x69f4 +0xf469 0x69fe +0xf46a 0x6a11 +0xf46b 0x6a1a +0xf46c 0x6a1d +0xf46d 0x2371c +0xf46e 0x6a32 +0xf46f 0x6a33 +0xf470 0x6a34 +0xf471 0x6a3f +0xf472 0x6a46 +0xf473 0x6a49 +0xf474 0x6a7a +0xf475 0x6a4e +0xf476 0x6a52 +0xf477 0x6a64 +0xf478 0x2370c +0xf479 0x6a7e +0xf47a 0x6a83 +0xf47b 0x6a8b +0xf47c 0x3bf0 +0xf47d 0x6a91 +0xf47e 0x6a9f +0xf480 0x6aa1 +0xf481 0x23764 +0xf482 0x6aab +0xf483 0x6abd +0xf484 0x6ac6 +0xf485 0x6ad4 +0xf486 0x6ad0 +0xf487 0x6adc +0xf488 0x6add +0xf489 0x237ff +0xf48a 0x237e7 +0xf48b 0x6aec +0xf48c 0x6af1 +0xf48d 0x6af2 +0xf48e 0x6af3 +0xf48f 0x6afd +0xf490 0x23824 +0xf491 0x6b0b +0xf492 0x6b0f +0xf493 0x6b10 +0xf494 0x6b11 +0xf495 0x2383d +0xf496 0x6b17 +0xf497 0x3c26 +0xf498 0x6b2f +0xf499 0x6b4a +0xf49a 0x6b58 +0xf49b 0x6b6c +0xf49c 0x6b75 +0xf49d 0x6b7a +0xf49e 0x6b81 +0xf49f 0x6b9b +0xf4a0 0x6bae +0xf4a1 0x23a98 +0xf4a2 0x6bbd +0xf4a3 0x6bbe +0xf4a4 0x6bc7 +0xf4a5 0x6bc8 +0xf4a6 0x6bc9 +0xf4a7 0x6bda +0xf4a8 0x6be6 +0xf4a9 0x6be7 +0xf4aa 0x6bee +0xf4ab 0x6bf1 +0xf4ac 0x6c02 +0xf4ad 0x6c0a +0xf4ae 0x6c0e +0xf4af 0x6c35 +0xf4b0 0x6c36 +0xf4b1 0x6c3a +0xf4b2 0x23c7f +0xf4b3 0x6c3f +0xf4b4 0x6c4d +0xf4b5 0x6c5b +0xf4b6 0x6c6d +0xf4b7 0x6c84 +0xf4b8 0x6c89 +0xf4b9 0x3cc3 +0xf4ba 0x6c94 +0xf4bb 0x6c95 +0xf4bc 0x6c97 +0xf4bd 0x6cad +0xf4be 0x6cc2 +0xf4bf 0x6cd0 +0xf4c0 0x3cd2 +0xf4c1 0x6cd6 +0xf4c2 0x6cda +0xf4c3 0x6cdc +0xf4c4 0x6ce9 +0xf4c5 0x6cec +0xf4c6 0x6ced +0xf4c7 0x23d00 +0xf4c8 0x6d00 +0xf4c9 0x6d0a +0xf4ca 0x6d24 +0xf4cb 0x6d26 +0xf4cc 0x6d27 +0xf4cd 0x6c67 +0xf4ce 0x6d2f +0xf4cf 0x6d3c +0xf4d0 0x6d5b +0xf4d1 0x6d5e +0xf4d2 0x6d60 +0xf4d3 0x6d70 +0xf4d4 0x6d80 +0xf4d5 0x6d81 +0xf4d6 0x6d8a +0xf4d7 0x6d8d +0xf4d8 0x6d91 +0xf4d9 0x6d98 +0xf4da 0x23d40 +0xf4db 0x6e17 +0xf4dc 0x23dfa +0xf4dd 0x23df9 +0xf4de 0x23dd3 +0xf4df 0x6dab +0xf4e0 0x6dae +0xf4e1 0x6db4 +0xf4e2 0x6dc2 +0xf4e3 0x6d34 +0xf4e4 0x6dc8 +0xf4e5 0x6dce +0xf4e6 0x6dcf +0xf4e7 0x6dd0 +0xf4e8 0x6ddf +0xf4e9 0x6de9 +0xf4ea 0x6df6 +0xf4eb 0x6e36 +0xf4ec 0x6e1e +0xf4ed 0x6e22 +0xf4ee 0x6e27 +0xf4ef 0x3d11 +0xf4f0 0x6e32 +0xf4f1 0x6e3c +0xf4f2 0x6e48 +0xf4f3 0x6e49 +0xf4f4 0x6e4b +0xf4f5 0x6e4c +0xf4f6 0x6e4f +0xf4f7 0x6e51 +0xf4f8 0x6e53 +0xf4f9 0x6e54 +0xf4fa 0x6e57 +0xf4fb 0x6e63 +0xf4fc 0x3d1e +0xf540 0x6e93 +0xf541 0x6ea7 +0xf542 0x6eb4 +0xf543 0x6ebf +0xf544 0x6ec3 +0xf545 0x6eca +0xf546 0x6ed9 +0xf547 0x6f35 +0xf548 0x6eeb +0xf549 0x6ef9 +0xf54a 0x6efb +0xf54b 0x6f0a +0xf54c 0x6f0c +0xf54d 0x6f18 +0xf54e 0x6f25 +0xf54f 0x6f36 +0xf550 0x6f3c +0xf551 0x23f7e +0xf552 0x6f52 +0xf553 0x6f57 +0xf554 0x6f5a +0xf555 0x6f60 +0xf556 0x6f68 +0xf557 0x6f98 +0xf558 0x6f7d +0xf559 0x6f90 +0xf55a 0x6f96 +0xf55b 0x6fbe +0xf55c 0x6f9f +0xf55d 0x6fa5 +0xf55e 0x6faf +0xf55f 0x3d64 +0xf560 0x6fb5 +0xf561 0x6fc8 +0xf562 0x6fc9 +0xf563 0x6fda +0xf564 0x6fde +0xf565 0x6fe9 +0xf566 0x24096 +0xf567 0x6ffc +0xf568 0x7000 +0xf569 0x7007 +0xf56a 0x700a +0xf56b 0x7023 +0xf56c 0x24103 +0xf56d 0x7039 +0xf56e 0x703a +0xf56f 0x703c +0xf570 0x7043 +0xf571 0x7047 +0xf572 0x704b +0xf573 0x3d9a +0xf574 0x7054 +0xf575 0x7065 +0xf576 0x7069 +0xf577 0x706c +0xf578 0x706e +0xf579 0x7076 +0xf57a 0x707e +0xf57b 0x7081 +0xf57c 0x7086 +0xf57d 0x7095 +0xf57e 0x7097 +0xf580 0x70bb +0xf581 0x241c6 +0xf582 0x709f +0xf583 0x70b1 +0xf584 0x241fe +0xf585 0x70ec +0xf586 0x70ca +0xf587 0x70d1 +0xf588 0x70d3 +0xf589 0x70dc +0xf58a 0x7103 +0xf58b 0x7104 +0xf58c 0x7106 +0xf58d 0x7107 +0xf58e 0x7108 +0xf58f 0x710c +0xf590 0x3dc0 +0xf591 0x712f +0xf592 0x7131 +0xf593 0x7150 +0xf594 0x714a +0xf595 0x7153 +0xf596 0x715e +0xf597 0x3dd4 +0xf598 0x7196 +0xf599 0x7180 +0xf59a 0x719b +0xf59b 0x71a0 +0xf59c 0x71a2 +0xf59d 0x71ae +0xf59e 0x71af +0xf59f 0x71b3 +0xf5a0 0x243bc +0xf5a1 0x71cb +0xf5a2 0x71d3 +0xf5a3 0x71d9 +0xf5a4 0x71dc +0xf5a5 0x7207 +0xf5a6 0x3e05 +0xf5a7 0xfa49 +0xf5a8 0x722b +0xf5a9 0x7234 +0xf5aa 0x7238 +0xf5ab 0x7239 +0xf5ac 0x4e2c +0xf5ad 0x7242 +0xf5ae 0x7253 +0xf5af 0x7257 +0xf5b0 0x7263 +0xf5b1 0x24629 +0xf5b2 0x726e +0xf5b3 0x726f +0xf5b4 0x7278 +0xf5b5 0x727f +0xf5b6 0x728e +0xf5b7 0x246a5 +0xf5b8 0x72ad +0xf5b9 0x72ae +0xf5ba 0x72b0 +0xf5bb 0x72b1 +0xf5bc 0x72c1 +0xf5bd 0x3e60 +0xf5be 0x72cc +0xf5bf 0x3e66 +0xf5c0 0x3e68 +0xf5c1 0x72f3 +0xf5c2 0x72fa +0xf5c3 0x7307 +0xf5c4 0x7312 +0xf5c5 0x7318 +0xf5c6 0x7319 +0xf5c7 0x3e83 +0xf5c8 0x7339 +0xf5c9 0x732c +0xf5ca 0x7331 +0xf5cb 0x7333 +0xf5cc 0x733d +0xf5cd 0x7352 +0xf5ce 0x3e94 +0xf5cf 0x736b +0xf5d0 0x736c +0xf5d1 0x24896 +0xf5d2 0x736e +0xf5d3 0x736f +0xf5d4 0x7371 +0xf5d5 0x7377 +0xf5d6 0x7381 +0xf5d7 0x7385 +0xf5d8 0x738a +0xf5d9 0x7394 +0xf5da 0x7398 +0xf5db 0x739c +0xf5dc 0x739e +0xf5dd 0x73a5 +0xf5de 0x73a8 +0xf5df 0x73b5 +0xf5e0 0x73b7 +0xf5e1 0x73b9 +0xf5e2 0x73bc +0xf5e3 0x73bf +0xf5e4 0x73c5 +0xf5e5 0x73cb +0xf5e6 0x73e1 +0xf5e7 0x73e7 +0xf5e8 0x73f9 +0xf5e9 0x7413 +0xf5ea 0x73fa +0xf5eb 0x7401 +0xf5ec 0x7424 +0xf5ed 0x7431 +0xf5ee 0x7439 +0xf5ef 0x7453 +0xf5f0 0x7440 +0xf5f1 0x7443 +0xf5f2 0x744d +0xf5f3 0x7452 +0xf5f4 0x745d +0xf5f5 0x7471 +0xf5f6 0x7481 +0xf5f7 0x7485 +0xf5f8 0x7488 +0xf5f9 0x24a4d +0xf5fa 0x7492 +0xf5fb 0x7497 +0xf5fc 0x7499 +0xf640 0x74a0 +0xf641 0x74a1 +0xf642 0x74a5 +0xf643 0x74aa +0xf644 0x74ab +0xf645 0x74b9 +0xf646 0x74bb +0xf647 0x74ba +0xf648 0x74d6 +0xf649 0x74d8 +0xf64a 0x74de +0xf64b 0x74ef +0xf64c 0x74eb +0xf64d 0x24b56 +0xf64e 0x74fa +0xf64f 0x24b6f +0xf650 0x7520 +0xf651 0x7524 +0xf652 0x752a +0xf653 0x3f57 +0xf654 0x24c16 +0xf655 0x753d +0xf656 0x753e +0xf657 0x7540 +0xf658 0x7548 +0xf659 0x754e +0xf65a 0x7550 +0xf65b 0x7552 +0xf65c 0x756c +0xf65d 0x7572 +0xf65e 0x7571 +0xf65f 0x757a +0xf660 0x757d +0xf661 0x757e +0xf662 0x7581 +0xf663 0x24d14 +0xf664 0x758c +0xf665 0x3f75 +0xf666 0x75a2 +0xf667 0x3f77 +0xf668 0x75b0 +0xf669 0x75b7 +0xf66a 0x75bf +0xf66b 0x75c0 +0xf66c 0x75c6 +0xf66d 0x75cf +0xf66e 0x75d3 +0xf66f 0x75dd +0xf670 0x75df +0xf671 0x75e0 +0xf672 0x75e7 +0xf673 0x75ec +0xf674 0x75ee +0xf675 0x75f1 +0xf676 0x75f9 +0xf677 0x7603 +0xf678 0x7618 +0xf679 0x7607 +0xf67a 0x760f +0xf67b 0x3fae +0xf67c 0x24e0e +0xf67d 0x7613 +0xf67e 0x761b +0xf680 0x761c +0xf681 0x24e37 +0xf682 0x7625 +0xf683 0x7628 +0xf684 0x763c +0xf685 0x7633 +0xf686 0x24e6a +0xf687 0x3fc9 +0xf688 0x7641 +0xf689 0x24e8b +0xf68a 0x7649 +0xf68b 0x7655 +0xf68c 0x3fd7 +0xf68d 0x766e +0xf68e 0x7695 +0xf68f 0x769c +0xf690 0x76a1 +0xf691 0x76a0 +0xf692 0x76a7 +0xf693 0x76a8 +0xf694 0x76af +0xf695 0x2504a +0xf696 0x76c9 +0xf697 0x25055 +0xf698 0x76e8 +0xf699 0x76ec +0xf69a 0x25122 +0xf69b 0x7717 +0xf69c 0x771a +0xf69d 0x772d +0xf69e 0x7735 +0xf69f 0x251a9 +0xf6a0 0x4039 +0xf6a1 0x251e5 +0xf6a2 0x251cd +0xf6a3 0x7758 +0xf6a4 0x7760 +0xf6a5 0x776a +0xf6a6 0x2521e +0xf6a7 0x7772 +0xf6a8 0x777c +0xf6a9 0x777d +0xf6aa 0x2524c +0xf6ab 0x4058 +0xf6ac 0x779a +0xf6ad 0x779f +0xf6ae 0x77a2 +0xf6af 0x77a4 +0xf6b0 0x77a9 +0xf6b1 0x77de +0xf6b2 0x77df +0xf6b3 0x77e4 +0xf6b4 0x77e6 +0xf6b5 0x77ea +0xf6b6 0x77ec +0xf6b7 0x4093 +0xf6b8 0x77f0 +0xf6b9 0x77f4 +0xf6ba 0x77fb +0xf6bb 0x2542e +0xf6bc 0x7805 +0xf6bd 0x7806 +0xf6be 0x7809 +0xf6bf 0x780d +0xf6c0 0x7819 +0xf6c1 0x7821 +0xf6c2 0x782c +0xf6c3 0x7847 +0xf6c4 0x7864 +0xf6c5 0x786a +0xf6c6 0x254d9 +0xf6c7 0x788a +0xf6c8 0x7894 +0xf6c9 0x78a4 +0xf6ca 0x789d +0xf6cb 0x789e +0xf6cc 0x789f +0xf6cd 0x78bb +0xf6ce 0x78c8 +0xf6cf 0x78cc +0xf6d0 0x78ce +0xf6d1 0x78d5 +0xf6d2 0x78e0 +0xf6d3 0x78e1 +0xf6d4 0x78e6 +0xf6d5 0x78f9 +0xf6d6 0x78fa +0xf6d7 0x78fb +0xf6d8 0x78fe +0xf6d9 0x255a7 +0xf6da 0x7910 +0xf6db 0x791b +0xf6dc 0x7930 +0xf6dd 0x7925 +0xf6de 0x793b +0xf6df 0x794a +0xf6e0 0x7958 +0xf6e1 0x795b +0xf6e2 0x4105 +0xf6e3 0x7967 +0xf6e4 0x7972 +0xf6e5 0x7994 +0xf6e6 0x7995 +0xf6e7 0x7996 +0xf6e8 0x799b +0xf6e9 0x79a1 +0xf6ea 0x79a9 +0xf6eb 0x79b4 +0xf6ec 0x79bb +0xf6ed 0x79c2 +0xf6ee 0x79c7 +0xf6ef 0x79cc +0xf6f0 0x79cd +0xf6f1 0x79d6 +0xf6f2 0x4148 +0xf6f3 0x257a9 +0xf6f4 0x257b4 +0xf6f5 0x414f +0xf6f6 0x7a0a +0xf6f7 0x7a11 +0xf6f8 0x7a15 +0xf6f9 0x7a1b +0xf6fa 0x7a1e +0xf6fb 0x4163 +0xf6fc 0x7a2d +0xf740 0x7a38 +0xf741 0x7a47 +0xf742 0x7a4c +0xf743 0x7a56 +0xf744 0x7a59 +0xf745 0x7a5c +0xf746 0x7a5f +0xf747 0x7a60 +0xf748 0x7a67 +0xf749 0x7a6a +0xf74a 0x7a75 +0xf74b 0x7a78 +0xf74c 0x7a82 +0xf74d 0x7a8a +0xf74e 0x7a90 +0xf74f 0x7aa3 +0xf750 0x7aac +0xf751 0x259d4 +0xf752 0x41b4 +0xf753 0x7ab9 +0xf754 0x7abc +0xf755 0x7abe +0xf756 0x41bf +0xf757 0x7acc +0xf758 0x7ad1 +0xf759 0x7ae7 +0xf75a 0x7ae8 +0xf75b 0x7af4 +0xf75c 0x25ae4 +0xf75d 0x25ae3 +0xf75e 0x7b07 +0xf75f 0x25af1 +0xf760 0x7b3d +0xf761 0x7b27 +0xf762 0x7b2a +0xf763 0x7b2e +0xf764 0x7b2f +0xf765 0x7b31 +0xf766 0x41e6 +0xf767 0x41f3 +0xf768 0x7b7f +0xf769 0x7b41 +0xf76a 0x41ee +0xf76b 0x7b55 +0xf76c 0x7b79 +0xf76d 0x7b64 +0xf76e 0x7b66 +0xf76f 0x7b69 +0xf770 0x7b73 +0xf771 0x25bb2 +0xf772 0x4207 +0xf773 0x7b90 +0xf774 0x7b91 +0xf775 0x7b9b +0xf776 0x420e +0xf777 0x7baf +0xf778 0x7bb5 +0xf779 0x7bbc +0xf77a 0x7bc5 +0xf77b 0x7bca +0xf77c 0x25c4b +0xf77d 0x25c64 +0xf77e 0x7bd4 +0xf780 0x7bd6 +0xf781 0x7bda +0xf782 0x7bea +0xf783 0x7bf0 +0xf784 0x7c03 +0xf785 0x7c0b +0xf786 0x7c0e +0xf787 0x7c0f +0xf788 0x7c26 +0xf789 0x7c45 +0xf78a 0x7c4a +0xf78b 0x7c51 +0xf78c 0x7c57 +0xf78d 0x7c5e +0xf78e 0x7c61 +0xf78f 0x7c69 +0xf790 0x7c6e +0xf791 0x7c6f +0xf792 0x7c70 +0xf793 0x25e2e +0xf794 0x25e56 +0xf795 0x25e65 +0xf796 0x7ca6 +0xf797 0x25e62 +0xf798 0x7cb6 +0xf799 0x7cb7 +0xf79a 0x7cbf +0xf79b 0x25ed8 +0xf79c 0x7cc4 +0xf79d 0x25ec2 +0xf79e 0x7cc8 +0xf79f 0x7ccd +0xf7a0 0x25ee8 +0xf7a1 0x7cd7 +0xf7a2 0x25f23 +0xf7a3 0x7ce6 +0xf7a4 0x7ceb +0xf7a5 0x25f5c +0xf7a6 0x7cf5 +0xf7a7 0x7d03 +0xf7a8 0x7d09 +0xf7a9 0x42c6 +0xf7aa 0x7d12 +0xf7ab 0x7d1e +0xf7ac 0x25fe0 +0xf7ad 0x25fd4 +0xf7ae 0x7d3d +0xf7af 0x7d3e +0xf7b0 0x7d40 +0xf7b1 0x7d47 +0xf7b2 0x2600c +0xf7b3 0x25ffb +0xf7b4 0x42d6 +0xf7b5 0x7d59 +0xf7b6 0x7d5a +0xf7b7 0x7d6a +0xf7b8 0x7d70 +0xf7b9 0x42dd +0xf7ba 0x7d7f +0xf7bb 0x26017 +0xf7bc 0x7d86 +0xf7bd 0x7d88 +0xf7be 0x7d8c +0xf7bf 0x7d97 +0xf7c0 0x26060 +0xf7c1 0x7d9d +0xf7c2 0x7da7 +0xf7c3 0x7daa +0xf7c4 0x7db6 +0xf7c5 0x7db7 +0xf7c6 0x7dc0 +0xf7c7 0x7dd7 +0xf7c8 0x7dd9 +0xf7c9 0x7de6 +0xf7ca 0x7df1 +0xf7cb 0x7df9 +0xf7cc 0x4302 +0xf7cd 0x260ed +0xf7ce 0xfa58 +0xf7cf 0x7e10 +0xf7d0 0x7e17 +0xf7d1 0x7e1d +0xf7d2 0x7e20 +0xf7d3 0x7e27 +0xf7d4 0x7e2c +0xf7d5 0x7e45 +0xf7d6 0x7e73 +0xf7d7 0x7e75 +0xf7d8 0x7e7e +0xf7d9 0x7e86 +0xf7da 0x7e87 +0xf7db 0x432b +0xf7dc 0x7e91 +0xf7dd 0x7e98 +0xf7de 0x7e9a +0xf7df 0x4343 +0xf7e0 0x7f3c +0xf7e1 0x7f3b +0xf7e2 0x7f3e +0xf7e3 0x7f43 +0xf7e4 0x7f44 +0xf7e5 0x7f4f +0xf7e6 0x34c1 +0xf7e7 0x26270 +0xf7e8 0x7f52 +0xf7e9 0x26286 +0xf7ea 0x7f61 +0xf7eb 0x7f63 +0xf7ec 0x7f64 +0xf7ed 0x7f6d +0xf7ee 0x7f7d +0xf7ef 0x7f7e +0xf7f0 0x2634c +0xf7f1 0x7f90 +0xf7f2 0x517b +0xf7f3 0x23d0e +0xf7f4 0x7f96 +0xf7f5 0x7f9c +0xf7f6 0x7fad +0xf7f7 0x26402 +0xf7f8 0x7fc3 +0xf7f9 0x7fcf +0xf7fa 0x7fe3 +0xf7fb 0x7fe5 +0xf7fc 0x7fef +0xf840 0x7ff2 +0xf841 0x8002 +0xf842 0x800a +0xf843 0x8008 +0xf844 0x800e +0xf845 0x8011 +0xf846 0x8016 +0xf847 0x8024 +0xf848 0x802c +0xf849 0x8030 +0xf84a 0x8043 +0xf84b 0x8066 +0xf84c 0x8071 +0xf84d 0x8075 +0xf84e 0x807b +0xf84f 0x8099 +0xf850 0x809c +0xf851 0x80a4 +0xf852 0x80a7 +0xf853 0x80b8 +0xf854 0x2667e +0xf855 0x80c5 +0xf856 0x80d5 +0xf857 0x80d8 +0xf858 0x80e6 +0xf859 0x266b0 +0xf85a 0x810d +0xf85b 0x80f5 +0xf85c 0x80fb +0xf85d 0x43ee +0xf85e 0x8135 +0xf85f 0x8116 +0xf860 0x811e +0xf861 0x43f0 +0xf862 0x8124 +0xf863 0x8127 +0xf864 0x812c +0xf865 0x2671d +0xf866 0x813d +0xf867 0x4408 +0xf868 0x8169 +0xf869 0x4417 +0xf86a 0x8181 +0xf86b 0x441c +0xf86c 0x8184 +0xf86d 0x8185 +0xf86e 0x4422 +0xf86f 0x8198 +0xf870 0x81b2 +0xf871 0x81c1 +0xf872 0x81c3 +0xf873 0x81d6 +0xf874 0x81db +0xf875 0x268dd +0xf876 0x81e4 +0xf877 0x268ea +0xf878 0x81ec +0xf879 0x26951 +0xf87a 0x81fd +0xf87b 0x81ff +0xf87c 0x2696f +0xf87d 0x8204 +0xf87e 0x269dd +0xf880 0x8219 +0xf881 0x8221 +0xf882 0x8222 +0xf883 0x26a1e +0xf884 0x8232 +0xf885 0x8234 +0xf886 0x823c +0xf887 0x8246 +0xf888 0x8249 +0xf889 0x8245 +0xf88a 0x26a58 +0xf88b 0x824b +0xf88c 0x4476 +0xf88d 0x824f +0xf88e 0x447a +0xf88f 0x8257 +0xf890 0x26a8c +0xf891 0x825c +0xf892 0x8263 +0xf893 0x26ab7 +0xf894 0xfa5d +0xf895 0xfa5e +0xf896 0x8279 +0xf897 0x4491 +0xf898 0x827d +0xf899 0x827f +0xf89a 0x8283 +0xf89b 0x828a +0xf89c 0x8293 +0xf89d 0x82a7 +0xf89e 0x82a8 +0xf89f 0x82b2 +0xf8a0 0x82b4 +0xf8a1 0x82ba +0xf8a2 0x82bc +0xf8a3 0x82e2 +0xf8a4 0x82e8 +0xf8a5 0x82f7 +0xf8a6 0x8307 +0xf8a7 0x8308 +0xf8a8 0x830c +0xf8a9 0x8354 +0xf8aa 0x831b +0xf8ab 0x831d +0xf8ac 0x8330 +0xf8ad 0x833c +0xf8ae 0x8344 +0xf8af 0x8357 +0xf8b0 0x44be +0xf8b1 0x837f +0xf8b2 0x44d4 +0xf8b3 0x44b3 +0xf8b4 0x838d +0xf8b5 0x8394 +0xf8b6 0x8395 +0xf8b7 0x839b +0xf8b8 0x839d +0xf8b9 0x83c9 +0xf8ba 0x83d0 +0xf8bb 0x83d4 +0xf8bc 0x83dd +0xf8bd 0x83e5 +0xf8be 0x83f9 +0xf8bf 0x840f +0xf8c0 0x8411 +0xf8c1 0x8415 +0xf8c2 0x26c73 +0xf8c3 0x8417 +0xf8c4 0x8439 +0xf8c5 0x844a +0xf8c6 0x844f +0xf8c7 0x8451 +0xf8c8 0x8452 +0xf8c9 0x8459 +0xf8ca 0x845a +0xf8cb 0x845c +0xf8cc 0x26cdd +0xf8cd 0x8465 +0xf8ce 0x8476 +0xf8cf 0x8478 +0xf8d0 0x847c +0xf8d1 0x8481 +0xf8d2 0x450d +0xf8d3 0x84dc +0xf8d4 0x8497 +0xf8d5 0x84a6 +0xf8d6 0x84be +0xf8d7 0x4508 +0xf8d8 0x84ce +0xf8d9 0x84cf +0xf8da 0x84d3 +0xf8db 0x26e65 +0xf8dc 0x84e7 +0xf8dd 0x84ea +0xf8de 0x84ef +0xf8df 0x84f0 +0xf8e0 0x84f1 +0xf8e1 0x84fa +0xf8e2 0x84fd +0xf8e3 0x850c +0xf8e4 0x851b +0xf8e5 0x8524 +0xf8e6 0x8525 +0xf8e7 0x852b +0xf8e8 0x8534 +0xf8e9 0x854f +0xf8ea 0x856f +0xf8eb 0x4525 +0xf8ec 0x4543 +0xf8ed 0x853e +0xf8ee 0x8551 +0xf8ef 0x8553 +0xf8f0 0x855e +0xf8f1 0x8561 +0xf8f2 0x8562 +0xf8f3 0x26f94 +0xf8f4 0x857b +0xf8f5 0x857d +0xf8f6 0x857f +0xf8f7 0x8581 +0xf8f8 0x8586 +0xf8f9 0x8593 +0xf8fa 0x859d +0xf8fb 0x859f +0xf8fc 0x26ff8 +0xf940 0x26ff6 +0xf941 0x26ff7 +0xf942 0x85b7 +0xf943 0x85bc +0xf944 0x85c7 +0xf945 0x85ca +0xf946 0x85d8 +0xf947 0x85d9 +0xf948 0x85df +0xf949 0x85e1 +0xf94a 0x85e6 +0xf94b 0x85f6 +0xf94c 0x8600 +0xf94d 0x8611 +0xf94e 0x861e +0xf94f 0x8621 +0xf950 0x8624 +0xf951 0x8627 +0xf952 0x2710d +0xf953 0x8639 +0xf954 0x863c +0xf955 0x27139 +0xf956 0x8640 +0xf957 0xfa20 +0xf958 0x8653 +0xf959 0x8656 +0xf95a 0x866f +0xf95b 0x8677 +0xf95c 0x867a +0xf95d 0x8687 +0xf95e 0x8689 +0xf95f 0x868d +0xf960 0x8691 +0xf961 0x869c +0xf962 0x869d +0xf963 0x86a8 +0xf964 0xfa21 +0xf965 0x86b1 +0xf966 0x86b3 +0xf967 0x86c1 +0xf968 0x86c3 +0xf969 0x86d1 +0xf96a 0x86d5 +0xf96b 0x86d7 +0xf96c 0x86e3 +0xf96d 0x86e6 +0xf96e 0x45b8 +0xf96f 0x8705 +0xf970 0x8707 +0xf971 0x870e +0xf972 0x8710 +0xf973 0x8713 +0xf974 0x8719 +0xf975 0x871f +0xf976 0x8721 +0xf977 0x8723 +0xf978 0x8731 +0xf979 0x873a +0xf97a 0x873e +0xf97b 0x8740 +0xf97c 0x8743 +0xf97d 0x8751 +0xf97e 0x8758 +0xf980 0x8764 +0xf981 0x8765 +0xf982 0x8772 +0xf983 0x877c +0xf984 0x273db +0xf985 0x273da +0xf986 0x87a7 +0xf987 0x8789 +0xf988 0x878b +0xf989 0x8793 +0xf98a 0x87a0 +0xf98b 0x273fe +0xf98c 0x45e5 +0xf98d 0x87be +0xf98e 0x27410 +0xf98f 0x87c1 +0xf990 0x87ce +0xf991 0x87f5 +0xf992 0x87df +0xf993 0x27449 +0xf994 0x87e3 +0xf995 0x87e5 +0xf996 0x87e6 +0xf997 0x87ea +0xf998 0x87eb +0xf999 0x87ed +0xf99a 0x8801 +0xf99b 0x8803 +0xf99c 0x880b +0xf99d 0x8813 +0xf99e 0x8828 +0xf99f 0x882e +0xf9a0 0x8832 +0xf9a1 0x883c +0xf9a2 0x460f +0xf9a3 0x884a +0xf9a4 0x8858 +0xf9a5 0x885f +0xf9a6 0x8864 +0xf9a7 0x27615 +0xf9a8 0x27614 +0xf9a9 0x8869 +0xf9aa 0x27631 +0xf9ab 0x886f +0xf9ac 0x88a0 +0xf9ad 0x88bc +0xf9ae 0x88bd +0xf9af 0x88be +0xf9b0 0x88c0 +0xf9b1 0x88d2 +0xf9b2 0x27693 +0xf9b3 0x88d1 +0xf9b4 0x88d3 +0xf9b5 0x88db +0xf9b6 0x88f0 +0xf9b7 0x88f1 +0xf9b8 0x4641 +0xf9b9 0x8901 +0xf9ba 0x2770e +0xf9bb 0x8937 +0xf9bc 0x27723 +0xf9bd 0x8942 +0xf9be 0x8945 +0xf9bf 0x8949 +0xf9c0 0x27752 +0xf9c1 0x4665 +0xf9c2 0x8962 +0xf9c3 0x8980 +0xf9c4 0x8989 +0xf9c5 0x8990 +0xf9c6 0x899f +0xf9c7 0x89b0 +0xf9c8 0x89b7 +0xf9c9 0x89d6 +0xf9ca 0x89d8 +0xf9cb 0x89eb +0xf9cc 0x46a1 +0xf9cd 0x89f1 +0xf9ce 0x89f3 +0xf9cf 0x89fd +0xf9d0 0x89ff +0xf9d1 0x46af +0xf9d2 0x8a11 +0xf9d3 0x8a14 +0xf9d4 0x27985 +0xf9d5 0x8a21 +0xf9d6 0x8a35 +0xf9d7 0x8a3e +0xf9d8 0x8a45 +0xf9d9 0x8a4d +0xf9da 0x8a58 +0xf9db 0x8aae +0xf9dc 0x8a90 +0xf9dd 0x8ab7 +0xf9de 0x8abe +0xf9df 0x8ad7 +0xf9e0 0x8afc +0xf9e1 0x27a84 +0xf9e2 0x8b0a +0xf9e3 0x8b05 +0xf9e4 0x8b0d +0xf9e5 0x8b1c +0xf9e6 0x8b1f +0xf9e7 0x8b2d +0xf9e8 0x8b43 +0xf9e9 0x470c +0xf9ea 0x8b51 +0xf9eb 0x8b5e +0xf9ec 0x8b76 +0xf9ed 0x8b7f +0xf9ee 0x8b81 +0xf9ef 0x8b8b +0xf9f0 0x8b94 +0xf9f1 0x8b95 +0xf9f2 0x8b9c +0xf9f3 0x8b9e +0xf9f4 0x8c39 +0xf9f5 0x27bb3 +0xf9f6 0x8c3d +0xf9f7 0x27bbe +0xf9f8 0x27bc7 +0xf9f9 0x8c45 +0xf9fa 0x8c47 +0xf9fb 0x8c4f +0xf9fc 0x8c54 +0xfa40 0x8c57 +0xfa41 0x8c69 +0xfa42 0x8c6d +0xfa43 0x8c73 +0xfa44 0x27cb8 +0xfa45 0x8c93 +0xfa46 0x8c92 +0xfa47 0x8c99 +0xfa48 0x4764 +0xfa49 0x8c9b +0xfa4a 0x8ca4 +0xfa4b 0x8cd6 +0xfa4c 0x8cd5 +0xfa4d 0x8cd9 +0xfa4e 0x27da0 +0xfa4f 0x8cf0 +0xfa50 0x8cf1 +0xfa51 0x27e10 +0xfa52 0x8d09 +0xfa53 0x8d0e +0xfa54 0x8d6c +0xfa55 0x8d84 +0xfa56 0x8d95 +0xfa57 0x8da6 +0xfa58 0x27fb7 +0xfa59 0x8dc6 +0xfa5a 0x8dc8 +0xfa5b 0x8dd9 +0xfa5c 0x8dec +0xfa5d 0x8e0c +0xfa5e 0x47fd +0xfa5f 0x8dfd +0xfa60 0x8e06 +0xfa61 0x2808a +0xfa62 0x8e14 +0xfa63 0x8e16 +0xfa64 0x8e21 +0xfa65 0x8e22 +0xfa66 0x8e27 +0xfa67 0x280bb +0xfa68 0x4816 +0xfa69 0x8e36 +0xfa6a 0x8e39 +0xfa6b 0x8e4b +0xfa6c 0x8e54 +0xfa6d 0x8e62 +0xfa6e 0x8e6c +0xfa6f 0x8e6d +0xfa70 0x8e6f +0xfa71 0x8e98 +0xfa72 0x8e9e +0xfa73 0x8eae +0xfa74 0x8eb3 +0xfa75 0x8eb5 +0xfa76 0x8eb6 +0xfa77 0x8ebb +0xfa78 0x28282 +0xfa79 0x8ed1 +0xfa7a 0x8ed4 +0xfa7b 0x484e +0xfa7c 0x8ef9 +0xfa7d 0x282f3 +0xfa7e 0x8f00 +0xfa80 0x8f08 +0xfa81 0x8f17 +0xfa82 0x8f2b +0xfa83 0x8f40 +0xfa84 0x8f4a +0xfa85 0x8f58 +0xfa86 0x2840c +0xfa87 0x8fa4 +0xfa88 0x8fb4 +0xfa89 0xfa66 +0xfa8a 0x8fb6 +0xfa8b 0x28455 +0xfa8c 0x8fc1 +0xfa8d 0x8fc6 +0xfa8e 0xfa24 +0xfa8f 0x8fca +0xfa90 0x8fcd +0xfa91 0x8fd3 +0xfa92 0x8fd5 +0xfa93 0x8fe0 +0xfa94 0x8ff1 +0xfa95 0x8ff5 +0xfa96 0x8ffb +0xfa97 0x9002 +0xfa98 0x900c +0xfa99 0x9037 +0xfa9a 0x2856b +0xfa9b 0x9043 +0xfa9c 0x9044 +0xfa9d 0x905d +0xfa9e 0x285c8 +0xfa9f 0x285c9 +0xfaa0 0x9085 +0xfaa1 0x908c +0xfaa2 0x9090 +0xfaa3 0x961d +0xfaa4 0x90a1 +0xfaa5 0x48b5 +0xfaa6 0x90b0 +0xfaa7 0x90b6 +0xfaa8 0x90c3 +0xfaa9 0x90c8 +0xfaaa 0x286d7 +0xfaab 0x90dc +0xfaac 0x90df +0xfaad 0x286fa +0xfaae 0x90f6 +0xfaaf 0x90f2 +0xfab0 0x9100 +0xfab1 0x90eb +0xfab2 0x90fe +0xfab3 0x90ff +0xfab4 0x9104 +0xfab5 0x9106 +0xfab6 0x9118 +0xfab7 0x911c +0xfab8 0x911e +0xfab9 0x9137 +0xfaba 0x9139 +0xfabb 0x913a +0xfabc 0x9146 +0xfabd 0x9147 +0xfabe 0x9157 +0xfabf 0x9159 +0xfac0 0x9161 +0xfac1 0x9164 +0xfac2 0x9174 +0xfac3 0x9179 +0xfac4 0x9185 +0xfac5 0x918e +0xfac6 0x91a8 +0xfac7 0x91ae +0xfac8 0x91b3 +0xfac9 0x91b6 +0xfaca 0x91c3 +0xfacb 0x91c4 +0xfacc 0x91da +0xfacd 0x28949 +0xface 0x28946 +0xfacf 0x91ec +0xfad0 0x91ee +0xfad1 0x9201 +0xfad2 0x920a +0xfad3 0x9216 +0xfad4 0x9217 +0xfad5 0x2896b +0xfad6 0x9233 +0xfad7 0x9242 +0xfad8 0x9247 +0xfad9 0x924a +0xfada 0x924e +0xfadb 0x9251 +0xfadc 0x9256 +0xfadd 0x9259 +0xfade 0x9260 +0xfadf 0x9261 +0xfae0 0x9265 +0xfae1 0x9267 +0xfae2 0x9268 +0xfae3 0x28987 +0xfae4 0x28988 +0xfae5 0x927c +0xfae6 0x927d +0xfae7 0x927f +0xfae8 0x9289 +0xfae9 0x928d +0xfaea 0x9297 +0xfaeb 0x9299 +0xfaec 0x929f +0xfaed 0x92a7 +0xfaee 0x92ab +0xfaef 0x289ba +0xfaf0 0x289bb +0xfaf1 0x92b2 +0xfaf2 0x92bf +0xfaf3 0x92c0 +0xfaf4 0x92c6 +0xfaf5 0x92ce +0xfaf6 0x92d0 +0xfaf7 0x92d7 +0xfaf8 0x92d9 +0xfaf9 0x92e5 +0xfafa 0x92e7 +0xfafb 0x9311 +0xfafc 0x28a1e +0xfb40 0x28a29 +0xfb41 0x92f7 +0xfb42 0x92f9 +0xfb43 0x92fb +0xfb44 0x9302 +0xfb45 0x930d +0xfb46 0x9315 +0xfb47 0x931d +0xfb48 0x931e +0xfb49 0x9327 +0xfb4a 0x9329 +0xfb4b 0x28a71 +0xfb4c 0x28a43 +0xfb4d 0x9347 +0xfb4e 0x9351 +0xfb4f 0x9357 +0xfb50 0x935a +0xfb51 0x936b +0xfb52 0x9371 +0xfb53 0x9373 +0xfb54 0x93a1 +0xfb55 0x28a99 +0xfb56 0x28acd +0xfb57 0x9388 +0xfb58 0x938b +0xfb59 0x938f +0xfb5a 0x939e +0xfb5b 0x93f5 +0xfb5c 0x28ae4 +0xfb5d 0x28add +0xfb5e 0x93f1 +0xfb5f 0x93c1 +0xfb60 0x93c7 +0xfb61 0x93dc +0xfb62 0x93e2 +0xfb63 0x93e7 +0xfb64 0x9409 +0xfb65 0x940f +0xfb66 0x9416 +0xfb67 0x9417 +0xfb68 0x93fb +0xfb69 0x9432 +0xfb6a 0x9434 +0xfb6b 0x943b +0xfb6c 0x9445 +0xfb6d 0x28bc1 +0xfb6e 0x28bef +0xfb6f 0x946d +0xfb70 0x946f +0xfb71 0x9578 +0xfb72 0x9579 +0xfb73 0x9586 +0xfb74 0x958c +0xfb75 0x958d +0xfb76 0x28d10 +0xfb77 0x95ab +0xfb78 0x95b4 +0xfb79 0x28d71 +0xfb7a 0x95c8 +0xfb7b 0x28dfb +0xfb7c 0x28e1f +0xfb7d 0x962c +0xfb7e 0x9633 +0xfb80 0x9634 +0xfb81 0x28e36 +0xfb82 0x963c +0xfb83 0x9641 +0xfb84 0x9661 +0xfb85 0x28e89 +0xfb86 0x9682 +0xfb87 0x28eeb +0xfb88 0x969a +0xfb89 0x28f32 +0xfb8a 0x49e7 +0xfb8b 0x96a9 +0xfb8c 0x96af +0xfb8d 0x96b3 +0xfb8e 0x96ba +0xfb8f 0x96bd +0xfb90 0x49fa +0xfb91 0x28ff8 +0xfb92 0x96d8 +0xfb93 0x96da +0xfb94 0x96dd +0xfb95 0x4a04 +0xfb96 0x9714 +0xfb97 0x9723 +0xfb98 0x4a29 +0xfb99 0x9736 +0xfb9a 0x9741 +0xfb9b 0x9747 +0xfb9c 0x9755 +0xfb9d 0x9757 +0xfb9e 0x975b +0xfb9f 0x976a +0xfba0 0x292a0 +0xfba1 0x292b1 +0xfba2 0x9796 +0xfba3 0x979a +0xfba4 0x979e +0xfba5 0x97a2 +0xfba6 0x97b1 +0xfba7 0x97b2 +0xfba8 0x97be +0xfba9 0x97cc +0xfbaa 0x97d1 +0xfbab 0x97d4 +0xfbac 0x97d8 +0xfbad 0x97d9 +0xfbae 0x97e1 +0xfbaf 0x97f1 +0xfbb0 0x9804 +0xfbb1 0x980d +0xfbb2 0x980e +0xfbb3 0x9814 +0xfbb4 0x9816 +0xfbb5 0x4abc +0xfbb6 0x29490 +0xfbb7 0x9823 +0xfbb8 0x9832 +0xfbb9 0x9833 +0xfbba 0x9825 +0xfbbb 0x9847 +0xfbbc 0x9866 +0xfbbd 0x98ab +0xfbbe 0x98ad +0xfbbf 0x98b0 +0xfbc0 0x295cf +0xfbc1 0x98b7 +0xfbc2 0x98b8 +0xfbc3 0x98bb +0xfbc4 0x98bc +0xfbc5 0x98bf +0xfbc6 0x98c2 +0xfbc7 0x98c7 +0xfbc8 0x98cb +0xfbc9 0x98e0 +0xfbca 0x2967f +0xfbcb 0x98e1 +0xfbcc 0x98e3 +0xfbcd 0x98e5 +0xfbce 0x98ea +0xfbcf 0x98f0 +0xfbd0 0x98f1 +0xfbd1 0x98f3 +0xfbd2 0x9908 +0xfbd3 0x4b3b +0xfbd4 0x296f0 +0xfbd5 0x9916 +0xfbd6 0x9917 +0xfbd7 0x29719 +0xfbd8 0x991a +0xfbd9 0x991b +0xfbda 0x991c +0xfbdb 0x29750 +0xfbdc 0x9931 +0xfbdd 0x9932 +0xfbde 0x9933 +0xfbdf 0x993a +0xfbe0 0x993b +0xfbe1 0x993c +0xfbe2 0x9940 +0xfbe3 0x9941 +0xfbe4 0x9946 +0xfbe5 0x994d +0xfbe6 0x994e +0xfbe7 0x995c +0xfbe8 0x995f +0xfbe9 0x9960 +0xfbea 0x99a3 +0xfbeb 0x99a6 +0xfbec 0x99b9 +0xfbed 0x99bd +0xfbee 0x99bf +0xfbef 0x99c3 +0xfbf0 0x99c9 +0xfbf1 0x99d4 +0xfbf2 0x99d9 +0xfbf3 0x99de +0xfbf4 0x298c6 +0xfbf5 0x99f0 +0xfbf6 0x99f9 +0xfbf7 0x99fc +0xfbf8 0x9a0a +0xfbf9 0x9a11 +0xfbfa 0x9a16 +0xfbfb 0x9a1a +0xfbfc 0x9a20 +0xfc40 0x9a31 +0xfc41 0x9a36 +0xfc42 0x9a44 +0xfc43 0x9a4c +0xfc44 0x9a58 +0xfc45 0x4bc2 +0xfc46 0x9aaf +0xfc47 0x4bca +0xfc48 0x9ab7 +0xfc49 0x4bd2 +0xfc4a 0x9ab9 +0xfc4b 0x29a72 +0xfc4c 0x9ac6 +0xfc4d 0x9ad0 +0xfc4e 0x9ad2 +0xfc4f 0x9ad5 +0xfc50 0x4be8 +0xfc51 0x9adc +0xfc52 0x9ae0 +0xfc53 0x9ae5 +0xfc54 0x9ae9 +0xfc55 0x9b03 +0xfc56 0x9b0c +0xfc57 0x9b10 +0xfc58 0x9b12 +0xfc59 0x9b16 +0xfc5a 0x9b1c +0xfc5b 0x9b2b +0xfc5c 0x9b33 +0xfc5d 0x9b3d +0xfc5e 0x4c20 +0xfc5f 0x9b4b +0xfc60 0x9b63 +0xfc61 0x9b65 +0xfc62 0x9b6b +0xfc63 0x9b6c +0xfc64 0x9b73 +0xfc65 0x9b76 +0xfc66 0x9b77 +0xfc67 0x9ba6 +0xfc68 0x9bac +0xfc69 0x9bb1 +0xfc6a 0x29ddb +0xfc6b 0x29e3d +0xfc6c 0x9bb2 +0xfc6d 0x9bb8 +0xfc6e 0x9bbe +0xfc6f 0x9bc7 +0xfc70 0x9bf3 +0xfc71 0x9bd8 +0xfc72 0x9bdd +0xfc73 0x9be7 +0xfc74 0x9bea +0xfc75 0x9beb +0xfc76 0x9bef +0xfc77 0x9bee +0xfc78 0x29e15 +0xfc79 0x9bfa +0xfc7a 0x29e8a +0xfc7b 0x9bf7 +0xfc7c 0x29e49 +0xfc7d 0x9c16 +0xfc7e 0x9c18 +0xfc80 0x9c19 +0xfc81 0x9c1a +0xfc82 0x9c1d +0xfc83 0x9c22 +0xfc84 0x9c27 +0xfc85 0x9c29 +0xfc86 0x9c2a +0xfc87 0x29ec4 +0xfc88 0x9c31 +0xfc89 0x9c36 +0xfc8a 0x9c37 +0xfc8b 0x9c45 +0xfc8c 0x9c5c +0xfc8d 0x29ee9 +0xfc8e 0x9c49 +0xfc8f 0x9c4a +0xfc90 0x29edb +0xfc91 0x9c54 +0xfc92 0x9c58 +0xfc93 0x9c5b +0xfc94 0x9c5d +0xfc95 0x9c5f +0xfc96 0x9c69 +0xfc97 0x9c6a +0xfc98 0x9c6b +0xfc99 0x9c6d +0xfc9a 0x9c6e +0xfc9b 0x9c70 +0xfc9c 0x9c72 +0xfc9d 0x9c75 +0xfc9e 0x9c7a +0xfc9f 0x9ce6 +0xfca0 0x9cf2 +0xfca1 0x9d0b +0xfca2 0x9d02 +0xfca3 0x29fce +0xfca4 0x9d11 +0xfca5 0x9d17 +0xfca6 0x9d18 +0xfca7 0x2a02f +0xfca8 0x4cc4 +0xfca9 0x2a01a +0xfcaa 0x9d32 +0xfcab 0x4cd1 +0xfcac 0x9d42 +0xfcad 0x9d4a +0xfcae 0x9d5f +0xfcaf 0x9d62 +0xfcb0 0x2a0f9 +0xfcb1 0x9d69 +0xfcb2 0x9d6b +0xfcb3 0x2a082 +0xfcb4 0x9d73 +0xfcb5 0x9d76 +0xfcb6 0x9d77 +0xfcb7 0x9d7e +0xfcb8 0x9d84 +0xfcb9 0x9d8d +0xfcba 0x9d99 +0xfcbb 0x9da1 +0xfcbc 0x9dbf +0xfcbd 0x9db5 +0xfcbe 0x9db9 +0xfcbf 0x9dbd +0xfcc0 0x9dc3 +0xfcc1 0x9dc7 +0xfcc2 0x9dc9 +0xfcc3 0x9dd6 +0xfcc4 0x9dda +0xfcc5 0x9ddf +0xfcc6 0x9de0 +0xfcc7 0x9de3 +0xfcc8 0x9df4 +0xfcc9 0x4d07 +0xfcca 0x9e0a +0xfccb 0x9e02 +0xfccc 0x9e0d +0xfccd 0x9e19 +0xfcce 0x9e1c +0xfccf 0x9e1d +0xfcd0 0x9e7b +0xfcd1 0x22218 +0xfcd2 0x9e80 +0xfcd3 0x9e85 +0xfcd4 0x9e9b +0xfcd5 0x9ea8 +0xfcd6 0x2a38c +0xfcd7 0x9ebd +0xfcd8 0x2a437 +0xfcd9 0x9edf +0xfcda 0x9ee7 +0xfcdb 0x9eee +0xfcdc 0x9eff +0xfcdd 0x9f02 +0xfcde 0x4d77 +0xfcdf 0x9f03 +0xfce0 0x9f17 +0xfce1 0x9f19 +0xfce2 0x9f2f +0xfce3 0x9f37 +0xfce4 0x9f3a +0xfce5 0x9f3d +0xfce6 0x9f41 +0xfce7 0x9f45 +0xfce8 0x9f46 +0xfce9 0x9f53 +0xfcea 0x9f55 +0xfceb 0x9f58 +0xfcec 0x2a5f1 +0xfced 0x9f5d +0xfcee 0x2a602 +0xfcef 0x9f69 +0xfcf0 0x2a61a +0xfcf1 0x9f6d +0xfcf2 0x9f70 +0xfcf3 0x9f75 +0xfcf4 0x2a6b2 diff --git a/locale/cups_es.po b/locale/cups_es.po index 91afa2d61..4340ecfa4 100644 --- a/locale/cups_es.po +++ b/locale/cups_es.po @@ -2991,7 +2991,7 @@ msgstr "INFO: Impresora ocupada; reintento en 5 segundos...\n" #, c-format msgid "INFO: Printer does not support IPP/%d.%d, trying IPP/1.0...\n" -msgstr "" +msgstr "INFO: La impresora no es compatible con IPP/%d.%d, probando IPP/1.0...\n" msgid "INFO: Printer is busy; will retry in 5 seconds...\n" msgstr "INFO: La impresora está ocupada; reintento en 5 segundos...\n" @@ -5622,7 +5622,3 @@ msgstr "sin título" msgid "variable-bindings uses indefinite length" msgstr "variable-bindings usa una longitud indefinida" - -#~ msgid "INFO: Printer does not support IPP/1.1, trying IPP/1.0...\n" -#~ msgstr "" -#~ "INFO: La impresora no es compatible con IPP/1.1; probando IPP/1.0...\n" diff --git a/scheduler/auth.c b/scheduler/auth.c index b3b93d34f..cc2f9a412 100644 --- a/scheduler/auth.c +++ b/scheduler/auth.c @@ -3,7 +3,7 @@ * * Authorization routines for the Common UNIX Printing System (CUPS). * - * Copyright 2007-2008 by Apple Inc. + * Copyright 2007-2009 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * This file contains Kerberos support code, copyright 2006 by @@ -456,9 +456,8 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */ strlcpy(username, "_AUTHREF_", sizeof(username)); - if ((status = AuthorizationCopyInfo(con->authref, - kAuthorizationEnvironmentUsername, - &authinfo)) == 0) + if (!AuthorizationCopyInfo(con->authref, kAuthorizationEnvironmentUsername, + &authinfo)) { if (authinfo->count == 1 && authinfo->items[0].value && authinfo->items[0].valueLength >= 2) diff --git a/scheduler/client.c b/scheduler/client.c index 0f088bd18..1e2f55d8d 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -1245,6 +1245,9 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ * Protect against malicious users! */ + cupsdLogMessage(CUPSD_LOG_ERROR, + "Request for non-absolute resource \"%s\"!", con->uri); + if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE)) { cupsdCloseClient(con); @@ -1449,10 +1452,13 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ strlen(con->uri) == 11))) { /* - * GET can only be done to configuration files under + * GET can only be done to configuration files directly under * /admin/conf... */ + cupsdLogMessage(CUPSD_LOG_ERROR, + "Request for subdirectory \"%s\"!", con->uri); + if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE)) { cupsdCloseClient(con); @@ -1697,6 +1703,9 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ * /admin/conf... */ + cupsdLogMessage(CUPSD_LOG_ERROR, + "Request for subdirectory \"%s\"!", con->uri); + if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE)) { cupsdCloseClient(con); @@ -1851,6 +1860,9 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ * /admin/conf... */ + cupsdLogMessage(CUPSD_LOG_ERROR, + "Request for subdirectory \"%s\"!", con->uri); + if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE)) { cupsdCloseClient(con); diff --git a/scheduler/cupsfilter.c b/scheduler/cupsfilter.c index a4bea217b..9685857c0 100644 --- a/scheduler/cupsfilter.c +++ b/scheduler/cupsfilter.c @@ -3,7 +3,7 @@ * * CUPS filtering program for the Common UNIX Printing System (CUPS). * - * Copyright 2007-2008 by Apple Inc. + * Copyright 2007-2009 by Apple Inc. * Copyright 1997-2006 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -575,6 +575,8 @@ add_printer_filters( ppd_attr_t *ppdattr; /* Current prefilter */ + *prefilter_type = NULL; + if ((ppd = ppdOpenFile(ppdfile)) == NULL) { ppd_status_t status; /* PPD load status */ @@ -608,8 +610,6 @@ add_printer_filters( if (ppdattr->value) add_printer_filter(command, mime, *prefilter_type, ppdattr->value); } - else - *prefilter_type = NULL; return (printer_type); } diff --git a/scheduler/ipp.c b/scheduler/ipp.c index 9286a4f5e..783920c6e 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -10698,7 +10698,7 @@ set_printer_attrs(cupsd_client_t *con, /* I - Client connection */ cups_ptype_t dtype; /* Destination type (printer/class) */ cupsd_printer_t *printer; /* Printer/class */ ipp_attribute_t *attr; /* Printer attribute */ - int changed; /* Was anything changed? */ + int changed = 0; /* Was anything changed? */ cupsdLogMessage(CUPSD_LOG_DEBUG2, "set_printer_attrs(%p[%d], %s)", con, diff --git a/scheduler/log.c b/scheduler/log.c index 7bb52cc61..df4788581 100644 --- a/scheduler/log.c +++ b/scheduler/log.c @@ -123,7 +123,7 @@ cupsdGetDateTime(struct timeval *t, /* I - Time value or NULL for current */ else snprintf(s, sizeof(s), "[%02d/%s/%04d:%02d:%02d:%02d.%06d %+03ld%02ld]", date->tm_mday, months[date->tm_mon], 1900 + date->tm_year, - date->tm_hour, date->tm_min, date->tm_sec, t->tv_usec, + date->tm_hour, date->tm_min, date->tm_sec, (int)t->tv_usec, #ifdef HAVE_TM_GMTOFF date->tm_gmtoff / 3600, (date->tm_gmtoff / 60) % 60); #else diff --git a/scheduler/main.c b/scheduler/main.c index ed6c680d2..b7e61a17f 100644 --- a/scheduler/main.c +++ b/scheduler/main.c @@ -1912,7 +1912,7 @@ select_timeout(int fds) /* I - Number of descriptors returned */ } /* - * Check for any active jobs... + * Write out changes to configuration and state files... */ if (DirtyCleanTime && timeout > DirtyCleanTime) @@ -1925,15 +1925,20 @@ select_timeout(int fds) /* I - Number of descriptors returned */ * Check for any active jobs... */ - if (timeout > (now + 10) && ActiveJobs) + if (cupsArrayCount(ActiveJobs) > 0) { for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs); job; job = (cupsd_job_t *)cupsArrayNext(ActiveJobs)) - if (job->state_value <= IPP_JOB_PROCESSING) + if (job->state_value == IPP_JOB_HELD && job->hold_until < timeout) + { + timeout = job->hold_until; + why = "release held jobs"; + } + else if (job->state_value == IPP_JOB_PENDING && timeout > (now + 10)) { timeout = now + 10; - why = "process active jobs"; + why = "start pending jobs"; break; } } diff --git a/scheduler/printers.c b/scheduler/printers.c index 33ff540b8..b6d7bce61 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -3556,7 +3556,9 @@ add_printer_filter( program[1024]; /* Program/filter name */ int cost; /* Cost of filter */ mime_type_t *temptype; /* MIME type looping var */ - char filename[1024]; /* Full filter filename */ + char filename[1024], /* Full filter filename */ + *dirsep; /* Pointer to directory separator */ + struct stat fileinfo; /* File information */ /* @@ -3585,14 +3587,79 @@ add_printer_filter( else snprintf(filename, sizeof(filename), "%s/filter/%s", ServerBin, program); - if (access(filename, X_OK)) + if (stat(filename, &fileinfo)) { snprintf(p->state_message, sizeof(p->state_message), "Filter \"%s\" for printer \"%s\" not available: %s", - program, p->name, strerror(errno)); + filename, p->name, strerror(errno)); cupsdSetPrinterReasons(p, "+cups-missing-filter-error"); cupsdLogMessage(CUPSD_LOG_ERROR, "%s", p->state_message); + return; + } + + /* + * When running as root, do additional security checks... + */ + + if (!RunUser) + { + /* + * Only use filters that are owned by root and do not have world write + * permissions. + */ + + if (fileinfo.st_uid || (fileinfo.st_mode & S_IWOTH) != 0) + { + if (fileinfo.st_uid) + snprintf(p->state_message, sizeof(p->state_message), + "Filter \"%s\" for printer \"%s\" not owned by root", + filename, p->name); + else + snprintf(p->state_message, sizeof(p->state_message), + "Filter \"%s\" for printer \"%s\" has insecure permissions " + "(0%o)", filename, p->name, fileinfo.st_mode); + + cupsdSetPrinterReasons(p, "+cups-insecure-filter-error"); + + cupsdLogMessage(CUPSD_LOG_ERROR, "%s", p->state_message); + return; + } + + /* + * Similarly, check that the parent directory is also owned by root and + * does not have world write permissions. + */ + + if ((dirsep = strrchr(filename, '/')) != NULL) + *dirsep = '\0'; + + if (stat(filename, &fileinfo)) + { + snprintf(p->state_message, sizeof(p->state_message), + "Filter directory \"%s\" for printer \"%s\" not accessible: %s", + filename, p->name, strerror(errno)); + cupsdSetPrinterReasons(p, "+cups-missing-filter-error"); + + cupsdLogMessage(CUPSD_LOG_ERROR, "%s", p->state_message); + return; + } + else if (fileinfo.st_uid || (fileinfo.st_mode & S_IWOTH) != 0) + { + if (fileinfo.st_uid) + snprintf(p->state_message, sizeof(p->state_message), + "Filter directory \"%s\" for printer \"%s\" not owned by " + "root", filename, p->name); + else + snprintf(p->state_message, sizeof(p->state_message), + "Filter directory \"%s\" for printer \"%s\" has insecure " + "permissions (0%o)", filename, p->name, fileinfo.st_mode); + + cupsdSetPrinterReasons(p, "+cups-insecure-filter-error"); + + cupsdLogMessage(CUPSD_LOG_ERROR, "%s", p->state_message); + return; + } } } diff --git a/scheduler/process.c b/scheduler/process.c index 15ce14d5d..d4cedbe31 100644 --- a/scheduler/process.c +++ b/scheduler/process.c @@ -3,7 +3,7 @@ * * Process management routines for the Common UNIX Printing System (CUPS). * - * Copyright 2007-2008 by Apple Inc. + * Copyright 2007-2009 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -216,6 +216,8 @@ cupsdStartProcess( void *profile, /* I - Security profile to use */ int *pid) /* O - Process ID */ { + int user; /* Command UID */ + struct stat commandinfo; /* Command file information */ cupsd_proc_t *proc; /* New process record */ #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) struct sigaction action; /* POSIX signal handler */ @@ -231,13 +233,40 @@ cupsdStartProcess( "cupsdStartProcess(\"%s\", %p, %p, %d, %d, %d)", command, argv, envp, infd, outfd, errfd); - if (access(command, X_OK)) + if (RunUser) + user = RunUser; + else if (root) + user = 0; + else + user = User; + + if (stat(command, &commandinfo)) { cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to execute %s: %s", command, strerror(errno)); *pid = 0; return (0); } + else if (commandinfo.st_mode & S_IWOTH) + { + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to execute %s: insecure file permissions (0%o)", + command, commandinfo.st_mode); + *pid = 0; + errno = EPERM; + return (0); + } + else if ((commandinfo.st_uid != user || !(commandinfo.st_mode & S_IXUSR)) && + (commandinfo.st_gid != Group || !(commandinfo.st_mode & S_IXGRP)) && + !(commandinfo.st_mode & S_IXOTH)) + { + cupsdLogMessage(CUPSD_LOG_ERROR, + "Unable to execute %s: no execute permissions (0%o)", + command, commandinfo.st_mode); + *pid = 0; + errno = EPERM; + return (0); + } #if defined(__APPLE__) if (envp) diff --git a/systemv/lpstat.c b/systemv/lpstat.c index ed613869e..ab16b8fdc 100644 --- a/systemv/lpstat.c +++ b/systemv/lpstat.c @@ -1540,8 +1540,8 @@ show_printers(const char *printers, /* I - Destinations */ }; - DEBUG_printf(("show_printers(printer=\"%s\", num_dests=%d, dests=%p, " - "long_status=%d)\n", printer, num_dests, dests, long_status)); + DEBUG_printf(("show_printers(printers=\"%s\", num_dests=%d, dests=%p, " + "long_status=%d)\n", printers, num_dests, dests, long_status)); if ((root = getenv("CUPS_SERVERROOT")) == NULL) root = CUPS_SERVERROOT; |