Hello community, here is the log from the commit of package gpsd.3942 for openSUSE:13.1:Update checked in at 2015-08-04 09:43:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:13.1:Update/gpsd.3942 (Old) and /work/SRC/openSUSE:13.1:Update/.gpsd.3942.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gpsd.3942" Changes: -------- New Changes file: --- /dev/null 2015-07-22 21:25:44.928025004 +0200 +++ /work/SRC/openSUSE:13.1:Update/.gpsd.3942.new/gpsd.changes 2015-08-04 09:43:29.000000000 +0200 @@ -0,0 +1,299 @@ +------------------------------------------------------------------- +Fri Jul 24 19:23:08 UTC 2015 - astie...@suse.com + +- fix CVE-2013-2038: Denial of service by a remote attacker via + specially crafted packages [boo#818136] + adding CVE-2013-2038-malformed-packet-crash.patch + and CVE-2013-2038-ais_context-bitlen.patch + +------------------------------------------------------------------- +Wed Nov 20 13:45:12 UTC 2013 - s...@bugs.jan.ritzerfeld.org + +- Fixed typo in udev rule (bnc#848936) + +------------------------------------------------------------------- +Wed Oct 17 11:48:10 UTC 2012 - fcro...@suse.com + +- Fix build and adapt udev rule to new udev location. + +------------------------------------------------------------------- +Mon Apr 23 11:16:40 UTC 2012 - opens...@dstoecker.de + +- update to gpsd version 3.5 + +------------------------------------------------------------------- +Fri Dec 2 16:27:13 UTC 2011 - co...@suse.com + +- add automake as buildrequire to avoid implicit dependency + +------------------------------------------------------------------- +Sat Oct 15 12:21:55 UTC 2011 - andrea.turr...@gmail.com + +- fixed typos in gpsd.spec + +------------------------------------------------------------------- +Sat May 14 14:00:06 CEST 2011 - dmuel...@suse.de + +- move libgpsd.so.0 from the shlib subpackage to the main package, + as it fileconflicts with other versions of it. the library is + internal only anyway. + +------------------------------------------------------------------- +Sat Apr 30 18:11:34 UTC 2011 - j...@novell.com + +- gpsd-devel depends on python-gpsd too. + +------------------------------------------------------------------- +Mon Apr 4 13:10:41 UTC 2011 - de...@navlost.eu + +- Update to version 2.96: + + Bumped maximum channel count to 32 to accommodate GPS+GLONASS devices. + + API version bumped to 5, redesign finished (changes are documented + in the Client HOWTO). + + cgps now handles resize signals. + + Code can now link with uClibc for embedded use. + + Various bugs in the C++ binding have been fixed. + + gpxlogger can now daemonize and write to a specified log file. + + A gpsd client can now set any locale it likes, and JSON + will still be parsed using the C locale matching the daemon's. + + Clients are no longer required to define a gpsd_report() hook. + + gpsd no longer emits probe strings to unidentified USB devices at startup. + + JSON timestamps in TPV and SKY are now ISO8601 rather than seconds since + the Unix epoch; the library handles the older style backward-compatibly. + + GPGST sentences are now parsed for noise statistics when a device emits + them. + + AIS and RTCM2 JSON dumps have device fields. + + JSON reports now include 50bps subframe data if the device allows access to + it. + + gpsdecode can now dump NMEA GPS binary, and subframe data to JSON. + + The RTCM2 code now understands and analyzes RTCM2.3 messages 13, + 14, and 31, and has been checked against another analyzer. + + The ancient Sager dump format for RTCM2 is abolished in favor of a JSON + profile. + +------------------------------------------------------------------- +Tue Oct 26 13:20:00 UTC 2010 - jreu...@novell.com + +- Move udev rules from /etc/udev/rules.d to /lib/udev/rules.d +- Update to version 2.95: + + Rationalize clearing and generation of DOPs + + cgps now displays epx/epy rather than eph + + Speed is now always reported if our last two fixes were good + + Reading packets from UDP datagrams by specifying a listening + address and port is now supported + + AIS code now interprets message type 6 and 8 application IDs + correctly as a Designated Area Code and Functional ID pair + + gpspipe has a new -T option for setting the timestamp format + + xgpsspeed is completely rewritten in Python + + Qt bindings for the client library + + gpsdcode now uses | as a field separator in -c mode, as string + fields can contain commas + + Corrected error for reporting of AIS rate-of-turn fields +- Changes of version 2.94: + + Error-checking in the 50bps subframe code has been greatly + improved + + The Garmin GPS driver can now use libusb for device discovery + + The libgps library has been split apart; the service functions + used by the daemon now live in libgpsd + + Stronger checking for valid ephemeris before extracting the + leap-second offset +- Changes of version 2.93: + + Support for JSON dumping and parsing of AIS message types 25 and 26 + + Removing non-streaming mode from the Python exerciser + + Unsetting the appropriate in-use flag in the device array + + Change the libgps default from old protocol to JSON + + Add a close() method to the C++ binding + + Try to recover better from sporadic cases of false matches to + Trimble packet format from a SiRF binary datastream + + gps_poll() now returns -1 with errno not set when the gpsd + socket closes + + TPV now refrains from reporting fields the fix quality won't support + + gpsmon option for listing device types is now -L to -l can be used + to enable logging + + Documentation updates + + New POLL command brings back polling-mode operation + + gpsd no longer eats CPU when a device is unexpectedly uplugged + + Support for the TNT revolution is back (run mode only) + + There is now a gpsdfake diagnostic tool that fakes being gpsd shipping + arbitrary specified data to clients. + +------------------------------------------------------------------- +Sat Mar 27 02:43:46 CET 2010 - vu...@opensuse.org + +- Update to version 2.92: + + Fix a packaging error: the python library module was omitted + from the 2.91 tarball. + + Improve the json import test. +- Changes from version 2.91: + + We have support for NMEA GLONASS sentences, and a regression + test. + + Clients now get a DEVICE notification on every driver switch. + + It is possible to specify a TCP/IP AIS feed such as AISHub as a + data source. + + Serious bitrot in the NTRIP support has been fixed - it was + probably nonfunctional for several releases before this. + + Fixed buggy display of satellite-used flags in cgps. + + xgps is replaced by a rewrite in Python that uses pygtk, + eliminating a dependency on Motif; also, it now displays AIS + information. + + Uniform treatment of display-unit defaulting and -u in xgps, + cgps, and lcdgps. + + Support for AIS message types 25 and 26. + + Support for IPv6. + + A numeric instability in the earth_distance() function + affecting track error modeling has been fixed. + + Old protocol has been removed from the daemon; the library + still speaks it. +- Drop openmotif, openmotif-devel BuildRequires. +- Add xorg-x11-devel, xorg-x11-libXpm-devel BuildRequires. +- Add gpsd-fix-python-install.patch to fix installation of the + python bindings. +- Add python-gtk Requires to gpsd-clients subpackage as xgps now + depends on it. +- Use a valid group for the devel subpackage. +- Do not manually strip executables: this will be done by the build + service. + +------------------------------------------------------------------- +Fri Feb 12 16:03:58 UTC 2010 - jreu...@novell.com + +- Add missing dependency to python-curses for devel package (bnc#574584) +- Add another Cyprus GPS USB id (bnc#574584) + +------------------------------------------------------------------- +Fri Dec 18 16:22:14 UTC 2009 - se...@opensuse.org + +- fix udev warnings "SYSFS is deprecated" + +------------------------------------------------------------------- +Tue Dec 8 16:51:54 UTC 2009 - jreu...@novell.com + +- Fix libgps subpackage requirements + +------------------------------------------------------------------- +Tue Dec 8 14:13:09 UTC 2009 - jreu...@novell.com + +- Upgrade to gpsd-2.90, from the upstream change log: + - GPSD-NG, the new JSON-based command protocol, is now deployed + - Detection of end of a fix-reporting cycle is now reliable + - Abandone gpsflash subproject + - Increase major version of shared library due to significant API change + - Add new driver for Motorola Oncore receivers + - gpsfake can now accept multiple logfiles, interleaving test sentences + from each. + - gpsd now accepts error estimates from the NMEA $GPGBS sentence. + - Fix potential core dump in C client handling of "K" responses + - Introduce major and minor API version symbols into the public interfaces + - The sirfmon utility is gone, replaced by gpsmon + - Fix an old error in NMEA parsing + - cgpxlogger has been merged into gpxlogger. + - Speed-setting commands now allow parity and stop-bit setting + - tcmdecode becomes gpsdecode and can now de-armor and dump AIDVM packets + - The clientlibrary now works correctly in locales where the decimal + separator is not a period. +- Typo in sirfmon / gpsmon has been fixed silently by upstream (#bnc513037) +- Make libgps and python modules subpackages + +------------------------------------------------------------------- ++++ 102 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:13.1:Update/.gpsd.3942.new/gpsd.changes New: ---- CVE-2013-2038-ais_context-bitlen.patch CVE-2013-2038-malformed-packet-crash.patch gpsd-3.5.tar.bz2 gpsd-fix-shebang.patch gpsd.changes gpsd.spec gpsd.xpm rules.gpsd sysconfig.gpsd udev.gpsd xgps.desktop xgpsspeed.desktop ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gpsd.spec ++++++ # # spec file for package gpsd # # Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %if %( echo `rpm -q --queryformat %%{version} udev` ) > 190 %define _udevdir /usr/lib/udev/ %else %define _udevdir /lib/udev/ %endif Name: gpsd Summary: Service daemon for mediating access to a GPS License: BSD-3-Clause Group: Hardware/Other Url: http://www.catb.org/gpsd/ Version: 3.5 Release: 0 %define libgps libgps20 %define libQgps libQgpsmm20 Requires: udev PreReq: coreutils %fillup_prereq BuildRequires: bluez-devel BuildRequires: chrpath BuildRequires: gcc-c++ BuildRequires: libcap-devel BuildRequires: libqt4-devel >= 4.5.3 BuildRequires: libusb-1_0-devel BuildRequires: ncurses-devel BuildRequires: python-devel BuildRequires: scons >= 2.0.1 BuildRequires: udev BuildRequires: update-desktop-files BuildRequires: xmlto BuildRequires: xorg-x11-devel BuildRequires: xorg-x11-libXpm-devel %if 0%{?suse_version} > 1020 BuildRequires: dbus-1-glib-devel BuildRequires: fdupes %endif Source: %{name}-%{version}.tar.bz2 Source1: rules.gpsd Source2: udev.gpsd Source3: sysconfig.gpsd Source4: gpsd.xpm Source5: xgps.desktop Source6: xgpsspeed.desktop Patch0: gpsd-fix-shebang.patch Patch1: CVE-2013-2038-ais_context-bitlen.patch Patch2: CVE-2013-2038-malformed-packet-crash.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?suse_version} > 1110 %else %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %endif %description gpsd is a service daemon that mediates access to a GPS sensor connected to the host computer by serial or USB interface, making its data on the location/course/velocity of the sensor available to be queried on TCP port 2947 of the host computer. With gpsd, multiple GPS client applications (such as navigational and wardriving software) can share access to a GPS without contention or loss of data. Also, gpsd responds to queries with a format that is substantially easier to parse than NMEA 0183. A client library is provided for applications. After installing this RPM, gpsd will automatically connect to USB GPSes when they are plugged in and requires no configuration. For serial GPSes, you will need to start gpsd by hand. Once connected, the daemon automatically discovers the correct baudrate, stop bits, and protocol. The daemon will be quiescent when there are no clients asking for location information, and copes gracefully when the GPS is unplugged and replugged. Authors: -------- Remco Treffkorn <re...@rvt.com> Derrick J. Brashear <sha...@dementia.org> Russ Nelson <nel...@crynwyr.com> Eric S. Raymond <e...@thyrsus.com> Gary E. Miller <g...@rellim.com> Jeff Francis <j...@gritch.org> Amaury Jacquot <sxp...@esitcom.org> Chris Kuethe <chris.kue...@gmail.com> Ville Nuorvala <vnuor...@tcs.hut.fi> %package devel Summary: Client libraries in C and Python for talking to a running gpsd or GPS Group: Development/Libraries/C and C++ Requires: %name = %version Requires: pkgconfig Requires: python-curses Requires: python-gpsd = %version %description devel This package provides C header files for the gpsd shared libraries that manage access to a GPS for applications and debugging tools. You will need to have gpsd installed for it to work. Authors: -------- Remco Treffkorn <re...@rvt.com> Derrick J. Brashear <sha...@dementia.org> Russ Nelson <nel...@crynwyr.com> Eric S. Raymond <e...@thyrsus.com> Gary E. Miller <g...@rellim.com> Jeff Francis <j...@gritch.org> Amaury Jacquot <sxp...@esitcom.org> Chris Kuethe <chris.kue...@gmail.com> Ville Nuorvala <vnuor...@tcs.hut.fi> %package -n %libgps Summary: Shared library for GPS applications Group: Development/Libraries/Python %description -n %libgps This package provides the shared library for gpsd and other GPS aware applications. Authors: -------- Remco Treffkorn <re...@rvt.com> Derrick J. Brashear <sha...@dementia.org> Russ Nelson <nel...@crynwyr.com> Eric S. Raymond <e...@thyrsus.com> Gary E. Miller <g...@rellim.com> Jeff Francis <j...@gritch.org> Amaury Jacquot <sxp...@esitcom.org> Chris Kuethe <chris.kue...@gmail.com> Ville Nuorvala <vnuor...@tcs.hut.fi> %package -n %libQgps Summary: Shared Qt library for GPS applications Group: Development/Libraries/Python %description -n %libQgps This package provides the shared Qt library for gpsd and other GPS aware applications. Authors: -------- Remco Treffkorn <re...@rvt.com> Derrick J. Brashear <sha...@dementia.org> Russ Nelson <nel...@crynwyr.com> Eric S. Raymond <e...@thyrsus.com> Gary E. Miller <g...@rellim.com> Jeff Francis <j...@gritch.org> Amaury Jacquot <sxp...@esitcom.org> Chris Kuethe <chris.kue...@gmail.com> Ville Nuorvala <vnuor...@tcs.hut.fi> %package -n python-gpsd Summary: Client libraries in C and Python for talking to a running gpsd or GPS Group: Development/Libraries/Python Requires: %name = %version %{py_requires} %description -n python-gpsd This package provides python modules and tools for the gpsd shared libraries. You will need to have gpsd installed for it to work. Authors: -------- Remco Treffkorn <re...@rvt.com> Derrick J. Brashear <sha...@dementia.org> Russ Nelson <nel...@crynwyr.com> Eric S. Raymond <e...@thyrsus.com> Gary E. Miller <g...@rellim.com> Jeff Francis <j...@gritch.org> Amaury Jacquot <sxp...@esitcom.org> Chris Kuethe <chris.kue...@gmail.com> Ville Nuorvala <vnuor...@tcs.hut.fi> %package clients Summary: Clients for gpsd with an X interface Group: Hardware/Other Requires: python-gtk %description clients xgps is a simple test client for gpsd with an X interface. It displays current GPS position/time/velocity information and (for GPSes that support the feature) the locations of accessible satellites. xgpsspeed is a speedometer that uses position information from the GPS. It accepts an -h option and optional argument as for gps, or a -v option to dump the package version and exit. Additionally, it accepts -rv (reverse video) and -nc (needle color) options. cgps resembles xgps, but without the pictorial satellite display. It can run on a serial terminal or terminal emulator. Authors: -------- Remco Treffkorn <re...@rvt.com> Derrick J. Brashear <sha...@dementia.org> Russ Nelson <nel...@crynwyr.com> Eric S. Raymond <e...@thyrsus.com> Gary E. Miller <g...@rellim.com> Jeff Francis <j...@gritch.org> Amaury Jacquot <sxp...@esitcom.org> Chris Kuethe <chris.kue...@gmail.com> Ville Nuorvala <vnuor...@tcs.hut.fi> %prep %setup -q %patch0 -p1 %patch1 -p1 %patch2 -p1 %build scons prefix=%{_prefix} libdir=%{_libdir} strip=False %install DESTDIR=%{buildroot} scons prefix=%{_prefix} libdir=%{_libdir} strip=False install install -d -m 755 %{buildroot}%{_udevdir} install -d -m 755 %{buildroot}%{_udevdir}/rules.d install -d -m 755 %{buildroot}/var/adm/fillup-templates install -d -m 755 %{buildroot}%{_datadir}/{applications,pixmaps} install -m 644 %{SOURCE1} %{buildroot}%{_udevdir}/rules.d/51-gpsd.rules install -m 755 %{SOURCE2} %{buildroot}%{_udevdir}/gpsd.sh install -m 644 %{SOURCE3} %{buildroot}/var/adm/fillup-templates if [ -f %{buildroot}%{python_sitearch}/*.egg-info ] ; then rm -f %{buildroot}%{python_sitearch}/*.egg-info fi chmod 755 %{buildroot}%{python_sitearch}/gps/gps.py # install desktop entries install -m 644 %{SOURCE4} %{buildroot}%{_datadir}/pixmaps/%{name}.xpm install -m 644 %{SOURCE5} %{buildroot}%{_datadir}/applications/ install -m 644 %{SOURCE6} %{buildroot}%{_datadir}/applications/ %suse_update_desktop_file xgpsspeed %suse_update_desktop_file xgps # save some space, create symlinks %if 0%{?suse_version} > 1020 %fdupes -s %buildroot %endif chrpath -r %{_libdir} %{buildroot}%{python_sitearch}/gps/*.so %clean rm -rf %{buildroot} %post /sbin/ldconfig %fillup_only -n gpsd %postun -p /sbin/ldconfig %post -n %libgps -p /sbin/ldconfig %postun -n %libgps -p /sbin/ldconfig %post -n %libQgps -p /sbin/ldconfig %postun -n %libQgps -p /sbin/ldconfig %files %defattr(-,root,root) %doc README INSTALL COPYING gpsd.php %{_mandir}/man?/gpsd.* %{_mandir}/man?/gpsdctl.* %{_mandir}/man?/gpsctl.* %{_udevdir}/gpsd.sh %{_udevdir}/rules.d/* %{_sbindir}/gpsd %{_sbindir}/gpsdctl %{_bindir}/gpsctl %{_libdir}/libgpsd.so.* /var/adm/fillup-templates/sysconfig.gpsd %files -n %libgps %defattr(-,root,root) %{_libdir}/libgps.so.* %files -n %libQgps %defattr(-,root,root) %{_libdir}/libQgpsmm.so.* %files devel %defattr(-,root,root) %doc README INSTALL COPYING TODO %{_mandir}/man?/gpsfake.* %{_mandir}/man?/gpscat.* %{_mandir}/man?/libQgps*.* %{_mandir}/man?/libgps*.* %{_mandir}/man?/srec.* %{_mandir}/man?/gpsdecode.* %{_mandir}/man?/gpsd_json.* %{_mandir}/man?/gpsprof.* %{_bindir}/gpsfake %{_bindir}/gpscat %{_bindir}/gpsdecode %{_bindir}/gpsprof %{_includedir}/gps.h %{_includedir}/libgpsmm.h %{_libdir}/libgps.so %{_libdir}/libgpsd.so %{_libdir}/libQgpsmm.so %{_libdir}/libQgpsmm.prl %{_libdir}/pkgconfig/libgps*.pc %{_libdir}/pkgconfig/Qgpsmm.pc %files -n python-gpsd %defattr(-,root,root) %{python_sitearch}/gps/ %files clients %defattr(-,root,root) %{_mandir}/man?/gps.* %{_mandir}/man?/gegps.* %{_mandir}/man?/cgps.* %{_mandir}/man?/lcdgps.1.gz %{_mandir}/man?/xgps.* %{_mandir}/man?/xgpsspeed.* %{_mandir}/man?/gpspipe.* %{_mandir}/man?/gpsmon.* %{_bindir}/gegps %{_bindir}/xgps %{_bindir}/xgpsspeed %{_bindir}/cgps %{_bindir}/lcdgps %{_bindir}/gpsmon %{_bindir}/gpspipe %if 0%{?suse_version} > 1020 %{_bindir}/gpxlogger %endif %{_datadir}/applications/*.desktop %{_datadir}/pixmaps/*.xpm %changelog ++++++ CVE-2013-2038-ais_context-bitlen.patch ++++++ --- a/driver_aivdm.c 2014-08-29 11:59:08.227512000 +0200 +++ b/driver_aivdm.c 2014-08-29 11:58:48.666163000 +0200 @@ -195,6 +195,10 @@ (1 << (7 - ais_context->bitlen % 8)); } ais_context->bitlen++; + if (ais_context->bitlen > sizeof(ais_context->bits)) { + gpsd_report(LOG_INF, "overlong AIVDM payload truncated.\n"); + return false; + } } /*@ +shiftnegative @*/ } ++++++ CVE-2013-2038-malformed-packet-crash.patch ++++++ --- a/packet.c 2014-08-29 12:00:31.405029000 +0200 +++ b/packet.c 2014-08-29 12:01:02.950602000 +0200 @@ -462,9 +462,8 @@ /* not strictly correct, but helps for interpreting logfiles */ lexer->state = NMEA_RECOGNIZED; else if (c == '$'){ - /* faster recovery from missing sentence trailers */ - lexer->state = NMEA_DOLLAR; - lexer->inbufptr += (n-1); + lexer->state = GROUND_STATE; + character_pushback(lexer); } else if (!isprint(c)) lexer->state = GROUND_STATE; break; ++++++ gpsd-fix-shebang.patch ++++++ diff -Nur gpsd-2.95.orig/gps/gps.py gpsd-2.95/gps/gps.py --- gpsd-2.95.orig/gps/gps.py 2010-06-09 00:44:50.000000000 +0200 +++ gpsd-2.95/gps/gps.py 2010-10-26 14:27:50.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python # -*- coding: utf-8 -*- # # This file is Copyright (c) 2010 by the GPSD project ++++++ gpsd.xpm ++++++ /* XPM */ static char *gpsd[] = { /* columns rows colors chars-per-pixel */ "105 126 256 2", " c #010103", ". c #0A0606", "X c #0C0B0B", "o c #090808", "O c #130C0C", "+ c #140D06", "@ c #1A1107", "# c #141414", "$ c #1C1C1C", "% c #1A1313", "& c #0F0F10", "* c #281907", "= c #231411", "- c #291614", "; c #391D18", ": c #361F09", "> c #322204", ", c #392707", "< c #3A2219", "1 c #2B220D", "2 c #232323", "3 c #2C2C2C", "4 c #282827", "5 c #333333", "6 c #3B3B3B", "7 c #2F3030", "8 c #1E1F20", "9 c #482B02", "0 c #4C3205", "q c #593705", "w c #48221B", "e c #57281F", "r c #583817", "t c #4F320F", "y c #663B02", "u c #733F01", "i c #693619", "p c #583A35", "a c #533127", "s c #682E23", "d c #773426", "f c #6A342A", "g c #401F19", "h c #554114", "j c #644502", "k c #6B4706", "l c #774901", "z c #795704", "x c #6E4C13", "c c #55463B", "v c #68453C", "b c #78453B", "n c #675339", "m c #714A27", "M c #77642A", "N c #7A6108", "B c #444444", "V c #4B4B4B", "C c #574A48", "Z c #535353", "A c #5C5B5B", "S c #585656", "D c #6A4B45", "F c #764C44", "G c #6A564A", "H c #78544A", "J c #675A56", "K c #775A57", "L c #76625D", "P c #746353", "I c #735966", "U c #5E6061", "Y c #656465", "T c #6C6B6B", "R c #6A6667", "E c #746D6C", "W c #7A6665", "Q c #7A706E", "! c #747474", "~ c #7C7C7C", "^ c #797776", "/ c #776F78", "( c #863626", ") c #8A3F32", "_ c #885903", "` c #975701", "' c #884E0B", "] c #896705", "[ c #966703", "{ c #9B7402", "} c #987808", "| c #9B7718", " . c #936B15", ".. c #AB7C02", "X. c #A57602", "o. c #AE7307", "O. c #864637", "+. c #974839", "@. c #925030", "#. c #AA5635", "$. c #AB5335", "%. c #AA7834", "&. c #AC7132", "*. c #806532", "=. c #C27802", "-. c #C1693B", ";. c #86544B", ":. c #935347", ">. c #845B53", ",. c #915A52", "<. c #8E4D42", "1. c #A5594F", "2. c #8A6857", "3. c #AA6658", "4. c #B96A4E", "5. c #976963", "6. c #98726B", "7. c #897C79", "8. c #8C6C71", "9. c #A06C62", "0. c #B56E6A", "q. c #8C5F66", "w. c #C97A48", "e. c #AC8201", "r. c #A98706", "t. c #B48B02", "y. c #BB8D02", "u. c #B58303", "i. c #BC9302", "p. c #B8970D", "a. c #A88818", "s. c #B49313", "d. c #A98226", "f. c #B98538", "g. c #AE9413", "h. c #C68A02", "j. c #CA9302", "k. c #CB9B02", "l. c #C49805", "z. c #D39C02", "x. c #D59904", "c. c #CB970B", "v. c #CBA207", "b. c #D3A301", "n. c #DAA401", "m. c #D5AA03", "M. c #DCAB01", "N. c #D8AA0C", "B. c #DCB706", "V. c #C4A513", "C. c #D6B414", "Z. c #E1AE01", "A. c #E0AD08", "S. c #E4B301", "D. c #E4BB02", "F. c #E7BA0A", "G. c #E9BA0A", "H. c #CC9830", "J. c #D2AA30", "K. c #E4B731", "L. c #EAC50B", "P. c #F2CC0B", "I. c #F6D912", "U. c #F0CE10", "Y. c #FBE216", "T. c #FDF723", "R. c #FEF836", "E. c #D6C414", "W. c #B5904E", "Q. c #84807F", "!. c #93857E", "~. c #A88C7C", "^. c #D28B49", "/. c #E8914F", "(. c #D68373", "). c #D28A7C", "_. c #D48778", "`. c #CF887A", "'. c #E0AC43", "]. c #FEFF46", "[. c #3A3BBD", "{. c #7B7988", "}. c #6969AB", "|. c #4548BB", " X c #3738C2", ".X c #5253C6", "XX c #6768C6", "oX c #7979CA", "OX c #7273CC", "+X c #81768A", "@X c #8979A1", "#X c #7F8181", "$X c #848484", "%X c #868989", "&X c #8A8B8B", "*X c #888786", "=X c #9C918D", "-X c #8A8B92", ";X c #8E9090", ":X c #939494", ">X c #9B9B9C", ",X c #979697", "<X c #93849B", "1X c #A98D87", "2X c #9091AF", "3X c #A3A3A3", "4X c #ABABAB", "5X c #A9A5A7", "6X c #BFAAA6", "7X c #BDADAA", "8X c #B8ABA8", "9X c #BCB0AE", "0X c #B4B5B5", "qX c #B9B3B2", "wX c #BBBBBB", "eX c #B3B7B8", "rX c #ABB0B1", "tX c #AF9E9B", "yX c #D18F82", "uX c #CC958A", "iX c #CC968B", "pX c #C79C94", "aX c #C99C93", "sX c #C29F99", "dX c #CB8E83", "fX c #C5A29C", "gX c #C8A098", "hX c #C1A9A5", "jX c #C1A6A1", "kX c #CEBEA7", "lX c #CAC2B3", "zX c #9999DA", "xX c #8A8BCF", "cX c #A4A7C9", "vX c #B0B1D3", "bX c #9B9CE1", "nX c #B4B5E7", "mX c #ADAEE6", "MX c #C0BFF5", "NX c #C4C4C4", "BX c #CCCCCC", "VX c #C8C7C5", "CX c #D3D3D3", "ZX c #DCDCDC", "AX c #D9D9D4", "SX c #F3EFDE", "DX c #C8C8F8", "FX c #E3E4E4", "GX c #EBEBEB", "HX c #E6E9EA", "JX c #F4F4F4", "KX c #FFFFFF", "LX c #F7F7F5", "PX c #F4F2EB", "IX c #DFE0DE", "UX c None", /* pixels */ "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX9.6.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX7.%X%XQ.6.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX$X%X%X%X$X0.0.0.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX7.$X%X%X:XvXxXxXtXUX9.3.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXuXfX6XpXUXUXUX3.7.9.0.@XoXcX5X$X%X$X6.3.UXaX0X9XhXpXyXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX).fX7XqXeXeX0X0X0XUXUXUXUXUXUX6.K 3.0.=X%X%X%X%X7.UX6XeX0X0X0XeX0XqX6XaXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXuX6XqXeX0X0X0X0XeXeXeXhXUXUXUXUXUXUXlXrX5.UX5.$X%X%X%X5.UXUXjXqX0XeX0X0X0X0XeXeXqXfX).UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXyX6X0XeX0X0X0XeXeXqX6XaXyXUXUXUXUXUXUXUXUX4.fX1XUXUXUX3.7.Q.UXUXUXUXUXUX).aX6XqXeX0X0X0X0XeXqXfX(.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXgXqXeX0X0X0XeX0X7XaX(.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX(.pX7X0XeX0X0X0X0X7XyXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXfX0X0X0X0X0X0X7XiXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXaX9XeX0X0X0XeX9XuXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXfX0X0X0X0X0X0XfXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX_.hX0X0X0X0XeX9X).UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXuXqX0X0X0X0XqXpXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXjX0X0X0X0X0XjXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXhXeX0X0X0X0XfXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX(.7XeX0X0X0XqXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX).qX0X0X0X0X7X(.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX( w - O O X O O - w d UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXuXqX0X0XeX(.UXUXUX:.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXiX0X0X0X0X0XgXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXs % X w UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXfX6XfXUXUX>.E ;XL UXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXpXeX0X0X0XqXyXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX; o e UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX,.L *X$X&X~ ~ UXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXaXeX0X0X0XqX(.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX; X X < UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+.Q $X;X$X~ :X%X&X;.UXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXuXeX0X0X0XqX(.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXs 6 S 5 X < UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX~ ~ &X%X:X~ $X&XQ UXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUX(.0X0X0X0X0X).UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO B ~ ! 6 o s UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXL :X$X~ &X%X:X~ #X+.UXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUX9X0X0X0XeXpXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXs 3 B B 3 o O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+.#X$X,X$X$X%X&X;XK UXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXaXeX0X0X0X9XUXUXUXUXUXUXUXUXG <.UXUXUXUXUXUXUXUXUXUXUXUXUXUX; s UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXQ #X*X*X,X~ *X*X7.UXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXqX0X0X0XeXyXUXUXUXUXUXUXUXb :X$XG UXUXUXUXUXUXUXUXUXUXUXUXUXO = UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX;.:X$X$X$X&X:X~ $X;.UXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXiXeX0X0X0X9XUXUXUXUXUXUXUX+.$X$X^ 3XY O.UXUXUXUXUXUXUXUXUXUXUXo X UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX^ $X,X$X*X$X&X:XW UXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUX7X0X0X0X0XgXUXUXUXUXUXUXUXJ :X%X&X^ :X%XD UXUXUXUXUXUXUXUXUX( UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXW %X$X*X,X$X%X~ %X+.UXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUX0X0X0X0XeX).UXUXUXUXUXUXD >X$X~ >X$X%X~ >XY +.UXUXUXUXUXUXUXd o X # X 2 X d UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+.&X*X&X~ &X*XE >.UXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUX).eX0X0X0X0XUXUXUXUXUXUX+.~ $X*X3XT :X:X~ *X%X#XO.UXUXUXUXUXUXs o # $ $ o $ 6 B 2 $ 3 o s UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXE $X;X~ ~ &X>.UXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXiXeX0X0X0X0XUXUXUXUXUXUXJ 3X$X*X~ ,X%X! 3X~ $XE UXUXUXUXUXUXUXs 2 Y T 3 $ X 5 ! ~ :X:X6 # # w UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX;.^ G *XFXKX1XUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXpXeX0X0X0X0XUXUXUXUXUXH >X! %X>X^ &X$X>X! &X&XO.UXUXUXUXUXUXUXs # Y %X>X^ 2 $ R &X>X0X0X~ 2 g UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX~.FXvX-Xq.UXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXpXeX0X0X0X0XUXUXUXUXO.^ %X&X:XT 3X*X~ :X&X%XD UXUXUXUXUXUXUXUXd 3 :XBXHXHX,XX V wXHXNX0XFXCXR o ; UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+.{.cXnXmX}.I UXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXiXeX0X0X0XeXyXUXUXUXR 3X! %X%X:X~ ~ 5X! &XE UXUXUXUXUXUXUXUXUXd A NXA A BXGX5 # wXKX>X# # T JXZX7 - UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX7.C UXUX<XzXXXxXOX}.UXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUX).eX0X0X0X0XfXUXUXK :X! ,X:X! :X*X&X! >X~ O.UXUXUXUXUXUXUXUXUX( 3X$Xo 6 Y GXZ X 2 2 BXGX3 4 V 0XKXR = UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX1XLX;XC UX5.zX.XoXoXbX8.UXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUX0X0X0X0X0X6XUXUXJ &X&X*X^ 5X^ $X>X$X#XF UXUXUXUXUXUXUXUXUXUX( o wXY 5 6 VXB o % # >XCX# $ B :XKX~ O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX8XKXBXA F D 2XXXXXDXDX7.UXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUX7X0X0X0XeXiXUXUXUXv ~ &X%X~ &X>XT ,XW UXUXUXUXUXUXUXUXUXUXUXUXo 4X*X $ !.t q k q G VX2 . # 5XKXR X UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX5XZXVXR B v / xX.XMXvX1.UXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUX7X0X0XjXUXUXUXUX:.#XT ,X~ *X~ >XT +.UXUXUXUXUXUXUXUXUXUXUXUX ~ CX7 : x { p.v.s. .W.n . B FXJX6 o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXb ! 0XNX! C UX1.cXnXnX+XUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX>XKXBX! $X,X^ $XH UXUXUXUXUXUXUXUXUXUXUXUXUX 5 BX=Xt k ] l.B.L.C.p.C.V.] M lXPX0XX UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX1XKXJX! D UXUX{.2X5X=XUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX:.q.R >XJXKXBXC J >XJ UXUXUXUXUXUXUXUXUXUXUXUXUXUXo o J m k [ i.B.L.U.U.I.Y.Y.U.C.C.J.M . d UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX1.ZXHXU +.UXUX,.AXKXZX;.:.K UXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUX<.2XnXDXDX2X-XCX!.UXUXD UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo . > q _ t.N.F.L.U.I.Y.R.T.Y.P.L.V.r., w UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX1X:Xv UXUXUXUXrXwX$X^ $X&X<.UXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUX{.nXDXDXbXnXvXU UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO * 9 l X.k.F.L.U.U.Y.R.R.T.I.B.a.a.p., = UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX6X7XaXUXUXUXUXUXUX<.T ~ :X*X$X&XW UXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXK }.XXzXbX[.xXvX;.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO * 0 _ u.N.F.L.U.I.R.].T.I.V.a.v.F.y.: o UXUXUXUXUXUXUXUXUXUXUXUXUXuX0X0X0XeX).UXUXUXUXK %X&X~ %X$X,X$X~ UXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXI XXOXoX.X.XmX8.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO + : z h.G.L.P.P.I.T.T.E.a.s.A.M.h.l + 2 # ; UXUXUXUXUXUXUXUXUXUXUXjX0X0X0X0X0XsXUXUXUXUX:.$X~ ,X%X$X$X*X:XH UXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUX,.zXzXXX XbX<XO.UXUXO.D p d UXUXUXUXUXUXUXUXUXUXUXUXUXUX= 1 t .N.F.L.L.L.C.g.g.N.n.u.[ M c X B R 6 X . UXUXUXUXUXUXUXUXUXiXqX0X0X0X0X0XeXpXUXUXUXUXUX~ $X*X~ ,X$X*X$X^ UXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUX+.cXnX|.OXcXV p p Z A U %X%X:.UXUXUXUXUXUXUXUXUXUXUXUXUX- V n k | s.V.V.V.V.N.A.j._ m L ^ ~ 5 $ T ~ 6 ; UXUXUXUXUXUXyX9XeX0X0X0X0X0X0XqXUXUXUXUXUXUXH ;X&X*X$X$X,X$X$X<.UXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUX;.{.cXmXmXW UXp S A &XZXKXHX,.UXUXUXUXUXUXUXUXUXUXUXUXUXO X Y ~ n _ h.G.P.G.M.k.o.l v ^ $X;X&XZ . V ^ B . o ( UXUXUXiX9XeX0X0X0X0X0X0XeX7XUXUXUXUXUXUXUXUX~ ~ :X%X&X~ *X:XW UXUXUX", "UXUXUXUXUXUXUXUXUXG L UX+.wXHX,X2X+XUXUXS A &XNXKXKX4XUXUXiXuX_.UXUXUXUXUXUXUXUXe o Y $X^ n k [ X.[ _ l i G ~ :XNXFXZX>X$ # 4 X a dXhXqXeX0X0X0X0X0X0X0X0XaXUXUXUXUXUXUXUXUXUXQ &X$X~ :X*X&X~ $XUXUXUX", "UXUXUXUXUXUXUXUXb ~ ,XR A CXKXKX:X) UXb Z 3XJX,XBXCX:.UX7XeXeXeXqXfX).UXUXUXUX( o o ~ :X~ ~ L c r r a D E $X3XZXKXKXKXJX*Xo o $ B E >X0X0X0X0X0X0X0X0X0X0XhXUXUXUXUXUXUXUXUXUXUXUX<.%X%X:X~ $X:X%X&X;.UXUX", "UXUXUXUXUXUXUXUX^ ,XT >X~ ! wXFX5.UXUXp ^ LXKXHX^ K UX(.eX0X0X0X0X0XeXqX7XgX1Xc $ X V FXAX:X{.$X~ ~ ^ ~ Q.%X0XGXKXKXKXKXKXFXA 5 Z R $X>X0X0X0X0X0X0X0X0X0X0X0X7X_.UXUXUXUXUXUXUXUXUXUXUXUXUX! ~ :X%X:X~ %X&XE UXUX", "UXUXUXUXUXUXUXJ %X$X>X~ ~ >XR J UXUXUXf 4XKXGX0XH f UX`.eX0X0X0X0X0X0X0X0X0X0X4X3X&X4XCXCX0X~ ! ! ! ! ^ *X0XZXFXFXZXCXBXVXwX0X4X0X0X0X0X0X0X0X0X0X0X0X0X0XhX_.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXK :X$X$X&X$X~ H UXUXUX", "UXUXUXUXUXUXb &X:X^ &X%X:X! ,X$XD UXUXUX8.=X5.UXUXUXUXUXqXeX0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X&XY A A T $X3X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0XqXgXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX~ $X%XL :.UXUXUXUXUX", "UXUXUXUXUXUX~ *X! 5X^ $X:X&X$X^ >XD UXUXUXUXUXUXUXUXUXUXUXuX6X0XeX0X0X0X0X0X0X0X0X0X0X0X0X0X0X>X&X:X3X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X4X,X! 4.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXL >.UXUXUXUXUXUXUXUX", "UXUXUXUXUXJ &X%X:X^ &X>XT ,X&X%XT UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXyXfXqX0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X4X3X%XY 5 # ; UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXb >X$X^ >X$X%X^ 3X$X^ :XF UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXW R $X>X4X0X0X0X0X0X0X0X0X4X0X0X0X0X0X0X0X0X0X0X0X0X0XwXwX3X! A 6 $ X s UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUX+.~ $X$X3XT &X:X~ $X*X>XG UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXX X # ^ FXZXAXCXVXNXNX0X>XwXwXwXwXwXwXNXNXVXBXCXZXFXFXBX^ o ( UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXJ >X$X*X~ :X&XT 3X$X$XE UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX% X ~ FXKXKXKXKXLXGXVX5XAXFXHXJXJXJXJXLXLXLXLXJXGXVX>XT % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXD >X! $X>X^ %X$X>X! *X;Xb UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXw $ ~ >XwXBXFXLXJXCX>X%X4XVXZXLXKXLXFXBXwX4X5X>X:X*X*X:X$ w UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXO.E &X:XT >X&X^ &X&X&XD UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo 4 ~ ~ ,XNXGXKXKXLXwX3XFXLXLXKXKXKXJXFXBX0X,X*X~ ~ ~ 3X,X# 4 3 o o ( UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXK $X:X$X~ 5X! *XQ UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX; 6 $X4XFXKXKXKXKXKXCXBXKXKXKXKXKXKXKXKXKXLXGXCX4X&X~ $X4XT # 5 5 # - UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXb ~ %X:X! :X$XO.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo # $ # T wXGXKXKXKXKXKXKXGXJXKXKXKXKXKXKXKXKXKXKXKXKXLXZX4X$X$X3X6 X 4 # d UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXJ :X$X$XD UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXe X B $ B NXLXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXJXNX&X:X&XX o 2 X = UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXv $XE UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX= 4 2 # wXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXLXCX,X5X6 o o $ ( UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUX+.+.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX X 5 o R KXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXZXBX$X 3 ! 5 $ # ; UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXw 4 $ # VXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXVX# Z %XA X 2 X UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO o 5 . R KXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXGX6 $ # o $ X d UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXs 2 2 # NXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXA # $ ; UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX% 3 X A LXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX%X # 4 % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXd o 3 X 0XKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX4X. X 3 o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX= # 2 5 GXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXNXX X 5 ( UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXs $ $ T KXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXCX# # 5 e UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX% $ $ >XKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXZX$ 2 3 ; UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXd $ $ X wXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXFX2 5 $ = UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX; $ 2 # CXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXIX2 o 6 X O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX- $ 5 $ AXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXZX$ # 6 . UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX- # B 2 AXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXBX# 6 2 X UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX; 5 5 NXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX0Xo X 6 S # X $ # o = UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXw + > > + o 5 0XKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX:XX 5 4 X o # 6 Z 5 o e UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX@.N } r.] > o R PXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXLXSXSXR 8 & 5 &X5 O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX%.t.k.b.k.X., o T GXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXPXW.d.J.a.1 3 ~ 4 O.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX4.} k.M.S.M.v.} 1 S ZXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXkX_ X.b.v.* 3 4 x J.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX .t.m.S.S.S.B.v.] @ 6 VXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXsXl e.m.l.* , c.S.K.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX^.f.%.&.&. ...v.S.S.S.S.S.B.i.k . 2 5XLXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXJX~.l e.m.v.> X .M.S.F./.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXw.d.r.t.t.t.t.l.b.Z.S.S.S.S.S.D.m.r., X ~ GXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXZX3X2.l ..m.m.z . + z k.M.S.F./.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXd.e.b.M.M.M.M.Z.S.S.S.S.S.S.S.S.B.v.] @ V CXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXJX4X#XH l ..m.M.y.k * @ @ * 0 [ l.M.S.S.A./.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX| i.M.S.S.S.S.S.S.S.S.S.S.S.S.S.D.B.t.h 5 VXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXGX:X~ P u X.n.M.k...[ [ [ o.u.k.M.S.S.S.S.'.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX| i.M.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.m.} * 3 CXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXGX:X~ P u X.b.S.M.j.....h.h.z.M.S.S.S.S.S.C./.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX%.i.M.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.l.z . S JXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXGX,X~ P u { b.S.S.M.z.z.z.n.Z.S.S.S.S.S.S.M.J.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX%.e.M.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.B.r., # CXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXLX5X~ G u [ z.S.S.S.S.Z.S.S.S.S.S.S.S.S.S.S.m.J.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX&.X.b.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.L.m.] @ $ AXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXBXY < y [ k.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.m.J.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX&.} b.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.D.i.j . 2 >XKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXwX8 * y [ k.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.M.N.H.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX-.{ b.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.m.{ h &XAXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXwX4 > y [ k.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.M.k.H.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX&.{ b.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.L.l. .lXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXLX>X$ . 9 j [ k.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.b.H.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX%.e.m.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.D...*.AXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXAXY X . 9 k { k.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.M.c.^.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX| i.M.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.L.b._ G CXKXKXKXKXKXKXKXKXKXKXKXKXKXZX*X2 @ 0 l { k.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.Z.n.c.^.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXf.e.b.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.D.B.X.q a 3XGXKXKXKXKXKXKXKXLXFX0XT 4 * 0 l { j.Z.S.S.S.S.S.S.S.S.S.S.S.Z.Z.M.n.z.H./.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXd.i.M.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.h._ , o 5 T ,X4X0X4X:X! V 4 o * q l [ h.M.S.S.S.S.S.S.S.S.S.M.n.b.k.l.H.^.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXd.i.m.Z.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.Z.j._ q + . o > q l [ y.n.S.S.S.S.S.S.S.S.m.k.y...f.^.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXf.r.i.k.b.m.M.M.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.M.j.[ q @ > q z ] t.n.Z.S.S.S.S.S.M.b.l.e.| w.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXW.d.a.r.t.y.l.k.b.m.M.Z.S.S.S.S.S.S.S.S.S.S.Z.n.h._ 0 @ o o o o . . o o o > 0 l ] e.z.Z.S.S.S.S.M.b.y.X.%.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX^.^.%.| ] [ X.t.l.k.b.n.M.Z.Z.Z.Z.Z.M.n.x.o.l , + - e d UXUXUXUXUXUXUXUXUXUXUX( d s e < , 9 k z { y.z.n.M.M.n.k.e.] %.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX#.' x z _ [ X.u.h.x.x.x.x.x.h.=.` y t +.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO., j z ] { e.t.y.y.u.{ z #.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX$.@.i q y l ` o.=.=.=.o.` u q $.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX, 0 k z z ] ] ] ] z x #.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX$.m t q l ' ` ` ' y q #.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXd > 9 q j j j j j x $.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX@.m y q y q i #.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXm , , 9 9 0 r @.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX#.@.#.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX@.@.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX", "UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX" }; ++++++ rules.gpsd ++++++ SUBSYSTEM != "tty", GOTO="gpsd_end" ACTION != "remove", GOTO="gpsd_add" KERNEL=="ttyUSB*", RUN="gpsd.sh" LABEL="gpsd_add" ACTION != "add", GOTO="gpsd_end" # "Prolific Technology 2303 (commonly in tandem with SiRF chips)" KERNEL=="ttyUSB*", ATTR{idVendor}=="067b", ATTR{idProduct}=="2303", RUN="gpsd.sh" # "FTDI 8U232AM" KERNEL=="ttyUSB*", ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", RUN="gpsd.sh" # "Cypress M8/CY7C64013 (DeLorme uses these)" KERNEL=="ttyUSB*", ATTR{idVendor}=="1163", ATTR{idProduct}=="0100", RUN="gpsd.sh" KERNEL=="ttyUSB*", ATTR{idVendor}=="1163", ATTR{idProduct}=="0200", RUN="gpsd.sh" # "PS-360 OEM (Microsoft GPS sold with Street and Trips 2005)" KERNEL=="ttyUSB*", ATTR{idVendor}=="067b", ATTR{idProduct}=="aaa0", RUN="gpsd.sh" # SiRF Star III 20ch Gmouse GPS (a.k.a Cygnal Integrated Products, Inc.) KERNEL=="ttyUSB*", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea60", RUN="gpsd.sh" LABEL="gpsd_end" ++++++ sysconfig.gpsd ++++++ ## Path: Hardware/GPS ## Description: GPS Daemon ## Type: yesno ## Default: no # # Whether or not to start gpsd automatically on plugin event # GPSD_STARTBYUDEV="no" ## Type: integer ## Default: 2947 # # Use different port for the daemon # GPSD_PORT= ## Type: string ## Default: "" # # Further options to gpsd # GPSD_OPTIONS="" ++++++ udev.gpsd ++++++ #!/bin/bash CTRL_SOCK="/var/run/gpsd.socket" DEV_NAME="/var/run/gpsd.device" . /etc/sysconfig/gpsd if [ "$GPSD_STARTBYUDEV" != "yes" ]; then exit 1 fi if [ "${ACTION}" = "remove" ]; then GPSD_PID=$(pidof gpsd) if [ -z "$GPSD_PID" ]; then echo "Can't find gpsd!" else echo "Remove gpsd from pid: ${GPSD_PID}" TTYDEV="/dev/$(basename $DEVPATH)" TTYDEV_SAVE=$(cat ${DEV_NAME}) if [ "${TTYDEV}" = "${TTYDEV_SAVE}" ]; then # send TERM signal kill -15 ${GPSD_PID} rm -f ${DEV_NAME} fi fi else case "$DEVPATH" in *tty*) TTYDEV="/dev/$(basename $DEVPATH)" options="-F $CTRL_SOCK $GPSD_OPTIONS" if [ -n "$GPSD_PORT" ]; then options="$options -S $GPSD_PORT" else GPSD_PORT=2947 fi echo "Action '${ACTION}' Launch gpsd to $TTYDEV with $options" /usr/sbin/gpsd $options ${TTYDEV} echo "${TTYDEV}" > ${DEV_NAME} (sleep 1 && echo "F=$TTYDEV" >/dev/tcp/localhost/$GPSD_PORT) & ;; esac fi 2>&1 | /bin/logger -t gpsd ++++++ xgps.desktop ++++++ [Desktop Entry] Encoding=UTF-8 Name=xgps GenericName=GPS information Comment=Display GPS information from a gpsd daemon Exec=xgps Icon=gpsd Terminal=false Type=Application Categories=System;Monitor; ++++++ xgpsspeed.desktop ++++++ [Desktop Entry] Encoding=UTF-8 Name=xgpsspeed GenericName=GPS speedometer Comment=Display GPS speed from a gpsd daemon Exec=xgpsspeed Icon=gpsd Terminal=false Type=Application Categories=System;Monitor;