From cdd7c69452bbe065291ab2873c8bda4cc24fd6a0 Mon Sep 17 00:00:00 2001 From: "Carlos R. Mafra" Date: Sun, 12 Feb 2012 17:52:17 +0000 Subject: [PATCH] Add wmauda-0.8 --- wmauda-0.8/AUTHORS | 18 + wmauda-0.8/COPYING | 340 ++++++++++++++++++ wmauda-0.8/Makefile | 33 ++ wmauda-0.8/README | 9 + wmauda-0.8/config.h | 2 + wmauda-0.8/dock-master.xpm | 229 ++++++++++++ wmauda-0.8/wmauda.1 | 35 ++ wmauda-0.8/wmauda.c | 866 +++++++++++++++++++++++++++++++++++++++++++++ wmauda-0.8/wmauda.xpm | 186 ++++++++++ 9 files changed, 1718 insertions(+) create mode 100644 wmauda-0.8/AUTHORS create mode 100644 wmauda-0.8/COPYING create mode 100644 wmauda-0.8/Makefile create mode 100644 wmauda-0.8/README create mode 100644 wmauda-0.8/config.h create mode 100644 wmauda-0.8/dock-master.xpm create mode 100644 wmauda-0.8/wmauda.1 create mode 100644 wmauda-0.8/wmauda.c create mode 100644 wmauda-0.8/wmauda.xpm diff --git a/wmauda-0.8/AUTHORS b/wmauda-0.8/AUTHORS new file mode 100644 index 0000000..17a37e6 --- /dev/null +++ b/wmauda-0.8/AUTHORS @@ -0,0 +1,18 @@ +Michael Stewart + Current Maintainer + GTK2 Port + +Christian Birchinger + GTK2 Port + Audacious Port + Artwork + +George Averill + Artwork + +Peter Alm +Mikael Alm +Olle Hallnas +Thomas Nilsson +4Front Technologies + Original wmxmms source diff --git a/wmauda-0.8/COPYING b/wmauda-0.8/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/wmauda-0.8/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/wmauda-0.8/Makefile b/wmauda-0.8/Makefile new file mode 100644 index 0000000..5958f1b --- /dev/null +++ b/wmauda-0.8/Makefile @@ -0,0 +1,33 @@ +CC ?= gcc +CFLAGS ?= -g -pipe + +PREFIX ?= /usr/local + +INSTALL_DIR := $(PREFIX)/bin +PIXMAP_DIR := $(PREFIX)/share/pixmaps +MANPAGE_DIR := $(PREFIX)/share/man/man1 + +CFLAGS += $(shell pkg-config audacious --cflags) $(shell pkg-config dbus-1 --cflags) +LIBS := $(shell pkg-config audacious --libs) $(shell pkg-config audclient --libs) $(shell pkg-config dbus-1 --libs) + +CFLAGS += $(shell pkg-config gtk+-2.0 --cflags) +LIBS += $(shell pkg-config gtk+-2.0 --libs) + +OBJS = wmauda.o +HEADERS = config.h dock-master.xpm + +wmauda: $(OBJS) $(HEADERS) + $(CC) -o wmauda $(OBJS) $(CFLAGS) $(LIBS) + +all: wmauda + +clean: + rm -f *.o wmauda + +install: all + install -d $(DESTDIR)$(INSTALL_DIR) + install -d $(DESTDIR)$(PIXMAP_DIR) + install -d $(DESTDIR)$(MANPAGE_DIR) + install -m 0755 wmauda $(DESTDIR)$(INSTALL_DIR) + install -m 0644 wmauda.xpm $(DESTDIR)$(PIXMAP_DIR) + install -m 0644 wmauda.1 $(DESTDIR)$(MANPAGE_DIR) diff --git a/wmauda-0.8/README b/wmauda-0.8/README new file mode 100644 index 0000000..b2e6a09 --- /dev/null +++ b/wmauda-0.8/README @@ -0,0 +1,9 @@ +This is a port of wmxmms to GTK 2.x and Audacious. + +Just type 'make' to compile and 'make install' to install to /usr/local + +Michael Stewart +Christian Birchinger + + +WARNING: wmauda 0.5 or later require the new dbus interface of Audacious diff --git a/wmauda-0.8/config.h b/wmauda-0.8/config.h new file mode 100644 index 0000000..22ea9ba --- /dev/null +++ b/wmauda-0.8/config.h @@ -0,0 +1,2 @@ +#define DATA_DIR "/usr/share/pixmaps" +#define VERSION "0.6" diff --git a/wmauda-0.8/dock-master.xpm b/wmauda-0.8/dock-master.xpm new file mode 100644 index 0000000..50397a8 --- /dev/null +++ b/wmauda-0.8/dock-master.xpm @@ -0,0 +1,229 @@ +/* XPM */ +static char * dock_master_xpm[] = { +"160 82 144 2", +" c None", +". c #AEAAAE", +"+ c #86828E", +"@ c #000000", +"# c #FE0000", +"$ c #F80700", +"% c #F7F3FF", +"& c #F10D00", +"* c #EA1400", +"= c #E41A00", +"- c #DD2100", +"; c #D72700", +"> c #D02E00", +", c #CA3400", +"' c #C33B00", +") c #BD4100", +"! c #B64800", +"~ c #B04E00", +"{ c #A95500", +"] c #A35B00", +"^ c #9C6200", +"/ c #966800", +"( c #8F6F00", +"_ c #897500", +": c #827C00", +"< c #7C8200", +"[ c #758900", +"} c #6F8F00", +"| c #689600", +"1 c #629C00", +"2 c #5BA300", +"3 c #55A900", +"4 c #4EB000", +"5 c #48B600", +"6 c #41BD00", +"7 c #3BC300", +"8 c #34CA00", +"9 c #2ED000", +"0 c #27D700", +"a c #21DD00", +"b c #1AE400", +"c c #14EA00", +"d c #0DF100", +"e c #3C3C3C", +"f c #8D8D8D", +"g c #B1B1B1", +"h c #E4E4E4", +"i c #FFFFFF", +"j c #E0E0E0", +"k c #07F800", +"l c #191919", +"m c #929292", +"n c #E2E2E2", +"o c #FAFAFA", +"p c #151515", +"q c #040404", +"r c #707070", +"s c #D8D8D8", +"t c #F9F9F9", +"u c #D7D7D7", +"v c #6E6E6E", +"w c #EBEBEB", +"x c #838383", +"y c #050505", +"z c #00FE00", +"A c #282828", +"B c #E9E9E9", +"C c #F6F6F6", +"D c #DCDCDC", +"E c #F7F7F7", +"F c #222222", +"G c #020202", +"H c #ABABAB", +"I c #ADADAD", +"J c #EDEDED", +"K c #808080", +"L c #9A9A9A", +"M c #858585", +"N c #010101", +"O c #CACACA", +"P c #A8A8A8", +"Q c #0E0E0E", +"R c #C1C1C1", +"S c #5E5E5E", +"T c #383838", +"U c #656565", +"V c #777777", +"W c #353535", +"X c #828282", +"Y c #393939", +"Z c #101010", +"` c #AFAFAF", +" . c #2C2C2C", +".. c #F3F3F3", +"+. c #A7A7A7", +"@. c #424242", +"#. c #E8E8E8", +"$. c #0B0B0B", +"%. c #515151", +"&. c #7E7E7E", +"*. c #4A4A4A", +"=. c #232323", +"-. c #696969", +";. c #161616", +">. c #2B2B2B", +",. c #1D1D1D", +"'. c #2D2D2D", +"). c #0C0C0C", +"!. c #4C4C4C", +"~. c #F8F8F8", +"{. c #818181", +"]. c #414141", +"^. c #6A6A6A", +"/. c #444444", +"(. c #525252", +"_. c #545454", +":. c #585858", +"<. c #3D3D3D", +"[. c #242424", +"}. c #909090", +"|. c #080808", +"1. c #6D6D6D", +"2. c #C5C5C5", +"3. c #AEAEAE", +"4. c #070707", +"5. c #171717", +"6. c #B8B8B8", +"7. c #ACACAC", +"8. c #D0D0D0", +"9. c #272727", +"0. c #FDFDFD", +"a. c #AAAAAA", +"b. c #969696", +"c. c #FBFBFB", +"d. c #919191", +"e. c #747474", +"f. c #DADADA", +"g. c #727272", +"h. c #283C38", +"i. c #202020", +"j. c #034A40", +"k. c #22B2AE", +"l. c #027E72", +"m. c #203635", +" . . . . . . . . + @ . . . . . . . . + @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ # # # # # # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ $ $ $ $ $ $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" . @ @ % @ @ @ @ @ @ . @ % % @ % % @ @ @ @ @ @ % @ @ @ @ . @ @ @ % % @ % % @ . @ @ @ & & & & & & @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" . @ @ % % @ @ @ @ @ . @ % % @ % % @ @ @ @ @ @ % % @ @ @ . @ @ @ % % @ % % @ . @ @ @ * * * * * * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % % % @ @ @ @ . @ % % @ % % @ @ @ @ @ @ % % % @ @ . @ @ @ % % @ % % @ . @ @ @ = = = = = = @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % % @ @ @ @ @ . @ % % @ % % @ @ @ @ @ @ % % @ @ @ . @ @ @ % % @ % % @ . @ @ @ - - - - - - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % @ @ @ @ @ @ . @ % % @ % % @ @ @ @ @ @ % @ @ @ @ . @ @ @ % % @ % % @ . @ @ @ ; ; ; ; ; ; @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ > > > > > > @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ , , , , , , @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + . . . . . . . . @ + . . . . . . . . @ @ @ ' ' ' ' ' ' @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . . . . . . . . + @ . . . . . . . . + @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + @ @ @ ) ) ) ) ) ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ ! ! ! ! ! ! @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ ~ ~ ~ ~ ~ ~ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ % @ @ @ @ @ . @ % % % % % @ @ @ @ @ @ @ % @ @ @ . @ @ @ % % % % % @ . @ @ @ { { { { { { @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % % % @ @ @ @ . @ % % % % % @ @ @ @ @ @ % % % @ @ . @ @ @ % % % % % @ . @ @ @ ] ] ] ] ] ] @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ % % % % % @ @ @ . @ % % % % % @ @ @ @ @ % % % % % @ . @ @ @ % % % % % @ . @ @ @ ^ ^ ^ ^ ^ ^ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ % % % % % @ @ @ @ @ @ @ @ @ @ @ . @ @ @ % % % % % @ . @ @ @ / / / / / / @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ % % % % % @ @ @ . @ % % % % % @ @ @ @ @ % % % % % @ . @ @ @ % % % % % @ . @ @ @ ( ( ( ( ( ( @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ _ _ _ _ _ _ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ : : : : : : @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + . . . . . . . . @ + . . . . . . . . @ @ @ < < < < < < @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . . . . . . . . + @ . . . . . . . . + @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + @ @ @ [ [ [ [ [ [ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ } } } } } } @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ | | | | | | @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % @ @ % @ @ @ . @ @ % @ @ % @ @ @ @ @ @ % @ @ % @ . @ @ @ @ % @ @ % @ . @ @ @ 1 1 1 1 1 1 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % @ % % @ @ @ . @ @ % % @ % @ @ @ @ @ @ % @ % % @ . @ @ @ @ % % @ % @ . @ @ @ 2 2 2 2 2 2 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % % % % @ @ @ . @ @ % % % % @ @ @ @ @ @ % % % % @ . @ @ @ @ % % % % @ . @ @ @ 3 3 3 3 3 3 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % @ % % @ @ @ . @ @ % % @ % @ @ @ @ @ @ % @ % % @ . @ @ @ @ % % @ % @ . @ @ @ 4 4 4 4 4 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ % @ @ % @ @ @ . @ @ % @ @ % @ @ @ @ @ @ % @ @ % @ . @ @ @ @ % @ @ % @ . @ @ @ 5 5 5 5 5 5 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ 6 6 6 6 6 6 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . @ @ @ @ @ @ @ @ @ . @ @ @ 7 7 7 7 7 7 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ + . . . . . . . . @ + . . . . . . . . @ @ @ 8 8 8 8 8 8 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 9 9 9 9 9 9 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 0 0 0 0 0 0 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ a a a a a a @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ b b b b b b @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ c c c c c c @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ d d d d d d @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ e f g h i i j @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ k k k k k k @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ l m n o j f p @ @ q r s t u v e m i i i w x i i y l m n o j f p @ @ @ @ @ @ z z z z z z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ A B i C D E i h F G H i i i i i I J i i i K @ L i M B i C D E i h F @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ N O i P N @ Q g i R S i T U i V W i i o X Y Z @ ` i i i P N @ Q g i R @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ .i i ..+.@.@ e i i #.i $. .i %.y i i &.@ m *.@ ` i i i ..+.@.@ e i i =.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *.i i -.@ ;.@ >.i i i i ,.=.i '.).i i !.@ ~.{.@ ` i i i -.@ ;.@ >.i i ].@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ .i i ;.@ ^.@ /.i i i i '.N (.q G i i _.@ :.<.@ ` i i i ;.@ ^.@ /.i i [.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ N O i }.|.@.W 1.i R 2.i 3.4.5. .].i i 6.q @ @ @ 7.i 8.i }.|.@.W 1.i R @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 9.B i 0.i i i h F G 3.i i i i i a.3.i i i i i i D 9.B i 0.i i i h F @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ l b.h c.n d.;.@ @ q e.f.o f.g.q q e.f.o o f.g.Q @ l b.h c.n d.;.@ @ @ @ @ @ @ @ 6 6 6 6 6 6 6 6 6 @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6 @ @ 6 @ @ 6 @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6 @ 6 @ 6 @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h.h.h.h.h.h.h.h.h.@ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6 @ 6 @ 6 @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ i.i.i.i.i.i.i.i.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6 @ @ 6 @ @ 6 @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ 6 6 6 6 6 6 6 6 6 @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.", +"i.j.k.k.k.j.i.l.k.k.k.i.i.l.k.k.k.l.i.l.k.k.k.i.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.i.i.i.l.i.i.i.l.i.i.i.i.i.i.i.l.i.l.i.i.i.l.i.l.i.i.i.i.i.k.i.i.i.k.i.l.k.k.k.i.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.i.i.i.l.i.l.i.i.i.l.i.l.i.i.i.l.i.l.i.i.i.l.i.l.i.i.i.l.i.l.k.k.k.l.i.i.i.i.", +"i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.k.i.i.i.k.i.i.i.i.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.k.i.k.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.i.i.k.i.i.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.i.", +"i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.k.i.i.i.k.i.i.i.i.i.i.i.k.i.k.i.i.k.j.i.k.i.i.i.i.i.k.i.k.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.i.i.k.i.i.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.j.k.i.k.j.i.k.i.i.i.k.i.i.i.i.k.j.i.i.i.i.", +"i.l.k.k.k.l.i.l.k.k.k.i.i.l.i.i.i.i.i.l.i.i.i.l.i.l.k.k.k.i.i.l.k.k.k.i.i.l.j.k.k.l.i.l.k.k.k.l.i.i.i.l.i.i.i.i.i.i.i.l.i.l.k.k.j.i.i.l.i.i.i.i.i.l.i.i.i.l.i.l.i.i.i.l.i.l.i.i.i.l.i.l.k.k.k.l.i.l.k.i.i.l.i.l.k.k.k.i.i.l.k.k.k.l.i.i.i.l.i.i.i.l.i.i.i.l.i.l.i.i.i.l.i.l.i.i.i.l.i.i.j.k.j.i.i.l.k.k.k.l.i.i.j.k.j.i.i.i.i.i.", +"i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.k.i.i.i.i.i.i.i.k.i.k.i.i.k.j.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.k.i.k.i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.k.i.i.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.k.i.k.i.j.k.i.k.j.i.i.i.i.i.k.i.j.k.i.i.i.i.i.i.i.", +"i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.k.i.i.i.i.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.k.k.i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.k.i.i.i.k.i.i.i.k.i.k.i.j.k.i.i.k.k.i.k.k.i.k.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.i.i.i.i.i.", +"i.l.i.i.i.l.i.l.k.k.k.i.i.l.k.k.k.l.i.k.k.k.k.i.i.l.k.k.k.l.i.k.i.i.i.i.i.l.k.k.k.l.i.l.i.i.i.l.i.i.i.k.i.i.i.l.k.k.k.l.i.l.i.i.j.l.i.l.k.k.k.j.i.l.i.i.i.l.i.k.i.i.i.k.i.l.k.k.k.l.i.l.i.i.i.i.i.l.k.k.k.l.i.l.i.i.i.l.i.l.k.k.k.l.i.i.i.l.i.i.i.j.k.k.k.k.i.i.k.k.i.i.i.k.i.i.i.k.i.l.i.i.i.k.i.l.k.k.k.l.i.l.k.k.k.l.i.i.i.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i. ", +"i.i.k.k.k.i.i.i.i.i.i.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.i.i.i.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.m.k.k.i.i.i.i.i.i.k.i.i.i.i.k.i.i.i.i.i.k.i.i.i.k.k.i.@ k.i.k.@ @ @ k.i.@ k.@ @ k.i.@ k.@ k.@ i.l.k.k.k.l.i.i.i.k.k.i.i.i.l.k.k.l.i.i.i.i.i.i.i. ", +"i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.i.i.i.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.k.k.i.i.i.i.i.i.k.i.i.i.k.l.i.i.i.i.i.l.k.i.i.k.l.i.k.l.i.j.l.k.k.j.i.l.l.k.k.l.i.@ l.i.l.@ i.k.i.i.i.k.i.i.i.k.k.i.i.i.k.i.i.k.i.i.i.k.i.i.i. ", +"i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.i.i.k.i.i.i.i.i.i.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.k.l.i.i.i.i.i.l.k.i.i.i.k.i.i.i.i.i.i.i.k.i.i.i.i.l.k.i.i.k.k.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.k.k.i.i.i.k.i.i.k.i.i.i.k.i.i.i. ", +"i.l.i.i.i.l.i.i.i.i.i.l.i.l.k.k.k.l.i.i.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.l.k.k.k.l.i.i.i.i.i.l.i.j.k.k.k.j.i.l.k.k.k.l.i.l.k.k.k.l.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.k.l.i.i.i.k.i.i.i.i.i.i.i.k.i.i.i.i.k.@ i.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.i.k.l.i.i.i.k.l.i.i.i.i.k.k.i.i.i.i.l.i.i.i. ", +"i.k.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.i.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.k.i.i.i.i.k.i.i.i.i.i.i.i.k.i.i.i.l.k.i.i.i.l.k.k.k.l.i.l.i.i.i.l.i.l.i.i.i.l.i.i.i.k.i.i.i.i.i.k.i.i.i.i.l.k.i.k.i.i.i.k.i.i.i. ", +"i.k.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.i.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.k.i.k.i.i.i.k.i.i.i.i.i.k.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.l.l.i.i.m.k.k.i.i.i.i.i.i.i.i.i.i.k.l.i.i.i.i.k.l.i.i.i.i.i.l.k.i.i.l.k.@ l.k.i.k.i.i.i.k.i.k.i.i.i.k.i.k.i.i.i.k.i.i.i.l.i.i.i.i.i.l.i.i.i.i.k.i.k.i.i.i.i.k.i.i.i. ", +"i.i.k.k.k.i.i.i.i.i.i.k.i.l.k.k.k.l.i.l.k.k.k.l.i.i.i.i.i.l.i.l.k.k.k.l.i.l.k.k.k.l.i.i.i.i.i.l.i.l.k.k.k.l.i.l.k.k.k.l.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.k.k.i.i.i.k.k.i.i.i.i.i.i.i.i.i.i.k.i.i.i.i.i.i.k.i.i.i.i.i.k.i.i.i.k.i.i.k.k.i.l.i.i.i.l.i.l.k.k.k.l.i.j.k.k.k.k.i.i.i.k.i.i.i.i.i.k.i.i.i.i.l.k.i.k.i.i.i.i.i.i.i. ", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.k.l.i.i.i.i.i.i.i.i.i.i.k.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.@ i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i. "}; diff --git a/wmauda-0.8/wmauda.1 b/wmauda-0.8/wmauda.1 new file mode 100644 index 0000000..0d4553d --- /dev/null +++ b/wmauda-0.8/wmauda.1 @@ -0,0 +1,35 @@ +.TH WMAUDA 1 "12 Feb 2012" "Version 0.8" "WMAuda Manual Pages" +.SH NAME +WMAUDA \- a dockable Audacious control applet. +.SH SYNOPSIS +.B wmauda +[\-h] [\-\-help] [\-c \fI\fP] [\-\-command=\fI\fP] [\-i \fI\fP] +[\-\-icon=\fI\fP] [\-n] [\-\-single] [\-t] [\-\-title] [\-\-version] +.SH DESCRIPTION +\fIWMAUDA\fP is a dock applet for the Window Maker window manager. +From the applet you can start and control Audacious. + +.SH OPTIONS +wmauda accepts the following options: +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-c, \-\-command +Command to start Audacious (Default: audacious). +.TP +.B \-i, \-\-icon +Icon to show instead of the default one when Audacious is not running. The +icon must be in XPM format. +.TP +.B \-n, \-\-single +Start Audacious with only a single click (Default: Double click). +.TP +.B \-t, \-\-title +Show the song title when the mouse is in the wmauda window. +.TP +.B \-v, \-\-version +Print version number and exit. +.SH SEE ALSO +.BR audacious (1), +.BR wmaker (1), diff --git a/wmauda-0.8/wmauda.c b/wmauda-0.8/wmauda.c new file mode 100644 index 0000000..f2b83b0 --- /dev/null +++ b/wmauda-0.8/wmauda.c @@ -0,0 +1,866 @@ +/* wmauda - Dockapp for controlling Audacious + * + * Copyright (C) 2006 Michael Stewart + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "config.h" + +#include "dock-master.xpm" + +#include + +typedef struct +{ + int x, y, width, height, pressed_x, pressed_y, normal_x, normal_y; + gboolean focus, pressed; + void (*callback) (void); +} +Button; + +void action_play(void); +void action_pause(void); +void action_eject(void); +void action_prev(void); +void action_next(void); +void action_stop(void); + +Button buttons[] = +{ + {21, 32, 9, 11, 84, 0, 64, 0, FALSE, FALSE, action_play}, /* PLAY */ + {34, 32, 9, 11, 94, 0, 74, 0, FALSE, FALSE, action_pause}, /* PAUSE */ + {47, 32, 9, 11, 84, 11, 64, 11, FALSE, FALSE, action_eject}, /* EJECT */ + {21, 46, 9, 11, 84, 22, 64, 22, FALSE, FALSE, action_prev}, /* PREV */ + {34, 46, 9, 11, 94, 22, 74, 22, FALSE, FALSE, action_next}, /* NEXT */ + {47, 46, 9, 11, 94, 11, 74, 11, FALSE, FALSE, action_stop}, /* STOP */ +}; + +#define NUM_BUTTONS 6 + +GList *button_list; + +typedef struct +{ + unsigned char ascii; gint x, y; +} Charentry; + +Charentry chartable[] = +{ + { '-', 60, 73}, /* put here coordinates of characters */ + { '.', 72, 73}, /* in xmms-dock-master.xpm */ + { ',', 78, 73}, + { '\\', 84, 73}, + { '/', 90, 73}, + { '(', 96, 73}, + { ')', 102, 73}, + { '%', 108, 73}, + { 'Ä', 114, 73}, + { 'ä', 114, 73}, /* toupper doesn't convert umlauts */ + { 'Ö', 120, 73}, + { 'ö', 120, 73}, + { 'Ü', 126, 73}, + { 'ü', 126, 73}, + { '?', 132, 73}, + { '!', 138, 73}, + { '&', 144, 73}, + { ':', 150, 73}, + { ' ', 66, 73}, +}; +#define NUM_CHARS 19 + +#define VOLSLIDER_X 8 +#define VOLSLIDER_Y 17 +#define VOLSLIDER_WIDTH 7 + + +#define VOLSLIDER_HEIGHT 40 + +#define SEEKSLIDER_X 21 +#define SEEKSLIDER_Y 20 +#define SEEKSLIDER_WIDTH 30 +#define SEEKSLIDER_HEIGHT 7 +#define SEEKSLIDER_KNOB_WIDTH 3 +#define SEEKSLIDER_MAX (SEEKSLIDER_WIDTH - SEEKSLIDER_KNOB_WIDTH) + +#define SCROLLTEXT_X 5 +#define SCROLLTEXT_Y 6 +#define SCROLLTEXT_WIDTH 40 +#define SCROLLTEXT_HEIGHT 9 +#define SCROLLTEXT_CHARS 9 + +gboolean volslider_dragging = FALSE; +int volslider_pos = 0; +gboolean seekslider_visible = FALSE, seekslider_dragging = FALSE; +int seekslider_pos = -1, seekslider_drag_offset = 0; +gint scrollpos = 0; +int timeout_tag = 0; + +void init(void); + +GtkWidget *icon_win; +GdkPixmap *pixmap, *launch_pixmap; +GdkBitmap *mask, *launch_mask; +GdkGC *dock_gc; +GtkTooltips *tooltips = NULL; + +char *xmms_cmd = "audacious"; +gboolean xmms_running = FALSE; + +gboolean has_geometry = FALSE, single_click = FALSE, song_title = FALSE; +char *icon_name = NULL; +int win_x, win_y; + +DBusGProxy *dbus_proxy = NULL; +static DBusGConnection *connection = NULL; + +GtkTargetEntry drop_types[] = +{ + {"text/plain", 0, 1} +}; + +void action_play(void) +{ + audacious_remote_play(dbus_proxy); +} + +void action_pause(void) +{ + audacious_remote_pause(dbus_proxy); +} + +void action_eject(void) +{ + audacious_remote_playlist_clear(dbus_proxy); + audacious_remote_stop(dbus_proxy); +} + +void action_prev(void) +{ + audacious_remote_playlist_prev(dbus_proxy); +} + +void action_next(void) +{ + audacious_remote_playlist_next(dbus_proxy); +} + +void action_stop(void) +{ + audacious_remote_stop(dbus_proxy); +} + +gboolean inside_region(int mx, int my, int x, int y, int w, int h) +{ + if ((mx >= x && mx < x + w) && (my >= y && my < y + h)) + return TRUE; + return FALSE; +} + +void real_draw_button(GdkWindow *w, Button *button) +{ + + if (button->pressed) + gdk_draw_pixmap(w, dock_gc, pixmap, + button->pressed_x, button->pressed_y, + button->x, button->y, + button->width, button->height); + else + gdk_draw_pixmap(w, dock_gc, pixmap, + button->normal_x, button->normal_y, + button->x, button->y, + button->width, button->height); +} + +void draw_button(Button *button) +{ + real_draw_button(icon_win->window, button); +} + +void draw_buttons(GList *list) +{ + for (; list; list = g_list_next(list)) + draw_button(list->data); +} + +void real_draw_volslider(GdkWindow *w) +{ + gdk_draw_pixmap(w, dock_gc, pixmap, 112, 1, VOLSLIDER_X, VOLSLIDER_Y, + VOLSLIDER_WIDTH, VOLSLIDER_HEIGHT); + gdk_draw_pixmap(w, dock_gc, pixmap, 106, + 1 + VOLSLIDER_HEIGHT - volslider_pos, + VOLSLIDER_X, + VOLSLIDER_Y + VOLSLIDER_HEIGHT - volslider_pos, + VOLSLIDER_WIDTH, volslider_pos); +} + +void draw_volslider(void) +{ + real_draw_volslider(icon_win->window); +} + +void real_draw_seekslider(GdkWindow *w) +{ + int slider_x; + + if (seekslider_visible) + { + gdk_draw_pixmap(w, dock_gc, pixmap, 66, 54, + SEEKSLIDER_X, SEEKSLIDER_Y, 35, 10); + if (seekslider_pos < SEEKSLIDER_MAX / 3) + slider_x = 108; + else if (seekslider_pos < (SEEKSLIDER_MAX * 2) / 3) + slider_x = 111; + else + slider_x = 114; + gdk_draw_pixmap(w, dock_gc, pixmap, slider_x, 48, + SEEKSLIDER_X + seekslider_pos, + SEEKSLIDER_Y, 3, SEEKSLIDER_HEIGHT); + } + else + gdk_draw_pixmap(w, dock_gc, pixmap, 66, 39, + SEEKSLIDER_X, SEEKSLIDER_Y, 35, 10); +} + +void draw_seekslider(void) +{ + real_draw_seekslider(icon_win->window); +} + +void real_draw_scrolltext(GdkWindow * w) +{ + /* get titlestring */ + gint pl_pos = audacious_remote_get_playlist_pos(dbus_proxy); + + if (pl_pos != -1) + { + char *title = audacious_remote_get_playlist_title(dbus_proxy, pl_pos); + if (title) + { + /* render text */ + gint i = 0, c = 0, pos = 0, dest = 0; + + for (i=0; i= 0) + c = toupper(title[pos]); + else + c = ' '; + + dest = SCROLLTEXT_X + (i * 6 - (scrollpos % 6)); + + if (c >= 'A' && c <= 'Z') + { + x = (c-'A')*6; + y = 64; + } + else if (c >= '0' && c <= '9') + x = (c-'0')*6; + else + { + int i = 0; + for (i=0; iwindow); +} + +void redraw_window(void) +{ + if (xmms_running) + { + gdk_draw_pixmap(icon_win->window, dock_gc, pixmap, + 0, 0, 0, 0, 64, 64); + draw_buttons(button_list); + draw_volslider(); + draw_seekslider(); + draw_scrolltext(); + } + else + { + gdk_draw_pixmap(icon_win->window, dock_gc, launch_pixmap, + 0, 0, 0, 0, 64, 64); + } +} + +void expose_cb(GtkWidget *w, GdkEventExpose *event, gpointer data) +{ + redraw_window(); +} + +void wheel_scroll_cb(GtkWidget *w, GdkEventScroll *event) +{ + if (xmms_running) + { + if (event->direction == GDK_SCROLL_UP || event->direction == GDK_SCROLL_DOWN) + { + if (event->direction == GDK_SCROLL_UP) + volslider_pos += 3; + else + volslider_pos -= 3; + if (volslider_pos < 0) + volslider_pos = 0; + if (volslider_pos > VOLSLIDER_HEIGHT) + volslider_pos = VOLSLIDER_HEIGHT; + audacious_remote_set_main_volume(dbus_proxy, (volslider_pos * 100) / VOLSLIDER_HEIGHT); + draw_volslider(); + } + } +} +void button_press_cb(GtkWidget *w, GdkEventButton *event, gpointer data) +{ + GList *node; + Button *btn; + int pos; + char *cmd; + + if (xmms_running) + { + if ((event->button == 2) || (event->button == 3)) + { + if(audacious_remote_is_main_win(dbus_proxy)) + audacious_remote_main_win_toggle(dbus_proxy, FALSE); + else + audacious_remote_main_win_toggle(dbus_proxy, TRUE); + } + } + + if (event->button != 1) + return; + if (xmms_running) + { + for (node = button_list; node; node = g_list_next(node)) + { + btn = node->data; + if (inside_region(event->x, event->y, btn->x, btn->y, btn->width, btn->height)) + { + btn->focus = TRUE; + btn->pressed = TRUE; + draw_button(btn); + } + } + if (inside_region(event->x, event->y, VOLSLIDER_X, VOLSLIDER_Y, VOLSLIDER_WIDTH, VOLSLIDER_HEIGHT)) + { + volslider_pos = VOLSLIDER_HEIGHT - (event->y - VOLSLIDER_Y); + audacious_remote_set_main_volume(dbus_proxy, (volslider_pos * 100) / VOLSLIDER_HEIGHT); + draw_volslider(); + volslider_dragging = TRUE; + } + if (inside_region(event->x, event->y, SEEKSLIDER_X, SEEKSLIDER_Y, SEEKSLIDER_WIDTH, SEEKSLIDER_HEIGHT) && seekslider_visible) + { + pos = event->x - SEEKSLIDER_X; + + if (pos >= seekslider_pos && + pos < seekslider_pos + SEEKSLIDER_KNOB_WIDTH) + seekslider_drag_offset = pos - seekslider_pos; + else + { + seekslider_drag_offset = 1; + seekslider_pos = pos - seekslider_drag_offset; + if (seekslider_pos < 0) + seekslider_pos = 0; + if (seekslider_pos > SEEKSLIDER_MAX) + seekslider_pos = SEEKSLIDER_MAX; + } + draw_seekslider(); + seekslider_dragging = TRUE; + } + } + else if ((!single_click && event->type == GDK_2BUTTON_PRESS) || + (single_click && event->type == GDK_BUTTON_PRESS)) + { + cmd = g_strconcat(xmms_cmd, " &", NULL); + system(cmd); + g_free(cmd); + } +} + +void button_release_cb(GtkWidget *w, GdkEventButton *event, gpointer data) +{ + GList *node; + Button *btn; + int len; + + if (event->button != 1) + return; + + for (node = button_list; node; node = g_list_next(node)) + { + btn = node->data; + if (btn->pressed) + { + btn->focus = FALSE; + btn->pressed = FALSE; + draw_button(btn); + if (btn->callback) + btn->callback(); + } + } + volslider_dragging = FALSE; + if (seekslider_dragging) + { + len = audacious_remote_get_playlist_time(dbus_proxy, audacious_remote_get_playlist_pos(dbus_proxy)); + audacious_remote_jump_to_time(dbus_proxy, (seekslider_pos * len) / SEEKSLIDER_MAX); + seekslider_dragging = FALSE; + } + +} + +void motion_notify_cb(GtkWidget *w, GdkEventMotion *event, gpointer data) +{ + GList *node; + Button *btn; + gboolean inside; + + for (node = button_list; node; node = g_list_next(node)) + { + btn = node->data; + if (btn->focus) + { + inside = inside_region(event->x, event->y, + btn->x, btn->y, + btn->width, btn->height); + if ((inside && !btn->pressed) || + (!inside && btn->pressed)) + { + btn->pressed = inside; + draw_button(btn); + } + } + } + if (volslider_dragging) + { + volslider_pos = VOLSLIDER_HEIGHT - (event->y - VOLSLIDER_Y); + if (volslider_pos < 0) + volslider_pos = 0; + if (volslider_pos > VOLSLIDER_HEIGHT) + volslider_pos = VOLSLIDER_HEIGHT; + audacious_remote_set_main_volume(dbus_proxy, (volslider_pos * 100) / VOLSLIDER_HEIGHT); + draw_volslider(); + } + if (seekslider_dragging) + { + seekslider_pos = + event->x - SEEKSLIDER_X - seekslider_drag_offset; + if (seekslider_pos < 0) + seekslider_pos = 0; + if (seekslider_pos > SEEKSLIDER_MAX) + seekslider_pos = SEEKSLIDER_MAX; + draw_seekslider(); + } + +} + +void destroy_cb(GtkWidget *w, gpointer data) +{ + gtk_exit(0); +} + +static void update_tooltip(void) +{ + static int pl_pos = -1; + static char *filename; + int new_pos; + + if (!tooltips) + return; + + new_pos = audacious_remote_get_playlist_pos(dbus_proxy); + + if (new_pos == 0) + { + /* + * Need to do some extra checking, as we get 0 also on + * a empty playlist + */ + char *current = audacious_remote_get_playlist_file(dbus_proxy, 0); + if (!filename && current) + { + filename = current; + new_pos = -1; + } + else if (filename && !current) + { + g_free(filename); + filename = NULL; + new_pos = -1; + } + else if (filename && current && strcmp(filename, current)) + { + g_free(filename); + filename = current; + new_pos = -1; + } + } + + if (pl_pos != new_pos) + { + char *tip = NULL; + char *title = + audacious_remote_get_playlist_title(dbus_proxy, new_pos); + if (title) + { + tip = g_strdup_printf("%d. %s", new_pos+1, title); + g_free(title); + } + gtk_tooltips_set_tip(tooltips, icon_win, tip, NULL); + g_free(tip); + pl_pos = new_pos; + } +} + +int timeout_func(gpointer data) +{ + int new_pos, pos; + gboolean playing, running; + + running = audacious_remote_is_running(dbus_proxy); + + if (running) + { + if (!xmms_running) + { + gtk_widget_shape_combine_mask(icon_win, mask, 0, 0); + xmms_running = running; + redraw_window(); + } + if (!volslider_dragging) + { + new_pos = (audacious_remote_get_main_volume(dbus_proxy) * 40) / 100; + + if (new_pos < 0) + new_pos = 0; + if (new_pos > VOLSLIDER_HEIGHT) + new_pos = VOLSLIDER_HEIGHT; + + if (volslider_pos != new_pos) + { + volslider_pos = new_pos; + draw_volslider(); + } + } + + update_tooltip(); + draw_scrolltext(); + + playing = audacious_remote_is_playing(dbus_proxy); + if (!playing && seekslider_visible) + { + seekslider_visible = FALSE; + seekslider_dragging = FALSE; + seekslider_pos = -1; + draw_seekslider(); + } + else if (playing) + { + int len, p = audacious_remote_get_playlist_pos(dbus_proxy); + len = audacious_remote_get_playlist_time(dbus_proxy, p); + if (len == -1) + { + seekslider_visible = FALSE; + seekslider_dragging = FALSE; + seekslider_pos = -1; + draw_seekslider(); + } + else if (!seekslider_dragging) + { + seekslider_visible = TRUE; + pos = audacious_remote_get_output_time(dbus_proxy); + if (len != 0) + new_pos = (pos * SEEKSLIDER_MAX) / len; + else + new_pos = 0; + if (new_pos < 0) + new_pos = 0; + if (new_pos > SEEKSLIDER_MAX) + new_pos = SEEKSLIDER_MAX; + if (seekslider_pos != new_pos) + { + seekslider_pos = new_pos; + draw_seekslider(); + } + } + } + } + else + { + if (xmms_running) + { + if (tooltips != NULL) + gtk_tooltips_set_tip(tooltips, icon_win, NULL, NULL); + gtk_widget_shape_combine_mask(icon_win, launch_mask, 0, 0); + xmms_running = FALSE; + redraw_window(); + } + } + + return TRUE; +} + +void drag_data_received(GtkWidget *widget, GdkDragContext *context, + int x, int y, GtkSelectionData *selection_data, + guint info, guint time) +{ + if (selection_data->data) + { + char *url = selection_data->data; + audacious_remote_playlist_clear(dbus_proxy); + audacious_remote_playlist_add_url_string(dbus_proxy, url); + audacious_remote_play(dbus_proxy); + } +} + +static gboolean dbus_init(void) +{ + GError *error = NULL; + + connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error); + if (connection == NULL) + return FALSE; + + dbus_proxy = dbus_g_proxy_new_for_name(connection, AUDACIOUS_DBUS_SERVICE, + AUDACIOUS_DBUS_PATH, + AUDACIOUS_DBUS_INTERFACE); + if (dbus_proxy == NULL) + return FALSE; + + return TRUE; +} + +void init(void) +{ + GdkWindowAttr attr; + GdkColor bg_color; + GdkWindow *leader; + XWMHints hints; + int i, w, h; + GdkGC *mask_gc; + + for (i = 0; i < NUM_BUTTONS; i++) + button_list = g_list_append(button_list, &buttons[i]); + + if (song_title) + { + tooltips = gtk_tooltips_new(); + gtk_tooltips_set_delay(tooltips, 1000); + } + + icon_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_widget_set_app_paintable(icon_win, TRUE); + gtk_widget_set_uposition(icon_win, 0, 0); + gtk_widget_set_usize(icon_win, 64, 64); + gtk_widget_set_events(icon_win, + GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK); + gtk_signal_connect(GTK_OBJECT(icon_win), "expose_event", + GTK_SIGNAL_FUNC(expose_cb), NULL); + gtk_signal_connect(GTK_OBJECT(icon_win), "button_press_event", + GTK_SIGNAL_FUNC(button_press_cb), NULL); + gtk_signal_connect(GTK_OBJECT(icon_win), "scroll_event", + GTK_SIGNAL_FUNC(wheel_scroll_cb), NULL); + gtk_signal_connect(GTK_OBJECT(icon_win), "button_release_event", + GTK_SIGNAL_FUNC(button_release_cb), NULL); + gtk_signal_connect(GTK_OBJECT(icon_win), "motion_notify_event", + GTK_SIGNAL_FUNC(motion_notify_cb), NULL); + gtk_signal_connect(GTK_OBJECT(icon_win), "destroy", + GTK_SIGNAL_FUNC(destroy_cb), NULL); + gtk_drag_dest_set(icon_win, GTK_DEST_DEFAULT_ALL, drop_types, 1, + GDK_ACTION_COPY); + gtk_signal_connect(GTK_OBJECT(icon_win), "drag_data_received", + GTK_SIGNAL_FUNC(drag_data_received), NULL); + gtk_widget_realize(icon_win); + bg_color.red = 0; + bg_color.green = 0; + bg_color.blue = 0; + gdk_colormap_alloc_color(gdk_colormap_get_system(), + &bg_color, FALSE, TRUE); + gdk_window_set_background(icon_win->window, &bg_color); + gdk_window_clear(icon_win->window); + dock_gc = gdk_gc_new(icon_win->window); + + launch_pixmap = gdk_pixmap_new(icon_win->window, 64, 64, -1); + + launch_mask = gdk_pixmap_new(icon_win->window, 64, 64, 1); + mask_gc = gdk_gc_new(launch_mask); + bg_color.pixel = 0; + gdk_gc_set_foreground(mask_gc, &bg_color); + gdk_draw_rectangle(launch_mask, mask_gc, TRUE, 0, 0, -1, -1); + + if (!icon_name) + icon_name = g_strdup_printf("%s/wmauda.xpm", DATA_DIR); + pixmap = gdk_pixmap_create_from_xpm(icon_win->window, &mask, + NULL, icon_name); + if (!pixmap) + { + printf("ERROR: Couldn't find %s\n", icon_name); + g_free(icon_name); + gtk_exit(1); + } + g_free(icon_name); + gdk_window_get_size(pixmap, &w, &h); + if (w > 64) + w = 64; + if (h > 64) + h = 64; + gdk_draw_pixmap(launch_pixmap, dock_gc, pixmap, + 0, 0, 32 - (w / 2), 32 - (h / 2), w, h); + gdk_draw_pixmap(launch_mask, mask_gc, mask, + 0, 0, 32 - (w / 2), 32 - (h / 2), w, h); + gdk_gc_unref(mask_gc); + gdk_pixmap_unref(pixmap); + gdk_bitmap_unref(mask); + + gtk_widget_shape_combine_mask(icon_win, launch_mask, 0, 0); + + pixmap = gdk_pixmap_create_from_xpm_d(icon_win->window, + &mask, NULL, dock_master_xpm); + + attr.width = 64; + attr.height = 64; + attr.title = "wmauda"; + attr.event_mask = GDK_BUTTON_PRESS_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_HINT_MASK; + attr.wclass = GDK_INPUT_OUTPUT; + attr.visual = gdk_visual_get_system(); + attr.colormap = gdk_colormap_get_system(); + attr.wmclass_name = "wmauda"; + attr.wmclass_class = "wmauda"; + attr.window_type = GDK_WINDOW_TOPLEVEL; + + leader = gdk_window_new(NULL, &attr, GDK_WA_TITLE | GDK_WA_WMCLASS | GDK_WA_VISUAL | GDK_WA_COLORMAP); + + gdk_window_set_icon(leader, icon_win->window, NULL, NULL); + gdk_window_reparent(icon_win->window, leader, 0, 0); + gdk_window_show(leader); + + hints.initial_state = WithdrawnState; + hints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint; + hints.icon_window = GDK_WINDOW_XWINDOW(icon_win->window); + hints.icon_x = 0; + hints.icon_y = 0; + hints.window_group = GDK_WINDOW_XWINDOW(leader); + + XSetWMHints(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(leader), &hints); + + gtk_widget_show(icon_win); + timeout_tag = gtk_timeout_add(100, timeout_func, NULL); + +} + +void display_usage(char *cmd) +{ + printf( "Usage: %s [options]\n\n" + "Options:\n" + "--------\n\n" + "-h, --help Display this text and exit.\n" + "-g, --geometry Set the geometry (for example +20+20)\n" + "-c, --command Command to launch Audacious (Default: audacious)\n" + "-i, --icon Set the icon to use when Audacious is not running\n" + "-n, --single Only a single click is needed to start Audacious\n" + "-t, --title Display song title when mouse is in window\n" + "-v, --version Display version information and exit\n\n", + cmd); +} + +int main(int argc, char **argv) +{ + int c, dummy; + + static struct option lopt[] = + { + {"help", no_argument, 0, 'h'}, + {"geometry", required_argument, 0, 'g'}, + {"session", required_argument, 0, 's'}, + {"command", required_argument, 0, 'c'}, + {"icon", required_argument, 0, 'i'}, + {"single", no_argument, 0, 'n'}, + {"title", no_argument, 0, 't'}, + {"version", no_argument, 0, 'v'}, + {0, 0, 0, 0} + }; + + gtk_set_locale(); + + gtk_init(&argc, &argv); + + while ((c = getopt_long(argc, argv, "hg:s:c:i:ntv", lopt, NULL)) != -1) + { + switch (c) + { + case 'h': + display_usage(argv[0]); + gtk_exit(0); + break; + case 'g': + XParseGeometry(optarg, &win_x, &win_y, + &dummy, &dummy); + has_geometry = TRUE; + break; + case 'c': + xmms_cmd = g_strdup(optarg); + break; + case 'i': + icon_name = g_strdup(optarg); + break; + case 'n': + single_click = TRUE; + break; + case 't': + song_title = TRUE; + break; + case 'v': + printf("wmauda %s\n", VERSION); + gtk_exit(0); + break; + } + } + if (!dbus_init()) + return 1; + + init(); + gtk_main(); + return 0; +} diff --git a/wmauda-0.8/wmauda.xpm b/wmauda-0.8/wmauda.xpm new file mode 100644 index 0000000..9ef7769 --- /dev/null +++ b/wmauda-0.8/wmauda.xpm @@ -0,0 +1,186 @@ +/* XPM */ +static char * wmauda_xpm[] = { +"48 48 135 2", +" c #000000", +". c #444A4C", +"+ c #4C4A4C", +"@ c #44464C", +"# c #A4A2A4", +"$ c #801C1C", +"% c #B40204", +"& c #A4A6A4", +"* c #080808", +"= c #090909", +"- c #313131", +"; c #505050", +"> c #5A5A5A", +", c #4F4F4F", +"' c #0E0D0E", +") c #181818", +"! c #0D0D0D", +"~ c #5C5C5C", +"{ c #A8A8A8", +"] c #D6D6D6", +"^ c #D9D9D9", +"/ c #D5D5D5", +"( c #A5A5A5", +"_ c #595959", +": c #0B0B0B", +"< c #060606", +"[ c #6A6A6A", +"} c #CCCCCC", +"| c #CBCBCB", +"1 c #696969", +"2 c #2B2B2B", +"3 c #BABABA", +"4 c #B8B8B8", +"5 c #2A2A2A", +"6 c #484848", +"7 c #D4D4D4", +"8 c #D3D3D3", +"9 c #474747", +"0 c #494949", +"a c #D7D7D7", +"b c #171717", +"c c #2D2D2D", +"d c #2E2E2E", +"e c #BBBBBB", +"f c #C5C5C5", +"g c #A3A3A3", +"h c #949494", +"i c #6E6E6E", +"j c #4D4D4D", +"k c #858585", +"l c #C6C6C6", +"m c #BEBEBE", +"n c #050505", +"o c #020202", +"p c #6C6C6C", +"q c #777777", +"r c #030303", +"s c #515151", +"t c #6B6B6B", +"u c #CDCDCD", +"v c #A7A7A7", +"w c #141414", +"x c #0E0E0E", +"y c #5E5E5E", +"z c #9A9A9A", +"A c #393939", +"B c #626262", +"C c #ACACAC", +"D c #717171", +"E c #3E3E3E", +"F c #5F5F5F", +"G c #040404", +"H c #BCBCBC", +"I c #AFAFAF", +"J c #010101", +"K c #121212", +"L c #D8D8D8", +"M c #333333", +"N c #8C8C8C", +"O c #3D3D3D", +"P c #ABABAB", +"Q c #7B7B7B", +"R c #373737", +"S c #111111", +"T c #606060", +"U c #3B3B3B", +"V c #919191", +"W c #424242", +"X c #585858", +"Y c #656565", +"Z c #7C7C7C", +"` c #676767", +" . c #6D6D6D", +".. c #5D5D5D", +"+. c #353535", +"@. c #2C2C2C", +"#. c #1F1F1F", +"$. c #878787", +"%. c #5B5B5B", +"&. c #525252", +"*. c #272727", +"=. c #A2A2A2", +"-. c #404040", +";. c #1A1A1A", +">. c #303030", +",. c #343434", +"'. c #A9A9A9", +"). c #B9B9B9", +"!. c #666666", +"~. c #808080", +"{. c #7E7E7E", +"]. c #969696", +"^. c #212121", +"/. c #1B1B1B", +"(. c #C9C9C9", +"_. c #7F7F7F", +":. c #464646", +"<. c #070707", +"[. c #3F3F3F", +"}. c #959595", +"|. c #D0D0D0", +"1. c #CACACA", +"2. c #757575", +"3. c #444444", +"4. c #636363", +"5. c #C8C8C8", +"6. c #7D7D7D", +"7. c #C4C4C4", +"8. c #0F0F0F", +"9. c #868686", +"0. c #848484", +"a. c #1E1E1E", +"b. c #C2C2C2", +"c. c #BFBFBF", +"d. c #747474", +" ", +" ", +" ", +" ", +" . + @ + @ + @ + @ + @ + @ + # ", +" . $ $ $ $ $ $ $ $ $ $ $ $ $ # ", +" + $ % % % % % % % % % % % $ & ", +" . $ % % % % % % % % % % % $ & ", +" + $ $ $ $ $ $ $ $ $ $ $ $ $ # ", +" & & & & & & & & & & & & & & & ", +" ", +" * = - ; > > , - = ", +" * ' ) ! ~ { ] ^ ^ ^ ^ ^ ^ / ( _ : ", +" < [ } ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | 1 < ", +" 2 3 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 5 ", +" 6 7 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 8 9 ", +" 0 a ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ a 9 b ", +" c 7 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 8 d ) ", +" * e ^ ^ ^ ^ ^ ^ ^ f g h i j 9 > k l ^ ^ ^ ^ ^ ^ ^ ^ m * n ", +" o p ^ ^ ^ ^ ^ ^ ^ q r r s f ^ ^ ^ ^ ^ ^ ^ t ", +" ! u ^ ^ ^ ^ ^ ^ v w 3 ^ ^ ^ ^ ^ ^ u x ", +" y ^ ^ ^ ^ ^ ^ ^ z A ^ ^ ^ ^ ^ ^ ^ B ", +" C ^ ^ ^ ^ ^ ^ ^ ^ D E > F F ; G H ^ ^ ^ ^ ^ ^ I J ", +" K L ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ L M N ^ ^ ^ ^ ^ ^ L K ", +" O ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ] P Q R S T ^ ^ ^ ^ ^ ^ ^ U ", +" > ^ ^ ^ ^ ^ ^ ^ ^ ^ V K W ^ ^ ^ ^ ^ ^ ^ X ", +" Y ^ ^ ^ ^ ^ ^ ^ ^ Z O ^ ^ ^ ^ ^ ^ ^ ` ", +" ` ^ ^ ^ ^ ^ ^ ^ ( o .^ ^ ^ ^ ^ ^ ^ 1 ", +" ..^ ^ ^ ^ ^ ^ ^ +. @.3 3 #. $.^ ^ ^ ^ ^ ^ ^ %. ", +" W ^ ^ ^ ^ ^ ^ ^ 2 &.^ a *. =.^ ^ ^ ^ ^ ^ ^ -. ", +" ;.^ ^ ^ ^ ^ ^ ^ >. r A ,. '.^ ^ ^ ^ ^ ^ ^ ;. ", +" ).^ ^ ^ ^ ^ ^ !. ~.^ ^ ^ ^ ^ ^ H J ", +" J .^ ^ ^ ^ ^ ^ e < {.^ ^ ^ ^ ^ ^ D J ", +" ) 7 ^ ^ ^ ^ ^ ^ ].: r ^.= /.(.^ ^ ^ ^ ^ 7 ;. ", +" _.^ ^ ^ ^ ^ ^ ^ 3 :.<. [.}.|.^ 1.2.3.4.5.^ ^ ^ ^ ^ ^ 6. ", +" x l ^ ^ ^ ^ ^ ^ ^ ^ |.7.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 5.8. ", +" E L ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ L E ", +" T ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ y ", +" B L ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ L F ", +" W (.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 5.-. ", +" K 9.] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ] 0.S ", +" a.q b.^ ^ ^ ^ ^ ^ ^ ^ c.d./. ", +" ^.0 Y d.d.Y 0 #. ", +" ", +" ", +" ", +" ", +" "}; -- 2.11.4.GIT